/* ==========================================================================
   durgabaideshmukh.com — "The Blueprint of Change"
   Design system: contemporary Indian editorial + architectural drawing
   ========================================================================== */

/* --------------------------------------------------------------- 1. TOKENS */
:root{
  /* Surfaces — soft mineral white */
  --paper:      #FAF9F5;
  --paper-2:    #F1EFE8;
  --paper-3:    #E8E5DC;

  /* Ink — deep charcoal */
  --ink:        #1D2025;
  --ink-2:      #454A54;
  --ink-3:      #6B7180;

  /* Primary accent — indigo-violet */
  --indigo:     #4B3FA6;
  --indigo-2:   #6E60C9;
  --indigo-wash:#EDEAF8;

  /* Second accent — muted marigold */
  --marigold:      #C08A22;
  --marigold-ink:  #8A620F;   /* text-safe */
  --marigold-wash: #F8F0DC;

  /* Supporting — soft lavender-grey */
  --lavender:   #C7C3D6;
  --lavender-2: #E7E4EE;

  /* Small accent — terracotta clay */
  --clay:       #A9553A;
  --clay-wash:  #F6E9E3;

  /* Drafting lines */
  --rule:       rgba(29,32,37,.16);
  --rule-soft:  rgba(29,32,37,.08);
  --rule-faint: rgba(29,32,37,.045);

  /* Type */
  --serif:  "Fraunces", Georgia, "Times New Roman", serif;
  --sans:   "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  --label:  "Archivo", "Inter", system-ui, sans-serif;

  /* Metrics */
  --gut: clamp(20px, 5vw, 64px);
  --measure: 68ch;
  --maxw: 1360px;

  --ease: cubic-bezier(.22,.61,.36,1);
  --slow: .8s;
}

