/* Atlas of Play: token-based, self-contained, no external requests.
   THEMES: the picker in the header sets <html data-theme="ID" data-mode="light|dark"> (see js/app.js, head script in layout()).
   Default = nutrisize (also what you get with no JavaScript). To add a theme: add a block below, a row in THEMES in app.js
   and the id in the head script's map in tools/build-site.py. */
@font-face{font-family:"Inter";font-style:normal;font-weight:100 900;font-display:swap;src:url(../img/brand/Inter-latin-var.woff2) format("woff2")}
@font-face{font-family:"Space Grotesk";font-style:normal;font-weight:300 700;font-display:swap;src:url(../img/brand/SpaceGrotesk-latin.woff2) format("woff2")}
:root{
  /* shared (not theme-specific) */
  --serif:"Iowan Old Style","Palatino Linotype",Palatino,"Book Antiqua",Georgia,"Times New Roman",serif;
  --sans:ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  --mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;
  --wrap:72rem; --gutter:clamp(1rem,4vw,2rem);
  --e-deep-past:#c2823a; --e-river-valleys:#2f7f86; --e-classical:#6b8f3c; --e-crossroads:#4a56b8; --e-contact:#b8456f; --e-modern:#e0592a; --e-living:#5e7f5a;
  --era:#c2823a;
  /* NUTRISIZE (default): look of nutrisize.health. White paper, mint tint, green accent, Inter, deep-green footer */
  --paper:#fff; --paper-2:#f5faf7; --card:#fff; --ink:#12211b; --ink-2:#40544a; --rule:#dcebe3; --head:#0b3d2e;
  --accent:#178a5e; --accent-ink:#fff; --accent-2:#178a5e; --link:#1268b3; --focus:#1268b3;
  --shadow:0 4px 24px rgba(11,61,46,.08); --river:#cfe3d9;
  --serif:"Inter",var(--sans); --h-weight:800; --h-track:-.03em; --story-style:normal;
  --card-r:.875rem; --btn-r:.65rem; --wash:0;
  --hdr-bg:rgba(255,255,255,.92); --hdr-ink:#40544a; --hdr-dim:#546a5f; --hdr-line:#dcebe3; --hdr-hover:#e3f5ec;
  --ftr-bg:#1b3c2f; --ftr-ink:#cfe6db; --ftr-head:#eaf7f0; --ftr-link:#bdf0d8; --ftr-line:rgba(255,255,255,.14);
  --hero-bg:radial-gradient(1000px 500px at 85% -10%,#e5f0fa 0%,transparent 60%),radial-gradient(900px 500px at 10% 110%,#e3f5ec 0%,transparent 60%),#f5faf7;
  color-scheme:light;
}
/* PARCHMENT: the original Atlas look. classic follows the device; light and dark are fixed */
:root[data-theme="classic"],:root[data-theme="light"],:root[data-theme="dark"]{
  --paper:#f4efe4; --paper-2:#ebe4d2; --card:#fbf8f0; --ink:#1b2430; --ink-2:#465162; --rule:#d6cdb7; --head:var(--ink);
  --accent:#b4431f; --accent-ink:#fff; --accent-2:#b4431f; --link:#8f2f12; --focus:#1f5fd6;
  --shadow:0 1px 0 rgba(27,36,48,.06),0 8px 24px -12px rgba(27,36,48,.25); --river:#c9bfa5;
  --serif:"Iowan Old Style","Palatino Linotype",Palatino,"Book Antiqua",Georgia,"Times New Roman",serif; --h-weight:600; --h-track:-.01em; --story-style:italic;
  --card-r:.9rem; --btn-r:.6rem; --wash:.055;
  --hdr-bg:color-mix(in srgb,var(--paper) 90%,transparent); --hdr-ink:var(--ink); --hdr-dim:var(--ink-2); --hdr-line:var(--rule); --hdr-hover:var(--paper-2);
  --ftr-bg:var(--paper-2); --ftr-ink:var(--ink-2); --ftr-head:var(--ink); --ftr-link:var(--link); --ftr-line:var(--rule); --hero-bg:none;
  color-scheme:light;}
:root[data-theme="dark"],:root[data-theme="classic"][data-mode="dark"]{
  --paper:#0f151e; --paper-2:#161e2a; --card:#18212f; --ink:#efe8d8; --ink-2:#b7bcc6; --rule:#2c3747;
  --accent:#f08a5d; --accent-ink:#1b1209; --accent-2:#f08a5d; --link:#f4a780; --focus:#8fb4ff; --shadow:0 1px 0 rgba(0,0,0,.4),0 10px 28px -14px rgba(0,0,0,.7); --river:#33405a;
  color-scheme:dark;}
/* ARCFORGE: look of equalinformation.com/games-site (violet/cyan on ink, Space Grotesk headings, indigo to teal bars) */
:root[data-theme="arcforge"]{
  --paper:#191b26; --paper-2:#1e2130; --card:#262a3b; --ink:#eef0fb; --ink-2:#9aa0c0; --rule:rgba(255,255,255,.12); --head:#fff;
  --accent:#7c3aed; --accent-ink:#fff; --accent-2:#a78bfa; --link:#a9b9ff; --focus:#22d3ee;
  --shadow:0 10px 30px -14px rgba(0,0,0,.7); --river:#3a3f5a;
  --serif:"Space Grotesk","Inter",var(--sans); --sans:"Inter",ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif; --h-weight:700; --h-track:-.02em; --story-style:normal;
  --card-r:1.125rem; --btn-r:999px; --wash:.03;
  --hdr-bg:linear-gradient(100deg,#1a1148 0%,#26268f 42%,#1c5fb0 78%,#0f4a70 100%); --hdr-ink:#e6ebff; --hdr-dim:#b9c4ea; --hdr-line:rgba(160,180,255,.28); --hdr-hover:rgba(255,255,255,.14);
  --ftr-bg:linear-gradient(100deg,#1a1148 0%,#26268f 42%,#1c5fb0 78%,#0f4a70 100%); --ftr-ink:#c9d2f5; --ftr-head:#fff; --ftr-link:#e6ebff; --ftr-line:rgba(255,255,255,.18);
  --hero-bg:radial-gradient(900px 480px at 85% -10%,rgba(139,92,246,.32),transparent 60%),radial-gradient(800px 480px at 8% 110%,rgba(34,211,238,.16),transparent 60%);
  color-scheme:dark;}
/* MIDNIGHT GOLD: deep navy and warm gold, echoing the header wordmark */
:root[data-theme="midnight"]{
  --paper:#0b1226; --paper-2:#101a36; --card:#141f40; --ink:#f3ecd6; --ink-2:#b9bfd2; --rule:#26335c; --head:#fbe9a6;
  --accent:#e0b64a; --accent-ink:#1b1405; --accent-2:#eec35a; --link:#f1cd72; --focus:#8fb4ff;
  --shadow:0 10px 28px -14px rgba(0,0,0,.75); --river:#2c3a64;
  --serif:"EB Garamond","Iowan Old Style","Palatino Linotype",Palatino,Georgia,serif; --h-weight:700; --h-track:0; --story-style:italic;
  --card-r:.9rem; --btn-r:.6rem; --wash:.04;
  --hdr-bg:rgba(8,13,34,.92); --hdr-ink:#f3ecd6; --hdr-dim:#b9bfd2; --hdr-line:#26335c; --hdr-hover:rgba(224,182,74,.16);
  --ftr-bg:#080d22; --ftr-ink:#b9bfd2; --ftr-head:#fbe9a6; --ftr-link:#f1cd72; --ftr-line:#26335c; --hero-bg:none;
  color-scheme:dark;}
/* DEEP TEAL: owner-liked Chrome dark palette. #1B343A base (URL bar), #394F54 raised (toolbar), #293B3E back (tab strip), #276068 accent. See pvt/release-ops/BACKGROUND-COLOR-CHROME-TEAL.md */
:root[data-theme="teal"]{
  --paper:#1b343a; --paper-2:#293b3e; --card:#394f54; --ink:#e4eaea; --ink-2:#c8cfd0; --rule:#4a6368; --head:#fbe9a6;
  --accent:#e0b64a; --accent-ink:#1b1405; --accent-2:#eec35a; --link:#f1cd72; --focus:#9bdde3;
  --shadow:0 10px 28px -14px rgba(0,0,0,.6); --river:#4a6368;
  --serif:"EB Garamond","Iowan Old Style","Palatino Linotype",Palatino,Georgia,serif; --h-weight:700; --h-track:0; --story-style:italic;
  --card-r:.9rem; --btn-r:.6rem; --wash:.03;
  --hdr-bg:#394f54; --hdr-ink:#e4eaea; --hdr-dim:#c8cfd0; --hdr-line:#4a6368; --hdr-hover:rgba(224,182,74,.18);
  --ftr-bg:#293b3e; --ftr-ink:#c8cfd0; --ftr-head:#fbe9a6; --ftr-link:#f1cd72; --ftr-line:#4a6368; --hero-bg:none;
  color-scheme:dark;}
/* HIGH CONTRAST: black and white with yellow accents, for maximum legibility */
:root[data-theme="contrast"]{
  --paper:#000; --paper-2:#0d0d0d; --card:#000; --ink:#fff; --ink-2:#e6e6e6; --rule:#fff; --head:#fff;
  --accent:#ffd60a; --accent-ink:#000; --accent-2:#ffd60a; --link:#7fe0ff; --focus:#ffd60a;
  --shadow:none; --river:#fff;
  --serif:var(--sans); --h-weight:800; --h-track:0; --story-style:normal;
  --card-r:.5rem; --btn-r:.4rem; --wash:0;
  --hdr-bg:#000; --hdr-ink:#fff; --hdr-dim:#e6e6e6; --hdr-line:#fff; --hdr-hover:#333;
  --ftr-bg:#000; --ftr-ink:#fff; --ftr-head:#ffd60a; --ftr-link:#7fe0ff; --ftr-line:#fff; --hero-bg:none;
  color-scheme:dark;}
/* era colours, brighter for dark surfaces */
:root[data-mode="dark"]{
  --e-deep-past:#e0a45a; --e-river-valleys:#59b6bd; --e-classical:#9cc464; --e-crossroads:#8a95f0; --e-contact:#e783a6; --e-modern:#ff8a5c; --e-living:#9cc596;}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{animation:none!important;transition:none!important}}
body{margin:0;background:var(--paper);color:var(--ink);font:1rem/1.62 var(--sans);position:relative;display:flex;flex-direction:column;min-height:100vh;min-height:100dvh}
body::before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;background:var(--era);opacity:var(--wash);transition:background-color .9s ease}
a{color:var(--link);text-underline-offset:.18em;text-decoration-thickness:1px}
a:hover{text-decoration-thickness:2px}
:focus-visible{outline:3px solid var(--focus);outline-offset:2px;border-radius:3px}
img,svg{max-width:100%}
.skip{position:absolute;left:-999px;top:0;background:var(--ink);color:var(--paper);padding:.6rem 1rem;z-index:100}
.skip:focus{left:0}
.wrap{max-width:var(--wrap);margin:0 auto;padding-inline:var(--gutter)}
h1,h2,h3{font-family:var(--serif);line-height:1.12;letter-spacing:var(--h-track);font-weight:var(--h-weight);color:var(--head);margin:0 0 .5em}
h1{font-size:clamp(2.1rem,6.2vw,4rem)} h2{font-size:clamp(1.5rem,3.6vw,2.2rem)} h3{font-size:1.25rem}
p{margin:0 0 1em}
.eyebrow{font:600 .74rem/1 var(--sans);letter-spacing:.16em;text-transform:uppercase;color:var(--ink-2);margin:0 0 .8rem}
.lede{font-size:clamp(1.05rem,2.2vw,1.3rem);color:var(--ink-2);max-width:42rem}
.mono{font-family:var(--mono)}
/* header */
.site-header{position:sticky;top:0;z-index:50;background:var(--hdr-bg);color:var(--hdr-ink);backdrop-filter:blur(10px);border-bottom:1px solid var(--hdr-line)}
.site-header .wrap{display:flex;align-items:center;gap:1rem;min-height:3.5rem;flex-wrap:wrap}
@font-face{font-family:"EB Garamond";font-style:normal;font-weight:700 800;font-display:swap;src:url(../img/brand/EBGaramond-latin.woff2) format("woff2")}
/* wordmark: gold EB Garamond caps on a navy plaque; tagline spread over the name's width (revert: git tag site-before-wordmark) */
.brand{font:600 1.05rem/1 var(--serif);text-decoration:none;display:flex;align-items:center;gap:.7rem;margin-right:auto;padding:.3rem 1.1rem .3rem .4rem;margin-block:.35rem;border-radius:.8rem;background:linear-gradient(135deg,#10245a,#091030);box-shadow:0 1px 0 rgba(255,255,255,.08) inset,0 6px 16px -8px rgba(9,16,48,.7)}
.brand>span{display:inline-flex;flex-direction:column}
.brand .wm{display:block;font:800 1.3rem/1 "EB Garamond",var(--serif);text-transform:uppercase;letter-spacing:.07em;background:linear-gradient(180deg,#fffbe0 0%,#ffe9a0 45%,#ffd35c 100%);-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent}
.brand small{display:flex;justify-content:space-between;align-self:stretch;font:700 .8rem/1 "EB Garamond",var(--sans);text-transform:uppercase;color:#ffe08a;margin-top:.35rem;margin-right:.07em}
.brand small i{font-style:normal}.brand small i:empty{width:.9em}
@media (max-width:520px){.brand .wm{font-size:1.05rem;letter-spacing:.05em}}
.brand svg{width:1.7rem;height:1.7rem;flex:none}
.brand img.emblem{width:3.4rem;height:3.4rem;flex:none}

.nav{display:flex;gap:.15rem;flex-wrap:wrap}
.nav a{color:var(--hdr-ink);text-decoration:none;padding:.5rem .6rem;border-radius:.5rem;font-size:.92rem}
.nav a:hover,.nav a[aria-current]{background:var(--hdr-hover)}
.nav-toggle,.theme{background:none;border:1px solid var(--hdr-line);color:var(--hdr-ink);border-radius:.5rem;padding:.4rem .6rem;font:inherit;font-size:.85rem;cursor:pointer}
.nav-toggle{display:none}
@media (max-width:960px){.nav-toggle{display:inline-block}.nav{display:none;width:100%;flex-direction:column;padding-bottom:.6rem}.nav.open{display:flex}}
main{display:block;flex:1 0 auto;min-height:60vh}
/* buttons / chips */
.btn{display:inline-flex;align-items:center;gap:.5rem;background:var(--accent);color:var(--accent-ink);border:0;border-radius:var(--btn-r);padding:.7rem 1.1rem;font:600 .95rem var(--sans);text-decoration:none;cursor:pointer}
.btn:hover{filter:brightness(1.07)} .btn.ghost{background:transparent;color:var(--ink);border:1px solid var(--rule)}
.chips{display:flex;flex-wrap:wrap;gap:.45rem;margin:0;padding:0;list-style:none}
.chips a,.chip{display:inline-block;border:1px solid var(--rule);border-radius:99px;padding:.25rem .75rem;font-size:.85rem;color:var(--ink);text-decoration:none;background:var(--card)}
.chips a:hover{border-color:var(--accent)}
/* search */
.search{position:relative;max-width:40rem}
.search input{width:100%;font:1.15rem var(--sans);padding:1rem 1.2rem 1rem 3rem;border-radius:.9rem;border:2px solid var(--ink);background:var(--card);color:var(--ink)}
.search svg{position:absolute;left:1rem;top:50%;transform:translateY(-50%);width:1.3rem;height:1.3rem;pointer-events:none;color:var(--ink-2)}
.suggest{position:absolute;left:0;right:0;top:calc(100% + .4rem);background:var(--card);border:1px solid var(--rule);border-radius:.8rem;box-shadow:var(--shadow);list-style:none;margin:0;padding:.3rem;z-index:30;max-height:60vh;overflow:auto}
.suggest li a{display:flex;justify-content:space-between;gap:1rem;padding:.55rem .7rem;border-radius:.5rem;color:var(--ink);text-decoration:none}
.suggest li a:hover,.suggest li a[aria-selected="true"]{background:var(--paper-2)}
.suggest small{color:var(--ink-2)}
/* hero */
.hero{padding-block:clamp(2.5rem,8vw,6rem) clamp(2rem,5vw,3.5rem);position:relative;overflow:hidden;isolation:isolate;background:var(--hero-bg)}
.hero h1 em{font-style:italic;color:var(--accent-2)}
:root[data-theme="nutrisize"] .hero h1 em,:root[data-theme="arcforge"] .hero h1 em{font-style:normal}
:root[data-theme="arcforge"] .hero h1 em{background:linear-gradient(120deg,#a78bfa,#22d3ee 60%,#ec4899);-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent}
.hero .arcs{position:absolute;right:-12%;top:-20%;width:min(70vw,46rem);opacity:.5;z-index:-1;pointer-events:none}
.stats{display:flex;flex-wrap:wrap;gap:1.2rem 2.2rem;margin:2rem 0 0;padding:0;list-style:none}
.stats b{display:block;font:var(--h-weight) clamp(1.8rem,4vw,2.6rem)/1 var(--serif);color:var(--head)} .stats span{font-size:.8rem;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-2)}
/* journey */
.journey{position:relative;padding-block:2rem 4rem}
.journey>.wrap{position:relative}
.river{position:absolute;left:calc(.65rem - 1px);top:0;bottom:0;width:2px;background:var(--river)}
.river i{position:absolute;left:0;top:0;width:2px;height:var(--prog,0%);background:var(--era);transition:height .15s linear}
.chapter{position:relative;padding:0 0 clamp(2.5rem,6vw,4.5rem) 2.6rem;--era:var(--e-deep-past);scroll-margin-top:4rem}
.chapter::before{content:"";position:absolute;left:.1rem;top:.25rem;width:1.1rem;height:1.1rem;border-radius:50%;background:var(--paper);border:3px solid var(--era);z-index:1}
.chapter .span{font:600 .78rem/1 var(--mono);letter-spacing:.06em;color:color-mix(in srgb,var(--era) 62%,var(--ink));margin-bottom:.5rem;display:block}
:root[data-mode="dark"] .chapter .span{color:var(--era)}
.chapter h3{font-size:clamp(1.6rem,4vw,2.6rem);margin-bottom:.3em}
.chapter .story{font-family:var(--serif);font-size:clamp(1.05rem,2.3vw,1.35rem);max-width:40rem;color:var(--ink-2);font-style:var(--story-style)}
.chapter .strip{display:flex;gap:1rem;overflow-x:auto;padding:.6rem .2rem 1.1rem;margin:0 -.2rem;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch}
.chapter .strip .card{flex:0 0 min(15rem,72vw);scroll-snap-align:start}
.chapter .more{font-weight:600}
@media (min-width:62rem){.chapter .strip{flex-wrap:wrap;overflow:visible}.chapter .strip .card{flex:0 0 calc(33.333% - .67rem)}}
.reveal{opacity:0;transform:translateY(14px);transition:opacity .7s ease,transform .7s ease}
.reveal.in,.no-js .reveal{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none}}
/* cards */
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,15rem),1fr));gap:1rem;margin:0;padding:0;list-style:none}
.card{background:var(--card);border:1px solid var(--rule);border-radius:var(--card-r);overflow:hidden;display:flex;flex-direction:column;box-shadow:var(--shadow);position:relative;transition:transform .25s ease,border-color .2s}
.card:hover{transform:translateY(-3px);border-color:var(--era)}
.card .ph{aspect-ratio:4/3;background:var(--paper-2);display:block;overflow:hidden}
.card .ph img,.card .ph svg{width:100%;height:100%;object-fit:cover;display:block}
.card .b{padding:.7rem .85rem .9rem;display:flex;flex-direction:column;gap:.25rem;flex:1}
.card h3{font-size:1.08rem;margin:0}
.card h3 a{color:var(--ink);text-decoration:none} .card h3 a::after{content:"";position:absolute;inset:0}
.card .m{font-size:.8rem;color:var(--ink-2)}
.dot{display:inline-block;width:.6rem;height:.6rem;border-radius:50%;background:var(--era);margin-right:.35rem;vertical-align:baseline}
[data-era="deep-past"]{--era:var(--e-deep-past)} [data-era="river-valleys"]{--era:var(--e-river-valleys)} [data-era="classical"]{--era:var(--e-classical)}
[data-era="crossroads"]{--era:var(--e-crossroads)} [data-era="contact"]{--era:var(--e-contact)} [data-era="modern"]{--era:var(--e-modern)} [data-era="living"]{--era:var(--e-living)}
/* sections */
.section{padding-block:clamp(2rem,5vw,3.5rem)}
.band{background:var(--paper-2);border-block:1px solid var(--rule)}
.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,13rem),1fr));gap:.8rem;margin:0;padding:0;list-style:none}
.tiles a{display:block;padding:1rem 1.1rem;border:1px solid var(--rule);border-radius:var(--card-r);background:var(--card);text-decoration:none;color:var(--ink);height:100%}
.tiles a:hover{border-color:var(--accent)}
.tiles b{font:var(--h-weight) 1.1rem var(--serif);display:block;color:var(--head)} .tiles span{font-size:.82rem;color:var(--ink-2)}
.tiles .era-tile{border-left:6px solid var(--era)}
/* constellation */
.constellation{width:100%;height:auto;display:block;border:1px solid var(--rule);border-radius:1rem;background:var(--card)}
.constellation .grat{stroke:var(--rule);stroke-width:1;fill:none;stroke-dasharray:2 5}
.constellation .link{stroke:var(--ink-2);stroke-opacity:.25;stroke-width:1;fill:none}
.constellation a circle{fill:var(--accent);fill-opacity:.85;stroke:var(--paper);stroke-width:2;transition:r .2s}
.constellation a:hover circle,.constellation a:focus-visible circle{fill-opacity:1;stroke:var(--ink)}
.constellation text{font:600 11px var(--sans);fill:var(--ink);paint-order:stroke;stroke:var(--card);stroke-width:3px}
.constellation .c circle{fill:var(--ink-2);fill-opacity:.7;stroke:none}
.constellation .c a circle{fill:var(--accent);stroke:none}
@media (max-width:640px){.constellation text{font-size:15px}}
/* page head & lists */
.pagehead{padding-block:clamp(2rem,6vw,3.5rem) 1rem;border-bottom:1px solid var(--rule);margin-bottom:1.5rem}
.crumbs{font-size:.85rem;color:var(--ink-2);margin-bottom:1rem}
.crumbs a{color:var(--ink-2)}
.az{display:flex;flex-wrap:wrap;gap:.3rem;margin:1rem 0;padding:0;list-style:none}
.az a,.az span{display:inline-grid;place-items:center;min-width:2.1rem;height:2.1rem;border:1px solid var(--rule);border-radius:.4rem;text-decoration:none;color:var(--ink);background:var(--card)}
.az span{opacity:.4} .az a[aria-current]{background:var(--ink);color:var(--paper)}
/* entry */
.entry{display:grid;gap:2rem;grid-template-columns:minmax(0,1fr);padding-block:1.5rem 3rem}
.entry>*{min-width:0}
@media (min-width:62rem){.entry{grid-template-columns:minmax(0,1.5fr) minmax(16rem,1fr);align-items:start}.entry aside{position:sticky;top:5rem}}
.entry figure{margin:0 0 1.2rem}.entry figure img,.entry figure svg{width:100%;height:auto;border-radius:1rem;border:1px solid var(--rule);display:block;background:var(--paper-2)}
.entry figcaption{font-size:.8rem;color:var(--ink-2);margin-top:.5rem}
.idbadge{font:600 .8rem var(--mono);letter-spacing:.06em;display:inline-flex;gap:.6rem;align-items:center;border:1px solid var(--ink);border-radius:99px;padding:.3rem .5rem .3rem .9rem}
.idbadge button{font:600 .75rem var(--sans);border:0;background:var(--ink);color:var(--paper);border-radius:99px;padding:.3rem .7rem;cursor:pointer}
.facts{background:var(--card);border:1px solid var(--rule);border-radius:1rem;padding:1.1rem 1.2rem;margin:0 0 1.2rem}
.facts dl{margin:0;display:grid;grid-template-columns:auto 1fr;gap:.45rem 1rem}
.facts dt{font-size:.74rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-2);padding-top:.15rem}.facts dd{margin:0}
.tl{display:flex;gap:3px;margin:.8rem 0 .2rem}.tl i{flex:1;height:.55rem;border-radius:2px;background:var(--rule)}
.tl i.on{background:var(--era);height:.9rem;margin-top:-.17rem}
.tl-l{display:flex;justify-content:space-between;font-size:.68rem;color:var(--ink-2)}
.prose h2{margin-top:1.6rem;font-size:1.4rem}.prose{max-width:44rem}
.prose table{border-collapse:collapse;width:100%}.prose td,.prose th{border-bottom:1px solid var(--rule);padding:.4rem .5rem;text-align:left}
.tablewrap{overflow-x:auto}
.note{border-left:4px solid var(--era);padding:.4rem 0 .4rem 1rem;color:var(--ink-2)}
.play{margin:1rem 0} .play p{display:flex;flex-wrap:wrap;gap:.5rem} .btn.soon{opacity:.55;cursor:default} .card .playable{display:inline-block;margin-top:.35rem;font:600 .72rem var(--sans);letter-spacing:.02em;color:var(--accent);border:1px solid var(--accent);border-radius:999px;padding:.1rem .5rem}
/* footer */
.site-footer{position:sticky;bottom:0;z-index:45;border-top:1px solid var(--ftr-line);background:var(--ftr-bg);padding-block:.55rem .65rem;margin-top:3rem;font-size:.8rem;line-height:1.45;color:var(--ftr-ink);box-shadow:0 -6px 18px rgba(0,0,0,.12)}
.site-footer a{color:var(--ftr-link)}
.site-footer .cols{display:flex;flex-direction:column;gap:.3rem}
.site-footer .cols>div{display:flex;flex-wrap:wrap;align-items:baseline;gap:.15rem .9rem;min-width:0}
.site-footer h2{font:600 .66rem var(--sans);letter-spacing:.14em;text-transform:uppercase;margin:0;color:var(--ftr-head);flex:0 0 4.6rem}
.site-footer ul{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.15rem .9rem;flex:1 1 0;min-width:0}.site-footer li{margin:0}
.site-footer p{margin:0;flex:1 1 0;min-width:0}
@media (max-width:40rem){.site-footer{font-size:.74rem;padding-block:.45rem .55rem}.site-footer .cols{gap:.2rem}.site-footer h2{flex-basis:3.9rem}
.site-footer ul{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;white-space:nowrap}.site-footer ul::-webkit-scrollbar{display:none}}
.visually-hidden{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.filters{display:flex;flex-wrap:wrap;gap:.6rem;margin:1rem 0}.filters select{font:inherit;padding:.5rem .7rem;border-radius:.5rem;border:1px solid var(--rule);background:var(--card);color:var(--ink);max-width:100%}
.dotmap{width:100%;height:auto;border:1px solid var(--rule);border-radius:1rem;background:var(--card)}
.dotmap a circle{fill:var(--accent);fill-opacity:.8}.dotmap a:hover circle,.dotmap a:focus-visible circle{fill-opacity:1;stroke:var(--ink);stroke-width:2}
.dotmap text{font:600 10px var(--sans);fill:var(--ink)}

.ph-fallback{display:block;width:100%;height:100%;background:linear-gradient(135deg,color-mix(in srgb,var(--era) 40%,var(--paper-2)),var(--paper-2))}
.motif{width:100%;height:100%;display:block}
.motif *{fill:none;stroke:var(--era);stroke-width:1.4;opacity:.85}
.motif .f{fill:var(--era);stroke:none;opacity:.25}
.motif-bg{background:color-mix(in srgb,var(--era) 14%,var(--paper-2))}

.hero .wrap{display:grid;gap:2rem}
.collage{display:none}
@media (min-width:62rem){.hero .wrap{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);align-items:center}.hero .wrap>div{min-width:0}
 .collage{display:grid;grid-template-columns:1fr 1fr;gap:.9rem;transform:rotate(-2.5deg)}
 .collage .card:nth-child(even){transform:translateY(1.6rem)}.collage .card:hover{transform:translateY(-3px)}.collage .card:nth-child(even):hover{transform:translateY(1.2rem)}}
