/* =====================================================================
   neurovium — editorial / labyrinth design system
   ---------------------------------------------------------------------
   Two intermixed motifs:
     · MAZE   — discrete, structural, monospace meta, hairline grids
     · BORGES — fluid, branching, italic serif epigraphs, ink-wash blooms
   Warm paper-rust canvas, warm near-black ink. The only colour voltage is
   atmospheric ink-wash gradient orbs. Cards & buttons are embossed slabs.
   Ported from the Neurovium Design System bundle (claude.ai/design).
   ===================================================================== */

@import url("https://fonts.googleapis.com/css2?family=Spectral:ital,wght@0,300;0,400;0,500;0,600;1,300;1,400&family=Inter:wght@300;400;500;600&family=JetBrains+Mono:wght@400;500&display=swap");

:root {
  /* ---------- Base palette: ink on paper ---------- */
  --paper:            #f5f4ef;
  --paper-soft:       #faf9f5;
  --paper-deep:       #eceadf;
  --vellum:           #efece2;

  --paper-amber:      #f7eee2;
  --paper-sienna:     #f2e4d0;
  --paper-rust:       #ead7be;
  --ink-sepia:        #2a1d12;
  --ink-burnt:        #4a2a18;
  --ink:              #1a1814;
  --ink-press:        #0a0908;
  --ink-soft:         #2a2620;
  --body:             #4a463f;
  --muted:            #7a766c;
  --muted-soft:       #aaa49a;
  --hairline:         #e3dfd5;
  --hairline-soft:    #ece8de;
  --hairline-strong:  #d4cfc2;
  --on-ink:           #faf9f5;
  --on-ink-soft:      #c5beb0;

  --night:            #14130f;
  --night-soft:       #1d1b16;
  --night-elevated:   #26241e;

  /* ---------- Atmospheric "ink-wash" orbs ---------- */
  --wash-oxblood:     #7a2e3a;
  --wash-slate:       #3a5570;
  --wash-plum:        #6a4a6a;
  --wash-teal:        #4f7e78;
  --wash-dust:        #b8a899;
  --wash-amber:       #c97a3a;
  --wash-rust:        #9b4b2c;

  /* ---------- Concept-fork accents (Borges side) ---------- */
  --fork:             #7a2e3a;
  --fork-soft:        rgba(122, 46, 58, 0.18);
  --fork-glow:        rgba(122, 46, 58, 0.10);

  --semantic-error:   #b3261e;
  --semantic-success: #2e7d4f;

  /* ---------- Typography stacks ---------- */
  --serif:    "Spectral", "GT Sectra", "EB Garamond", "Times New Roman", serif;
  --sans:     "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --mono:     "JetBrains Mono", "Fira Code", ui-monospace, SFMono-Regular, monospace;

  --t-display-mega: 64px;
  --t-display-xl:   48px;
  --t-display-lg:   36px;
  --t-display-md:   28px;
  --t-display-sm:   22px;
  --t-title-md:     20px;
  --t-title-sm:     17px;
  --t-body:         16px;
  --t-body-sm:      15px;
  --t-caption:      14px;
  --t-meta:         12px;

  /* ---------- Spacing ---------- */
  --s-xxs:  4px;  --s-xs: 8px;  --s-sm: 12px; --s-base: 16px;
  --s-md:  20px;  --s-lg: 24px; --s-xl: 32px; --s-xxl: 48px;
  --s-section: 96px;

  /* ---------- Radii ---------- */
  --r-xs: 4px; --r-sm: 6px; --r-md: 8px; --r-lg: 12px;
  --r-xl: 16px; --r-xxl: 24px; --r-pill: 9999px;

  /* ---------- Elevation ---------- */
  --shadow-soft:  0 4px 16px rgba(26, 24, 20, 0.04);
  --shadow-card:  0 1px 0 rgba(26, 24, 20, 0.03), 0 6px 24px -10px rgba(26, 24, 20, 0.08);
  --shadow-fork:  0 12px 40px -16px rgba(122, 46, 58, 0.18);

  /* ---------- Motion ---------- */
  --ease:        cubic-bezier(0.2, 0.8, 0.2, 1);
  --ease-glide:  cubic-bezier(0.65, 0.05, 0.36, 1);
  --t-fast: 0.18s;
  --t-med:  0.32s;
  --t-slow: 0.6s;
}

/* =====================================================================
   Reset + base type
   ===================================================================== */

*, *::before, *::after { box-sizing: border-box; }
html, body { height: 100%; margin: 0; }
html { font-family: var(--sans); color: var(--ink); background: var(--paper-rust); -webkit-text-size-adjust: 100%; }
body {
  font-family: var(--sans); font-size: var(--t-body); line-height: 1.6;
  letter-spacing: 0.16px; color: var(--body); background: var(--paper-rust);
}
button { font: inherit; }
img { max-width: 100%; }

h1, .t-h1 { font-family: var(--serif); font-weight: 300; font-size: var(--t-display-mega); line-height: 1.05; letter-spacing: -1.92px; color: var(--ink); margin: 0 0 0.4em; }
h2, .t-h2 { font-family: var(--serif); font-weight: 300; font-size: var(--t-display-xl); line-height: 1.08; letter-spacing: -0.96px; color: var(--ink); margin: 0 0 0.5em; }
h3, .t-h3 { font-family: var(--serif); font-weight: 300; font-size: var(--t-display-lg); line-height: 1.17; letter-spacing: -0.36px; color: var(--ink); margin: 0 0 0.5em; }
h4, .t-h4 { font-family: var(--serif); font-weight: 300; font-size: var(--t-display-md); line-height: 1.2; letter-spacing: -0.28px; color: var(--ink); margin: 0 0 0.5em; }
.epigraph { font-family: var(--serif); font-weight: 300; font-style: italic; font-size: var(--t-display-md); line-height: 1.35; letter-spacing: -0.1px; color: var(--ink-soft); }

p, .body-md { font-family: var(--sans); font-weight: 400; font-size: var(--t-body); line-height: 1.6; letter-spacing: 0.16px; color: var(--body); }
.caption { font-family: var(--sans); font-size: var(--t-caption); line-height: 1.5; color: var(--muted); }
.meta, .corridor-label { font-family: var(--mono); font-weight: 500; font-size: var(--t-meta); line-height: 1.4; letter-spacing: 0.08em; text-transform: uppercase; color: var(--muted); }

