:root{font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased}body{margin:0}#root{min-height:100vh}:root{--ink:#0c0e13;--oak:#1a1b21;--oak-2:#1e1f25;--crimson:#c23b22;--crimson-hot:#ffb4a5;--brass:#ecc246;--brass-dim:#c9a227;--parchment:#eae1da;--dust:#a89a88;--paper:#e2e2e9;--outline:#59413c;--serif:"Playfair Display", "Times New Roman", serif;--sans:"Source Sans 3", "Segoe UI", sans-serif}*{box-sizing:border-box}html,body,#root{min-height:100%}body{background:var(--ink);color:var(--paper);font-family:var(--sans);margin:0;line-height:1.45}h1,h2,h3{font-family:var(--serif);letter-spacing:-.02em;margin:0 0 .4rem;font-weight:700}.app{min-height:100vh;position:relative}.app.antechamber{max-width:1440px;margin:0 auto;padding:0 24px 32px}.app.antechamber:before{content:"";z-index:0;background:linear-gradient(#0c0e138c 0%,#0c0e13d1 100%),url(/court/courtroom-bg.png) 50%/cover no-repeat;position:fixed;inset:0}.scanlines{pointer-events:none;z-index:2;opacity:.22;background:repeating-linear-gradient(#0000 0 2px,#0000002e 3px);position:fixed;inset:0}.app>:not(.scanlines){z-index:3;position:relative}.topbar{border-bottom:1px solid #c9a22747;grid-template-columns:1fr auto 1fr;align-items:center;gap:16px;height:72px;display:grid}.app.in-session .topbar{z-index:8;background:linear-gradient(#0c0e13bf,#0000);border:none;height:56px;padding:0 20px;position:absolute;top:0;left:0;right:0}.brand{align-items:center;gap:12px;display:flex}.brand h1{letter-spacing:.1em;margin:0;font-size:22px}.seal{border:2px solid var(--brass);width:28px;height:28px;box-shadow:inset 0 0 0 4px var(--ink), inset 0 0 0 6px var(--brass-dim);border-radius:50%}.lbl,.eyebrow,.kicker{letter-spacing:.16em;text-transform:uppercase;color:var(--dust);margin:0;font-size:11px}.case-chip{text-align:center}.case-chip em{color:var(--crimson-hot);letter-spacing:.12em;border:1px solid #c23b2273;margin-left:8px;padding:2px 8px;font-size:11px;font-style:normal;display:inline-block}.juror-meta{text-align:right}.juror-meta code{color:var(--brass);font-size:12px;display:block}.docket{grid-template-columns:1.2fr .8fr;gap:24px;padding-top:28px;display:grid}.hero{grid-column:1/-1}.hero h2{max-width:18ch;font-size:48px;line-height:1.1}.case-grid{gap:16px;display:grid}.case-card,.session-card,.file,.counsel,.identity,.thread,.exhibits,.deliberation,.record{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#1a1b21e0;border:1px solid #c9a22747;border-radius:12px;padding:18px}.case-card{cursor:pointer;color:inherit;text-align:left;text-transform:none;letter-spacing:0;width:100%;font-weight:400}.case-card.selected{border-color:var(--brass)}.lvl{letter-spacing:.14em;text-transform:uppercase;color:var(--brass);border:1px solid #c9a22766;margin-bottom:8px;padding:2px 8px;font-size:11px;display:inline-block}label{letter-spacing:.08em;text-transform:uppercase;color:var(--dust);margin:0 0 12px;font-size:13px;display:block}input,select{border:none;border-bottom:1px solid var(--brass-dim);background:var(--ink);width:100%;color:var(--paper);font-family:var(--sans);border-radius:8px 8px 0 0;margin-top:6px;padding:10px 12px;display:block}button{font-family:var(--sans);letter-spacing:.06em;text-transform:uppercase;cursor:pointer;border-radius:8px;padding:12px 16px;font-weight:700}button.primary{background:var(--crimson);color:#ffe8e4;border:1px solid var(--crimson)}button.secondary{color:var(--brass);border:1px solid var(--brass);background:0 0}button.ghost{color:var(--dust);background:0 0;border:none;padding:8px 0}button:disabled{opacity:.45;cursor:not-allowed}.or{text-align:center;color:var(--dust);letter-spacing:.16em;text-transform:uppercase;margin:16px 0;font-size:12px}.lobby-grid{grid-template-columns:1.1fr .9fr;gap:20px;padding-top:24px;display:grid}.counsel-pair{gap:16px;display:grid}.counsel.prosecution{border-left:4px solid var(--crimson)}.counsel.defense{border-left:4px solid var(--brass)}.lobby-sprite{width:auto;height:160px;margin:-8px auto 8px;display:block;-webkit-mask-image:radial-gradient(70% 85%,#000 70%,#0000 92%);mask-image:radial-gradient(70% 85%,#000 70%,#0000 92%)}.lead{font-size:18px}.hint{color:var(--dust);font-size:14px}.courtroom{height:100vh;color:var(--paper);position:relative;overflow:hidden}.court-bg{z-index:0;background:url(/court/courtroom-bg.png) 50%/cover no-repeat;position:absolute;inset:0}.court-vignette{z-index:1;pointer-events:none;background:linear-gradient(#0c0e1359 0%,#0000 22% 48%,#0c0e138c 72%,#0c0e13eb 100%),radial-gradient(at 50% 40%,#0000 40%,#0c0e1373 100%);position:absolute;inset:0}.gallery{z-index:2;pointer-events:none;position:absolute;inset:0;overflow:visible}.gallery .actor.selectable{pointer-events:auto}.actor{z-index:4;pointer-events:none;flex-direction:column;align-items:center;transition:transform .35s;display:flex;position:absolute;overflow:visible}.actor.selectable{pointer-events:auto;cursor:pointer}.actor.selectable:focus-visible .nametag,.actor.prosecution.selectable:hover .nametag{outline:2px solid var(--crimson)}.actor.defense.selectable:hover .nametag,.actor.defense.selectable:focus-visible .nametag{outline:2px solid var(--brass)}.actor.speaking{z-index:8;transform:translateY(-8px)scale(1.04)}.actor.speaking .sprite-figure{filter:drop-shadow(0 0 22px #ecc24659)}.actor.prosecution.speaking,.actor.defense.speaking{z-index:8}.sprite-wrap{z-index:1;flex-direction:column;justify-content:flex-end;align-items:center;width:100%;height:100%;min-height:0;display:flex;position:relative;overflow:visible}.sprite-figure{z-index:1;width:auto;max-width:100%;height:100%;display:block;position:relative;overflow:visible}.sprite-figure:after{content:"";pointer-events:none;z-index:0;background:radial-gradient(#0000008c,#0000 70%);height:18%;position:absolute;bottom:4%;left:12%;right:12%}.speech{z-index:5;background:var(--parchment);color:#1f1b17;pointer-events:none;border-radius:12px;width:min(360px,42vw);max-width:min(420px,46vw);padding:10px 12px 12px;animation:.25s pop-side;position:absolute;box-shadow:0 8px 24px #00000073}.actor.prosecution .speech{margin:0;inset:10% auto auto 88%;transform:none}.actor.prosecution .speech:after{border:8px solid #0000;border-right-color:var(--parchment);border-top-color:#0000;inset:28px auto auto -8px;transform:none}.actor.defense .speech{margin:0;animation:.25s pop-side-left;inset:10% 88% auto auto;transform:none}.actor.defense .speech:after{border:8px solid #0000;border-left-color:var(--parchment);border-top-color:#0000;inset:28px -8px auto auto;transform:none}.actor.judge .speech{width:min(320px,42vw);margin:0;animation:.25s pop-judge;inset:auto auto 6% 50%;transform:translate(-50%)}.actor.judge .speech:after{border:8px solid #0000;border-bottom-color:var(--parchment);border-top-color:#0000;inset:-8px auto auto 50%;transform:translate(-50%)}@keyframes pop-side{0%{opacity:0;transform:translate(-8px)scale(.94)}to{opacity:1;transform:translate(0)scale(1)}}@keyframes pop-side-left{0%{opacity:0;transform:translate(8px)scale(.94)}to{opacity:1;transform:translate(0)scale(1)}}@keyframes pop-judge{0%{opacity:0;transform:translate(-50%)scale(.92)}to{opacity:1;transform:translate(-50%)scale(1)}}.actor.judge{width:min(22vw,240px);height:min(32vh,280px);top:7%;left:50%;transform:translate(-50%)}.actor.defendant{opacity:.92;width:min(16vw,170px);height:min(34vh,280px);top:28%;left:38%}.actor.prosecution{width:min(28vw,340px);height:min(58vh,520px);bottom:28%;left:4%}.actor.defense{width:min(28vw,340px);height:min(58vh,520px);bottom:28%;right:4%}.actor.prosecution.speaking,.actor.defense.speaking{transform:translateY(-10px)scale(1.05)}.nametag{z-index:2;text-align:center;background:#0c0e13c7;border:1px solid #c9a22766;border-radius:8px;min-width:120px;margin-top:-8px;padding:6px 12px 8px;position:relative}.nametag span{letter-spacing:.16em;text-transform:uppercase;color:var(--dust);font-size:10px;display:block}.nametag strong{font-family:var(--serif);font-size:14px}.actor.chosen .nametag{box-shadow:0 0 0 2px var(--brass)}.actor.prosecution.chosen .nametag{box-shadow:0 0 0 2px var(--crimson)}.actor img{z-index:1;object-fit:contain;width:auto;max-width:100%;height:100%;display:block;position:relative;-webkit-mask-image:radial-gradient(72% 88% at 50% 52%,#000 66%,#0000 88%);mask-image:radial-gradient(72% 88% at 50% 52%,#000 66%,#0000 88%)}.speech:after{content:"";position:absolute}.speech-who{letter-spacing:.14em;text-transform:uppercase;color:#6a4a1a;margin-bottom:4px;font-size:10px;display:block}.speech p{white-space:pre-wrap;overflow-wrap:anywhere;max-height:none;margin:0;font-size:13px;line-height:1.4;overflow:visible}.jury-rail{z-index:7;background:linear-gradient(#0000,#120c088c 12%),repeating-linear-gradient(90deg,#3a2418 0 18px,#2a1a12 18px 20px);border-top:8px solid #5a3a24;flex-direction:column;gap:8px;max-height:38vh;padding:12px 16px 14px;display:flex;position:absolute;bottom:0;left:0;right:0;box-shadow:0 -16px 40px #00000073}.rail-head{justify-content:space-between;align-items:flex-end;gap:12px;display:flex}.rail-head h2{margin:0;font-size:20px}.rail-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.rail-body{flex:1;grid-template-columns:1fr 240px;gap:10px;min-height:0;display:grid}.record-strip{background:#0c0e13b8;border:1px solid #c9a22740;border-radius:10px;flex-direction:column;gap:8px;max-height:16vh;padding:8px 10px;display:flex;overflow-y:auto}.exhibits-card{background:#0c0e13b8;border:1px solid #c9a22740;border-radius:10px;max-height:16vh;padding:10px;overflow:auto}.exhibits-card ul,.jurors ul{margin:8px 0 0;padding:0;list-style:none}.exhibits-card li{border-bottom:1px solid #a89a8833;gap:8px;padding:8px 0;font-size:13px;display:flex}.exhibits-card li span{background:var(--parchment);color:#1f1b17;border-radius:2px;flex-shrink:0;height:fit-content;padding:2px 6px;font-size:11px;font-weight:700}.muted{color:var(--dust)}.slip{background:#1a1b21;border-radius:0 10px 10px 0;padding:8px 10px}.slip.argument.prosecution,.slip.qa.prosecution{border-left:4px solid var(--crimson)}.slip.argument.defense,.slip.qa.defense{border-left:4px solid var(--brass)}.slip.you{background:var(--parchment);color:#1f1b17;border-radius:10px;margin-left:24px}.slip.you .who{color:#4b4641}.slip.system,.slip.error{color:var(--parchment);background:#3a2a108c;border:1px solid #c9a22773;align-self:center;max-width:92%;font-size:13px}.slip.error{color:#ffe8d6;background:#3a1c12b8;border-color:#ffb48c8c}.slip.error .who{color:#ffc9a8}.who{letter-spacing:.12em;text-transform:uppercase;color:var(--brass);margin-bottom:4px;font-size:11px;display:block}.slip p{white-space:pre-wrap;margin:0}.composer{grid-template-columns:auto auto 1fr auto;align-items:end;gap:8px;display:grid}.direct{letter-spacing:.14em;text-transform:uppercase;color:var(--dust);grid-column:1/-1;margin:0;font-size:11px}.direct-toggle{gap:6px;display:flex}.direct-toggle button{color:var(--dust);background:#0c0e13b3;border:1px solid #c9a2274d;padding:10px 12px}.direct-toggle button.on.prosecution{color:#ffe8e4;border-color:var(--crimson);background:#c23b2259}.direct-toggle button.on.defense{color:var(--brass);border-color:var(--brass);background:#ecc2462e}.deliberation-bar{align-items:center;gap:10px;display:flex}.banner{background:#282a2f;border-radius:8px;margin:12px 0;padding:10px 14px}.banner.error{color:#ffdad6;background:#3a1210}.verdict-veil{z-index:20;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#0c0e13d1;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.verdict-sheet{background:var(--parchment);color:#1f1b17;border:2px solid var(--brass);text-align:center;border-radius:12px;width:min(640px,100%);padding:40px 36px}.mega{font-family:var(--serif);margin:12px 0 0;font-size:80px;line-height:.9}.mega.yes{color:var(--crimson)}.mega.no{color:#3d2e00}.sub{letter-spacing:.08em;text-transform:uppercase;margin-top:4px;font-size:13px}.reason{text-align:left;background:#1f1b170f;border-radius:8px;margin:20px 0;padding:16px}.reason-head{border-bottom:1px solid #1f1b1726;justify-content:space-between;margin-bottom:10px;padding-bottom:6px;display:flex}@media (width<=980px){.app.antechamber{padding:0 16px calc(24px + env(safe-area-inset-bottom))}.docket,.lobby-grid,.topbar{grid-template-columns:1fr}.topbar{text-align:center;gap:8px;height:auto;padding:12px 0}.juror-meta{text-align:center}.app.in-session .topbar{background:var(--ink);padding:10px 12px;padding-top:max(10px, env(safe-area-inset-top));position:relative}.hero h2{max-width:none;font-size:32px}.courtroom{flex-direction:column;height:auto;min-height:100dvh;display:flex;overflow:visible}.gallery{flex:none;height:min(48vh,380px);position:relative;inset:auto}.actor.judge{width:28%;height:42%;top:2%}.actor.defendant{width:20%;height:48%;top:18%;left:36%}.actor.prosecution,.actor.defense{width:48%;height:82%;bottom:0}.actor.prosecution .speech{width:min(280px,48vw);max-width:48vw;top:6%;left:72%}.actor.defense .speech{width:min(280px,48vw);max-width:48vw;top:6%;right:72%}.speech p{max-height:none;font-size:12px;overflow:visible}.jury-rail{max-height:none;padding-bottom:max(14px, env(safe-area-inset-bottom));position:relative}.rail-head{flex-direction:column;align-items:stretch}.rail-actions{width:100%}.rail-actions button{flex:1;min-height:44px}.rail-body,.composer{grid-template-columns:1fr}.record-strip,.exhibits-card{max-height:28vh}}@media (width<=640px){.app.antechamber{padding-left:12px;padding-right:12px}.hero h2{font-size:28px}.case-card,.session-card,.file,.counsel{padding:14px}.lobby-sprite{height:120px}.actor.judge,.actor.defendant{display:none}.gallery{height:34vh}.actor.prosecution,.actor.defense{width:50%;height:100%}.nametag{min-width:0;padding:4px 8px 6px}.nametag strong{font-size:12px}.actor.prosecution .speech,.actor.defense .speech{width:min(200px,46vw);max-width:46vw;padding:8px;top:4%}.actor.prosecution .speech{left:58%}.actor.defense .speech{right:58%}.speech p{max-height:none;font-size:11px;overflow:visible}.rail-actions,.direct-toggle,.deliberation-bar{flex-wrap:wrap}.rail-actions button,.direct-toggle button,.composer .primary,.deliberation-bar button,.session-card .primary,.session-card .secondary,.file .primary,.file .secondary{width:100%;min-height:44px}.direct-toggle{width:100%}.direct-toggle button{flex:1}.mega{font-size:56px}.verdict-sheet{padding:28px 18px}.topbar .brand h1{font-size:18px}}