.hero .search{max-width:100%}

/* view switcher (header, second row) */
.viewbar{border-top:1px solid var(--hdr-line)}
.viewbar .wrap{display:flex;align-items:center;gap:.7rem;min-height:2.9rem}
.views{display:flex;align-items:center;gap:.7rem;min-width:0;width:100%}
.views-l{font:600 .68rem/1 var(--sans);letter-spacing:.16em;text-transform:uppercase;color:var(--hdr-dim);flex:none}
.views ul{display:flex;gap:.2rem;list-style:none;margin:0;padding:.25rem;border:1px solid var(--rule);border-radius:99px;background:var(--card);overflow-x:auto;scrollbar-width:none;min-width:0;max-width:100%}
.views ul::-webkit-scrollbar{display:none}
.views a{display:flex;align-items:center;gap:.45rem;white-space:nowrap;min-height:2.25rem;padding:.2rem .95rem;border-radius:99px;color:var(--ink);text-decoration:none;font:600 .88rem var(--sans)}
.views a svg{width:1.1rem;height:1.1rem;flex:none}
.views a:hover{background:var(--paper-2)}
.views a[aria-current]{background:var(--ink);color:var(--paper)}
@media (max-width:520px){.views-l{display:none}.views a{padding:.2rem .8rem}}
@media (min-width:961px) and (max-width:1100px){
  .brand{padding-right:.8rem;gap:.55rem}
  .brand img.emblem{width:2.7rem;height:2.7rem}
  .brand .wm{font-size:1.08rem}
  .brand small{font-size:.66rem}
  .nav a{padding:.5rem .45rem;font-size:.88rem}
}
@media (max-width:960px){
  .site-header .wrap{row-gap:.2rem;column-gap:.4rem;min-height:0;padding-block:.3rem}
  .brand{flex:0 1 auto;min-width:0;margin-right:auto;margin-block:.2rem;padding:.25rem .6rem .25rem .3rem;gap:.5rem}
  .brand>span{min-width:0}
  .brand img.emblem{width:2.3rem;height:2.3rem}
  .brand .wm{font-size:clamp(.6rem,3.15vw,1.05rem);letter-spacing:.03em;white-space:nowrap}
  .brand small{font-size:clamp(.44rem,2.1vw,.72rem);margin-top:.25rem}
  .nav-toggle{order:2;font-size:0;padding:.7rem .65rem;line-height:0}
  .nav-toggle::before{content:"";display:block;width:1.1rem;height:2px;background:currentColor;box-shadow:0 -.36rem 0 currentColor,0 .36rem 0 currentColor}
  .theme-wrap{order:3}
  .theme{padding:.62rem .55rem}
  .nav{order:4}
  .viewbar .wrap{min-height:2.6rem}
}