a { color: inherit; text-decoration: none; }
a.inline { color: var(--ink); border-bottom: 1px solid var(--hairline-strong); }
a.inline:hover { border-bottom-color: var(--ink); }

::selection { background: var(--fork-soft); color: var(--ink); }
code, pre, kbd { font-family: var(--mono); font-size: 14px; }

/* The Concept Fork — Borges signature inline element */
.fork-link {
  font-family: var(--serif); font-style: italic; font-weight: 400;
  color: var(--ink); cursor: pointer; position: relative; padding: 0 2px;
  background-image: linear-gradient(transparent 65%, var(--fork-soft) 65%);
  background-size: 100% 100%; user-select: none;
  transition: background var(--t-fast) var(--ease), color var(--t-fast) var(--ease);
}
.fork-link::before {
  content: ""; display: inline-block; width: 6px; height: 6px;
  margin-right: 4px; background: var(--fork); border-radius: 50%;
  vertical-align: 1px; transition: transform var(--t-fast) var(--ease);
}
.fork-link:hover { color: var(--fork); background-image: linear-gradient(transparent 60%, var(--fork-glow) 60%); }
.fork-link:hover::before { transform: scale(1.6); }

/* =====================================================================
   App shell
   ===================================================================== */

.app {
  display: grid;
  grid-template-columns: 296px 1fr;
  min-height: 100vh;
  background: #ead7be;
  --card-bg: #faf3e4;
  --card-edge: #c9b48f;
  --card-shadow:
    inset 0 1px 0 rgba(255,255,255,0.85),
    inset 0 -1px 0 rgba(122,75,30,0.06),
    0 1px 0 var(--card-edge),
    0 3px 0 -1px #e2cdaa,
    0 5px 0 -2px var(--card-edge),
    0 12px 22px -8px rgba(74,46,24,0.20),
    0 2px 4px rgba(74,46,24,0.06);
  --card-shadow-hover:
    inset 0 1px 0 rgba(255,255,255,0.9),
    0 1px 0 var(--card-edge),
    0 4px 0 -1px #e2cdaa,
    0 6px 0 -2px var(--card-edge),
    0 18px 32px -10px rgba(74,46,24,0.28),
    0 3px 6px rgba(74,46,24,0.10);
}
.main { padding: 32px 48px 96px; max-width: 1180px; width: 100%; }

/* ---------- Mobile top bar (hidden on desktop) ---------- */
.topbar {
  display: none;
  position: sticky; top: 0; z-index: 80;
  align-items: center; justify-content: space-between;
  padding: 12px 18px;
  background: rgba(240, 223, 198, 0.86);
  -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px);
  border-bottom: 1px solid #c9b48f;
}
.topbar__brand { display: flex; align-items: center; gap: 8px; font-family: var(--serif); font-weight: 300; font-size: 18px; letter-spacing: -0.3px; color: var(--ink); }
.topbar__brand svg { width: 22px; height: 22px; color: var(--ink); }
.topbar__toggle {
  appearance: none; background: transparent; border: 0; cursor: pointer;
  color: var(--ink); display: inline-flex; padding: 6px;
}
.sidebar-backdrop { display: none; }

/* =====================================================================
   Sidebar
   ===================================================================== */

.side {
  position: sticky; top: 0; height: 100vh;
  padding: 32px 26px;
  border-right: 1px solid #c9b48f;
  background: #f0dfc6;
  display: flex; flex-direction: column; gap: 28px;
  overflow-y: auto;
}
.side__brand { display: flex; align-items: center; gap: 10px; cursor: pointer; }
.side__brand .glyph { color: var(--ink); width: 28px; height: 28px; flex-shrink: 0; }
.side__name { font-family: var(--serif); font-weight: 300; font-size: 20px; letter-spacing: -0.3px; color: var(--ink); line-height: 1.1; }
.side__tag { font-family: var(--sans); font-size: 12px; color: var(--muted); letter-spacing: 0.04em; margin-top: 2px; }

.side__nav { display: flex; flex-direction: column; gap: 2px; }
.side__nav a {
  text-align: left; cursor: pointer;
  padding: 7px 10px; font-family: var(--sans); font-size: 14px;
  color: var(--body); border-left: 2px solid transparent;
  transition: color 0.18s, border-color 0.18s, background 0.18s;
}
.side__nav a:hover { color: var(--ink); background: rgba(0,0,0,0.02); }
.side__nav a.is-active { color: var(--ink); border-left-color: var(--ink); font-weight: 500; }
.side__pip { display: inline-block; margin-left: 6px; width: 6px; height: 6px; background: var(--fork); border-radius: 50%; vertical-align: middle; }

