:root{--ink:#343b31;--muted:#797b68;--paper:#eae5d8;--olive:#566449;--light:#fbf8ed;--gold:#c99e56;font-family:"Microsoft YaHei","PingFang SC",sans-serif;color:var(--ink);background:var(--paper);font-synthesis:none}
*{box-sizing:border-box}body{margin:0}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}button:focus-visible,a:focus-visible{outline:3px solid #e3b863;outline-offset:5px}button{touch-action:manipulation}button:disabled{cursor:default}a{color:inherit;text-decoration:none}.hidden{display:none!important}
.app{max-width:1720px;margin:auto;padding:0 40px}.header{height:104px;display:flex;align-items:center;gap:24px}.brand{display:flex;align-items:center;gap:11px}.brand svg{width:45px;height:45px;fill:none;stroke:var(--olive);stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.brand>span{font-family:"STSong","SimSun",serif;font-size:25px;letter-spacing:3px;font-weight:bold}.brand small{display:block;font-family:"Microsoft YaHei",sans-serif;font-size:10px;letter-spacing:3px;font-weight:400;color:var(--muted);margin-top:5px}.header-note{font-size:12px;letter-spacing:1px;margin-left:40px;color:var(--muted)}.tools{margin-left:auto;display:flex;gap:12px}.icon-button{background:transparent;border:1px solid #b7b9a8;border-radius:50%;width:38px;height:38px;color:var(--ink);display:grid;place-items:center;font-family:Georgia,serif;font-size:19px}.icon-button:hover{background:#dddccb}.icon-button svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.scene{position:relative;height:clamp(590px,calc(100svh - 172px),900px);overflow:hidden;border-radius:8px;background:#afa78e;isolation:isolate;box-shadow:0 14px 40px #433b2214}canvas{display:block;width:100%;height:100%;touch-action:pan-y}.scene-vignette{position:absolute;inset:0;pointer-events:none;box-shadow:inset 0 0 130px #28241736;border-radius:inherit}.room-label{position:absolute;top:27px;left:33px;display:flex;gap:8px;align-items:center;color:#eee9d9;font-size:11px;letter-spacing:2px;text-shadow:0 1px 6px #231c17}.live-dot{width:5px;height:5px;border-radius:50%;background:#e4ce9e}.intro{position:absolute;left:5.5%;top:29%;width:360px;color:#f6efda;text-shadow:0 2px 15px #2725194d}.intro-note{display:flex;align-items:center;gap:10px;font-size:11px;letter-spacing:2px;color:#e5dbc2}.intro-note>span{width:28px;height:1px;background:#d7c5a1}h1{font-family:"STSong","SimSun",serif;font-weight:400;font-size:clamp(40px,4vw,62px);line-height:1.35;letter-spacing:4px;margin:21px 0 22px}.intro p{font-size:13px;line-height:2.1;color:#ebe2ce;margin:0 0 27px;letter-spacing:.5px}.primary-button{display:flex;align-items:center;justify-content:space-between;gap:30px;border:1px solid #f3e7ca;background:#f1e8d0;color:#3d4435;border-radius:3px;padding:15px 23px;font-size:13px;letter-spacing:1px;min-width:190px;box-shadow:0 4px 16px #302b2520;transition:background .18s,transform .18s}.primary-button:hover{background:#fff7e3;transform:translateY(-2px)}.primary-button span{font-size:19px}.intro-meta{font-size:10px;letter-spacing:1px;margin-top:19px;color:#dbd4bb;display:flex;align-items:center;gap:11px}.intro-meta i{height:3px;width:3px;border-radius:50%;background:currentColor}
.footer{height:68px;display:flex;align-items:center;justify-content:space-between;font-size:11px;color:var(--muted);letter-spacing:1px}.footer>div{display:flex;align-items:center;gap:12px}.footer-spark{font-size:23px;color:#8b916c}.text-button{border:0;background:none;color:inherit;font-size:11px;letter-spacing:1px;padding:10px}.text-button:hover{text-decoration:underline}.text-button span{margin-left:12px}
.hud{position:absolute;inset:25px 33px auto;display:flex;justify-content:space-between;color:#fbf5e2;pointer-events:none;text-shadow:0 2px 8px #24211766}.hud-score,.time-block{display:flex;align-items:baseline;gap:14px}.hud span{font-size:11px;letter-spacing:1px}.hud strong{font-family:Georgia,serif;font-weight:400;font-size:38px;font-variant-numeric:tabular-nums}.hud .best{padding-left:14px;border-left:1px solid #e8dab966;color:#e0d8c0}.best b{font-weight:400}.time-block{align-items:flex-end;flex-direction:column;gap:4px}.time-block strong{font-size:28px}.time-block small{font-family:"Microsoft YaHei",sans-serif;font-size:10px}
.play-controls{position:absolute;bottom:26px;left:50%;transform:translateX(-50%);text-align:center;min-width:260px}.timing-hint{font-size:12px;color:#f3ead2;text-shadow:0 1px 6px #2b2b22;margin-bottom:13px;letter-spacing:2px;min-height:18px}.pump-button{margin:auto;display:flex;align-items:center;justify-content:center;gap:17px;background:#3e4d38ec;border:1px solid #98a57c;color:#f4eedc;padding:15px 25px;border-radius:40px;font-size:13px;box-shadow:0 4px 20px #302b2533;user-select:none;min-width:230px;transition:background .1s,box-shadow .1s}.pump-button.ready{background:#e6dab5;color:#394330;border-color:#fff0c7;box-shadow:0 0 30px #f7cf7555}.pump-button:active{transform:scale(.97)}.keycap{font-size:10px;border:1px solid currentColor;border-radius:3px;padding:3px 6px;opacity:.7}.control-note{font-size:10px;letter-spacing:1px;color:#dcd8c2;margin-top:11px;text-shadow:0 1px 4px #2b2b22}.feedback{position:absolute;left:50%;top:27%;transform:translateX(-50%);color:#fff0c3;text-shadow:0 2px 9px #332b23;font-size:18px;font-family:"STSong","SimSun",serif;letter-spacing:2px;white-space:nowrap;opacity:0;transition:opacity .15s}.feedback.show{opacity:1}
.overlay{position:absolute;inset:0;display:grid;place-items:center;background:#262b2585;backdrop-filter:blur(7px);z-index:5}.modal{text-align:center;background:#eee8d8;border:1px solid #fffae366;border-radius:7px;max-width:390px;width:calc(100% - 40px);padding:35px 30px;color:var(--ink);box-shadow:0 18px 80px #1c201f44}.modal-mark{font-family:Georgia,serif;font-size:35px;color:#9b985f;line-height:1}.modal h2,dialog h2{font-family:"STSong","SimSun",serif;font-weight:400;font-size:27px;letter-spacing:2px;margin:20px 0 12px}.modal p,dialog p{font-size:12px;line-height:1.9;color:var(--muted)}.modal .primary-button{margin:24px auto 0;background:#526246;color:#fff8e8;border-color:#526246}.modal .primary-button:hover{background:#637652}.result-score{display:flex;align-items:baseline;justify-content:center;gap:10px;padding:14px 0}.result-score strong{font-family:Georgia,serif;font-weight:400;font-size:66px;color:#526246}.result-score span{font-size:12px}.result-details{display:flex;justify-content:center;gap:22px;font-size:11px;color:#7b7c69}.result-details b{color:var(--ink);font-weight:500}.result .text-button{display:block;margin:14px auto -8px}dialog{position:fixed;border:1px solid #d4d1ba;border-radius:8px;padding:35px;max-width:420px;width:calc(100% - 36px);background:#eee8d8;color:var(--ink);box-shadow:0 15px 70px #23272055}dialog::backdrop{background:#20271f88;backdrop-filter:blur(6px)}.dialog-close{position:absolute;right:16px;top:16px;width:30px;height:30px}.help-footnote{font-size:10px!important;border-top:1px solid #c9c9b4;padding-top:18px}dialog ol{padding-left:22px;font-size:12px;margin:24px 0}dialog li{padding-left:8px;margin-bottom:18px;color:#8a8b6a}dialog li b{display:block;color:var(--ink);font-weight:500;margin-bottom:7px}dialog li span{color:var(--muted);line-height:1.8}dialog .primary-button{margin-top:22px;background:var(--olive);border-color:var(--olive);color:#fff8e8}
.intro{width:430px}
@media(min-width:1500px){.intro{left:7%;top:30%}}
@media(max-width:900px){.app{padding:0 22px}.header{height:86px}.header-note{display:none}.scene{height:calc(100svh - 150px);min-height:610px}.intro{left:6%;top:auto;bottom:42px;width:300px}h1{font-size:42px;margin:15px 0}.intro p{font-size:12px;margin-bottom:20px}.intro-note{font-size:10px}.room-label{left:24px;top:24px}.footer{height:64px}.hud{inset:23px 24px auto}.hud-score{gap:10px}.hud .best{display:none}}
@media(max-width:540px){.app{padding:0 12px}.header{height:78px;gap:12px}.brand{gap:8px}.brand svg{width:34px;height:34px}.brand>span{font-size:21px}.brand small{font-size:9px;letter-spacing:2px}.tools{gap:8px}.icon-button{width:33px;height:33px}.scene{min-height:590px;height:calc(100svh - 137px);border-radius:6px}.room-label{top:22px;left:20px;font-size:9px;letter-spacing:1px}.intro{bottom:28px;left:25px}.intro-note{font-size:9px}h1{font-size:37px;line-height:1.25;margin:14px 0}.intro p{font-size:11px;line-height:1.9;margin-bottom:18px}.intro .primary-button{padding:12px 18px;min-width:178px}.intro-meta{font-size:9px;margin-top:13px}.footer{height:59px;font-size:9px;letter-spacing:0}.footer>div{gap:6px}.footer .text-button{font-size:10px}.footer .text-button span{margin-left:4px}.hud{inset:19px 20px auto}.hud strong{font-size:30px}.hud span{font-size:10px}.time-block strong{font-size:25px}.play-controls{bottom:24px}.feedback{top:25%;font-size:16px}.modal{padding:30px 24px}}
@media(prefers-reduced-motion:reduce){button,.feedback{transition:none}.primary-button:hover{transform:none}}

/* The game stays in the photographed room; controls are quiet linen and timber. */
.scene{background:#4a3323}.intro{top:40%;text-shadow:0 2px 16px #18170ede}.intro h1{font-size:clamp(38px,3.3vw,53px);line-height:1.3;margin:16px 0 19px}.intro p{color:#f5e6c7}.intro-note{color:#f4dfb6}.start-actions{display:flex;gap:10px;align-items:stretch}.start-actions .primary-button{min-width:176px;padding:14px 18px;gap:14px}.secondary-button{border:1px solid #ead1a677;background:#3e352ccc;color:#fff1d3;border-radius:3px;padding:13px 16px;font-size:12px;letter-spacing:1px;display:flex;align-items:center;justify-content:center;gap:13px}.secondary-button:hover{background:#63513d}.classic-link{padding:16px 0 0;color:#ecdbc0;font-size:10px}.scene-vignette{box-shadow:inset 0 0 150px #1b140f73}.modal,dialog{background:#f0e6d1;color:#3c3d31}dialog p,.modal p{color:#77725e}.modal .primary-button:disabled{opacity:.5;transform:none}.overlay{background:#251b127a}.mission{position:absolute;top:105px;left:33px;color:#ffedd0;font-size:11px;text-shadow:0 1px 7px #211b10}.mission>span{font-family:"SimSun",serif;font-size:18px;letter-spacing:2px}.mission>div{display:flex;gap:15px;margin-top:10px;font-size:10px;color:#e7d2af}.mission b{font-weight:400;color:#fff5d8}.network-badge{position:absolute;right:31px;top:109px;font-size:10px;display:flex;flex-direction:column;gap:7px;text-align:right;color:#f5e3bd;text-shadow:0 1px 7px #211b10}.network-badge #connectionLabel{color:#c5d6b3}.item-legend{position:absolute;bottom:27px;left:29px;display:flex;flex-direction:column;gap:9px;font-size:10px;letter-spacing:.5px;color:#f5e4c5;text-shadow:0 1px 5px #211b10}.direction-controls{display:flex;gap:10px;align-items:center;justify-content:center}.direction-controls>button{border:1px solid #dfd1aa70;background:#302c23e8;color:#f9eccd;border-radius:12px;min-width:88px;height:63px;font-size:23px;box-shadow:0 5px 20px #171a1440;touch-action:none;user-select:none;-webkit-user-select:none}.direction-controls>button span{font-size:11px;margin:0 7px}.direction-controls>button.held{background:#b28c51;color:#fff9e8;box-shadow:0 0 30px #f8cd7644}.direction-controls .ability-button{font-size:13px;background:#59644bdc;min-width:122px;letter-spacing:1px}.ability-button small{display:block;font-size:9px;margin-top:6px;opacity:.6}.ability-button:disabled{opacity:.5}.ability-button.sync{background:#b1954c;box-shadow:0 0 30px #f3ca6577}.play-controls{bottom:25px;min-width:350px}.timing-hint{margin-bottom:10px}.room-dialog{max-width:430px}.room-dialog .primary-button{width:100%;justify-content:space-between}.room-dialog label{font-size:11px;color:#716d5a;display:block;margin:22px 0 10px}.join-row{display:flex;gap:10px}.join-row input{width:100%;min-width:0;background:#faf3e3;border:1px solid #c9bea3;border-radius:3px;font-size:15px;letter-spacing:3px;padding:12px;color:#3e4435}.join-row .secondary-button{background:#6d7557;border-color:#6d7557;min-width:65px}.room-code-label{display:block;font-size:10px;color:#79735d;margin-top:25px}.room-code{display:block;font-family:Georgia,serif;font-weight:400;font-size:48px;letter-spacing:8px;color:#6c6b4d;margin:8px 0 15px}.lobby-members{display:flex;justify-content:space-between;font-size:11px;color:#74745c}.lobby-members .connected{color:#4b6744}.room-status{min-height:20px;font-size:11px!important;color:#996346!important}.room-dialog .text-button{font-size:11px}.room-dialog button:disabled{opacity:.5;transform:none}.help-footnote{line-height:1.8}#helpDialog{max-width:460px;max-height:calc(100svh - 40px);overflow:auto}.feedback{top:31%;font-size:17px}.result-details{line-height:1.8}.hud-score{align-items:baseline}.modal .text-button{display:block;margin:12px auto -6px}button{touch-action:manipulation}
@media(max-width:900px){.intro{top:auto;bottom:34px;width:350px}.intro h1{font-size:39px}.item-legend{display:none}.mission{left:24px;top:94px}.network-badge{right:24px;top:98px}.hud{inset:22px 24px auto}}
@media(max-width:540px){.intro{left:23px;bottom:22px;width:calc(100% - 46px)}.intro h1{font-size:32px;margin:12px 0 13px}.intro p{font-size:10px;margin-bottom:15px}.intro-note{font-size:9px}.start-actions{gap:8px}.start-actions .primary-button{min-width:0;flex:1;font-size:11px;padding:12px 13px;gap:5px}.start-actions .secondary-button{flex:1;font-size:11px;padding:10px;gap:5px}.intro-meta{font-size:9px;letter-spacing:0}.classic-link{padding-top:12px;font-size:9px}.mission{top:85px;left:20px}.mission>span{font-size:15px}.mission>div{gap:9px;font-size:9px}.network-badge{right:20px;top:85px;font-size:9px;max-width:130px}.feedback{top:29%;font-size:13px}.play-controls{min-width:0;width:calc(100% - 34px);bottom:20px}.direction-controls{gap:8px}.direction-controls>button{min-width:72px;height:60px;flex:1;font-size:22px}.direction-controls>button span{margin:0 3px;font-size:11px}.direction-controls .ability-button{min-width:112px;flex:1.3;font-size:12px}.timing-hint{font-size:10px;letter-spacing:1px}.control-note{font-size:9px;letter-spacing:0}.room-code{font-size:42px;letter-spacing:7px}.room-dialog{padding:28px}.hud{inset:17px 20px auto}}
