:root{font-family:"PingFang SC","Microsoft YaHei","Noto Sans CJK SC",sans-serif;color:#29473b;background:#dce9d7;font-synthesis:none;--cream:#fffbed;--green:#294d3d;--coral:#ee8b76;--teal:#52a99b}
*{box-sizing:border-box}body{margin:0;overflow:hidden}button,input,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer;border:0}button:focus-visible,a:focus-visible{outline:3px solid #c9954e;outline-offset:4px}button:disabled{cursor:wait;opacity:.6}button{touch-action:manipulation}button:active{transform:translateY(1px)}[hidden]{display:none!important}#app{height:100svh;height:100dvh;min-height:440px;position:relative;isolation:isolate;overflow:hidden}#world{position:absolute;inset:0;width:100%;height:100%;display:block;z-index:-1;touch-action:none}.topbar{position:absolute;top:0;left:0;right:0;padding:28px 44px;display:flex;align-items:center;justify-content:space-between;z-index:5;pointer-events:none}.topbar a,.topbar button{pointer-events:auto}.brand{display:flex;gap:11px;align-items:center;text-decoration:none;color:#2d4c3d;font-size:20px;font-weight:900;letter-spacing:2px}.brand-mark{width:42px;height:42px;display:grid;place-items:center;border:1.7px solid #3c5a47;border-radius:14px;background:#f6f5d9;box-shadow:0 3px 0 #3c5a4716;transform:rotate(-6deg);font-size:24px}.brand small{display:block;font-size:8px;letter-spacing:2.2px;font-weight:600;margin-top:4px}.top-actions{display:flex;align-items:center;gap:12px}.edition{font-size:11px;letter-spacing:1px;background:#f6f9eb73;padding:8px 12px;border-radius:30px}.icon-button{width:38px;height:38px;display:grid;place-items:center;border:1px solid #31523a27;border-radius:50%;background:#fffbed80;color:#34533f;font-size:18px}.welcome{position:absolute;left:max(7%,30px);top:50%;width:min(400px,40vw);transform:translateY(-48%)}.eyebrow{font-size:11px;letter-spacing:3px;display:flex;align-items:center;gap:8px;color:#52715a}.eyebrow>span{width:6px;height:6px;border-radius:50%;background:#628563}.welcome h1{font-size:78px;letter-spacing:6px;line-height:1.15;margin:21px 0 18px;font-weight:900;text-shadow:0 3px 0 #faf7df55}.title-dot{color:#b9905c}.intro{font-size:14px;line-height:1.9;letter-spacing:1px;color:#4d6a57;margin-bottom:28px}.mode-tabs{display:grid;grid-template-columns:1fr 1fr;border:1px solid #55765333;background:#fcf9e73b;padding:5px;border-radius:15px;margin-bottom:14px;gap:4px}.mode-tabs button{background:transparent;color:#55705b;font-size:13px;border-radius:10px;padding:12px 5px;text-align:left;padding-left:15px;font-weight:700}.mode-tabs button small{display:block;font-size:9px;font-weight:400;margin-top:5px;letter-spacing:.3px;white-space:nowrap}.mode-tabs .selected{color:#2f523b;background:#fffbed;box-shadow:0 2px 6px #3d5c3b0d}.primary{display:flex;align-items:center;justify-content:space-between;width:100%;background:var(--green);color:#fff9e2;border-radius:12px;padding:17px 21px;font-size:14px;font-weight:700;letter-spacing:1px;box-shadow:0 4px 0 #193a2930;transition:background .15s}.primary:hover{background:#386149}.primary>span{font-size:22px;line-height:1;font-weight:400}.menu-note{font-size:10px;line-height:1.7;color:#61785f;letter-spacing:.6px;text-align:center;margin:13px 0}.home-foot{display:flex;justify-content:space-between;border-top:1px solid #41644325;padding-top:17px;margin-top:27px;font-size:9px;color:#5e7e62;letter-spacing:.6px}.join-row{display:flex;gap:8px;margin-top:12px}.join-row input{min-width:0;flex:1;border:1px solid #54765040;background:#fffbedbc;padding:13px;border-radius:10px;font:inherit;font-size:12px;text-transform:uppercase;color:#29473b;outline-color:#6f9864}.join-row button{padding:0 22px;border-radius:10px;color:#f9f4df;background:#657f54;font-size:12px}.home-status{font-size:12px;color:#94533d;line-height:1.7;min-height:0}.home-status:empty{display:none}.bottom-caption{position:absolute;bottom:28px;right:40px;font-size:10px;letter-spacing:3px;color:#fcf8e7aa}.room-panel{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:min(380px,calc(100% - 40px));padding:30px;background:#fffbedf2;border:1px solid #fffdf4;border-radius:24px;box-shadow:0 20px 80px #284b3d25;text-align:center}.room-panel .eyebrow{justify-content:center}.room-panel h2,.dialog h2{font-size:30px;letter-spacing:2px;margin:15px 0}.room-panel>p{font-size:12px;color:#6b8065}.room-number{font-size:38px;font-weight:900;letter-spacing:9px;margin:24px 0;font-variant-numeric:tabular-nums}.room-state{min-height:22px;line-height:1.8}.text-button{background:none;color:#647d62;font-size:12px;padding:12px;width:100%;text-decoration:underline;text-underline-offset:4px}.game-hud{position:absolute;top:110px;left:44px;right:44px;pointer-events:none;display:flex;justify-content:space-between}.game-hud button{pointer-events:auto}.progress .label{font-size:10px;letter-spacing:3px;color:#4c6f5b}.progress>div{display:flex;align-items:baseline;gap:8px}.progress strong{font-family:ui-rounded,"Arial Rounded MT Bold",sans-serif;font-size:52px;line-height:1.1;letter-spacing:-2px;font-weight:900;color:#31533f}.progress>div>span{font-size:11px;color:#58785e}.hud-right{display:flex;gap:12px;align-items:flex-start}.fruit{background:#fff8dbb5;border:1px solid #f5e5b7;border-radius:30px;padding:10px 15px;font-size:14px;color:#a6813d}.fruit b{margin-left:5px;color:#6b6844}.connection{position:absolute;top:62px;left:50%;transform:translateX(-50%);font-size:9px;color:#647b65;white-space:nowrap}.key{font-size:10px;display:grid;place-items:center;border:1px solid #fffbdf88;border-radius:5px;width:22px;height:22px;margin-left:10px}.toast{position:absolute;left:50%;bottom:190px;transform:translateX(-50%);background:#fffbeded;border:1px solid #fffef5;border-radius:40px;padding:12px 22px;color:#506e50;font-size:12px;white-space:nowrap;box-shadow:0 5px 22px #31523b19;pointer-events:none;max-width:94%;text-align:center}.modal-scrim{position:absolute;inset:0;background:#24473955;backdrop-filter:blur(6px);z-index:20;display:grid;place-items:center;padding:20px}.dialog{width:min(440px,100%);max-height:90dvh;overflow:auto;border:1px solid #fffdf1;background:#fffbed;border-radius:24px;padding:29px;box-shadow:0 22px 100px #233d3433}.rules{padding:0;list-style:none;counter-reset:step}.rules li{position:relative;counter-increment:step;padding-left:32px;margin:19px 0}.rules li:before{content:counter(step);position:absolute;left:0;top:0;display:grid;place-items:center;width:21px;height:21px;border:1px solid #c3ccb4;border-radius:50%;font-size:10px;color:#6e865f}.rules b{display:block;font-size:13px;margin-bottom:5px}.rules span{display:block;font-size:11px;line-height:1.8;color:#78826a}.keyboard-help{font-size:10px;line-height:1.8;color:#8a937c;border-top:1px solid #e1e4cd;padding-top:13px;margin-bottom:21px}.pause-dialog{text-align:center}.pause-dialog .eyebrow{justify-content:center}.pause-dialog>p{font-size:12px;color:#728367;line-height:1.8;margin-bottom:22px}.secondary{width:100%;margin-top:12px;padding:13px;border:1px solid #ced6bb;border-radius:12px;background:transparent;color:#56714d;font-size:12px}.playing .edition{display:none}.playing .bottom-caption{display:none}
@media(min-width:1600px){.welcome{left:12%}.topbar{padding-left:6%;padding-right:6%}}
@media(max-width:700px){.topbar{padding:calc(17px + env(safe-area-inset-top)) 21px 16px}.brand{font-size:17px;gap:9px}.brand-mark{width:34px;height:34px;font-size:21px;border-radius:11px}.brand small{font-size:6px;letter-spacing:1.5px}.top-actions{gap:7px}.icon-button{width:32px;height:32px;font-size:15px}.edition{font-size:8px;padding:7px 9px;letter-spacing:0}.welcome{left:26px;right:26px;top:17%;width:auto;max-width:380px;margin:auto;transform:none}.welcome .eyebrow{font-size:9px;letter-spacing:2px}.welcome h1{font-size:58px;margin:15px 0 12px;letter-spacing:4px}.intro{font-size:12px;line-height:1.8;margin:0 0 20px}.mode-tabs{border-radius:12px;margin-bottom:11px}.mode-tabs button{font-size:12px;padding:10px}.mode-tabs button small{font-size:8px}.primary{padding:15px 18px;font-size:13px}.home-foot{font-size:8px;padding-top:13px;margin-top:20px}.menu-note{font-size:9px;margin:11px 0}.bottom-caption{bottom:22px;right:0;left:0;text-align:center;font-size:8px;letter-spacing:2px}.game-hud{top:calc(88px + env(safe-area-inset-top));left:24px;right:24px}.progress strong{font-size:40px}.progress .label{font-size:9px;letter-spacing:2px}.fruit{padding:8px 11px;font-size:12px}.hud-right{gap:8px}.connection{top:131px;font-size:8px}.key{display:none}.toast{bottom:170px;font-size:10px;padding:11px 14px;white-space:normal;width:max-content}.dialog{padding:23px}.dialog h2{font-size:27px}.rules li{margin:15px 0}.rules span{font-size:10px}.rules b{font-size:12px}.room-panel{padding:28px}.room-number{font-size:34px}}
@media(max-height:690px) and (max-width:700px){.welcome{top:15%}.welcome h1{font-size:46px;margin:10px 0}.intro{font-size:11px;margin-bottom:13px}.home-foot{margin-top:13px}.welcome .menu-note{margin:8px 0}.topbar{padding-top:13px}.game-hud{top:73px}.connection{top:104px}.toast{bottom:145px}}
@media(max-height:520px) and (min-width:701px){.topbar{padding:15px 25px}.welcome{width:330px;left:5%;top:55%}.welcome h1{font-size:48px;margin:8px 0}.welcome .intro{font-size:11px;margin:10px 0}.welcome .eyebrow,.home-foot{display:none}.mode-tabs button{padding:8px 10px}.primary{padding:12px 18px}.game-hud{top:77px;left:25px;right:25px}.connection{top:38px}.toast{bottom:143px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}
/* Minimal UI: the turn is indicated only by the arrow above the monkey. */
.welcome{width:min(300px,36vw)}.welcome h1{font-size:68px;margin-bottom:30px}.mode-tabs button{text-align:center;padding:12px 5px;font-weight:600}.home-status{margin-top:15px}.topbar .brand{font-size:16px;letter-spacing:1px}.brand-mark{width:34px;height:34px;font-size:21px;border-radius:11px}.game-hud{top:100px}.connection{top:56px;left:auto;right:0;transform:none;opacity:.7}.room-panel .room-number{margin-top:2px}.toast:empty{display:none!important}.progress strong{font-size:48px}
@media(max-width:700px){.welcome{top:24%;width:calc(100% - 80px);left:40px;right:40px;max-width:300px}.welcome h1{font-size:55px;text-align:center;margin:0 0 28px}.game-hud{top:calc(88px + env(safe-area-inset-top))}.connection{top:44px}.topbar .brand{font-size:15px}.progress strong{font-size:40px}}

/* The scene is the jump control; only the small rope grip remains. */
.playing{touch-action:none;user-select:none;-webkit-user-select:none}
.playing .topbar{pointer-events:auto}
.controls{position:absolute;right:24px;bottom:calc(20px + env(safe-area-inset-bottom));z-index:10;user-select:none;-webkit-user-select:none}
.assist{min-width:84px;min-height:44px;padding:11px 17px;border:1px solid #fffef0bd;border-radius:25px;background:#fffbedce;color:#49634b;font-size:12px;box-shadow:0 3px 14px #21453517;backdrop-filter:blur(8px);touch-action:none;user-select:none;-webkit-user-select:none}
.assist.pressed{background:#edd79d;color:#675334;box-shadow:inset 0 1px 5px #7c633522}
.toast{bottom:88px}
@media(max-width:700px){.controls{right:18px;bottom:calc(16px + env(safe-area-inset-bottom))}.assist{min-width:78px;font-size:11px;padding:10px 14px}.toast{bottom:78px}}