.side__social { display: flex; flex-direction: column; gap: 8px; }
.side__social-row { display: flex; gap: 8px; }
.side__social a {
  width: 36px; height: 36px; border-radius: 8px;
  background: var(--paper); color: var(--ink-soft);
  display: inline-flex; align-items: center; justify-content: center; cursor: pointer;
  transition: transform 0.18s, box-shadow 0.18s, color 0.18s;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,0.85), inset 0 -1px 0 rgba(26,24,20,0.05),
    0 1px 0 var(--hairline-strong), 0 2px 0 -1px var(--paper-deep),
    0 3px 0 -1px var(--hairline-strong), 0 5px 10px -3px rgba(26,24,20,0.18),
    0 1px 2px rgba(26,24,20,0.05);
}
.side__social a:hover {
  color: var(--ink); transform: translateY(-1px);
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,0.9), inset 0 -1px 0 rgba(26,24,20,0.05),
    0 1px 0 var(--hairline-strong), 0 2px 0 -1px var(--paper-deep),
    0 3px 0 -1px var(--hairline-strong), 0 9px 16px -5px rgba(26,24,20,0.25),
    0 2px 3px rgba(26,24,20,0.08);
}
.side__social a:active { transform: translateY(1px); box-shadow: inset 0 1px 2px rgba(26,24,20,0.1), 0 1px 0 var(--hairline-strong), 0 1px 4px rgba(26,24,20,0.1); }
.side__social a.is-bsky { color: var(--wash-slate); }
.side__social a.is-bsky:hover { color: #2c4561; }
.side__social svg { width: 16px; height: 16px; }

.side__foot {
  margin-top: auto;
  font-family: var(--mono); font-size: 10px; letter-spacing: 0.12em;
  text-transform: uppercase; color: var(--muted-soft);
  display: flex; flex-direction: column; gap: 4px;
}
.side__foot a { color: var(--muted); border-bottom: 1px solid transparent; }
.side__foot a:hover { border-bottom-color: var(--muted); }

/* ---------- N⁴ nested-set diagram ---------- */
.n4-set {
  position: relative; margin-top: 16px; padding: 22px 14px 14px;
  border: 1px solid #d4bc92; border-radius: 18px;
  background: linear-gradient(to bottom, #f4eadd 0%, #ecdfc8 100%);
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,0.9), inset 0 -1px 0 rgba(122,75,30,0.08),
    0 1px 0 #d4bc92, 0 3px 0 -1px #ecdfc8, 0 5px 0 -2px #d4bc92,
    0 12px 22px -6px rgba(122,75,30,0.22), 0 2px 4px rgba(122,75,30,0.06);
}
.n4-set__lbl { position: absolute; top: -10px; left: 14px; padding: 0 8px; line-height: 1; z-index: 2; text-transform: none; }
.n4-set > .n4-set__lbl {
  background: linear-gradient(to bottom, #f0dfc6 0%, #f0dfc6 50%, #f4eadd 100%);
  color: var(--ink); font-family: var(--serif); font-weight: 500; font-style: normal;
  font-size: 17px; letter-spacing: -0.3px;
}
.n4-set--ai {
  margin: 0; padding: 22px 12px 12px;
  background: linear-gradient(to bottom, #f1ddc8 0%, #ead0b3 100%);
  border: 1px solid #c98a5e; border-radius: 14px;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,0.7), inset 0 -1px 0 rgba(122,46,30,0.08),
    0 1px 0 rgba(201,138,94,0.55), 0 3px 0 -1px #ead0b3,
    0 5px 0 -2px rgba(201,138,94,0.45), 0 10px 18px -6px rgba(122,46,30,0.22);
}
.n4-set--ai > .n4-set__lbl {
  background: linear-gradient(to bottom, #f4eadd 0%, #f4eadd 50%, #f1ddc8 100%);
  color: var(--fork); font-family: var(--serif); font-weight: 500; font-style: italic;
  font-size: 15px; letter-spacing: -0.2px; text-transform: none;
}
.n4-set--n3 {
  padding: 14px 12px 14px 10px;
  background: linear-gradient(to bottom, #ecd1c8 0%, #e3bdaf 100%);
  border: 1px solid #b87468; border-radius: 12px;
  display: grid; grid-template-columns: auto 1fr; column-gap: 10px; align-items: center;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,0.7), inset 0 -1px 0 rgba(122,46,30,0.10),
    0 1px 0 rgba(184,116,104,0.60), 0 3px 0 -1px #e3bdaf,
    0 5px 0 -2px rgba(184,116,104,0.50), 0 8px 16px -6px rgba(122,46,30,0.25);
}
.n4-set--n3 > .n4-set__lbl { display: none; }
.n4-set--n3::before {
  content: "N\00B3"; font-family: var(--serif); font-weight: 300; font-size: 30px;
  line-height: 1; color: #5e2418; letter-spacing: -0.5px;
}
.n4-set--n3 ul {
  list-style: none; padding: 0; margin: 0 0 0 -2px;
  display: flex; flex-direction: column; gap: 3px;
  font-family: var(--sans); font-size: 12px; color: #5e2418;
  line-height: 1.4; font-weight: 500; white-space: nowrap;
}
.n4-set--n3 ul li::before {
  content: ""; display: inline-block; width: 3px; height: 3px;
  background: #5e2418; border-radius: 50%; margin-right: 6px; vertical-align: 2px;
}

/* =====================================================================
   Buttons — embossed 3D slab + plain pills
   ===================================================================== */

.ebtn {
  position: relative; display: inline-flex; align-items: center; gap: 10px;
  height: 46px; padding: 0 22px; border: 1px solid transparent;
  border-radius: 9999px; font-family: var(--sans); font-size: 15px; font-weight: 500;
  cursor: pointer; transition: transform 0.12s ease, box-shadow 0.18s ease;
}
.ebtn svg { width: 16px; height: 16px; }
.ebtn--primary {
  background: linear-gradient(to bottom, #2a2620 0%, #1a1814 100%);
  color: var(--on-ink); border-color: #0a0908;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,0.20), inset 0 -1px 0 rgba(0,0,0,0.35),
    0 1px 0 #050403, 0 3px 0 -1px #1a1814, 0 5px 0 -2px #050403,
    0 8px 18px -4px rgba(0,0,0,0.45), 0 2px 4px rgba(0,0,0,0.18);
}
.ebtn--primary:hover {
  transform: translateY(-1px);
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,0.22), inset 0 -1px 0 rgba(0,0,0,0.35),
    0 1px 0 #050403, 0 4px 0 -1px #1a1814, 0 6px 0 -2px #050403,
    0 12px 22px -4px rgba(0,0,0,0.50), 0 3px 6px rgba(0,0,0,0.22);
}
.ebtn--primary:active { transform: translateY(2px); box-shadow: inset 0 2px 4px rgba(0,0,0,0.4), 0 1px 0 #050403, 0 1px 4px rgba(0,0,0,0.2); }
.ebtn--outline {
  background: linear-gradient(to bottom, #faf3e4 0%, #ecdcbc 100%);
  color: var(--ink); border-color: #c9b48f;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,0.9), inset 0 -1px 0 rgba(122,75,30,0.10),
    0 1px 0 #c9b48f, 0 3px 0 -1px #ecdcbc, 0 5px 0 -2px #c9b48f,
    0 8px 18px -4px rgba(74,46,24,0.22), 0 2px 4px rgba(74,46,24,0.06);
}
.ebtn--outline:hover {
  transform: translateY(-1px); border-color: var(--ink);
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,0.95), 0 1px 0 var(--ink),
    0 4px 0 -1px #ecdcbc, 0 6px 0 -2px var(--ink), 0 12px 22px -4px rgba(74,46,24,0.30);
}
.ebtn--outline:active { transform: translateY(2px); box-shadow: inset 0 2px 4px rgba(74,46,24,0.15), 0 1px 0 #c9b48f, 0 1px 4px rgba(74,46,24,0.10); }

.btn {
  display: inline-flex; align-items: center; gap: 8px;
  height: 40px; padding: 0 20px; border-radius: 9999px;
  font-family: var(--sans); font-size: 15px; font-weight: 500;
  border: 1px solid transparent; cursor: pointer;
  transition: background 0.18s, border-color 0.18s, color 0.18s, transform 0.08s;
}
.btn:active { transform: translateY(1px); }
.btn--primary { background: var(--ink); color: var(--on-ink); }
.btn--primary:hover { background: var(--ink-press); }
.btn--outline { background: transparent; color: var(--ink); border-color: var(--hairline-strong); }
.btn--outline:hover { border-color: var(--ink); }
.btn--text { background: transparent; color: var(--ink); padding: 0 6px; height: auto; }
.btn--text:hover { color: var(--ink-press); }
.btn--warp { background: transparent; color: var(--ink); border: 1px solid var(--ink); height: 38px; padding: 0 16px; }
.btn--warp:hover { background: var(--ink); color: var(--on-ink); }
.btn svg { width: 14px; height: 14px; }

/* =====================================================================
   Hero
   ===================================================================== */

.hero { position: relative; padding: 40px 0 48px; border-bottom: 1px solid #c9b48f; margin-bottom: 48px; overflow: hidden; }
.hero__grid {
  position: absolute; inset: 0; pointer-events: none; opacity: 0.4;
  background-image:
    linear-gradient(rgba(122,75,30,0.18) 1px, transparent 1px),
    linear-gradient(90deg, rgba(122,75,30,0.18) 1px, transparent 1px);
  background-size: 48px 48px;
  -webkit-mask-image: radial-gradient(ellipse at center, black 25%, transparent 70%);
  mask-image: radial-gradient(ellipse at center, black 25%, transparent 70%);
}
.hero__orb {
  position: absolute; right: -120px; top: -120px;
  width: 520px; height: 520px; border-radius: 50%;
  background: radial-gradient(circle, var(--wash-oxblood) 0%, transparent 65%);
  opacity: 0.14; filter: blur(60px); pointer-events: none;
}
.hero__inner { position: relative; display: flex; flex-direction: column; gap: 18px; max-width: 760px; }
.hero__brand { display: flex; flex-direction: column; align-items: flex-start; gap: 10px; margin-bottom: 8px; }
.hero__mark { display: block; max-width: 100%; width: 540px; height: auto; }
.hero__wordmark { font-family: var(--serif); font-weight: 300; font-size: 30px; letter-spacing: -0.4px; line-height: 1; color: var(--ink); margin-top: 6px; }
.hero__brand-axes {
  display: flex; align-items: center; gap: 14px;
  font-family: var(--serif); font-style: italic; font-weight: 300;
  font-size: 14px; color: var(--ink-soft); letter-spacing: -0.1px; margin-top: 4px;
}
.hero__infty { width: 78px; height: 40px; color: var(--fork); flex-shrink: 0; }
.hero__id { margin-top: 16px; }
.hero__name { font-family: var(--serif); font-weight: 300; font-size: clamp(40px, 6vw, 64px); line-height: 1.04; letter-spacing: -1.6px; color: var(--ink); margin: 0 0 12px; }
.hero__math { font-size: 16px; color: var(--ink); max-width: 100%; overflow-x: auto; padding: 4px 0; }
.hero__math .katex { font-size: 1.05em; color: var(--ink); }
.hero__math .katex-display { margin: 0; text-align: left; }
.hero__math .katex-display > .katex { text-align: left; }
.hero__epigraph { font-family: var(--serif); font-style: italic; font-weight: 300; color: var(--ink-soft); margin: 8px 0 0; max-width: 640px; letter-spacing: -0.2px; }
.hero__epigraph.q--mega { font-size: 56px; line-height: 1.04; letter-spacing: -1.6px; max-width: 720px; }
.hero__epigraph.q--lg   { font-size: 30px; line-height: 1.22; letter-spacing: -0.4px; }
.hero__epigraph.q--md   { font-size: 22px; line-height: 1.4; letter-spacing: -0.2px; }
.hero__epigraph.q--sm   { font-size: 17px; line-height: 1.55; }
.hero__who { display: block; margin-top: 12px; font-family: var(--mono); font-style: normal; font-weight: 500; font-size: 11px; letter-spacing: 0.16em; text-transform: uppercase; color: var(--muted); }
.hero__ctas { display: flex; gap: 14px; margin: 12px 0 8px; flex-wrap: wrap; }
.hero__social { display: flex; gap: 10px; margin-top: 14px; }
.hero__social a {
  width: 38px; height: 38px; border-radius: 8px; background: #faf3e4;
  color: var(--ink-soft); display: inline-flex; align-items: center; justify-content: center;
  cursor: pointer; transition: transform 0.18s, color 0.18s;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,0.85), 0 1px 0 #c9b48f,
    0 2px 0 -1px #ecdcbc, 0 3px 0 -1px #c9b48f, 0 5px 10px -3px rgba(74,46,24,0.18);
}
.hero__social a:hover { color: var(--ink); transform: translateY(-1px); }
.hero__social svg { width: 16px; height: 16px; }

/* =====================================================================
   Section heading
   ===================================================================== */

.sec { display: flex; align-items: baseline; gap: 14px; margin: 8px 0 24px; flex-wrap: wrap; }
.sec h2 { font-family: var(--serif); font-weight: 300; font-size: 36px; letter-spacing: -0.4px; margin: 0; color: var(--ink); }
.sec .meta { font-family: var(--mono); font-size: 11px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--muted); }

.page-head { padding: 24px 0 16px; border-bottom: 1px solid var(--hairline); margin-bottom: 28px; }
.page-head__kicker { font-family: var(--mono); font-size: 11px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--muted); margin-bottom: 10px; }
.page-head__kicker.is-fork { color: var(--fork); }
.page-head h1 { font-family: var(--serif); font-weight: 300; font-size: clamp(40px, 5vw, 60px); line-height: 1.06; letter-spacing: -1.2px; color: var(--ink); margin: 0 0 10px; }
.page-head h1.is-italic { font-style: italic; letter-spacing: -1px; }
.page-head p { font-family: var(--sans); font-size: 16px; color: var(--body); max-width: 62ch; margin: 0; }

/* =====================================================================
   Card grid + embossed paper card
   ===================================================================== */

.grid, .card-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 22px; }

.pcard, .card {
  position: relative; display: flex; flex-direction: column;
  border-radius: 16px; overflow: hidden;
  background: var(--card-bg); border: 1px solid var(--card-edge);
  cursor: pointer; text-decoration: none; color: inherit; isolation: isolate;
  box-shadow: var(--card-shadow);
  transition: box-shadow 0.28s, opacity 0.28s, transform 0.18s;
}
.pcard:hover, .card:hover { transform: translateY(-2px); box-shadow: var(--card-shadow-hover); }
.pcard:active, .card:active { transform: translateY(0); }
.pcard__media, .card__media { position: relative; height: 170px; overflow: hidden; background: var(--paper-deep); border-bottom: 1px solid var(--hairline); }
.pcard__img, .card__image { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; transition: transform 0.6s var(--ease); }
.pcard:hover .pcard__img, .card:hover .card__image { transform: scale(1.04); }
.pcard__placeholder, .card__placeholder {
  position: absolute; inset: 0;
  background:
    radial-gradient(circle at 20% 30%, var(--wash-color, var(--wash-slate)) 0%, transparent 55%),
    linear-gradient(135deg, var(--paper-deep), var(--paper-soft));
  opacity: 0.85;
}
.pcard__placeholder::after, .card__placeholder::after {
  content: ""; position: absolute; inset: 0;
  background-image:
    linear-gradient(rgba(26,24,20,0.06) 1px, transparent 1px),
    linear-gradient(90deg, rgba(26,24,20,0.06) 1px, transparent 1px);
  background-size: 28px 28px;
}
.pcard__body, .card__body { padding: 18px 20px 20px; display: flex; flex-direction: column; gap: 8px; }
.pcard__kicker, .card__kicker { font-family: var(--mono); font-size: 10px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--muted); }
.pcard__title, .card__title { font-family: var(--serif); font-weight: 300; font-size: 22px; line-height: 1.18; letter-spacing: -0.2px; color: var(--ink); margin: 0; }
.pcard__meta, .card__meta { font-family: var(--sans); font-size: 13px; color: var(--body); }
.pcard__tags, .card__tags { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 6px; }
.pcard__tags .tag, .card__tags .tag {
  font-family: var(--mono); font-size: 9px; letter-spacing: 0.1em;
  text-transform: uppercase; padding: 3px 8px; border-radius: 9999px;
  border: 1px solid var(--hairline); color: var(--muted);
}
.pcard.is-dim, .card.is-dim { opacity: 0.25; }
.card.is-hidden { display: none; }
.card__overlay { display: none; }

/* compact post card */
.card--compact, .pcard--post {
  position: relative; padding: 22px 24px 20px; background: var(--card-bg);
  display: flex; flex-direction: column; gap: 10px;
  border: 1px solid var(--card-edge); border-radius: 16px;
  box-shadow: var(--card-shadow);
}
.card--compact:hover, .pcard--post:hover { box-shadow: var(--card-shadow-hover); transform: translateY(-2px); }
.card--compact .card__title { font-size: 20px; }

/* =====================================================================
   Tag filter — concept doors
   ===================================================================== */

.tag-filter, .filter {
  display: flex; flex-wrap: wrap; gap: 8px;
  margin: 4px 0 28px; padding-bottom: 22px;
  border-bottom: 1px solid var(--hairline);
}
.tag-filter button, .filter button {
  appearance: none; cursor: pointer;
  font-family: var(--mono); font-size: 11px; letter-spacing: 0.08em;
  padding: 6px 14px; border-radius: 9999px;
  border: 1px solid var(--hairline-strong); color: var(--body);
  background: transparent;
  transition: color 0.18s, border-color 0.18s, background 0.18s;
}
.tag-filter button:hover, .filter button:hover { color: var(--ink); border-color: var(--ink); }
.tag-filter button.is-active, .filter button.is-active { background: var(--ink); color: var(--on-ink); border-color: var(--ink); }

.tag {
  font-family: var(--mono); font-size: 10px; letter-spacing: 0.1em;
  text-transform: uppercase; padding: 4px 10px; border-radius: 9999px;
  border: 1px solid var(--hairline); color: var(--muted);
  transition: color 0.18s, border-color 0.18s;
}
a.tag:hover { color: var(--fork); border-color: var(--fork-soft); }

/* =====================================================================
   Paper view (the room) + fork panel
   ===================================================================== */

.paper-shell { position: relative; display: grid; grid-template-columns: 1fr; gap: 0; transition: grid-template-columns 0.6s var(--ease-glide); }
.paper-shell.has-fork { grid-template-columns: 1fr 1fr; }
.paper { padding-right: 0; transition: padding-right 0.6s var(--ease-glide); min-width: 0; }
.paper-shell.has-fork .paper { padding-right: 28px; border-right: 1px solid var(--hairline); }

.paper__crumb, .paper-header__crumb { font-family: var(--mono); font-size: 11px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--muted); margin-bottom: 12px; display: flex; align-items: center; gap: 8px; }
.paper__crumb a, .paper-header__crumb a { color: inherit; }
.paper__crumb a:hover, .paper-header__crumb a:hover { color: var(--ink); }
.paper h1, .paper-header h1 { font-family: var(--serif); font-weight: 300; font-size: clamp(34px, 4vw, 52px); line-height: 1.08; letter-spacing: -1px; color: var(--ink); margin: 0 0 12px; overflow-wrap: break-word; hyphens: auto; }
.paper-shell.has-fork .paper h1 { font-size: clamp(28px, 2.6vw, 38px); letter-spacing: -0.6px; }
.paper__subtitle, .paper-subtitle { font-family: var(--serif); font-style: italic; font-weight: 300; font-size: 20px; color: var(--ink-soft); margin: 0 0 12px; letter-spacing: -0.2px; }
.paper__authors, .paper-meta { font-family: var(--sans); font-size: 14px; color: var(--body); }
.paper-meta { display: flex; gap: 14px; flex-wrap: wrap; margin-top: 6px; }
.paper-meta .venue { font-family: var(--mono); font-size: 11px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--muted); }
.paper__venue { font-family: var(--mono); font-size: 11px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--muted); margin-top: 6px; display: flex; gap: 16px; flex-wrap: wrap; }
.paper__teaser, .paper-teaser { margin: 28px 0; aspect-ratio: 16/9; border-radius: 16px; overflow: hidden; border: 1px solid var(--hairline); background: var(--paper-deep); position: relative; }
.paper__teaser img, .paper-teaser img { width: 100%; height: 100%; object-fit: cover; display: block; }
.paper__section, .paper-section { margin: 28px 0; }
.paper__section > h2, .paper-section > h2 { font-family: var(--serif); font-weight: 300; font-size: 22px; letter-spacing: -0.2px; color: var(--ink); margin: 0 0 14px; padding-bottom: 8px; border-bottom: 1px solid var(--hairline); }

