:root{
  --ground:#EEF2F5; --surface:#FFFFFF; --ink:#17222C; --muted:#5A6875; --rule:#D3DBE1;
  --cedar:#A8482B; --cedar-soft:#F3E4DE; --spruce:#33604A; --spruce-soft:#E2ECE6; --fjord:#3F6F8F; --fjord-soft:#E0EAF1;
  --paper:#F6F1E6; --paper-ink:#2B2117;
  --display:"Fraunces", Georgia, "Times New Roman", serif;
  --body:"Atkinson Hyperlegible", "Helvetica Neue", Arial, sans-serif;
  --measure:68ch; --wide:1100px;
  color-scheme:light;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --ground:#10171D; --surface:#182129; --ink:#E8EEF2; --muted:#9AA8B3; --rule:#2A3640;
    --cedar:#D9765A; --cedar-soft:#3A241C; --spruce:#7CB89A; --spruce-soft:#1D2F26; --fjord:#86B6D3; --fjord-soft:#1B2A36;
    color-scheme:dark;
  }
}
:root[data-theme="dark"]{
  --ground:#10171D; --surface:#182129; --ink:#E8EEF2; --muted:#9AA8B3; --rule:#2A3640;
  --cedar:#D9765A; --cedar-soft:#3A241C; --spruce:#7CB89A; --spruce-soft:#1D2F26; --fjord:#86B6D3; --fjord-soft:#1B2A36;
  color-scheme:dark;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion: reduce){ html{scroll-behavior:auto} *{transition:none!important;animation:none!important} }
body{margin:0;background:var(--ground);color:var(--ink);font-family:var(--body);font-size:18px;line-height:1.6;-webkit-font-smoothing:antialiased}
h1,h2,h3{font-family:var(--display);font-weight:500;line-height:1.1;text-wrap:balance;margin:0}
h1{font-size:clamp(2.4rem,6vw,4.4rem);font-variation-settings:"SOFT" 50}
h2{font-size:clamp(1.8rem,3.6vw,2.6rem)}
h3{font-size:1.35rem;font-weight:600}
p{margin:0 0 1em;max-width:var(--measure)}
a{color:var(--fjord);text-underline-offset:3px}
a:focus-visible,button:focus-visible{outline:3px solid var(--cedar);outline-offset:3px}
img{max-width:100%;height:auto;display:block}
.eyebrow{font-family:var(--body);font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-weight:700}
.wrap{max-width:var(--wide);margin:0 auto;padding:0 clamp(18px,4vw,40px)}
section{padding:clamp(56px,8vw,96px) 0;border-top:1px solid var(--rule)}
section:first-of-type{border-top:0}
.lede{font-size:1.25rem;line-height:1.5}
.small{font-size:.92rem;color:var(--muted)}
.tag{display:inline-block;font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;font-weight:700;padding:.2em .55em;border-radius:3px;line-height:1.4;vertical-align:middle}
.tag.primary{background:var(--spruce-soft);color:var(--spruce)}
.tag.secondary{background:var(--fjord-soft);color:var(--fjord)}
.tag.open{background:var(--cedar-soft);color:var(--cedar)}

/* nav */
nav.chapters{position:sticky;top:0;z-index:10;background:color-mix(in srgb,var(--ground) 92%,transparent);backdrop-filter:blur(8px);border-bottom:1px solid var(--rule)}
nav.chapters ul{list-style:none;margin:0;padding:0 clamp(18px,4vw,40px);display:flex;gap:4px;overflow-x:auto;max-width:var(--wide);margin-inline:auto;scrollbar-width:none}
nav.chapters ul::-webkit-scrollbar{display:none}
nav.chapters a{display:block;padding:14px 12px;font-size:.88rem;font-weight:700;color:var(--muted);text-decoration:none;white-space:nowrap;border-bottom:3px solid transparent}
nav.chapters a[aria-current="true"]{color:var(--ink);border-bottom-color:var(--cedar)}
nav.chapters a:hover{color:var(--ink)}

