/* ==============================================================
   LAYOUT
   The frame around the content: header, mobile menu, section
   scaffolding and footer.
   ============================================================== */
@layer layout{
  /* ---------- header ---------- */
  .nav{
    position:sticky;top:0;z-index:50;
    border-bottom:1px solid transparent;
    background:color-mix(in srgb,var(--bg) 82%,transparent);
    -webkit-backdrop-filter:saturate(1.4) blur(12px);
    backdrop-filter:saturate(1.4) blur(12px);
    transition:border-color .2s ease-out;
  }
  .nav.scrolled,.nav.menu-open{border-bottom-color:var(--line)}
  .nav-inner{display:flex;align-items:center;justify-content:space-between;gap:var(--s-5);height:var(--nav-h)}

  .brand{display:flex;align-items:center;gap:var(--s-3);min-width:0;text-decoration:none}
  .mark{width:28px;height:28px;flex:none;display:grid;place-items:center;border-radius:7px;
    background:var(--accent);color:var(--on-accent);font-size:var(--text-2xs);font-weight:650;letter-spacing:.02em}
  .brand-name{font-size:var(--text-sm);font-weight:var(--weight-title);color:var(--ink);white-space:nowrap}

  .nav-links{display:flex;align-items:center;gap:var(--s-1)}
  .nav-links a{padding:var(--s-2) var(--s-3);border-radius:var(--r-sm);font-size:var(--text-sm);color:var(--ink-3);
    text-decoration:none;white-space:nowrap;transition:color var(--t-fast) ease-out,background-color var(--t-fast) ease-out}
  .nav-links a:hover{color:var(--ink);background:var(--sunken)}
  .nav-links a.active{color:var(--accent-ink)}
  .nav-actions{display:flex;align-items:center;gap:var(--s-2)}

  .menu-btn{display:none}
  .menu-btn .i-x,.nav.menu-open .menu-btn .i-menu{display:none}
  .nav.menu-open .menu-btn .i-x{display:block}
  .theme-toggle .i-sun{display:none}
  :root:not([data-theme="light"]) .theme-toggle .i-sun{display:block}
  :root:not([data-theme="light"]) .theme-toggle .i-moon{display:none}

  /* reading progress along the bottom edge of the header */
  .progress{position:absolute;left:0;right:0;bottom:-1px;height:1px;pointer-events:none}
  .progress span{display:block;height:100%;background:var(--accent);transform-origin:0 50%;transform:scaleX(0)}

  .mobile-menu{border-top:1px solid var(--line);padding:var(--s-2) 0 var(--s-5)}
  .menu-link{display:block;padding:var(--s-4) 0;border-bottom:1px solid var(--line);font-size:var(--text-lg);
    color:var(--ink);text-decoration:none}
  .mobile-menu .btn{width:100%;margin-top:var(--s-5)}

  @media (max-width:1023px){
    .nav-links,.kbd-btn{display:none}
    .menu-btn{display:grid}
  }
  @media (max-width:520px){.nav-cta{display:none}}

  /* ---------- sections: a mono label on the left, content on the right ---------- */
  .section{padding-block:var(--section-y);border-top:1px solid var(--line)}
  .section-head{display:grid;grid-template-columns:minmax(0,3fr) minmax(0,9fr);gap:var(--s-4) var(--s-6);
    margin-bottom:clamp(32px,5vw,64px)}
  .section-head h2{max-width:24ch;font-size:var(--text-2xl);line-height:1.12;letter-spacing:var(--tracking-heading)}
  .section-intro{max-width:58ch;margin-top:var(--s-5);font-size:var(--text-md);color:var(--ink-3)}
  @media (max-width:899px){.section-head{grid-template-columns:1fr}}

  /* ---------- footer ---------- */
  .footer{border-top:1px solid var(--line)}
  .footer-inner{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--s-4) var(--s-6);
    padding-block:var(--s-6);font-family:var(--font-mono);font-size:var(--text-2xs);color:var(--ink-3)}
  .footer-time time{color:var(--ink);font-variant-numeric:tabular-nums}
  .footer-links{display:flex;flex-wrap:wrap;gap:var(--s-2) var(--s-5)}
  .footer a{display:inline-flex;align-items:center;gap:6px;color:var(--ink-2);text-decoration:none}
  .footer a:hover{color:var(--ink)}
  .footer .i{width:12px;height:12px}
}
