:root{color-scheme:dark;--ink:#100e0d;--paper:#17130f;--paper2:#211a14;--gold:#d8b979;--pale:#efe4cd;--muted:#a89b87;--red:#a94238;--red2:#6e2924;--jade:#75aa8b;--line:#4b3c2d;--shadow:0 22px 65px #0009;font-family:"Noto Serif SC","Songti SC","STSong",serif}*{box-sizing:border-box}html,body,#app{margin:0;min-height:100%;background:#0e0c0b;color:var(--pale)}body{background-image:radial-gradient(circle at 20% 5%,#39201855,transparent 34%),radial-gradient(circle at 90% 80%,#312b1e44,transparent 38%),linear-gradient(#0d0c0b,#15110e);background-attachment:fixed}button,input,select{font:inherit}button{cursor:pointer}.app-shell{min-height:100vh}.masthead{min-height:150px;display:flex;align-items:center;justify-content:center;text-align:center;padding:30px 20px;background:linear-gradient(#0d0c0bd9,#0d0c0b99),url('/static/scenes/mist_hut.jpg') center 45%/cover;border-bottom:1px solid #493a2a}.brand{margin:0;color:var(--gold);font-size:clamp(38px,7vw,72px);letter-spacing:.42em;text-indent:.42em;text-shadow:0 4px 24px #000}.tagline{margin:9px 0 0;color:#c8b89e;letter-spacing:.18em}.home{width:min(1120px,calc(100% - 28px));margin:45px auto;padding-bottom:60px}.intro{text-align:center;max-width:760px;margin:0 auto 34px}.intro h2{font-size:32px;color:var(--gold);font-weight:500;margin:0 0 12px}.intro p{color:var(--muted);line-height:1.9}.home-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:22px}.panel{background:linear-gradient(145deg,#211a14e8,#15110eed);border:1px solid var(--line);border-radius:18px;padding:28px;box-shadow:var(--shadow)}.panel h3{color:var(--gold);font-weight:500;font-size:24px;margin:0 0 8px}.panel p{color:var(--muted);line-height:1.7}.field{display:flex;flex-direction:column;gap:8px;margin:20px 0}.field span{color:#cbbda5}.field input,.field select{width:100%;border:1px solid #5a4936;background:#100e0d;color:var(--pale);padding:14px 15px;border-radius:9px;outline:none}.field input:focus,.field select:focus{border-color:var(--gold);box-shadow:0 0 0 2px #d8b97922}.btn{border:1px solid #705945;background:#251e18;color:var(--pale);border-radius:9px;padding:12px 20px;transition:.2s}.btn:hover{transform:translateY(-1px);border-color:var(--gold);background:#30251c}.btn.primary{background:linear-gradient(135deg,#b34c40,#7c2d28);border-color:#c76355;color:#fff}.btn.gold{background:linear-gradient(135deg,#c4a35e,#8d713c);border-color:#e0c585;color:#17110b}.btn.ghost{background:transparent}.btn:disabled{opacity:.42;cursor:not-allowed;transform:none}.button-row{display:flex;gap:10px;flex-wrap:wrap}.continue-card{display:flex;flex-direction:column;gap:14px}.save-code{font-size:34px;letter-spacing:.2em;color:var(--gold)}.small{font-size:13px;color:var(--muted)}.game{width:min(1500px,calc(100% - 24px));margin:18px auto 50px}.gamebar{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:18px;padding:13px 18px;background:#17130ff2;border:1px solid var(--line);border-radius:12px;backdrop-filter:blur(12px);box-shadow:0 10px 28px #0007}.game-title{color:var(--gold);font-size:23px;white-space:nowrap}.game-meta{display:flex;gap:18px;color:var(--muted);flex:1;flex-wrap:wrap}.game-meta strong{color:var(--pale)}.phase-track{display:grid;grid-template-columns:repeat(9,1fr);gap:5px;margin:14px 0 18px}.phase-dot{height:6px;background:#342a21;border-radius:9px;position:relative}.phase-dot.done{background:#816941}.phase-dot.active{background:var(--red);box-shadow:0 0 12px #a94238}.phase-labels{display:flex;justify-content:space-between;margin-top:-8px;margin-bottom:18px;color:var(--muted);font-size:12px}.layout{display:grid;grid-template-columns:270px minmax(0,1fr) 315px;gap:16px;align-items:start}.side,.main-stage{background:#17130feb;border:1px solid var(--line);border-radius:14px;overflow:hidden;box-shadow:var(--shadow)}.side{position:sticky;top:82px}.side-head{padding:18px 18px 12px;border-bottom:1px solid #3f3327}.side-head h3{margin:0;color:var(--gold);font-weight:500}.identity img{width:100%;aspect-ratio:4/5;object-fit:cover;filter:saturate(.78);display:block}.identity-copy{padding:18px}.identity-copy .eyebrow,.eyebrow{font-size:12px;color:var(--gold);letter-spacing:.2em;text-transform:uppercase}.identity-copy h2{font-weight:500;margin:7px 0;font-size:28px}.identity-copy p{margin:0;color:var(--muted);line-height:1.6}.siming{position:relative;margin:0;padding:28px 34px;background:linear-gradient(110deg,#2d1c16,#15120f);border-bottom:1px solid #604434}.siming:before{content:"司命";position:absolute;right:24px;top:10px;color:#d8b97913;font-size:75px}.siming h2{position:relative;margin:0 0 9px;color:#e1c58d;font-size:25px;font-weight:500}.siming p{position:relative;margin:0;line-height:1.85;color:#d4c8b4}.stage-body{padding:30px;min-height:590px}.chapter-kicker{color:var(--red);font-size:13px;letter-spacing:.18em}.stage-title{font-size:30px;color:var(--gold);font-weight:500;margin:8px 0 22px}.story-page{font-size:18px;line-height:2.05;color:#e5dbc9;min-height:340px;white-space:pre-wrap}.story-page p{margin:0 0 1.3em}.page-nav{display:flex;align-items:center;justify-content:space-between;padding-top:20px;border-top:1px solid #3d3126}.page-count{color:var(--muted)}.tasks{margin:24px 0;padding:18px 20px;border-left:3px solid var(--gold);background:#211a14}.tasks h4{margin:0 0 9px;color:var(--gold)}.tasks li{margin:7px 0;line-height:1.6}.clue-slip{margin:22px 0;background:#ddd0b5;color:#271e16;padding:22px;transform:rotate(-.25deg);box-shadow:0 8px 22px #0006}.clue-slip strong{display:block;margin-bottom:8px}.choices{display:grid;gap:11px;margin-top:22px}.choice{display:flex;text-align:left;gap:14px;padding:16px;border:1px solid #5a4634;border-radius:10px;background:#1c1712;color:var(--pale)}.choice b{color:var(--gold)}.choice:hover{border-color:var(--gold)}.guess-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:20px}.guess-grid .btn{grid-column:1/-1}.scene-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.scene{position:relative;min-height:210px;border:1px solid #5a4634;border-radius:12px;overflow:hidden;background:#17130f;text-align:left;padding:0;color:#fff}.scene img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:brightness(.56) saturate(.8);transition:.25s}.scene:hover img{transform:scale(1.025);filter:brightness(.68)}.scene-copy{position:absolute;inset:auto 0 0;padding:40px 18px 17px;background:linear-gradient(transparent,#0b0908f2)}.scene h3{font-size:24px;margin:0 0 5px}.scene p{margin:0;color:#d4c9b7;line-height:1.45}.scene.locked{opacity:.45}.evidence-tray{margin-top:22px;padding:20px;background:#100e0d;border:1px solid #50402f;border-radius:12px}.evidence-tray h3{color:var(--gold);font-weight:500}.clue-check{display:block;border-top:1px solid #332920;padding:12px 4px;line-height:1.55}.clue-check input{accent-color:var(--red);margin-right:9px}.accepted{color:var(--jade)}.suspects{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.suspect{border:1px solid #514132;border-radius:10px;overflow:hidden;background:#17120f;color:var(--pale);padding:0}.suspect img{width:100%;aspect-ratio:1/1.15;object-fit:cover;display:block}.suspect div{padding:12px}.suspect:hover{border-color:var(--red)}.final-form{display:grid;grid-template-columns:1fr 1fr;gap:16px}.final-form .button-row{grid-column:1/-1}.ending{text-align:center}.ending h2{font-size:42px;color:var(--gold);font-weight:500}.ending .truth{text-align:left;margin:25px 0;padding:23px;border:1px solid var(--red);background:#2a1513;line-height:1.9}.ending-grid{text-align:left;display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.ending-card{padding:16px;background:#100e0d;border:1px solid #44372a;border-radius:9px;line-height:1.65}.roster{padding:10px 18px 18px}.roster-row{display:flex;justify-content:space-between;padding:9px 0;border-bottom:1px solid #342a21;color:var(--muted)}.roster-row strong{color:var(--pale);font-weight:500}.journal{padding:14px 18px;max-height:360px;overflow:auto}.journal-entry{padding:12px 0;border-bottom:1px solid #352b22}.journal-entry b{display:block;color:var(--gold);font-weight:500;margin-bottom:5px}.journal-entry p{margin:0;color:var(--muted);line-height:1.5}.empty{padding:20px;color:var(--muted);text-align:center}.toast{position:fixed;z-index:99;left:50%;bottom:28px;width:min(560px,calc(100% - 30px));transform:translateX(-50%);background:#211a14;border:1px solid var(--gold);border-radius:12px;padding:17px 20px;box-shadow:var(--shadow)}.toast.error{border-color:#c85247}.toast.success{border-color:var(--jade)}.toast b{display:block;color:var(--gold);margin-bottom:5px}.toast p{margin:0;line-height:1.55}.lobby{max-width:1100px;margin:28px auto}.lobby-intro{text-align:center}.role-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:25px 0}.role-card{position:relative;border:2px solid transparent;border-radius:13px;overflow:hidden;background:#17130f;color:#fff;padding:0;text-align:left}.role-card.selected{border-color:var(--gold)}.role-card.taken{opacity:.45}.role-card img{width:100%;height:240px;object-fit:cover;display:block}.role-card .role-copy{padding:15px}.role-card h3{margin:0 0 4px;font-size:23px}.role-card p{margin:0;color:var(--muted)}.owner-badge{position:absolute;right:10px;top:10px;background:#100e0dde;padding:6px 9px;border-radius:20px;font-size:12px}.lobby-actions{text-align:center}.connection{font-size:12px;color:var(--jade)}@media(max-width:1050px){.layout{grid-template-columns:220px 1fr}.side.right{position:static;grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr}.journal{max-height:240px}}@media(max-width:760px){.masthead{min-height:120px}.home-grid,.layout,.guess-grid,.final-form{grid-template-columns:1fr}.home{margin-top:25px}.game{width:min(100% - 12px,1500px)}.gamebar{position:relative;top:auto;align-items:flex-start;flex-wrap:wrap}.game-title{width:100%}.phase-labels{display:none}.side{position:static}.side.left{display:grid;grid-template-columns:115px 1fr}.identity img{height:100%;aspect-ratio:auto}.identity-copy{padding:14px}.stage-body{padding:20px;min-height:auto}.siming{padding:22px}.scene-grid,.ending-grid{grid-template-columns:1fr}.suspects,.role-grid{grid-template-columns:repeat(2,1fr)}.role-card img{height:190px}.side.right{display:block}.story-page{font-size:17px;min-height:260px}.brand{font-size:42px}.panel{padding:22px}}@media(max-width:440px){.suspects,.role-grid{grid-template-columns:1fr}.role-card img{height:260px}.button-row .btn{flex:1}.scene{min-height:180px}}
