:root{--navy: #14213d;--navy-deep: #0b1326;--wine: #6b1430;--gold: #d4a64a;--gold-soft: #f3d58e;--paper: #f6efdf;--ink: #e9e3d6;--muted: #9aa5c0;--hot: #ff6b81;--font: "PingFang TC", "Noto Sans TC", "Microsoft JhengHei", system-ui, sans-serif}*{box-sizing:border-box}html,body{margin:0;height:100%;background:var(--navy-deep);color:var(--ink);font-family:var(--font);overflow:hidden}button{font:inherit;color:inherit;cursor:pointer}[hidden]{display:none!important}#stage{position:fixed;top:0;right:0;bottom:0;left:0}#stage canvas{display:block}#flash{position:fixed;top:0;right:0;bottom:0;left:0;background:#fff;opacity:0;pointer-events:none;z-index:20}#flash.on{animation:flash .45s ease-out}@keyframes flash{0%{opacity:.85}to{opacity:0}}#bigword{position:fixed;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;pointer-events:none;z-index:21;font-size:clamp(40px,11vw,96px);font-weight:900;letter-spacing:.08em;opacity:0;color:var(--gold-soft);text-shadow:0 4px 0 var(--wine),0 0 40px rgba(0,0,0,.6)}#bigword.show{animation:pop 1.1s ease-out forwards}#bigword.hit{color:#fff}#bigword.reverse{color:var(--hot);font-size:clamp(34px,9vw,80px)}@keyframes pop{0%{opacity:0;transform:scale(1.6)}15%{opacity:1;transform:scale(1)}80%{opacity:1}to{opacity:0}}@media (prefers-reduced-motion: reduce){#bigword.show{animation:none;opacity:1}#flash.on{animation:none}}#hud{position:fixed;top:0;left:0;right:0;z-index:10;display:flex;gap:10px;align-items:center;padding:max(10px,env(safe-area-inset-top)) 16px 10px;background:linear-gradient(rgba(11,19,38,.85),transparent);font-size:14px}#hud-court{color:var(--gold-soft);font-weight:700}#hud-case{color:var(--muted);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#btn-skip{background:none;border:1px solid rgba(212,166,74,.5);border-radius:999px;padding:4px 12px;font-size:13px;color:var(--gold-soft)}#dialog{position:fixed;left:50%;transform:translate(-50%);bottom:max(16px,env(safe-area-inset-bottom));z-index:12;width:min(760px,calc(100% - 32px));min-height:120px;padding:30px 20px 18px;cursor:pointer;background:#0b1326eb;border:2px solid var(--gold);border-radius:14px;box-shadow:0 10px 40px #00000080}#dlg-name{position:absolute;top:-16px;left:16px;background:var(--wine);color:#fff;font-weight:700;padding:4px 14px;border-radius:6px;font-size:15px;border:1px solid var(--gold)}#dlg-name[data-side=right]{left:auto;right:16px}#dlg-text{margin:0;font-size:18px;line-height:1.65}#dlg-next{position:absolute;right:16px;bottom:8px;color:var(--gold);font-size:12px;animation:blink 1s infinite}@keyframes blink{50%{opacity:.2}}#panel{position:fixed;left:50%;transform:translate(-50%);bottom:0;z-index:11;width:min(760px,100%);max-height:62vh;overflow-y:auto;padding:18px 16px max(18px,env(safe-area-inset-bottom));background:#0b1326f5;border-top:2px solid var(--gold);border-radius:16px 16px 0 0}#panel h2{margin:0 0 12px;font-size:18px;color:var(--gold-soft)}.tabs{display:flex;gap:6px;margin-bottom:10px}.tab{flex:1;padding:8px;background:transparent;border:1px solid rgba(212,166,74,.35);border-radius:8px}.tab.on{background:var(--wine);border-color:var(--gold)}.testimony,.evidence{padding:12px 14px;margin-bottom:8px;border-radius:10px;background:#ffffff0d;border:1px solid rgba(255,255,255,.08);cursor:pointer}.testimony p,.evidence p{margin:6px 0 0;line-height:1.6;font-size:15px}.testimony.focus{border-color:var(--gold)}.testimony.solved{cursor:default;border-color:#78c89666}.evidence.picked{border-color:var(--hot);background:#ff6b811f}.who{font-weight:700;color:var(--gold-soft);font-size:14px;display:flex;justify-content:space-between;gap:8px}.ok{color:#8fd6a8;font-weight:500}.reveal{color:#fff}.note,.muted{color:var(--muted);font-size:13px}.aim{color:var(--hot);font-size:14px;margin:0 0 8px}.timeline{margin:0;padding-left:20px;line-height:2}.actions{display:flex;gap:8px;margin:-2px 0 10px}.actions.sticky{position:sticky;bottom:0;padding-top:8px;background:#0b1326f5}.actions button{flex:1}.foot{display:flex;gap:8px;align-items:center;justify-content:space-between;margin-top:12px}.foot.col{flex-direction:column;align-items:stretch}button{padding:11px 14px;border-radius:10px;border:1px solid rgba(212,166,74,.45);background:#ffffff0f}button.primary{background:var(--wine);border-color:var(--gold);font-weight:700;color:#fff}button.primary:disabled{opacity:.4;cursor:not-allowed}button.ghost{background:transparent;border-color:#ffffff26;color:var(--muted)}button.danger{border-color:var(--hot);color:var(--hot)}.issue{border:1px solid rgba(255,255,255,.1);border-radius:10px;margin:0 0 10px;padding:10px 12px}.issue.key{border-color:var(--gold)}.issue legend{padding:0 6px;font-weight:700;font-size:15px}.opts{display:flex;flex-wrap:wrap;gap:6px}.opt,.chip{padding:8px 12px;font-size:14px}.opt.on,.chip.on{background:var(--wine);border-color:var(--gold);color:#fff}.principle{display:block;width:100%;text-align:left;margin-bottom:6px}.principle strong{display:block;font-size:15px}.principle small{color:var(--muted)}.principle.on{background:var(--wine);border-color:var(--gold)}.principle.on small{color:#f3d9de}.compare{display:grid;grid-template-columns:1fr auto 1fr;gap:8px;align-items:center;margin-bottom:12px}.vcard{background:var(--paper);color:var(--navy);border-radius:8px;padding:10px;display:flex;flex-direction:column;gap:4px;text-align:center;border:3px solid var(--gold)}.vcard em{font-style:normal;font-weight:900;color:var(--wine);font-size:20px}.vcard small{font-size:12px;color:#4a5268}.vs{font-size:40px;font-weight:900;color:var(--gold-soft)}.vs.ne{color:var(--hot)}.appeal-opts{display:flex;flex-direction:column;gap:8px}.appeal-opts .opt{text-align:left;font-size:15px;padding:12px 14px}.share-img{width:100%;max-width:360px;display:block;margin:0 auto;border-radius:8px}.overall{text-align:center;color:var(--gold-soft);font-weight:700;margin:4px 0}.screen{position:fixed;top:0;right:0;bottom:0;left:0;z-index:15;overflow-y:auto;display:flex;flex-direction:column;justify-content:space-between;background:linear-gradient(#0b132640,#0b1326e6 70%)}.home-inner{padding:18vh 16px 24px;max-width:520px;margin:0 auto;width:100%;text-align:center}.kicker{color:var(--muted);letter-spacing:.2em;font-size:13px;margin:0}h1{font-size:clamp(56px,16vw,96px);margin:8px 0;color:var(--gold-soft);letter-spacing:.06em;text-shadow:0 4px 0 var(--wine)}.hook{font-size:18px;line-height:1.7;margin:0 0 24px}#btn-start{width:100%;font-size:18px;padding:14px}#court-list{display:flex;flex-direction:column;gap:8px;margin-top:18px}.court{text-align:left;display:flex;flex-direction:column;gap:2px}.court small{color:var(--muted)}.sd-footer{padding:24px 16px max(24px,env(safe-area-inset-bottom));text-align:center}.sd-brand{display:inline-flex;align-items:center;gap:8px;color:#5fa3d6;text-decoration:none;font-family:Fredoka,sans-serif;font-weight:600;font-size:18px}#getev{position:fixed;top:0;right:0;bottom:0;left:0;z-index:30;display:grid;place-items:center;padding:16px;background:#050914b8}.getev-card{width:min(420px,100%);background:var(--paper);color:var(--navy);border:4px solid var(--gold);border-radius:12px;padding:18px 18px 14px;display:flex;flex-direction:column;gap:8px;animation:getev .35s ease-out}.getev-card small{color:var(--wine);font-weight:700;letter-spacing:.05em}.getev-card strong{font-size:22px}.getev-card p{margin:0;line-height:1.65;font-size:15px;color:#2b3248}.getev-card button{margin-top:6px}@keyframes getev{0%{transform:translateY(24px) scale(.95);opacity:0}to{transform:none;opacity:1}}@media (prefers-reduced-motion: reduce){.getev-card{animation:none}}.badge{margin-left:6px;padding:1px 7px;border-radius:999px;background:var(--hot);color:#fff;font-size:11px;font-weight:700}#dlg-name[data-side=judge]{left:50%;transform:translate(-50%);background:var(--navy)}:root{--paper-ink: #23283a;--hand: "LXGW WenKai TC", var(--font)}#dialog{background:none;border:56px solid transparent;border-image:url(/ui/dialog.webp) 56 fill / 28px stretch;border-radius:0;box-shadow:none;padding:6px 8px}#dlg-name{top:-22px;left:4px;border:0;border-radius:0;padding:8px 34px 9px;background:url(/ui/nameplate.webp) center / 100% 100% no-repeat}#dlg-name[data-side=right]{right:4px}#dlg-name[data-side=judge]{background:url(/ui/nameplate.webp) center / 100% 100% no-repeat;filter:hue-rotate(200deg) saturate(.7)}#panel{background:none;border:0;border-radius:0;border-top:0;border-style:solid;border-width:40px 30px 0;border-color:transparent;border-image:url(/ui/panel.webp) 96 72 0 fill / 40px 30px 0 stretch;color:var(--paper-ink);padding:4px 6px max(18px,env(safe-area-inset-bottom))}#panel h2{color:var(--wine)}#panel .muted,#panel .note{color:#5b6178}#panel .aim{color:#a3122f}#panel .tab{border-color:#6b143059;color:var(--paper-ink);background:#ffffff80}#panel .tab.on{color:#fff}#panel .timeline{color:var(--paper-ink)}#panel .issue{border-color:#23283a2e;background:#ffffff73}#panel .issue.key{border-color:var(--gold);background:#d4a64a1f}#panel .principle small{color:#5b6178}#panel .actions.sticky{background:linear-gradient(transparent,#f3ecde 30%)}.testimony{position:relative;border:0;border-radius:0;color:var(--paper-ink);padding:26px 30px 24px;background:url(/ui/note.webp) center / 100% 100% no-repeat;filter:drop-shadow(0 4px 6px rgba(0,0,0,.25))}.testimony:nth-child(odd){transform:rotate(-.8deg)}.testimony:nth-child(2n){transform:rotate(.7deg)}.testimony p{font-family:var(--hand);font-size:17px;line-height:1.7}.testimony .who{color:var(--wine)}.testimony.focus{outline:3px solid var(--gold);outline-offset:-6px}.testimony.solved{background-image:url(/ui/note-solved.webp);padding:30px 64px 26px 34px}.testimony .ok{color:#2f7a4f}.testimony .reveal{color:var(--wine);font-weight:700}.evidence{border:0;border-radius:0;color:var(--paper-ink);padding:52px 26px 26px;background:url(/ui/evidence.webp) center / 100% 100% no-repeat;filter:drop-shadow(0 4px 6px rgba(0,0,0,.25))}.evidence .who{color:var(--navy);padding-left:52px}.evidence.picked{background-color:transparent;filter:drop-shadow(0 0 0 var(--hot)) drop-shadow(0 0 8px rgba(255,107,129,.9))}.getev-card{border:0;border-radius:0;background:url(/ui/evidence.webp) center / 100% 100% no-repeat;padding:64px 30px 28px}button.primary{border:24px solid transparent;border-image:url(/ui/button.webp) 48 fill / 24px stretch;border-radius:0;background:none;padding:0 6px;min-height:48px;text-shadow:0 1px 0 rgba(0,0,0,.4)}button.primary:disabled{filter:grayscale(.8)}#panel button:not(.primary):not(.tab):not(.ghost):not(.principle):not(.opt):not(.chip),.court,#btn-skip{border:18px solid transparent;border-image:url(/ui/button-alt.webp) 36 fill / 18px stretch;border-radius:0;background:none;color:#f3ead6;padding:0 6px}.opt,.chip{color:var(--paper-ink);background:#fff9;border-color:#23283a40}.opt.on,.chip.on,.principle.on{color:#fff}.principle{color:var(--paper-ink);background:#ffffff8c;border-color:#23283a33}#panel .tab.on{background:var(--wine);border-color:var(--gold);color:#fff}#panel button.ghost{color:var(--wine);border-color:#6b143066;background:#ffffff80}.evidence{padding:62px 13% 34px 11%}.evidence .who{padding-left:0}.evidence p{font-size:14px}.getev-card{padding:78px 9% 34px 8%}.evidence,.getev-card{container-type:inline-size;padding:0!important;border:0;background:none!important;filter:drop-shadow(0 4px 6px rgba(0,0,0,.28));color:var(--paper-ink);animation:none}.getev-card{width:min(440px,100%);animation:getev .35s ease-out}.ev-head{position:relative;aspect-ratio:640 / 120;margin-bottom:-2px;background:url(/ui/evidence-head.webp) 0 0 / 100% 100% no-repeat}.ev-tag{position:absolute;left:67.5%;top:40%;width:25.2%;height:35.8%;display:grid;place-items:center;color:var(--gold-soft);font-weight:700;font-size:clamp(11px,3.4cqw,16px);letter-spacing:.08em}.ev-body{border-style:solid;border-color:transparent;border-width:0 calc(46 / 640 * 100cqw) 7.8125cqw;border-image:url(/ui/evidence-body.webp) 0 46 50 fill / 0 calc(46 / 640 * 100cqw) 7.8125cqw stretch;padding:1.5cqw 3cqw 2cqw;display:flex;flex-direction:column;gap:6px}.ev-body strong{color:var(--navy);font-size:16px}.ev-body p{margin:0;font-size:14px;line-height:1.65;color:#2b3248}.getev-card .ev-body strong{font-size:20px}.getev-card .ev-body p{font-size:15px}.getev-card .ev-body button{margin-top:8px}.evidence.picked{filter:drop-shadow(0 0 2px var(--hot)) drop-shadow(0 0 10px rgba(255,107,129,.9))}.evidence{max-width:460px;margin:0 auto 10px}#panel .foot{margin-bottom:14px}
