/* Layout: one narrow column. Card on top, square left/right x authoritarian/libertarian pad in the middle, reveal and button below. */
:root{
  --bg:#e8ecf2; --panel:#f6f8fb; --ink:#13203b; --muted:#566178; --line:#c6cfdb;
  --accent:#d62839; --accent-ink:#ffffff; --q1:#eef1f6; --q2:#e3e8f0;
  --good:#2b9a5b; --ok:#d9a916; --meh:#e2761f; --bad:#d62839;
  --display:'Big Shoulders Display','Arial Narrow',Impact,sans-serif;
  --body:'Instrument Sans',system-ui,-apple-system,'Segoe UI',sans-serif;
  --mono:'DM Mono',ui-monospace,'SFMono-Regular',Menlo,monospace;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --bg:#0e1524; --panel:#172139; --ink:#edf1f9; --muted:#97a3bb; --line:#2b3754;
    --accent:#ff5468; --accent-ink:#1a0509; --q1:#141d33; --q2:#1b2744;
    --good:#43c479; --ok:#f0c43a; --meh:#f59244; --bad:#ff5468; color-scheme:dark;
  }
}
:root[data-theme="dark"]{
  --bg:#0e1524; --panel:#172139; --ink:#edf1f9; --muted:#97a3bb; --line:#2b3754;
  --accent:#ff5468; --accent-ink:#1a0509; --q1:#141d33; --q2:#1b2744;
  --good:#43c479; --ok:#f0c43a; --meh:#f59244; --bad:#ff5468; color-scheme:dark;
}
*{box-sizing:border-box}
body{background:var(--bg);color:var(--ink);font-family:var(--body);font-size:15px;line-height:1.45;padding-inline:16px;padding-block:20px 40px}
main{max-width:520px;margin-inline:auto;display:flex;flex-direction:column;gap:16px}
header{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;flex-wrap:wrap}
h1{font-family:var(--display);font-weight:900;font-size:clamp(2.6rem,12vw,3.6rem);line-height:.9;letter-spacing:.01em;text-transform:uppercase;margin:0;text-wrap:balance}
h1 span{color:var(--accent)}
.meta{font-family:var(--mono);font-size:12px;color:var(--muted);text-align:right;letter-spacing:.04em}
.progress{display:grid;grid-template-columns:repeat(5,1fr);gap:6px}
.progress i{height:6px;background:var(--line);display:block;transition:background .2s}
.progress i.cur{background:var(--ink)}
.progress i.g{background:var(--good)}.progress i.y{background:var(--ok)}.progress i.o{background:var(--meh)}.progress i.r{background:var(--bad)}
.card{background:var(--panel);border:1px solid var(--line);padding:16px 18px;display:flex;flex-direction:column;gap:6px}
.tag{font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--accent)}
.card h2{font-family:var(--display);font-weight:900;font-size:clamp(2rem,8vw,2.6rem);line-height:.95;text-transform:uppercase;margin:0;text-wrap:balance}
.card p{margin:0;color:var(--muted);max-width:60ch}
.padwrap{display:grid;grid-template-columns:auto 1fr auto;grid-template-rows:auto auto auto;gap:6px;align-items:center}
.ax{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);user-select:none}
.ax.t{grid-column:2;grid-row:1;text-align:center}
.ax.b{grid-column:2;grid-row:3;text-align:center}
.ax.l{grid-column:1;grid-row:2;writing-mode:vertical-rl;transform:rotate(180deg)}
.ax.r{grid-column:3;grid-row:2;writing-mode:vertical-rl}
.pad{grid-column:2;grid-row:2;position:relative;aspect-ratio:1/1;width:100%;max-width:100%;border:2px solid var(--ink);touch-action:none;cursor:crosshair;overflow:hidden;
  background:
    linear-gradient(var(--line) 1px,transparent 1px) 0 0/10% 10%,
    linear-gradient(90deg,var(--line) 1px,transparent 1px) 0 0/10% 10%,
    var(--q1)}