/* ---------------------------------------------------------- 2. FOUNDATIONS */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%; scroll-behavior:smooth; scroll-padding-top:104px}
body{
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:var(--sans);
  font-size:clamp(16px,.55vw + 15px,18px);
  line-height:1.68;
  font-weight:400;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
/* Paper grain + faint drafting grid, applied once at body level */
body::before{
  content:""; position:fixed; inset:0; z-index:0; pointer-events:none;
  background-image:
    linear-gradient(to right, var(--rule-faint) 1px, transparent 1px),
    linear-gradient(to bottom, var(--rule-faint) 1px, transparent 1px);
  background-size:96px 96px;
  opacity:.9;
}
body::after{
  content:""; position:fixed; inset:0; z-index:0; pointer-events:none;
  opacity:.30; mix-blend-mode:multiply;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.82' numOctaves='3'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)' opacity='.32'/%3E%3C/svg%3E");
}
#top, .page{position:relative; z-index:1}

img{max-width:100%; height:auto; display:block}
a{color:var(--indigo); text-underline-offset:.22em; text-decoration-thickness:1px}
a:hover{color:var(--ink)}
:focus-visible{outline:2px solid var(--indigo); outline-offset:3px; border-radius:2px}
::selection{background:var(--marigold-wash); color:var(--ink)}
hr{border:0; border-top:1px solid var(--rule); margin:0}

h1,h2,h3,h4{font-family:var(--serif); font-weight:600; line-height:1.06; letter-spacing:-.015em; margin:0; text-wrap:balance}
p{margin:0 0 1.15em}
p:last-child{margin-bottom:0}
strong{font-weight:600}
blockquote{margin:0}

.skip{
  position:absolute; left:-9999px; top:0; z-index:200;
  background:var(--ink); color:var(--paper); padding:.7rem 1.1rem;
  font-family:var(--label); font-size:.8rem; letter-spacing:.08em; text-transform:uppercase;
}
.skip:focus{left:.5rem; top:.5rem}
.vh{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}

/* ------------------------------------------------------- 3. TYPE UTILITIES */
.lbl{
  font-family:var(--label); font-weight:600; font-size:.7rem;
  letter-spacing:.18em; text-transform:uppercase; color:var(--ink-3);
  display:inline-flex; align-items:center; gap:.6em; margin:0;
}
.lbl--indigo{color:var(--indigo)}
.lbl--gold{color:var(--marigold-ink)}
.lbl--clay{color:var(--clay)}
.lbl::before{
  content:""; width:22px; height:1px; background:currentColor; flex:none; opacity:.55;
}
.lbl.no-tick::before{display:none}

.num{
  font-family:var(--label); font-weight:700; font-size:.68rem;
  letter-spacing:.14em; color:var(--marigold-ink); font-variant-numeric:tabular-nums;
}

.h-xl,.h-lg,.h-md,.h-sm{margin-bottom:.9rem}
.h-xl{font-size:clamp(2.6rem,8.4vw,6.4rem)}
.h-lg{font-size:clamp(2.1rem,5.4vw,4.1rem)}
.h-md{font-size:clamp(1.6rem,3.2vw,2.6rem)}
.h-sm{font-size:clamp(1.25rem,2vw,1.62rem); line-height:1.16}
.lede{font-size:clamp(1.1rem,1.5vw,1.34rem); line-height:1.55; color:var(--ink-2); font-weight:300}
.dim{color:var(--ink-2)}
.small{font-size:.9rem; line-height:1.6}
.tiny{font-size:.82rem; line-height:1.6; color:var(--ink-3)}

/* ---------------------------------------------------------- 4. PAGE SHELL */
.wrap{width:min(100% - (var(--gut) * 2), var(--maxw)); margin-inline:auto}
.wrap--narrow{width:min(100% - (var(--gut) * 2), 860px); margin-inline:auto}
section{position:relative}
.band{padding-block:clamp(3.6rem,8vw,7.5rem)}
.band--tight{padding-block:clamp(2.6rem,5vw,4.4rem)}
.band--tint{background:var(--paper-2)}
.band--ink{background:var(--ink); color:var(--paper-2)}
.band--ink h1,.band--ink h2,.band--ink h3{color:var(--paper)}
.band--ink .lbl{color:var(--lavender)}
.band--ink .dim{color:var(--lavender-2)}
.band--wash{background:var(--indigo-wash)}
.band + .band{border-top:1px solid var(--rule-soft)}

/* =============================== 5. BLUEPRINT INDEX — STICKY TOP BAR ===== */
.topnav{
  position:sticky; top:0; z-index:80;
  background:color-mix(in srgb, var(--paper) 92%, transparent);
  backdrop-filter:blur(12px) saturate(1.4); -webkit-backdrop-filter:blur(12px) saturate(1.4);
  border-bottom:1px solid var(--rule-soft);
  transition:box-shadow .35s var(--ease), border-color .35s var(--ease);
}
@supports not (backdrop-filter:blur(4px)){ .topnav{background:var(--paper)} }
.topnav[data-scrolled="true"]{
  border-bottom-color:var(--rule);
  box-shadow:0 14px 30px -26px rgba(29,32,37,.55);
}
.topnav__inner{
  width:min(100% - (var(--gut) * 2), var(--maxw)); margin-inline:auto;
  display:flex; align-items:center; justify-content:space-between; gap:1.5rem;
  padding-block:.85rem;
  transition:padding-block .35s var(--ease);
}
.topnav[data-scrolled="true"] .topnav__inner{padding-block:.5rem}

.topnav__mark{
  display:grid; gap:2px; text-decoration:none; color:var(--ink); flex:none; line-height:1.05;
}
.topnav__name{font-family:var(--serif); font-weight:700; font-size:clamp(.98rem,1.35vw,1.14rem); letter-spacing:-.015em}
.topnav__dates{
  font-family:var(--label); font-size:.56rem; font-weight:700; letter-spacing:.22em;
  color:var(--marigold-ink);
}
.topnav__mark:hover .topnav__name{color:var(--indigo)}

/* The measurement line: hidden until there is room for it */
.topnav__nav{display:none}
@media (min-width:1120px){
  .topnav__nav{display:block; flex:1 1 auto; min-width:0}
}
.topnav__legend{
  margin:0 0 .35rem; text-align:right;
  font-family:var(--label); font-size:.5rem; font-weight:700; letter-spacing:.26em;
  text-transform:uppercase; color:var(--ink-3); opacity:.75;
  transition:opacity .3s var(--ease), margin .3s var(--ease);
}
.topnav[data-scrolled="true"] .topnav__legend{opacity:0; margin-bottom:0; height:0; overflow:hidden}

.tnav{
  list-style:none; margin:0; padding:0;
  display:flex; align-items:flex-end; justify-content:flex-end;
  gap:clamp(.6rem,1.5vw,1.5rem);
  position:relative;
}
.tnav::after{ /* the measurement line itself */
  content:""; position:absolute; left:0; right:0; bottom:0; height:1px; background:var(--rule);
}
.tnav__link{
  display:grid; justify-items:center; gap:2px;
  padding:0 0 9px; text-decoration:none; color:var(--ink-2); position:relative;
}
.tnav__n{
  font-family:var(--label); font-size:.52rem; font-weight:700; letter-spacing:.14em;
  color:var(--ink-3); font-variant-numeric:tabular-nums; transition:color .28s var(--ease);
}
.tnav__t{
  font-family:var(--label); font-size:.62rem; font-weight:600; letter-spacing:.12em;
  text-transform:uppercase; white-space:nowrap; transition:color .28s var(--ease);
}
.tnav__tick{
  position:absolute; left:50%; bottom:0; width:1px; height:7px;
  background:var(--rule); transform:translateX(-50%);
  transition:height .28s var(--ease), background .28s var(--ease), width .28s var(--ease);
}
.tnav__link:hover,.tnav__link:focus-visible{color:var(--indigo)}
.tnav__link:hover .tnav__n,.tnav__link:focus-visible .tnav__n{color:var(--indigo)}
.tnav__link:hover .tnav__tick,.tnav__link:focus-visible .tnav__tick{height:12px; background:var(--indigo)}
.tnav__link[aria-current="page"]{color:var(--ink)}
.tnav__link[aria-current="page"] .tnav__t{font-weight:700}
.tnav__link[aria-current="page"] .tnav__n{color:var(--marigold-ink)}
.tnav__link[aria-current="page"] .tnav__tick{
  height:12px; width:3px; background:var(--marigold); border-radius:2px 2px 0 0;
}

/* Index button — shown until the full line fits */
.idx-btn{
  display:inline-flex; align-items:center; gap:.55rem; background:none; border:1px solid var(--rule);
  border-radius:2px; padding:.5rem .8rem; cursor:pointer; color:var(--ink); flex:none;
  font-family:var(--label); font-size:.68rem; font-weight:700; letter-spacing:.16em; text-transform:uppercase;
  transition:border-color .28s var(--ease), color .28s var(--ease);
}
.idx-btn:hover{border-color:var(--indigo); color:var(--indigo)}
.idx-btn__bars{display:grid; gap:3px; width:16px}
.idx-btn__bars i{display:block; height:1.5px; background:currentColor; border-radius:1px}
.idx-btn__bars i:nth-child(2){width:11px}
.idx-btn__bars i:nth-child(3){width:14px}
@media (min-width:1120px){.topnav .idx-btn{display:none}}

/* Full-screen index for narrow viewports */
.menu{
  position:fixed; inset:0; z-index:90; background:var(--paper);
  padding:1rem var(--gut) 2rem; overflow-y:auto;
  opacity:0; visibility:hidden; transform:translateY(-8px);
  transition:opacity .3s var(--ease), transform .3s var(--ease), visibility .3s;
}
.menu[data-open="true"]{opacity:1; visibility:visible; transform:none}
.menu__head{display:flex; align-items:center; justify-content:space-between; padding-block:.4rem 1.4rem; border-bottom:1px solid var(--rule-soft)}
.menu__close{
  background:none; border:1px solid var(--rule); border-radius:2px; padding:.5rem .8rem; cursor:pointer;
  font-family:var(--label); font-size:.68rem; font-weight:700; letter-spacing:.16em; text-transform:uppercase; color:var(--ink);
}
.menu__list{list-style:none; margin:0; padding:1.2rem 0 0}
.menu__list li{border-bottom:1px solid var(--rule-faint)}
.menu__link{display:flex; align-items:baseline; gap:1rem; padding:.85rem 0; text-decoration:none; color:var(--ink)}
.menu__link .n{font-family:var(--label); font-size:.72rem; font-weight:700; color:var(--marigold-ink); letter-spacing:.1em; min-width:2.2em; font-variant-numeric:tabular-nums}
.menu__link .t{font-family:var(--serif); font-size:clamp(1.5rem,6vw,2rem); font-weight:600; line-height:1.1}
.menu__link[aria-current="page"] .t{color:var(--indigo)}
.menu__link[aria-current="page"] .n::after{content:" \2022"; color:var(--marigold)}
.menu__foot{margin-top:1.8rem; padding-top:1.2rem; border-top:1px solid var(--rule-soft); display:grid; gap:.35rem}
.menu__foot a{font-family:var(--label); font-size:.8rem; letter-spacing:.04em; color:var(--ink-2); text-decoration:none}
.menu__foot a:hover{color:var(--indigo)}
body[data-lock="true"]{overflow:hidden}

/* ---------------------------------------------------- 6. BLUEPRINT TRACE */
.chapter{position:relative}
.trace{
  position:absolute; left:calc(var(--gut) * -1 + 6px); top:0; bottom:0; width:26px;
  pointer-events:none; z-index:2;
}
@media (max-width:1000px){.trace{left:-16px; width:16px}}
@media (max-width:600px){.trace{display:none}}
.trace__rail{position:absolute; left:13px; top:0; bottom:0; width:1px; background:var(--rule-soft)}
@media (max-width:1000px){.trace__rail,.trace__draw{left:8px}}
.trace__draw{
  position:absolute; left:13px; top:0; height:100%; width:1px; background:var(--indigo);
  transform-origin:top center; transform:scaleY(var(--p,0)); transition:transform .16s linear;
}
.trace__tick{position:absolute; left:6px; width:14px; height:1px; background:var(--rule); transform:translateY(-50%)}
@media (max-width:1000px){.trace__tick{left:2px; width:12px}}
.trace__dot{
  position:absolute; left:9px; width:9px; height:9px; margin-top:-4.5px;
  border:1px solid var(--lavender); border-radius:50%; background:var(--paper);
  transition:background .45s var(--ease), border-color .45s var(--ease), transform .45s var(--ease);
}
@media (max-width:1000px){.trace__dot{left:4px}}
.trace__dot.on{border-color:var(--marigold); background:var(--marigold); transform:scale(1.18)}

/* --------------------------------------------------------- 7. REVEALS */
.js [data-rise]{opacity:0; transform:translateY(20px); transition:opacity .8s var(--ease), transform .8s var(--ease)}
.js [data-rise].in{opacity:1; transform:none}
[data-rise][data-d="1"]{transition-delay:.08s}
[data-rise][data-d="2"]{transition-delay:.16s}
[data-rise][data-d="3"]{transition-delay:.24s}
[data-rise][data-d="4"]{transition-delay:.32s}

/* ------------------------------------------------- 8. HOME — THE OPENING */
.opening{position:relative; padding-block:clamp(2rem,5vw,4rem) clamp(3rem,7vw,6rem)}
.opening__grid{
  display:grid; gap:clamp(1.6rem,4vw,3.4rem);
  grid-template-columns:1fr;
  align-items:end;
}
@media (min-width:900px){
  .opening__grid{grid-template-columns:minmax(0,1.15fr) minmax(280px,.85fr)}
}
.opening__type{position:relative}
.opening__coord{
  font-family:var(--label); font-size:.64rem; letter-spacing:.2em; text-transform:uppercase;
  color:var(--ink-3); display:flex; flex-wrap:wrap; gap:.5rem 1.4rem; margin-bottom:1.6rem;
  padding-bottom:.9rem; border-bottom:1px solid var(--rule-soft);
}
.opening__coord b{color:var(--marigold-ink); font-weight:700}
.opening h1{
  font-size:clamp(3rem,12.5vw,8.6rem); line-height:.88; letter-spacing:-.035em; font-weight:600;
  margin:0 0 1.3rem;
}
.opening h1 em{display:block; font-style:normal}
.opening h1 .l2{color:var(--indigo)}
.roles{
  list-style:none; margin:0 0 1.6rem; padding:0;
  display:grid; grid-template-columns:repeat(auto-fit,minmax(140px,1fr)); gap:.1rem 1.2rem;
  border-top:1px solid var(--rule-soft); padding-top:1.1rem;
}
.roles li{
  font-family:var(--label); font-size:.7rem; font-weight:600; letter-spacing:.15em; text-transform:uppercase;
  color:var(--ink-2); padding:.42rem 0; display:flex; align-items:baseline; gap:.55rem;
}
.roles li::before{content:attr(data-n); font-size:.58rem; color:var(--marigold-ink); font-weight:700}
.opening__dates{
  font-family:var(--serif); font-size:clamp(1.1rem,2vw,1.4rem); color:var(--ink-2); font-style:italic; font-weight:400;
}

/* Thin architectural frame around the portrait — never crops */
.frame{position:relative; padding:14px}
.frame::before,.frame::after{content:""; position:absolute; pointer-events:none}
.frame::before{
  inset:0; border:1px solid var(--rule);
}
.frame::after{
  inset:14px -1px -1px 14px; border-left:1px solid var(--marigold); border-bottom:1px solid var(--marigold); opacity:.75;
}
.frame__inner{background:var(--paper-2); position:relative; z-index:1}
.frame__inner img{width:100%; height:auto}
.frame__cap{
  margin-top:.85rem; font-family:var(--label); font-size:.66rem; letter-spacing:.13em;
  text-transform:uppercase; color:var(--ink-3); line-height:1.5;
}
.frame__dim{
  position:absolute; top:14px; right:-2px; transform:translateX(100%) ;
  writing-mode:vertical-rl; font-family:var(--label); font-size:.55rem; letter-spacing:.18em;
  color:var(--ink-3); padding-left:.5rem; display:none;
}
@media (min-width:1240px){.frame__dim{display:block}}

/* ------------------------------------------- 9. STATEMENT / BIG QUESTION */
.statement{position:relative}
.statement h2{
  font-size:clamp(2.3rem,7.4vw,5.4rem); line-height:.98; letter-spacing:-.03em; margin-bottom:1.8rem;
}
.statement h2 span{display:block}
.statement h2 .accent{color:var(--indigo)}
.statement__cols{
  display:grid; gap:clamp(1.4rem,3vw,2.8rem); grid-template-columns:1fr;
  border-top:1px solid var(--rule); padding-top:1.8rem;
}
@media (min-width:820px){.statement__cols{grid-template-columns:repeat(2,minmax(0,1fr))}}
.statement__cols p{max-width:56ch}

.pillars{
  list-style:none; margin:2.2rem 0 0; padding:0;
  display:grid; gap:1px; background:var(--rule-soft);
  grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); border:1px solid var(--rule-soft);
}
.pillars li{background:var(--paper); padding:1.1rem 1.1rem 1.3rem}
.pillars b{
  display:block; font-family:var(--label); font-size:.66rem; font-weight:700; letter-spacing:.16em;
  text-transform:uppercase; color:var(--marigold-ink); margin-bottom:.5rem;
}
.pillars span{font-size:.92rem; line-height:1.55; color:var(--ink-2); display:block}