/* hero */
.hero{padding-top:clamp(40px,6vw,72px)}
.hero .scan{background:var(--paper);border:1px solid var(--rule);padding:clamp(10px,2vw,22px);box-shadow:0 18px 50px -30px rgba(0,0,0,.45)}
.hero .scan img{width:100%}
.hero figcaption{margin-top:14px;font-size:.92rem;color:var(--muted)}
.transcription{display:grid;grid-template-columns:1fr 1fr;gap:clamp(18px,3vw,40px);margin-top:clamp(28px,4vw,48px);align-items:start}
@media (max-width:760px){.transcription{grid-template-columns:1fr}}
.transcription .no{font-family:var(--display);font-size:1.05rem;color:var(--muted);font-style:italic}
.transcription blockquote{margin:0;padding:18px 22px;border-left:4px solid var(--cedar);background:var(--surface);font-family:var(--display);font-size:1.25rem;line-height:1.4}
.transcription blockquote span{display:block;font-family:var(--body);font-size:.95rem;color:var(--muted);margin-top:10px;font-style:normal}

/* pedigree ladder */
.ladder{list-style:none;margin:32px 0 0;padding:0;position:relative}
.ladder::before{content:"";position:absolute;left:19px;top:22px;bottom:22px;width:2px;background:var(--rule)}
.ladder li{position:relative;padding:0 0 28px 56px}
.ladder li::before{content:"";position:absolute;left:12px;top:8px;width:16px;height:16px;border-radius:50%;background:var(--surface);border:3px solid var(--fjord)}
.ladder li.norway::before{border-color:var(--spruce)}
.ladder li.here::before{border-color:var(--cedar);background:var(--cedar)}
.ladder .gen{font-size:.78rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);font-weight:700}
.ladder h3{margin:4px 0 6px}
.ladder .where{color:var(--muted)}
.ladder .kids{font-size:.95rem;margin-top:6px}

/* journey svg */
.journey{background:var(--surface);border:1px solid var(--rule);padding:clamp(14px,2vw,28px);overflow-x:auto}
.journey svg{width:100%;min-width:640px;height:auto;display:block}
.journey text{font-family:var(--body);fill:var(--ink)}
.journey .yr{font-family:var(--display);font-size:22px;font-weight:600}
.journey .pl{font-size:15px;font-weight:700}
.journey .nt{font-size:13px;fill:var(--muted)}

/* chapters */
.chapter{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(24px,4vw,56px);align-items:start}
@media (max-width:860px){.chapter{grid-template-columns:1fr}}
.chapter .facts{background:var(--surface);border:1px solid var(--rule);padding:22px 24px;font-size:.98rem}
.chapter .facts dl{margin:0;display:grid;grid-template-columns:auto 1fr;gap:8px 16px}
.chapter .facts dt{color:var(--muted);font-weight:700;font-size:.85rem;letter-spacing:.04em;text-transform:uppercase;padding-top:2px}
.chapter .facts dd{margin:0}
.story{border-left:4px solid var(--spruce);padding:6px 0 6px 20px;margin:22px 0;font-family:var(--display);font-size:1.15rem;line-height:1.45;max-width:var(--measure)}
.story .src{display:block;font-family:var(--body);font-size:.85rem;color:var(--muted);margin-top:8px}
.cedar .story{border-left-color:var(--cedar)}

/* tables */
.tbl{overflow-x:auto;border:1px solid var(--rule);background:var(--surface)}
table{border-collapse:collapse;width:100%;font-size:.95rem;font-variant-numeric:tabular-nums}
th,td{text-align:left;padding:10px 14px;border-bottom:1px solid var(--rule);vertical-align:top}
th{font-size:.78rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);background:var(--ground)}
tr:last-child td{border-bottom:0}
td.mono{font-variant-numeric:tabular-nums;white-space:nowrap}

/* two-up images */
.twoup{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin:24px 0}
@media (max-width:700px){.twoup{grid-template-columns:1fr}}
.twoup figure{margin:0;background:var(--paper);border:1px solid var(--rule);padding:12px}
.twoup figcaption{font-size:.9rem;color:var(--muted);margin-top:10px}
.twoup figcaption b{color:var(--ink)}

/* method steps */
.steps{list-style:none;margin:24px 0 0;padding:0;display:grid;gap:14px;max-width:var(--measure)}
.steps li{display:grid;grid-template-columns:44px 1fr;gap:14px;align-items:start}
.steps .n{font-family:var(--display);font-size:1.6rem;color:var(--cedar);line-height:1;padding-top:2px}

/* help */
.help ul{max-width:var(--measure);padding-left:1.2em}
.help li{margin-bottom:.5em}

