/* RBS CODEX — theme styles
   Screen: dark codex. Print: the case file.

   TYPEFACES ARE SERVED FROM HERE, NOT FROM A THIRD PARTY.
   The previous build pulled Cinzel, Spectral and Space Mono from
   fonts.googleapis.com on every page: a render-blocking request to someone
   else's server, and a disclosure of every reader's IP address to Google that
   European courts have repeatedly held requires consent.

   The files ship in assets/fonts/. All three families are under the SIL Open
   Font License, which permits bundling; the licence text is in OFL.txt beside
   them, unmodified, as it requires. Cinzel is a variable font instanced at 400
   and 600. All are subset to Latin, Latin-1, Latin Extended-A and B,
   punctuation, currency, arrows and symbols.

   None of the three families contains the white bullet, the diamond, or the
   multiplication sign the theme uses as ornaments, and Cinzel has no arrows.
   Browsers substitute those individual glyphs from the system font. That was
   equally true when Google served the files — same fonts, same coverage — so
   nothing changed here. */

@font-face{font-family:'Cinzel';src:url('../fonts/cinzel-400.woff2') format('woff2');
  font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:'Cinzel';src:url('../fonts/cinzel-600.woff2') format('woff2');
  font-weight:600;font-style:normal;font-display:swap}
@font-face{font-family:'Spectral';src:url('../fonts/spectral-300.woff2') format('woff2');
  font-weight:300;font-style:normal;font-display:swap}
@font-face{font-family:'Spectral';src:url('../fonts/spectral-400.woff2') format('woff2');
  font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:'Spectral';src:url('../fonts/spectral-300-italic.woff2') format('woff2');
  font-weight:300;font-style:italic;font-display:swap}
@font-face{font-family:'Space Mono';src:url('../fonts/spacemono-400.woff2') format('woff2');
  font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:'Space Mono';src:url('../fonts/spacemono-700.woff2') format('woff2');
  font-weight:700;font-style:normal;font-display:swap}

