/* Page frame: base styles, header and tabs, panels, section headings, shared pills, footer. */
*{box-sizing:border-box; margin:0; padding:0;}

html{scroll-behavior:smooth;}

body{
  background:linear-gradient(180deg, var(--bg-deep) 0%, var(--bg-darkest) 100%);
  background-attachment:fixed;
  color:var(--text);
  font-family:var(--font-body);
  line-height:1.55;
  min-height:100vh;
  -webkit-font-smoothing:antialiased;
}

a{color:var(--accent); text-decoration:none;}
a:hover{color:var(--accent-bright);}
a:focus-visible, button:focus-visible, [tabindex]:focus-visible{
  outline:2px solid var(--accent);
  outline-offset:3px;
}

.wrap{
  max-width:920px;
  margin:0 auto;
  padding:0 24px;
}

/* ---------- Header / Nav ---------- */
header{
  position:sticky;
  top:0;
  z-index:50;
  background:var(--header-bg);
  backdrop-filter:blur(10px);
  border-bottom:1px solid var(--header-line);
}
.nav-inner{
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:16px 24px;
  gap:24px;
  flex-wrap:wrap;
}
.wordmark{
  font-family:var(--font-display);
  font-weight:600;
  font-size:0.95rem;
  letter-spacing:0.06em;
  color:var(--header-text);
  white-space:nowrap;
}
.wordmark span{color:var(--accent);}

.tabs{
  display:flex;
  gap:4px;
  background:var(--header-panel);
  border:1px solid var(--header-line);
  border-radius:var(--radius);
  padding:4px;
}
.tab-btn{
  font-family:var(--font-mono);
  font-size:var(--fs-xs);
  letter-spacing:0.08em;
  text-transform:uppercase;
  background:transparent;
  border:none;
  color:var(--header-dim);
  padding:8px 16px;
  border-radius:var(--radius-sm);
  cursor:pointer;
  transition:color 0.2s ease, background 0.2s ease;
}
.tab-btn:hover{color:var(--header-text);}
.tab-btn.active{
  background:var(--tab-active-bg);
  color:var(--tab-active-text);
}

/* ---------- Panels ---------- */
.panels{ padding:56px 0 40px; min-height:420px; }
.panel{ display:none; animation:fadein 0.45s ease; }
.panel.active{ display:block; }
@keyframes fadein{
  from{opacity:0; transform:translateY(6px);}
  to{opacity:1; transform:translateY(0);}
}

.section-head{
  display:flex;
  align-items:baseline;
  justify-content:space-between;
  margin-bottom:28px;
  flex-wrap:wrap;
  gap:8px;
}
.section-head h2{
  color:var(--heading);
  border-bottom:2px solid var(--heading-rule);
  padding-bottom:2px;
  font-family:var(--font-display);
  font-weight:600;
  font-size:1.5rem;
}

.block-gap{ margin-top:40px; }

/* ---------- Pills (hero facts, projects, skills, footer) ---------- */
.fact-pill{
  font-family:var(--font-mono);
  font-size:var(--fs-xs);
  letter-spacing:0.04em;
  color:var(--text-dim);
  border:1px solid var(--line);
  padding:6px 12px;
  border-radius:var(--radius-sm);
}

.pill-group{ display:flex; flex-wrap:wrap; gap:8px; }
.pill{
  font-family:var(--font-mono);
  font-size:0.76rem;
  color:var(--accent);
  background:var(--accent-wash);
  border:1px solid var(--line);
  padding:5px 10px;
  border-radius:var(--radius-sm);
}

/* ---------- Footer ---------- */
footer{
  border-top:1px solid var(--line);
  padding:36px 0 48px;
}
.footer-grid{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  flex-wrap:wrap;
  gap:24px;
}
.footer-note{
  font-family:var(--font-mono);
  font-size:var(--fs-xs);
  color:var(--muted);
  max-width:44ch;
}
.footer-note b{ color:var(--text-dim); }

@media (max-width:640px){
  .footer-grid{ flex-direction:column; }
}
