/* Current game: less reading while moving. Preparation, settings,
   provider errors and the optional coach keep their existing controls. */
.cue-hud{display:none}
.cue-toast[hidden]{display:none!important}
body.single-level.cue-ui.playing .heading>div:not(.cue-hud):not(.timer),
body.single-level.cue-ui.playing .campaign-panel,
body.single-level.cue-ui.playing .single-mechanics,
body.single-level.cue-ui.playing .opening-line,
body.single-level.cue-ui.playing .mission,
body.single-level.cue-ui.playing .topline .tag{display:none!important}
body.single-level.cue-ui.playing .cue-hud{display:flex;align-items:center;justify-content:space-between;flex:1;gap:16px;min-width:0}
.cue-level{font-size:15px;font-weight:800;color:#69513d;letter-spacing:.02em;white-space:nowrap}
.cue-score{display:inline-flex;align-items:center;gap:6px;color:#775938;font-size:15px;line-height:1;font-variant-numeric:tabular-nums;white-space:nowrap}
.cue-score svg{width:27px;height:25px}
.cue-score-check{display:none;font-size:15px;font-weight:900;color:#647b50}
.cue-score.complete .cue-score-check{display:inline}
body.single-level.cue-ui.playing .heading{min-height:32px;gap:18px}
body.single-level.cue-ui.playing .timer{padding:5px 8px;border-radius:9px;box-shadow:0 2px 0 #ceb184}
body.single-level.cue-ui.playing .timer b{font-size:22px}
body.single-level.cue-ui.playing .timer.urgent:not(.cue-last-seconds){color:#493b34;background:#f3c75b;border-color:#d9b763}
body.single-level.cue-ui.playing .topline{margin:3px 0 5px;min-height:26px}
body.single-level.cue-ui.playing .quiet{min-height:28px;padding:4px 6px}

/* The renderer carries location and cat-state cues. Keep original live text
   available to assistive technology without stacking duplicate billboards. */
body.single-level.cue-ui .vision-caption,
body.single-level.cue-ui.playing #danger,
body.single-level.cue-ui.playing:not(.warming) #feedback,
body.single-level.cue-ui.playing .control-note b{
  position:absolute!important;width:1px!important;height:1px!important;
  padding:0!important;margin:-1px!important;border:0!important;
  overflow:hidden!important;clip:rect(0,0,0,0)!important;
  clip-path:inset(50%)!important;white-space:nowrap!important;
}
body.single-level.cue-ui.playing .control-note{align-self:center;min-width:0}
body.single-level.cue-ui.playing .control-note span{font-size:9px;color:#937d66}
body.single-level.cue-ui.playing .joystick small{display:none}
body.single-level.cue-ui.playing .interact{font-size:12px}
body.single-level.cue-ui.playing .interact.escape-option{animation:none;border-color:#b65b43;box-shadow:0 4px 0 #a7794b,0 0 0 3px #bd725338}
body.single-level.cue-ui.playing .partner-line{min-height:37px;border-radius:10px}
body.single-level.cue-ui.playing .partner-line p{-webkit-line-clamp:2;line-height:1.4}
body.single-level.cue-ui.cue-buddy-captured.playing .partner-dot{background:#a59183;box-shadow:none}
body.single-level.cue-ui.cue-buddy-captured.playing .partner-line{border-style:dashed}
body.single-level.cue-ui.cue-buddy-captured.playing .partner-line p{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
body.single-level.cue-ui.cue-buddy-captured.playing .partner-line>div::after{content:'搭档已退场';color:#907864;font-size:11px}
body.single-level.cue-ui.playing .signal{min-height:34px}

.cue-toast{position:absolute;z-index:2;top:8px;left:50%;transform:translateX(-50%);width:max-content;max-width:calc(100% - 18px);margin:0;padding:7px 11px;border:1px solid #d7bd8c;border-radius:10px;background:#fff9e9f5;color:#725233;box-shadow:0 2px 7px #69492912;font-size:11px;font-weight:600;line-height:1.45;text-align:center;overflow-wrap:anywhere;pointer-events:none;animation:cue-appear .18s ease-out}
.cue-toast[data-kind="blocked-gap"],.cue-toast[data-kind="warning"]{border-color:#ce9e70;background:#fff0d6f7;color:#895431}
.cue-toast[data-kind="error"]{border-color:#be8270;background:#fff4eaf7;color:#8d4939;font-size:11px;font-weight:500;max-height:42%;overflow:auto;pointer-events:auto}
.cue-toast[data-kind="floor-intro"]{border-color:#b78551;background:#fff4dff7;color:#744e2f}
/* Results live below the kitchen so its real-position actor performance stays
   visible. Immediate next/retry controls remain in the same lobby flow. */
body.single-level .lobby>#overlay{position:relative;inset:auto;z-index:auto;display:block;background:transparent;pointer-events:none;margin:0 0 10px;padding:0}
body.single-level .lobby>#overlay .result-card{width:100%;max-width:none;padding:9px 12px;border-radius:12px;box-shadow:0 3px 0 #ccb28b4d;text-align:center;transform:none;animation:none}
body.single-level .lobby>#overlay .result-card::before{content:none;display:none}
body.single-level .lobby>#overlay .result-card h2{margin:2px 0 4px;font-size:22px}
body.single-level .lobby>#overlay .result-card>p:not(.eyebrow){margin:4px 0;font-size:11px;line-height:1.45}
body.single-level.campaign.finished .stage{width:min(100%,calc((100svh - 385px)*16/18 + 10px))}
body.single-level.finished .lobby{display:flex;flex-direction:column;gap:8px}
body.single-level.finished .lobby>*{order:3}
body.single-level.finished .lobby>#overlay{order:0;margin:0}
body.single-level.finished .lobby>#next-level{order:1;margin:0}
body.single-level.finished .lobby>#start-play{order:2;margin:0}
@keyframes cue-appear{from{opacity:0;transform:translate(-50%,3px)}to{opacity:1;transform:translate(-50%,0)}}

/* Space removed above the board goes back to the kitchen. Open advice/input
   areas still reserve room rather than pushing the touch controls offscreen. */
body.single-level.cue-ui.playing{--cue-reserve:240px}
body.single-level.cue-ui.playing.show-help{--cue-reserve:326px}
body.single-level.cue-ui.playing:has(.command-tools[open]){--cue-reserve:350px}
body.single-level.cue-ui.playing.show-help:has(.command-tools[open]){--cue-reserve:436px}
body.single-level.cue-ui.playing.practicing{--cue-reserve:310px}
body.single-level.cue-ui.playing.warming{--cue-reserve:335px}
body.single-level.cue-ui.playing .stage{width:min(100%,calc((100svh - var(--cue-reserve))*16/18 + 10px))}
body.single-level.cue-ui.playing.prepared .stage{width:min(100%,calc((100svh - 390px)*16/18 + 10px))}
@media (pointer:coarse),(max-width:600px){
  body.single-level.cue-ui.playing .control-note span,
  body.single-level.cue-ui.playing .interact span{display:none}
}
@media(max-width:340px){
  body.single-level.cue-ui.playing .heading{gap:12px}
  .cue-level{font-size:14px}.cue-score{font-size:14px;gap:4px}
  .cue-toast{font-size:10px;padding:6px 8px}
}
@media(prefers-reduced-motion:reduce){
  .cue-toast{animation:none}
  body.single-level.cue-ui.playing .interact{transition:none}
}

/* The result already names the completed level. Give its next/retry controls
   the space occupied by the duplicate chapter title and level navigation. */
body.single-level.finished .campaign-panel{display:none!important}

/* Level selection remains interactive; the repeated chapter heading is omitted. */
body.single-level .chapter-heading{display:none!important}