/* ------------------------------------------- 10. HOME — LIFE DIAGRAM */
.diagram{position:relative}
.diagram__stage{position:relative; width:100%; margin-top:2rem}
.diagram svg{width:100%; height:auto; display:block; overflow:visible}
.dg-link{stroke:#A9A4BE; stroke-width:1.1; fill:none; vector-effect:non-scaling-stroke;
  stroke-dasharray:var(--l,300); stroke-dashoffset:var(--l,300);}
.dg-link.in{animation:dg-draw 1.15s var(--ease) forwards}
.dg-link.hot{stroke:var(--indigo); stroke-width:1.6}
@keyframes dg-draw{to{stroke-dashoffset:0}}
.dg-core circle{fill:var(--ink)}
.dg-core text{fill:var(--paper); font-family:var(--label); font-weight:700; letter-spacing:.1em; text-transform:uppercase}
.dg-node{cursor:pointer}
.dg-node rect{fill:var(--paper); stroke:var(--rule); stroke-width:1; vector-effect:non-scaling-stroke; transition:stroke .3s var(--ease), fill .3s var(--ease)}
.dg-node text.t{fill:var(--ink); font-family:var(--label); font-weight:700; font-size:12px; letter-spacing:.13em; text-transform:uppercase}
.dg-node text.n{fill:var(--marigold-ink); font-family:var(--label); font-weight:700; font-size:9px; letter-spacing:.12em}
.dg-node:hover rect,.dg-node:focus-visible rect{fill:var(--indigo-wash); stroke:var(--indigo)}
.dg-node:focus-visible{outline:none}
.dg-node:focus-visible rect{stroke-width:2}
.diagram__note{margin-top:1.4rem; max-width:60ch}
.diagram__fallback{list-style:none; margin:1.6rem 0 0; padding:0; display:grid; gap:1px; background:var(--rule-soft); grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}
.diagram__fallback a{display:block; background:var(--paper); padding:.9rem 1rem; text-decoration:none; font-family:var(--label); font-size:.72rem; font-weight:700; letter-spacing:.14em; text-transform:uppercase; color:var(--ink)}
.diagram__fallback a:hover{background:var(--indigo-wash); color:var(--indigo)}

