/*
 * THEME TOKENS
 * All colours and fonts live in this first block. To match Tambola or
 * Pictionary, change these values only. The next two blocks are the dark
 * versions of the same tokens.
 */
:root{
  --bg:#F3EEE4; --surface:#FFFCF6; --ink:#2A2620; --muted:#6B6358; --line:#D9D0BF;
  --accent:#B8651B; --accent-ink:#FFFFFF; --accent-soft:#F6E3CB;
  --good:#2F6B4F; --good-soft:#DCEBDD; --warn-soft:#F8EBC8;
  --font-display:'Gloock',Georgia,'Times New Roman',serif;
  --font-body:'Hanken Grotesk','Helvetica Neue',Arial,sans-serif;
  --font-mono:'Courier Prime',ui-monospace,Menlo,Consolas,monospace;
  color-scheme:light;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --bg:#16181D; --surface:#1F232A; --ink:#ECE6D8; --muted:#A39B8C; --line:#323843;
    --accent:#E8A04C; --accent-ink:#1B1409; --accent-soft:#3A2D1A;
    --good:#7CC6A0; --good-soft:#1E3329; --warn-soft:#3A3219;
    color-scheme:dark;
  }
}
:root[data-theme="dark"]{
  --bg:#16181D; --surface:#1F232A; --ink:#ECE6D8; --muted:#A39B8C; --line:#323843;
  --accent:#E8A04C; --accent-ink:#1B1409; --accent-soft:#3A2D1A;
  --good:#7CC6A0; --good-soft:#1E3329; --warn-soft:#3A3219;
  color-scheme:dark;
}
*{box-sizing:border-box}
[hidden]{display:none!important}
body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.5 var(--font-body)}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.app{max-width:1040px;margin-inline:auto;padding:20px 16px 72px}
h1,h2,h3{font-family:var(--font-display);font-weight:400;margin:0}
h1{font-size:clamp(1.9rem,5vw,2.8rem);line-height:1.05}
h2{font-size:1.45rem;line-height:1.2}
h3{font-size:1.1rem;margin-bottom:6px}
p{margin:6px 0}
.muted{color:var(--muted)} .small{font-size:.88rem}
.top{display:flex;flex-wrap:wrap;gap:12px 24px;justify-content:space-between;align-items:flex-end}
.top>div{min-width:0}
.sub{max-width:60ch;color:var(--muted);margin:8px 0 0}
.status{display:flex;flex-wrap:wrap;gap:6px}
.chip{font:.78rem var(--font-mono);color:var(--muted);border:1px solid var(--line);background:var(--surface);padding:5px 10px;border-radius:99px;overflow-wrap:anywhere}
.chip.ok{color:var(--good)}
.notice{margin-top:14px;padding:10px 14px;border:1px solid var(--line);background:var(--accent-soft);border-radius:8px}
.notice.warn{background:var(--warn-soft)}
.card{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:16px;display:grid;gap:8px;align-content:start}
label{font-size:.85rem;color:var(--muted)}
.bigfield{width:100%;font:1.05rem var(--font-body);color:var(--ink);background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:.65rem .8rem;min-height:46px}
.bigfield.code{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.2em;flex:1 1 120px;width:auto;min-width:0}
.row{display:flex;gap:8px;flex-wrap:wrap}
.row .bigfield{flex:1 1 180px;width:auto}
.formerr{color:#B3261E;font-size:.9rem;margin:0}
.btn{font:700 .95rem var(--font-body);color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:.6rem 1rem;min-height:44px;cursor:pointer}
.btn:hover:not(:disabled){border-color:var(--accent)}
.btn:disabled{opacity:.5;cursor:default}
.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.btn.ghost{background:transparent}
.btn.small{min-height:38px;padding:.4rem .8rem;font-size:.85rem}
.linkbtn{background:none;border:0;padding:6px 0;color:var(--muted);font:inherit;text-decoration:underline;cursor:pointer}
.gate{max-width:460px;margin-top:24px}
.lobby{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));gap:14px;margin-top:24px;max-width:760px}
.lobby .switch{grid-column:1/-1;margin:0}
.howto{margin-top:18px;background:var(--surface);border:1px dashed var(--line);border-radius:10px;padding:14px 16px;max-width:760px}
.howto h3{margin-bottom:8px}
.howto ol{margin:0;padding-left:1.2em;display:grid;gap:4px}
.tablebar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:18px}
.codechip{font:700 1.15rem var(--font-mono);letter-spacing:.25em;padding:8px 14px;background:var(--surface);border:1px solid var(--ink);border-radius:8px}
.tabs{display:flex;gap:8px;flex-wrap:wrap;margin-top:18px}
.tab{font:700 .9rem var(--font-body);color:var(--ink);background:transparent;border:1px solid var(--line);border-radius:99px;padding:.45rem .9rem;min-height:40px;cursor:pointer}
.tab[aria-current="true"]{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.tab .tick{color:var(--good);margin-left:4px}
.tab[aria-current="true"] .tick{color:inherit}
.casehead{margin-top:18px}
.result{margin-top:14px;padding:12px 14px;border-radius:8px;background:var(--warn-soft);border-left:4px solid var(--accent)}
.result.ok{background:var(--good-soft);border-left-color:var(--good)}
.solved{margin-top:14px;padding:16px;border-radius:10px;background:var(--good-soft);border:1px solid var(--good);display:grid;gap:8px}
.solved h3{font-size:1.3rem}
.layout{display:grid;grid-template-columns:minmax(0,1fr);gap:22px;margin-top:22px}
@media (min-width:820px){.layout{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr)}}
.col{display:grid;gap:22px;align-content:start;min-width:0}
.count{font:.8rem var(--font-mono);color:var(--muted);margin-left:6px}
ul,ol{list-style:none;margin:0;padding:0}
.places{display:grid;gap:8px;margin-top:8px}
.place{display:flex;gap:12px;align-items:center;justify-content:space-between;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:10px 12px}
.place>div{min-width:0}
.place b{display:block}
.place span{font-size:.88rem;color:var(--muted)}
.place.locked{opacity:.65}
.place.done{border-color:var(--good)}
.evidence{display:grid;gap:8px;counter-reset:n}
.slip{background:var(--surface);border:1px solid var(--line);border-left:4px solid var(--accent);border-radius:6px;padding:10px 12px;font-family:var(--font-mono);font-size:.95rem}
.slip small{display:block;color:var(--muted);font-family:var(--font-body);margin-bottom:4px}
.hints{display:grid;gap:6px;margin-bottom:8px}
.hints li{background:var(--accent-soft);border-radius:8px;padding:8px 12px}
.suspects{display:grid;gap:8px;margin-top:8px}
.suspect{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:10px 12px;display:grid;gap:6px}
.suspect.ruled{opacity:.6}
.suspect.ruled .nm{text-decoration:line-through}
.suspect .nm{font-family:var(--font-display);font-size:1.1rem}
.suspect .role{font-size:.8rem;color:var(--muted)}
.suspect .actions{display:flex;gap:8px;flex-wrap:wrap}
.suspect .voters{font-size:.82rem;color:var(--accent)}
.btn[aria-pressed="true"]{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}
.accuse{margin-top:0}
.notes{display:grid;gap:6px;margin-top:10px}
.notes li{font-size:.92rem}
.notes b{color:var(--accent)}
.people{display:flex;flex-wrap:wrap;gap:6px}
.people li{border:1px solid var(--line);background:var(--surface);border-radius:99px;padding:3px 10px;font-size:.88rem}
.people li.off{opacity:.5}