footer{padding:40px 0 60px;border-top:1px solid var(--rule);font-size:.9rem;color:var(--muted)}
footer p{max-width:none}

/* ===== v2 additions ===== */
.dedication{font-family:var(--display);font-style:italic;font-size:1.15rem;color:var(--muted);margin:-.2em 0 1.4em;max-width:var(--measure)}
.rel{display:block;font-size:.8rem;color:var(--muted);margin-top:2px}
.rel b{color:var(--ink);font-weight:700}
/* portrait medallions */
.por{display:inline-grid;place-items:center;width:46px;height:46px;border-radius:50%;background:var(--surface);border:2.5px solid var(--c,var(--fjord));color:var(--c,var(--fjord));font-family:var(--display);font-weight:600;font-size:.95rem;letter-spacing:.02em;overflow:hidden;vertical-align:middle;flex:0 0 auto}
.por img{width:100%;height:100%;object-fit:cover;border-radius:50%}
.pors{display:flex;gap:6px;align-items:center;margin:2px 0 8px}
.pors .por{width:52px;height:52px}
.ladder .head{display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.chapter-head{display:flex;gap:14px;align-items:center;margin:0 0 18px}
.chapter-head .pors{margin:0}
/* question marks */
a.q{display:inline-grid;place-items:center;width:1.25em;height:1.25em;border-radius:50%;background:var(--cedar-soft);color:var(--cedar);font-size:.72em;font-weight:700;text-decoration:none;vertical-align:super;line-height:1;margin-left:.15em;border:1px solid transparent}
a.q:hover,a.q:focus-visible{border-color:var(--cedar)}
.tag a{color:inherit;text-decoration:none}
.tag.probable{background:var(--fjord-soft);color:var(--fjord)}
.tag.confirmed{background:var(--spruce-soft);color:var(--spruce)}
.tag.unknown{background:var(--cedar-soft);color:var(--cedar)}
/* zoomable images */
img[data-full]{cursor:zoom-in}
.zoomhint{font-size:.8rem;color:var(--muted);letter-spacing:.06em;text-transform:uppercase;font-weight:700;margin-top:8px}
.lb{position:fixed;inset:0;z-index:100;background:rgba(10,14,18,.94);display:none;flex-direction:column}
.lb[open]{display:flex}
.lb .bar{display:flex;gap:8px;align-items:center;padding:10px 14px;color:#E8EEF2;font-size:.9rem;flex:0 0 auto}
.lb .bar .cap{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lb button{font:inherit;font-weight:700;color:#E8EEF2;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.25);border-radius:6px;padding:6px 12px;cursor:pointer;min-width:44px}
.lb button:hover{background:rgba(255,255,255,.22)}
.lb .pane{flex:1;overflow:auto;-webkit-overflow-scrolling:touch;touch-action:pan-x pan-y pinch-zoom;display:grid;place-items:center}
.lb .pane img{max-width:none;display:block;cursor:zoom-in}
.lb .pane img.big{cursor:zoom-out}
/* casebook */
.cb-intro{max-width:var(--measure)}
.case{background:var(--surface);border:1px solid var(--rule);padding:22px 24px;margin:0 0 18px;scroll-margin-top:70px}
.case h3{display:flex;gap:12px;align-items:baseline;flex-wrap:wrap;font-size:1.25rem}
.case .id{font-family:var(--display);font-style:italic;color:var(--muted);font-weight:500}
.case .stamp{font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;font-weight:700;padding:.25em .6em;border-radius:3px;border:1.5px solid currentColor;margin-left:auto}
.stamp.open{color:var(--cedar)}
.stamp.probable{color:var(--fjord)}
.stamp.resolved{color:var(--spruce)}
.case dl{display:grid;grid-template-columns:auto 1fr;gap:8px 18px;margin:14px 0 0;font-size:.97rem}
.case dt{color:var(--muted);font-weight:700;font-size:.78rem;letter-spacing:.06em;text-transform:uppercase;padding-top:3px}
.case dd{margin:0;max-width:var(--measure)}
.case .who{color:var(--cedar);font-weight:700}
@media (max-width:600px){.case dl{grid-template-columns:1fr;gap:4px}.case dt{padding-top:8px}}
.updated{font-size:.85rem;color:var(--muted)}