/* ------------------------------------------- 11. BUILDING BLOCKS (modules) */
.blocks{display:grid; gap:clamp(1rem,2vw,1.4rem); grid-template-columns:1fr; margin-top:2.4rem}
@media (min-width:700px){.blocks{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:1120px){.blocks{grid-template-columns:repeat(3,minmax(0,1fr))}}
.mod{
  position:relative; background:var(--paper); border:1px solid var(--rule-soft);
  padding:1.5rem 1.4rem 1.6rem; display:flex; flex-direction:column; gap:.55rem;
}
.mod::before{ /* registration corner */
  content:""; position:absolute; top:-1px; left:-1px; width:20px; height:20px;
  border-top:2px solid var(--marigold); border-left:2px solid var(--marigold);
}
.mod:nth-child(3n+2)::before{border-color:var(--indigo)}
.mod:nth-child(3n+3)::before{border-color:var(--clay)}
.mod__y{font-family:var(--label); font-weight:700; font-size:1.5rem; letter-spacing:.02em; color:var(--ink); font-variant-numeric:tabular-nums; line-height:1}
.mod__e{font-family:var(--serif); font-size:1.14rem; font-weight:600; line-height:1.25; color:var(--ink)}
.mod__w{font-size:.92rem; line-height:1.6; color:var(--ink-2); margin:0}
.mod__w b{
  display:block; font-family:var(--label); font-size:.6rem; font-weight:700; letter-spacing:.16em;
  text-transform:uppercase; color:var(--ink-3); margin-bottom:.3rem;
}

/* --------------------------------------------- 12. BUILD / IMPACT REVEAL */
.stages{display:grid; gap:1px; background:var(--rule-soft); border:1px solid var(--rule-soft); margin-top:2rem}
@media (min-width:840px){.stages{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:1200px){.stages--3{grid-template-columns:repeat(3,minmax(0,1fr))}}
.stage{background:var(--paper); padding:0}
.stage__btn{
  width:100%; text-align:left; background:none; border:0; cursor:pointer; color:inherit; font:inherit;
  padding:1.5rem 1.4rem; display:grid; gap:.55rem;
}
.stage__btn:hover{background:var(--paper-2)}
.stage__k{font-family:var(--label); font-size:.62rem; font-weight:700; letter-spacing:.18em; text-transform:uppercase; color:var(--indigo); display:flex; align-items:center; gap:.5rem}
.stage__k::after{content:""; flex:1; height:1px; background:var(--rule-soft)}
.stage__a{font-family:var(--serif); font-size:1.22rem; font-weight:600; line-height:1.24}
.stage__hint{
  font-family:var(--label); font-size:.62rem; font-weight:700; letter-spacing:.16em; text-transform:uppercase;
  color:var(--ink-3); display:inline-flex; align-items:center; gap:.4rem;
}
.stage__hint::before{content:"+"; font-size:.9rem; line-height:1; color:var(--marigold-ink)}
.stage[data-open="true"] .stage__hint::before{content:"–"}
.js .stage__body{
  display:grid; grid-template-rows:0fr; transition:grid-template-rows .45s var(--ease);
}
.js .stage[data-open="true"] .stage__body{grid-template-rows:1fr}
.stage__inner{overflow:hidden}
.stage__pad{padding:0 1.4rem 1.5rem; display:grid; gap:1rem}
.step{border-left:2px solid var(--lavender); padding-left:1rem}
.step:nth-child(2){border-color:var(--marigold)}
.step b{display:block; font-family:var(--label); font-size:.6rem; font-weight:700; letter-spacing:.17em; text-transform:uppercase; color:var(--ink-3); margin-bottom:.32rem}
.step p{margin:0; font-size:.95rem; line-height:1.62; color:var(--ink-2)}

/* ------------------------------------------------- 13. CHAPTER HEADERS */
.chead{padding-block:clamp(2.4rem,6vw,5rem) clamp(2rem,4vw,3.4rem); border-bottom:1px solid var(--rule)}
.chead__meta{display:flex; flex-wrap:wrap; gap:.6rem 1.5rem; align-items:baseline; margin-bottom:1.4rem}
.chead__no{font-family:var(--label); font-weight:700; font-size:.72rem; letter-spacing:.2em; text-transform:uppercase; color:var(--marigold-ink)}
.chead h1{font-size:clamp(2.3rem,7vw,5rem); line-height:.98; letter-spacing:-.03em; max-width:16ch}
.chead__lede{margin-top:1.5rem; max-width:62ch}
.crumbs{font-family:var(--label); font-size:.66rem; letter-spacing:.13em; text-transform:uppercase; color:var(--ink-3)}
.crumbs ol{list-style:none; display:flex; flex-wrap:wrap; gap:.5rem; margin:0; padding:0}
.crumbs li+li::before{content:"/"; margin-right:.5rem; color:var(--rule)}
.crumbs a{color:var(--ink-3); text-decoration:none}
.crumbs a:hover{color:var(--indigo)}

/* ------------------------------------------------------ 14. PROSE + MARGIN */
.prose{max-width:var(--measure)}
.prose h2{font-size:clamp(1.6rem,3vw,2.35rem); margin:2.6rem 0 1rem; letter-spacing:-.02em}
.prose h2:first-child{margin-top:0}
.prose h3{font-size:clamp(1.15rem,1.8vw,1.36rem); margin:2rem 0 .7rem; font-weight:600}
.prose ul,.prose ol{margin:0 0 1.2em; padding-left:1.15rem}
.prose li{margin-bottom:.5em}
.prose li::marker{color:var(--marigold)}

/* Left-gutter annotation layout (Early Life) */
.annot{display:grid; gap:clamp(1.4rem,3vw,3rem); grid-template-columns:1fr}
@media (min-width:960px){.annot{grid-template-columns:210px minmax(0,1fr)}}
.annot__side{display:grid; gap:1.1rem; align-content:start}
@media (min-width:960px){.annot__side{position:sticky; top:2rem}}
.note{
  border-left:1px solid var(--rule); padding-left:.9rem; display:grid; gap:.18rem;
}
.note--gold{border-left-color:var(--marigold)}
.note--indigo{border-left-color:var(--indigo)}
.note--clay{border-left-color:var(--clay)}
.note b{font-family:var(--label); font-size:.58rem; font-weight:700; letter-spacing:.18em; text-transform:uppercase; color:var(--ink-3)}
.note span{font-size:.92rem; line-height:1.5; color:var(--ink)}

/* --------------------------------------------------------- 15. FIGURES */
figure{margin:0}
.fig{background:var(--paper-2); border:1px solid var(--rule-soft); padding:clamp(.75rem,1.6vw,1.15rem)}
.fig img{margin-inline:auto; width:auto; max-width:100%; max-height:min(72vh,780px)}
.fig figcaption,.fig__cap{
  margin-top:.85rem; padding-top:.7rem; border-top:1px solid var(--rule-soft);
  font-size:.84rem; line-height:1.55; color:var(--ink-2);
}
.fig figcaption b,.fig__cap b,.tallfig figcaption b{
  display:block; font-family:var(--label); font-size:.6rem; font-weight:700; letter-spacing:.16em;
  text-transform:uppercase; color:var(--marigold-ink); margin-bottom:.28rem;
}
.fig--plain{background:none; border:0; padding:0}
.fig--plain figcaption{border-top:1px solid var(--rule-soft)}

.duo{display:grid; gap:clamp(1.2rem,3vw,2.4rem); grid-template-columns:1fr; align-items:start}
@media (min-width:880px){
  .duo{grid-template-columns:repeat(2,minmax(0,1fr))}
  .duo--wideL{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr)}
  .duo--wideR{grid-template-columns:minmax(0,1fr) minmax(0,1.25fr)}
}
.duo--mid{align-items:center}

/* ------------------------------------------------------ 16. PULLQUOTE */
.pq{
  position:relative; margin:2.6rem 0; padding:1.7rem 0 1.7rem 1.6rem;
  border-left:3px solid var(--marigold);
}
.pq blockquote{font-family:var(--serif); font-style:italic; font-weight:400;
  font-size:clamp(1.2rem,2.3vw,1.72rem); line-height:1.36; color:var(--ink); letter-spacing:-.01em}
.pq cite{
  display:block; margin-top:1rem; font-style:normal;
  font-family:var(--label); font-size:.66rem; font-weight:600; letter-spacing:.14em;
  text-transform:uppercase; color:var(--ink-3); line-height:1.6;
}
.pq--indigo{border-left-color:var(--indigo)}
.pq--clay{border-left-color:var(--clay)}
.band--ink .pq blockquote{color:var(--paper)}
.band--ink .pq cite{color:var(--lavender)}

/* -------------------------------------- 17. LADDER (QUESTION → JUSTICE) */
.ladder{list-style:none; margin:2.2rem 0 0; padding:0; display:grid; gap:0; max-width:640px}
.ladder li{position:relative; padding:1.05rem 0 1.05rem 3.3rem; border-bottom:1px solid var(--rule-soft)}
.ladder li:first-child{border-top:1px solid var(--rule-soft)}
.ladder li::before{
  content:attr(data-n); position:absolute; left:0; top:1.15rem;
  font-family:var(--label); font-size:.62rem; font-weight:700; letter-spacing:.12em; color:var(--marigold-ink);
}
.ladder li::after{
  content:""; position:absolute; left:26px; top:0; bottom:0; width:1px; background:var(--rule-soft);
}
.ladder li:first-child::after{top:1.15rem}
.ladder li:last-child::after{bottom:calc(100% - 1.55rem)}
.ladder b{display:block; font-family:var(--serif); font-size:1.2rem; font-weight:600; margin-bottom:.25rem}
.ladder span{font-size:.94rem; color:var(--ink-2); line-height:1.6}
.ladder--gold li b{color:var(--ink)}

/* ---------------------------------------- 18. EDUCATION & LAW — RULED DESK */
.desk{position:relative; background:var(--paper); border:1px solid var(--rule-soft); padding:clamp(1.4rem,4vw,3rem)}
.desk::before{
  content:""; position:absolute; inset:0; pointer-events:none; opacity:.5;
  background-image:repeating-linear-gradient(to bottom, transparent 0 31px, rgba(29,32,37,.07) 31px 32px);
}
.desk > *{position:relative}
.desk__rule{position:absolute; top:0; bottom:0; left:clamp(1.4rem,4vw,3rem); width:1px; background:var(--clay); opacity:.35}
@media (min-width:900px){.desk{padding-left:clamp(3rem,7vw,6rem)} .desk__rule{left:clamp(2rem,5vw,4.2rem)}}
.desk__para{counter-reset:none; display:grid; gap:1.1rem}
.marg{display:grid; gap:clamp(1rem,2.4vw,2rem); grid-template-columns:1fr}
@media (min-width:1000px){.marg{grid-template-columns:minmax(0,1fr) 240px}}
.marg__side{display:grid; gap:1.1rem; align-content:start}
@media (min-width:1000px){.marg__side{position:sticky; top:2rem; padding-top:.4rem}}

/* -------------------------------- 19. CONSTITUTION — THE DOCUMENT TABLE */
.docket{border:1px solid var(--rule); background:var(--paper); margin-top:2.2rem}
.docket__head{
  display:none; padding:.75rem 1.2rem; border-bottom:1px solid var(--rule);
  background:var(--paper-2);
  font-family:var(--label); font-size:.6rem; font-weight:700; letter-spacing:.17em; text-transform:uppercase; color:var(--ink-3);
}
@media (min-width:760px){.docket__head{display:grid; grid-template-columns:70px minmax(0,1fr) 190px 46px; gap:1rem}}
.row{border-bottom:1px solid var(--rule-soft)}
.row:last-child{border-bottom:0}
.row__btn{
  width:100%; background:none; border:0; cursor:pointer; color:inherit; font:inherit; text-align:left;
  padding:1.15rem 1.2rem; display:grid; gap:.45rem; align-items:baseline;
}
@media (min-width:760px){.row__btn{grid-template-columns:70px minmax(0,1fr) 190px 46px; gap:1rem; align-items:center}}
.row__btn:hover{background:var(--indigo-wash)}
.row__no{font-family:var(--label); font-size:.66rem; font-weight:700; letter-spacing:.1em; color:var(--marigold-ink); font-variant-numeric:tabular-nums}
.row__t{font-family:var(--serif); font-size:1.1rem; font-weight:600; line-height:1.28}
.row__d{font-family:var(--label); font-size:.66rem; font-weight:600; letter-spacing:.12em; text-transform:uppercase; color:var(--ink-3)}
.row__x{justify-self:start; width:22px; height:22px; position:relative; flex:none}
@media (min-width:760px){.row__x{justify-self:end}}
.row__x::before,.row__x::after{content:""; position:absolute; background:var(--indigo); transition:transform .35s var(--ease)}
.row__x::before{left:0; right:0; top:50%; height:1.5px; margin-top:-.75px}
.row__x::after{top:0; bottom:0; left:50%; width:1.5px; margin-left:-.75px}
.row[data-open="true"] .row__x::after{transform:rotate(90deg)}
.row__body{background:var(--paper-2)}
.js .row__body{display:grid; grid-template-rows:0fr; transition:grid-template-rows .45s var(--ease)}
.js .row[data-open="true"] .row__body{grid-template-rows:1fr}
.row__inner{overflow:hidden}
.row__pad{padding:1.3rem 1.2rem 1.6rem; display:grid; gap:1.1rem}
@media (min-width:900px){.row__pad{grid-template-columns:repeat(3,minmax(0,1fr)); gap:1.6rem}}
.card-k b{display:block; font-family:var(--label); font-size:.6rem; font-weight:700; letter-spacing:.17em; text-transform:uppercase; color:var(--indigo); margin-bottom:.4rem}
.card-k p{margin:0; font-size:.93rem; line-height:1.62; color:var(--ink-2)}
.src{
  grid-column:1/-1; margin:0; padding-top:.9rem; border-top:1px solid var(--rule-soft);
  font-family:var(--label); font-size:.63rem; letter-spacing:.08em; color:var(--ink-3); line-height:1.6;
}

/* -------------------------------- 20. SOCIAL WELFARE — PROBLEM / RESPONSE */
.pr{display:grid; gap:clamp(1.2rem,2.6vw,2rem); grid-template-columns:1fr; margin-top:2.2rem}
@media (min-width:960px){.pr{grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr); align-items:start}}
.pr__list{list-style:none; margin:0; padding:0; border-top:1px solid var(--rule-soft)}
.pr__list li{border-bottom:1px solid var(--rule-soft)}
.pr__btn{
  width:100%; background:none; border:0; cursor:pointer; color:inherit; font:inherit; text-align:left;
  padding:1rem .6rem 1rem 0; display:flex; gap:.9rem; align-items:baseline;
  position:relative;
}
.pr__btn::before{
  content:""; position:absolute; left:-14px; top:50%; width:8px; height:1px; background:var(--rule);
  transform:translateY(-50%); transition:width .3s var(--ease), background .3s var(--ease);
}
.pr__btn:hover::before{width:14px; background:var(--indigo)}
.pr__btn[aria-selected="true"]::before{width:14px; height:3px; background:var(--marigold); border-radius:2px}
.pr__btn .k{font-family:var(--label); font-size:.62rem; font-weight:700; letter-spacing:.12em; color:var(--marigold-ink); font-variant-numeric:tabular-nums}
.pr__btn .t{font-family:var(--serif); font-size:1.06rem; font-weight:600; line-height:1.3; color:var(--ink-2)}
.pr__btn[aria-selected="true"] .t{color:var(--indigo)}
.pr__btn[aria-selected="true"]{background:linear-gradient(to right,var(--indigo-wash),transparent)}
.pr__panel{
  background:var(--paper); border:1px solid var(--rule); padding:clamp(1.3rem,3vw,2.2rem);
  position:relative;
}
@media (min-width:960px){.pr__panel{position:sticky; top:2rem}}
.pr__panel::before{
  content:""; position:absolute; top:-1px; right:-1px; width:26px; height:26px;
  border-top:2px solid var(--indigo); border-right:2px solid var(--indigo);
}
.pr__panel[hidden]{display:none}
.pr__panel h3{font-size:clamp(1.3rem,2.4vw,1.75rem); margin-bottom:.9rem}
.pr__pair{display:grid; gap:1.2rem; margin-top:1.4rem; padding-top:1.3rem; border-top:1px solid var(--rule-soft)}
@media (min-width:640px){.pr__pair{grid-template-columns:repeat(2,minmax(0,1fr))}}
.pr__pair div b{display:block; font-family:var(--label); font-size:.6rem; font-weight:700; letter-spacing:.17em; text-transform:uppercase; margin-bottom:.4rem}
.pr__pair div:first-child b{color:var(--clay)}
.pr__pair div:last-child b{color:var(--indigo)}
.pr__pair p{margin:0; font-size:.93rem; line-height:1.62; color:var(--ink-2)}