:root{
  --bg:#0E0C0A; --panel:#17130F; --ink:#E8DFC9; --dim:#8A7E68;
  --accent:#C9A24B; --line:#312A20;
  --display:'Cinzel','Trajan Pro',Georgia,serif;
  --serif:'Spectral',Georgia,'Times New Roman',serif;
  --mono:'Space Mono',ui-monospace,SFMono-Regular,Menlo,monospace;
  --safe-b:env(safe-area-inset-bottom,0px);
  --measure:660px;
}
*{margin:0;padding:0;box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{background:var(--bg);color:var(--ink);font-family:var(--serif);font-weight:300;
  -webkit-font-smoothing:antialiased;overflow-x:hidden;-webkit-tap-highlight-color:transparent;
  line-height:1.7}
img{max-width:100%;height:auto;display:block}
a{color:inherit;text-decoration:none}
button{font:inherit;background:none;border:none;color:inherit;cursor:pointer}
::selection{background:var(--accent);color:var(--bg)}
:focus-visible{outline:1.5px solid var(--accent);outline-offset:3px}

/* ---------- header ---------- */
.site-header{position:sticky;top:0;z-index:40;display:flex;align-items:center;gap:clamp(12px,3vw,28px);
  min-height:64px;padding:8px clamp(14px,4vw,40px);
  background:color-mix(in srgb,var(--bg) 86%,transparent);backdrop-filter:blur(10px);
  border-bottom:1px solid var(--line);flex-wrap:wrap}
.brand{display:flex;align-items:center;gap:11px}
.brand-sigil{display:block;width:30px;height:30px;color:var(--accent);flex:none}
.brand-text{font-family:var(--display);font-size:clamp(13px,1.7vw,16px);letter-spacing:.2em;
  text-transform:uppercase;line-height:1.3}
.brand-text small{display:block;font-family:var(--mono);font-size:8px;letter-spacing:.36em;color:var(--dim)}
.site-nav{margin-left:auto}
.site-nav ul{display:flex;gap:clamp(10px,2vw,22px);list-style:none;flex-wrap:wrap}
.site-nav a{font-family:var(--mono);font-size:10.5px;letter-spacing:.18em;text-transform:uppercase;
  color:var(--dim);transition:color .2s}
.site-nav a:hover{color:var(--ink)}
.header-tools{display:flex;align-items:center;gap:12px}
.inv-count{display:flex;align-items:center;gap:8px;font-family:var(--mono);font-size:10px;
  letter-spacing:.14em;color:var(--dim)}
.inv-count b{color:var(--accent);font-weight:400}
.inv-sigil{display:block;width:18px;height:18px;color:var(--accent)}
.btn-join{font-family:var(--mono);font-size:10px;letter-spacing:.18em;text-transform:uppercase;
  color:var(--accent);border:1px solid var(--accent);padding:7px 12px;transition:background-color .2s,color .2s}
.btn-join:hover{background:var(--accent);color:var(--bg)}
.btn-join.member{color:var(--dim);border-color:var(--line)}

/* ---------- hero ---------- */
.codex-hero{max-width:920px;margin:0 auto;text-align:center;padding:clamp(40px,8vh,88px) 22px clamp(18px,3vh,36px)}
.codex-hero.small{padding-top:clamp(30px,5vh,56px)}
.hero-kicker{font-family:var(--mono);font-size:10px;letter-spacing:.4em;color:var(--dim);
  text-transform:uppercase;margin-bottom:18px}
.hero-title{font-family:var(--display);font-weight:400;font-size:clamp(32px,6.2vw,64px);
  letter-spacing:.14em;text-transform:uppercase;line-height:1.08}
.hero-sub{font-style:italic;font-size:clamp(15px,2vw,18px);color:var(--dim);max-width:58ch;
  margin:18px auto 0;line-height:1.75}
.hero-rule{width:64px;height:1px;background:var(--accent);margin:26px auto 0}

/* ---------- index ---------- */
.codex-index{max-width:920px;margin:0 auto;padding:0 22px 90px}
.index-head{display:flex;align-items:baseline;justify-content:space-between;gap:16px;flex-wrap:wrap;
  border-bottom:1px solid var(--line);padding-bottom:14px;margin-bottom:8px}
.index-head h2{font-family:var(--display);font-weight:400;font-size:20px;letter-spacing:.2em;text-transform:uppercase}
.ih-note{font-family:var(--mono);font-size:9.5px;letter-spacing:.2em;color:var(--dim);text-transform:uppercase}
.rb-label{font-family:var(--mono);font-size:9px;letter-spacing:.3em;color:var(--dim);
  text-transform:uppercase;margin:26px 0 4px}
.register-block.eternity .rb-label{color:var(--accent)}

.chapter-card{border-bottom:1px solid var(--line)}
.cc-link{display:grid;grid-template-columns:96px 1fr auto;gap:22px;align-items:center;padding:22px 6px;
  transition:background-color .2s}
.cc-link:hover{background:color-mix(in srgb,var(--ink) 5%,transparent)}
.cc-plate{width:96px;margin:0}
.cc-sigil{display:block;width:54px;height:54px;color:var(--accent);opacity:.8;margin:0 auto}
.cc-register{font-family:var(--mono);font-size:9px;letter-spacing:.26em;text-transform:uppercase}
.cc-register.time{color:var(--accent)}
.cc-register.eternity{color:var(--dim)}
.cc-title{font-family:var(--display);font-weight:400;font-size:clamp(19px,2.8vw,25px);
  letter-spacing:.08em;text-transform:uppercase;margin:6px 0;line-height:1.2}
.cc-excerpt{font-size:15px;color:var(--dim);line-height:1.6;max-width:56ch}
.cc-meta{font-family:var(--mono);font-size:9px;letter-spacing:.16em;color:var(--dim);
  text-transform:uppercase;margin-top:10px}
.cc-go{font-family:var(--mono);font-size:10px;letter-spacing:.22em;color:var(--dim);white-space:nowrap}
.cc-link:hover .cc-go{color:var(--accent)}
@media(max-width:640px){.cc-link{grid-template-columns:1fr;gap:10px}.cc-plate,.cc-sigil,.cc-go{display:none}}

/* ---------- single ---------- */
.single{max-width:var(--measure);margin:0 auto;padding:clamp(34px,6vh,74px) 22px 120px}
.reading-progress{position:fixed;top:0;left:0;right:0;height:2px;z-index:50}
.reading-progress i{display:block;height:100%;width:0;background:var(--accent)}
.chapter-register{font-family:var(--mono);font-size:9.5px;letter-spacing:.28em;color:var(--accent);text-transform:uppercase}
.in-eternity .chapter-register{color:var(--dim)}
.single-title{font-family:var(--display);font-weight:400;font-size:clamp(30px,5.6vw,50px);
  letter-spacing:.06em;text-transform:uppercase;line-height:1.12;margin:14px 0 12px}
.single-epi{font-style:italic;color:var(--dim);font-size:16px;margin-bottom:10px}
.single-meta{font-family:var(--mono);font-size:9.5px;letter-spacing:.2em;color:var(--dim);
  text-transform:uppercase;padding-bottom:22px;border-bottom:1px solid var(--line);margin-bottom:30px}
.reading-hint{display:flex;gap:12px;align-items:flex-start;margin-bottom:34px;
  font-family:var(--mono);font-size:9.5px;letter-spacing:.14em;color:var(--dim);
  text-transform:uppercase;line-height:1.75}
.rh-sigil{display:block;width:16px;height:16px;color:var(--accent);flex:none;margin-top:2px}

.codex-prose p{font-size:18.5px;line-height:1.88;margin-bottom:1.5em}
.codex-prose h2,.codex-prose h3{font-family:var(--display);font-weight:400;letter-spacing:.08em;
  text-transform:uppercase;margin:1.6em 0 .7em}
.codex-prose h2{font-size:24px}.codex-prose h3{font-size:19px}
.codex-prose blockquote{border-left:1px solid var(--accent);padding-left:20px;font-style:italic;color:var(--dim);margin:1.6em 0}
.codex-prose hr{border:0;height:1px;background:var(--line);margin:2.4em 0}
.codex-prose a{border-bottom:1px solid var(--line);transition:border-color .2s}
.codex-prose a:hover{border-color:var(--accent)}
.codex-prose figure{margin:2em 0}
.codex-prose figcaption{font-family:var(--mono);font-size:9px;letter-spacing:.2em;color:var(--dim);
  text-transform:uppercase;text-align:center;margin-top:10px}
.chapter .codex-prose > p:first-of-type::first-letter{font-family:var(--display);font-size:3.3em;
  float:left;line-height:.82;padding-right:12px;padding-top:6px;color:var(--accent)}

/* marks — the name stays a link; the sigil beside it does the filing */
.mk{position:relative;display:inline;color:inherit;cursor:pointer;padding:0;font:inherit;
  background:linear-gradient(var(--accent),var(--accent)) bottom left/100% 1px no-repeat;
  transition:background-size .25s,color .25s}
.mk:hover{color:var(--accent);background-size:100% 2px}
.mk.filed{color:var(--accent);
  background:linear-gradient(color-mix(in srgb,var(--accent) 40%,transparent),color-mix(in srgb,var(--accent) 40%,transparent)) bottom left/100% 1px no-repeat}
.mk-record{display:inline-block;padding:0 0 0 .16em;vertical-align:baseline;line-height:1;
  color:var(--accent);opacity:.5;transition:opacity .25s}
.mk-record:hover,.mk-record:focus-visible{opacity:1}
.mk-record .mk-glyph{display:inline-block;width:.62em;height:.62em;vertical-align:.42em}
.mk.filed + .mk-record{opacity:1}
.mk.pulse{animation:mkP .8s ease}
@keyframes mkP{0%{text-shadow:none}35%{text-shadow:0 0 16px var(--accent)}100%{text-shadow:none}}
@media(prefers-reduced-motion:reduce){.mk.pulse{animation:none}}
.codex-flyer{position:fixed;z-index:60;width:22px;height:22px;pointer-events:none;color:var(--accent);
  transition:transform .8s cubic-bezier(.4,0,.2,1),opacity .8s}

/* plates */
.plate{position:relative;display:block;margin:0 0 40px;border:1px solid var(--line);
  background:color-mix(in srgb,var(--accent) 26%,var(--panel));padding:12px}
.plate .p-wrap{position:relative;display:block}
.plate img{filter:brightness(.22) contrast(1.5) blur(7px);transition:filter 2s ease}
.plate .p-veil{position:absolute;inset:0;pointer-events:none;
  background:color-mix(in srgb,var(--accent) 50%,transparent);mix-blend-mode:color;opacity:1;
  transition:opacity 2.4s ease}
.plate.developed img{filter:none}
.plate.developed .p-veil{opacity:0}
@media(prefers-reduced-motion:reduce){.plate img{transition:filter .2s}}
.p-head,.p-foot{display:flex;justify-content:space-between;gap:14px;font-family:var(--mono);
  font-size:9px;letter-spacing:.24em;color:var(--dim);text-transform:uppercase}
.p-head{margin-bottom:10px}.p-foot{margin-top:10px}
.p-foot b{font-weight:400;color:var(--ink);opacity:.85}
.cc-plate{padding:3px}
.cc-plate .p-head,.cc-plate .p-foot{display:none}

/* gate */
.gate-card{margin:40px auto 0;max-width:440px;text-align:center;border:1px solid var(--accent);
  background:var(--panel);padding:32px 28px}
.gate-card h4{font-family:var(--display);font-weight:400;font-size:20px;letter-spacing:.14em;
  text-transform:uppercase;margin-bottom:12px}
.gate-card p{font-size:14.5px;color:var(--dim);line-height:1.7;margin-bottom:20px}
.g-join{display:inline-block;font-family:var(--mono);font-size:11px;letter-spacing:.22em;
  text-transform:uppercase;border:1px solid var(--accent);color:var(--accent);padding:12px 24px;
  transition:background-color .2s,color .2s}
.g-join:hover{background:var(--accent);color:var(--bg)}

.chapter-end{margin-top:56px;padding-top:24px;border-top:1px solid var(--line);text-align:center}
.ce-line{font-family:var(--mono);font-size:9.5px;letter-spacing:.3em;color:var(--dim);text-transform:uppercase}
.ce-go{display:inline-block;margin-top:18px;font-family:var(--display);font-size:14px;
  letter-spacing:.14em;text-transform:uppercase;border:1px solid var(--accent);color:var(--accent);
  padding:12px 24px;transition:background-color .2s,color .2s}
.ce-go:hover{background:var(--accent);color:var(--bg)}
.chapter-nav,.relation-nav{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;
  margin-top:40px;padding-top:20px;border-top:1px solid var(--line);
  font-family:var(--display);font-size:14px;letter-spacing:.1em;text-transform:uppercase;color:var(--dim)}
.chapter-nav a:hover{color:var(--accent)}
.relation-nav{flex-direction:column;align-items:center;text-align:center}
.rn-note{font-family:var(--mono);font-size:9px;letter-spacing:.3em;text-transform:uppercase}
.comments-block{margin-top:56px;padding-top:26px;border-top:1px solid var(--line)}

/* investigation */
.investigation-view{max-width:1120px;margin:0 auto;padding:clamp(26px,4vh,54px) clamp(14px,4vw,40px) 140px}
.inv-head{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;flex-wrap:wrap;
  border-bottom:1px solid var(--line);padding-bottom:18px}
.inv-head h1{font-family:var(--display);font-weight:400;font-size:clamp(24px,4.2vw,36px);
  letter-spacing:.14em;text-transform:uppercase}
.ih-sub{font-family:var(--mono);font-size:9.5px;letter-spacing:.2em;color:var(--dim);
  text-transform:uppercase;margin-top:8px;line-height:1.9}
.inv-tools{display:flex;gap:5px;flex-wrap:wrap}
.inv-tools button{font-family:var(--mono);font-size:9.5px;letter-spacing:.16em;text-transform:uppercase;
  color:var(--dim);border:1px solid var(--line);padding:8px 11px;transition:color .2s,border-color .2s}
.inv-tools button:hover,.inv-tools button.on{color:var(--accent);border-color:var(--accent)}
.inv-tools button.warn:hover{color:#C9583B;border-color:#C9583B}
.inv-intro{margin-top:22px;color:var(--dim)}
.cat-bar{display:flex;gap:6px;flex-wrap:wrap;margin:20px 0 4px}
.cat-chip{display:flex;align-items:center;gap:7px;font-family:var(--mono);font-size:9px;
  letter-spacing:.18em;text-transform:uppercase;color:var(--dim);border:1px solid var(--line);
  padding:6px 10px;transition:color .2s,border-color .2s}
.cat-chip.on{color:var(--accent);border-color:var(--accent)}
.cat-chip svg{width:14px;height:14px}
.inv-empty{border:1px dashed var(--line);padding:52px 22px;text-align:center;margin-top:26px;color:var(--accent)}
.inv-empty svg{width:52px;height:52px;opacity:.35;margin:0 auto}
.inv-empty p{color:var(--dim);font-style:italic;margin-top:16px;line-height:1.8}
.findings{display:grid;gap:16px;margin-top:24px;grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}
.finding{position:relative;border:1px solid var(--line);background:var(--panel);padding:22px}
.finding::before{content:'';position:absolute;top:-1px;left:-1px;width:15px;height:15px;
  border-top:1px solid var(--accent);border-left:1px solid var(--accent)}
.f-top{display:flex;gap:14px;align-items:flex-start;margin-bottom:10px}
.f-sig{flex:none;color:var(--accent)}
.f-cat{font-family:var(--mono);font-size:8.5px;letter-spacing:.28em;color:var(--accent);text-transform:uppercase}
.f-name{font-family:var(--display);font-size:19px;letter-spacing:.07em;text-transform:uppercase;
  margin:6px 0 3px;line-height:1.2}
.f-epi{font-style:italic;color:var(--dim);font-size:13.5px}
.f-note{width:100%;margin-top:12px;background:transparent;border:1px dashed var(--line);color:var(--ink);
  font-family:var(--serif);font-size:14px;font-style:italic;padding:10px 12px;resize:vertical;min-height:56px}
.f-note:focus{outline:none;border-color:var(--accent)}
.f-foot{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;
  margin-top:14px;padding-top:12px;border-top:1px solid var(--line);font-family:var(--mono);
  font-size:8.5px;letter-spacing:.16em;color:var(--dim);text-transform:uppercase}
.f-foot a:hover{color:var(--accent)}
.conn{margin-top:34px;border:1px solid var(--line);background:var(--panel);padding:22px}
.conn h3{font-family:var(--mono);font-size:9.5px;letter-spacing:.28em;color:var(--accent);
  text-transform:uppercase;margin-bottom:14px}
.conn-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:12px 0;
  border-bottom:1px solid var(--line);font-family:var(--display);font-size:14.5px;
  letter-spacing:.06em;text-transform:uppercase;color:var(--ink)}
.conn-row:last-child{border-bottom:none}
.conn-row svg{color:var(--accent);flex:none}
.cr-tie{font-family:var(--mono);font-size:8.5px;letter-spacing:.18em;color:var(--accent);
  border:1px solid var(--line);padding:4px 9px;text-transform:uppercase}
.cr-thread{flex:1;height:1px;min-width:16px;
  background:repeating-linear-gradient(90deg,var(--line) 0 5px,transparent 5px 10px)}
.conn-empty{font-style:italic;color:var(--dim);line-height:1.8}
.seal-panel{margin-top:34px;border:1px solid var(--line);background:var(--panel);padding:26px 22px;
  text-align:center;color:var(--accent)}
.seal-panel h3{font-family:var(--mono);font-size:9.5px;letter-spacing:.28em;text-transform:uppercase;margin-bottom:16px}
.seal-panel svg{width:min(240px,72vw);height:auto;margin:0 auto}
.sp-code{font-family:var(--mono);font-size:10px;letter-spacing:.2em;color:var(--dim);margin-top:12px}
.sp-note{font-family:var(--mono);font-size:8.5px;letter-spacing:.16em;color:var(--dim);
  text-transform:uppercase;margin-top:8px;line-height:1.9}

/* toast */
.codex-toast{position:fixed;left:50%;bottom:24px;z-index:80;transform:translate(-50%,16px);opacity:0;
  pointer-events:none;background:var(--panel);border:1px solid var(--accent);padding:10px 18px;
  font-family:var(--mono);font-size:9.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink);
  display:flex;align-items:center;gap:10px;transition:transform .35s,opacity .35s}
