:root{--page-bg: #1b1d22;--app-width: 960px;--stage-height: 58vh;--box-bg: rgba(245, 241, 232, .97);--box-fg: #2b2a28;--box-border: #8a7f6d;--speaker-fg: #5a4632;--font: "Shippori Mincho", "Yu Mincho", "Hiragino Mincho ProN", serif;--text-size: 18px;--line-height: 1.9;--button-bg: #fffdf7;--button-border: #b9ad98;--button-hover: #efe6d4;--accent: #8c3b2e;--gauge-bg: rgba(0, 0, 0, .45);--gauge-danger: #c0503c;--gauge-doubt: #6d6aa8;--gauge-wary: #4f7d8c;--gauge-good: #6f9a5b;--card-warning: #b4533f;--card-reason: #c28a2c;--card-action: #4f7d8c;--card-trust: #6f9a5b;--card-memory: #b88a3e;--card-curse: #777;--card-question: #3e5a8a;--card-document: #7a5a3a;--card-clue: #8c3b2e;--card-deduction: #6d4a8c;--card-confide: #b88a3e}*{box-sizing:border-box}html,body{margin:0;height:100%;background:var(--page-bg);font-family:var(--font);color:var(--box-fg)}#app{max-width:var(--app-width);margin:0 auto;height:100%;display:flex;flex-direction:column}#stage{position:relative;height:var(--stage-height);flex:none;overflow:hidden;background:#000}#bg{position:absolute;top:0;right:0;bottom:0;left:0;background-size:cover;background-position:center;transition:background-image .4s}#bg-missing{position:absolute;right:10px;bottom:8px;font-size:12px;color:#ffffff8c;display:none}#bg-missing.show{display:block}#portrait{position:absolute;bottom:-4%;left:50%;transform:translate(-50%);height:104%;object-fit:contain;display:none;filter:drop-shadow(0 4px 12px rgba(0,0,0,.35))}#portrait.show{display:block}#portrait.tall{height:112%}#portrait.small{height:86%}#panel{position:absolute;top:0;right:0;bottom:0;left:0;display:none;padding:16px;overflow:auto;background:#14161c8c;color:#f3eee4}#panel.show{display:block}#hud{position:absolute;top:8px;left:8px;right:8px;display:flex;flex-wrap:wrap;gap:6px;pointer-events:none}.chip{background:var(--gauge-bg);color:#fff;padding:4px 10px;border-radius:4px;font-size:14px}.gauge{background:var(--gauge-bg);color:#fff;padding:4px 8px;border-radius:4px;font-size:14px;min-width:200px}.gauge .bar{height:8px;background:#fff3;border-radius:4px;margin-top:3px;overflow:hidden}.gauge .fill{height:100%;background:var(--gauge-danger)}.gauge.doubt .fill{background:var(--gauge-doubt)}.gauge.wary .fill{background:var(--gauge-wary)}.gauge.good .fill{background:var(--gauge-good)}.intent{background:#8c3b2ed9}.preview{background:#28466ed9}#textbox{flex:1;min-height:0;overflow:auto;background:var(--box-bg);border-top:2px solid var(--box-border);padding:14px 20px 18px;font-size:var(--text-size);line-height:var(--line-height)}#textbox{position:relative}#menu{position:absolute;top:8px;right:10px;display:flex;gap:6px;z-index:2}#menu button{font-size:13px;padding:2px 10px}.quit-choices{display:flex;flex-direction:column;gap:8px;margin-top:12px}.quit-choices button{text-align:left}#duo-bar{position:absolute;top:0;left:0;right:0;z-index:5;display:none;align-items:center;justify-content:center;gap:12px;flex-wrap:wrap;padding:6px 12px;font-family:Yu Gothic UI,Hiragino Sans,Noto Sans JP,sans-serif;font-size:14px;color:#fff;background:#203a4ae0}#duo-bar.show{display:flex}#duo-bar.shared{background:#8c3b2ee6}#duo-bar.assist{background:#8c3b2ebf;font-size:13px;padding:3px 12px}#duo-bar button{font:inherit;padding:2px 10px;border:1px solid #fff;border-radius:4px;background:transparent;color:#fff;cursor:pointer}#toast{position:absolute;bottom:12px;left:50%;transform:translate(-50%);z-index:6;max-width:90%;display:none;padding:8px 16px;font-family:Yu Gothic UI,Hiragino Sans,Noto Sans JP,sans-serif;font-size:15px;color:#203a4a;background:#f5f1e8f7;border-left:4px solid #4f7d8c;box-shadow:0 2px 10px #0006}#toast.show{display:block}#controls input[type=text]{font:inherit;font-size:20px;padding:6px 10px;width:12em;max-width:100%;border:1px solid var(--button-border);background:#fff}.title-screen.room{font-size:22px;letter-spacing:.1em}.title-screen.room b{display:block;margin-top:12px;font-size:44px;letter-spacing:.08em;font-family:Yu Gothic UI,Hiragino Sans,Noto Sans JP,sans-serif}#overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0a0c1099;display:none;align-items:center;justify-content:center;z-index:10;padding:16px}#overlay.show{display:flex}#overlay-box{background:var(--box-bg);color:var(--box-fg);width:100%;max-width:720px;max-height:88vh;display:flex;flex-direction:column;border:2px solid var(--box-border);border-radius:6px}#overlay-head{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;border-bottom:1px solid var(--button-border);font-weight:600}#overlay-body{overflow:auto;padding:12px 16px 18px;font-size:15px;line-height:1.8}#overlay-body h4{margin:14px 0 4px;color:var(--speaker-fg)}#overlay-body .person{display:flex;gap:12px;align-items:flex-start;padding:8px 0;border-bottom:1px dashed var(--button-border)}#overlay-body .person img{width:64px;height:110px;object-fit:contain;flex:none}#overlay-body .person .who{font-weight:600}#overlay-body .person .role{font-size:13px;color:#6b6558}#overlay-body .log-line{padding:3px 0;white-space:pre-wrap}#overlay-body .log-line b{color:var(--speaker-fg)}#speaker{color:var(--speaker-fg);font-weight:600;min-height:1.4em}#text{white-space:pre-wrap;cursor:pointer}#speaker.system{color:#33607a;font-family:Yu Gothic UI,Hiragino Sans,Noto Sans JP,sans-serif;font-size:14px;letter-spacing:.05em}#text .sysnote{margin-top:8px;font-family:Yu Gothic UI,Hiragino Sans,Noto Sans JP,sans-serif;font-size:.82em;line-height:1.7;color:#203a4a;background:#4f7d8c1a;border-left:4px solid #4f7d8c;padding:4px 10px}#text .sysnote:before{content:"◆ ";color:#33607a}#text.system{font-family:Yu Gothic UI,Hiragino Sans,Noto Sans JP,sans-serif;font-size:.92em;line-height:1.75;color:#203a4a;background:#4f7d8c1a;border-left:4px solid #4f7d8c;padding:6px 12px;border-radius:2px}#text.waiting:after{content:" ▼";color:var(--accent);font-size:.8em}#controls{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}button{font-family:var(--font);font-size:16px;background:var(--button-bg);border:1px solid var(--button-border);border-radius:4px;padding:6px 14px;cursor:pointer;color:var(--box-fg)}button:hover:not(:disabled){background:var(--button-hover)}button:disabled,button.unplayable{opacity:.45;cursor:default}.card.selected{outline:3px solid var(--accent);outline-offset:-3px}button .sub{display:block;font-size:12px;color:#6b6558}.card{width:150px;padding:0;text-align:left;border-top:5px solid var(--card-color, #999);overflow:hidden}.card img{width:100%;aspect-ratio:4 / 3;object-fit:cover;display:block;border-bottom:1px solid var(--button-border)}.card .name{display:flex;justify-content:space-between;padding:4px 8px 0;font-weight:600;font-size:14px}.card .cost{color:var(--accent)}.card .desc{padding:2px 8px 6px;font-size:11px;line-height:1.5;color:#544f45}.card.warning{--card-color: var(--card-warning)}.card.reason{--card-color: var(--card-reason)}.card.action{--card-color: var(--card-action)}.card.trust{--card-color: var(--card-trust)}.card.memory{--card-color: var(--card-memory)}.card.curse{--card-color: var(--card-curse)}.card.question{--card-color: var(--card-question)}.card.document,.card.skill{--card-color: var(--card-document)}.card.clue{--card-color: var(--card-clue)}.card.deduction{--card-color: var(--card-deduction)}.card.confide{--card-color: var(--card-confide)}.map{display:flex;gap:10px;align-items:stretch;height:100%}.map .layer{flex:1;display:flex;flex-direction:column;justify-content:space-around;gap:6px}.map .node{background:#ffffff1f;border:1px solid rgba(255,255,255,.25);border-radius:6px;padding:6px 4px;font-size:13px;text-align:center}.map .node.here{background:#c0503cb3}.map .node.next{border-color:#f3d27a}.map .node.past{opacity:.35}.map .accident{background:#8c1e1499}.log{font-size:14px;color:#6b6558;white-space:pre-wrap}.title-screen.chapter{font-size:30px;letter-spacing:.25em;padding-top:22%}.title-screen{text-align:center;padding-top:18%;font-size:42px;letter-spacing:.3em;color:#fff;text-shadow:0 2px 12px rgba(0,0,0,.7)}@media(max-width:640px){:root{--text-size: 16px;--stage-height: 48vh}#textbox{padding:10px 12px 14px}#controls{gap:6px}.card{flex:0 0 calc((100% - 12px) / 3);width:auto;min-width:0}#controls>button:not(.card){flex:1 1 100%}.card .desc{display:none}.card .name{font-size:12px;padding:3px 5px 4px}.chip,.gauge{font-size:11px;padding:3px 6px;max-width:100%}.gauge{min-width:140px}.map{gap:3px}.map .node{font-size:10px;padding:4px 1px}#panel{padding:70px 6px 8px}}
