:root{font-family:"Microsoft YaHei","PingFang SC",system-ui,sans-serif;color:#fff1d6;background:#102c29;font-synthesis:none;--cream:#fff0d1;--ink:#294438;--muted:#b3c5ae;--gold:#ffc65c;--coral:#f28458}*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 50% 12%,#3a6250 0,#163b34 48%,#102723 100%);min-height:100svh}button,input,textarea{font:inherit}button{cursor:pointer;border:0;touch-action:manipulation}button:disabled{cursor:default;opacity:.35}button:focus-visible,input:focus-visible,textarea:focus-visible,canvas:focus-visible,summary:focus-visible{outline:3px solid #ffdd89;outline-offset:3px}[hidden],.hidden{display:none!important}.app{max-width:500px;margin:auto;padding:14px 16px max(14px,env(safe-area-inset-bottom))}.heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.eyebrow{margin:0 0 3px;color:#d1c392;font-size:10px;font-weight:800;letter-spacing:2px}h1{margin:0;color:var(--cream);font-size:29px;letter-spacing:1px;line-height:1.15;font-weight:950;text-shadow:0 3px 0 #102820}.timer{display:flex;align-items:baseline;gap:4px;padding:8px 12px;border-radius:12px;background:linear-gradient(145deg,#ffd77b,#e9a547);border:1px solid #ffe6a4;box-shadow:0 4px 0 #98642c,0 8px 20px #061c2930;color:#4b3623;transform:rotate(2deg)}.timer b{font-size:28px;line-height:1;font-variant-numeric:tabular-nums}.timer small{font-size:10px;font-weight:800}.timer.urgent{background:#c6473e;border-color:#f38a66;color:#fff3ce}.topline{display:flex;align-items:center;justify-content:space-between;gap:5px;margin:8px 0 4px;min-height:28px}.topline>div{display:flex;gap:2px}.quiet{padding:7px 6px;min-height:32px;background:none;color:#c4d2b8;font-size:11px}.tag{font-size:10px;color:#c4d2b8}.opening-line{font-size:12px;margin:8px 0 10px}.blue{color:#8dcdec}.opening-line strong{color:#ffbb76}.campaign-panel{margin:8px 0 10px}.chapter-heading{display:flex;justify-content:space-between;align-items:center}.chapter-heading small{display:block;color:#afc2a7;font-size:9px;letter-spacing:1px}.chapter-heading h2{font-size:22px;line-height:1.2;margin:3px 0 0;color:#fff4d7}.cheese-goal{display:flex;gap:4px;align-items:flex-end;flex-direction:column;padding:6px 10px;background:#0c2c254f;border:1px solid #bcd7a126;border-radius:9px}.cheese-goal span{font-size:9px;color:#d0d3ab}.cheese-goal b{font-size:18px;color:var(--gold);font-variant-numeric:tabular-nums}.level-track{display:flex;align-items:center;justify-content:space-between;gap:7px;margin:9px 0 0;position:relative}.level-track:before{content:"";position:absolute;left:12px;right:12px;top:50%;height:2px;background:#60836d;opacity:.5}.level-track button{z-index:1;position:relative;width:29px;height:29px;border-radius:50%;background:#244b3e;color:#96b39b;border:2px solid #668566;font-size:11px;font-weight:800}.level-track .current{background:#ffd071;color:#573e23;border-color:#ffe0a2;box-shadow:0 0 0 4px #eabd5020;transform:scale(1.08)}.level-track .cleared{background:#74a477;border-color:#b2cb83;color:#163629}.level-track button:disabled{opacity:.55}.mission{display:flex;list-style:none;gap:5px;margin:8px 0;padding:0}.mission li{flex:1;display:flex;align-items:center;justify-content:center;gap:4px;padding:5px 2px;border-bottom:2px solid #74937b55;color:#abc0a3;font-size:10px;white-space:nowrap}.mission b{font-size:10px}.mission .current{color:#ffe2a0;border-color:#f2c76b}.mission .done{color:#aada98;border-color:#87b479}.campaign .mission,.campaign .opening-line{display:none}.stage{position:relative;width:min(100%,calc((100svh - 350px)*18/26 + 12px));margin:0 auto;border:6px solid #98774a;border-radius:18px;overflow:hidden;box-shadow:0 0 0 2px #e2be77,0 8px 0 #071f2160,0 18px 45px #00100f80;background:#d9bd83}canvas{display:block;width:100%;aspect-ratio:18/26;touch-action:none}.vision-caption{position:absolute;left:7px;right:7px;bottom:6px;text-align:center;font-size:9px;line-height:1.4;color:#f8edc8;background:#294035bf;border:1px solid #dccd8840;padding:3px 4px;border-radius:6px;pointer-events:none}.danger{position:absolute;top:12px;left:50%;transform:translateX(-50%);background:#bf483d;color:#fff8d7;border:2px solid #ffd076;box-shadow:0 4px 0 #7e302a;padding:7px 15px;border-radius:9px;font-size:14px;font-weight:900;white-space:nowrap}.stage.threat{border-color:#ce6950;box-shadow:0 0 0 2px #ffb675,0 0 25px #e17a5840}.lobby{margin-top:13px}.campaign-copy{font-size:12px;line-height:1.6;color:#e6dec0;margin:0 0 10px;text-align:center}.primary{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;min-height:54px;padding:12px 18px;border-radius:12px;font-size:19px;font-weight:950;color:#53351c;background:linear-gradient(145deg,#ffda81,#f3ae48);border:1px solid #ffdfa0;box-shadow:0 5px 0 #9a632d,0 9px 18px #001b2430}.primary span{font-size:10px;font-weight:600;color:#70502c}.primary:active{transform:translateY(3px);box-shadow:0 2px 0 #9a632d}.play-mode{text-align:center;font-size:10px;color:#b5c3a4;line-height:1.5;margin:11px 0 6px}.learn-actions{display:flex;align-items:center;justify-content:space-between;margin:0 0 10px;gap:8px}.learn-actions button{color:#d8e1c2;background:#224638;border:1px solid #7b96734f;border-radius:8px;padding:7px 10px;font-size:11px;min-height:34px}.learn-actions span{font-size:9px;color:#b4c5a5}.campaign .learn-actions{justify-content:center}.campaign .learn-actions span{display:none}.first-order{font-size:12px;line-height:1.6;margin:9px 0;color:#e2ddc5}.first-order b{display:block;font-size:10px;color:#efb980}.first-order span{display:block}.plan-settings{background:#11362bc9;border:1px solid #69876a80;border-radius:10px;margin-top:10px;padding:0 10px 10px;font-size:12px}.plan-settings:not([open]){border-color:transparent;padding-bottom:0}.plan-settings summary{cursor:pointer;text-align:center;padding:9px;min-height:38px;color:#bdc7a9;font-size:11px}.field-label{display:block;font-size:11px;margin:5px 0 8px;color:#e4ddbd}textarea,input{color:#334537;background:#f5eedc;border:1px solid #b5bea2;border-radius:8px}textarea{width:100%;resize:vertical;min-height:65px;max-height:150px;padding:9px;font-size:12px;line-height:1.6}.mode-choices,.partner-choices{display:flex;gap:6px;margin-top:8px}.mode-choices button,.partner-choices button{flex:1;border:1px solid #7e9870;border-radius:7px;padding:8px 4px;min-height:38px;font-size:11px;background:#365643;color:#dbe5bf}.mode-choices [aria-pressed=true],.partner-choices [aria-pressed=true]{background:#f5cd78;border-color:#ffe0a3;color:#4b3d26}.connection,.fine{font-size:10px;line-height:1.6;color:#bdc5a5;margin:8px 0 0}.campaign-partner{background:#214c3e;border:1px solid #79946d;border-radius:12px;padding:12px;margin:13px 0 8px}.campaign-partner>b{font-size:13px;color:#ffdda1}.campaign-partner p{font-size:11px;line-height:1.6;color:#cdd6b9;margin:5px 0}.play-controls{display:none}.coach{padding:9px 11px;border:1px solid #e0c478;background:#f5e7b9;border-radius:10px;color:#494932;min-height:66px}.coach>b{font-size:12px}.coach p{font-size:10px;line-height:1.5;margin:4px 0 0}.partner-line{display:flex;gap:8px;align-items:center;padding:8px 10px;min-height:59px;border:1px solid #788d6c;background:#1d4435;border-radius:10px}.partner-dot{width:10px;height:10px;background:#eda45b;border-radius:50%;flex:none;box-shadow:0 0 0 4px #f8ad5615}.partner-line>div{flex:1;min-width:0}.partner-line small{font-size:9px;color:#aebfa1}.partner-line p{font-size:11px;color:#f1e5be;margin:3px 0 0;line-height:1.4;overflow-wrap:anywhere}.signal{background:#58744e;color:#f5e5b3;border:1px solid #96ad72;border-radius:7px;padding:7px;min-height:39px;max-width:88px;font-size:10px}.controls{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:8px 5px 0}.joystick{width:84px;height:84px;position:relative;touch-action:none;user-select:none;flex:none}.joystick-ring{position:absolute;inset:0;border-radius:50%;background:radial-gradient(circle,#46624a,#273f34);border:2px solid #91a577;box-shadow:inset 0 4px 12px #071e2855,0 4px 0 #0c2825}.stick{position:absolute;width:42px;height:42px;left:21px;top:21px;border-radius:50%;background:linear-gradient(145deg,#b6c595,#6d895e);border:1px solid #d3dfb7;box-shadow:0 4px 0 #354d38;pointer-events:none}.joystick small{position:absolute;bottom:4px;left:0;right:0;text-align:center;font-size:8px;color:#dce5bb;pointer-events:none}.control-note{flex:1;text-align:center;display:flex;flex-direction:column;gap:6px}.control-note b{font-size:11px;color:#f1e8c7}.control-note span{font-size:9px;color:#aabd9e}.interact{width:78px;height:78px;flex:none;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;border-radius:50%;color:#59462d;background:linear-gradient(145deg,#e9c47e,#b39056);border:2px solid #e8cf97;box-shadow:0 5px 0 #795a33;font-size:12px;font-weight:800}.interact span{font-size:8px;font-weight:500}.interact.ready{background:linear-gradient(145deg,#ffe395,#ffb642);border-color:#fff0b4;box-shadow:0 0 0 4px #eac16330,0 5px 0 #a57030}.interact:active{transform:translateY(3px);box-shadow:0 2px 0 #795a33}.feedback{font-size:10px;line-height:1.5;color:#d4ceac;margin:8px 0 0;min-height:15px}.command-form{margin-top:8px}.command-form>div{display:flex;gap:6px}.command-form input{min-width:0;flex:1;padding:9px;font-size:11px;min-height:39px}.command-form button{border-radius:8px;background:#e8bc68;color:#453c24;padding:0 13px;font-size:12px;font-weight:800}.overlay{position:absolute;inset:0;display:flex;align-items:center;padding:15px;background:#142d2980;backdrop-filter:blur(2px);z-index:3}.result-card{position:relative;background:#fff0cfeF;color:#334733;border:2px solid #ffe6a5;border-radius:18px;padding:24px 18px;width:100%;box-shadow:0 8px 0 #a1764380,0 16px 40px #001b2470;text-align:center}.result-card .eyebrow{color:#8c6531;letter-spacing:1px;font-size:11px}.result-card h2{font-size:26px;line-height:1.3;margin:12px 0;white-space:pre-line;color:#30513d}.result-card>p:not(.eyebrow){font-size:12px;line-height:1.7;color:#666446;margin:8px 0}#result-progress{border-top:1px solid #b9b793;padding-top:10px;font-weight:800}.victory .result-card{animation:land .35s ease-out}.victory .result-card:before{content:"";position:absolute;left:calc(50% - 22px);top:-26px;width:44px;height:8px;border-radius:5px;background:#ffcc5b;box-shadow:-48px 7px 0 -1px #eda36e,48px 7px 0 -1px #acbb70;transform:rotate(-8deg)}@keyframes land{from{transform:translateY(12px) scale(.92);opacity:.3}to{transform:none;opacity:1}}.evidence{color:#9fb49d;font-size:10px;border-top:1px solid #77946e35;margin-top:14px;padding-top:4px}.evidence summary{cursor:pointer;padding:9px 0;min-height:34px}.evidence p{line-height:1.6}.evidence-actions{display:flex;gap:6px}.evidence button{border-radius:6px;border:1px solid #7d9470;padding:7px 9px;color:#cfdbba;background:#284a3a;font-size:10px;min-height:34px}.evidence a{color:#dcce94}pre{font-size:9px;max-height:180px;overflow:auto;white-space:pre-wrap;word-break:break-word}.trial-exit{text-align:center;font-size:11px}.trial-exit .quiet{margin-top:9px;text-decoration:underline}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}#finish-practice{margin-top:9px;font-size:15px;min-height:44px}.playing .app{padding-top:10px}.playing .heading .eyebrow,.playing .opening-line,.playing .lobby,.playing .evidence{display:none}.playing h1{font-size:23px}.playing .timer b{font-size:24px}.playing .timer{padding:7px 10px}.playing .topline{margin:5px 0}.playing .play-controls{display:block;margin-top:10px}.playing .stage{width:min(100%,calc((100svh - 345px)*18/26 + 12px))}.playing.show-help .partner-line{display:none}.playing.show-help .stage{width:min(100%,calc((100svh - 385px)*18/26 + 12px))}.practicing .command-form,.practicing .partner-line{display:none}.practicing .interact{opacity:.45}.practicing .stage{width:min(100%,calc((100svh - 385px)*18/26 + 12px))}.finished .mission,.finished .first-order,.finished .learn-actions,.finished .opening-line{display:none}.finished .stage{width:min(100%,calc((100svh - 340px)*18/26 + 12px))}.next-level{margin-bottom:12px}.finished.victory #start-play{background:#345642;color:#d7dfb9;box-shadow:0 3px 0 #142c25;border-color:#779268;font-size:14px;min-height:42px}.finished.victory #start-play span{color:#b0c2a1}.solo-trial #plan-settings,.solo-trial #first-order,.solo-trial .command-form,.solo-trial .partner-line,.solo-trial .evidence:not(.trial-records){display:none}.solo-trial.playing .stage{width:min(100%,calc((100svh - 260px)*18/26 + 12px))}.solo-trial.playing.show-help .stage{width:min(100%,calc((100svh - 330px)*18/26 + 12px))}.solo-trial.practicing .stage{width:min(100%,calc((100svh - 390px)*18/26 + 12px))}.solo-trial.finished #solo-intro{display:none}.campaign .stage{width:min(100%,calc((100svh - 360px)*18/26 + 12px))}.campaign .learn-actions button{border:0;background:none;color:#bcccab;padding:0;min-height:26px}.campaign .lobby{margin-top:10px}.campaign.playing .chapter-heading h2{font-size:17px}.campaign.playing .chapter-heading small{font-size:8px}.campaign.playing .cheese-goal{padding:3px 8px;flex-direction:row;align-items:center;gap:6px}.campaign.playing .cheese-goal b{font-size:16px}.campaign.playing .level-track{margin:6px 0 0}.campaign.playing .level-track button{width:22px;height:22px;font-size:9px}.campaign.playing .campaign-panel{margin:4px 0 8px}.campaign.playing .stage{width:min(100%,calc((100svh - 405px)*18/26 + 12px))}.campaign.campaign-solo.playing .stage{width:min(100%,calc((100svh - 285px)*18/26 + 12px))}.campaign.campaign-solo.playing.show-help .stage{width:min(100%,calc((100svh - 355px)*18/26 + 12px))}.campaign-solo .command-form,.campaign-solo .partner-line{display:none}.campaign-solo .evidence:not(.trial-records){display:none}.campaign.finished .campaign-copy{display:none}.campaign.finished .stage{width:min(100%,calc((100svh - 410px)*18/26 + 12px))}.campaign.practicing .stage{width:min(100%,calc((100svh - 425px)*18/26 + 12px))}.campaign.finished .level-track{display:none}.campaign.finished .campaign-panel{margin-bottom:10px}.campaign.finished .chapter-heading h2{font-size:18px}
@media(max-height:740px){.app{padding:10px 12px}h1{font-size:26px}.heading .eyebrow{font-size:9px}.topline{margin:5px 0 2px}.campaign-panel{margin:5px 0 8px}.chapter-heading h2{font-size:19px}.level-track{margin-top:7px}.level-track button{width:24px;height:24px}.primary{min-height:48px;font-size:17px;padding:10px 14px}.campaign-copy{font-size:11px;margin-bottom:6px}.play-mode{font-size:9px}.joystick{width:70px;height:70px}.stick{left:14px;top:14px}.interact{width:66px;height:66px;font-size:11px}.control-note span{display:none}.control-note b{font-size:10px}.coach{padding:7px 9px;min-height:58px}.coach>b{font-size:11px}.coach p{font-size:9px}.feedback{font-size:9px}.vision-caption{font-size:8px}.result-card{padding:18px 12px}.result-card h2{font-size:21px}.result-card>p:not(.eyebrow){font-size:10px}.campaign .stage{width:min(100%,calc((100svh - 340px)*18/26 + 12px))}.campaign.campaign-solo.playing .stage{width:min(100%,calc((100svh - 285px)*18/26 + 12px))}.campaign.campaign-solo.playing.show-help .stage{width:min(100%,calc((100svh - 345px)*18/26 + 12px))}.campaign.finished .stage{width:min(100%,calc((100svh - 350px)*18/26 + 12px))}.campaign.playing:not(.campaign-solo) .stage{width:min(100%,calc((100svh - 380px)*18/26 + 12px))}.evidence{margin-top:9px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
/* Reserve space for the phone controls and feedback, including wrapped help. */
.campaign.campaign-solo.playing .stage{width:min(100%,calc((100svh - 310px)*18/26 + 12px))}
.campaign.campaign-solo.playing.show-help .stage{width:min(100%,calc((100svh - 385px)*18/26 + 12px))}
.campaign:not(.playing):not(.finished) .stage{width:min(100%,calc((100svh - 390px)*18/26 + 12px))}
@media(max-height:740px){.campaign.campaign-solo.playing .stage{width:min(100%,calc((100svh - 295px)*18/26 + 12px))}.campaign.campaign-solo.playing.show-help .stage{width:min(100%,calc((100svh - 365px)*18/26 + 12px))}.campaign:not(.playing):not(.finished) .stage{width:min(100%,calc((100svh - 375px)*18/26 + 12px))}}
.playing .app{padding-bottom:max(10px,env(safe-area-inset-bottom))}

/* Demo: shared cat visibility, a legible stage, and optional tactics. */
:root{--blue:#88d3fa;--orange:#ffbd76}
.app{max-width:470px;padding:12px 14px max(12px,env(safe-area-inset-bottom))}
.heading .eyebrow{letter-spacing:1.6px}
.opening-line{display:flex!important;align-items:center;justify-content:center;gap:12px;font-size:10px;line-height:16px;margin:8px 0}
.opening-line>span,.opening-line>strong{display:inline-flex;align-items:center;gap:4px;white-space:nowrap}
.opening-line i{width:7px;height:7px;display:inline-block;background:currentColor;border-radius:50%;box-shadow:0 0 0 2px #ffffff18}
.opening-line .blue{color:var(--blue)}
.opening-line strong{color:var(--orange);font-weight:600}
.opening-line .shared-goal{color:#cbd2ae;font-size:9px}
.campaign .mission{display:none}
.campaign:not(.finished) .level-track,.campaign .first-order{display:none}
.campaign .chapter-heading h2{font-size:22px}
.chapter-heading small{font-size:10px;letter-spacing:.6px}
.level-track{justify-content:center;gap:18px;margin-top:10px}
.level-track:before{left:calc(50% - 50px);right:calc(50% - 50px)}
.level-track button{width:26px;height:26px}
.stage{border-width:5px;border-radius:16px}
.vision-caption{font-size:10px;color:#fff8df;background:#284a3beF;border-color:#fff2c330;bottom:5px;padding:4px 5px}
.danger{top:10px;font-size:12px;padding:6px 10px;border-width:1px;max-width:96%;white-space:normal;text-align:center;line-height:1.35}
.first-order{text-align:center;font-size:11px;margin:8px 0 12px;line-height:1.5}
.first-order b{display:none}
.first-order span{color:#d8d8ba}
.campaign .learn-actions{display:none}
.campaign .campaign-copy{font-size:12px;margin-bottom:8px}
.plan-settings summary{font-size:11px;padding:10px}
.primary{min-height:52px;font-size:20px}
.campaign:not(.playing):not(.finished) .stage{width:min(100%,calc((100svh - 370px)*18/26 + 10px))}
.playing .app{padding-top:8px;padding-bottom:max(8px,env(safe-area-inset-bottom))}
.playing .heading{min-height:27px}
.playing .heading h1{font-size:21px}
.playing .timer{padding:5px 9px;border-radius:9px;box-shadow:0 3px 0 #98642c}
.playing .timer b{font-size:22px}
.playing .topline{min-height:23px;margin:3px 0}
.playing .quiet{min-height:23px;padding:3px 5px;font-size:10px}
.playing .tag{font-size:10px}
.campaign.playing .campaign-panel{margin:4px 0 7px}
.campaign.playing .chapter-heading h2{font-size:17px;margin:0}
.campaign.playing .chapter-heading small,.campaign.playing .level-track,.playing .opening-line{display:none!important}
.campaign.playing .cheese-goal{border:0;background:none;padding:0;gap:5px}
.campaign.playing .cheese-goal span{font-size:10px}
.campaign.playing .cheese-goal b{font-size:16px}
.playing .play-controls{margin-top:9px}
.partner-line{min-height:50px;padding:7px 9px;gap:8px;border-color:#799c774d;background:#214638}
.partner-line small{font-size:9px;color:var(--orange)}
.partner-line p{font-size:11px;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.partner-dot{width:8px;height:8px;background:var(--orange)}
.signal{min-height:36px;font-size:10px;background:#465f43;border-color:#92ac7160;padding:6px;max-width:92px}
.controls{padding:8px 4px 0;gap:8px}
.joystick{width:78px;height:78px}
.stick{left:18px;top:18px}
.interact{width:74px;height:74px;font-size:12px}
.control-note b{font-size:11px;line-height:1.45}
.control-note span{font-size:9px}
.quick-commands{display:flex;gap:6px;margin-top:7px}
.quick-commands button{flex:1;min-height:32px;background:#2f5441;border:1px solid #9db08266;border-radius:7px;color:#e4dec0;font-size:10px;padding:5px 4px}
.quick-commands button:active{background:#607a4e;color:#fff3c8}
.command-tools{margin-top:4px;color:#b8caab;font-size:10px}
.command-tools>summary{cursor:pointer;text-align:center;min-height:23px;padding:5px 4px;list-style:none}
.command-tools>summary:after{content:" +";color:#e9c483}
.command-tools[open]>summary:after{content:" −"}
.command-form{margin:3px 0 0}
.command-form input{min-height:39px;font-size:16px;padding:7px 8px}
.command-form button{min-height:39px;padding:0 10px;font-size:11px}
.command-form>small{display:block;text-align:center;font-size:9px;margin-top:3px;color:#d3c6a2}
.feedback{font-size:10px;line-height:1.4;margin:5px 2px 0;min-height:14px;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.playing.show-help .partner-line{display:flex}
.coach{position:relative;margin-bottom:7px;min-height:0;padding:7px 9px;background:#eee3bc;color:#3b4934;border-color:#f8d695}
.coach>b{font-size:11px}
.coach p{font-size:10px;line-height:1.45;margin:3px 0 0}
.playing .stage,.campaign.playing .stage,.campaign.playing:not(.campaign-solo) .stage{width:min(100%,calc((100svh - 370px)*18/26 + 10px))}
.playing.show-help .stage,.campaign.playing.show-help .stage{width:min(100%,calc((100svh - 439px)*18/26 + 10px))}
.playing:has(.command-tools[open]) .stage{width:min(100%,calc((100svh - 427px)*18/26 + 10px))}
.playing.show-help:has(.command-tools[open]) .stage{width:min(100%,calc((100svh - 496px)*18/26 + 10px))}
.practicing .command-tools,.practicing .quick-commands,.solo-trial .command-tools,.solo-trial .quick-commands,.campaign-solo .command-tools,.campaign-solo .quick-commands{display:none}
.campaign.campaign-solo.playing .stage,.solo-trial.playing .stage{width:min(100%,calc((100svh - 260px)*18/26 + 10px))}
.campaign.campaign-solo.playing.show-help .stage,.solo-trial.playing.show-help .stage{width:min(100%,calc((100svh - 329px)*18/26 + 10px))}
.campaign.practicing .stage,.practicing .stage{width:min(100%,calc((100svh - 350px)*18/26 + 10px))}
.campaign.finished .stage{width:min(100%,calc((100svh - 352px)*18/26 + 10px))}
.finished .opening-line{display:none!important}
.evidence{opacity:.9}
@media(max-height:740px){
  .app{padding:9px 12px}.heading h1{font-size:25px}.campaign .chapter-heading h2{font-size:19px}.opening-line{margin:6px 0;font-size:9px;gap:9px}.opening-line .shared-goal{display:none}
  .campaign:not(.playing):not(.finished) .stage{width:min(100%,calc((100svh - 330px)*18/26 + 10px))}
  .campaign-copy{line-height:1.5}.first-order{font-size:10px;margin:6px 0 9px}.play-mode{margin:9px 0 4px}.primary{min-height:47px;font-size:18px}.plan-settings summary{min-height:30px;padding:6px}
  .playing .heading h1{font-size:20px}.playing .heading{min-height:26px}.playing .campaign-panel{margin-bottom:6px}.campaign.playing .chapter-heading h2{font-size:16px}
  .partner-line{min-height:47px;padding:6px 8px}.partner-line p{font-size:10px}.signal{min-height:33px;font-size:9px}
  .joystick{width:68px;height:68px}.stick{left:13px;top:13px}.interact{width:65px;height:65px;font-size:11px}.control-note b{font-size:10px}.control-note span{display:none}
  .quick-commands{margin-top:6px}.quick-commands button{min-height:30px;font-size:9px}.command-tools>summary{min-height:22px;padding:4px}.feedback{font-size:9px;min-height:13px}
  .vision-caption{font-size:9px}.coach{padding:6px 8px}.coach>b{font-size:10px}.coach p{font-size:9px}
  .playing .stage,.campaign.playing .stage,.campaign.playing:not(.campaign-solo) .stage{width:min(100%,calc((100svh - 350px)*18/26 + 10px))}
  .playing.show-help .stage,.campaign.playing.show-help .stage{width:min(100%,calc((100svh - 413px)*18/26 + 10px))}
  .playing:has(.command-tools[open]) .stage{width:min(100%,calc((100svh - 407px)*18/26 + 10px))}
  .playing.show-help:has(.command-tools[open]) .stage{width:min(100%,calc((100svh - 470px)*18/26 + 10px))}
}

/* First-plan waiting is a separate, non-timed movement rehearsal. */
.preparation-panel{display:flex;align-items:center;gap:10px;padding:9px 10px;background:#204a3c;border:1px solid #aac38970;border-radius:10px;margin-bottom:8px}
.preparation-panel>div{flex:1;min-width:0}.preparation-panel b{font-size:12px;color:#ffe0a0;line-height:1.4}
.preparation-panel p{font-size:10px;line-height:1.5;color:#d5dfbf;margin:4px 0 0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.preparation-panel button{min-height:36px;padding:7px;background:#3e6550;color:#f2e7c7;border:1px solid #a9ba8266;border-radius:7px;font-size:10px;flex:none}
.prepared .preparation-panel{border-color:#c7d787;background:#2b563f}
.playing.warming .partner-line,.warming .coach,.warming #help,.warming #restart{display:none}
.warming #finish-practice{margin-top:9px;margin-bottom:0;font-size:17px;min-height:45px;line-height:1.3}
.warming #finish-practice span{font-size:9px}.warming #finish-practice:disabled{opacity:.58}
.campaign.playing.practicing.warming .stage,.playing.practicing.warming .stage{width:min(100%,calc((100svh - 385px)*18/26 + 10px))}
@media(max-height:740px){
  .preparation-panel{padding:7px 8px;gap:7px;margin-bottom:6px}.preparation-panel b{font-size:11px}.preparation-panel p{font-size:9px}.preparation-panel button{font-size:9px;min-height:33px}
  .warming #finish-practice{font-size:15px;padding:9px 10px}.warming #finish-practice span{font-size:8px}
  .campaign.playing.practicing.warming .stage,.playing.practicing.warming .stage{width:min(100%,calc((100svh - 365px)*18/26 + 10px))}
}

/* The single situation uses its authored 18 × 22 map without letterboxing. */
.single-level canvas{aspect-ratio:16/18}
.single-level .level-track{display:none}
.single-mechanics{display:flex;flex-direction:column;gap:4px;margin:8px 0 11px;text-align:center;color:#f1d39c;font-size:12px;line-height:1.45}
.single-mechanics span{font-size:10px;color:#c4cdb0}
.single-level.playing .single-mechanics,.single-level.finished .single-mechanics{display:none}
.single-level .campaign-copy{font-size:11px;line-height:1.5;margin:0 0 8px}
.single-level .campaign-partner{padding:9px 10px;margin:8px 0}
.single-level .campaign-partner>b,.single-level .campaign-partner>p{display:none}
.single-level .partner-choices{margin:0}
.single-level .stage,.single-level.campaign:not(.playing):not(.finished) .stage{width:min(100%,calc((100svh - 400px)*16/18 + 10px))}
.single-level.campaign.playing .stage,.single-level.campaign.playing:not(.campaign-solo) .stage{width:min(100%,calc((100svh - 370px)*16/18 + 10px))}
.single-level.campaign.playing.show-help .stage{width:min(100%,calc((100svh - 452px)*16/18 + 10px))}
.single-level.playing:has(.command-tools[open]) .stage{width:min(100%,calc((100svh - 427px)*16/18 + 10px))}
.single-level.playing.show-help:has(.command-tools[open]) .stage{width:min(100%,calc((100svh - 509px)*16/18 + 10px))}
.single-level.campaign.campaign-solo.playing .stage{width:min(100%,calc((100svh - 260px)*16/18 + 10px))}
.single-level.campaign.campaign-solo.playing.show-help .stage{width:min(100%,calc((100svh - 342px)*16/18 + 10px))}
.single-level.campaign.practicing .stage{width:min(100%,calc((100svh - 350px)*16/18 + 10px))}
.single-level.campaign.playing.practicing.warming .stage{width:min(100%,calc((100svh - 385px)*16/18 + 10px))}
.single-level.campaign.finished .stage{width:min(100%,calc((100svh - 352px)*16/18 + 10px))}
.single-level.finished .result-card h2{font-size:23px}
@media(max-height:740px){
  .single-level .single-mechanics{margin:6px 0 9px;font-size:11px}.single-level .single-mechanics span{font-size:9px}
  .single-level.campaign:not(.playing):not(.finished) .stage{width:min(100%,calc((100svh - 375px)*16/18 + 10px))}
  .single-level.campaign.playing .stage,.single-level.campaign.playing:not(.campaign-solo) .stage{width:min(100%,calc((100svh - 350px)*16/18 + 10px))}
  .single-level.campaign.playing.show-help .stage{width:min(100%,calc((100svh - 438px)*16/18 + 10px))}
  .single-level.playing:has(.command-tools[open]) .stage{width:min(100%,calc((100svh - 407px)*16/18 + 10px))}
  .single-level.playing.show-help:has(.command-tools[open]) .stage{width:min(100%,calc((100svh - 495px)*16/18 + 10px))}
  .single-level.campaign.campaign-solo.playing .stage{width:min(100%,calc((100svh - 250px)*16/18 + 10px))}
  .single-level.campaign.campaign-solo.playing.show-help .stage{width:min(100%,calc((100svh - 338px)*16/18 + 10px))}
  .single-level.campaign.playing.practicing.warming .stage{width:min(100%,calc((100svh - 365px)*16/18 + 10px))}
  .single-level.finished .result-card{padding:15px 10px}.single-level.finished .result-card h2{font-size:19px}
}

/* MVP: reserve the screen for the kitchen and immediate controls. */
.single-level .app{max-width:480px;padding:10px 14px max(12px,env(safe-area-inset-bottom))}
.single-level .heading{min-height:30px}.single-level .heading h1{font-size:25px}
.single-level .heading .eyebrow,.single-level .campaign-panel,.single-level .topline .tag{display:none}
.single-level .topline{justify-content:flex-end;min-height:25px;margin:2px 0 5px}
.single-level .opening-line{margin:4px 0 7px}
.single-level .single-mechanics{margin:6px 0 9px}
.single-level .first-order:not([hidden]){display:block!important;margin:8px 0;color:#ffe0a0;font-size:13px}
.single-level .first-order b{display:inline;margin-right:8px;font-size:10px;color:#bcccaf}
.single-level .first-order span{color:#ffe1aa}
.single-level .campaign-copy{display:none}
.single-level .play-mode{font-size:10px;margin:7px 0 0}
.single-level .plan-settings{margin-top:6px}
.single-level .plan-settings summary{min-height:28px;padding:7px}
.single-level.campaign:not(.playing):not(.finished) .stage{width:min(100%,calc((100svh - 318px)*16/18 + 10px))}
.single-level.campaign.playing .stage,.single-level.campaign.playing:not(.campaign-solo) .stage{width:min(100%,calc((100svh - 250px)*16/18 + 10px))}
.single-level.playing .heading h1{font-size:22px}.single-level.playing .topline{margin-bottom:3px}
.single-level.playing .play-controls{margin-top:7px}
.single-level .partner-line{min-height:38px;padding:5px 8px}.single-level .partner-line small{display:none}
.single-level .partner-line p{-webkit-line-clamp:1;font-size:11px}.single-level .signal{min-height:28px;padding:4px 5px}
.single-level .controls{padding-top:7px}.single-level .joystick{width:76px;height:76px}.single-level .stick{left:17px;top:17px}
.single-level .interact{width:76px;height:76px}.single-level .interact.ready{box-shadow:0 4px 0 #976121,0 0 22px #ffce6260}
.single-level .interact.escape-option{border-color:#ffe7a5;animation:escape-pulse .7s ease-in-out infinite alternate}
@keyframes escape-pulse{to{box-shadow:0 4px 0 #976121,0 0 0 5px #ffda7940,0 0 28px #ffb34a90}}
@media(prefers-reduced-motion:reduce){.single-level .interact.escape-option{animation:none;outline:3px solid #ffda79}}
.single-level .command-tools{margin-top:3px}.single-level .feedback{min-height:0;margin:3px 0 0}
.single-level .control-note b{font-size:12px}.single-level .control-note span{font-size:9px}
.single-level.campaign.playing.show-help .stage{width:min(100%,calc((100svh - 336px)*16/18 + 10px))}
.single-level.playing:has(.command-tools[open]) .stage{width:min(100%,calc((100svh - 360px)*16/18 + 10px))}
.single-level.playing.show-help:has(.command-tools[open]) .stage{width:min(100%,calc((100svh - 446px)*16/18 + 10px))}
.single-level.campaign.playing.practicing.warming .stage{width:min(100%,calc((100svh - 335px)*16/18 + 10px))}
.single-level.campaign.finished .stage{width:min(100%,calc((100svh - 287px)*16/18 + 10px))}
.single-level.finished .first-order,.single-level.finished .single-mechanics{display:none!important}
.single-level .result-card{border:1px solid #ffde91;background:#183d35f5;box-shadow:0 10px 45px #10271d66}
.single-level .vision-caption{top:5px;bottom:auto;padding:3px 6px;font-size:9px;border-radius:6px;background:#214b3ade}
@media(max-height:700px){.single-level .app{padding-top:7px}.single-level.campaign.playing .stage,.single-level.campaign.playing:not(.campaign-solo) .stage{width:min(100%,calc((100svh - 244px)*16/18 + 10px))}}