/* ------------------------------- 21. INSTITUTIONS — INTERACTIVE BLUEPRINT */
.filters{display:flex; flex-wrap:wrap; gap:.5rem; margin-top:1.8rem}
.chip{
  background:none; border:1px solid var(--rule); border-radius:2px; cursor:pointer; color:var(--ink-2);
  padding:.52rem .95rem; font-family:var(--label); font-size:.66rem; font-weight:700;
  letter-spacing:.15em; text-transform:uppercase; transition:all .28s var(--ease);
  display:inline-flex; align-items:center; gap:.5rem;
}
.chip::before{content:""; width:7px; height:7px; border:1px solid currentColor; flex:none; transform:rotate(45deg)}
.chip:hover{border-color:var(--indigo); color:var(--indigo)}
.chip[aria-pressed="true"]{background:var(--ink); border-color:var(--ink); color:var(--paper)}
.chip[aria-pressed="true"]::before{background:var(--marigold); border-color:var(--marigold)}
.plates{display:grid; gap:clamp(1rem,2vw,1.5rem); grid-template-columns:1fr; margin-top:2rem}
@media (min-width:820px){.plates{grid-template-columns:repeat(2,minmax(0,1fr))}}
.plate{
  position:relative; background:var(--paper); border:1px solid var(--rule); padding:1.6rem 1.5rem 1.7rem;
  display:flex; flex-direction:column; gap:.9rem;
}
.plate[hidden]{display:none}
.plate::after{ /* corner registration mark */
  content:""; position:absolute; right:12px; bottom:12px; width:14px; height:14px;
  background:
    linear-gradient(var(--rule),var(--rule)) center/1px 100% no-repeat,
    linear-gradient(var(--rule),var(--rule)) center/100% 1px no-repeat;
  border:1px solid var(--rule-soft); border-radius:50%;
}
.plate__top{display:flex; flex-wrap:wrap; gap:.5rem 1rem; align-items:baseline; justify-content:space-between}
.plate__yr{font-family:var(--label); font-weight:700; font-size:.9rem; letter-spacing:.06em; color:var(--marigold-ink); font-variant-numeric:tabular-nums}
.plate__tag{font-family:var(--label); font-weight:700; font-size:.58rem; letter-spacing:.16em; text-transform:uppercase; color:var(--paper); background:var(--indigo); padding:.24rem .5rem; border-radius:2px}
.plate h3{font-size:1.3rem; line-height:1.2}
.plate__role{
  font-family:var(--label); font-size:.63rem; font-weight:700; letter-spacing:.14em; text-transform:uppercase;
  color:var(--clay); display:inline-flex; align-items:center; gap:.45rem;
}
.plate__role::before{content:"▸"; font-size:.7rem}
.plate p{margin:0; font-size:.94rem; line-height:1.62; color:var(--ink-2)}
.flow{list-style:none; margin:.4rem 0 0; padding:0; display:grid; gap:0; border-top:1px solid var(--rule-soft)}
.flow li{
  display:grid; grid-template-columns:104px minmax(0,1fr); gap:.9rem; align-items:baseline;
  padding:.62rem 0; border-bottom:1px solid var(--rule-faint);
}
.flow li:last-child{border-bottom:0}
.flow b{font-family:var(--label); font-size:.58rem; font-weight:700; letter-spacing:.15em; text-transform:uppercase; color:var(--ink-3)}
.flow span{font-size:.9rem; line-height:1.55; color:var(--ink-2)}
.count{font-family:var(--label); font-size:.66rem; letter-spacing:.13em; text-transform:uppercase; color:var(--ink-3); margin-top:1.4rem; display:block}

