@font-face{font-family:"Fraunces";src:url("font/fraunces-latin-ext.woff2") format("woff2");font-weight:300 900;font-display:swap;unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}
@font-face{font-family:"Fraunces";src:url("font/fraunces-latin.woff2") format("woff2");font-weight:300 900;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:"Literata";src:url("font/literata-latin-ext.woff2") format("woff2");font-weight:300 700;font-display:swap;unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}
@font-face{font-family:"Literata";src:url("font/literata-latin.woff2") format("woff2");font-weight:300 700;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}

:root{
  --bg:#F3EEE4; --surface:#FAF7F0; --raised:#FFFDF8;
  --ink:#1B1A17; --muted:#4F4A40; --accent:#9A3B22; --accent-ink:#8A3018; --blue:#2B4A78;
  --line:#D9D2C3; --line-strong:#B9B09B; --land:#DED6C4; --sea:#EDE7DB; --dot-missing:#9B958A;
  --shadow:rgba(40,30,15,.14);
  --c1:#B1421F; --c2:#2F5F8F; --c3:#5E7F2E; --c4:#C48512; --c5:#7A4C9B; --c6:#238A7C; --c7:#B24C7A; --c8:#6C6A63; --c9:#8C5A2B; --c10:#3F7FB0;
  --r-africa:#C48512; --r-circum:#B1421F; --r-eurasia:#7A4C9B; --r-pacific:#238A7C; --r-namerica:#2F5F8F; --r-samerica:#5E7F2E;
  --serif:"Literata","Iowan Old Style","Palatino Linotype",Palatino,Georgia,serif;
  --display:"Fraunces","Iowan Old Style",Georgia,serif;
  --measure:38rem;
  color-scheme:light;
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    color-scheme:dark;
    --bg:#121417; --surface:#1A1D22; --raised:#22262C;
    --ink:#ECE7DC; --muted:#BDB5A6; --accent:#F0906F; --accent-ink:#F5A488; --blue:#8FB4E4;
    --line:#2C3138; --line-strong:#454B54; --land:#2A2F36; --sea:#171A1F; --dot-missing:#6E6A62;
    --shadow:rgba(0,0,0,.5);
    --c1:#EE7B58; --c2:#7FB0E0; --c3:#A9C96A; --c4:#EBB84A; --c5:#C8A0E6; --c6:#6DD2C2; --c7:#EA8FB8; --c8:#B0ACA3; --c9:#D69A63; --c10:#8CCBF0;
    --r-africa:#EBB84A; --r-circum:#EE7B58; --r-eurasia:#C8A0E6; --r-pacific:#6DD2C2; --r-namerica:#7FB0E0; --r-samerica:#A9C96A;
  }
}
:root[data-theme="dark"]{
  color-scheme:dark;
  --bg:#121417; --surface:#1A1D22; --raised:#22262C;
  --ink:#ECE7DC; --muted:#BDB5A6; --accent:#F0906F; --accent-ink:#F5A488; --blue:#8FB4E4;
  --line:#2C3138; --line-strong:#454B54; --land:#2A2F36; --sea:#171A1F; --dot-missing:#6E6A62;
  --shadow:rgba(0,0,0,.5);
  --c1:#EE7B58; --c2:#7FB0E0; --c3:#A9C96A; --c4:#EBB84A; --c5:#C8A0E6; --c6:#6DD2C2; --c7:#EA8FB8; --c8:#B0ACA3; --c9:#D69A63; --c10:#8CCBF0;
  --r-africa:#EBB84A; --r-circum:#EE7B58; --r-eurasia:#C8A0E6; --r-pacific:#6DD2C2; --r-namerica:#7FB0E0; --r-samerica:#A9C96A;
}