.linkbar, .link-bar { display: flex; flex-wrap: wrap; gap: 10px; margin: 14px 0; }
.linkbar a, .link-pill {
  display: inline-flex; align-items: center; gap: 8px;
  height: 36px; padding: 0 14px; border-radius: 9999px;
  background: var(--paper-soft); border: 1px solid var(--hairline-strong);
  color: var(--ink); font-family: var(--sans); font-size: 13px; font-weight: 500;
  cursor: pointer; text-decoration: none;
  transition: background 0.18s, border-color 0.18s;
}
.linkbar a:hover, .link-pill:hover { background: var(--paper); border-color: var(--ink); }
.linkbar a svg, .link-pill svg { width: 14px; height: 14px; color: var(--muted); }
.linkbar a:hover svg, .link-pill:hover svg { color: var(--ink); }

.bibtex { border: 1px solid var(--hairline); border-radius: 12px; overflow: hidden; margin-top: 16px; }
.bibtex summary { list-style: none; cursor: pointer; padding: 12px 16px; font-family: var(--mono); font-size: 12px; letter-spacing: 0.08em; color: var(--muted); display: flex; justify-content: space-between; align-items: center; }
.bibtex summary::-webkit-details-marker { display: none; }
.bibtex[open] summary { border-bottom: 1px solid var(--hairline); color: var(--ink); background: var(--paper-soft); }
.bibtex pre { margin: 0; padding: 16px; font-family: var(--mono); font-size: 12px; background: var(--paper-soft); color: var(--ink-soft); overflow-x: auto; line-height: 1.55; }