.codex-toast.show{transform:translate(-50%,0);opacity:1}
.codex-toast b{color:var(--accent);font-weight:400}
.codex-toast svg{color:var(--accent);flex:none}
@media(max-width:700px){.codex-toast{bottom:calc(18px + var(--safe-b));max-width:92vw}}

/* footer */
.site-footer{border-top:1px solid var(--line);padding:24px clamp(14px,4vw,40px) 40px;
  display:flex;flex-wrap:wrap;gap:16px;justify-content:space-between;align-items:center;
  font-family:var(--mono);font-size:9.5px;letter-spacing:.16em;color:var(--dim);text-transform:uppercase;line-height:2}
.foot-left span{display:block}
.foot-right{display:flex;align-items:center;gap:18px;flex-wrap:wrap}
.foot-right ul{display:flex;gap:16px;list-style:none}
.btn-offering{border:1px solid var(--accent);color:var(--accent);padding:9px 16px;transition:background-color .2s,color .2s}
.btn-offering:hover{background:var(--accent);color:var(--bg)}
.err-back{margin-top:22px;font-family:var(--mono);font-size:10px;letter-spacing:.2em;text-transform:uppercase}
.err-back a{color:var(--accent)}
.pagination{display:flex;justify-content:space-between;gap:16px;margin-top:34px;
  font-family:var(--mono);font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--dim)}