/* theme picker (header) */
.theme-wrap{position:relative}
.theme{display:inline-flex;align-items:center;gap:.4rem;padding:.4rem .55rem}
.theme .caret{width:.45rem;height:.45rem;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg) translate(-1px,-1px)}
.theme .sw,.theme-menu .sw{width:1rem;height:1rem;border-radius:50%;border:1px solid rgba(128,128,128,.5);flex:none;display:inline-block}
.theme-menu{position:absolute;right:0;top:calc(100% + .45rem);z-index:70;margin:0;padding:.35rem;list-style:none;min-width:15.5rem;max-width:calc(100vw - 2rem);background:var(--card);color:var(--ink);border:1px solid var(--rule);border-radius:.8rem;box-shadow:0 14px 40px -12px rgba(0,0,0,.45)}
.theme-menu[hidden]{display:none}
.theme-menu button{display:flex;align-items:center;gap:.7rem;width:100%;text-align:left;font:inherit;font-size:.9rem;color:var(--ink);background:none;border:0;border-radius:.5rem;padding:.5rem .6rem;cursor:pointer}
.theme-menu button:hover{background:var(--paper-2)}
.theme-menu button[aria-pressed="true"]{font-weight:700;background:var(--paper-2)}
.theme-menu button[aria-pressed="true"]::after{content:"\2713";margin-left:auto;color:var(--accent-2)}
.theme-menu small{display:block;font-size:.74rem;color:var(--ink-2);font-weight:400}