.paper__tags { display: flex; flex-wrap: wrap; gap: 6px; }
.paper__tags a {
  font-family: var(--mono); font-size: 10px; letter-spacing: 0.1em;
  text-transform: uppercase; padding: 4px 10px; border-radius: 9999px;
  border: 1px solid var(--hairline); color: var(--muted); background: transparent;
}
.paper__tags a:hover { color: var(--fork); border-color: var(--fork-soft); }

.corridor { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin: 40px 0 16px; padding-top: 24px; border-top: 1px solid var(--hairline); }
.corridor__cell { display: flex; align-items: center; gap: 12px; padding: 14px 0; cursor: pointer; color: inherit; }
.corridor__cell.is-next { flex-direction: row-reverse; text-align: right; }
.corridor__glyph { width: 38px; height: 38px; border-radius: 9999px; border: 1px solid var(--hairline-strong); display: inline-flex; align-items: center; justify-content: center; color: var(--ink); flex-shrink: 0; transition: background 0.18s, color 0.18s, border-color 0.18s; }
.corridor__cell:hover .corridor__glyph { background: var(--ink); color: var(--on-ink); border-color: var(--ink); }
.corridor__cell svg { width: 14px; height: 14px; }
.corridor__lbl { font-family: var(--mono); font-size: 10px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--muted); }
.corridor__t { font-family: var(--serif); font-weight: 300; font-size: 18px; line-height: 1.2; color: var(--ink); letter-spacing: -0.2px; margin-top: 2px; }

