:root{--bg: #10131a;--bg-deep: #090b10;--panel: #171b24;--border: #2e3540;--border-soft: #232a33;--text: #e6e9ef;--dim: #98a0ad;--faint: #666e7a;--cobalt: #6a86b0;--cobalt-deep: #3a4a66;--blood: #c0555c;--gold: #c8a86a;--gold-soft: #c8a86a66;--cream: #ece0c8;--danger: #d9787e;--radius: 14px;--serif: "Playfair Display", "Didot", "Songti SC", "Noto Serif SC", serif;--sans: -apple-system, "PingFang SC", "Helvetica Neue", system-ui, sans-serif;--mono: "SF Mono", ui-monospace, Menlo, monospace;color-scheme:dark}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{background:var(--bg);color:var(--text);font-family:var(--sans);line-height:1.7;overflow:hidden}.stage{position:relative;width:100vw;height:100vh;overflow:hidden}.keyart-stage{position:absolute;inset:0;z-index:0}.keyart-layer{position:absolute;inset:0}.keyart-in{animation:keyart-fade 1.4s ease forwards}.keyart-img{width:100%;height:100%;object-fit:cover;filter:saturate(.78) brightness(.5) contrast(1.05);animation:kb 30s ease-in-out infinite alternate}@keyframes keyart-fade{0%{opacity:0}to{opacity:1}}@keyframes kb{0%{transform:scale(1.04)}to{transform:scale(1.12)}}.keyart-tint{position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse 70% 50% at 50% 30%,#6a86b012,transparent 70%),linear-gradient(180deg,#090b10cc 0%,transparent 26%,transparent 52%,#090b10ee 92%)}.title-plate{position:absolute;top:78px;right:24px;z-index:5;text-align:right}.title-plate h1{font-family:var(--serif);font-size:22px;letter-spacing:.3em;color:var(--cream);font-weight:600;text-shadow:0 2px 12px #000c}.title-plate .title-en{font-family:var(--serif);font-style:italic;font-size:10.5px;letter-spacing:.3em;color:var(--gold);opacity:.7}.case-hud{position:absolute;top:0;left:0;right:0;z-index:5;padding:12px 24px;background:linear-gradient(180deg,#090b10ee,#090b1099 70%,transparent);display:flex;flex-direction:column;gap:10px}.ch-track{display:flex;align-items:center;gap:0;max-width:560px}.ch-node{display:flex;flex-direction:column;align-items:center;gap:3px;flex:1;position:relative;opacity:.4}.ch-node:after{content:"";position:absolute;top:9px;left:50%;width:100%;height:1px;background:var(--border);z-index:-1}.ch-node:last-child:after{display:none}.ch-node .ch-idx{width:19px;height:19px;border-radius:50%;border:1px solid var(--border);background:var(--bg-deep);display:grid;place-items:center;font-family:var(--serif);font-size:11px;color:var(--dim)}.ch-node .ch-name{font-size:9px;letter-spacing:1px;color:var(--faint)}.ch-node.ch-done{opacity:.75}.ch-node.ch-done .ch-idx{border-color:var(--gold-soft);color:var(--gold)}.ch-node.ch-now{opacity:1}.ch-node.ch-now .ch-idx{border-color:var(--blood);background:var(--blood);color:#fff;box-shadow:0 0 10px #c0555c88}.ch-node.ch-now .ch-name{color:var(--blood)}.case-meters{display:flex;flex-wrap:wrap;gap:16px;font-size:12px;color:var(--dim)}.case-meters .meter{display:inline-flex;align-items:center;gap:6px}.case-meters .meter b{color:var(--faint);font-weight:400;font-family:var(--mono);font-size:10.5px;letter-spacing:1px}.meter-bar{display:inline-block;width:56px;height:4px;border-radius:2px;background:#232a33;overflow:hidden}.meter-bar i{display:block;height:100%;background:linear-gradient(90deg,var(--cobalt-deep),var(--gold));border-radius:2px;transition:width .5s}.suspect{color:var(--dim)}.suspect-on{color:var(--blood);font-weight:600}.ending-badge{color:var(--gold);border:1px solid var(--gold-soft);border-radius:8px;padding:1px 10px}.proscenium{position:absolute;left:0;right:0;bottom:0;z-index:4;display:flex;flex-direction:column;gap:10px;padding:0 24px 22px;max-width:880px;margin:0 auto}.flow-panel{background:linear-gradient(180deg,#171b2499,#10131af2);border:1px solid var(--border);border-radius:16px 16px var(--radius) var(--radius);border-bottom:none;padding:16px 20px 10px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.chat-flow{display:flex;flex-direction:column;gap:13px;max-height:40vh;overflow-y:auto;padding-right:6px;scrollbar-width:thin;scrollbar-color:var(--border) transparent}.chat-flow::-webkit-scrollbar{width:6px}.chat-flow::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}.flow-me{align-self:flex-end;max-width:78%;background:linear-gradient(135deg,#3a4a66,var(--cobalt));color:#eef2f8;border-radius:14px 14px 3px;padding:8px 13px;font-size:13px;box-shadow:0 4px 14px #0007}.flow-char{align-self:stretch;max-width:100%;color:#e8e4da;font-size:14.5px;line-height:1.9;white-space:pre-wrap;font-family:var(--serif);letter-spacing:.3px}.flow-typing:after{content:"▋";margin-left:2px;color:var(--gold);animation:blink 1.1s steps(2) infinite}.flow-waiting{color:var(--faint);font-size:20px;letter-spacing:3px}@keyframes blink{50%{opacity:0}}.dialog-error{color:var(--danger);font-size:12.5px;margin-top:8px}.choices{display:flex;flex-direction:column;gap:7px}.choice{display:flex;align-items:center;gap:10px;text-align:left;cursor:pointer;background:#171b24e6;border:1px solid var(--border);border-radius:var(--radius);padding:11px 15px;color:var(--text);font-size:13.5px;font-family:var(--sans);transition:border-color .16s,background .16s,transform .12s;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.choice:hover{border-color:var(--gold-soft);background:#1c2230e6;transform:translate(3px)}.choice .choice-mark{color:var(--gold);font-size:9px;flex:none}.composer{display:flex;gap:8px;background:#10131af2;border:1px solid var(--border);border-radius:var(--radius);padding:7px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.composer textarea{flex:1;resize:none;height:40px;background:transparent;border:none;outline:none;color:var(--text);font-family:var(--sans);font-size:13.5px;line-height:1.5;padding:9px 12px}.composer textarea::placeholder{color:var(--faint)}.composer button{flex:none;padding:0 20px;border-radius:10px;cursor:pointer;background:var(--cobalt-deep);border:1px solid var(--cobalt-deep);color:var(--cream);font-family:var(--serif);font-size:14px;letter-spacing:.2em;transition:background .16s}.composer button:hover:not(:disabled){background:var(--cobalt);color:#10131a}.composer button:disabled{opacity:.4;cursor:not-allowed}@media(max-width:680px){.title-plate{top:96px}.chat-flow{max-height:34vh}.ch-node .ch-name{display:none}}
