/* ============================================================
   Shared site chrome: base, header/nav, footer, page shell.
   Page-specific styles live in each page's own <style> block.
   Requires tokens.css loaded first.
   ============================================================ */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;
  background:var(--page);
  color:var(--ink);
  font-family:var(--body);
  font-size:17px;
  line-height:1.55;
  min-height:100vh;
  display:flex;
  flex-direction:column;
}

/* ---------- Header / nav ---------- */
.site-header{
  background:var(--navy);
  color:#fff;
}
.site-header .bar{
  max-width:var(--content-max);
  margin:0 auto;
  padding:14px var(--pad-x);
  display:flex;
  align-items:baseline;
  justify-content:space-between;
  gap:16px 28px;
  flex-wrap:wrap;
}
.brand{
  font-family:var(--head);
  font-weight:600;
  font-size:24px;
  letter-spacing:.03em;
  color:#fff;
  text-decoration:none;
  white-space:nowrap;
}
.site-nav{
  display:flex;
  gap:4px 22px;
  flex-wrap:wrap;
  min-width:0;   /* let the flex item shrink so the inner wrap engages on phones */
  font-family:var(--head);
  font-weight:500;
  font-size:17px;
  letter-spacing:.02em;
}
.site-nav a{
  color:rgba(255,255,255,.82);
  text-decoration:none;
  padding:2px 0;
  border-bottom:2px solid transparent;
}
.site-nav a:hover{color:#fff}
.site-nav a[aria-current="page"]{
  color:#fff;
  border-bottom-color:var(--accent);
}
.site-nav a.nav-chat{color:#fff}
.site-nav a.nav-chat::before{content:"💬 "}

/* Projects dropdown — CSS-only <details> folder: hover opens on desktop,
   tap/Enter toggles everywhere, no JS. */
.nav-folder{position:relative}
.nav-folder summary{
  list-style:none;
  cursor:pointer;
  color:rgba(255,255,255,.82);
  padding:2px 0;
  border-bottom:2px solid transparent;
  white-space:nowrap;
}
.nav-folder summary::-webkit-details-marker{display:none}
.nav-folder summary::after{content:" ▾";font-size:.8em}
.nav-folder summary:hover{color:#fff}
.nav-folder summary.current{
  color:#fff;
  border-bottom-color:var(--accent);
}
.nav-folder .menu{
  position:absolute;
  left:0;
  top:100%;
  z-index:50;
  background:var(--navy);
  border:1px solid rgba(255,255,255,.15);
  border-radius:6px;
  box-shadow:0 8px 24px rgba(0,0,0,.35);
  padding:10px 16px;
  display:flex;
  flex-direction:column;
  gap:8px;
  min-width:215px;
  max-width:calc(100vw - 32px);
}
.nav-folder:not([open]) .menu{display:none}
.nav-folder:not([open]):hover .menu{display:flex}

/* ---------- Main ---------- */
main{
  flex:1;
  width:100%;
  max-width:var(--content-max);
  margin:0 auto;
  padding:36px var(--pad-x) 56px;
}
main h1,main h2,main h3{
  font-family:var(--head);
  font-weight:600;
  color:var(--navy);
  line-height:1.1;
  letter-spacing:.02em;
}
main h1{font-size:38px;margin:0 0 14px}
main h2{font-size:27px;margin:34px 0 10px}
main h3{font-size:21px;margin:24px 0 6px}
main a{
  color:var(--accent);
  text-decoration:none;
  border-bottom:1px solid var(--link-underline);
}
main a:hover{border-bottom-color:var(--accent);color:var(--accent-deep)}
main img,main video{max-width:100%;height:auto}
main li::marker{color:var(--accent)}

/* ---------- Buttons ---------- */
.btn{display:inline-block;background:var(--accent);color:#fff !important;border:none !important;
  font-family:var(--head);font-weight:500;font-size:17px;letter-spacing:.02em;
  padding:10px 22px;border-radius:3px;margin:6px 12px 6px 0}
.btn:hover{background:var(--accent-deep)}

/* ---------- Footer ---------- */
.site-footer{
  background:var(--navy);
  color:rgba(255,255,255,.75);
  font-size:14.5px;
}
.site-footer .bar{
  max-width:var(--content-max);
  margin:0 auto;
  padding:22px var(--pad-x);
  display:flex;
  justify-content:space-between;
  align-items:baseline;
  gap:10px 28px;
  flex-wrap:wrap;
}
.site-footer .who{font-family:var(--head);font-weight:500;font-size:16px;color:#fff}
.site-footer .tagline{color:rgba(255,255,255,.6)}
.site-footer a{color:rgba(255,255,255,.82);text-decoration:none;border-bottom:1px solid rgba(255,255,255,.3)}
.site-footer a:hover{color:#fff;border-bottom-color:#fff}
.site-footer .links{display:flex;gap:18px;flex-wrap:wrap}

/* ---------- Phone (<720px) — house breakpoint, matches the resume ---------- */
@media screen and (max-width:720px){
  body{font-size:16px}
  .site-header .bar{padding:12px 16px;gap:10px 18px}
  .site-nav{gap:2px 16px;font-size:16px}
  main{padding:24px 16px 44px}
  main h1{font-size:31px}
  main h2{font-size:24px}
  .site-footer .bar{padding:18px 16px}
}