/* Fork panel — Borges side panel */
.fork-panel {
  position: sticky; top: 24px; align-self: start;
  max-height: calc(100vh - 48px);
  padding: 24px 32px 28px; background: var(--vellum);
  border-radius: 16px; overflow: hidden; min-width: 0;
  box-shadow: var(--shadow-fork);
}
.fork-panel[hidden] { display: none; }
.fork-panel__inner { position: relative; max-height: calc(100vh - 96px); overflow-y: auto; margin: 0 -8px; padding: 0 8px; }
.fork-panel::before {
  content: ""; position: absolute; right: -80px; top: -80px;
  width: 360px; height: 360px; border-radius: 50%;
  background: radial-gradient(circle, var(--fork-orb, var(--wash-oxblood)) 0%, transparent 65%);
  opacity: 0.18; filter: blur(48px); pointer-events: none;
}
.fork-panel__head { position: relative; display: flex; align-items: center; justify-content: space-between; margin-bottom: 16px; }
.fork-panel__lbl { font-family: var(--mono); font-size: 11px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--fork); }
.fork-panel__close { appearance: none; background: transparent; border: 1px solid var(--hairline-strong); border-radius: 9999px; width: 28px; height: 28px; display: inline-flex; align-items: center; justify-content: center; color: var(--ink); cursor: pointer; }
.fork-panel__close:hover { background: var(--ink); color: var(--on-ink); border-color: var(--ink); }
.fork-panel__close svg { width: 12px; height: 12px; }
.fork-panel h3 { font-family: var(--serif); font-weight: 300; font-style: italic; font-size: 32px; line-height: 1.15; letter-spacing: -0.4px; color: var(--ink); margin: 0 0 16px; position: relative; }
.fork-panel__body p { font-family: var(--sans); font-size: 15px; line-height: 1.65; color: var(--body); margin: 0 0 14px; position: relative; }
.fork-panel__rooms { position: relative; margin: 18px 0; padding: 14px 0; border-top: 1px solid rgba(26,24,20,0.08); border-bottom: 1px solid rgba(26,24,20,0.08); }
.fork-panel__rooms .lbl { font-family: var(--mono); font-size: 10px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--muted); margin-bottom: 8px; display: block; }
.fork-panel__rooms ul { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 6px; }
.fork-panel__rooms li { font-family: var(--serif); font-weight: 300; font-size: 16px; color: var(--ink-soft); }
.fork-panel__rooms li a { color: inherit; border-bottom: 1px solid var(--hairline-strong); }
.fork-panel__rooms li a:hover { color: var(--fork); border-bottom-color: var(--fork); }
.fork-panel__warp { position: relative; margin-top: 8px; }

