.court-shell{padding-bottom:80px}.court-hero{max-width:820px}.court-hero p{max-width:760px}.court-login{padding:28px;text-align:center}.court-login h2{margin:0 0 9px;font-size:19px}.court-login p{margin:0;color:#727d86;font-size:11px;line-height:1.7}.court-login a,.court-link{display:inline-flex;align-items:center;justify-content:center;height:40px;margin-top:16px;padding:0 16px;border-radius:9px;background:#13b8cf;color:#fff;text-decoration:none;font-size:11px;font-weight:750}.court-layout{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(330px,.75fr);gap:16px;align-items:start}.court-replay-card{padding:16px;background:#111b22;border-color:#253841;color:#fff;box-shadow:0 16px 36px rgba(20,46,58,.14)}.court-replay-head{display:flex;align-items:flex-start;justify-content:space-between;gap:15px;margin:2px 4px 14px}.court-replay-head span{color:#43ddeb;font-size:9px;font-weight:800;letter-spacing:1.5px}.court-replay-head h2{margin:5px 0 4px;font-size:20px}.court-replay-head p{margin:0;color:#9bb0bd;font-size:11px;line-height:1.5}.court-replay-viewport{position:relative;min-height:clamp(300px,43vw,540px);overflow:hidden;border:1px solid #334853;border-radius:12px;background:#65727a}.court-replay-viewport canvas{display:block;width:100%;height:100%}.court-replay-viewport.is-empty{display:grid;place-items:center;padding:25px;color:#9bb0bd;text-align:center;font-size:12px}.court-replay-crosshair{position:absolute;z-index:1;top:50%;left:50%;width:18px;height:18px;transform:translate(-50%,-50%);pointer-events:none}.court-replay-crosshair:before,.court-replay-crosshair:after{position:absolute;content:"";background:#20d5e5;box-shadow:0 0 0 1px rgba(0,0,0,.55)}.court-replay-crosshair:before{top:8px;left:0;width:18px;height:2px}.court-replay-crosshair:after{top:0;left:8px;width:2px;height:18px}.court-replay-hud{position:absolute;z-index:2;left:14px;top:12px;display:flex;gap:16px;pointer-events:none}.court-replay-hud div{display:grid;gap:2px}.court-replay-hud span{color:#9bb0bd;font-size:8px;letter-spacing:1px}.court-replay-hud strong{font-size:18px;font-variant-numeric:tabular-nums}.court-replay-controls{display:flex;align-items:center;gap:10px;padding:12px 4px 0}.court-replay-controls button,.court-replay-controls select{height:33px;border:1px solid #36515e;border-radius:8px;background:#1b2a33;color:#f2fbfd;font:inherit}.court-replay-controls button{padding:0 13px;font-size:11px;font-weight:800}.court-replay-controls input{flex:1;accent-color:#13b8cf}.court-replay-controls output{min-width:86px;color:#c4d4dc;font:10px ui-monospace,SFMono-Regular,Consolas,monospace;text-align:right}.court-replay-controls label{display:flex;align-items:center;gap:5px;color:#9bb0bd;font-size:10px}.court-replay-controls select{padding:0 5px}.court-panel{padding:23px}.court-panel header{margin-bottom:18px}.court-panel header span{display:block;color:#0ca0b5;font-size:9px;font-weight:800;letter-spacing:1.5px}.court-panel h2{margin:5px 0 7px;font-size:21px}.court-panel header p{margin:0;color:#7b8790;font-size:11px;line-height:1.65}.court-cases{display:grid;gap:9px}.court-case-card{width:100%;padding:14px;border:1px solid #e1e8eb;border-radius:11px;background:#fff;text-align:left;cursor:pointer;transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease}.court-case-card:hover{border-color:#9adfe7;box-shadow:0 6px 18px rgba(19,125,144,.08);transform:translateY(-1px)}.court-case-card.active{border-color:#13b8cf;box-shadow:0 0 0 3px rgba(19,184,207,.1)}.court-case-card header{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:0}.court-case-card strong{color:#1b252c;font-size:13px}.court-case-card header span{padding:3px 7px;border-radius:999px;background:#eaf9fb;color:#078fa3;font-size:9px;font-weight:750}.court-case-card p{margin:7px 0 0;color:#77848c;font-size:10px;line-height:1.55}.court-case-card small{display:block;margin-top:7px;color:#a0aab0;font:9px ui-monospace,SFMono-Regular,Consolas,monospace}.court-empty{padding:32px 15px;border:1px dashed #d7e1e4;border-radius:11px;color:#87949c;text-align:center;font-size:11px;line-height:1.7}.court-vote-panel{margin-top:16px;padding:20px;border:1px solid #e1e8eb;border-radius:15px;background:#fff}.court-vote-panel h3{margin:0 0 6px;font-size:16px}.court-vote-panel>p{margin:0;color:#7b8790;font-size:10px;line-height:1.65}.court-verdicts{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:15px}.court-verdicts button{min-height:45px;border:1px solid #dce5e8;border-radius:9px;background:#fff;color:#65727a;font-size:11px;font-weight:750;cursor:pointer}.court-verdicts button:hover{border-color:#13b8cf;color:#078fa3}.court-verdicts button.active[data-verdict=cheating]{border-color:#df9191;background:#fff3f3;color:#bd4f4f}.court-verdicts button.active[data-verdict=legitimate]{border-color:#8bd2b3;background:#eefaf4;color:#19855c}.court-reason-label{display:grid;gap:6px;margin-top:13px;color:#64727a;font-size:10px;font-weight:700}.court-reason-label textarea{width:100%;min-height:94px;padding:10px;border:1px solid #dce5e8;border-radius:9px;resize:vertical;outline:0;font:inherit;font-size:11px;line-height:1.55}.court-reason-label textarea:focus{border-color:#13b8cf;box-shadow:0 0 0 3px rgba(19,184,207,.1)}.court-reason-count{display:flex;justify-content:flex-end;color:#96a2a8;font-size:9px;font-weight:400}.court-submit{width:100%;height:42px;margin-top:12px;border:0;border-radius:9px;background:#13b8cf;color:#fff;font-size:11px;font-weight:800;cursor:pointer}.court-submit:disabled{opacity:.45;cursor:not-allowed}.court-message{min-height:18px;margin:10px 0 0;color:#c65a5a;font-size:10px;line-height:1.5}.court-message.success{color:#13875b}.court-result{margin-top:13px;padding:12px;border-radius:9px;background:#eefaf4;color:#277956;font-size:10px;line-height:1.6}.court-result strong{display:block;font-size:13px}.court-result-stats{display:flex;gap:12px;margin-top:6px;color:#5a806f}.court-note{margin-top:14px;padding:12px;border-radius:9px;background:#f5f8f9;color:#74828a;font-size:9px;line-height:1.7}.court-pending-badge{display:inline-flex;align-items:center;margin-top:10px;padding:4px 8px;border-radius:999px;background:#fff6df;color:#9a751d;font-size:9px;font-weight:750}@media(max-width:900px){.court-layout{grid-template-columns:1fr}.court-replay-viewport{min-height:clamp(300px,62vw,500px)}}@media(max-width:620px){.court-replay-card{padding:11px}.court-panel,.court-vote-panel{padding:17px}.court-replay-controls{flex-wrap:wrap}.court-replay-controls input{order:3;flex-basis:100%}.court-replay-controls output{min-width:75px}.court-replay-controls label{margin-left:auto}.court-hero h1{font-size:29px}}
/* Court page, brand palette. The replay panel used to be a near-black slab that
   belonged to no other surface on the site; it is now the same white card the
   rest of the product uses, with the cyan reserved for the case list, the vote
   panel and the viewport chrome. Only the 3D scene inside the viewport keeps its
   own lighting. */
.court-replay-card{padding:16px;background:#fff;border-color:#e1e8eb;color:#18222b;box-shadow:0 2px 12px rgba(24,34,48,.035)}
.court-replay-head span{color:#0ca0b5}
.court-replay-head p{color:#7b8790}
.court-replay-viewport{border:1px solid #dbe4e8;background:#eef3f5}
.court-replay-viewport.is-empty{color:#87949c}
.court-replay-controls button,.court-replay-controls select{border:1px solid #d8e2e5;background:#fff;color:#18222b}
.court-replay-controls button:hover{border-color:#13b8cf;color:#078fa3}
.court-replay-controls output{color:#5d6b74}
.court-replay-controls label{color:#7b8790}
/* The HUD sits on the 3D scene, which is a light room, so the label needs the
   darker grey the rest of the light theme uses. */
.court-replay-hud span{color:#5d6b74}
.court-replay-hud strong{color:#18222b}

/* Judgments from everyone who already voted. The panel only appears once the
   server confirms this account has filed its own vote. */
.court-votes{margin-top:14px}
.court-votes h4{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0 0 8px;color:#5d6b74;font-size:11px;font-weight:800;letter-spacing:.4px}
.court-votes h4 span{color:#96a2a8;font-size:10px;font-weight:600;letter-spacing:0}
.court-votes ul{display:grid;gap:8px;margin:0;padding:0;list-style:none}
.court-votes li{padding:11px 12px;border:1px solid #e1e8eb;border-left-width:3px;border-radius:10px;background:#fff}
.court-votes li.cheating{border-left-color:#df9191;background:#fffafa}
.court-votes li.legitimate{border-left-color:#8bd2b3;background:#fafffd}
.court-votes li header{display:flex;align-items:center;justify-content:space-between;gap:8px}
.court-votes li strong{color:#1b252c;font-size:11px}
.court-votes li.cheating strong{color:#bd4f4f}
.court-votes li.legitimate strong{color:#19855c}
.court-votes li time{color:#a0aab0;font-size:9px}
.court-votes li p{margin:6px 0 0;color:#5d6b74;font-size:11px;line-height:1.6;word-break:break-word}
.court-votes-empty{margin:0;padding:12px;border:1px dashed #d7e1e4;border-radius:10px;color:#87949c;text-align:center;font-size:10px}

/* Vote tally: a split bar plus a legend, instead of a sentence the reader has
   to do arithmetic on. The colours match the verdict buttons and the judgment
   list, so 作弊 is always the same red and 未作弊 the same green.
   Selectors carry `.court-result` because the older compressed rule already
   styles `.court-result strong` and would otherwise outrank the legend. */
.court-result{margin-top:13px;padding:14px 15px;border:1px solid #e1e8eb;border-radius:12px;background:#fff;color:#5d6b74}
.court-result h4{margin:0;color:#18222b;font-size:13px}
.court-tally{margin-top:11px}
.court-tally-bar{display:flex;gap:2px;height:10px;overflow:hidden;border-radius:999px;background:#eef3f5}
.court-tally-bar span{display:block;height:100%;transition:width .38s cubic-bezier(.2,.7,.2,1)}
.court-tally-bar .is-legitimate{background:#5fc79b}
.court-tally-bar .is-cheating{background:#e08a8a}
.court-result .court-tally-legend{display:grid;gap:8px;margin:12px 0 0;padding:0;list-style:none}
.court-result .court-tally-legend li{display:flex;align-items:center;gap:8px;color:#5d6b74;font-size:11px}
.court-result .court-tally-legend i{width:8px;height:8px;flex:0 0 auto;border-radius:50%}
.court-result .court-tally-legend .is-legitimate i{background:#5fc79b}
.court-result .court-tally-legend .is-cheating i{background:#e08a8a}
.court-result .court-tally-legend span{margin-right:auto}
.court-result .court-tally-legend strong{display:inline;color:#18222b;font-size:14px;font-variant-numeric:tabular-nums}
.court-result .court-tally-legend small{min-width:40px;color:#96a2a8;font-size:10px;text-align:right}
.court-result .court-tally-total{margin:10px 0 0;padding-top:9px;border-top:1px solid #eef1f3;color:#96a2a8;font-size:10px;text-align:right}
.court-tally-empty{margin:9px 0 0;color:#87949c;font-size:11px}

/* Self-defence material. Everyone reading the case sees what the accused
   submitted - a defence nobody can open before voting is not a defence - and
   only the accused gets the form. */
.court-defenses{margin-top:16px;padding:20px;border:1px solid #e1e8eb;border-radius:15px;background:#fff}
.court-defenses header{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:7px}
.court-defenses h3{margin:0;font-size:16px}
.court-defense-count{color:#96a2a8;font-size:10px;font-weight:700}
.court-defense-hint{margin:0;color:#7b8790;font-size:10px;line-height:1.65}
.court-defense-list{display:grid;gap:10px;margin-top:14px}
.court-defense{padding:12px;border:1px solid #e1e8eb;border-radius:11px;background:#f8fafb}
.court-defense header{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:0 0 8px}
.court-defense header span{color:#5d6b74;font-size:10px;font-weight:750}
.court-defense header time{color:#a0aab0;font-size:9px}
.court-defense-link{display:inline-flex;align-items:center;height:34px;padding:0 12px;border:1px solid #a7e5ec;border-radius:9px;background:#effbfd;color:#078fa3;text-decoration:none;font-size:11px;font-weight:750;word-break:break-all}
.court-defense-link:hover{border-color:#13b8cf;background:#e2f7fb}
.court-defense p{margin:8px 0 0;color:#5d6b74;font-size:11px;line-height:1.6;word-break:break-word}
.court-defense-delete{margin-top:10px;height:30px;padding:0 11px;border:1px solid #e6c9c9;border-radius:8px;background:#fff6f6;color:#bd4f4f;font-size:10px;font-weight:750;cursor:pointer}
.court-defense-delete:hover{border-color:#df9191;background:#fdeeee}
.court-defense-empty{margin:0;padding:14px;border:1px dashed #d7e1e4;border-radius:10px;color:#87949c;text-align:center;font-size:10px}
.court-defense-form{display:grid;gap:10px;margin-top:14px;padding-top:14px;border-top:1px solid #edf0f2}
.court-defense-form label{display:grid;gap:6px;color:#64727a;font-size:10px;font-weight:700}
.court-defense-form input[type=url],.court-defense-form textarea{width:100%;padding:10px;border:1px solid #dce5e8;border-radius:9px;background:#fff;color:#18222b;resize:vertical;outline:0;font:inherit;font-size:11px}
.court-defense-form input[type=url]:focus,.court-defense-form textarea:focus{border-color:#13b8cf;box-shadow:0 0 0 3px rgba(19,184,207,.1)}
.court-defense-form textarea{min-height:70px}
.court-defense-form .court-message{min-height:16px;margin:0}
