/* ─────────────────────────────────────────────────
   Glimmering Hope · The Codex
   Shared stylesheet — master dossier + chapter pages
───────────────────────────────────────────────── */

:root{
  --ink:#08070d; --ink-2:#0f0d18; --ink-3:#181425;
  --vellum:#ebe2c9; --vellum-2:#c5b691; --vellum-3:#8e7f5d;
  --gold:#d8b25a; --gold-bright:#f3d685; --gold-deep:#7a5b1e;
  --rule:rgba(216,178,90,.28);
  --rule-soft:rgba(216,178,90,.12);
  --fungal:#b8a4ff; --fungal-deep:#7a5fe6;
  --water:#7fd4f5; --water-deep:#3a8cb8;
  --ember:#ff8a5c; --ember-deep:#c9582d;
  --spore:#7fd4b3;
  --rune:#f3d685;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{background:var(--ink);color:var(--vellum);font-family:'Cormorant Garamond',serif;font-size:18px;line-height:1.7;-webkit-font-smoothing:antialiased}
body{
  background:
    radial-gradient(ellipse 1200px 700px at 50% -10%, rgba(216,178,90,.10), transparent 60%),
    radial-gradient(ellipse 800px 500px at 90% 80%, rgba(184,164,255,.06), transparent 60%),
    radial-gradient(ellipse 600px 400px at 5% 60%, rgba(127,212,245,.05), transparent 60%),
    var(--ink);
  background-attachment:fixed;
  min-height:100vh;
  overflow-x:hidden;
}

/* per-act atmospheres on chapter pages */
body.act-1{
  background:
    radial-gradient(ellipse 1200px 700px at 50% -10%, rgba(184,164,255,.18), transparent 60%),
    radial-gradient(ellipse 900px 600px at 80% 90%, rgba(122,95,230,.08), transparent 70%),
    radial-gradient(ellipse 600px 400px at 10% 60%, rgba(216,178,90,.06), transparent 60%),
    var(--ink);
  background-attachment:fixed;
}
body.act-2{
  background:
    radial-gradient(ellipse 1200px 700px at 50% -10%, rgba(127,212,245,.16), transparent 60%),
    radial-gradient(ellipse 900px 600px at 80% 90%, rgba(58,140,184,.10), transparent 70%),
    radial-gradient(ellipse 600px 400px at 10% 60%, rgba(216,178,90,.06), transparent 60%),
    var(--ink);
  background-attachment:fixed;
}
body.act-3{
  background:
    radial-gradient(ellipse 1200px 700px at 50% -10%, rgba(255,138,92,.18), transparent 60%),
    radial-gradient(ellipse 900px 600px at 80% 90%, rgba(201,88,45,.12), transparent 70%),
    radial-gradient(ellipse 600px 400px at 10% 60%, rgba(216,178,90,.06), transparent 60%),
    var(--ink);
  background-attachment:fixed;
}

/* —— ANIMATION FX —— */
@keyframes floatUp{from{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}
@keyframes goldSheen{0%,100%{background-position:0% 50%}50%{background-position:100% 50%}}
@keyframes flicker{0%,100%{opacity:.85}45%{opacity:1}50%{opacity:.6}55%{opacity:.95}}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes shimmer{0%{transform:translateX(-100%) skewX(-20deg)}100%{transform:translateX(300%) skewX(-20deg)}}
@keyframes lineGrow{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes gemPulse{0%,100%{box-shadow:0 0 24px rgba(243,214,133,.55), inset 0 0 6px rgba(255,255,255,.6)}50%{box-shadow:0 0 36px rgba(243,214,133,.85), inset 0 0 10px rgba(255,255,255,.8)}}
@keyframes embAura{0%,100%{box-shadow:0 0 12px var(--ember),0 0 28px rgba(255,138,92,.4)}50%{box-shadow:0 0 22px var(--ember),0 0 48px rgba(255,138,92,.7)}}
@keyframes glide{from{opacity:0;transform:translateY(40px)}to{opacity:1;transform:translateY(0)}}
@keyframes pulse{0%,100%{opacity:.6;transform:translateY(-50%) scale(.9)}50%{opacity:1;transform:translateY(-50%) scale(1.1)}}

.reveal{opacity:0}
.reveal.in{animation:glide .9s cubic-bezier(.2,.65,.25,1) both}

/* particles canvas */
#particles{position:fixed;inset:0;z-index:0;pointer-events:none;mix-blend-mode:screen;opacity:.7}

body::before{
  content:"";position:fixed;inset:0;pointer-events:none;z-index:0;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='220' height='220'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2'/><feColorMatrix values='0 0 0 0 0.85  0 0 0 0 0.7  0 0 0 0 0.35  0 0 0 0 0.05 0'/></filter><rect width='220' height='220' filter='url(%23n)'/></svg>");
  opacity:.45;mix-blend-mode:overlay;
}
.wrap{max-width:1180px;margin:0 auto;padding:48px 56px;position:relative;z-index:1}

/* —— DISPLAY TYPE —— */
.smallcaps{font-family:'IM Fell English SC',serif;letter-spacing:.18em;text-transform:uppercase;font-size:11px;color:var(--gold)}
.mono{font-family:'JetBrains Mono',monospace;font-size:11px;letter-spacing:.04em}

/* —— TOP RAIL —— */
.toprail{
  position:sticky;top:0;z-index:9;
  background:linear-gradient(180deg,rgba(8,7,13,.95),rgba(8,7,13,.6));
  border-bottom:1px solid var(--rule);
  padding:14px 56px;display:flex;justify-content:space-between;align-items:center;gap:24px;
  backdrop-filter:blur(8px);
  font-family:'IM Fell English SC',serif;letter-spacing:.18em;font-size:11px;text-transform:uppercase;
}
.toprail a{color:var(--gold);text-decoration:none;transition:color .25s}
.toprail a:hover{color:var(--gold-bright)}
.toprail .crumb-name{color:var(--vellum)}
.toprail .sep{color:var(--vellum-3);margin:0 10px}

/* —— BANNER —— */
.banner{
  position:relative;text-align:center;padding:80px 24px 64px;margin-top:24px;
  border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);
}
.banner::before,.banner::after{
  content:"";position:absolute;left:50%;transform:translateX(-50%);
  width:520px;max-width:90%;height:14px;
  background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 520 14'><g fill='none' stroke='%23d8b25a' stroke-width='.8'><path d='M0 7 H230 M290 7 H520'/><circle cx='260' cy='7' r='4'/><circle cx='260' cy='7' r='1.5' fill='%23d8b25a'/><path d='M236 7 l-6 -3 M236 7 l-6 3'/><path d='M284 7 l6 -3 M284 7 l6 3'/></g></svg>") center/contain no-repeat;
  opacity:.85;
}
.banner::before{top:18px}
.banner::after{bottom:18px;transform:translateX(-50%) scaleY(-1)}
.banner h1{
  font-family:'Cormorant SC',serif;font-weight:600;
  font-size:96px;line-height:1;letter-spacing:.05em;
  background:linear-gradient(110deg,#fff7e2 0%,var(--gold-bright) 25%,#fff8dc 40%,var(--gold-bright) 55%,var(--gold-deep) 100%);
  background-size:200% 100%;
  -webkit-background-clip:text;background-clip:text;color:transparent;
  text-shadow:0 0 40px rgba(243,214,133,.25);
  margin:18px 0 14px;
  position:relative;
  animation:goldSheen 9s ease-in-out infinite, floatUp 1.4s cubic-bezier(.2,.65,.25,1) both;
}
.hero-tilt{will-change:transform;transition:transform .3s cubic-bezier(.2,.65,.25,1)}
.banner .lede{
  max-width:680px;margin:0 auto;font-size:21px;color:var(--vellum-2);
  font-style:italic;line-height:1.5;
}
.banner .meta{
  display:flex;justify-content:center;gap:36px;margin-top:36px;
  font-family:'IM Fell English SC',serif;letter-spacing:.18em;font-size:12px;color:var(--gold);
  flex-wrap:wrap;
}
.banner .meta b{color:var(--vellum);font-weight:400;font-size:18px;font-family:'Cormorant SC',serif;letter-spacing:.04em;display:block;margin-top:4px}

/* —— GEM ROSETTE —— */
.rosette{display:flex;justify-content:center;gap:14px;margin:32px 0 0}
.gem{
  width:34px;height:34px;transform:rotate(45deg);border:1px solid var(--rule);
  position:relative;background:rgba(255,255,255,.02);
  transition:transform .35s cubic-bezier(.2,.65,.25,1);
}
.gem::after{content:"";position:absolute;inset:5px;border:1px solid var(--rule-soft)}
.gem:hover{transform:rotate(45deg) scale(1.18)}
.gem.lit{
  background:radial-gradient(circle at 35% 35%,#fff7e2,var(--gold-bright) 30%,var(--gold-deep) 90%);
  box-shadow:0 0 24px rgba(243,214,133,.55), inset 0 0 6px rgba(255,255,255,.6);
  border-color:var(--gold-bright);
  animation:gemPulse 3.6s ease-in-out infinite;
}
.gem.lit::before{
  content:"";position:absolute;inset:-2px;
  background:conic-gradient(from 0deg,transparent,rgba(255,255,255,.3),transparent 30%);
  animation:spin 8s linear infinite;
  pointer-events:none;
}
.gem.lit.water{background:radial-gradient(circle at 35% 35%,#dff5ff,var(--water) 30%,var(--water-deep) 90%);box-shadow:0 0 24px rgba(127,212,245,.55), inset 0 0 6px rgba(255,255,255,.6);border-color:var(--water);animation-duration:4.2s;animation-delay:-1s}
.gem.lit.fire{background:radial-gradient(circle at 35% 35%,#ffd9c2,var(--ember) 30%,var(--ember-deep) 90%);box-shadow:0 0 24px rgba(255,138,92,.55), inset 0 0 6px rgba(255,255,255,.6);border-color:var(--ember);animation-duration:3s;animation-delay:-.5s}
.rosette-label{text-align:center;margin-top:14px;color:var(--vellum-3);font-family:'IM Fell English SC',serif;letter-spacing:.18em;font-size:11px}

/* arcane runes */
.runes{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.runes span{position:absolute;font-family:'Cormorant SC',serif;color:var(--gold);opacity:.18;font-size:24px;animation:floatUp 8s ease-in-out infinite}
.runes span:nth-child(1){top:12%;left:8%;animation-delay:0s;font-size:34px}
.runes span:nth-child(2){top:22%;right:10%;animation-delay:1.2s;color:var(--fungal)}
.runes span:nth-child(3){bottom:18%;left:14%;animation-delay:2.4s;color:var(--water)}
.runes span:nth-child(4){bottom:24%;right:18%;animation-delay:3.6s;color:var(--ember);font-size:30px}
.runes span:nth-child(5){top:50%;left:4%;animation-delay:4s;font-size:18px}
.runes span:nth-child(6){top:60%;right:6%;animation-delay:5s;font-size:22px;color:var(--fungal)}

/* —— SECTION TITLES —— */
.section{margin:96px 0 0}
.sect-title{text-align:center;margin-bottom:48px}
.sect-title h2{
  font-family:'Cormorant SC',serif;font-weight:600;font-size:42px;letter-spacing:.06em;
  color:var(--vellum);margin:8px 0 6px;
}
.sect-title .eyebrow{color:var(--gold);font-family:'IM Fell English SC',serif;letter-spacing:.3em;font-size:11px;text-transform:uppercase}

/* —— ACT INTRO BLOCKS —— */
.act-intro{
  display:grid;grid-template-columns:auto 1fr auto;gap:32px;align-items:center;
  border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);
  padding:28px 0;margin:48px 0 24px;
}
.act-intro .roman{font-family:'Cormorant SC',serif;font-size:64px;font-weight:500;line-height:1;letter-spacing:.05em}
.act-intro h3{font-family:'Cormorant SC',serif;font-size:34px;font-weight:500;letter-spacing:.04em;margin-bottom:6px}
.act-intro .desc{color:var(--vellum-2);font-style:italic;max-width:640px;line-height:1.5}
.act-intro .range{color:var(--vellum-3);font-family:'JetBrains Mono',monospace;font-size:11px;letter-spacing:.1em;text-align:right}
.act-intro.act-1 .roman,.act-intro.act-1 h3{color:var(--fungal)}
.act-intro.act-2 .roman,.act-intro.act-2 h3{color:var(--water)}
.act-intro.act-3 .roman,.act-intro.act-3 h3{color:var(--ember)}

/* —— SESSION INDEX —— */
.toc{display:grid;grid-template-columns:1fr 1fr;gap:0 56px;font-size:17px}
.toc-row{
  display:grid;grid-template-columns:42px 1fr auto;gap:14px;align-items:baseline;
  padding:14px 0;border-bottom:1px dotted var(--rule-soft);
  text-decoration:none;color:var(--vellum);transition:all .25s;
  position:relative;overflow:hidden;
}
.toc-row::after{
  content:"";position:absolute;left:0;top:0;bottom:0;width:0;
  background:linear-gradient(90deg,rgba(216,178,90,.10),transparent);
  transition:width .45s cubic-bezier(.2,.65,.25,1);z-index:-1;
}
.toc-row:hover{color:var(--gold-bright);padding-left:6px}
.toc-row:hover::after{width:100%}
.toc-row .title{transition:letter-spacing .3s;font-family:'Cormorant SC',serif;font-weight:500;letter-spacing:.02em;font-size:18px}
.toc-row:hover .title{letter-spacing:.05em}
.toc-row .num{font-family:'IM Fell English SC',serif;color:var(--vellum-3);font-size:12px;letter-spacing:.1em;text-align:right}
.toc-row .pill{font-family:'JetBrains Mono',monospace;font-size:9px;letter-spacing:.15em;text-transform:uppercase;padding:3px 8px;border:1px solid var(--rule);color:var(--vellum-3);background:rgba(0,0,0,.25)}
.toc-row.act-1 .num{color:var(--fungal)}
.toc-row.act-2 .num{color:var(--water)}
.toc-row.act-3 .num{color:var(--ember)}
.toc-row.heat-current{background:linear-gradient(90deg,rgba(255,138,92,.10),transparent 70%);border-bottom-color:var(--ember)}
.toc-row.heat-current::before{content:"";position:absolute;left:-22px;top:50%;width:8px;height:8px;border-radius:50%;background:var(--ember);box-shadow:0 0 12px var(--ember);transform:translateY(-50%);animation:pulse 2.4s ease-in-out infinite}
.toc-row.heat-warm{opacity:.95}
.toc-row.heat-cool{opacity:.7}
.toc-row.heat-cold{opacity:.5}

/* —— LAST SESSION PIN —— */
.pin{
  position:relative;border:1px solid var(--rule);
  background:linear-gradient(180deg,rgba(255,138,92,.06),rgba(0,0,0,.3));
  padding:28px 32px;margin:24px 0 8px;
  text-decoration:none;color:inherit;display:block;
  transition:border-color .4s,transform .4s;
}
.pin::before{content:"";position:absolute;top:-8px;left:32px;width:14px;height:14px;background:var(--ember);transform:rotate(45deg);animation:embAura 2.8s ease-in-out infinite}
.pin:hover{border-color:rgba(255,138,92,.5);transform:translateY(-2px)}
.pin::after{content:"";position:absolute;left:0;right:0;top:0;height:2px;background:linear-gradient(90deg,transparent,var(--ember),transparent);background-size:200% 100%;animation:goldSheen 5s linear infinite;opacity:.6}
.pin .label{color:var(--ember);font-family:'IM Fell English SC',serif;letter-spacing:.3em;font-size:11px;text-transform:uppercase;margin-bottom:6px}
.pin .title{font-family:'Cormorant SC',serif;font-weight:600;font-size:30px;color:var(--vellum)}
.pin .meta{font-family:'JetBrains Mono',monospace;font-size:11px;color:var(--vellum-3);margin-top:8px;letter-spacing:.05em}
.pin .lede{margin-top:14px;color:var(--vellum-2);font-style:italic;max-width:720px}

/* —— SEARCH/FILTER strip —— */
.filterbar{display:flex;gap:14px;align-items:center;justify-content:center;flex-wrap:wrap;margin:0 0 32px;padding:14px 18px;border-top:1px solid var(--rule-soft);border-bottom:1px solid var(--rule-soft)}
.filterbar input{background:transparent;border:none;border-bottom:1px solid var(--rule);color:var(--vellum);font-family:'Cormorant Garamond',serif;font-size:16px;padding:6px 10px;width:280px;outline:none}
.filterbar input::placeholder{color:var(--vellum-3);font-style:italic}
.chip{font-family:'IM Fell English SC',serif;letter-spacing:.18em;font-size:11px;text-transform:uppercase;padding:6px 12px;border:1px solid var(--rule);color:var(--vellum-2);cursor:pointer;background:transparent}
.chip.on{background:rgba(216,178,90,.12);color:var(--gold-bright);border-color:var(--gold)}
.chip:hover{color:var(--gold-bright)}

/* —— TABS (master dossier nav) —— */
.tabs{display:flex;justify-content:center;gap:0;flex-wrap:wrap;margin:48px 0 24px;border-top:1px solid var(--rule-soft);border-bottom:1px solid var(--rule-soft);padding:6px 0}
.tab{
  background:transparent;border:none;padding:14px 22px;cursor:pointer;
  font-family:'IM Fell English SC',serif;letter-spacing:.22em;font-size:11px;text-transform:uppercase;
  color:var(--vellum-3);transition:all .25s;position:relative;
}
.tab:hover{color:var(--gold-bright)}
.tab.active{color:var(--gold-bright)}
.tab.active::after{content:"";position:absolute;left:18%;right:18%;bottom:-1px;height:2px;background:linear-gradient(90deg,transparent,var(--gold) 30%,var(--gold) 70%,transparent)}
.panel{display:none}
.panel.active{display:block;animation:floatUp .6s cubic-bezier(.2,.65,.25,1) both}

/* —— STAT GRID —— */
.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:24px;margin:32px 0}
.stat{border:1px solid var(--rule);padding:22px 24px;text-align:center;background:rgba(0,0,0,.18);transition:transform .3s, border-color .3s}
.stat:hover{border-color:var(--gold);transform:translateY(-3px)}
.stat .stat-label{font-family:'IM Fell English SC',serif;letter-spacing:.22em;font-size:10px;text-transform:uppercase;color:var(--gold)}
.stat .stat-value{font-family:'Cormorant SC',serif;font-size:48px;font-weight:600;color:var(--vellum);margin:8px 0 4px;line-height:1}
.stat .stat-sub{color:var(--vellum-3);font-size:13px;font-style:italic}

/* —— PROSE BLOCKS —— */
.prose{max-width:780px;margin:0 auto;font-size:19px;line-height:1.8;color:var(--vellum)}
.prose p{margin-bottom:1.2em;text-wrap:pretty}
.prose em{color:var(--gold-bright);font-style:italic}
.prose strong{color:var(--vellum);font-weight:600}
.prose .pullquote{text-align:center;margin:32px 0;font-style:italic;color:var(--gold-bright);font-family:'Cormorant SC',serif;font-size:22px;letter-spacing:.02em}

/* —— CARD GRID (Cast / NPCs) —— */
.card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:24px;margin-top:32px}
.npc{
  border:1px solid var(--rule);background:rgba(0,0,0,.22);padding:22px 24px;
  transition:transform .3s,border-color .3s;
  position:relative;
}
.npc:hover{transform:translateY(-3px);border-color:var(--gold)}
.npc-head{display:flex;align-items:center;gap:14px;margin-bottom:12px}
.avatar{
  width:48px;height:48px;display:flex;align-items:center;justify-content:center;
  font-family:'Cormorant SC',serif;font-weight:600;font-size:18px;letter-spacing:.05em;
  border:1px solid var(--rule);background:rgba(0,0,0,.3);color:var(--vellum);
  flex-shrink:0;
}
.avatar.fungal{background:rgba(184,164,255,.10);color:var(--fungal);border-color:rgba(184,164,255,.4)}
.avatar.water{background:rgba(127,212,245,.10);color:var(--water);border-color:rgba(127,212,245,.4)}
.avatar.ember{background:rgba(255,138,92,.10);color:var(--ember);border-color:rgba(255,138,92,.4)}
.avatar.rune{background:rgba(243,214,133,.10);color:var(--gold-bright);border-color:rgba(243,214,133,.4)}
.avatar.spore{background:rgba(127,212,179,.10);color:var(--spore);border-color:rgba(127,212,179,.4)}
.npc-name{font-family:'Cormorant SC',serif;font-weight:600;font-size:20px;color:var(--vellum)}
.npc-role{font-family:'IM Fell English SC',serif;font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--gold);margin-top:2px}
.npc-desc{color:var(--vellum-2);font-size:15px;line-height:1.6;margin-top:8px}
.status{
  display:inline-block;margin-top:10px;font-family:'JetBrains Mono',monospace;
  font-size:9px;letter-spacing:.18em;text-transform:uppercase;padding:3px 10px;
  border:1px solid var(--rule);background:rgba(0,0,0,.3);color:var(--vellum-3);
}
.status.alive{border-color:var(--spore);color:var(--spore)}
.status.ally{border-color:var(--water);color:var(--water)}
.status.enemy{border-color:var(--ember);color:var(--ember)}
.status.mystery{border-color:var(--fungal);color:var(--fungal)}

/* —— ARCS / THREADS —— */
.arc{border-left:2px solid var(--rule);padding:18px 22px 18px 26px;margin:18px 0;background:linear-gradient(90deg,rgba(216,178,90,.04),transparent 60%);position:relative}
.arc.hot{border-left-color:var(--ember);background:linear-gradient(90deg,rgba(255,138,92,.07),transparent 60%)}
.arc.ongoing{border-left-color:var(--gold);background:linear-gradient(90deg,rgba(216,178,90,.05),transparent 60%)}
.arc.dormant{border-left-color:var(--fungal);background:linear-gradient(90deg,rgba(184,164,255,.04),transparent 60%);opacity:.85}
.arc-head{display:flex;justify-content:space-between;align-items:baseline;flex-wrap:wrap;gap:12px;margin-bottom:6px}
.arc-name{font-family:'Cormorant SC',serif;font-weight:600;font-size:22px;color:var(--vellum)}
.arc-status{font-family:'IM Fell English SC',serif;letter-spacing:.22em;font-size:10px;text-transform:uppercase;color:var(--gold)}
.arc.hot .arc-status{color:var(--ember)}
.arc.dormant .arc-status{color:var(--fungal)}
.arc-sessions{font-family:'JetBrains Mono',monospace;font-size:11px;color:var(--vellum-3);margin-bottom:10px;letter-spacing:.05em}
.arc-sessions a{color:var(--gold);text-decoration:none;border-bottom:1px dotted var(--rule)}
.arc-sessions a:hover{color:var(--gold-bright)}
.arc-desc{color:var(--vellum-2);line-height:1.6;font-size:16px}
.arc-beats{margin-top:10px;font-size:14px;color:var(--vellum-3);font-style:italic}
.arc-beats strong{color:var(--gold-bright);font-style:normal;font-weight:600}

/* —— CLUE BOXES (mysteries) —— */
.clue{border:1px solid var(--rule);padding:18px 22px;margin:14px 0;background:rgba(0,0,0,.22);position:relative}
.clue.hot{border-color:rgba(255,138,92,.35)}
.clue.dormant{border-color:rgba(184,164,255,.2);opacity:.92}
.clue.cold{border-color:rgba(216,178,90,.15);opacity:.7}
.clue-title{font-family:'Cormorant SC',serif;font-weight:600;font-size:20px;color:var(--vellum);display:flex;justify-content:space-between;align-items:baseline;gap:14px;flex-wrap:wrap}
.clue-title .priority{font-family:'IM Fell English SC',serif;font-size:10px;letter-spacing:.22em;color:var(--gold)}
.clue.hot .priority{color:var(--ember)}
.clue.dormant .priority{color:var(--fungal)}
.clue.cold .priority{color:var(--vellum-3)}
.clue-body{margin-top:8px;color:var(--vellum-2);font-size:16px;line-height:1.6}
.clue-body em{color:var(--gold-bright);font-style:italic}

/* —— GAP NOTICE —— */
.gap-notice{
  border:1px dashed var(--rule);padding:18px 22px;margin:32px 0;text-align:center;
  background:rgba(0,0,0,.18);color:var(--vellum-2);font-style:italic;
}
.gap-notice strong{display:block;font-family:'IM Fell English SC',serif;letter-spacing:.3em;font-size:11px;text-transform:uppercase;color:var(--gold);font-style:normal;margin-bottom:6px}

/* ─────────────────────────────────────────────────
   SESSION DETAIL — chapter spread
───────────────────────────────────────────────── */
.chapter{padding-top:32px;position:relative}
.chapter .crumb{text-align:center;color:var(--vellum-3);font-family:'IM Fell English SC',serif;letter-spacing:.3em;font-size:11px;text-transform:uppercase;margin-bottom:18px}
.chapter .crumb a{color:var(--gold);text-decoration:none}
.chapter .crumb a:hover{color:var(--gold-bright)}
.chapter .roman-no{text-align:center;font-family:'Cormorant SC',serif;font-size:18px;color:var(--gold);letter-spacing:.4em;margin-bottom:8px}
.chapter.act-1 .roman-no{color:var(--fungal)}
.chapter.act-2 .roman-no{color:var(--water)}
.chapter.act-3 .roman-no{color:var(--ember)}
.chapter h1.chapter-title{
  font-family:'Cormorant SC',serif;font-weight:500;font-size:72px;line-height:1.05;letter-spacing:.03em;
  text-align:center;color:var(--vellum);margin:0 auto 18px;max-width:900px;
  background:linear-gradient(110deg,#fff7e2 0%,var(--gold-bright) 25%,#fff8dc 40%,var(--gold-bright) 55%,var(--gold-deep) 100%);
  background-size:200% 100%;
  -webkit-background-clip:text;background-clip:text;color:transparent;
  animation:goldSheen 12s ease-in-out infinite;
}
.chapter .stand{text-align:center;color:var(--vellum-2);font-style:italic;font-size:21px;line-height:1.5;max-width:680px;margin:0 auto 36px}
.chapter .factbar{display:grid;grid-template-columns:repeat(3,1fr);gap:0;border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);padding:18px 0;text-align:center;margin-bottom:48px}
.chapter .factbar > div{padding:0 24px;border-right:1px solid var(--rule-soft)}
.chapter .factbar > div:last-child{border-right:0}
.chapter .factbar .lab{color:var(--gold);font-family:'IM Fell English SC',serif;letter-spacing:.2em;font-size:10px;text-transform:uppercase}
.chapter .factbar .val{font-family:'Cormorant SC',serif;font-size:16px;color:var(--vellum);margin-top:4px;line-height:1.3}

.chapter-body{display:grid;grid-template-columns:1fr;gap:32px;align-items:start;max-width:780px;margin:0 auto}
.chapter-body .col{font-size:19px;line-height:1.78;color:var(--vellum)}
.chapter-body .col p{margin-bottom:1.2em;text-wrap:pretty}
.chapter-body .col p.lede::first-letter,
.chapter-body .col > p:first-of-type::first-letter{
  font-family:'Cormorant SC',serif;font-weight:600;font-size:88px;line-height:.85;float:left;
  background:linear-gradient(135deg,#fff7e2 0%,var(--gold-bright) 35%,#fff8dc 50%,var(--gold-bright) 65%,var(--gold-deep) 100%);
  background-size:200% 200%;
  -webkit-background-clip:text;background-clip:text;color:transparent;
  padding:6px 14px 0 0;margin-top:6px;
  text-shadow:0 0 22px rgba(243,214,133,.45);
  animation:goldSheen 6s ease-in-out infinite;
}

.chapter h3.chap-h{
  font-family:'IM Fell English SC',serif;font-size:14px;letter-spacing:.3em;text-transform:uppercase;
  color:var(--gold);margin:48px 0 14px;display:flex;align-items:center;gap:14px;
}
.chapter h3.chap-h::before,.chapter h3.chap-h::after{content:"";flex:1;height:1px;background:linear-gradient(90deg,transparent,var(--rule),transparent);max-width:120px}

.chapter ul.chap-list{list-style:none;padding:0;margin:0 0 24px;max-width:780px;margin-left:auto;margin-right:auto}
.chapter ul.chap-list li{padding:10px 0 10px 28px;position:relative;border-bottom:1px dotted var(--rule-soft);color:var(--vellum)}
.chapter ul.chap-list li::before{content:"❧";position:absolute;left:0;top:9px;color:var(--gold);font-size:18px}

.chapter blockquote.chap-quote{
  max-width:720px;margin:24px auto;
  border-left:2px solid var(--gold);padding:6px 0 6px 22px;
  font-style:italic;color:var(--vellum);font-size:22px;line-height:1.5;
}
.chapter blockquote.chap-quote .by{display:block;margin-top:8px;font-style:normal;font-family:'IM Fell English SC',serif;font-size:11px;letter-spacing:.25em;color:var(--gold);text-transform:uppercase}

/* ornate chapter divider */
.chap-divider{display:flex;align-items:center;justify-content:center;margin:48px auto;color:var(--gold);max-width:520px}
.chap-divider .l{flex:1;height:1px;background:linear-gradient(90deg,transparent,var(--gold) 30%,var(--gold) 70%,transparent)}
.chap-divider .core{margin:0 18px;font-size:18px;color:var(--gold-bright);letter-spacing:.4em}

/* per-act chapter title accents */
.chapter.act-1 .factbar{border-color:rgba(184,164,255,.35)}
.chapter.act-1 .stand{color:#dcd0ff}
.chapter.act-2 .factbar{border-color:rgba(127,212,245,.35)}
.chapter.act-2 .stand{color:#cbecfb}
.chapter.act-3 .factbar{border-color:rgba(255,138,92,.35)}
.chapter.act-3 .stand{color:#ffd4be}

/* —— PREV/NEXT NAV —— */
.prev-next{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin:80px auto 0;max-width:880px}
.pn-link{
  display:block;padding:22px 26px;text-decoration:none;color:var(--vellum);
  border:1px solid var(--rule);background:rgba(0,0,0,.22);transition:transform .3s,border-color .3s;
}
.pn-link:hover{transform:translateY(-3px);border-color:var(--gold)}
.pn-link.next{text-align:right}
.pn-link .lab{font-family:'IM Fell English SC',serif;letter-spacing:.22em;font-size:10px;text-transform:uppercase;color:var(--gold);margin-bottom:6px}
.pn-link .ti{font-family:'Cormorant SC',serif;font-weight:500;font-size:22px;color:var(--vellum)}
.pn-link.disabled{opacity:.35;pointer-events:none}

/* —— COLOPHON —— */
.colophon{text-align:center;margin-top:96px;padding:36px 0 80px;border-top:1px solid var(--rule-soft);color:var(--vellum-3);font-family:'IM Fell English SC',serif;letter-spacing:.3em;font-size:11px}
.colophon .glyphs{font-size:18px;color:var(--gold);margin-bottom:14px;letter-spacing:.6em}

/* —— DASHBOARD: LIVE STATUS STRIP —— */
.livestrip{
  display:grid;grid-template-columns:auto 1fr auto auto;gap:28px;align-items:center;
  border:1px solid var(--rule);background:linear-gradient(90deg,rgba(255,138,92,.08),rgba(0,0,0,.3) 60%);
  padding:24px 28px;margin:24px 0 48px;text-decoration:none;color:inherit;
  position:relative;overflow:hidden;transition:border-color .35s,transform .35s;
}
.livestrip:hover{border-color:rgba(255,138,92,.5);transform:translateY(-2px)}
.livestrip::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--ember);box-shadow:0 0 18px var(--ember)}
.livestrip::after{content:"";position:absolute;left:0;right:0;top:0;height:1px;background:linear-gradient(90deg,transparent,var(--ember),transparent);background-size:200% 100%;animation:goldSheen 5s linear infinite;opacity:.7}
.ls-pulse{width:14px;height:14px;border-radius:50%;background:var(--ember);box-shadow:0 0 18px var(--ember);animation:pulse 1.8s ease-in-out infinite;flex-shrink:0;position:relative;top:0}
.ls-eyebrow{color:var(--ember);font-family:'IM Fell English SC',serif;letter-spacing:.28em;font-size:11px;text-transform:uppercase}
.ls-title{font-family:'Cormorant SC',serif;font-weight:600;font-size:28px;color:var(--vellum);margin:6px 0 8px}
.ls-lede{color:var(--vellum-2);font-style:italic;font-size:15px;max-width:560px;line-height:1.5}
.ls-pending{border-left:1px solid var(--rule);padding-left:24px}
.ls-pending .lsp-lab{font-family:'IM Fell English SC',serif;letter-spacing:.22em;font-size:10px;text-transform:uppercase;color:var(--gold);margin-bottom:8px}
.ls-pending ul{list-style:none;font-size:14px;color:var(--vellum);line-height:1.9}
.ls-pending li{display:flex;align-items:center;gap:10px}
.ls-pending .dot{width:6px;height:6px;border-radius:50%;background:var(--gold);flex-shrink:0}
.ls-pending .dot.ember{background:var(--ember);box-shadow:0 0 8px var(--ember)}
.ls-cta{font-family:'IM Fell English SC',serif;letter-spacing:.22em;font-size:11px;text-transform:uppercase;color:var(--gold)}
.livestrip:hover .ls-cta{color:var(--gold-bright)}

/* —— TIMELINE RIBBON —— */
.timeline-section{margin:48px 0 56px}
.ts-head{display:flex;justify-content:space-between;align-items:baseline;flex-wrap:wrap;gap:12px;margin-bottom:18px}
.ts-title{font-family:'Cormorant SC',serif;font-size:20px;color:var(--vellum);letter-spacing:.04em}
.ts-legend{display:flex;gap:20px;font-family:'IM Fell English SC',serif;letter-spacing:.18em;font-size:10px;text-transform:uppercase;color:var(--vellum-3)}
.ts-legend .lg{display:flex;align-items:center;gap:8px}
.ts-legend .dot{width:8px;height:8px;border-radius:50%}
.ts-legend .lg.act-1 .dot{background:var(--fungal);box-shadow:0 0 8px rgba(184,164,255,.6)}
.ts-legend .lg.act-2 .dot{background:var(--water);box-shadow:0 0 8px rgba(127,212,245,.6)}
.ts-legend .lg.act-3 .dot{background:var(--ember);box-shadow:0 0 8px var(--ember)}

.timeline-scroll{overflow-x:auto;overflow-y:visible;padding:24px 0 32px;border-top:1px solid var(--rule-soft);border-bottom:1px solid var(--rule-soft);background:linear-gradient(180deg,rgba(0,0,0,.15),transparent);position:relative}
.timeline-ribbon{display:flex;align-items:center;gap:0;min-width:max-content;padding:0 24px;position:relative}
.timeline-ribbon .trail{position:absolute;left:24px;right:24px;top:50%;height:1px;background:linear-gradient(90deg,rgba(184,164,255,.5) 0%,rgba(184,164,255,.5) 33%,rgba(127,212,245,.5) 33%,rgba(127,212,245,.5) 80%,rgba(255,138,92,.5) 88%,rgba(255,138,92,.5) 100%);transform:translateY(-50%);z-index:0}
.tband{display:flex;gap:18px;align-items:center;position:relative;z-index:1}
.tband-gap{width:60px;height:1px;border-top:2px dashed rgba(216,178,90,.4);margin:0 14px;align-self:center;position:relative;cursor:help}
.tband-gap::after{content:"records gap";position:absolute;top:-22px;left:50%;transform:translateX(-50%);font-family:'JetBrains Mono',monospace;font-size:9px;color:var(--vellum-3);white-space:nowrap;letter-spacing:.1em}

.tnode{
  display:flex;flex-direction:column;align-items:center;gap:8px;
  text-decoration:none;position:relative;transition:transform .25s;
  padding:8px 4px;
}
.tnode:hover{transform:translateY(-3px)}
.tnode .tdot{width:14px;height:14px;border-radius:50%;background:rgba(0,0,0,.5);border:1px solid var(--rule);transition:all .25s;position:relative;z-index:2}
.tnode.act-1 .tdot{background:#1a1326;border-color:rgba(184,164,255,.55)}
.tnode.act-2 .tdot{background:#0c1c26;border-color:rgba(127,212,245,.55)}
.tnode.act-3 .tdot{background:#22130c;border-color:rgba(255,138,92,.55)}
.tnode:hover .tdot{transform:scale(1.4);box-shadow:0 0 14px currentColor}
.tnode.act-1:hover .tdot{background:var(--fungal);border-color:var(--fungal);color:var(--fungal)}
.tnode.act-2:hover .tdot{background:var(--water);border-color:var(--water);color:var(--water)}
.tnode.act-3:hover .tdot{background:var(--ember);border-color:var(--ember);color:var(--ember)}
.tnode.live .tdot{background:var(--ember);border-color:var(--ember);box-shadow:0 0 14px var(--ember);animation:embAura 2.4s ease-in-out infinite;width:18px;height:18px;transform:rotate(45deg);border-radius:2px}
.tnode .tlbl{font-family:'JetBrains Mono',monospace;font-size:10px;color:var(--vellum-3);letter-spacing:.05em;transition:color .25s}
.tnode:hover .tlbl{color:var(--gold-bright)}
.tnode.live .tlbl{color:var(--ember);font-family:'Cormorant SC',serif;font-size:14px;font-weight:600;letter-spacing:.1em}
.tnode .ttip{display:none}

#tline-float{
  position:fixed;width:260px;padding:14px 16px;border:1px solid var(--rule);background:rgba(8,7,13,.97);
  z-index:9999;pointer-events:none;opacity:0;transition:opacity .2s, transform .2s;
  display:flex;flex-direction:column;gap:6px;box-shadow:0 8px 28px rgba(0,0,0,.7);
  transform:translateY(6px);
}
#tline-float.show{opacity:1;transform:translateY(0)}
#tline-float::after{content:"";position:absolute;bottom:-6px;left:var(--arrow,50%);transform:translateX(-50%) rotate(45deg);width:10px;height:10px;background:rgba(8,7,13,.97);border-right:1px solid var(--rule);border-bottom:1px solid var(--rule)}
#tline-float.below::after{bottom:auto;top:-6px;border-right:none;border-bottom:none;border-left:1px solid var(--rule);border-top:1px solid var(--rule)}
#tline-float .ttitle{font-family:'Cormorant SC',serif;font-weight:600;font-size:16px;color:var(--vellum);line-height:1.2}
#tline-float .ttldr{font-size:13px;color:var(--vellum-2);font-style:italic;line-height:1.5}

.ts-axis{display:flex;align-items:center;gap:14px;margin-top:14px;font-family:'IM Fell English SC',serif;letter-spacing:.22em;font-size:10px;text-transform:uppercase;color:var(--vellum-3)}
.ts-axis .axis-line{flex:1;height:1px;background:linear-gradient(90deg,transparent,var(--rule),transparent)}
.ts-axis .axis-current{color:var(--ember)}

/* —— HOT THREADS GRID (dashboard variant) —— */
.hot-grid-wrap{margin:48px 0 16px}
.hg-head{display:flex;justify-content:space-between;align-items:baseline;flex-wrap:wrap;gap:14px;margin-bottom:18px;border-bottom:1px solid var(--rule-soft);padding-bottom:10px}
.hg-eyebrow{font-family:'IM Fell English SC',serif;letter-spacing:.28em;font-size:11px;text-transform:uppercase;color:var(--ember)}
.hg-more{color:var(--gold);text-decoration:none;font-family:'IM Fell English SC',serif;letter-spacing:.22em;font-size:11px;text-transform:uppercase}
.hg-more:hover{color:var(--gold-bright)}
.hot-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:18px}
.hot-card{
  border:1px solid var(--rule);background:linear-gradient(180deg,rgba(255,138,92,.04),rgba(0,0,0,.25));
  padding:20px 22px;position:relative;transition:transform .3s,border-color .3s;
}
.hot-card:hover{transform:translateY(-3px);border-color:rgba(255,138,92,.5)}
.hot-card::before{content:"";position:absolute;left:0;top:0;bottom:0;width:2px;background:var(--ember)}
.hc-tag{font-family:'IM Fell English SC',serif;letter-spacing:.22em;font-size:10px;text-transform:uppercase;color:var(--ember);margin-bottom:6px}
.hc-title{font-family:'Cormorant SC',serif;font-weight:600;font-size:22px;color:var(--vellum);margin-bottom:10px;line-height:1.2}
.hc-body{color:var(--vellum-2);font-size:14px;line-height:1.55;margin-bottom:12px}
.hc-foot{font-family:'JetBrains Mono',monospace;font-size:11px;color:var(--vellum-3);letter-spacing:.05em}
.hc-foot a{color:var(--gold);text-decoration:none;border-bottom:1px dotted var(--rule)}
.hc-foot a:hover{color:var(--gold-bright)}

/* —— RESPONSIVE —— */
@media (max-width:980px){
  .toc{grid-template-columns:1fr}
  .chapter-body{grid-template-columns:1fr}
  .banner h1{font-size:54px}
  .chapter h1.chapter-title{font-size:42px}
  .wrap{padding:24px 22px}
  .toprail{padding:12px 22px;font-size:10px}
  .chapter .factbar{grid-template-columns:1fr}
  .chapter .factbar > div{border-right:0;border-bottom:1px solid var(--rule-soft);padding:10px 0}
  .chapter .factbar > div:last-child{border-bottom:0}
  .prev-next{grid-template-columns:1fr}
  .stat-grid{grid-template-columns:1fr 1fr}
}
@media (max-width:560px){
  .stat-grid{grid-template-columns:1fr}
  .banner h1{font-size:42px}
  .banner .meta{gap:18px;font-size:10px}
}