/* ------------------------------------- 22. WOMEN — VERTICAL COMPOSITION */
.vert{display:grid; gap:clamp(1.4rem,3vw,2.6rem); grid-template-columns:1fr; align-items:start}
@media (min-width:940px){.vert{grid-template-columns:auto minmax(0,1fr) minmax(0,.9fr)}}
.vert__word{display:none}
@media (min-width:940px){
  .vert__word{
    display:block; writing-mode:vertical-rl; text-orientation:mixed;
    font-family:var(--serif); font-weight:600; font-size:clamp(2.4rem,4.6vw,4.4rem);
    line-height:1; letter-spacing:.02em; color:var(--ink); margin:0;
  }
  .vert__word em{font-style:normal; color:var(--indigo)}
}
.vert__mobile{display:block; font-size:clamp(2rem,9vw,3rem); line-height:1.02; letter-spacing:-.02em; margin-bottom:1.2rem}
@media (min-width:940px){.vert__mobile{display:none}}
.vert__mobile em{font-style:normal; color:var(--indigo)}
.stack{display:grid; gap:clamp(1.2rem,2.6vw,2rem)}
.tallfig{background:var(--paper-2); border:1px solid var(--rule-soft); padding:.9rem}
.tallfig img{width:100%; height:auto}
.tallfig figcaption{margin-top:.75rem; padding-top:.6rem; border-top:1px solid var(--rule-soft); font-size:.8rem; line-height:1.55; color:var(--ink-2)}