/* interactive world map (countries page); colours are theme tokens */
:root{--map-sea:#dcebf7;--map-sea-hi:#eaf4fc;--map-land:#eef3f0;--map-low:#c4e8d6;--map-high:#0f7a52;--map-line:#ffffff;--map-sel:#0b3d2e;--map-label:#12211b;--map-dot:#0b5a3c}
:root[data-theme="classic"],:root[data-theme="light"]{--map-sea:#d4dfdc;--map-sea-hi:#e2ebe8;--map-land:#ebe4d2;--map-low:#ecc4a8;--map-high:#b4431f;--map-line:#f4efe4;--map-sel:#1b2430;--map-label:#1b2430;--map-dot:#8f2f12}
:root[data-theme="dark"],:root[data-theme="classic"][data-mode="dark"]{--map-sea:#0a1019;--map-sea-hi:#101a28;--map-land:#1d2735;--map-low:#7b4a37;--map-high:#f08a5d;--map-line:#0f151e;--map-sel:#efe8d8;--map-label:#efe8d8;--map-dot:#f4a780}
:root[data-theme="arcforge"]{--map-sea:#10131f;--map-sea-hi:#1a1f33;--map-land:#272c44;--map-low:#4c3fa8;--map-high:#c4b5fd;--map-line:#191b26;--map-sel:#22d3ee;--map-label:#eef0fb;--map-dot:#a9b9ff}
:root[data-theme="midnight"]{--map-sea:#070c1d;--map-sea-hi:#0e1731;--map-land:#17223f;--map-low:#7a6420;--map-high:#f6d777;--map-line:#0b1226;--map-sel:#ffffff;--map-label:#f3ecd6;--map-dot:#f1cd72}
:root[data-theme="teal"]{--map-sea:#142a2f;--map-sea-hi:#1b343a;--map-land:#2f474c;--map-low:#276068;--map-high:#f1cd72;--map-line:#1b343a;--map-sel:#ffffff;--map-label:#e4eaea;--map-dot:#f1cd72}
:root[data-theme="contrast"]{--map-sea:#000;--map-sea-hi:#0a0a0a;--map-land:#222;--map-low:#7a6600;--map-high:#ffd60a;--map-line:#fff;--map-sel:#fff;--map-label:#fff;--map-dot:#ffd60a}
.wmap{margin:0 0 .5rem}
.wmap:not(.on) .wmap-fallback{display:block}
.wmap-bar{display:flex;flex-wrap:wrap;gap:.6rem;margin-bottom:.8rem}
.wmap-search{position:relative;flex:1 1 18rem;min-width:min(100%,14rem)}
.wmap-search input{width:100%;font:1rem var(--sans);padding:.7rem .9rem .7rem 2.6rem;border-radius:var(--btn-r);border:2px solid var(--ink);background:var(--card);color:var(--ink)}
.wmap-search svg{position:absolute;left:.85rem;top:50%;transform:translateY(-50%);width:1.15rem;height:1.15rem;color:var(--ink-2);pointer-events:none}
.wmap-sg{position:absolute;left:0;right:0;top:calc(100% + .35rem);z-index:40;margin:0;padding:.3rem;list-style:none;background:var(--card);border:1px solid var(--rule);border-radius:.8rem;box-shadow:var(--shadow);max-height:60vh;overflow:auto}
.wmap-sg[hidden]{display:none}
.wmap-sg li{display:flex;justify-content:space-between;gap:1rem;padding:.5rem .7rem;border-radius:.5rem;cursor:pointer;color:var(--ink)}
.wmap-sg li small{color:var(--ink-2);white-space:nowrap}
.wmap-sg li:hover,.wmap-sg li[aria-selected="true"]{background:var(--paper-2)}
.wmap-sg li.all{border-top:1px solid var(--rule);margin-top:.2rem;font-weight:600}
.wmap-bar select{font:inherit;font-size:.92rem;padding:.6rem .7rem;border-radius:var(--btn-r);border:1px solid var(--rule);background:var(--card);color:var(--ink);max-width:100%}
.wmap-main{display:grid;gap:1rem;grid-template-columns:minmax(0,1fr)}
@media (min-width:62rem){.wmap-main{grid-template-columns:minmax(0,1fr) 22rem;align-items:stretch}}
.wmap-stage{position:relative;height:clamp(20rem,58vh,36rem);border:1px solid var(--rule);border-radius:var(--card-r);overflow:hidden;background:var(--map-sea);touch-action:pan-y}
.wmap-stage canvas{display:block;width:100%;height:100%;touch-action:pan-y}
.wmap.is-globe .wmap-stage canvas{touch-action:none}
.wmap-stage canvas:focus-visible{outline:3px solid var(--focus);outline-offset:-3px}
.wmap-tip{position:absolute;z-index:5;pointer-events:none;background:var(--card);color:var(--ink);border:1px solid var(--rule);border-radius:.5rem;padding:.35rem .6rem;font-size:.85rem;box-shadow:var(--shadow);display:flex;flex-direction:column;line-height:1.25}
.wmap-tip[hidden]{display:none}
.wmap-tip span{color:var(--ink-2);font-size:.78rem}
.wmap-ctl{position:absolute;right:.6rem;top:.6rem;display:flex;flex-direction:column;gap:.35rem;z-index:6}
.wmap-ctl button{font:600 .85rem var(--sans);min-width:2.5rem;min-height:2.5rem;padding:.3rem .6rem;border-radius:var(--btn-r);border:1px solid var(--rule);background:var(--card);color:var(--ink);cursor:pointer;box-shadow:var(--shadow)}
.wmap-ctl button:hover{border-color:var(--accent)}
.wmap-ctl button[aria-pressed="true"]{background:var(--ink);color:var(--paper)}
.wmap-legend{position:absolute;left:.7rem;bottom:.7rem;display:flex;align-items:center;gap:.5rem;font-size:.74rem;color:var(--map-label);z-index:5;background:color-mix(in srgb,var(--card) 80%,transparent);border-radius:99px;padding:.25rem .65rem}
.wmap-legend i{display:block;width:6rem;height:.55rem;border-radius:99px}
.wmap-hint{position:absolute;left:.7rem;top:.6rem;margin:0;font-size:.76rem;color:var(--map-label);background:color-mix(in srgb,var(--card) 80%,transparent);border-radius:99px;padding:.2rem .65rem;z-index:5;max-width:calc(100% - 7rem)}
@media (max-width:40rem){.wmap-hint{display:none}}
.wmap-panel{border:1px solid var(--rule);border-radius:var(--card-r);background:var(--card);padding:1rem;max-height:36rem;min-height:14rem;overflow:auto}
@media (max-width:61.99rem){.wmap-panel{max-height:30rem}}
.wp-k{font:600 .7rem/1.2 var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-2);margin:0 0 .35rem}
.wp-h{display:flex;flex-wrap:wrap;gap:.6rem;justify-content:space-between;margin-bottom:.8rem}
.wp-h h3{margin:0;font-size:1.5rem}
.wp-s{margin:.1rem 0 0;color:var(--ink-2);font-size:.9rem}
.wp-a{display:flex;flex-wrap:wrap;gap:.4rem;align-items:flex-start}
.wp-a .btn{padding:.45rem .75rem;font-size:.85rem}
.wp-chips{display:flex;flex-wrap:wrap;gap:.35rem;margin:0 0 1rem;padding:0;list-style:none}
.wp-chips button{font:inherit;font-size:.82rem;border:1px solid var(--rule);background:var(--paper-2);color:var(--ink);border-radius:99px;padding:.25rem .65rem;cursor:pointer}
.wp-chips button:hover{border-color:var(--accent)}
.wp-chips i{font-style:normal;color:var(--ink-2);margin-left:.2rem}
.wp-list{list-style:none;margin:0 0 .8rem;padding:0;display:grid;gap:.5rem}
.wg{display:flex;gap:.7rem;align-items:center;text-decoration:none;color:var(--ink);padding:.35rem;border-radius:.6rem;border:1px solid transparent}
.wg:hover{background:var(--paper-2);border-color:var(--rule)}
.wg-ph{flex:none;width:4.5rem;height:3.4rem;border-radius:.45rem;overflow:hidden;background:var(--paper-2)}
.wg-ph img,.wg-ph .ph-fallback{width:100%;height:100%;object-fit:cover;display:block}
.wg-t{display:flex;flex-direction:column;min-width:0}
.wg-t b{font-size:.95rem;line-height:1.25}
.wg-t small{color:var(--ink-2);font-size:.76rem;line-height:1.3}
.wp-game{border:1px solid var(--rule);border-radius:.8rem;padding:.7rem;margin-bottom:1rem;background:var(--paper-2)}
.wp-empty{color:var(--ink-2)}
.wp-more{width:100%;justify-content:center}
/* game page extras */
.aka{margin:-.2rem 0 0;color:var(--ink-2);font-size:1.02rem;max-width:44rem}
.aka span{font:600 .72rem/1 var(--sans);letter-spacing:.14em;text-transform:uppercase;margin-right:.5rem}
.onmap{margin:0 0 1.2rem}
.cite{border-top:1px solid var(--rule);padding-top:.9rem;font-size:.85rem;color:var(--ink-2)}
.cite h2{font:600 .72rem var(--sans);letter-spacing:.14em;text-transform:uppercase;margin:0 0 .4rem;color:var(--ink-2)}
.cite p{margin:0;overflow-wrap:anywhere}
/* search results: compact rows */
.rows{display:grid;gap:.6rem;margin:0 0 1rem;padding:0;list-style:none;grid-template-columns:minmax(0,1fr);--era:var(--e-deep-past)}
@media (min-width:62rem){.rows{grid-template-columns:repeat(2,minmax(0,1fr))}}
.row{position:relative;display:flex;gap:.85rem;align-items:center;background:var(--card);border:1px solid var(--rule);border-radius:var(--card-r);padding:.5rem;box-shadow:var(--shadow);transition:border-color .2s}
.row:hover{border-color:var(--era)}
.row .ph{flex:none;width:5.5rem;height:4.1rem;border-radius:.55rem;overflow:hidden;background:var(--paper-2)}
.row .ph img,.row .ph .ph-fallback{width:100%;height:100%;object-fit:cover;display:block}
.row .b{display:flex;flex-direction:column;gap:.1rem;min-width:0}
.row h3{font-size:1.02rem;margin:0}
.row h3 a{color:var(--head);text-decoration:none}.row h3 a::after{content:"";position:absolute;inset:0}
.row .m{font-size:.8rem;color:var(--ink-2);line-height:1.35}
.row .m.alt{font-style:italic}
#search-page #count{font-size:1rem;margin:.2rem 0 1rem}
.filters select{flex:1 1 10rem}
@media (min-width:40rem){.filters select{flex:0 1 16rem}}
.entry{overflow-wrap:break-word}.entry li a{overflow-wrap:anywhere}
.wmap-regions{display:flex;flex-wrap:wrap;gap:.4rem;margin:0 0 .8rem}
.wmap-regions button{font:inherit;font-size:.85rem;border:1px solid var(--rule);background:var(--card);color:var(--ink);border-radius:99px;padding:.3rem .8rem;cursor:pointer}
.wmap-regions button:hover{border-color:var(--accent)}
.wmap-regions button[aria-pressed="true"]{background:var(--ink);color:var(--paper);border-color:var(--ink)}

/* header row stays on ONE line on wide screens (brand | nav | theme); below 1180px the nav folds into the Menu button, so the theme button never drops under the logo */
@media (min-width:1181px){.site-header .wrap{flex-wrap:nowrap}.brand{flex:none}.brand .wm{white-space:nowrap}.nav{flex-wrap:nowrap;min-width:0}.nav a{white-space:nowrap;padding-inline:.45rem}.theme-wrap{flex:none}}
@media (min-width:1400px){.nav a{padding-inline:.6rem}}
@media (min-width:961px) and (max-width:1180px){.nav-toggle{display:inline-block}.nav{display:none;width:100%;flex-direction:column;padding-bottom:.6rem}.nav.open{display:flex}.theme-wrap{order:3;flex:none}.nav-toggle{order:2;flex:none}.site-header .wrap{flex-wrap:wrap;column-gap:.6rem}.brand{flex:0 1 auto;min-width:0}.brand>span{min-width:0}.brand img.emblem{width:2.7rem;height:2.7rem}.brand .wm{font-size:clamp(.9rem,2.1vw,1.2rem);white-space:nowrap;letter-spacing:.05em}.brand small{font-size:clamp(.55rem,1.2vw,.72rem)}}
.card a.playable{text-decoration:none} .card a.playable:hover,.card a.playable:focus-visible{background:var(--accent);color:#fff}