/* =====================================================================
   Garden — concept cloud
   ===================================================================== */

.garden { position: relative; min-height: 520px; padding: 36px 0; }
.garden__orbs { position: absolute; inset: 0; pointer-events: none; overflow: hidden; }
.garden__orb { position: absolute; width: 340px; height: 340px; border-radius: 50%; opacity: 0.12; filter: blur(50px); }
.garden__cloud { position: relative; display: flex; flex-wrap: wrap; gap: 14px 22px; align-items: baseline; max-width: 820px; padding: 12px 0 36px; }
.garden__word {
  appearance: none; background: transparent; border: 0; cursor: pointer;
  font-family: var(--serif); font-weight: 300; color: var(--ink);
  padding: 2px 4px; line-height: 1.1; font-style: italic;
  transition: color 0.18s, opacity 0.18s; text-decoration: none;
}
.garden__word::before { content: ""; display: inline-block; width: 5px; height: 5px; background: var(--fork); border-radius: 50%; margin-right: 5px; vertical-align: 2px; opacity: 0.6; }
.garden__word:hover, .garden__word.is-active { color: var(--fork); }
.garden__word:hover::before, .garden__word.is-active::before { opacity: 1; }
.garden__lead { font-family: var(--serif); font-style: italic; font-weight: 300; font-size: 22px; line-height: 1.4; color: var(--ink-soft); max-width: 56ch; margin: 0 0 16px; }
.garden__rooms { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 16px; margin-top: 22px; }

/* =====================================================================
   Research — commuting diagram + theme cards
   ===================================================================== */

.research-head { text-align: center; padding: 16px 0 32px; }
.research-head img { width: 380px; max-width: 90%; height: auto; margin: 0 auto 8px; display: block; }
.research-diagram { display: flex; justify-content: center; margin: 24px 0 12px; overflow-x: auto; }
.research-diagram .katex { font-size: 1.15em; }
.research-head__cap { font-family: var(--mono); font-size: 12px; letter-spacing: 0.16em; text-transform: uppercase; color: var(--muted); margin-top: 12px; }
.research-card {
  padding: 22px 24px; border-radius: 16px; background: var(--card-bg);
  border: 1px solid var(--card-edge); box-shadow: var(--card-shadow);
  display: flex; flex-direction: column; gap: 8px;
}
.research-card__tag { font-family: var(--serif); font-weight: 300; font-size: 26px; color: var(--fork); letter-spacing: -0.4px; }
.research-card h3 { font-family: var(--serif); font-weight: 300; font-size: 22px; margin: 0; color: var(--ink); }
.research-card p { font-family: var(--sans); font-size: 14px; color: var(--body); margin: 0; line-height: 1.6; }

/* =====================================================================
   News feed
   ===================================================================== */