/* ------------------------------------------ 23. LEGACY — FOUR LAYERS */
.layers{display:grid; gap:clamp(1rem,2.2vw,1.6rem); grid-template-columns:1fr; margin-top:2.4rem}
@media (min-width:640px){.layers{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:1100px){.layers{grid-template-columns:repeat(4,minmax(0,1fr))}}
.layer{position:relative; text-align:left; display:flex; flex-direction:column; gap:.85rem}
.layer__ring{
  width:104px; height:104px; border-radius:50%; border:1px solid var(--rule);
  display:grid; place-items:center; position:relative; background:var(--paper);
}
.layer__ring::after{
  content:""; position:absolute; inset:11px; border-radius:50%; border:1px dashed var(--lavender);
}
.layer:nth-child(1) .layer__ring{border-color:var(--marigold)}
.layer:nth-child(2) .layer__ring{border-color:var(--indigo)}
.layer:nth-child(3) .layer__ring{border-color:var(--clay)}
.layer:nth-child(4) .layer__ring{border-color:var(--ink)}
.layer__ring span{font-family:var(--label); font-size:.62rem; font-weight:700; letter-spacing:.16em; text-transform:uppercase; color:var(--ink); position:relative; z-index:1; text-align:center; padding:0 .4rem}
.layer h3{font-size:1.18rem}
.layer p{margin:0; font-size:.93rem; line-height:1.62; color:var(--ink-2)}
.layers--linked{position:relative}
@media (min-width:1100px){
  .layers--linked::before{
    content:""; position:absolute; top:52px; left:12%; right:12%; height:1px;
    background:repeating-linear-gradient(to right,var(--rule) 0 6px,transparent 6px 12px); z-index:0;
  }
  .layer{z-index:1}
}

/* ------------------------------------------------ 24. ARCHIVE — DOC ROOM */
.shelf{margin-top:3rem}
.shelf__head{display:flex; flex-wrap:wrap; gap:.6rem 1.4rem; align-items:baseline; padding-bottom:.9rem; border-bottom:1px solid var(--rule)}
.shelf__head h2{font-size:clamp(1.35rem,2.6vw,1.9rem)}
.shelf__n{font-family:var(--label); font-size:.64rem; font-weight:700; letter-spacing:.16em; text-transform:uppercase; color:var(--ink-3)}
.shelf__grid{
  display:grid; gap:clamp(.9rem,1.8vw,1.5rem); margin-top:1.5rem;
  grid-template-columns:repeat(auto-fill,minmax(min(100%,220px),1fr));
}
.item{
  background:none; border:0; padding:0; cursor:zoom-in; color:inherit; font:inherit; text-align:left;
  display:flex; flex-direction:column; gap:.7rem;
}
.item__box{
  background:var(--paper-2); border:1px solid var(--rule-soft); padding:0;
  height:236px; position:relative;
  transition:border-color .3s var(--ease), background .3s var(--ease);
}
.item__box::after{
  content:""; position:absolute; top:6px; left:6px; width:12px; height:12px;
  border-top:1px solid var(--rule); border-left:1px solid var(--rule); opacity:0; transition:opacity .3s var(--ease);
}
.item:hover .item__box,.item:focus-visible .item__box{border-color:var(--indigo); background:var(--indigo-wash)}
.item:hover .item__box::after{opacity:1}
.item__box img{
  position:absolute; top:12px; right:12px; bottom:12px; left:12px; margin:auto;
  width:auto; height:auto; max-width:calc(100% - 24px); max-height:calc(100% - 24px);
}
.item__cap{display:grid; gap:.25rem}
.item__cap b{font-family:var(--serif); font-size:1rem; font-weight:600; line-height:1.24}
.item__cap span{font-family:var(--label); font-size:.6rem; font-weight:600; letter-spacing:.14em; text-transform:uppercase; color:var(--ink-3)}

/* Lightbox */
.lb{
  position:fixed; inset:0; z-index:120; display:grid; grid-template-rows:auto 1fr auto;
  background:rgba(23,25,29,.96); color:var(--paper);
  opacity:0; visibility:hidden; transition:opacity .3s var(--ease), visibility .3s;
}
.lb[data-open="true"]{opacity:1; visibility:visible}
.lb__bar{display:flex; align-items:center; justify-content:space-between; gap:1rem; padding:.9rem clamp(1rem,3vw,2rem); border-bottom:1px solid rgba(250,249,245,.14)}
.lb__count{font-family:var(--label); font-size:.66rem; font-weight:700; letter-spacing:.16em; color:var(--lavender); font-variant-numeric:tabular-nums}
.lb__btn{
  background:none; border:1px solid rgba(250,249,245,.3); border-radius:2px; color:var(--paper); cursor:pointer;
  padding:.45rem .8rem; font-family:var(--label); font-size:.64rem; font-weight:700; letter-spacing:.16em; text-transform:uppercase;
}
.lb__btn:hover{background:rgba(250,249,245,.12)}
.lb__btn:disabled{opacity:.35; cursor:not-allowed}
.lb__stage{display:grid; place-items:center; padding:clamp(1rem,3vw,2rem); min-height:0; overflow:auto}
.lb__stage img{max-width:100%; max-height:min(66vh,720px); width:auto; height:auto; background:#101215}
.lb__meta{padding:1rem clamp(1rem,3vw,2rem) 1.4rem; border-top:1px solid rgba(250,249,245,.14); display:grid; gap:.45rem; max-width:820px}
.lb__meta h3{font-size:1.2rem; color:var(--paper)}
.lb__meta dl{display:grid; grid-template-columns:auto 1fr; gap:.2rem .8rem; margin:0; font-size:.82rem}
.lb__meta dt{font-family:var(--label); font-size:.6rem; font-weight:700; letter-spacing:.15em; text-transform:uppercase; color:var(--lavender); padding-top:.18rem}
.lb__meta dd{margin:0; color:var(--lavender-2); line-height:1.55}
.lb__nav{display:flex; gap:.5rem}

/* ------------------------------------------------------- 25. CONTACT */
.contact{display:grid; gap:clamp(1.8rem,4vw,3.4rem); grid-template-columns:1fr}
@media (min-width:900px){.contact{grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr)}}
.dets{display:grid; gap:1.3rem; align-content:start}
.det{border-top:1px solid var(--rule); padding-top:1rem}
.det b{display:block; font-family:var(--label); font-size:.62rem; font-weight:700; letter-spacing:.18em; text-transform:uppercase; color:var(--ink-3); margin-bottom:.4rem}
.det a{font-family:var(--serif); font-size:clamp(1.2rem,2.4vw,1.62rem); font-weight:600; color:var(--ink); text-decoration:none; letter-spacing:-.01em; word-break:break-word}
.det a:hover{color:var(--indigo); text-decoration:underline; text-decoration-color:var(--marigold)}
.form{display:grid; gap:1.1rem; background:var(--paper); border:1px solid var(--rule); padding:clamp(1.3rem,3vw,2.2rem); position:relative}
.form::before{content:""; position:absolute; top:-1px; left:-1px; width:24px; height:24px; border-top:2px solid var(--marigold); border-left:2px solid var(--marigold)}
.field{display:grid; gap:.4rem}
.field label{font-family:var(--label); font-size:.63rem; font-weight:700; letter-spacing:.16em; text-transform:uppercase; color:var(--ink-2)}
.field label .req{color:var(--clay)}
.field input,.field textarea{
  font:inherit; font-size:.98rem; color:var(--ink); background:var(--paper-2);
  border:1px solid var(--rule); border-radius:2px; padding:.7rem .8rem; width:100%;
  transition:border-color .25s var(--ease), background .25s var(--ease);
}
.field input:focus,.field textarea:focus{outline:none; border-color:var(--indigo); background:var(--paper)}
.field textarea{min-height:140px; resize:vertical}
.btn{
  display:inline-flex; align-items:center; gap:.7rem; justify-self:start;
  background:var(--ink); color:var(--paper); border:1px solid var(--ink); border-radius:2px; cursor:pointer;
  padding:.85rem 1.5rem; font-family:var(--label); font-size:.7rem; font-weight:700;
  letter-spacing:.17em; text-transform:uppercase; text-decoration:none;
  transition:background .28s var(--ease), color .28s var(--ease);
}
.btn::after{content:"→"; font-size:.95rem; line-height:1}
.btn:hover{background:var(--indigo); border-color:var(--indigo); color:var(--paper)}
.form__note{
  font-size:.84rem; line-height:1.6; color:var(--ink-2); background:var(--marigold-wash);
  border-left:3px solid var(--marigold); padding:.8rem 1rem; margin:0;
}
.form__status{
  font-size:.88rem; line-height:1.6; padding:.8rem 1rem; border-left:3px solid var(--indigo);
  background:var(--indigo-wash); color:var(--ink); margin:0;
}
.form__status[hidden]{display:none}
.err{color:var(--clay); font-size:.8rem; font-family:var(--label); letter-spacing:.04em}
.err[hidden]{display:none}
.field input[aria-invalid="true"],.field textarea[aria-invalid="true"]{border-color:var(--clay); background:var(--clay-wash)}

/* --------------------------------------------------- 26. NEXT-CHAPTER */
.next{border-top:1px solid var(--rule); padding-block:clamp(2rem,4vw,3.2rem)}
.next a{
  display:grid; gap:.5rem; text-decoration:none; color:var(--ink); max-width:640px;
}
.next a:hover .next__t{color:var(--indigo)}
.next__k{font-family:var(--label); font-size:.63rem; font-weight:700; letter-spacing:.18em; text-transform:uppercase; color:var(--ink-3)}
.next__t{font-family:var(--serif); font-size:clamp(1.7rem,4vw,2.8rem); font-weight:600; line-height:1.05; letter-spacing:-.025em; transition:color .3s var(--ease)}
.next__t::after{content:" →"; color:var(--marigold); font-family:var(--sans)}

/* -------------------------------------------------------- 27. FOOTER */
.foot{background:var(--ink); color:var(--lavender-2); padding-block:clamp(3rem,6vw,5rem) 2rem; position:relative; z-index:1}
.foot__mark{display:grid; place-items:center; padding-bottom:2.4rem}
.foot__mark svg{width:min(220px,60vw); height:auto; overflow:visible}
.fm-line{fill:none; stroke:var(--lavender); stroke-width:1; vector-effect:non-scaling-stroke; opacity:.45;
  stroke-dasharray:var(--l,400); stroke-dashoffset:var(--l,400)}
.fm-line.in{animation:fm 1.6s var(--ease) forwards}
.fm-solid{fill:none; stroke:var(--marigold); stroke-width:1.6; vector-effect:non-scaling-stroke;
  stroke-dasharray:var(--l,400); stroke-dashoffset:var(--l,400)}
.fm-solid.in{animation:fm 1.9s var(--ease) .35s forwards}
@keyframes fm{to{stroke-dashoffset:0}}
.foot__name{
  text-align:center; font-family:var(--serif); font-weight:600; color:var(--paper);
  font-size:clamp(1.6rem,4.6vw,2.8rem); letter-spacing:-.02em; line-height:1.05; margin-bottom:.8rem;
}
.foot__tag{
  text-align:center; font-family:var(--label); font-size:.66rem; font-weight:600; letter-spacing:.22em;
  text-transform:uppercase; color:var(--marigold-soft,#E8B94A); line-height:2; margin-bottom:3rem;
}
.foot__grid{display:grid; gap:2.2rem; grid-template-columns:1fr; padding-top:2.2rem; border-top:1px solid rgba(250,249,245,.14)}
@media (min-width:760px){.foot__grid{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr) minmax(0,1fr)}}
.foot h2{font-family:var(--label); font-size:.62rem; font-weight:700; letter-spacing:.2em; text-transform:uppercase; color:var(--lavender); margin-bottom:1rem}
.foot__nav{list-style:none; margin:0; padding:0; columns:2; column-gap:1.4rem}
@media (max-width:420px){.foot__nav{columns:1}}
.foot__nav li{margin-bottom:.45rem; break-inside:avoid}
.foot__nav a{color:var(--lavender-2); text-decoration:none; font-size:.88rem}
.foot__nav a:hover{color:var(--paper); text-decoration:underline; text-decoration-color:var(--marigold)}
.foot__c{display:grid; gap:.6rem}
.foot__c a{color:var(--paper); text-decoration:none; font-size:.95rem; word-break:break-word}
.foot__c a:hover{text-decoration:underline; text-decoration-color:var(--marigold)}
.socials{display:flex; gap:.6rem; flex-wrap:wrap; margin-top:.4rem}
.soc{
  width:36px; height:36px; display:grid; place-items:center; border:1px solid rgba(250,249,245,.24);
  border-radius:2px; color:var(--lavender); opacity:.6;
}
.soc svg{width:16px; height:16px; fill:currentColor}
.socials__note{font-size:.76rem; color:var(--lavender); opacity:.8; margin-top:.7rem; line-height:1.55}
.foot__base{
  margin-top:2.4rem; padding-top:1.4rem; border-top:1px solid rgba(250,249,245,.14);
  display:flex; flex-wrap:wrap; gap:.6rem 1.6rem; justify-content:space-between; align-items:baseline;
  font-size:.8rem; color:var(--lavender);
}
.foot__base a{color:var(--paper)}
.foot__base p{margin:0}

/* -------------------------------------------------------- 28. MISC */
.callout{
  background:var(--paper-2); border-left:3px solid var(--indigo); padding:1.2rem 1.3rem; margin:2rem 0;
}
.callout b{display:block; font-family:var(--label); font-size:.62rem; font-weight:700; letter-spacing:.17em; text-transform:uppercase; color:var(--indigo); margin-bottom:.45rem}
.callout p{margin:0; font-size:.94rem; line-height:1.65; color:var(--ink-2)}
.callout--gold{border-left-color:var(--marigold)}
.callout--gold b{color:var(--marigold-ink)}
.callout--clay{border-left-color:var(--clay)}
.callout--clay b{color:var(--clay)}

.facts{list-style:none; margin:2rem 0 0; padding:0; display:grid; gap:1px; background:var(--rule-soft); border:1px solid var(--rule-soft)}
@media (min-width:620px){.facts{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:1000px){.facts{grid-template-columns:repeat(4,minmax(0,1fr))}}
.facts li{background:var(--paper); padding:1.1rem 1.1rem 1.25rem; display:grid; gap:.3rem}
.facts b{font-family:var(--label); font-size:.6rem; font-weight:700; letter-spacing:.17em; text-transform:uppercase; color:var(--ink-3)}
.facts span{font-family:var(--serif); font-size:1.16rem; font-weight:600; line-height:1.25; color:var(--ink)}
.facts em{font-style:normal; font-size:.85rem; color:var(--ink-2); line-height:1.5}

.srcbox{margin-top:3rem; padding-top:1.5rem; border-top:1px solid var(--rule)}
.srcbox ul{list-style:none; margin:.9rem 0 0; padding:0; display:grid; gap:.5rem}
.srcbox li{font-size:.84rem; line-height:1.55; color:var(--ink-2); padding-left:1.1rem; position:relative}
.srcbox li::before{content:""; position:absolute; left:0; top:.62em; width:6px; height:1px; background:var(--marigold)}

/* ------------------------------------------------ 29. REDUCED MOTION */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{
    animation-duration:.001ms!important; animation-iteration-count:1!important;
    transition-duration:.001ms!important; scroll-behavior:auto!important;
  }
  .js [data-rise]{opacity:1!important; transform:none!important}
  .dg-link,.fm-line,.fm-solid{stroke-dashoffset:0!important}
  .trace__draw{transform:scaleY(1)!important; opacity:.45}
}

/* ------------------------------------------------------ 30. PRINT */
@media print{
  .topnav,.menu,.trace,.next,.lb{display:none!important}
  body::before,body::after{display:none}
  .foot{background:#fff; color:#000}
  a{color:#000}
}

/* ------------------------------------------- 31. NO-JAVASCRIPT FALLBACK */
/* Every disclosure is open and every reveal is visible without scripting.
   The controls that would toggle them are hidden, since they would do nothing. */
html:not(.js) .stage__hint,
html:not(.js) .row__x,
html:not(.js) .filters,
html:not(.js) [data-count],
html:not(.js) .idx-btn{display:none}
html:not(.js) .stage__btn,
html:not(.js) .row__btn{cursor:default}
html:not(.js) .pr__list{margin-bottom:1.5rem}
html:not(.js) .pr__panel{margin-bottom:1.2rem; position:static}
html:not(.js) .topnav__nav{display:block}
html:not(.js) .tnav{flex-wrap:wrap; justify-content:flex-start}
html:not(.js) .topnav{position:static}
