:root{--ink: #15120e;--ink2: #1e1a15;--ink3: #29231c;--line: #3d342a;--paper: #efe5cf;--paper2: #e3d6b8;--text: #eae0cc;--muted: #a99a80;--gold: #c99a45;--gold2: #e2b862;--teal: #5f8f8a;--red: #a8432f;--green: #6f9a5a;--map-bg: #e6dcc3;--map-wood: #b9c4a0;--map-wood2: #a8b78e;--map-water: #9fbcc4;--serif: "Libre Baskerville", Georgia, serif;--sans: Inter, system-ui, sans-serif;--mono: "IBM Plex Mono", ui-monospace, monospace}*{box-sizing:border-box}html,body,#root{margin:0;height:100%}body{background:var(--ink);color:var(--text);font:14px/1.5 var(--sans)}button{font:inherit;cursor:pointer}button:disabled{opacity:.45;cursor:default}input,select,textarea{font:inherit;background:var(--ink);color:var(--text);border:1px solid var(--line);border-radius:6px;padding:8px 10px}h1,h2,h3{font-family:var(--serif);font-weight:700;margin:0 0 10px}.fine{color:var(--muted);font-size:12px;margin-top:6px}.ok{color:#9bc48a}.warn{color:#e2a35a}.loading{padding:40px}.kicker{letter-spacing:.14em;font-size:11px;color:var(--gold);font-weight:600;margin-bottom:8px}.btn{background:var(--ink3);color:var(--text);border:1px solid var(--line);border-radius:7px;padding:8px 14px}.btn:hover:not(:disabled){border-color:var(--gold)}.btn.gold{background:linear-gradient(180deg,var(--gold2),var(--gold));color:#241a0b;border-color:#8d6a2c;font-weight:600}.btn.red{background:var(--red);border-color:#6e2a1e;color:#fff}.btn.big{padding:12px 22px;font-size:16px;margin-top:12px}.btn.small{padding:4px 10px;font-size:12px}.badge{display:inline-block;font-style:normal;background:var(--gold);color:#241a0b;border-radius:9px;font-size:10px;padding:0 6px;margin-left:5px;font-weight:700}.info{display:inline-block;position:relative;color:var(--gold);cursor:help;font-size:13px;margin-left:6px}.info .tip{position:absolute;z-index:30;top:20px;left:-120px;width:290px;background:var(--paper);color:#2a2218;padding:10px 12px;border-radius:8px;font:12.5px/1.45 var(--sans);box-shadow:0 8px 24px #00000080;font-weight:400;letter-spacing:0;text-transform:none}.landing{min-height:100%;background:radial-gradient(1200px 600px at 70% -10%,#3a2c1a 0%,transparent 60%),var(--ink)}.hero{padding:56px 20px 30px}.hero-inner{max-width:1060px;margin:0 auto;display:grid;grid-template-columns:1.1fr 1fr;gap:40px;align-items:center}.hero h1{font-size:64px;letter-spacing:.02em;margin-bottom:8px;color:var(--paper)}.hero .tag{font-size:18px;color:var(--paper2);max-width:480px}.case-card{background:var(--paper);color:#2a2218;border-radius:10px;padding:26px 26px 20px;position:relative;box-shadow:0 20px 50px #00000073;transform:rotate(-.6deg)}.case-card h2{color:#2a2218;font-size:28px}.case-card h2 small{font-size:16px;color:#7a6a52;font-weight:400}.case-card .place{color:#7a6a52;font-style:italic;margin:0 0 8px}.case-card .fine{color:#7a6a52}.stamp{display:inline-block;border:2px solid var(--gold);color:var(--gold);padding:2px 10px;font:700 11px var(--mono);letter-spacing:.15em;transform:rotate(-2deg);margin-bottom:10px}.stamp.red{border-color:var(--red);color:var(--red)}.systems,.numbers{max-width:1060px;margin:0 auto;padding:24px 20px}.systems h3,.numbers h3{color:var(--paper2)}.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.grid.small{grid-template-columns:repeat(3,1fr)}.sys{background:var(--ink2);border:1px solid var(--line);border-radius:10px;padding:16px}.sys .ic{font-size:24px}.sys p{color:var(--muted);margin:6px 0 0}.num{background:var(--ink2);border-left:3px solid var(--gold);border-radius:6px;padding:14px 16px}.num .n{font:700 28px var(--serif);color:var(--gold2)}.num .l{font-weight:600}.num p{color:var(--muted);margin:4px 0 0;font-size:13px}.foot{text-align:center;color:var(--muted);font-size:12px;padding:30px 20px 40px}.screen{min-height:100%;display:flex;align-items:center;justify-content:center;padding:24px 16px;background:radial-gradient(900px 500px at 50% -10%,#33271a,transparent 60%),var(--ink)}.card{background:var(--ink2);border:1px solid var(--line);border-radius:10px;padding:14px}.card.wide{max-width:860px;width:100%;padding:28px}.card.paper,.paper{background:var(--paper);color:#2a2218}.paper h2{color:#2a2218}.paper .place{color:#7a6a52;font-style:italic}.roles{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin:16px 0}.role{text-align:left;background:var(--ink);border:1px solid var(--line);color:var(--text);border-radius:10px;padding:14px;display:grid;grid-template-columns:40px 1fr;gap:2px 10px}.role .ri{grid-row:span 2;font-size:28px}.role span:last-child{color:var(--muted);font-size:13px}.role.on{border-color:var(--gold);box-shadow:0 0 0 1px var(--gold) inset}.brief{padding-left:18px}.brief li{margin:6px 0}.howto{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:14px;font-size:13px}.howto div{background:var(--paper2);padding:10px;border-radius:8px}.game{height:100%;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;gap:18px;padding:8px 14px;background:#100d0a;border-bottom:1px solid var(--line);flex-wrap:wrap}.brand b{font:700 16px var(--serif);letter-spacing:.12em;color:var(--paper)}.brand span{color:var(--muted);margin-left:8px;font-size:12px}.clock{display:flex;align-items:center;gap:10px}.clock .time{font:600 15px var(--mono);color:var(--gold2)}.speed button{background:var(--ink3);border:1px solid var(--line);color:var(--text);padding:2px 8px;margin-right:2px;border-radius:5px;font-size:12px}.speed button.on{background:var(--gold);color:#241a0b}.where{color:var(--paper2)}.role-chip{margin-left:10px;background:var(--ink3);border-radius:12px;padding:2px 10px;font-size:12px}.deadline{margin-left:auto;color:var(--muted);display:flex;gap:8px;align-items:center}.deadline.hot{color:#f08a6a}.cols{flex:1;display:grid;grid-template-columns:380px 1fr 300px;gap:10px;padding:10px;min-height:0}.col{min-height:0;display:flex;flex-direction:column;gap:10px;overflow:auto}.center{background:var(--ink2);border:1px solid var(--line);border-radius:10px;overflow:hidden}.tabs{display:flex;gap:2px;padding:6px 6px 0;border-bottom:1px solid var(--line);flex-wrap:wrap}.tabs button{background:none;border:none;color:var(--muted);padding:8px 12px;border-radius:7px 7px 0 0}.tabs button.on{background:var(--ink3);color:var(--paper)}.panel-body{flex:1;overflow:auto;padding:12px 14px}.ptitle{font:700 14px var(--serif);color:var(--paper2);margin-bottom:8px}.mtabs{display:none}.mapsvg{width:100%;height:auto;border-radius:8px;display:block}.rail{fill:none;stroke:#6b5a45;stroke-width:5}.rail-ties{fill:none;stroke:var(--map-bg);stroke-width:2;stroke-dasharray:2 8}.street{fill:none;stroke:#fffaf0;stroke-width:9;stroke-linecap:round;stroke-linejoin:round}.stname{font:italic 13px var(--serif);fill:#7a6a52}.house{fill:#9b8e78}.castpin{cursor:pointer}.castpin circle{fill:var(--red);stroke:#fff;stroke-width:3}.castpin text{font:700 15px var(--sans);fill:#3a1a12;paint-order:stroke;stroke:var(--map-bg);stroke-width:4}.place rect{fill:#6b5a45}.place text{font:600 14px var(--sans);fill:#3e3326;paint-order:stroke;stroke:var(--map-bg);stroke-width:4}.place.click{cursor:pointer}.place.click rect{fill:var(--teal)}.place.click:hover rect{fill:var(--gold)}.me circle{fill:var(--gold);stroke:#241a0b;stroke-width:3;opacity:.9}.me text{font:700 11px var(--sans);fill:#241a0b}.maplegend{font-size:11px;color:var(--muted);margin-top:6px}.lg{display:inline-block;width:10px;height:10px;border-radius:50%;margin:0 3px 0 8px;vertical-align:-1px}.lg.cast{background:var(--red)}.lg.house{background:#9b8e78}.lg.place{background:var(--teal);border-radius:2px}.castrow{width:100%;display:flex;gap:10px;align-items:center;text-align:left;background:none;border:1px solid transparent;color:var(--text);padding:6px;border-radius:8px}.castrow:hover,.castrow.on{border-color:var(--line);background:var(--ink3)}.castrow span{display:flex;flex-direction:column;flex:1}.castrow small{color:var(--muted);font-size:11.5px}.castrow .loc{color:#b9a988}.avatar{border-radius:50%;display:flex;align-items:center;justify-content:center;color:var(--paper);font-family:var(--serif);font-weight:700;flex:none;border:2px solid rgba(255,255,255,.18)}.tagred{font-style:normal;background:var(--red);font-size:10px;padding:1px 6px;border-radius:6px}.talk{display:flex;flex-direction:column;height:100%;gap:8px}.talkhead{display:flex;gap:12px;align-items:center}.talkhead .who{flex:1}.talkhead .who b{font:700 18px var(--serif)}.talkhead small{color:var(--muted)}.talkhead .meta{font-size:12px;color:var(--muted)}code{font-family:var(--mono);font-size:11px;color:var(--gold2)}.whosel{max-width:170px}.channels{display:flex;gap:6px;align-items:center}.channels button{background:var(--ink);border:1px solid var(--line);color:var(--muted);padding:6px 12px;border-radius:20px}.channels button.on{border-color:var(--gold);color:var(--paper);background:var(--ink3)}.status{font-size:13px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}.log{flex:1;min-height:200px;overflow:auto;background:var(--ink);border:1px solid var(--line);border-radius:10px;padding:12px;display:flex;flex-direction:column;gap:8px}.log.ch-phone{background:linear-gradient(180deg,#13201d,var(--ink))}.log.ch-formal{background:linear-gradient(180deg,#1f1a12,var(--ink))}.log .empty{color:var(--muted);font-style:italic}.log .sys{align-self:center;font-size:12px;color:var(--muted)}.bubble{max-width:82%;padding:9px 12px;border-radius:12px}.bubble.player{align-self:flex-end;background:#2c3a38;border-bottom-right-radius:3px}.bubble.npc{align-self:flex-start;background:var(--paper);color:#2a2218;border-bottom-left-radius:3px;font-family:var(--serif);font-size:14.5px}.bubble .cue{font-style:italic;color:#8a6a3a;font-size:12.5px;margin-bottom:3px}.bubble .bmeta{font:11px var(--sans);opacity:.6;margin-top:4px}.bubble.typing{animation:pulse 1s infinite}@keyframes pulse{50%{opacity:.5}}.chips{display:flex;gap:6px;flex-wrap:nowrap;overflow-x:auto;padding-bottom:2px}.chips button{flex:none;background:var(--ink);border:1px dashed var(--line);color:var(--paper2);border-radius:16px;padding:4px 10px;font-size:12.5px}.compose{display:flex;gap:6px}.compose input{flex:1}.evpick{display:grid;gap:4px;max-height:180px;overflow:auto;background:var(--ink);padding:8px;border-radius:8px;border:1px solid var(--line)}.evpick button{text-align:left;background:var(--ink3);border:1px solid var(--line);color:var(--text);padding:6px 8px;border-radius:6px}.vestry{width:100%;max-width:700px;background:#2a241c;border-radius:10px;display:block}.vestry .room{fill:#3a3127;stroke:#5d4f3c;stroke-width:3}.vestry .nave{fill:#332b22;stroke:#5d4f3c;stroke-width:2}.vestry .lbl{fill:#9f8f75;font:700 13px var(--mono);letter-spacing:.1em}.zone{cursor:pointer}.zone rect{fill:#c99a452e;stroke:var(--gold);stroke-dasharray:5 4}.zone text{fill:var(--paper);font:600 13px var(--sans)}.zone.pend rect{fill:#5f8f8a4d;stroke:var(--teal)}.zone.done rect{fill:#6f9a5a4d;stroke:var(--green);stroke-dasharray:none}.zones{display:grid;gap:6px;margin-top:10px}.zonerow{display:grid;grid-template-columns:170px 1fr;gap:2px 10px;background:var(--ink);border:1px solid var(--line);border-radius:8px;padding:8px 10px}.zonerow small{color:var(--muted)}.zonerow>span,.zonerow>button{grid-column:1 / -1;justify-self:start}.crt{font-family:var(--mono)}.terminal .tform{display:flex;gap:6px;align-items:center;color:#8fd19e}.terminal input{flex:1;font-family:var(--mono);background:#0b120d;color:#b7f0c2;border-color:#24402c}.tcols{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:8px}.tres{max-height:460px;overflow:auto;background:#0b120d;border:1px solid #24402c;border-radius:8px;padding:6px}.trow{display:block;width:100%;text-align:left;font:12.5px var(--mono);padding:4px 6px;border-radius:4px;color:#b7f0c2;background:none;border:none}.trow small{color:#6fa07b}.trow.cast{color:#f2d48a}.trow.cast:hover,.trow.on{background:#16261a}.trow.off{opacity:.55}.trow.off i{font-style:normal;font-size:10px;margin-left:6px;border:1px solid #355;padding:0 4px;border-radius:4px}.tdoss{background:#0b120d;border:1px solid #3e5d2c;border-radius:8px;padding:10px;color:#b7f0c2;font-size:12.5px;display:flex;flex-direction:column;gap:4px}.tdoss .th{color:#f2d48a;font-size:14px}.tdoss .sep{border-top:1px dashed #24402c;margin:4px 0}.aform{display:flex;gap:6px;flex-wrap:wrap}.aform input{flex:1;min-width:200px}.acols{display:grid;grid-template-columns:1fr 1.2fr;gap:10px;margin-top:8px}.ares{max-height:520px;overflow:auto;display:flex;flex-direction:column;gap:4px}.arow{text-align:left;background:var(--ink);border:1px solid var(--line);color:var(--text);border-radius:6px;padding:7px 9px}.arow small{display:block;color:var(--muted);font-size:11.5px}.arow.on{border-color:var(--gold)}.paperview{background:var(--paper);color:#2a2218;border-radius:6px;padding:16px 18px;font-family:var(--serif);max-height:560px;overflow:auto;box-shadow:inset 0 0 40px #785a2833}.paperview .masthead{font:700 20px var(--serif);text-align:center;border-bottom:3px double #6b5a45;padding-bottom:4px;letter-spacing:.04em}.paperview.m-RM .masthead,.paperview.m-ON .masthead{font-family:var(--sans);border-bottom-style:solid}.paperview.m-CL .masthead{font-style:italic}.paperview .dateline{font:11px var(--sans);color:#7a6a52;text-align:center;margin:4px 0 10px}.paperview h3{font-size:19px;color:#2a2218}.paperview .byline{font:italic 12px var(--serif);color:#7a6a52;margin-bottom:8px}.paperview p{margin:0 0 9px;font-size:14px;line-height:1.6}.paperview .fine{color:#7a6a52}.req{background:var(--ink);border:1px solid var(--line);border-radius:8px;padding:10px;margin-bottom:8px;display:grid;gap:4px}.req small{color:var(--muted)}.pend{background:var(--ink3);border-radius:8px;padding:10px;font-size:13px;margin-bottom:10px}.arrestbox{border-top:1px solid var(--line);padding-top:12px;margin-top:8px}.arrestbox .row,.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:8px}.charges{display:grid;gap:6px;margin-top:8px}.charges .btn{text-align:left;display:grid}.charges small{color:var(--muted)}.evgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:8px}.evcard{background:var(--paper);color:#2a2218;border-radius:6px;padding:10px;box-shadow:0 2px #b8a67f}.evcard .evh{font:700 13.5px var(--serif)}.evcard p{font-size:12.5px;margin:6px 0}.evcard small{color:#7a6a52}.evcard.bad{background:#e8d3c8}.cons{background:#3a2018;border:1px solid var(--red);border-radius:8px;padding:10px;margin:12px 0;display:grid;gap:4px;font-size:13px}.leads{margin:12px 0;display:grid;gap:3px;font-size:13px}.leads small{color:var(--gold);margin-right:6px;font-family:var(--mono)}.notes textarea{width:100%;min-height:90px;margin-top:6px}.feed{display:flex;flex-direction:column;min-height:0;flex:1}.feedlog{flex:1;overflow:auto;display:flex;flex-direction:column;gap:6px;font-size:13px;min-height:200px}.fi{border-left:2px solid var(--line);padding:2px 0 2px 8px}.fi small{color:var(--muted);font-size:11px}.fi.ev{border-color:var(--green)}.fi.lead{border-color:var(--gold)}.fi.hint{border-color:var(--teal);background:#5f8f8a14}.fi.warn{border-color:var(--red)}.evmini{margin-top:8px;font-size:12px}.evchip{display:inline-block;background:var(--paper);color:#2a2218;border-radius:4px;padding:0 5px;margin:2px;font:700 11px var(--mono)}.trial{min-height:100%;background:radial-gradient(900px 500px at 50% 0,#3a2a18,transparent 70%),var(--ink);padding:24px 16px}.court{max-width:860px;margin:0 auto;background:var(--ink2);border:1px solid var(--line);border-radius:12px;padding:24px}.court h2{color:var(--paper)}.court .charge{color:var(--gold2);margin-bottom:10px}.steps{display:flex;gap:14px;color:var(--muted);font-size:13px;margin-bottom:14px}.steps .on{color:var(--paper);font-weight:600}.evselect{display:grid;gap:6px}.evsel{display:flex;gap:8px;align-items:center;background:var(--ink);border:1px solid var(--line);border-radius:8px;padding:8px 10px;cursor:pointer}.evsel.on{border-color:var(--gold)}.evsel.bad{opacity:.8}.chal{background:var(--ink);border:1px solid var(--line);border-radius:8px;padding:10px;margin-bottom:8px;display:grid;gap:6px}.chal .obj{font-family:var(--serif);font-style:italic;color:#f0b98f}.verdict{font:700 46px var(--serif);text-align:center;letter-spacing:.15em;border:4px solid;padding:8px;margin:10px auto 16px;max-width:360px;transform:rotate(-2deg)}.verdict.guilty{color:#e0705a;border-color:#e0705a}.verdict.free{color:#9bc48a;border-color:#9bc48a}.axes{display:grid;gap:6px}.axis{display:grid;grid-template-columns:170px 1fr 40px;gap:10px;align-items:center;font-size:13px}.axis .bar{height:10px;background:var(--ink);border-radius:5px;overflow:hidden}.axis .bar i{display:block;height:100%;background:var(--gold)}.axis.total{font-weight:700}.axis.total .bar i{background:var(--teal)}.seals{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0;font-size:13px}.seals span{background:var(--ink);border:1px solid var(--line);border-radius:6px;padding:4px 8px}.notes{font-size:13px;color:var(--paper2)}.speech{background:var(--paper);color:#2a2218;border-radius:8px;padding:12px 14px;font-family:var(--serif);margin:12px 0}.speech small{display:block;font:11px var(--sans);color:#7a6a52;margin-top:6px}.end .truth{border-radius:8px;padding:16px;margin:14px 0}.stats{display:flex;gap:18px;flex-wrap:wrap;margin:10px 0 18px}.stats b{font:700 22px var(--serif);color:var(--gold2);display:block}@media (max-width: 980px){.hero-inner{grid-template-columns:1fr}.hero h1{font-size:44px}.grid,.grid.small{grid-template-columns:1fr 1fr}.howto,.roles{grid-template-columns:1fr}.cols{grid-template-columns:1fr;padding:6px 6px 66px}.col{display:none}.col.m-show{display:flex}.center .tabs{display:none}.topbar{gap:8px;padding:6px 10px;font-size:12px}.brand span{display:none}.deadline{margin-left:0}.mtabs{display:flex;position:fixed;bottom:0;left:0;right:0;background:#100d0a;border-top:1px solid var(--line);z-index:20;overflow-x:auto}.mtabs button{flex:1 0 auto;min-width:62px;background:none;border:none;color:var(--muted);font-size:10.5px;padding:6px 4px 8px;display:flex;flex-direction:column;align-items:center}.mtabs button span{font-size:18px}.mtabs button.on{color:var(--gold2)}.tcols,.acols{grid-template-columns:1fr}.bubble{max-width:92%}.zonerow{grid-template-columns:1fr}.talkhead{flex-wrap:wrap}.talkhead .who b{font-size:16px}.whosel{max-width:none;width:100%;order:3}.channels button{padding:5px 9px;font-size:12.5px}.log{min-height:260px}.axis{grid-template-columns:110px 1fr 34px}.verdict{font-size:34px}}@media (max-width: 560px){.grid,.grid.small{grid-template-columns:1fr}.card.wide{padding:18px}.compose{flex-wrap:wrap}.compose input{min-width:100%}}.bigmap .map{border:none;padding:0;background:none}@media (max-width: 980px){.bigmap{display:none}}.mapwrap{position:relative}.mapsvg{touch-action:none;-webkit-user-select:none;user-select:none;cursor:zoom-in}.mapsvg.zoomed{cursor:grab}.mapsvg.zoomed:active{cursor:grabbing}.hname{fill:#6a5d49;font-family:var(--sans);pointer-events:none}.zoomctl{position:absolute;top:8px;right:8px;display:flex;flex-direction:column;gap:4px}.zoomctl button{width:30px;height:30px;border-radius:7px;border:1px solid #8d7a5c;background:#efe5cfeb;color:#2a2218;font:700 16px var(--sans);line-height:1;padding:0;box-shadow:0 1px 4px #0000004d}.zoomctl button:disabled{opacity:.4}.zoomlvl{position:absolute;left:8px;bottom:8px;background:#15120ebf;color:var(--paper);font:600 11px var(--mono);padding:2px 6px;border-radius:5px;pointer-events:none}@media (max-width: 980px){.zoomctl button{width:38px;height:38px;font-size:19px}}.mapfull,.mapclose{margin-left:8px;font:600 11.5px var(--sans);background:var(--ink3);color:var(--paper2);border:1px solid var(--line);border-radius:6px;padding:2px 8px;vertical-align:2px}.mapfull:hover,.mapclose:hover{border-color:var(--gold);color:var(--paper)}.zoomctl .fs{background:var(--gold);border-color:#8d6a2c}.map.full{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;border-radius:0;border:none;padding:10px 12px;display:flex;flex-direction:column;background:var(--ink)}.map.full .mapwrap{flex:1;min-height:0}.map.full .mapsvg{width:100%;height:100%;background:var(--map-bg);border-radius:8px}.map.full .zoomctl button{width:40px;height:40px;font-size:20px}.map.full .stname{font-weight:600}.status .hurry{color:#e2b862;font-size:12.5px}