.pad::before{content:"";position:absolute;inset:0 50% 50% 0;background:var(--q2);opacity:.75;pointer-events:none}
.pad::after{content:"";position:absolute;inset:50% 0 0 50%;background:var(--q2);opacity:.75;pointer-events:none}
.pad:focus-visible{outline:3px solid var(--accent);outline-offset:3px}
.axis-h,.axis-v{position:absolute;background:var(--ink);opacity:.55;z-index:1;pointer-events:none}
.axis-h{left:0;right:0;top:50%;height:1px}.axis-v{top:0;bottom:0;left:50%;width:1px}
.pad svg{position:absolute;inset:0;width:100%;height:100%;z-index:2;pointer-events:none}
.pin{position:absolute;width:22px;height:22px;border-radius:50%;transform:translate(-50%,-50%);z-index:3;pointer-events:none;display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:11px;font-weight:500}
.pin.you{background:var(--ink);color:var(--bg);box-shadow:0 0 0 3px var(--bg)}
.pin.ans{background:var(--accent);color:var(--accent-ink);box-shadow:0 0 0 3px var(--bg)}
.hint{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:12px;letter-spacing:.06em;color:var(--muted);pointer-events:none;z-index:2;text-align:center;padding:0 24px}
.hint span{background:var(--panel);padding:6px 10px;border:1px solid var(--line)}
.reveal{border:1px solid var(--line);background:var(--panel);padding:14px 16px;display:flex;flex-direction:column;gap:8px}
.score{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}
.score b{font-family:var(--display);font-weight:900;font-size:2.4rem;line-height:1}
.score span{font-family:var(--mono);font-size:12px;color:var(--muted);letter-spacing:.05em}
.reveal p{margin:0;max-width:60ch}
.reveal small{font-family:var(--mono);font-size:11px;color:var(--muted);letter-spacing:.04em}
button{font-family:var(--display);font-weight:900;font-size:1.35rem;letter-spacing:.06em;text-transform:uppercase;background:var(--ink);color:var(--bg);border:0;padding:14px 18px;cursor:pointer;width:100%}
button:disabled{background:var(--line);color:var(--muted);cursor:not-allowed}
button:focus-visible{outline:3px solid var(--accent);outline-offset:3px}
button.alt{background:transparent;color:var(--ink);border:2px solid var(--ink)}
.total{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.total b{font-family:var(--display);font-weight:900;font-size:clamp(3.6rem,16vw,5rem);line-height:.9}
.total span{font-family:var(--mono);color:var(--muted)}
.rows{display:flex;flex-direction:column;border-top:1px solid var(--line)}
.row{display:grid;grid-template-columns:22px 1fr auto;gap:10px;align-items:center;padding:9px 0;border-bottom:1px solid var(--line);min-width:0}
.row .sq{width:18px;height:18px}
.row .nm{min-width:0;overflow-wrap:anywhere}
.row .pt{font-family:var(--mono);font-size:13px;font-variant-numeric:tabular-nums;white-space:nowrap}
.sq.g{background:var(--good)}.sq.y{background:var(--ok)}.sq.o{background:var(--meh)}.sq.r{background:var(--bad)}
pre{font-family:var(--mono);font-size:13px;background:var(--panel);border:1px solid var(--line);padding:12px 14px;margin:0;white-space:pre-wrap;overflow-wrap:anywhere;user-select:all}
.foot{font-family:var(--mono);font-size:11px;color:var(--muted);letter-spacing:.03em;max-width:60ch}
.key{display:flex;gap:12px;flex-wrap:wrap;font-family:var(--mono);font-size:11px;color:var(--muted)}
.key span{display:inline-flex;align-items:center;gap:5px}.key i{width:10px;height:10px;display:inline-block}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}
.meta a,.linkbtn{color:inherit}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;text-align:center}
.stats div{background:var(--panel);border:1px solid var(--line);padding:8px 4px}
.stats b{display:block;font-family:var(--display);font-weight:900;font-size:1.8rem;line-height:1}
.stats span{font-family:var(--mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.nextin{font-family:var(--mono);font-size:12px;color:var(--muted);text-align:center}
.noscript{padding:16px}
[hidden]{display:none!important}
.card{display:grid;grid-template-columns:auto 1fr;column-gap:14px;row-gap:6px;align-items:center;align-content:start;grid-template-rows:auto auto 1fr}
.cicon{grid-column:1;grid-row:1/3;width:52px;height:52px;padding:10px;color:var(--accent);background:var(--q2);border:1px solid var(--line)}
.cicon:empty{display:none}
.cicon svg{width:100%;height:100%;display:block}
.card .tag{grid-column:2;grid-row:1;align-self:end}
.card h2{grid-column:2;grid-row:2;align-self:start}
.card p{grid-column:1/-1;grid-row:3;align-self:center}
.tagline{font-family:var(--mono);font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-top:6px}
button.ghost{width:auto;font-family:var(--mono);font-weight:500;font-size:11px;letter-spacing:.08em;padding:6px 10px;background:transparent;color:var(--ink);border:1px solid var(--line);text-transform:uppercase}
.meta button.ghost{margin-top:8px}
dialog{background:var(--panel);color:var(--ink);border:2px solid var(--ink);padding:16px;width:min(520px,calc(100vw - 32px));max-height:85vh;overflow:auto}
dialog::backdrop{background:rgba(0,0,0,.55)}
.dhead{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}
.dhead h3{font-family:var(--display);font-weight:900;font-size:1.8rem;text-transform:uppercase;margin:0}
.dsec{font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--accent);margin:16px 0 6px}
.bar{display:grid;grid-template-columns:64px 1fr 24px;gap:8px;align-items:center;font-family:var(--mono);font-size:12px;margin:4px 0}
.bar i{display:block;height:10px;background:var(--ink);min-width:2px}
.game{display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center;padding:7px 0;border-bottom:1px solid var(--line);font-size:13px}
.game .no{font-family:var(--mono);font-size:11px;color:var(--muted)}
.game .sc{font-family:var(--mono);font-variant-numeric:tabular-nums}
.idea{display:flex;justify-content:space-between;gap:10px;padding:4px 0;font-size:13px}
.idea span:last-child{font-family:var(--mono)}
.dfoot{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px}
.dnote{font-family:var(--mono);font-size:11px;color:var(--muted);margin-top:8px}
.empty{color:var(--muted);font-size:13px}
.foot2{font-family:var(--mono);font-size:11px;letter-spacing:.04em;color:var(--muted);text-align:center;margin-top:8px}
.foot2 a,.prose a{color:var(--ink)}
.prose{display:flex;flex-direction:column;gap:12px;max-width:60ch}
.prose h2{font-family:var(--display);font-weight:900;font-size:1.8rem;text-transform:uppercase;margin:12px 0 0}
.prose p,.prose li{margin:0}.prose ul{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:8px}
.prose .cite{font-family:var(--mono);font-size:12px;color:var(--muted)}
.card{min-height:240px}
@media (min-width:600px){.card{min-height:186px}}
@media (max-width:360px){.card{min-height:295px}}
button.linkbtn{all:unset;cursor:pointer;text-decoration:underline;color:var(--ink);font:inherit;letter-spacing:inherit}
button.linkbtn:focus-visible{outline:3px solid var(--accent);outline-offset:3px}
#howgo{font-size:1.2rem}
#how .dfoot{margin-top:18px}