/* ================= PRINT: the case file ================= */
#codex-print-root{display:none}
@media print{
  @page{size:letter portrait;margin:14mm}
  .site-header,.site-footer,.codex-toast,.inv-tools,.cat-bar,.reading-progress,
  .gate-card,.chapter-nav,.relation-nav,.comments-block,.investigation-view,.codex-hero,.codex-index{display:none !important}
  body{background:#fff;color:#191510}
  #codex-print-root{display:block}
  .pr-page{page-break-after:always;break-after:page}
  .pr-page:last-child{page-break-after:auto;break-after:auto}
  .pr-cover{text-align:center;padding-top:14mm}
  .pr-kick{font-family:var(--mono);font-size:8pt;letter-spacing:.34em;color:#6E6558;text-transform:uppercase}
  .pr-title{font-family:var(--display);font-size:30pt;letter-spacing:.16em;text-transform:uppercase;margin:9mm 0 3mm}
  .pr-sub{font-style:italic;font-size:11.5pt;color:#6E6558}
  .pr-seal{width:78mm;margin:10mm auto;color:#191510}
  .pr-seal svg{width:100%;height:auto}
  .pr-reg{width:100%;border-collapse:collapse;margin-top:6mm}
  .pr-reg td{border-bottom:.4pt solid #D8D2C3;padding:2.6mm 0;font-family:var(--mono);font-size:8pt;
    letter-spacing:.14em;text-transform:uppercase;color:#6E6558}
  .pr-reg td.v{text-align:right;color:#191510;font-weight:700}
  .pr-foot{font-family:var(--mono);font-size:6.6pt;letter-spacing:.2em;color:#6E6558;
    text-transform:uppercase;text-align:center;margin-top:8mm;line-height:1.9}
  .pr-rule{border:0;border-top:.7pt solid #191510;margin:3mm 0 6mm}
  .pr-hd{display:flex;justify-content:space-between;font-family:var(--mono);font-size:7pt;
    letter-spacing:.2em;color:#6E6558;text-transform:uppercase}
  .pr-rec{display:flex;gap:7mm;align-items:flex-start;margin-bottom:6mm}
  .pr-sig{width:30mm;flex:none;color:#191510}
  .pr-sig svg{width:100%;height:auto}
  .pr-cat{font-family:var(--mono);font-size:7.4pt;letter-spacing:.28em;color:#8A6620;text-transform:uppercase}
  .pr-name{font-family:var(--display);font-size:19pt;letter-spacing:.05em;margin:2mm 0 1mm}
  .pr-epi{font-style:italic;font-size:11pt;color:#6E6558}
  .pr-src{font-family:var(--mono);font-size:7pt;letter-spacing:.16em;color:#6E6558;
    text-transform:uppercase;margin-top:2.4mm}
  .pr-lab{font-family:var(--mono);font-size:7.4pt;letter-spacing:.28em;color:#8A6620;
    text-transform:uppercase;margin:5mm 0 2.5mm}
  .pr-note{border:.5pt dashed #C9C2B1;padding:4mm;min-height:22mm;font-style:italic;font-size:10.5pt;line-height:1.65}
  .pr-note.blank{color:#B9B0A0;font-style:normal;font-family:var(--mono);font-size:7pt;letter-spacing:.18em}
}

/* ---------- Koenig card widths + custom fonts support ---------- */
.kg-width-wide{max-width:1100px;width:100vw;margin-left:50%;transform:translateX(-50%);
  padding:0 clamp(14px,4vw,40px)}
.kg-width-full{max-width:100vw;width:100vw;margin-left:50%;transform:translateX(-50%);padding:0}
.kg-width-full img{width:100%}
.kg-card figcaption{font-family:var(--mono);font-size:9px;letter-spacing:.2em;color:var(--dim);
  text-transform:uppercase;text-align:center;margin-top:10px}
.kg-bookmark-card,.kg-callout-card{border:1px solid var(--line);background:var(--panel);
  padding:20px;margin:2em 0}
.kg-toggle-card{border-top:1px solid var(--line);border-bottom:1px solid var(--line);
  padding:14px 0;margin:2em 0}
.kg-toggle-heading{display:flex;justify-content:space-between;align-items:center;gap:14px;cursor:pointer}
.kg-toggle-heading-text{font-family:var(--mono);font-size:9.5px;letter-spacing:.26em;
  color:var(--dim);text-transform:uppercase}
.kg-toggle-card[data-kg-toggle-state="open"] .kg-toggle-heading-text{color:var(--accent)}
.kg-toggle-content{font-family:var(--mono);font-size:13px;line-height:1.9;color:var(--dim);padding-top:14px}
.kg-toggle-content p{font-family:var(--mono);font-size:13px;line-height:1.9;margin-bottom:1em}

/* Ghost custom font settings */
body{font-family:var(--gh-font-body,var(--serif))}
.hero-title,.single-title,.cc-title,.f-name,.inv-head h1,.brand-text{
  font-family:var(--gh-font-heading,var(--display))}

/* progressive revelation */
.f-strata{margin-top:4px}
.f-later{border-left:1px solid var(--accent);padding-left:14px;margin-top:14px}
.f-stratum-tag{display:block;font-family:var(--mono);font-size:8px;letter-spacing:.28em;
  color:var(--accent);text-transform:uppercase;margin-bottom:6px}
.f-sealed{font-family:var(--mono);font-size:8.5px;letter-spacing:.18em;color:var(--dim);
  text-transform:uppercase;margin-top:14px;padding-top:10px;border-top:1px dashed var(--line)}
.f-loading{color:var(--dim);font-style:italic;opacity:.7}

/* ================= READING MODES ================= */
/* Dark is the default palette declared at the top of this file.
   Light is a parchment register, not an inversion — ink warms, gilt darkens
   so it stays legible on pale stock. */
html[data-mode="light"]{
  --bg:#F3EEE3; --panel:#EAE3D4; --panel2:#E2DACA;
  --ink:#1A1611; --dim:#6E6558; --accent:#8A6620; --line:#D5CDBA;
}
html[data-mode="light"] body{font-weight:400}
html[data-mode="light"] .codex-prose p{font-weight:400}
html[data-mode="light"] .plate{background:color-mix(in srgb,var(--accent) 18%,var(--panel))}
html[data-mode="light"] .site-header,
html[data-mode="light"] .r-bar{background:color-mix(in srgb,var(--bg) 88%,transparent)}
html[data-mode="light"] .vignette{background:radial-gradient(ellipse at 50% 42%,transparent 62%,rgba(90,78,58,.14) 100%)}
html,body,.site-header,.plate,.finding,.conn,.seal-panel,.gate-card{
  transition:background-color .35s ease,color .35s ease,border-color .35s ease}
@media(prefers-reduced-motion:reduce){
  html,body,.site-header,.plate,.finding,.conn,.seal-panel,.gate-card{transition:none}
}
.mode-toggle{display:grid;place-items:center;width:32px;height:32px;border:1px solid var(--line);
  color:var(--dim);transition:color .2s,border-color .2s}
.mode-toggle:hover{color:var(--accent);border-color:var(--accent)}
.mode-mark{display:block;width:16px;height:16px;color:currentColor}

/* ================= THE THRESHOLD ================= */
.th-cross{position:absolute;opacity:0;width:0;height:0;pointer-events:none}
.threshold{position:fixed;inset:0;z-index:100;overflow:hidden;
  background:#0A0908;opacity:1;transition:opacity .9s ease}
.th-cross:checked ~ .threshold,
.threshold.leaving{opacity:0;pointer-events:none;visibility:hidden}
.th-cross:focus-visible ~ .threshold .th-enter{outline:2px solid #F3ECDC;outline-offset:3px}
@media(prefers-reduced-motion:reduce){.threshold{transition:opacity .2s}}
.th-stage{position:absolute;inset:0;background-size:cover;background-repeat:no-repeat;
  background-position:center;transform:scale(1.04);
  transition:filter 1.2s ease,transform 16s ease-out}
.th-stage.loaded{filter:none;transform:scale(1.0)}
@media(prefers-reduced-motion:reduce){.th-stage{transition:filter .3s;transform:none}
  .th-stage.loaded{transform:none}}
.th-scrim{position:absolute;inset:0;pointer-events:none;
  background:
    radial-gradient(ellipse 78% 52% at 50% 68%,rgba(6,5,4,.72) 0%,rgba(6,5,4,.45) 45%,transparent 78%),
    linear-gradient(180deg,rgba(6,5,4,.42) 0%,transparent 22%,transparent 40%,rgba(6,5,4,.82) 100%)}
.th-content{position:absolute;left:0;right:0;bottom:0;
  display:flex;flex-direction:column;align-items:center;gap:26px;
  padding:0 clamp(20px,6vw,64px) clamp(48px,10vh,96px);text-align:center}
.th-line{max-width:52ch;font-family:var(--serif);font-weight:300;color:#EFE7D6;
  font-size:clamp(15px,1.9vw,21px);line-height:1.75;
  text-shadow:0 1px 3px rgba(0,0,0,.85), 0 2px 30px rgba(0,0,0,.75);
  opacity:0;transform:translateY(10px);animation:thIn 1.1s .35s ease forwards}
.th-enter{display:flex;cursor:pointer;user-select:none;align-items:center;gap:12px;
  border:1px solid rgba(240,232,214,.5);color:#F3ECDC;
  padding:14px 30px;font-family:var(--mono);font-size:11px;letter-spacing:.32em;
  text-transform:uppercase;background:rgba(10,9,8,.28);backdrop-filter:blur(3px);
  opacity:0;transform:translateY(10px);animation:thIn 1.1s .75s ease forwards;
  transition:background-color .25s,border-color .25s,color .25s}
.th-enter:hover{background:rgba(240,232,214,.92);color:#0A0908;border-color:transparent}
.th-enter-mark{display:block;width:17px;height:17px;color:currentColor}
@keyframes thIn{to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.th-line,.th-enter{animation-duration:.01s;animation-delay:0s}}
.th-credit{position:absolute;left:clamp(16px,4vw,34px);bottom:clamp(14px,3vh,22px);
  font-family:var(--mono);font-size:9px;letter-spacing:.2em;color:rgba(240,232,214,.78);
  text-shadow:0 1px 3px rgba(0,0,0,.9);
  text-transform:uppercase;max-width:60vw;line-height:1.8;text-align:left;
  opacity:0;animation:thIn 1.2s 1.1s ease forwards}
body.threshold-open{overflow:hidden}

/* mobile: taller crop, thumb-reachable control, shorter line */
@media(max-width:820px){
  .threshold{height:100dvh}
  .th-content{gap:20px;padding-bottom:calc(40px + env(safe-area-inset-bottom,0px))}
  .th-line{font-size:16px;max-width:34ch;line-height:1.7}
  .th-enter{width:min(320px,82vw);justify-content:center;padding:16px 24px}
  .th-credit{position:static;text-align:center;max-width:none;margin:0 auto 14px;
    padding:0 20px;order:3}
}
@media(max-width:820px) and (orientation:landscape){
  .th-line{font-size:14px;max-width:44ch}
  .th-content{gap:12px;padding-bottom:20px}
}


/* Ghost's Portal button and the announcement bar are hidden while the threshold
   stands — nothing competes with the artwork for the first moment. */
body.threshold-open #ghost-portal-root,
body.threshold-open .gh-announcement-bar,
body:has(#th-cross:not(:checked)) #ghost-portal-root,
body:has(#th-cross:not(:checked)) .gh-announcement-bar{
  opacity:0;pointer-events:none;visibility:hidden}
#ghost-portal-root,.gh-announcement-bar{transition:opacity .5s ease}

/* ── The Registry ─────────────────────────────────────────
   Server-rendered index of every entity record. Auto-populated
   from #entity pages; nothing here is maintained by hand. */
.registry-index{max-width:760px;margin:0 auto 5rem}
.reg-group{margin:0 0 2.75rem}
.reg-group .rb-label{display:flex;align-items:center;gap:.55rem}
.reg-sigil{display:inline-block;width:1.1em;height:1.1em;flex:0 0 auto;opacity:.85}
.reg-note{margin:.35rem 0 .9rem;font-size:.78rem;letter-spacing:.04em;opacity:.55}
.reg-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--rule,rgba(160,150,130,.18))}
.reg-item{padding:.6rem 0;border-bottom:1px solid var(--rule,rgba(160,150,130,.18))}
.reg-item a{font-family:var(--display);font-size:1.02rem;letter-spacing:.03em;text-decoration:none}
.reg-item a:hover{color:var(--accent)}
.reg-epi{display:block;margin-top:.2rem;font-size:.84rem;font-style:italic;opacity:.62}
.reg-empty,.rb-empty{font-size:.86rem;opacity:.55;font-style:italic;margin:1rem 0}
.dispatches{margin-top:3.5rem}

/* ── Strata sealed in place on the record ───────────────────── */
.record-sealed{margin-top:2em}
[data-codex-stratum].stratum-open{animation:stratumIn .5s ease}
@keyframes stratumIn{from{opacity:0}to{opacity:1}}
@media(prefers-reduced-motion:reduce){[data-codex-stratum].stratum-open{animation:none}}

/* ── Continue by relation ───────────────────────────────────── */
.rn-links{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-top:16px}
.rn-links:empty{display:none}
.rn-link{display:flex;align-items:center;gap:10px;border:1px solid var(--line);
  padding:10px 14px;transition:border-color .2s,color .2s;max-width:100%}
.rn-link:hover{border-color:var(--accent);color:var(--accent)}
.rn-link svg{color:var(--accent);flex:none}
.rn-name{font-family:var(--display);font-size:13px;letter-spacing:.1em;text-transform:uppercase}
.rn-phrase{font-family:var(--mono);font-size:8.5px;letter-spacing:.16em;color:var(--dim);
  text-transform:uppercase;border-left:1px solid var(--line);padding-left:10px}
.rn-fallback{display:flex;gap:18px;flex-wrap:wrap;justify-content:center;margin-top:16px}
.rn-fallback a:hover{color:var(--accent)}
@media(max-width:600px){.rn-link{width:100%}.rn-phrase{border-left:none;padding-left:0}}

/* ── When a family outgrows what one page can list ──────────── */
.reg-overflow{font-family:var(--mono);font-size:9px;letter-spacing:.2em;text-transform:uppercase;
  color:var(--accent);margin-top:14px;padding-top:10px;border-top:1px dashed var(--line)}