.news-feed { display: flex; flex-direction: column; gap: 16px; max-width: 720px; }
.news {
  position: relative; padding: 20px 22px 18px; border-radius: 14px;
  border: 1px solid var(--hairline); background: var(--paper);
  display: flex; flex-direction: column; gap: 10px;
  text-decoration: none; color: inherit;
  transition: border-color 0.18s, box-shadow 0.18s, transform 0.18s;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,0.6), 0 1px 0 var(--hairline-strong),
    0 2px 0 -1px var(--paper-deep), 0 8px 18px -6px rgba(26,24,20,0.12);
}
.news:hover {
  border-color: var(--ink-soft); transform: translateY(-1px);
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,0.6), 0 1px 0 var(--hairline-strong),
    0 2px 0 -1px var(--paper-deep), 0 12px 24px -6px rgba(26,24,20,0.18);
}
.news__head { display: flex; align-items: center; justify-content: space-between; }
.news__kicker { display: inline-flex; align-items: center; gap: 6px; font-family: var(--mono); font-size: 10px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--muted); font-weight: 500; }
.news__head time { font-family: var(--mono); font-size: 10px; letter-spacing: 0.12em; color: var(--muted-soft); text-transform: uppercase; }
.news h3 { font-family: var(--serif); font-weight: 300; font-size: 22px; line-height: 1.22; letter-spacing: -0.3px; color: var(--ink); margin: 0; }
.news__body p { font-family: var(--sans); font-size: 15px; line-height: 1.6; letter-spacing: 0.16px; color: var(--body); margin: 0 0 10px; }
.news__body p:last-child { margin-bottom: 0; }
.news__body em { font-family: var(--serif); font-style: italic; font-weight: 400; color: var(--ink-soft); }
.news__tex { font-family: "KaTeX_Math", "Computer Modern", var(--serif); font-style: italic; font-size: 14px; color: var(--ink); background: var(--paper-soft); padding: 1px 5px; border-radius: 4px; border: 1px solid var(--hairline); }
.news--link { cursor: pointer; }
.news--link .news__sub { font-family: var(--sans); font-size: 14px; color: var(--body); margin: 0; }
.news__cta { display: inline-flex; align-items: center; gap: 6px; font-family: var(--sans); font-size: 13px; font-weight: 500; color: var(--ink); margin-top: 4px; }
.news__cta svg { width: 14px; height: 14px; }
.news--embed { padding-left: 24px; }
.news--embed::before { content: ""; position: absolute; left: 12px; top: 18px; bottom: 18px; width: 2px; border-radius: 2px; background: var(--ink); }
.news--embed.is-x::before { background: #000; }
.news--embed.is-bsky::before { background: #1185fe; }
.news--embed.is-x .news__kicker { color: var(--ink); }
.news--embed.is-bsky .news__kicker { color: #0a5fc8; }
.news--embed .news__body { font-family: var(--serif); font-weight: 300; font-size: 18px; line-height: 1.4; color: var(--ink); letter-spacing: -0.1px; max-width: none; }
.news--embed .news__perma { font-family: var(--mono); font-size: 10px; letter-spacing: 0.14em; color: var(--muted); text-transform: uppercase; }

/* =====================================================================
   Markdown prose (paper bodies, blog posts, about)
   ===================================================================== */

.prose { max-width: 68ch; }
.prose p, .prose li { font-family: var(--sans); font-size: 16px; line-height: 1.7; letter-spacing: 0.16px; color: var(--body); }
.prose > p:first-of-type { font-family: var(--serif); font-weight: 300; font-style: italic; font-size: 20px; line-height: 1.5; color: var(--ink-soft); letter-spacing: -0.2px; }
.prose h1 { font-size: var(--t-display-lg); margin: 1.6em 0 0.5em; }
.prose h2 { font-family: var(--serif); font-weight: 300; font-size: 26px; letter-spacing: -0.3px; color: var(--ink); margin: 1.8em 0 0.6em; padding-bottom: 8px; border-bottom: 1px solid var(--hairline); }
.prose h3 { font-family: var(--serif); font-weight: 400; font-size: 20px; color: var(--ink); margin: 1.6em 0 0.4em; }
.prose a { color: var(--ink); border-bottom: 1px solid var(--hairline-strong); }
.prose a:hover { border-bottom-color: var(--fork); color: var(--fork); }
.prose blockquote { margin: 1.4em 0; padding: 0 0 0 20px; border-left: 2px solid var(--hairline-strong); font-family: var(--serif); font-style: italic; font-weight: 300; font-size: 20px; color: var(--ink-soft); }
.prose code { font-family: var(--mono); font-size: 13px; background: var(--paper-soft); border: 1px solid var(--hairline); padding: 1px 5px; border-radius: 4px; }
.prose pre { background: var(--paper-soft); border: 1px solid var(--hairline); border-radius: 12px; padding: 18px; overflow-x: auto; line-height: 1.55; }
.prose pre code { background: none; border: 0; padding: 0; font-size: 13px; }
.prose img { border-radius: 12px; border: 1px solid var(--hairline); }
.prose ul, .prose ol { padding-left: 1.3em; }
.prose hr { border: 0; border-top: 1px solid var(--hairline); margin: 2.5em 0; }

/* About page */
.about-head { display: flex; gap: 32px; align-items: flex-start; flex-wrap: wrap; padding: 16px 0 8px; }
.about-photo {
  width: 180px; height: 180px; border-radius: 16px; flex-shrink: 0;
  object-fit: cover; border: 1px solid var(--card-edge);
  background: linear-gradient(135deg, var(--paper-deep), var(--paper-soft));
  display: flex; align-items: center; justify-content: center;
  font-family: var(--serif); font-weight: 300; font-size: 48px; color: var(--muted); box-shadow: var(--card-shadow);
}
.about-id h1 { font-family: var(--serif); font-weight: 300; font-size: clamp(36px, 5vw, 56px); letter-spacing: -1.2px; margin: 8px 0 4px; color: var(--ink); }
.about-id .handle { font-family: var(--mono); font-size: 12px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--fork); }
.about-id .affil { font-family: var(--sans); font-size: 15px; color: var(--body); margin-top: 10px; }
.about-id .affil a { color: var(--ink); border-bottom: 1px solid var(--hairline-strong); }
.about-brand-img { width: 100%; border-radius: 16px; border: 1px solid var(--hairline); margin: 36px 0 0; mix-blend-mode: multiply; }

/* =====================================================================
   Footer + reveal
   ===================================================================== */

.foot {
  margin-top: 96px; padding: 36px 0; border-top: 1px solid var(--hairline);
  display: flex; justify-content: space-between; align-items: baseline; flex-wrap: wrap; gap: 12px;
  font-family: var(--mono); font-size: 11px; letter-spacing: 0.12em;
  text-transform: uppercase; color: var(--muted);
}
.foot a { color: var(--ink); border-bottom: 1px solid var(--hairline-strong); }
.foot a:hover { border-bottom-color: var(--ink); }

.reveal { opacity: 0; transform: translateY(16px); transition: opacity 0.6s var(--ease), transform 0.6s var(--ease); }
.reveal.is-visible { opacity: 1; transform: none; }

.warp-toast {
  position: fixed; left: 50%; bottom: 36px; transform: translateX(-50%);
  background: var(--ink); color: var(--on-ink); font-family: var(--mono);
  font-size: 11px; letter-spacing: 0.14em; text-transform: uppercase;
  padding: 10px 18px; border-radius: 9999px; z-index: 200;
  box-shadow: 0 12px 40px -16px rgba(26,24,20,0.4);
  animation: toastIn 0.4s var(--ease);
}
@keyframes toastIn { from { opacity: 0; transform: translate(-50%, 12px); } to { opacity: 1; transform: translate(-50%, 0); } }

/* =====================================================================
   Responsive
   ===================================================================== */

@media (max-width: 1024px) {
  .app { grid-template-columns: 240px 1fr; }
  .main { padding: 24px 32px 64px; }
}

@media (max-width: 760px) {
  .app { grid-template-columns: 1fr; }
  .topbar { display: flex; }
  .side {
    position: fixed; top: 0; left: 0; bottom: 0; width: 280px; z-index: 90;
    height: 100vh; transform: translateX(-100%);
    transition: transform 0.32s var(--ease);
  }
  .side.is-open { transform: translateX(0); }
  .sidebar-backdrop {
    display: block; position: fixed; inset: 0; z-index: 85;
    background: rgba(26,24,20,0.4); opacity: 0; pointer-events: none;
    transition: opacity 0.32s var(--ease);
  }
  .sidebar-backdrop.is-open { opacity: 1; pointer-events: auto; }
  .main { padding: 20px 20px 56px; }
  .hero__mark { width: 100%; }
  .paper-shell.has-fork { grid-template-columns: 1fr; }
  .paper-shell.has-fork .paper { padding-right: 0; border-right: 0; }
  .fork-panel { position: relative; top: 0; max-height: none; margin-top: 24px; }
  .corridor { grid-template-columns: 1fr; }
  .about-head { gap: 20px; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: 0.001ms !important; transition-duration: 0.001ms !important; }
  .reveal { opacity: 1; transform: none; }
}