*,*::before,*::after{box-sizing:border-box}
[hidden]{display:none!important}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--serif);font-size:1.0625rem;line-height:1.66;font-variant-numeric:oldstyle-nums;}
img{max-width:100%;height:auto;display:block}
a{color:var(--accent-ink);text-underline-offset:.18em;text-decoration-thickness:.06em}
a:hover{color:var(--ink)}
:focus-visible{outline:3px solid var(--accent);outline-offset:3px;border-radius:2px}
.skip{position:absolute;left:-9999px;top:0;background:var(--raised);color:var(--ink);padding:.7rem 1rem;z-index:60;border:1px solid var(--line-strong)}
.skip:focus{left:.6rem;top:.6rem}
.wrap{width:min(100% - 2.2rem, 66rem);margin-inline:auto}
section{padding-block:clamp(2.6rem,6vw,4.6rem)}
section+section{border-top:1px solid var(--line)}
section .wrap > *{max-width:var(--measure);margin-inline:auto}
section .wrap > .atlas, section .wrap > .tables, section .wrap > .ritual, section .wrap > .method-grid{max-width:none}
h1,h2,h3,h4{font-family:var(--display);font-weight:600;line-height:1.12;letter-spacing:-.012em;margin:0 0 .6em;text-wrap:balance}
h2{font-size:clamp(1.55rem,3.2vw,2.1rem);margin-top:0}
h3{font-size:1.25rem}
p{margin:0 0 1.1em}
p.lead{font-size:1.17rem}
b,strong{font-weight:650}
.small{font-size:.9rem;color:var(--muted)}
.js-only{display:none}
.js .js-only{display:revert}
.js .no-js{display:none}

/* ---------- top bar ---------- */
.topbar{position:sticky;top:0;z-index:40;background:color-mix(in srgb,var(--bg) 90%,transparent);backdrop-filter:blur(9px);border-bottom:1px solid var(--line)}
.topbar-in{display:flex;align-items:center;gap:.9rem;justify-content:space-between;padding-block:.55rem}
.brand{font-family:var(--display);font-weight:600;font-size:.9rem;letter-spacing:.09em;text-transform:uppercase;color:var(--muted);text-decoration:none}
.brand:hover{color:var(--ink)}
.topbar nav{display:flex;gap:.4rem;align-items:center}
.btn{font:inherit;font-size:.82rem;font-family:var(--display);font-weight:600;letter-spacing:.03em;color:var(--ink);background:var(--raised);border:1px solid var(--line-strong);border-radius:999px;padding:.38rem .85rem;cursor:pointer;text-decoration:none;line-height:1.2;min-height:34px;display:inline-flex;align-items:center;gap:.4rem}
.btn:hover{border-color:var(--ink)}
.btn[aria-pressed="true"],.btn.is-on{background:var(--ink);color:var(--bg);border-color:var(--ink)}

/* ---------- hero ---------- */
.hero{padding:clamp(2.6rem,7vw,5.5rem) 0 clamp(1.8rem,4vw,3rem)}
.hero .wrap > *{max-width:46rem;margin-inline:auto}
.kicker{font-family:var(--display);font-weight:600;font-size:.82rem;letter-spacing:.2em;text-transform:uppercase;color:var(--accent-ink);margin:0 0 1rem}
.hero h1{font-size:clamp(2.3rem,6.4vw,4.4rem);font-weight:600;letter-spacing:-.025em;line-height:1.02;margin:0 0 1.1rem;font-variation-settings:"opsz" 144,"WONK" 1}
.deck{font-size:clamp(1.12rem,2.1vw,1.36rem);line-height:1.5;color:var(--ink);margin:0 0 1.2rem}
.deck b{color:var(--accent-ink);font-weight:600}
.byline{font-size:.92rem;color:var(--muted);margin:0}

/* ---------- opening ritual ---------- */
.ritual{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:clamp(1.2rem,3vw,2rem);box-shadow:0 12px 40px -30px var(--shadow)}
.ritual h2{font-size:clamp(1.4rem,3vw,1.9rem);margin-bottom:.4rem}
.ritual .lead{margin-bottom:1rem}
.choices{display:grid;grid-template-columns:repeat(auto-fit,minmax(15rem,1fr));gap:.55rem;margin:0 0 1rem;padding:0;list-style:none}
.choice{font:inherit;font-size:1rem;text-align:left;color:var(--ink);background:var(--raised);border:1px solid var(--line-strong);border-radius:10px;padding:.75rem .95rem;cursor:pointer;line-height:1.35;min-height:48px;display:flex;gap:.7rem;align-items:center}
.choice:hover{border-color:var(--ink)}
.choice[aria-pressed="true"]{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}
.choice .k{font-family:var(--display);font-weight:600;color:var(--muted);min-width:1.3rem}
.ritual-result{font-size:1.12rem;margin:0;min-height:1.6em}
.ritual-result b{color:var(--accent-ink)}
.ritual-static{margin:0}

