:root{color-scheme:dark;--bg:#101b24;--panel:#16252e;--line:#38505a;--ink:#e9e9dd;--muted:#a9bebf;--teal:#9ed8cf;--gold:#dcc094;--scale:1;font-family:system-ui,-apple-system,"Noto Sans KR",sans-serif;font-synthesis:none}*{box-sizing:border-box}body{margin:0;background:#0b141b;color:var(--ink);font-size:calc(16px * var(--scale));line-height:1.75}button,input,textarea,select{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer;color:inherit;border:1px solid #48616b;background:#1c323d;padding:.65em 1em;border-radius:5px;min-height:44px;text-align:left}button:hover{background:#294853;border-color:var(--teal)}button:disabled{opacity:.45;cursor:default}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px solid #bcefe3;outline-offset:3px}a{color:var(--teal)}h1,h2,h3,p{margin-top:0}h1,h2,.serif{font-family:"Noto Serif KR",Georgia,serif}h1{line-height:1.3;font-weight:600}h2{line-height:1.5}p:last-child{margin-bottom:0}.topbar{height:64px;display:flex;align-items:center;gap:24px;padding:0 24px;border-bottom:1px solid var(--line);background:#101b24;position:relative;z-index:5}.brand{color:var(--ink);text-decoration:none;font-weight:700}.brand span{font-weight:400;color:var(--muted);font-size:.85em;margin-left:12px}.case-number{color:var(--gold);font-size:12px;letter-spacing:.18em}.tools{margin-left:auto;display:flex;gap:8px}.tools button{font-size:13px;padding:6px 12px;min-height:36px}.landing{min-height:calc(100dvh - 64px);background:linear-gradient(90deg,rgba(8,22,29,.97),rgba(10,26,33,.8) 43%,rgba(10,26,33,.08)),var(--gorge-bg) center/cover;display:grid;align-content:center;padding:70px clamp(24px,7vw,110px)}.landing-copy{max-width:580px}.eyebrow{font-size:12px;letter-spacing:.18em;color:var(--gold);text-transform:uppercase}.landing h1{font-size:clamp(42px,6vw,80px);letter-spacing:-.055em;margin:22px 0 28px}.landing .premise{font-family:"Noto Serif KR",serif;font-size:clamp(18px,2vw,23px);line-height:1.9}.subtitle{color:var(--muted);max-width:510px;font-size:14px;margin-top:24px}.start-form{display:flex;align-items:end;gap:10px;max-width:500px;margin:34px 0 12px}.start-form label{display:block;flex:1;font-size:13px;color:var(--muted)}input,textarea,select{background:#101c26;color:var(--ink);border:1px solid #47616c;border-radius:4px;padding:10px 12px;width:100%;min-height:44px}textarea{resize:vertical;min-height:110px}.start-form input{margin-top:6px}.primary{background:#a6d4c9;color:#112b2d;border-color:#a6d4c9;font-weight:700}.primary:hover{background:#c1e9dd;color:#112b2d}.quiet{background:transparent}.small{font-size:13px;color:var(--muted)}.start-options{display:flex;gap:8px;flex-wrap:wrap}.stage-layout{display:grid;grid-template-columns:minmax(0,1fr) 290px;max-width:1800px;margin:auto}.play-main{min-width:0}.actbar{padding:14px 24px;display:flex;justify-content:space-between;gap:14px;border-bottom:1px solid var(--line);font-size:13px;letter-spacing:.035em}.actbar span{color:var(--muted)}.court{position:relative;isolation:isolate;aspect-ratio:1.9;background:var(--court-bg) center 53%/cover;overflow:hidden;min-height:310px}.court:after{content:"";position:absolute;inset:0;pointer-events:none;box-shadow:inset 0 -65px 65px -40px #081823,inset 0 60px 80px -60px #081823;z-index:6}.court .actor{position:absolute;bottom:21%;width:17%;max-width:220px;filter:drop-shadow(0 6px 3px #0a1528b0);transform-origin:center bottom;transition:filter .3s,transform .3s;z-index:3}.court .actor[data-id="defense"]{left:9%}.court .actor[data-id="defense2"]{left:24%;width:13%;bottom:25%}.court .actor[data-id="prosecutor"]{right:9%}.court .actor[data-id="rin"]{left:36%;width:13%;bottom:23%}.court .actor[data-id="hyuk"]{left:50%;width:13%;bottom:23%}.court .actor.witness{left:42%;width:19%;bottom:21%;z-index:5;background:radial-gradient(ellipse,#1b303544,transparent 70%)}.court .actor.speaking{filter:drop-shadow(0 0 9px #b8d9bd66);z-index:5}.actor-art{display:block;width:100%;height:auto;overflow:hidden}.actor-name{font-size:clamp(9px,1vw,12px);line-height:1.4;position:absolute;bottom:0;left:50%;transform:translate(-50%,100%);white-space:nowrap;padding:3px 8px;background:#0c1c24e8;border-top:1px solid #adc4bd}.actor.speaking .actor-name{color:#b6edda;border-top-color:#b6edda}.gallery{position:absolute;width:22%;top:29%;opacity:.88;z-index:2}.gallery.left{left:12%}.gallery.right{right:12%}.gallery svg{display:block;width:100%}.seat-label{position:absolute;bottom:9%;font-size:11px;padding:2px 8px;background:#101c24d9;border:1px solid #687773;z-index:7}.seat-label.left{left:10%}.seat-label.right{right:10%}.judge-hands{position:absolute;bottom:-4%;left:30%;width:40%;height:18%;z-index:8;pointer-events:none}.stage-note{position:absolute;top:15px;left:18px;right:18px;z-index:9;display:flex;justify-content:space-between;font-size:11px;color:#d5e1db;text-shadow:0 2px 3px #000}.stage-note span{padding:4px 7px;background:#10232aca}.entry .actor{transform:translateY(-12px)}.entry .gallery{transform:translateY(-10px)}.dialogue{border-top:1px solid #405862;background:linear-gradient(130deg,#1d303b,#14232e);padding:24px 30px 28px;position:relative;min-height:230px}.speaker{font-size:12px;color:var(--teal);letter-spacing:.08em;margin:0 0 12px}.speech-text{font-size:clamp(17px,1.6vw,21px);line-height:1.9;max-width:1000px;min-height:64px;white-space:pre-line}.direction{border-left:2px solid #bca17e;padding-left:14px;color:#d3c3aa;font-size:14px;margin:14px 0}.actions{display:flex;justify-content:space-between;gap:12px;margin-top:22px;flex-wrap:wrap}.actions .next{margin-left:auto;min-width:150px;text-align:center}.choices{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:18px}.choice{padding:16px 18px;background:#16303a;border:1px solid #537774;line-height:1.7}.choice span{color:var(--gold);display:block;font-size:11px;letter-spacing:.12em;margin-bottom:5px}.sidebar{border-left:1px solid var(--line);background:#121f28;display:flex;flex-direction:column;max-height:calc(100dvh - 64px);position:sticky;top:0;overflow:auto}.tabs{display:flex;position:sticky;top:0;background:#121f28;z-index:1;border-bottom:1px solid var(--line)}.tabs button{border:0;border-radius:0;flex:1;font-size:12px;white-space:nowrap;background:transparent;padding:14px 4px}.tabs button.active{color:var(--teal);box-shadow:inset 0 -2px var(--teal)}.side-content{padding:18px}.side-content h2{font-size:16px;margin:0 0 16px}.record-button{width:100%;display:block;margin-bottom:8px;padding:12px 10px;background:#1a2a34;border-color:#31444e;font-size:12px}.record-button small{display:block;color:var(--muted);margin-top:5px}.record-button.new{border-left:3px solid var(--teal)}.evidence-count{font-size:11px;letter-spacing:.07em;color:var(--gold);margin-bottom:14px}.progress-item{display:flex;align-items:start;gap:8px;font-size:12px;border-bottom:1px solid #2a414b;padding:12px 0}.progress-item span{color:var(--teal)}.dialog-layer{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:20px;background:#060c13cc;backdrop-filter:blur(8px)}.modal{background:#182b35;border:1px solid #526c75;width:min(850px,100%);max-height:calc(100dvh - 40px);overflow:auto;border-radius:8px;box-shadow:0 30px 80px #0008}.modal-head{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:20px 25px;border-bottom:1px solid var(--line);position:sticky;top:0;background:#182b35;z-index:2}.modal-head h2{font-size:20px;margin:0}.modal-body{padding:25px}.modal-head button{border:0;background:transparent}.paper{background:#e5dfcf;color:#263638;padding:28px;line-height:1.95;border-radius:3px}.paper h3{font-size:21px}.paper .source{color:#516969;font-size:12px;border-bottom:1px solid #b2b7a5;padding-bottom:12px}.limit{font-size:13px;border-top:1px solid #8b9a934d;margin-top:22px;padding-top:14px}.puzzle-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.puzzle-grid fieldset{border:1px solid #45606a;margin:0;padding:14px;min-width:0}.puzzle-grid legend{font-size:14px;color:var(--gold);padding:0 5px}.radio{display:flex;align-items:start;gap:10px;padding:10px 2px;cursor:pointer;font-size:14px}.radio input{width:18px;min-height:18px;margin-top:6px;flex:none;accent-color:#9bd8c5}.order-choices,.order-slots{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0}.order-slots span{border:1px solid var(--gold);padding:9px 12px;color:var(--gold);font-size:13px}.feedback{padding:13px 16px;margin:14px 0;background:#243f48;border-left:3px solid var(--teal);font-size:14px}.warning{border-left-color:#dbad87;color:#f2d0b0}.reference-links{display:flex;flex-wrap:wrap;gap:6px;margin:16px 0}.reference-links button{font-size:12px;padding:6px 10px}.map{width:100%;background:#132b37;border:1px solid #3c626a;border-radius:6px;margin:12px 0}.map text{font:14px system-ui;fill:#f1eadc}.map .smalltext{font-size:12px;fill:#adc4c1}.question-list{display:grid;gap:8px;margin-bottom:20px}.question-list button.selected{border-color:#a8d2c6;background:#2c4c54}.log-item{padding:12px 0;border-bottom:1px solid var(--line);font-size:14px}.log-item small{color:var(--gold)}.settings{display:grid;gap:12px}.settings label{display:flex;align-items:center;gap:14px}.settings input[type=checkbox]{width:20px;min-height:20px}.settings select{max-width:150px}.menu-actions{display:flex;gap:8px;flex-wrap:wrap;margin:24px 0}.notice{color:#c8bfa6;font-size:12px}.verdict-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px;margin:20px 0}.verdict-grid fieldset{border:1px solid var(--line);padding:16px}.verdict-grid legend{color:var(--gold)}.verdict-grid label{display:flex;gap:10px;align-items:center;font-size:15px;padding:8px 0}.verdict-grid input{width:18px;min-height:18px}.result{max-width:1100px;margin:auto;padding:40px 24px 70px}.result h1{font-size:40px}.epilogue{max-width:900px;margin:0 auto;padding:35px 28px;background:linear-gradient(#10232ce8,#13232ff5),var(--gorge-bg) center/cover;min-height:calc(100dvh - 64px)}.epi-cast{display:flex;gap:10px;height:230px;justify-content:center;margin:10px auto 30px}.epi-cast>div{width:150px;min-width:0}.epi-cast .actor-art{height:200px}.epi-cast span{display:block;text-align:center;font-size:12px;color:var(--muted)}.epilogue h1{font-size:32px;margin-bottom:24px}.epilogue .speech-text{font-family:"Noto Serif KR",serif}.save-notice{position:fixed;bottom:10px;left:15px;right:15px;z-index:110;pointer-events:none;color:#ffd4a8;background:#1b2939;font-size:12px;max-width:700px;margin:0 auto;padding:0}.save-notice:empty{display:none}.save-notice:not(:empty){padding:10px}.trial-member-entry{font-size:13px;margin-top:30px;max-width:580px}.trial-member-entry summary{cursor:pointer;color:var(--muted)}.trial-reward{margin-top:14px}.result .trial-reward{max-width:750px}.host-expanded,#gameShell.expanded{min-height:100dvh;width:100%;max-width:none}.reaction-flash{animation:focus-in .45s ease-out}@keyframes focus-in{from{filter:brightness(1.5)}to{filter:brightness(1)}}.reduced *{animation:none!important;transition:none!important;scroll-behavior:auto!important}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}@media(min-width:1800px){.court{min-height:520px}}@media(max-width:1000px){.stage-layout{grid-template-columns:minmax(0,1fr) 240px}.court{min-height:280px}.side-content{padding:12px}.dialogue{padding:20px}.choices{grid-template-columns:1fr}.speech-text{font-size:18px}}@media(max-width:720px){.topbar{height:58px;padding:0 12px;gap:10px}.brand span,.case-number{display:none}.tools button{font-size:12px}.stage-layout{display:flex;flex-direction:column}.sidebar{position:static;border-left:0;border-top:1px solid var(--line);max-height:350px}.side-content{padding:15px}.record-button{padding:12px}.court{min-height:245px;aspect-ratio:1.7;background-position:center 55%}.court .actor{width:20%;bottom:23%}.court .actor[data-id=defense]{left:6%}.court .actor[data-id=prosecutor]{right:6%}.court .actor[data-id=defense2]{left:22%;width:14%}.court .actor[data-id=rin]{left:36%;width:15%}.court .actor[data-id=hyuk]{left:51%;width:15%}.court .actor.witness{left:39%;width:22%}.actor-name{font-size:10px;padding:3px 5px}.gallery{top:27%;width:24%}.gallery.left{left:9%}.gallery.right{right:9%}.dialogue{padding:20px 17px}.speech-text{font-size:17px;min-height:90px}.actbar{padding:11px 15px;font-size:11px}.actbar span{white-space:nowrap}.dialog-layer{padding:8px}.modal{max-height:calc(100dvh - 16px)}.modal-head{padding:14px}.modal-head h2{font-size:17px}.modal-body{padding:17px}.paper{padding:20px}.puzzle-grid,.verdict-grid{grid-template-columns:1fr}.landing{padding:45px 24px;background-position:60% center}.landing h1{font-size:48px}.start-form{flex-wrap:wrap}.start-form label{min-width:180px}.start-form button{width:100%;text-align:center}.epilogue{padding:27px 20px}.epi-cast{height:180px}.epi-cast .actor-art{height:155px}.epi-cast>div{width:25%}.stage-note{font-size:9px;top:10px;left:9px;right:9px}.seat-label{font-size:10px}.choices{gap:8px}.choice{padding:12px 14px}.actions{gap:8px}.actions button{font-size:14px}}@media(max-width:360px){.court{min-height:220px}.brand{font-size:14px}.tools button{padding:5px 8px}.actbar{font-size:10px}.stage-note span:last-child{display:none}.actor-name{font-size:9px}.speech-text{font-size:16px}.epi-cast span{font-size:10px}}@media(max-height:520px) and (min-width:721px){.court{min-height:230px;aspect-ratio:2.7}.sidebar{max-height:none;position:static}.dialogue{min-height:200px}}

:root{--court-bg:url('./court.webp');--gorge-bg:url('./gorge.webp')}.standalone-note{margin:14px 0;padding:14px;border-left:2px solid #9ed8cf}
/* Review improvements ported from webgame-lab 53e0158, 2026-10-19. */

/* Text size setting also reaches the dialogue, records and forms. */
.speech-text{font-size:calc(clamp(17px,1.6vw,21px) * var(--scale))}
.direction,.feedback,.radio,.log-item{font-size:calc(14px * var(--scale))}
.speaker,.record-button,.progress-item,.paper .source,.tabs button{font-size:calc(12px * var(--scale))}
.small,.limit{font-size:calc(13px * var(--scale))}
.verdict-grid label{font-size:calc(15px * var(--scale))}
.actbar{font-size:calc(13px * var(--scale))}
@media(max-width:1000px){.speech-text{font-size:calc(18px * var(--scale))}}
@media(max-width:720px){.speech-text{font-size:calc(17px * var(--scale))}.actbar{font-size:calc(11px * var(--scale))}}
@media(max-width:360px){.speech-text{font-size:calc(16px * var(--scale))}.actbar{font-size:calc(10px * var(--scale))}}

/* Court keeps its composition but leaves room for the dialogue; phones no longer scroll sideways. */
.court-frame{position:relative;background:linear-gradient(#0b141bdb,#0b141bdb),var(--court-bg) center 53%/cover}
.court-frame .court{margin-inline:auto;min-height:0;max-width:calc(max(300px,100dvh - 430px) * 1.9)}
.court-frame .seat-label{bottom:2%}
@media(max-height:520px) and (min-width:721px){.court-frame .court{max-width:none}.court-frame .seat-label{bottom:auto;top:40px}}
@media(max-width:720px){.court-frame .court{max-width:none;aspect-ratio:auto;height:max(220px,calc(100vw / 1.7))}}

/* Sprite cells overlap a little in the sheet; fade the side edges so a neighbouring pose never shows. */
.actor-art{-webkit-mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent);mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent)}

/* Gallery as quiet silhouettes, judge's sleeves and hands in the foreground. */
.gallery{opacity:.8}

/* Past statements viewed on the stage. */
.history-flag{position:absolute;top:46px;left:50%;transform:translateX(-50%);z-index:11;padding:5px 12px;background:#2a2316e8;border:1px solid #dcc094;color:#f2e2c2;font-size:12px;white-space:nowrap;border-radius:3px}
.court-frame:has(.history-flag) .court{filter:saturate(.55) brightness(.92)}
.dialogue.is-history{background:linear-gradient(130deg,#2b2b26,#1e2320)}
.dialogue.is-history .speaker{color:var(--gold)}
@media(max-width:720px){.history-flag{top:34px;font-size:10px;padding:3px 8px}}

/* Evidence, findings, act and verdict moments. They never advance the hearing. */
.record-button.new{border-left-color:var(--teal)}
.record-button.new small::before{content:"새 기록 · ";color:var(--teal)}
.evidence-in{position:absolute;left:18px;top:46px;z-index:11;max-width:min(520px,70%);padding:10px 14px;background:#0f2028f0;border:1px solid #9ed8cf;border-left-width:4px;font-size:13px;line-height:1.6;pointer-events:none;animation:ev-in .35s ease-out both}
.evidence-in small{display:block;color:var(--teal);letter-spacing:.14em;font-size:11px}
@keyframes ev-in{from{transform:translateY(-8px);opacity:0}}
.act-card{position:absolute;inset:0;z-index:11;display:grid;place-content:center;text-align:center;gap:6px;pointer-events:none;background:linear-gradient(transparent 32%,#050c12e0 32% 68%,transparent 68%);animation:act-card 2.1s ease both}
.act-card small{color:var(--gold);letter-spacing:.3em;font-size:13px}
.act-card strong{font-family:"Noto Serif KR",serif;font-size:clamp(24px,3.2vw,40px);letter-spacing:.12em;color:#f3ead7;font-weight:600}
@keyframes act-card{0%{opacity:0}14%,80%{opacity:1}100%{opacity:0}}
.moment{position:absolute;inset:0;z-index:12;display:grid;place-items:center;pointer-events:none;background:radial-gradient(ellipse at center,#06101688,transparent 72%)}
.moment-card{display:flex;align-items:center;gap:18px;padding:18px 26px 18px 20px;background:#e8e1d0;color:#1f2f33;border-radius:4px;box-shadow:0 18px 50px #000a;max-width:min(560px,86%);animation:moment-in .38s cubic-bezier(.2,1.4,.4,1) both}
.moment-card .stamp{flex:none;display:grid;place-items:center;width:76px;height:76px;border:3px double #2f6c69;border-radius:50%;color:#2f6c69;font-size:20px;font-weight:800;transform:rotate(-12deg);font-family:"Noto Serif KR",serif}
.moment-card small{display:block;font-size:11px;letter-spacing:.14em;color:#7a6a4f}
.moment-card strong{display:block;font-size:20px;line-height:1.45}
.moment-card span{display:block;font-size:13px;color:#4c5d60}
.moment.out,.evidence-in.out,.act-card.out{opacity:0;transition:opacity .35s}
@keyframes moment-in{from{transform:scale(1.12);opacity:0}to{transform:none;opacity:1}}
.epilogue{position:relative}
.moment-verdict{position:fixed;z-index:120}
.moment-verdict .moment-card{flex-direction:column;align-items:flex-start;gap:4px;border-top:4px solid #8b3a2f;padding:20px 28px}
@media(max-width:720px){.moment-card{gap:12px;padding:12px 14px}.moment-card .stamp{width:54px;height:54px;font-size:15px}.moment-card strong{font-size:16px}.evidence-in{left:8px;right:8px;top:34px;font-size:12px;max-width:none}}

/* Wrong answers explain each field; direct questions show who answers. */
.feedback.multiline{white-space:pre-line}
.feedback.answer{display:flex;gap:14px;align-items:flex-start}
.answer-portrait{flex:none;width:76px;border-radius:4px;overflow:hidden;background:#0d1a21;border:1px solid #47616c}
.answer-portrait .actor-art{width:100%;height:auto}
.feedback.answer p{margin:0 0 6px}
.question-list button{text-align:left}