/* ---------- the atlas ---------- */
.atlas{display:grid;gap:1rem}
.atlas-head p{max-width:var(--measure)}
.domains-row{display:flex;flex-wrap:wrap;gap:.4rem .8rem;align-items:center;justify-content:space-between}
.domains{display:flex;flex-wrap:wrap;gap:.4rem;margin:0;padding:0;list-style:none}
.surprise{font-size:.78rem}
.domains .btn{font-size:.78rem}
.qlist{display:flex;flex-wrap:wrap;gap:.45rem;margin:0;padding:0;list-style:none}
.qbtn{font:inherit;font-size:.95rem;color:var(--ink);background:var(--raised);border:1px solid var(--line);border-radius:10px;padding:.5rem .8rem;cursor:pointer;text-align:left;line-height:1.3;min-height:44px}
.qbtn:hover{border-color:var(--ink)}
.qbtn[aria-pressed="true"]{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.qbtn .tag{display:inline-block;font-family:var(--display);font-size:.68rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-left:.4rem}
.qbtn[aria-pressed="true"] .tag{color:var(--bg);opacity:.75}

.stage{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:clamp(.9rem,2.5vw,1.6rem);box-shadow:0 18px 50px -34px var(--shadow)}
.stage-top{display:flex;flex-wrap:wrap;gap:.8rem 1.2rem;align-items:flex-start;justify-content:space-between;margin-bottom:.6rem}
.stage-top h3{font-size:clamp(1.3rem,2.8vw,1.75rem);margin:0;max-width:34rem}
.controls{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}
.seg{display:inline-flex;border:1px solid var(--line-strong);border-radius:999px;overflow:hidden;background:var(--raised)}
.seg .btn{border:0;border-radius:0;background:transparent;min-height:34px}
.seg .btn+.btn{border-left:1px solid var(--line-strong)}
.seg .btn[aria-pressed="true"]{background:var(--ink);color:var(--bg)}
.sentence{font-size:1.08rem;margin:0 0 .8rem;min-height:1.6em}
.sentence b{color:var(--accent-ink)}
.canvas-wrap{position:relative;border-radius:10px;overflow:hidden;background:var(--sea);border:1px solid var(--line)}
.canvas-wrap.groups{background:var(--raised)}
canvas{display:block;width:100%;touch-action:manipulation}
.tip{position:absolute;pointer-events:none;background:var(--ink);color:var(--bg);font-size:.82rem;line-height:1.3;padding:.35rem .55rem;border-radius:6px;transform:translate(-50%,calc(-100% - 10px));white-space:nowrap;max-width:min(80vw,20rem);z-index:5}
.legend{display:flex;flex-wrap:wrap;gap:.4rem;margin:.9rem 0 0;padding:0;list-style:none}
.legend-item{font:inherit;font-size:.88rem;color:var(--ink);background:var(--raised);border:1px solid var(--line);border-radius:999px;padding:.32rem .75rem .32rem .5rem;cursor:pointer;display:inline-flex;align-items:center;gap:.45rem;line-height:1.25;min-height:36px}
.legend-item:hover{border-color:var(--ink)}
.legend-item[aria-pressed="true"]{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}
.legend-item .sw{width:.8rem;height:.8rem;border-radius:50%;flex:none;background:var(--c8)}
.legend-item .sw.hollow{background:transparent;border:2px solid var(--dot-missing)}
.legend-item .n{color:var(--muted);font-variant-numeric:tabular-nums}
.legend-item.static{cursor:default}
.legend-item.static:hover{border-color:var(--line)}
.lens-note{margin:.6rem 0 0;max-width:var(--measure)}
.note{margin:1rem 0 0;max-width:var(--measure)}
.stage details{margin-top:.9rem;border-top:1px solid var(--line);padding-top:.7rem}
.stage summary{cursor:pointer;font-family:var(--display);font-weight:600;font-size:.95rem}
.method-body{font-size:.93rem;color:var(--ink)}
.method-body table{border-collapse:collapse;width:100%;margin:.6rem 0;font-size:.88rem}
.method-body th,.method-body td{text-align:left;vertical-align:top;padding:.35rem .5rem;border-bottom:1px solid var(--line)}
.method-body th{font-weight:600}
.method-body .src{color:var(--muted)}
.tabnum{font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}
.search{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}
.search input{font:inherit;font-size:.95rem;padding:.42rem .7rem;border:1px solid var(--line-strong);border-radius:8px;background:var(--raised);color:var(--ink);min-width:13rem;min-height:36px}
.stage-error{padding:1rem;border:1px solid var(--accent);border-radius:10px}

/* ---------- society card ---------- */
.card{position:fixed;z-index:50;background:var(--raised);color:var(--ink);border:1px solid var(--line-strong);box-shadow:0 20px 60px -20px var(--shadow);overflow:auto;padding:1.1rem 1.2rem 1.4rem}
@media (min-width:900px){.card{top:5rem;right:1rem;width:min(26rem,40vw);max-height:calc(100vh - 6rem);border-radius:14px}}
@media (max-width:899px){.card{left:0;right:0;bottom:0;max-height:72vh;border-radius:14px 14px 0 0}}
.card h3{font-size:1.35rem;margin:0 .5rem .2rem 0;padding-right:2.4rem}
.card h3 .yr,.quiz-name .yr{font-weight:400;color:var(--muted);font-size:.85em;white-space:nowrap}
.card .obs{margin-top:.4rem}
.card .obs p{margin:.15rem 0}
.card .obs-k{font-family:var(--display);font-weight:600;letter-spacing:.06em;text-transform:uppercase;font-size:.7rem}
.tip-sub{color:var(--bg);opacity:.8}
.card .close{position:absolute;top:.7rem;right:.7rem}
.card dl{display:grid;grid-template-columns:auto 1fr;gap:.2rem .8rem;margin:.6rem 0;font-size:.92rem}
.card dt{color:var(--muted)}
.card dd{margin:0}
.card .answer{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:.7rem .85rem;margin:.6rem 0}
.card .answer .q{font-size:.85rem;color:var(--muted);margin:0 0 .2rem}
.card .answer .a{font-size:1.05rem;margin:0}
.card .answer .code{font-size:.82rem;color:var(--muted);margin:.25rem 0 0}
.card h4{font-size:.95rem;margin:.9rem 0 .35rem}
.card ul{margin:0;padding-left:1.1rem;font-size:.9rem}
.card li{margin:.15rem 0}
.card .others li span{color:var(--muted)}
.card details{font-size:.88rem;margin-top:.6rem}
.card summary{cursor:pointer}
.card .srcs li{font-size:.82rem;color:var(--muted);margin:.25rem 0}

/* ---------- rare possibilities ---------- */
.rare{list-style:none;margin:0;padding:0;display:grid;gap:.6rem;grid-template-columns:repeat(auto-fit,minmax(18rem,1fr));max-width:none}
.rare li{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:.85rem 1rem;display:flex;flex-direction:column;gap:.2rem}
.rare-link{text-decoration:none;color:var(--ink);display:flex;justify-content:space-between;gap:.8rem;align-items:baseline}
.rare-link:hover .rare-t{text-decoration:underline;text-underline-offset:.18em}
.rare-t{font-family:var(--display);font-weight:600;font-size:1.08rem;line-height:1.25}
.rare-n{font-variant-numeric:tabular-nums;color:var(--accent-ink);white-space:nowrap;font-weight:650}
.rare-q{font-size:.88rem;color:var(--muted)}
.rare-q .tag{display:inline-block;font-family:var(--display);font-size:.66rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-left:.35rem}
.rare-who{font-size:.86rem}

/* ---------- the game ---------- */
.quiz{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:clamp(1.2rem,3vw,2rem);box-shadow:0 12px 40px -30px var(--shadow)}
.quiz h2{font-size:clamp(1.4rem,3vw,1.9rem);margin-bottom:.4rem}
.quiz .lead{max-width:var(--measure);font-size:1.05rem}
.quiz-qs{list-style:none;margin:0 0 1.2rem;padding:0;display:grid;gap:.9rem}
.quiz-q{font-family:var(--display);font-weight:600;font-size:1.02rem;margin:0 0 .4rem;display:flex;gap:.55rem;align-items:baseline}
.quiz-i{color:var(--muted);font-variant-numeric:tabular-nums;min-width:1.3rem}
.quiz-q .tag{display:inline-block;font-family:var(--display);font-size:.66rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-left:.4rem;font-weight:600}
.quiz-choices{list-style:none;margin:0;padding:0 0 0 1.85rem;display:flex;flex-wrap:wrap;gap:.4rem}
.chip{font:inherit;font-size:.9rem;color:var(--ink);background:var(--raised);border:1px solid var(--line-strong);border-radius:999px;padding:.4rem .8rem;cursor:pointer;line-height:1.25;min-height:36px;text-align:left}
.chip:hover{border-color:var(--ink)}
.chip[aria-pressed="true"]{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.quiz-out{border-top:1px solid var(--line);padding-top:1rem}
.quiz-head{font-size:1.15rem;margin:0 0 .3rem}
.quiz-head b{color:var(--accent-ink)}
.quiz-need{margin:0 0 .5rem;color:var(--muted)}
.quiz-list{list-style:none;margin:.6rem 0 0;padding:0;display:grid;gap:.35rem}
.quiz-soc{font:inherit;width:100%;text-align:left;background:var(--raised);border:1px solid var(--line);border-radius:10px;padding:.5rem .8rem;cursor:pointer;color:var(--ink);display:grid;grid-template-columns:1.6rem 1fr auto;gap:.2rem .7rem;align-items:baseline;min-height:44px}
.quiz-soc:hover{border-color:var(--ink)}
.quiz-rank{color:var(--muted);font-variant-numeric:tabular-nums}
.quiz-name{font-family:var(--display);font-weight:600}
.quiz-reg{grid-column:2;font-size:.85rem;color:var(--muted)}
.quiz-d{grid-column:3;grid-row:1 / span 2;font-size:.88rem;color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap;align-self:center}
.quiz-actions{margin:.9rem 0 0;display:flex;gap:.5rem;flex-wrap:wrap}
@media (max-width:640px){.quiz-soc{grid-template-columns:1.4rem 1fr}.quiz-d{grid-column:2;grid-row:auto}.quiz-choices{padding-left:0}}

/* ---------- static tables ---------- */
.tables details{border:1px solid var(--line);border-radius:10px;padding:.5rem .9rem;margin:.5rem 0;background:var(--surface)}
.tables summary{cursor:pointer;font-family:var(--display);font-weight:600;font-size:1.05rem;padding:.3rem 0}
.tables h3{font-size:1.05rem;margin:1rem 0 .3rem}
.tables table{border-collapse:collapse;width:100%;max-width:38rem;font-size:.92rem;margin:.2rem 0 .6rem}
.tables td,.tables th{padding:.3rem .5rem;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
.tables td.tabnum,.tables th.tabnum{text-align:right}
.tables .src{font-size:.82rem;color:var(--muted);margin:0 0 .4rem}

/* ---------- method ---------- */
.method-grid{display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(17rem,1fr))}
.src-card{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:1rem 1.1rem;font-size:.92rem}
.src-card h3{font-size:1.02rem;margin:0 0 .4rem}
.src-card p{margin:0 0 .5rem}

/* ---------- footer ---------- */
footer{border-top:1px solid var(--line);padding:2rem 0 3rem;font-size:.9rem;color:var(--muted)}
footer .wrap{display:flex;flex-wrap:wrap;gap:.6rem 1.4rem;justify-content:space-between}
footer a{color:var(--muted)}
.totop{position:fixed;right:1rem;bottom:1rem;z-index:30}

@media (max-width:640px){
  body{font-size:1rem}
  .stage-top h3{font-size:1.2rem}
  .legend-item{font-size:.84rem}
  .controls{width:100%}
  .search input{flex:1}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
