main{display:block;max-width:1200px}.top{max-width:1200px}.shift{margin-bottom:12px}.coop-bar{display:flex;align-items:center;flex-wrap:wrap;gap:10px;background:#fffdf0;padding:12px;border:2px solid #283a8c55;border-radius:13px;margin-bottom:16px;font-size:13px}.coop-bar input{max-width:170px;padding:8px;border:1px solid #283a8c;border-radius:6px}.coop-bar button{font-size:13px;padding:8px 10px}#network-status{flex-basis:100%;font-weight:bold;color:#283a8c}.restaurant{background:#fff9e5;border:3px solid var(--ink);border-radius:20px;overflow:hidden;box-shadow:0 6px #283a8c55}.room-heading{padding:14px 18px;display:flex;align-items:center;justify-content:space-between;gap:12px}.room-heading h2{font:italic bold 25px Georgia,serif;margin:0 0 4px}.room-heading p{font-size:13px;margin:0}.room-heading button{font-size:12px;padding:7px}.ticket-queue{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;padding:0 16px 15px;min-height:107px}.order-ticket{text-align:left;font-size:12px;border:1.5px dashed #988f75;border-top:5px solid #cc5c52;box-shadow:2px 3px #d8cfb6;border-radius:5px;display:grid;grid-template-columns:48px 1fr;gap:4px;padding:8px;background:#fffdf0}.order-ticket svg{width:48px;height:43px;grid-row:1/3}.order-ticket strong{font-size:13px}.order-ticket small{font-size:11px;display:block}.order-ticket[aria-pressed=true]{background:#ffe9a2;border-style:solid}.order-ticket:disabled{opacity:.7}.restaurant-scene{height:auto;aspect-ratio:14/9;max-height:620px;position:relative;isolation:isolate;overflow:hidden;background:repeating-conic-gradient(#f4e2bb 0% 25%,#fff0d0 0% 50%) 0 0/14.2857% 22.2222%;border-block:5px solid #283a8c;outline-offset:-6px!important}.kitchen-banner{position:absolute;top:1%;left:0;right:0;text-align:center;font-size:15px;letter-spacing:2px;font-weight:bold;color:#283a8c}.kitchen-banner span{font-weight:normal;letter-spacing:0;font-size:11px;margin-left:10px}.prep-station{position:absolute;width:13%;height:13%;transform:translate(-50%,-50%);border:3px solid #283a8c;border-radius:10px;background:#fff7df;box-shadow:0 8px #283a8c55,0 11px #283a8c;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:clamp(11px,1.5vw,17px);font-weight:bold;z-index:2}.prep-station span{font-size:23px}.chef{position:absolute;transform:translate(-50%,-65%);width:7%;min-width:32px;text-align:center;transition:left var(--move-ms,200ms) linear,top var(--move-ms,200ms) linear;z-index:8;pointer-events:none}.chef-body{font-size:clamp(22px,4.5vw,48px);line-height:1.1;filter:drop-shadow(0 3px 1px #283a8c55)}.chef-name{display:block;font-size:11px;white-space:nowrap;background:var(--chef-color);color:#203a35;border:2px solid #283a8c;border-radius:6px;padding:1px 5px;width:max-content;max-width:110px;overflow:hidden;text-overflow:ellipsis;margin:auto}.chef[data-me=true] .chef-name{outline:3px solid #f4c755;outline-offset:2px}.chef-status{font-size:11px;display:block;white-space:nowrap;background:#fffbe5;border-radius:4px;margin:3px -15px 0;font-weight:bold}.held-plate{position:absolute;right:-25%;top:19%;width:70%;background:white;border:2px solid #283a8c55;border-radius:50%;box-shadow:0 2px #283a8c}.held-plate canvas{display:block;width:100%}.dining-table{position:absolute;width:17%;height:14%;transform:translate(-50%,-30%);border:3px solid #76694c;border-radius:45%;background:repeating-conic-gradient(#e7a6a0 0% 25%,#fff1da 0% 50%) 0 0/25px 25px;box-shadow:0 9px #a87556,0 12px #6b5e48;z-index:4;text-align:center}.table-meal{width:54%;height:83%;background:white;border:3px double #283a8c55;border-radius:50%}.table-name{display:block;font-size:11px;font-weight:bold;background:#fffbe8;border:1px solid #84765a;border-radius:5px;padding:1px;width:max-content;max-width:100%;margin:-4px auto 0}.customer{position:absolute;transform:translate(-50%,-86%);width:12%;text-align:center;z-index:3;pointer-events:none}.customer .character{width:65%;height:auto;display:block;margin:auto}.order-bubble{background:#fffdf0;border:1.5px solid #283a8c;border-radius:10px 10px 3px 10px;font-size:11px;line-height:1.25;padding:5px;margin:auto -10%;width:120%;box-shadow:1px 2px #a3917544}.order-bubble svg{width:28px;height:23px;vertical-align:middle}.customer[data-mood=angry] .order-bubble{background:#ffd8c9}.customer[data-mood=impatient] .order-bubble{background:#fff0bd}.customer[data-mood=happy] .order-bubble{background:#d9f0c4}.customer.arriving{animation:diner-arrive 2.4s both}.customer.leaving{animation:diner-leave 2.4s both}.customer.arriving .character,.customer.leaving .character{animation:diner-step .3s alternate infinite}.customer.eating .character{animation:diner-step .4s alternate 4}.entrance{position:absolute;bottom:3%;left:2%;font-size:12px;color:#8d734d;font-weight:bold}.room-footer{display:flex;justify-content:space-between;gap:10px;padding:13px 16px;font-size:13px}#kitchen-notice{margin:2px 10px 10px;min-height:23px}.is-paused .customer,.is-paused .customer *{animation-play-state:paused!important}#prep-dialog{width:min(1040px,calc(100% - 20px));max-height:95dvh;overflow:auto;border:3px solid var(--ink);border-radius:20px;background:#fbf6ea;color:var(--ink);padding:18px}#prep-dialog::backdrop{background:#283a8ca8;backdrop-filter:blur(3px)}.prep-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px}.prep-heading button{font-size:12px}.service{grid-template-columns:230px minmax(260px,1fr);gap:20px}.dining-room,.practice{display:none}.plate{max-width:480px;margin:auto}.board-head .room-jump{display:none}.guide{margin-top:24px}.seated-chair{display:none}.customer.waiting .seated-chair,.customer.eating .seated-chair{display:block}.customer.waiting .character,.customer.eating .character{clip-path:inset(0 0 13% 0)}
@keyframes diner-arrive{from{translate:-900px 130px;opacity:0}20%{opacity:1}80%{translate:0 130px}to{translate:0 0}}@keyframes diner-leave{from{translate:0 0}20%{translate:0 120px}to{translate:-900px 120px;opacity:0}}@keyframes diner-step{to{rotate:3deg;translate:0 -3px}}
@media(max-width:680px){main{padding:12px 10px 28px}.brand h1{font-size:26px}.top{padding:13px 10px}.bank{max-width:86px}.room-heading{padding:12px 10px}.room-heading h2{font-size:20px}.room-heading p{font-size:11px}.ticket-queue{grid-template-columns:repeat(2,minmax(0,1fr));padding:0 10px 12px;gap:8px}.order-ticket{min-height:74px}.restaurant-scene{aspect-ratio:14/12}.kitchen-banner{font-size:11px;letter-spacing:1px}.kitchen-banner span{display:none}.prep-station{width:18%;font-size:11px;border-width:2px;height:11%}.prep-station span{font-size:18px}.chef{width:10%}.chef-body{font-size:30px}.chef-name{font-size:11px;max-width:70px;border-width:1px}.chef-status{font-size:11px;margin-inline:-9px}.dining-table{width:20%;height:10%;border-width:2px}.table-name{font-size:11px}.customer{width:18%}.customer .character{width:65%}.order-bubble{font-size:11px;padding:3px;width:110%;margin-inline:-5%}.order-bubble svg{width:19px;height:17px}.room-footer{flex-direction:column;font-size:12px;padding:11px}.entrance{font-size:11px}.service{grid-template-columns:1fr;gap:12px}#prep-dialog{padding:12px;max-height:96dvh}.ticket{display:grid;grid-template-columns:90px 1fr;gap:0 10px;padding:9px 12px 15px}.ticket .reference{grid-column:1;grid-row:1/5;align-self:center}.ticket h2,.ticket ul,.ticket .order-label{grid-column:2}.ticket h2{font-size:20px}.ticket ul{font-size:11px;margin:3px 0}.ticket hr{display:none}.board{padding:10px}.palette{gap:10px;margin:13px 0}.size{margin:10px 0}.helper{font-size:11px}.prep-heading{font-size:13px;align-items:center}.prep-heading button{max-width:160px;font-size:11px}.coop-bar{gap:8px}.coop-bar input{max-width:128px;font-size:12px}}
@media(prefers-reduced-motion:reduce){.chef,.customer,.customer *{transition:none!important;animation:none!important}.customer.arriving .order-bubble:before{content:'Arriving · '}.customer.leaving{opacity:.5}}

#ingredient-guide{position:absolute;inset:0;opacity:.24;pointer-events:none;mix-blend-mode:multiply}.guide-toggle{display:block;text-align:center;font-size:12px;margin-top:9px}#last-dish{font-size:13px;margin:3px 15px 12px;padding:10px 14px;background:#e0efcf;border:1px solid #94ae7b;border-radius:9px}

.coop-bar{position:relative;padding:9px 13px;min-height:43px;gap:16px}.coop-bar #network-status{flex:1;font-size:12px}.friend-controls{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding-top:12px}.friend-controls #join-requests{flex-basis:100%}#friend-options summary{cursor:pointer;font-weight:bold}#friend-options[open]{width:100%}.chef-body svg{width:100%;max-height:76px;display:block}.chef-body{font-size:initial}.chef{width:56px}.chef-status{max-width:104px;margin-inline:-24px}.prep-station{width:13%;height:13%}
@media(min-width:900px){.top{padding:10px 24px}.brand h1{font-size:34px}.brand p{font-size:11px}.awning{height:18px}main{padding-top:9px}.shift{margin-bottom:8px;font-size:12px}.shift strong{font-size:15px}.coop-bar{margin-bottom:10px}.room-heading{padding:10px 16px}.room-heading h2{font-size:22px}.ticket-queue{min-height:76px;padding-bottom:10px}.order-ticket{padding:5px 9px}.restaurant-scene{height:350px;aspect-ratio:auto;max-height:none}.kitchen-banner{font-size:12px}.prep-station{height:38px;font-size:11px}.prep-station span{font-size:18px;position:absolute;left:13px}.customer{width:110px}.customer .character{width:66px}.order-bubble{font-size:11px;width:130px;margin-inline:-10px}.dining-table{width:150px;height:48px}.chef{width:46px}.chef-body svg{height:61px}.chef-name{font-size:11px}.chef-status{font-size:11px}.room-footer{padding:10px 16px}.guide{margin-top:18px}}
@media(max-width:680px){.coop-bar #network-status{font-size:11px}.chef{width:35px}.chef-body svg{height:48px}.chef-status{margin-inline:-15px;max-width:70px}.chef-name{max-width:65px}.prep-station{width:18%;height:11%}}
#mcw-audio-bar{position:static!important;inset:auto!important;z-index:auto!important;flex-shrink:0;align-self:center}
@media(max-width:680px){
.top{padding:9px 10px}.brand h1{font-size:25px}.brand p{font-size:11px}.bank{font-size:11px;max-width:80px}.bank strong{font-size:19px}.awning{height:17px}.shift{font-size:11px;margin:0 0 8px}.shift strong{font-size:13px}.shift p:nth-child(2){display:none}.shift p:first-child{font-size:0}.shift p:first-child strong{font-size:13px}.shift p:first-child br{display:none}main{padding-top:9px;padding-bottom:125px}.coop-bar{padding:7px 10px;margin-bottom:10px;gap:9px}.coop-bar #network-status{font-size:11px}.room-heading{padding:10px}.room-heading h2{font-size:18px}.room-heading p{font-size:11px}.room-heading button{font-size:11px;padding:6px;max-width:92px}.ticket-queue{display:flex;overflow-x:auto;min-height:83px;padding:0 10px 11px;scroll-snap-type:x proximity}.order-ticket{flex:0 0 164px;scroll-snap-align:start;min-height:65px;font-size:11px;grid-template-columns:38px 1fr;padding:5px}.order-ticket strong{font-size:11px}.order-ticket svg{width:38px;height:37px}.restaurant-scene{aspect-ratio:14/11}.room-footer{padding:9px 10px;gap:4px}.restaurant{margin-bottom:14px}#kitchen-notice{font-size:12px}#last-dish{font-size:11px}
}
.level-progress{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:0 16px 7px;font-size:12px}.level-progress strong{margin-right:auto}.level-progress select{font-size:12px;padding:5px;border:1px solid #283a8c;border-radius:6px;background:#fffdf0;color:#283a8c}.level-progress label{display:flex;gap:5px;align-items:center;font-size:11px}.level-progress button{font-size:11px;padding:6px 10px}.level-help{padding:0 16px;font-size:11px;line-height:1.35;margin:0 0 10px;color:#283a8c;min-height:15px}.floor-obstacle,.puddle,.cleaner{position:absolute;transform:translate(-50%,-50%);width:7.1428%;height:11.1111%;pointer-events:none}.floor-obstacle{z-index:3}.floor-obstacle svg{width:100%;height:100%;filter:drop-shadow(0 4px 0 #37513c33)}.puddle{width:8%;height:7%;background:#87c9d6aa;border:2px solid #6fa8b855;border-radius:50%;box-shadow:inset 4px 3px #d9f3f077;z-index:1}.cleaner{z-index:6;transition:left .5s linear}.cleaner svg{width:100%;height:100%}.patience{position:relative;z-index:2;width:62%;height:7px;background:#eadccc;border:1px solid #826d50;border-radius:5px;margin:3px auto 0}.patience i{display:block;height:100%;background:#6ca271;border-radius:4px}.patience span{position:absolute;right:-26px;top:-5px;font-size:11px;font-weight:bold;background:#fff7dd;border-radius:3px;padding:0 2px}.customer[data-mood=angry] .patience i{background:#d46b50}.chef-status:empty{display:none}#dash-toggle{font-size:11px;padding:7px 10px}.save-controls{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-top:16px;font-size:12px;color:#283a8c}.save-controls button{font-size:11px;padding:6px 10px}#reset-confirm{padding:14px;background:#fff6d4;border:2px solid #aa905b;border-radius:12px;margin-top:10px;font-size:13px}#reset-confirm p{margin-bottom:9px}#reset-confirm button{font-size:12px;padding:7px}#open-kitchens{display:flex;flex-wrap:wrap;gap:8px;width:100%;font-size:12px}#open-kitchens button{background:#dcebcf}
body[data-level=garden]{background:#e8edd3}body[data-level=garden] .restaurant-scene{background:repeating-conic-gradient(#bed391 0% 25%,#cddd9e 0% 50%) 0 0/14.2857% 22.2222%;border-color:#779959}body[data-level=garden] .prep-station{background:#efd7a7;border-color:#6e784d;box-shadow:0 8px #a99062,0 11px #576647}body[data-level=garden] .dining-table{background:repeating-conic-gradient(#a9c5a0 0% 25%,#fff1da 0% 50%) 0 0/25px 25px}body[data-level=garden] .kitchen-banner{color:#526f3c}body[data-level=garden] .entrance{color:#537647}
body[data-level=space]{background:#dae0ef}body[data-level=space] .restaurant-scene{background:radial-gradient(circle at 15% 28%,#d7e6ff 0 1px,transparent 2px),radial-gradient(circle at 76% 62%,#d7e6ff 0 1px,transparent 2px),repeating-conic-gradient(#3e5074 0% 25%,#445779 0% 50%) 0 0/14.2857% 22.2222%;border-color:#677faf}body[data-level=space] .prep-station{background:#dce9f1;border-color:#537289;box-shadow:0 8px #9cacc2,0 11px #3a5474}body[data-level=space] .kitchen-banner{color:#d9e7fa}body[data-level=space] .dining-table{background:repeating-conic-gradient(#b3aed1 0% 25%,#e3e7f6 0% 50%) 0 0/25px 25px;border-color:#7786aa}body[data-level=space] .entrance{color:#bbcde6}
@media(min-width:900px){.restaurant-scene{height:330px}.level-help{margin-bottom:8px}.room-heading{padding-bottom:7px}}
@media(max-width:680px){.level-progress{padding:0 10px 6px;font-size:11px;gap:6px}.level-progress select{font-size:11px;padding:3px}.level-progress label{font-size:0}.level-progress button{font-size:11px;padding:5px 7px}.level-help{padding:0 10px;font-size:11px;line-height:1.25;margin-bottom:7px}.restaurant-scene{aspect-ratio:14/10}.chef{width:31px}.chef-body svg{height:42px}.chef-name{font-size:11px}.chef-status{font-size:11px;margin-inline:-11px}.order-bubble{font-size:11px}.customer .character{width:57%}.patience span{font-size:11px;right:-22px}#kitchen-notice:not(:empty){position:fixed;z-index:29;bottom:112px;left:12px;right:12px;margin:0;border:1px solid #283a8c;border-radius:9px;background:#fff9eaf5;box-shadow:0 2px 9px #283a8c30;padding:8px;font-size:11px;pointer-events:none}body:has(#prep-dialog[open]) #kitchen-notice{visibility:hidden}.save-controls{font-size:11px;gap:8px}.save-controls button{white-space:nowrap;font-size:11px}}

.serve-feedback{position:absolute;left:50%;top:-16px;z-index:12;white-space:nowrap;opacity:0;background:#fff6cb;color:#3d603e;border:1px solid #7a965d;border-radius:12px;padding:3px 9px;font-size:12px;font-weight:bold;pointer-events:none;transform:translateX(-50%)}
.serve-feedback:not([hidden]){animation:diner-served 3.2s ease-out both}.dining-table[data-phase=eating] .table-meal{animation:diner-plate .5s cubic-bezier(.2,.8,.2,1.4) both}.chef[data-carrying=true] .held-plate{animation:diner-plate .35s ease-out both}.chef[data-mode=drawing] .chef-body{animation:diner-cook .8s ease-in-out infinite alternate}.customer[data-mood=happy] .order-bubble{animation:diner-delight .45s ease-out}.customer[data-mood=impatient] .order-bubble{animation:diner-wiggle .5s ease-in-out}.customer[data-mood=angry] .order-bubble{animation:diner-wiggle .45s ease-in-out 2}.chef .chef-body{transform-origin:50% 85%}
@keyframes diner-served{0%{opacity:0;translate:0 8px;scale:.8}15%,65%{opacity:1;translate:0 -8px;scale:1}100%{opacity:0;translate:0 -28px}}
@keyframes diner-plate{0%{scale:.65;rotate:-8deg}70%{scale:1.12;rotate:3deg}100%{scale:1;rotate:0deg}}
@keyframes diner-cook{to{rotate:5deg;translate:0 -2px}}@keyframes diner-delight{45%{scale:1.12;rotate:2deg}}@keyframes diner-wiggle{25%,75%{rotate:-3deg}50%{rotate:3deg}}
@media(max-width:680px){
main{padding-bottom:155px}.top{padding:8px 10px}.brand p{display:none}.awning{height:12px}.coop-bar{margin-bottom:8px}.room-heading{padding:8px 10px 6px}.room-heading p{display:none}.level-help{display:none}.level-progress{padding-bottom:8px}.level-progress select{min-height:36px;min-width:74px;font-size:12px}.ticket-queue{min-height:76px;padding-bottom:10px;scrollbar-width:none}.ticket-queue::-webkit-scrollbar{display:none}.restaurant-scene{aspect-ratio:14/11}.customer{width:19%}.customer .character{width:67%}.order-bubble{font-size:11px}.customer.waiting .order-bubble span{display:none}.customer.waiting .order-bubble{width:32px;margin:0 auto;padding:1px}.customer[data-mood=angry] .order-bubble:after{content:'!';font-size:12px;color:#a53c2d;font-weight:bold}.table-name{font-size:11px}.serve-feedback{font-size:11px;padding:3px 7px;top:-20px}.room-footer{scroll-margin-bottom:150px}#kitchen-notice:not(:empty){top:calc(10px + env(safe-area-inset-top,0px));bottom:auto;z-index:35;left:12px;right:12px;padding:10px 12px;font-size:12px}.save-controls{flex-wrap:wrap}.save-controls>div{display:flex;gap:8px;flex-wrap:wrap}.save-controls button{min-height:40px}.tools button{min-height:40px}.swatch{width:36px;height:36px;min-width:36px}.palette{gap:9px}
}
@media(prefers-reduced-motion:reduce){.chef,.chef *,.customer,.customer *,.dining-table *,.cleaner{animation:none!important;transition:none!important}.serve-feedback:not([hidden]){opacity:1}.is-paused .chef *{animation-play-state:paused!important}}

.is-paused .chef *{animation-play-state:paused!important}

.chef .chef-body{transition:transform 100ms ease-out}.chef-face{transition:transform 100ms ease-out}.chef[data-facing=left] .chef-face{transform:translateX(-4px)}.chef[data-facing=right] .chef-face{transform:translateX(4px)}.chef[data-facing=up] .chef-face,.chef[data-facing=up] .chef-apron{visibility:hidden}.chef[data-facing=left] .chef-body svg,.chef[data-facing=right] .chef-body svg{transform:scaleX(.86)}.chef[data-moving=true] .foot-left{animation:diner-foot 200ms linear infinite}.chef[data-moving=true] .foot-right{animation:diner-foot 200ms linear infinite reverse}.chef[data-dashing=true] .chef-body{transform:skewX(-10deg) translateX(3px)}.chef[data-dashing=true][data-facing=left] .chef-body{transform:skewX(10deg) translateX(-3px)}.chef[data-dashing=true][data-facing=up] .chef-body,.chef[data-dashing=true][data-facing=down] .chef-body{transform:scaleY(.93)}.chef:before{content:'';position:absolute;width:34px;height:9px;top:56%;left:50%;background:linear-gradient(90deg,transparent,#fff3bbaa);border-radius:50%;transform-origin:right center;transform:translateX(-100%) rotate(var(--trail-angle,0deg));opacity:0;z-index:-1}.chef[data-facing=left]{--trail-angle:180deg}.chef[data-facing=up]{--trail-angle:90deg}.chef[data-facing=down]{--trail-angle:-90deg}.chef[data-dashing=true]:before{opacity:1}.chef[data-dashing=true] .foot-left,.chef[data-dashing=true] .foot-right{animation-duration:120ms}#dash-toggle{background:linear-gradient(90deg,#dce8c4 var(--dash-ready,100%),#e4e3df var(--dash-ready,100%));font-variant-numeric:tabular-nums}#dash-toggle:disabled{opacity:1;color:#697263;cursor:default}
@keyframes diner-foot{0%,100%{transform:translateY(0)}25%{transform:translateY(-3px)}75%{transform:translateY(2px)}}
@media(prefers-reduced-motion:reduce){.chef:before{display:none}.chef[data-dashing=true] .chef-body{transform:none}.chef .chef-body,.chef-face{transition:none!important}}

/* The floor gets the remaining viewport; secondary controls live in the menu. */
html,body{height:100%;overscroll-behavior:none}body{height:100dvh;display:flex;flex-direction:column;overflow:hidden}header{flex:none}.top{padding:7px 12px;gap:10px;min-height:53px}.brand h1{font-size:26px}.brand p,.awning{display:none}.bank{font-size:15px;white-space:nowrap}.bank strong{display:inline;font-size:18px}.back{font-size:12px}.top #open-menu{padding:5px 11px;font-size:22px;box-shadow:none}main{width:100%;max-width:1120px;min-height:0;flex:1;padding:6px 10px 10px;display:flex}.restaurant{position:relative;flex:1;min-height:0;display:grid;grid-template-columns:1fr auto;grid-template-rows:34px 72px minmax(0,1fr) 28px;margin:0;border-radius:15px;box-shadow:none}.room-heading{grid-area:1/1/2/2;padding:5px 10px;min-width:0}.room-heading h2{font-size:18px;margin:0}.level-progress{grid-area:1/2/2/3;padding:5px 10px;gap:6px;margin:0;font-size:11px}.level-progress strong{font-size:11px}.ticket-queue{grid-area:2/1/3/3;display:flex;overflow-x:auto;gap:8px;min-height:0;padding:3px 10px 8px;scroll-snap-type:x proximity}.order-ticket{flex:0 0 174px;min-height:0;padding:4px 7px;font-size:11px;grid-template-columns:36px 1fr;gap:1px 5px;scroll-snap-align:start}.order-ticket strong{font-size:11px}.order-ticket svg{width:36px;height:36px}.restaurant-scene{grid-area:3/1/4/3;width:100%;height:100%;min-height:0;max-height:none;aspect-ratio:auto;border-block-width:3px}.room-footer{grid-area:4/1/5/3;display:block;padding:5px 10px;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#context-prompt{display:none}#kitchen-notice{position:absolute;left:10px;right:10px;bottom:106px;z-index:15;pointer-events:none;font-size:12px;margin:0;min-height:0;background:#fffbeaeb;border-radius:8px;box-shadow:0 2px 8px #304b3933}#kitchen-notice:empty{display:none}#kitchen-notice:not(:empty){padding:7px 10px}#kitchen-menu{width:min(520px,calc(100% - 20px));max-height:90dvh;overflow:auto;background:var(--paper);color:var(--ink);border:3px solid var(--ink);border-radius:18px;padding:16px}#kitchen-menu::backdrop{background:#283a8cb8}.menu-heading{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px}.menu-heading h2{font-size:22px;margin:0}.menu-heading button{font-size:12px}.menu-heading+#menu-content{display:flex;flex-direction:column;gap:14px}#menu-content .shift{display:block;margin:0}#menu-content .shift p{font-size:12px}#menu-content .coop-bar{margin:0}#menu-content .guide{margin:0}#menu-content #mcw-audio-bar{align-self:start}#menu-content label{font-size:14px}#menu-content #room-status{margin:0;font-size:12px}#menu-content #level-help{padding:0;margin:0}.customer{width:17%;max-width:110px}.customer .character{width:65%;max-width:70px}.dining-table{width:20%;max-width:165px;height:11%}.order-bubble{font-size:11px}.prep-station{width:18%;height:11%}.kitchen-banner{font-size:11px;letter-spacing:1px}.chef{width:40px}.chef-body svg{height:56px}.table-name{font-size:11px}.chef-status{font-size:11px}
@media(max-width:430px){.top{gap:7px;padding-inline:10px}.brand h1{font-size:22px}.bank{font-size:12px}.bank strong{font-size:16px}main{padding:4px 6px 6px}.room-heading h2{font-size:16px}.level-progress{padding-inline:6px}.level-progress strong{font-size:11px}.order-bubble span{display:none}.order-bubble{width:42px;margin:auto;border-radius:10px}.order-bubble svg{width:27px;height:24px}.customer .character{width:85%}.table-name{font-size:11px}.restaurant{grid-template-rows:32px 70px minmax(0,1fr) 26px}}
@media(max-height:500px) and (orientation:landscape){.top{min-height:40px;padding-block:3px}.brand h1{font-size:22px}.restaurant{grid-template-rows:28px minmax(0,1fr) 24px;grid-template-columns:125px minmax(0,1fr)}.room-heading{grid-area:1/1/2/2}.level-progress{grid-area:1/2/2/3;font-size:11px}.ticket-queue{grid-area:2/1/3/2;flex-direction:column;padding:5px;overflow-y:auto}.order-ticket{flex-basis:58px}.restaurant-scene{grid-area:2/2/3/3}.room-footer{grid-area:3/1/4/3}.chef{width:30px}.chef-body svg{height:42px}.chef-name,.chef-status{font-size:11px}.kitchen-banner{font-size:11px}.prep-station span{font-size:15px}.order-bubble{display:none}#kitchen-notice{bottom:82px;left:135px;right:10px}.customer .character{max-width:45px}.table-name{font-size:11px}}
@media(max-height:500px) and (orientation:landscape){.ticket-queue{align-items:stretch}.order-ticket{flex:0 0 auto;min-height:88px;grid-template-columns:28px minmax(0,1fr);grid-template-rows:auto auto;align-content:start;column-gap:4px;row-gap:3px;padding:6px 4px}.order-ticket svg{width:28px;height:28px}.order-ticket strong,.order-ticket>span{min-width:0;white-space:normal;overflow-wrap:anywhere;line-height:1.3}.order-ticket strong{font-size:11px}.order-ticket>span{font-size:11px}}

/* Floating floor input has no layout footprint or idle movement marker. */
.movement-controls{position:absolute;inset:0;z-index:10;pointer-events:none}
#diner-stick-zone{position:absolute;inset:0;pointer-events:auto;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
#diner-stick{position:absolute;width:96px;height:96px;margin:-48px;border:2px solid #283a8c88;border-radius:50%;background:#e9f5e255;pointer-events:none}
#diner-stick i{position:absolute;left:50%;top:50%;width:44px;height:44px;margin:-22px;border-radius:50%;background:#fff8e5dd;border:3px solid #283a8c;box-shadow:0 3px #283a8c33}
.chef-actions{position:absolute;right:12px;bottom:max(12px,env(safe-area-inset-bottom,0px));display:flex;align-items:end;gap:10px;pointer-events:none}
.chef-actions button{pointer-events:auto;touch-action:none;width:66px;height:66px;border-radius:50%;padding:5px;font-size:12px;line-height:1.15;box-shadow:0 3px var(--ink);user-select:none;-webkit-user-select:none}
.chef-actions #interact{width:76px;height:76px;background:#f9cb57;font-size:13px}
body:has(dialog[open]) .movement-controls{visibility:hidden}
@media(max-height:500px) and (orientation:landscape){.chef-actions{right:4px;bottom:6px;gap:8px;flex-direction:column}.chef-actions button,.chef-actions #interact{width:48px;height:48px;font-size:11px;padding:3px}#diner-stick{width:80px;height:80px;margin:-40px}}

/* Shift rewards stay at their table; the invitation uses the ticket rail. */
#level-goal{display:flex;align-items:center;gap:6px;min-width:0}
.dish-stamps{display:flex;gap:3px}
.dish-stamps i{display:grid;place-items:center;width:19px;height:19px;border:1.5px solid #283a8c55;border-radius:50%;font-style:normal;font-size:13px;line-height:1;background:#fffdf0;color:#283a8c55}
.dish-stamps i[data-filled=true]{background:#f9cb57;border-color:#947331;color:#584725}
.stamp-count{font-size:11px;white-space:nowrap}.stamp-quality{font-size:11px;white-space:nowrap;color:#566b50}
#chapter-open{min-height:28px;padding:3px 7px;box-shadow:none;font-size:11px;background:#f9cb57}
#chapter-card{grid-area:2/1/3/3;display:grid;grid-template-columns:32px minmax(0,1fr) auto 44px;gap:6px;align-items:center;margin:1px 8px 7px;padding:4px 6px;background:#fff0b9;border:2px solid #b09046;border-radius:12px;min-width:0}
#chapter-portrait{height:48px;overflow:hidden}
#chapter-portrait svg{width:38px;height:48px;margin-left:-3px}
.chapter-copy{min-width:0;line-height:1.2}
#chapter-title{display:block;font-size:12px}
#chapter-line{font-size:11px;margin:3px 0 0;line-height:1.2}
#chapter-card button{min-height:44px;padding:4px 7px;font-size:11px;box-shadow:none}
#chapter-card #next-level{width:76px;background:#bce3d7}
#chapter-card #chapter-dismiss{width:44px;padding:0;font-size:24px;border:0;background:transparent}
.next-stop{outline:3px solid #e7b63d;outline-offset:4px;animation:diner-target 1.8s ease-in-out infinite}
@keyframes diner-target{50%{outline-offset:7px;outline-color:#f9dc87}}
.serve-feedback{width:122px;max-width:38vw;white-space:normal;text-align:center;padding:5px 6px;line-height:1.2;top:-26px}
.serve-feedback strong{display:block;font-size:14px;color:#6b5113}
.serve-feedback>span{display:block;font-size:11px;font-weight:normal;margin-top:2px}
@media(max-width:430px){.dish-stamps i{width:16px;height:16px;font-size:11px}.dish-stamps{gap:2px}#chapter-card{gap:4px;grid-template-columns:28px minmax(0,1fr) auto 44px;margin-inline:5px;padding-inline:4px}#chapter-title{font-size:11px}#chapter-line{font-size:11px}#chapter-card #next-level{width:68px;font-size:11px}}
@media(max-height:500px) and (orientation:landscape){#chapter-card{grid-area:2/1/3/2;grid-template-columns:minmax(0,1fr) 44px;align-self:start;margin:4px;gap:6px;padding:6px;max-height:100%;overflow:auto}#chapter-portrait{display:none}.chapter-copy{grid-column:1/-1}#chapter-title{font-size:12px}#chapter-line{font-size:11px}#chapter-card #next-level{width:auto;min-width:0}#chapter-card #chapter-dismiss{grid-column:2}.serve-feedback{width:105px;top:-24px}.serve-feedback strong{font-size:12px}.serve-feedback>span{font-size:11px}}
@media(prefers-reduced-motion:reduce){.next-stop{animation:none}.serve-feedback:not([hidden]){animation:none;opacity:1}}

.taste-check{width:100%;margin:0 0 8px;background:#fbf6ea;min-height:44px}
.taste-result{margin:0 0 10px;padding:10px 12px;border:2px solid #bc974e;border-radius:12px;background:#fff5d8;font-size:13px;line-height:1.4}
.taste-result[data-ready=true]{background:#fbf6ea;border-color:#283a8c}
.taste-result strong,.taste-result span{display:block}
.taste-result span{margin-top:4px}
/* Keep the next action and movement help visible together. */
.restaurant{grid-template-rows:34px 72px minmax(0,1fr) 44px}
.room-footer{white-space:normal;line-height:1.35;padding-block:5px}
.room-footer strong,#context-prompt{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#context-prompt{font-size:11px;font-weight:normal}
@media(max-width:430px){.restaurant{grid-template-rows:32px 70px minmax(0,1fr) 44px}}
@media(max-height:500px) and (orientation:landscape){.restaurant{grid-template-rows:28px minmax(0,1fr) 42px}}

.prep-patience{display:block;font-size:11px;line-height:1.4;margin-top:5px;color:#283a8c}
.prep-patience[data-urgent=true]{color:#9c2634;font-weight:bold}
.prep-heading{position:sticky;top:0;z-index:4;background:#fbf6ea;padding-block:8px}

/* ---------- ballpoint-pen theme (visual only) ---------- */
.diner-floor{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.restaurant-scene{background:#f6ecd6;border-block:3px solid #283a8c}
.restaurant-scene>.kitchen-banner{color:#283a8c;font-family:Caveat,"Chalkboard SE",cursive;font-size:clamp(14px,4.2vw,21px);letter-spacing:.5px;white-space:nowrap;top:.5%}
.restaurant-scene .kitchen-banner span{font-family:'Trebuchet MS',sans-serif}
.restaurant,.coop-bar{background:#fbf6ea;border-color:#283a8c;box-shadow:3px 5px 0 #283a8c2e;border-radius:18px 26px 16px 24px/24px 16px 26px 18px}
.brand h1,.room-heading h2,.ticket h2{font-family:Caveat,"Chalkboard SE",cursive;font-style:normal;letter-spacing:0}
.brand h1{font-size:clamp(36px,5vw,52px)}
.room-heading h2{font-size:30px}
header{background:#fbf6ea;border-bottom:2px solid #283a8c}
.awning{background:repeating-linear-gradient(90deg,#d8604f 0 40px,#fbf3df 40px 80px);border-bottom:2px solid #283a8c;border-radius:0 0 22px 18px/0 0 14px 10px;box-shadow:0 3px 0 #283a8c22}
.prep-station{background:#fffaf0;border:2px solid #283a8c;border-radius:12px 18px 10px 16px/16px 10px 18px 12px;box-shadow:2px 4px 0 #283a8c33;color:#283a8c;font-weight:700}
.prep-station span{display:block;line-height:0}
.ink-bowl{width:34px;height:26px}
.prep-station.next-stop{background:#fff1bd;animation:ink-nudge 1.6s ease-in-out infinite}
.dining-table{border:2px solid #283a8c;background:repeating-conic-gradient(#f3b7ad 0% 25%,#fbf3df 0% 50%) 50%/22px 22px;box-shadow:0 5px 0 #283a8c33}
.dining-table.next-stop{animation:ink-nudge 1.6s ease-in-out infinite}
.table-name{color:#283a8c;background:#fbf6ea;border:1px solid #283a8c66;border-radius:6px 9px 6px 8px}
.chef-body{filter:none}
.chef-body svg{transform-origin:50% 92%;animation:ink-breathe 2.8s ease-in-out infinite}
.chef[data-moving=true] .chef-body svg{animation:ink-walk .26s ease-in-out infinite alternate}
.chef-name{color:#283a8c;border:1.5px solid #283a8c;border-radius:8px 5px 9px 6px}
.chef[data-me=true] .chef-name{outline:2px dashed #283a8c;outline-offset:2px}
.chef-status{color:#283a8c;background:#fbf6eaee;border:1px solid #283a8c44}
.customer .character{transform-origin:50% 95%}
.customer.waiting .character,.customer.eating .character{animation:ink-breathe 3.1s ease-in-out infinite}
.customer[data-mood=impatient].waiting .character{animation:ink-fidget .9s ease-in-out infinite alternate}
.customer[data-mood=angry].waiting .character{animation:ink-fidget .45s ease-in-out infinite alternate}
.character .eye,.chef-body .eye{transform-box:fill-box;transform-origin:center;animation:ink-blink 4.3s infinite}
.customer:nth-child(2n) .eye{animation-delay:-1.7s}.customer:nth-child(3n) .eye{animation-delay:-2.9s}
.order-bubble{border:1.5px solid #283a8c!important;border-radius:14px 18px 16px 4px/16px 14px 18px 4px!important;color:#283a8c}
.order-ticket{border:1.5px dashed #283a8c88;border-top:4px solid #c8423a;background:#fffaf0;box-shadow:2px 3px 0 #283a8c22;color:#283a8c}
.order-ticket[aria-pressed=true]{background:#fff1bd;border-style:solid}
.floor-obstacle svg{filter:none}
.puddle{background:#a9d2e3aa;border:1.5px solid #283a8c88;border-radius:48% 52% 45% 55%/55% 45% 52% 48%;box-shadow:inset 3px 2px #ffffff88}
.cleaner svg{animation:ink-walk .3s ease-in-out infinite alternate}
.entrance{color:#283a8c;font-family:Caveat,"Chalkboard SE",cursive;font-size:16px;z-index:1}
.room-footer{color:#283a8c}
.board,.ticket,.result,.bubble{border-color:#283a8c}
.board{box-shadow:0 5px 0 #283a8c2e;background:#fffaf0}
.plate{border-color:#283a8c55}
dialog{border:2px solid #283a8c;border-radius:18px 24px 16px 22px;animation:ink-sheet .45s cubic-bezier(.34,1.56,.64,1)}
dialog::backdrop{background:#283a8c33}
@keyframes ink-sheet{from{opacity:0;transform:translateY(20px) rotate(-1deg) scale(.95)}to{opacity:1;transform:none}}
@keyframes ink-breathe{0%,100%{scale:1 1}50%{scale:.985 1.025}}
@keyframes ink-walk{from{scale:1.04 .95;rotate:-2deg}to{scale:.97 1.04;rotate:2deg}}
@keyframes ink-fidget{from{rotate:-2deg}to{rotate:2deg}}
@keyframes ink-blink{0%,93%,100%{transform:scaleY(1)}95%{transform:scaleY(.1)}}
@keyframes ink-nudge{0%,100%{scale:1}50%{scale:1.035}}
@media(prefers-reduced-motion:reduce){.chef-body svg,.customer .character,.character .eye,.chef-body .eye,.prep-station.next-stop,.dining-table.next-stop,.cleaner svg,dialog{animation:none!important}}
html.mcw-ink .swatch{border-radius:50%;border:2px solid #283a8c}
#prep-dialog,#kitchen-menu{background:#fbf6ea;color:#283a8c}
/* ink pass 2: palette leftovers, touch targets, contrast */
#prep-dialog::backdrop,#kitchen-menu::backdrop,dialog#prep-dialog::backdrop{background:#283a8c33;backdrop-filter:none}
#prep-dialog .prep-heading{background:#fbf6ea;color:#283a8c;border-bottom:1.5px dashed #283a8c44}
#kitchen-notice:not(:empty){border:1.5px solid #283a8c;background:#fbf6eaf5;color:#283a8c;box-shadow:2px 3px 0 #283a8c26;border-radius:12px 16px 10px 14px}
@media(max-width:760px){#kitchen-notice:not(:empty){top:calc(68px + env(safe-area-inset-top,0px))}}
.level-progress select{border:1.5px solid #283a8c;color:#283a8c;background:#fbf6ea;min-height:44px}
.dish-stamps i{border-color:#283a8c;color:#283a8c}
.dish-stamps i[data-filled=true]{background:#ffe7a3}
.back{display:inline-flex;align-items:center;min-height:44px;min-width:44px;padding:0 6px;color:#283a8c}
.swatch,html.mcw-ink .swatch{width:44px;height:44px;min-width:44px}
.tools button{min-height:44px;min-width:44px}
.chef-name{background:#fbf6ea!important;color:#283a8c;border-left:6px solid var(--chef-color)!important}
.chef[data-me=true] .chef-name{background:#fff1bd!important;font-weight:700}
@media(max-height:500px) and (orientation:landscape){.restaurant-scene>.kitchen-banner{font-size:12px;top:1px;left:8px;right:auto;letter-spacing:0;line-height:1.1}.prep-station{height:12%;font-size:11px}.ink-bowl{width:22px;height:16px}}
.tools button[aria-pressed=true]{background:#fff1bd;box-shadow:inset 0 0 0 2px #283a8c,0 3px 0 #283a8c}
.plate{border-color:#283a8c55;box-shadow:inset 0 0 0 8px #fbf6ea}
.taste-check{background:#fbf6ea;border-style:dashed}.taste-result{border-color:#283a8c;background:#fffaf0}
@media(max-height:500px) and (orientation:landscape){.restaurant-scene>.kitchen-banner{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;padding:0;border:0}}
@keyframes diner-arrive{from{translate:-900px 70px;opacity:0}20%{opacity:1}80%{translate:0 70px}to{translate:0 0}}
@keyframes diner-leave{from{translate:0 0}20%{translate:0 70px}to{translate:-900px 70px;opacity:0}}
.serve-feedback{top:calc(100% + 16px);bottom:auto;background:#fbf6ea;color:#283a8c;border:1.5px solid #283a8c;border-radius:12px 16px 10px 14px;box-shadow:2px 3px 0 #283a8c26}
.serve-feedback strong{color:#8a5a00}
.serve-feedback::before{content:"";position:absolute;left:50%;top:-7px;width:10px;height:10px;background:#fbf6ea;border-left:1.5px solid #283a8c;border-top:1.5px solid #283a8c;transform:translateX(-50%) rotate(45deg)}
@media(min-width:761px){#kitchen-notice:not(:empty){right:max(200px,22%)}}
/* short landscape: one strip for heading + tickets + goal so the floor gets the height */
@media(max-height:500px) and (orientation:landscape){
header .top{min-height:44px;padding:0 12px;gap:10px}.brand h1{font-size:21px}.brand p{display:none}
main{padding:4px 10px 0}
.restaurant{grid-template-columns:auto minmax(0,1fr) auto;grid-template-rows:46px minmax(0,1fr) 26px;height:calc(100dvh - 54px);min-height:300px}
.room-heading{grid-area:1/1/2/2;padding:0 6px 0 12px;align-self:center}.room-heading h2{font-size:20px;margin:0}.room-heading p{display:none}
.ticket-queue{grid-area:1/2/2/3;display:flex;flex-direction:row;align-items:center;overflow-x:auto;overflow-y:hidden;padding:3px 4px;gap:6px;min-height:0}
.ticket-queue .order-ticket{flex:0 0 auto;min-height:0;height:38px;grid-template-columns:24px auto;grid-template-rows:auto auto;padding:2px 8px 2px 4px;row-gap:0;border-top-width:3px}
.ticket-queue .order-ticket svg{width:24px;height:24px;grid-row:1/3;align-self:center}
.ticket-queue .order-ticket strong,.ticket-queue .order-ticket>span,.ticket-queue .order-ticket small{white-space:nowrap;font-size:11px;line-height:1.25}
.level-progress{grid-area:1/3/2/4;align-self:center;padding-right:10px}
.restaurant-scene{grid-area:2/1/3/4}
.room-footer{grid-area:3/1/4/4;display:flex;align-items:center;gap:10px;padding:0 12px;font-size:12px;white-space:nowrap;overflow:hidden}.room-footer>*{overflow:hidden;text-overflow:ellipsis}
#chapter-card{grid-area:2/1/3/4;justify-self:start;width:min(260px,42%);z-index:20;background:#fbf6ea}
.prep-station{height:15%;padding:0 4px;line-height:1.05;overflow:visible}
.table-meal{width:auto;height:88%;aspect-ratio:5/4}
}
@media(max-height:500px) and (orientation:landscape){.ticket-queue{scrollbar-width:none}.ticket-queue::-webkit-scrollbar{display:none}.restaurant{grid-template-rows:46px minmax(0,1fr) 24px}main{padding-top:2px}}
.size{min-height:44px}.size input[type=range]{height:44px;min-width:120px;margin:0}
.guide-toggle{display:flex!important;align-items:center;justify-content:center;gap:8px;min-height:44px;cursor:pointer}.guide-toggle input{width:22px;height:22px;accent-color:#283a8c;margin:0}
dialog{transition:opacity .18s ease-in,transform .18s ease-in,overlay .18s allow-discrete,display .18s allow-discrete}
dialog:not([open]){opacity:0;transform:scale(.95) translateY(10px)}
dialog::backdrop{transition:opacity .18s ease-in,overlay .18s allow-discrete,display .18s allow-discrete}
dialog:not([open])::backdrop{opacity:0}
@media(prefers-reduced-motion:reduce){dialog,dialog::backdrop{transition:none}}
@media(max-height:500px) and (orientation:landscape){#kitchen-notice:not(:empty){top:auto;bottom:30px;left:130px;right:72px;padding:4px 10px;font-size:12px;line-height:1.25}}

/* ---------- cozy redesign: patient guests, tap-to-walk, gentle "your move" ---------- */
.customer[data-timed=false] .order-bubble{background:#fffdf0!important;animation:none}
.customer[data-timed=false].waiting .character{animation:ink-breathe 3.1s ease-in-out infinite}
.customer[data-timed=false] .order-bubble:after{content:none!important}
.customer[data-timed=false] .patience{display:none}
.customer.chatting .order-bubble{animation:diner-delight .45s ease-out}

.walk-target{position:absolute;width:30px;height:16px;margin:-8px 0 0 -15px;border:2px dashed #283a8c;border-radius:50%;z-index:2;pointer-events:none;animation:walk-ping .9s ease-out both}
.walk-target[data-kind=station],.walk-target[data-kind=table]{display:none}
@keyframes walk-ping{0%{transform:scale(.3);opacity:0}40%{transform:scale(1.15);opacity:1}100%{transform:scale(1);opacity:.75}}

.your-move{position:absolute;z-index:14;transform:translate(-50%,calc(-100% - 34px));pointer-events:none;white-space:nowrap;font:700 15px/1.1 Caveat,"Chalkboard SE",cursive;font-size:19px;color:#283a8c;background:#fffaf0;border:1.5px solid #283a8c;border-radius:14px 18px 12px 16px;padding:4px 11px 5px;box-shadow:2px 3px 0 #283a8c26;animation:your-move-bob 1.6s ease-in-out infinite}
.your-move:after{content:"";position:absolute;left:50%;bottom:-7px;width:10px;height:10px;background:#fffaf0;border-right:1.5px solid #283a8c;border-bottom:1.5px solid #283a8c;transform:translateX(-50%) rotate(45deg)}
.your-move[data-at=top]{transform:translate(-50%,6px)}
.your-move[data-at=top]:after{bottom:auto;top:-7px;transform:translateX(-50%) rotate(225deg)}
.your-move[hidden]{display:none}
@keyframes your-move-bob{0%,100%{translate:0 0}50%{translate:0 -4px}}
.order-ticket.next-stop{outline:3px solid #e7b63d;outline-offset:2px;animation:ink-nudge 1.6s ease-in-out infinite}
.order-ticket .mcw-glyph,.dish-stamps svg,.serve-feedback svg,.taste-stars svg{vertical-align:middle}
.dish-stamps i svg{width:15px;height:15px}

/* live tasting: the guest peeks at the plate while you draw */
.taste-check{display:none}
.taste-result{display:grid;grid-template-columns:48px 1fr;gap:2px 10px;align-items:center}
.taste-result .taste-face{grid-row:1/3;width:48px;height:58px;overflow:hidden}
.taste-result .taste-face svg{width:48px;height:auto;display:block}
.taste-result[data-stars="3"] .taste-face svg{animation:diner-delight .5s ease-out}
.taste-result strong{font-size:14px}
.taste-result>span:last-child{font-size:12px;grid-column:2}
.taste-result[data-ready=true]{background:#eef6e2;border-color:#2e7d5b}
#prep-dialog .serve{position:sticky;bottom:0;z-index:5;box-shadow:0 -10px 14px #fbf6ea,0 4px 0 #283a8c}
#prep-dialog .helper{margin-top:6px}

/* readable sizes on phones (no text under 11px on the floor) */
@media(max-width:680px){
.chef-name{font-size:11px!important;max-width:80px}
.chef-status{font-size:11px!important;margin-inline:-24px;max-width:110px}
.table-name{font-size:11px!important}
.prep-station{font-size:12px!important}
.your-move{font-size:18px}
}
@media(max-width:430px){.table-name{max-width:none;padding:1px 4px}}
@media(max-height:500px) and (orientation:landscape){
.dining-table{height:16%!important;min-height:44px}
.table-meal{height:80%}
.table-name,.chef-name,.chef-status{font-size:11px!important}
.order-bubble{display:block!important;width:34px!important;margin:0 auto!important;padding:1px!important}
.order-bubble span{display:none}
.order-bubble svg{width:26px;height:22px}
.your-move{font-size:16px;padding:2px 8px}
}
@media(prefers-reduced-motion:reduce){.your-move,.walk-target,.order-ticket.next-stop{animation:none!important}}

/* idle delights */
.diner-cat,.diner-radio{position:absolute;z-index:3;pointer-events:auto;cursor:pointer}
.diner-cat{left:34%;bottom:1.5%;width:min(64px,15%)}
.diner-cat svg,.diner-radio svg{display:block;width:100%;height:auto;overflow:visible}
.diner-cat .cat-body,.diner-cat .cat-head{transform-origin:50% 90%;animation:ink-breathe 3.6s ease-in-out infinite}
.diner-cat.awake .cat-eyes{d:path("M17 33a2.5 2.5 0 1 0 .1 0M28 33a2.5 2.5 0 1 0 .1 0")}
.diner-cat .cat-tail{transform-origin:74px 44px;animation:cat-tail 4s ease-in-out infinite}
.diner-cat.awake .cat-tail{animation-duration:.6s}
@keyframes cat-tail{0%,100%{rotate:0deg}50%{rotate:-12deg}}
.diner-radio{right:3%;top:.5%;width:min(46px,10%);transform-origin:50% 100%;animation:radio-sway 5s ease-in-out infinite}
.diner-radio.playing{animation-duration:.7s}
@keyframes radio-sway{0%,100%{rotate:-2deg}50%{rotate:2deg}}
.diner-say{position:absolute;left:50%;bottom:100%;transform:translate(-50%,-4px);white-space:nowrap;z-index:16;font:700 14px/1.1 'Trebuchet MS',sans-serif;color:#283a8c;background:#fffaf0;border:1.5px solid #283a8c;border-radius:12px 14px 10px 12px;padding:3px 8px;pointer-events:none;animation:diner-say-in .3s cubic-bezier(.34,1.56,.64,1) both}
.diner-say.out{opacity:0;transition:opacity .3s}
.customer .diner-say{bottom:auto;top:-8px;transform:translate(-50%,-100%)}
@keyframes diner-say-in{from{opacity:0;scale:.6}to{opacity:1;scale:1}}
.prep-station::after{content:"";position:absolute;left:50%;top:-6px;width:12px;height:12px;border:1.5px solid #283a8c55;border-radius:50%;opacity:0;pointer-events:none;animation:diner-steam 3.4s ease-out infinite}
.prep-station:nth-child(2)::after{animation-delay:-1.1s}.prep-station:nth-child(3)::after{animation-delay:-2.3s}.prep-station:nth-child(4)::after{animation-delay:-.6s}
@keyframes diner-steam{0%{opacity:0;transform:translate(-50%,6px) scale(.5)}30%{opacity:.8}100%{opacity:0;transform:translate(-30%,-22px) scale(1.4)}}
@media(max-height:500px) and (orientation:landscape){.diner-cat{width:44px}.diner-radio{width:34px}}
@media(prefers-reduced-motion:reduce){.diner-cat *,.diner-radio,.prep-station::after,.diner-say{animation:none!important}}

.restaurant-scene>.kitchen-banner{position:absolute!important;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;padding:0;border:0}

/* prep pad: the plate and the guest's live reaction come first; tools stay one thumb away */
#prep-dialog .board{display:flex;flex-direction:column}
#prep-dialog .board>.board-head{order:0}
#prep-dialog .board>.plate{order:1}
#prep-dialog .board>.taste-result{order:2;margin:10px 0 0}
#prep-dialog .board>.palette{order:3}
#prep-dialog .board>.tools{order:4}
#prep-dialog .board>.size{order:5}
#prep-dialog .board>.guide-toggle{order:6}
#prep-dialog .board>.helper{order:7}
#prep-dialog .board>.serve{order:9}
#prep-dialog .board>.taste-check{order:8}
@media(max-width:680px){
#prep-dialog{padding:8px 10px}
#prep-dialog .prep-heading{margin-bottom:6px;padding-block:4px}
#prep-dialog .service{gap:6px}
#prep-dialog .ticket{display:grid;grid-template-columns:58px 1fr;align-items:center;gap:0 10px;padding:6px 10px 10px;border-top-width:5px}
#prep-dialog .ticket .reference{width:58px;grid-column:1;grid-row:1/3}
#prep-dialog .ticket .order-label{grid-column:2;grid-row:1}
#prep-dialog .ticket h2{grid-column:2;grid-row:2}
#prep-dialog .ticket ul,#prep-dialog .ticket hr{display:none}
#prep-dialog .ticket h2{font-size:24px;margin:0}
#prep-dialog .ticket .order-label{font-size:12px}
#prep-dialog .board{padding:8px}
#prep-dialog .board-head{margin-bottom:4px}
#prep-dialog .palette{margin:10px 0 8px;gap:7px}
#prep-dialog .swatch{width:40px;height:40px;min-width:40px}
#prep-dialog .plate canvas{aspect-ratio:5/4}
}
.your-move[data-at=below]{transform:translate(-50%,calc(50% + 30px))}
.your-move[data-at=below]:after{bottom:auto;top:-7px;transform:translateX(-50%) rotate(225deg)}
.prep-station::after{width:14px;height:22px;border:0;border-radius:0;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 22'%3E%3Cpath d='M7 21c-5-4 4-7 0-11S9 3 7 1' fill='none' stroke='%23283a8c' stroke-opacity='.45' stroke-width='1.6' stroke-linecap='round'/%3E%3C/svg%3E") center/contain no-repeat;top:-14px}
.your-move[data-at=mid]{transform:translate(-50%,-50%)}
.your-move[data-at=mid]:after{display:none}

/* landscape phones: plate on the left at full height, guest + tools on the right, nothing below the fold */
@media(max-height:500px) and (orientation:landscape){
#prep-dialog{padding:6px 10px;max-height:98dvh;width:calc(100% - 16px)}
#prep-dialog .prep-heading{margin-bottom:4px;padding-block:2px}
#prep-dialog .prep-heading strong{font-size:14px}
#prep-dialog .prep-patience{display:inline;margin:0 0 0 8px}
#prep-dialog .prep-heading button{min-height:40px;padding:4px 10px}
#prep-dialog .service{grid-template-columns:120px minmax(0,1fr);gap:8px}
#prep-dialog .ticket{padding:6px 8px 10px;display:block;border-top-width:5px}
#prep-dialog .ticket ul,#prep-dialog .ticket hr{display:none}
#prep-dialog .ticket .reference{width:100%}
#prep-dialog .ticket h2{font-size:20px;margin:2px 0 4px}
#prep-dialog .board{display:grid;grid-template-columns:auto minmax(0,1fr);gap:6px 12px;padding:6px 8px;align-items:start;align-content:start}
#prep-dialog .board>*{grid-column:2;margin:0}
#prep-dialog .board>.board-head{display:none}
#prep-dialog .board>.plate{grid-column:1;grid-row:1/span 9;width:calc((100dvh - 92px)*1.25);max-width:none;margin:0}
#prep-dialog .board>.taste-result{grid-template-columns:36px 1fr;padding:6px 8px;font-size:12px}
#prep-dialog .taste-result .taste-face{width:36px;height:44px}
#prep-dialog .taste-result .taste-face svg{width:36px}
#prep-dialog .taste-result strong{font-size:12px}
#prep-dialog .taste-result>span:last-child{font-size:11px}
#prep-dialog .palette{gap:5px;justify-content:flex-start}
#prep-dialog .swatch{width:34px;height:34px;min-width:34px}
#prep-dialog .tools{justify-content:flex-start;gap:5px}
#prep-dialog .tools button{min-height:36px;padding:4px 8px;font-size:12px}
#prep-dialog .size,#prep-dialog .helper{display:none}
#prep-dialog .guide-toggle{min-height:32px;justify-content:flex-start}
#prep-dialog .serve{position:static;font-size:15px;padding:8px;box-shadow:0 3px 0 #283a8c}
}
@media(max-height:500px) and (orientation:landscape){
#prep-dialog .serve{position:sticky;bottom:0;box-shadow:0 -8px 10px #fbf6ea,0 3px 0 #283a8c}
#prep-dialog .board>.plate{width:calc((100dvh - 96px)*1.25)}
#prep-dialog .taste-result .taste-face{display:none}
#prep-dialog .board>.taste-result{display:block}
#prep-dialog .taste-result>span:last-child{display:none}
#prep-dialog .taste-result[data-ready=false]>span:last-child{display:block}
#prep-dialog .palette{flex-wrap:wrap;max-width:150px}
#prep-dialog .swatch{width:30px;height:30px;min-width:30px}
#prep-dialog .tools button{min-height:34px;padding:3px 7px;font-size:11px}
#prep-dialog .guide-toggle{display:none!important}
}
.order-ticket>span,.order-ticket strong{font-size:11px!important}
#context-prompt{font-size:11px!important}

/* ---- Round 2 (critic repairs) ---- */
/* Counters are drawn pen objects: a hatched front and a double-traced top, sized to the counter. */
.prep-station{background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 60' preserveAspectRatio='none'%3E%3Cpath d='M4 22 L96 21 L95 56 L5 57Z' fill='%23f1d6ab'/%3E%3Cpath d='M4 56 L13 23' stroke='%23283a8c' stroke-opacity='.22' stroke-width='1' vector-effect='non-scaling-stroke'/%3E%3Cpath d='M10 56 L19 23' stroke='%23283a8c' stroke-opacity='.22' stroke-width='1' vector-effect='non-scaling-stroke'/%3E%3Cpath d='M16 56 L25 23' stroke='%23283a8c' stroke-opacity='.22' stroke-width='1' vector-effect='non-scaling-stroke'/%3E%3Cpath d='M22 56 L31 23' stroke='%23283a8c' stroke-opacity='.22' stroke-width='1' vector-effect='non-scaling-stroke'/%3E%3Cpath d='M28 56 L37 23' stroke='%23283a8c' stroke-opacity='.22' stroke-width='1' vector-effect='non-scaling-stroke'/%3E%3Cpath d='M34 56 L43 23' stroke='%23283a8c' stroke-opacity='.22' stroke-width='1' vector-effect='non-scaling-stroke'/%3E%3Cpath d='M40 56 L49 23' stroke='%23283a8c' stroke-opacity='.22' stroke-width='1' vector-effect='non-scaling-stroke'/%3E%3Cpath d='M46 56 L55 23' stroke='%23283a8c' stroke-opacity='.22' stroke-width='1' vector-effect='non-scaling-stroke'/%3E%3Cpath d='M52 56 L61 23' stroke='%23283a8c' stroke-opacity='.22' stroke-width='1' vector-effect='non-scaling-stroke'/%3E%3Cpath d='M58 56 L67 23' stroke='%23283a8c' stroke-opacity='.22' stroke-width='1' vector-effect='non-scaling-stroke'/%3E%3Cpath d='M64 56 L73 23' stroke='%23283a8c' stroke-opacity='.22' stroke-width='1' vector-effect='non-scaling-stroke'/%3E%3Cpath d='M70 56 L79 23' stroke='%23283a8c' stroke-opacity='.22' stroke-width='1' vector-effect='non-scaling-stroke'/%3E%3Cpath d='M76 56 L85 23' stroke='%23283a8c' stroke-opacity='.22' stroke-width='1' vector-effect='non-scaling-stroke'/%3E%3Cpath d='M82 56 L91 23' stroke='%23283a8c' stroke-opacity='.22' stroke-width='1' vector-effect='non-scaling-stroke'/%3E%3Cpath d='M88 56 L97 23' stroke='%23283a8c' stroke-opacity='.22' stroke-width='1' vector-effect='non-scaling-stroke'/%3E%3Cpath d='M3 7 Q50 3 97 6 L97 22 Q50 25 3 22Z' fill='%23fffaf0' stroke='%23283a8c' stroke-width='2' stroke-linejoin='round' vector-effect='non-scaling-stroke'/%3E%3Cpath d='M4 8 Q50 5 96 7 M5 21 Q50 23.5 96 21' fill='none' stroke='%23283a8c' stroke-opacity='.45' stroke-width='1' vector-effect='non-scaling-stroke'/%3E%3Cpath d='M5 22 L4 57 Q50 55 96 57 L95 22' fill='none' stroke='%23283a8c' stroke-width='2' stroke-linejoin='round' vector-effect='non-scaling-stroke'/%3E%3Cpath d='M6 23 L6 56 M94 23 L94.5 56' fill='none' stroke='%23283a8c' stroke-opacity='.4' stroke-width='1' vector-effect='non-scaling-stroke'/%3E%3Cpath d='M20 39 Q50 37 80 39' fill='none' stroke='%23283a8c' stroke-opacity='.55' stroke-width='1.5' vector-effect='non-scaling-stroke'/%3E%3C/svg%3E") center/100% 100% no-repeat!important;border:0!important;box-shadow:none!important;border-radius:0!important;padding-top:2%}
body[data-level=garden] .prep-station{background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 60' preserveAspectRatio='none'%3E%3Cpath d='M4 22 L96 21 L95 56 L5 57Z' fill='%23b9cf8d'/%3E%3Cpath d='M4 56 L13 23' stroke='%23283a8c' stroke-opacity='.22' stroke-width='1' vector-effect='non-scaling-stroke'/%3E%3Cpath d='M10 56 L19 23' stroke='%23283a8c' stroke-opacity='.22' stroke-width='1' vector-effect='non-scaling-stroke'/%3E%3Cpath d='M16 56 L25 23' stroke='%23283a8c' stroke-opacity='.22' stroke-width='1' vector-effect='non-scaling-stroke'/%3E%3Cpath d='M22 56 L31 23' stroke='%23283a8c' stroke-opacity='.22' stroke-width='1' vector-effect='non-scaling-stroke'/%3E%3Cpath d='M28 56 L37 23' stroke='%23283a8c' stroke-opacity='.22' stroke-width='1' vector-effect='non-scaling-stroke'/%3E%3Cpath d='M34 56 L43 23' stroke='%23283a8c' stroke-opacity='.22' stroke-width='1' vector-effect='non-scaling-stroke'/%3E%3Cpath d='M40 56 L49 23' stroke='%23283a8c' stroke-opacity='.22' stroke-width='1' vector-effect='non-scaling-stroke'/%3E%3Cpath d='M46 56 L55 23' stroke='%23283a8c' stroke-opacity='.22' stroke-width='1' vector-effect='non-scaling-stroke'/%3E%3Cpath d='M52 56 L61 23' stroke='%23283a8c' stroke-opacity='.22' stroke-width='1' vector-effect='non-scaling-stroke'/%3E%3Cpath d='M58 56 L67 23' stroke='%23283a8c' stroke-opacity='.22' stroke-width='1' vector-effect='non-scaling-stroke'/%3E%3Cpath d='M64 56 L73 23' stroke='%23283a8c' stroke-opacity='.22' stroke-width='1' vector-effect='non-scaling-stroke'/%3E%3Cpath d='M70 56 L79 23' stroke='%23283a8c' stroke-opacity='.22' stroke-width='1' vector-effect='non-scaling-stroke'/%3E%3Cpath d='M76 56 L85 23' stroke='%23283a8c' stroke-opacity='.22' stroke-width='1' vector-effect='non-scaling-stroke'/%3E%3Cpath d='M82 56 L91 23' stroke='%23283a8c' stroke-opacity='.22' stroke-width='1' vector-effect='non-scaling-stroke'/%3E%3Cpath d='M88 56 L97 23' stroke='%23283a8c' stroke-opacity='.22' stroke-width='1' vector-effect='non-scaling-stroke'/%3E%3Cpath d='M3 7 Q50 3 97 6 L97 22 Q50 25 3 22Z' fill='%23f4e2bd' stroke='%23283a8c' stroke-width='2' stroke-linejoin='round' vector-effect='non-scaling-stroke'/%3E%3Cpath d='M4 8 Q50 5 96 7 M5 21 Q50 23.5 96 21' fill='none' stroke='%23283a8c' stroke-opacity='.45' stroke-width='1' vector-effect='non-scaling-stroke'/%3E%3Cpath d='M5 22 L4 57 Q50 55 96 57 L95 22' fill='none' stroke='%23283a8c' stroke-width='2' stroke-linejoin='round' vector-effect='non-scaling-stroke'/%3E%3Cpath d='M6 23 L6 56 M94 23 L94.5 56' fill='none' stroke='%23283a8c' stroke-opacity='.4' stroke-width='1' vector-effect='non-scaling-stroke'/%3E%3Cpath d='M20 39 Q50 37 80 39' fill='none' stroke='%23283a8c' stroke-opacity='.55' stroke-width='1.5' vector-effect='non-scaling-stroke'/%3E%3C/svg%3E") center/100% 100% no-repeat!important}
body[data-level=space] .prep-station{background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 60' preserveAspectRatio='none'%3E%3Cpath d='M4 22 L96 21 L95 56 L5 57Z' fill='%23a9b6d6'/%3E%3Cpath d='M4 56 L13 23' stroke='%23283a8c' stroke-opacity='.22' stroke-width='1' vector-effect='non-scaling-stroke'/%3E%3Cpath d='M10 56 L19 23' stroke='%23283a8c' stroke-opacity='.22' stroke-width='1' vector-effect='non-scaling-stroke'/%3E%3Cpath d='M16 56 L25 23' stroke='%23283a8c' stroke-opacity='.22' stroke-width='1' vector-effect='non-scaling-stroke'/%3E%3Cpath d='M22 56 L31 23' stroke='%23283a8c' stroke-opacity='.22' stroke-width='1' vector-effect='non-scaling-stroke'/%3E%3Cpath d='M28 56 L37 23' stroke='%23283a8c' stroke-opacity='.22' stroke-width='1' vector-effect='non-scaling-stroke'/%3E%3Cpath d='M34 56 L43 23' stroke='%23283a8c' stroke-opacity='.22' stroke-width='1' vector-effect='non-scaling-stroke'/%3E%3Cpath d='M40 56 L49 23' stroke='%23283a8c' stroke-opacity='.22' stroke-width='1' vector-effect='non-scaling-stroke'/%3E%3Cpath d='M46 56 L55 23' stroke='%23283a8c' stroke-opacity='.22' stroke-width='1' vector-effect='non-scaling-stroke'/%3E%3Cpath d='M52 56 L61 23' stroke='%23283a8c' stroke-opacity='.22' stroke-width='1' vector-effect='non-scaling-stroke'/%3E%3Cpath d='M58 56 L67 23' stroke='%23283a8c' stroke-opacity='.22' stroke-width='1' vector-effect='non-scaling-stroke'/%3E%3Cpath d='M64 56 L73 23' stroke='%23283a8c' stroke-opacity='.22' stroke-width='1' vector-effect='non-scaling-stroke'/%3E%3Cpath d='M70 56 L79 23' stroke='%23283a8c' stroke-opacity='.22' stroke-width='1' vector-effect='non-scaling-stroke'/%3E%3Cpath d='M76 56 L85 23' stroke='%23283a8c' stroke-opacity='.22' stroke-width='1' vector-effect='non-scaling-stroke'/%3E%3Cpath d='M82 56 L91 23' stroke='%23283a8c' stroke-opacity='.22' stroke-width='1' vector-effect='non-scaling-stroke'/%3E%3Cpath d='M88 56 L97 23' stroke='%23283a8c' stroke-opacity='.22' stroke-width='1' vector-effect='non-scaling-stroke'/%3E%3Cpath d='M3 7 Q50 3 97 6 L97 22 Q50 25 3 22Z' fill='%23eef2fb' stroke='%23283a8c' stroke-width='2' stroke-linejoin='round' vector-effect='non-scaling-stroke'/%3E%3Cpath d='M4 8 Q50 5 96 7 M5 21 Q50 23.5 96 21' fill='none' stroke='%23283a8c' stroke-opacity='.45' stroke-width='1' vector-effect='non-scaling-stroke'/%3E%3Cpath d='M5 22 L4 57 Q50 55 96 57 L95 22' fill='none' stroke='%23283a8c' stroke-width='2' stroke-linejoin='round' vector-effect='non-scaling-stroke'/%3E%3Cpath d='M6 23 L6 56 M94 23 L94.5 56' fill='none' stroke='%23283a8c' stroke-opacity='.4' stroke-width='1' vector-effect='non-scaling-stroke'/%3E%3Cpath d='M20 39 Q50 37 80 39' fill='none' stroke='%23283a8c' stroke-opacity='.55' stroke-width='1.5' vector-effect='non-scaling-stroke'/%3E%3C/svg%3E") center/100% 100% no-repeat!important}
.prep-station.next-stop{filter:drop-shadow(0 0 5px #f6c95a) drop-shadow(0 0 2px #f6c95a)}
@media(min-width:761px){.prep-station{max-width:150px}}
/* Tables get a second wobbly pen trace so they read as drawn, not as CSS circles. */
.dining-table::after{content:"";position:absolute;inset:-3px -2px -1px -4px;border:1.5px solid #283a8c66;border-radius:47% 53% 50% 50%/52% 46% 54% 48%;pointer-events:none}
/* Garden puddles read as water: ripples and a highlight. */
.puddle{background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 50' preserveAspectRatio='none'%3E%3Cpath d='M8 26 C6 12 30 6 50 8 C72 5 96 12 93 26 C95 40 70 46 48 44 C26 47 9 40 8 26Z' fill='%2389c3dc' fill-opacity='.85' stroke='%23283a8c' stroke-width='2' vector-effect='non-scaling-stroke'/%3E%3Cpath d='M24 22 Q34 16 46 20 M56 30 Q66 25 78 29 M30 34 Q38 31 44 33' fill='none' stroke='%23ffffff' stroke-width='2' stroke-linecap='round' vector-effect='non-scaling-stroke'/%3E%3Cpath d='M16 24 C16 15 34 11 50 12' fill='none' stroke='%23283a8c' stroke-opacity='.35' stroke-width='1' vector-effect='non-scaling-stroke'/%3E%3C/svg%3E") center/100% 100% no-repeat!important;border:0!important;box-shadow:none!important;border-radius:0!important}
/* The chef stands just behind his tile so labels and plates stay readable. */
.chef .chef-body{translate:0 10%}
.chef-status{white-space:nowrap}
/* Toasts live at the bottom of the floor, clear of the level title and the action button. */
#kitchen-notice:not(:empty){top:auto!important;bottom:calc(52px + env(safe-area-inset-bottom,0px))!important;left:12px!important;right:92px!important;font-size:12px}
@media(max-height:500px) and (orientation:landscape){#kitchen-notice:not(:empty){bottom:2px!important;left:16px!important;right:84px!important;padding:3px 10px}}
/* The keyboard hint is for keyboards only. */
@media(pointer:coarse){.kbd-hint{display:none}}
/* Pace: a real, finger-sized control. */
#difficulty{-webkit-appearance:none;appearance:none;min-height:44px;font:700 14px/1.2 'Trebuchet MS',sans-serif;color:#283a8c;background:#fffaf0 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5 6 6.5 11 1.5' fill='none' stroke='%23283a8c' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E") right 12px center/12px 8px no-repeat;border:2px solid #283a8c;border-radius:10px 14px 9px 13px/13px 9px 14px 10px;padding:0 34px 0 12px;box-shadow:2px 3px 0 #283a8c26}
#menu-content label:has(#difficulty),.level-progress label:has(#difficulty){display:flex;flex-direction:column;align-items:stretch;gap:4px;font-size:13px!important;font-weight:700}
#menu-content .shift p{display:block;margin:0 0 6px}
.back-glyph{display:inline-flex;vertical-align:-2px;margin-right:4px}.back-glyph svg{width:14px;height:14px}
/* Landscape tickets meet the 44px touch floor. */
@media(max-height:500px) and (orientation:landscape){.ticket-queue .order-ticket{min-height:44px}}

.prep-station{position:absolute}
.prep-station>span{position:absolute;left:50%;top:6%;translate:-50% 0;line-height:0}
.prep-tag{position:absolute;left:50%;bottom:7%;translate:-50% 0;white-space:nowrap;font-size:11px;line-height:1.2;padding:1px 6px;background:#fbf6ea;border:1px solid #283a8c88;border-radius:6px 9px 6px 8px;font-weight:700}
/* Very small phones: a 44px pill fits in the strip under the tables instead of covering Table 4. */
@media(max-width:360px){.chef-actions #interact{width:84px!important;height:44px!important;border-radius:22px 24px 21px 23px!important;font-size:12px!important;padding:2px 6px;line-height:1.05}.chef-actions{bottom:1px!important;right:4px!important}.prep-station>span{display:none}}
/* Portrait phones: Finish sits at the end of the pad instead of floating over the guest card and tools. */
@media(orientation:portrait),(min-height:501px){#prep-dialog .serve{position:static!important;box-shadow:0 4px 0 #283a8c!important;margin-top:10px}}
.shift-line{display:block}
/* Regulars: a gentle long tail. */
.order-ticket.regular{position:relative}
.order-ticket.regular::after{content:"";position:absolute;top:-7px;right:-6px;width:20px;height:18px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 18'%3E%3Cpath d='M10 16C3 11 1 8 2 5s5-4 8 0c3-4 7-3 8 0s-1 6-8 11Z' fill='%23f3a0a8' stroke='%23283a8c' stroke-width='1.6' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat}
.regulars{margin-top:14px;padding:12px;border:1.5px dashed #283a8c88;border-radius:12px 16px 10px 14px;background:#fffaf0}
.regulars h3{margin:0 0 8px;font:700 22px/1 Caveat,cursive}
.regulars>p{margin:0;font-size:13px}
.regular-row{display:grid;grid-template-columns:48px 1fr;gap:10px;align-items:start;padding:6px 0;border-top:1px solid #283a8c22}
.regular-row>svg{width:48px;height:auto}
.regular-row p{margin:0;font-size:13px;display:flex;flex-direction:column;gap:2px}
.regular-row small{font-size:12px;opacity:.8}.regular-row em{font-size:12px;opacity:.7}
@media(max-height:500px) and (orientation:landscape){.chef-actions #interact{font-size:11px!important;line-height:1.05;padding:2px 4px}}
/* Keep the chef's status chip inside the floor at the left and right walls. */
.chef[data-edge=left] .chef-status{margin-left:-4px!important;margin-right:-60px!important}
.chef[data-edge=right] .chef-status{margin-right:-4px!important;margin-left:-60px!important}
/* Label on the counter top, bowl on the front: a chef standing below covers the bowl, never the name. */
.prep-tag{top:3%;bottom:auto}
.prep-station>span{top:auto;bottom:10%}
@media(max-height:500px) and (orientation:landscape){
.chef .chef-body{translate:0 4%}
/* Short landscape tiles: the name sits at the counter's left corner, clear of a chef standing in front of it. */
.prep-tag{left:6px;translate:0 0;top:auto;bottom:8%}.prep-station>span{left:auto;right:10px;translate:0 0}
body:has(#kitchen-notice:not(:empty)) #context-prompt,body:has(#kitchen-notice:not(:empty)) #current-ticket{visibility:hidden}
}

/* ---- Round 3: the prep sheet is one screen ----
   Plate, colours, tools, the guest's reaction and Finish are visible together on every viewport.
   .worktop and .board dissolve (display:contents) so every piece is placed by one grid on .service. */
#prep-dialog.one-screen{overflow:hidden!important;max-height:none!important;padding:10px 12px!important;width:min(1100px,calc(100% - 16px))!important;height:calc(100dvh - 16px)}
#prep-dialog.one-screen[open]{display:flex;flex-direction:column}
#prep-dialog.one-screen .prep-heading{flex:none;position:static!important;margin:0 0 6px!important;padding:0 0 6px!important;gap:8px;align-items:center}
#prep-dialog.one-screen .prep-heading strong{font-size:15px}
#prep-dialog.one-screen #close-prep{min-height:44px;flex:none;padding:6px 12px;font-size:13px}
#prep-dialog.one-screen .service{flex:1;min-height:0;display:grid!important;gap:6px 10px;margin:0!important;padding:0!important;overflow:hidden}
#prep-dialog.one-screen .worktop,#prep-dialog.one-screen .board{display:contents!important}
#prep-dialog.one-screen .board-head,#prep-dialog.one-screen #taste-check,#prep-dialog.one-screen .helper,#prep-dialog.one-screen .dining-room{display:none!important}
#prep-dialog.one-screen #notice{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
#prep-dialog.one-screen .ticket{grid-area:ticket;min-width:0;margin:0!important}
#prep-dialog.one-screen .plate-cell{grid-area:plate;container-type:size;align-self:stretch;justify-self:stretch;min-height:0;min-width:0;display:grid;place-items:center}
#prep-dialog.one-screen .plate{width:min(100cqw,125cqh)!important;max-width:none!important;margin:0!important}
#prep-dialog.one-screen #palette{grid-area:pal;display:flex;flex-wrap:wrap;gap:5px;justify-content:flex-start;margin:0!important;max-width:none!important}
#prep-dialog.one-screen .swatch{width:34px!important;height:34px!important;min-width:34px!important}
#prep-dialog.one-screen .tools{grid-area:tools;display:flex;flex-wrap:wrap;gap:5px;justify-content:flex-start;margin:0!important}
#prep-dialog.one-screen .tools button{min-height:44px!important;min-width:44px;padding:4px 9px!important;font-size:13px!important}
#prep-dialog.one-screen .tools .icon-btn{padding:0!important;width:44px;display:inline-grid;place-items:center}
#prep-dialog.one-screen .tools .icon-btn svg{width:20px;height:20px}
#prep-dialog.one-screen .guide-toggle{grid-area:guide;display:flex!important;align-items:center;gap:6px;min-height:44px;margin:0!important;font-size:13px;white-space:nowrap}
#prep-dialog.one-screen .size{grid-area:size;margin:0!important}
#prep-dialog.one-screen #taste-result{grid-area:taste;margin:0!important;min-width:0;align-self:stretch}
#prep-dialog.one-screen #serve{grid-area:serve;position:static!important;margin:0!important;min-height:52px;align-self:end;box-shadow:0 3px 0 #283a8c!important}
/* Phones, portrait */
@media(max-width:760px) and (min-height:501px){
#prep-dialog.one-screen{width:calc(100% - 12px)!important;height:calc(100dvh - 12px);padding:8px 10px!important;border-radius:16px}
#prep-dialog.one-screen .prep-heading>div{min-width:0}
#prep-dialog.one-screen .prep-heading strong{font-size:13px}
#prep-dialog.one-screen #prep-patience{font-size:11px}
#prep-dialog.one-screen .service{grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto minmax(0,1fr) auto auto auto;grid-template-areas:"ticket guide" "plate plate" "pal pal" "tools tools" "taste serve"}
#prep-dialog.one-screen .size{display:none!important}
#prep-dialog.one-screen .swatch{width:31px!important;height:31px!important;min-width:31px!important}
#prep-dialog.one-screen #palette{gap:4px;justify-content:center}
#prep-dialog.one-screen .tools{justify-content:center;gap:4px}
#prep-dialog.one-screen .tools button{padding:3px 7px!important;font-size:12px!important}
#prep-dialog.one-screen #serve{max-width:150px;font-size:14px!important;padding:6px 10px!important;line-height:1.15}
#prep-dialog.one-screen #taste-result{padding:5px 8px!important}
}
/* Desktop: ticket | plate | side panel */
@media(min-width:761px) and (min-height:501px){
#prep-dialog.one-screen{height:min(calc(100dvh - 32px),860px)}
#prep-dialog.one-screen .service{grid-template-columns:minmax(180px,230px) minmax(0,1fr) 340px;grid-template-rows:auto auto auto auto minmax(0,1fr) auto;grid-template-areas:"ticket plate pal" "ticket plate tools" "ticket plate guide" "ticket plate size" "ticket plate taste" "ticket plate serve"}
#prep-dialog.one-screen .ticket{overflow:auto}
#prep-dialog.one-screen #taste-result{align-self:start}
}
/* Landscape phones: plate | side panel with a compact ticket on top */
@media(max-height:500px) and (orientation:landscape){
#prep-dialog.one-screen{height:calc(100dvh - 8px);width:calc(100% - 8px)!important;padding:6px 10px!important}
#prep-dialog.one-screen .prep-heading{margin-bottom:4px!important;padding-bottom:4px!important}
#prep-dialog.one-screen .service{grid-template-columns:minmax(0,1fr) minmax(280px,46%);grid-template-rows:auto auto auto minmax(0,1fr) auto;grid-template-areas:"plate ticket" "plate pal" "plate tools" "plate taste" "plate serve"}
#prep-dialog.one-screen .guide-toggle,#prep-dialog.one-screen .size{display:none!important}
#prep-dialog.one-screen .swatch{width:30px!important;height:30px!important;min-width:30px!important}
#prep-dialog.one-screen .tools{gap:4px}
#prep-dialog.one-screen .tools button{padding:2px 7px!important;font-size:12px!important}
#prep-dialog.one-screen #serve{min-height:44px;font-size:14px!important;padding:4px 10px!important}
#prep-dialog.one-screen #taste-result{padding:4px 8px!important;overflow:hidden}
}
/* Compact ticket (phones and landscape): the reference picture with the dish name. */
@media(max-width:760px),(max-height:500px){
#prep-dialog.one-screen .ticket{display:grid!important;grid-template-columns:62px minmax(0,1fr);grid-template-rows:auto auto;column-gap:8px;align-items:center;padding:0!important;border:0!important;background:none!important;box-shadow:none!important;min-height:0}
#prep-dialog.one-screen .ticket::before{display:none!important}
#prep-dialog.one-screen #reference{grid-row:1/3;grid-column:1;width:62px!important;height:auto!important;margin:0!important}
#prep-dialog.one-screen #ticket-customer{grid-column:2;margin:0!important;font-size:12px}
#prep-dialog.one-screen #food-name{grid-column:2;margin:0!important;font-size:21px!important;line-height:1.05}
#prep-dialog.one-screen #ingredients,#prep-dialog.one-screen .ticket hr,#prep-dialog.one-screen .practice{display:none!important}
}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.pen-icon{display:inline-grid;place-items:center}
.entrance-arrow{display:inline-flex;vertical-align:-2px}.entrance-arrow svg{width:16px;height:16px}
.regular-heart{display:inline-flex;vertical-align:-2px}
/* Space floor is dark: the doormat text needs real contrast. */
body[data-level=space] .entrance{color:#fffaf0!important;background:#3a4b78!important;border-color:#fffaf0aa!important}
body[data-level=space] .entrance-arrow svg *{stroke:#fffaf0}
/* Phone portrait taste chip: face, stars and one line of the guest's words beside Finish. */
@media(max-width:760px) and (min-height:501px){
#prep-dialog.one-screen #taste-result{grid-template-columns:30px minmax(0,1fr)!important;gap:0 6px!important;align-items:center;max-height:62px;overflow:hidden}
#prep-dialog.one-screen #taste-result .taste-face{width:30px!important;height:36px!important;grid-row:1/4}
#prep-dialog.one-screen #taste-result .taste-face svg{width:30px!important}
#prep-dialog.one-screen #taste-result strong{font-size:12px!important;line-height:1.2;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
#prep-dialog.one-screen #taste-result>span:last-child{display:none!important}
}
@media(max-width:760px) and (min-height:501px){
#prep-dialog.one-screen .wide-only{display:none}
#prep-dialog.one-screen .prep-heading>div>strong{display:none}
#prep-dialog.one-screen #prep-patience{display:block;font-size:12px;line-height:1.25}
#prep-dialog.one-screen #close-prep{padding:4px 10px;font-size:13px}
#prep-dialog.one-screen .service{grid-template-columns:minmax(0,1fr) minmax(0,auto)}
#prep-dialog.one-screen #serve{display:flex;flex-direction:column;justify-content:center;align-items:center;min-width:104px;font-size:17px!important}
#prep-dialog.one-screen #serve .serve-to{font-size:12px;font-weight:600}
#prep-dialog.one-screen .guide-toggle{font-size:12px;min-height:44px;gap:4px}
}
@media(max-width:360px) and (min-height:501px){
#prep-dialog.one-screen .swatch{width:28px!important;height:28px!important;min-width:28px!important}
#prep-dialog.one-screen #palette{gap:3px}
}
#prep-dialog.one-screen #serve .serve-to{white-space:nowrap}
@media(max-width:760px) and (min-height:501px){#prep-dialog.one-screen #taste-result{max-height:72px}#prep-dialog.one-screen .tools button{padding:3px 6px!important}}
.taste-meter{grid-column:2;position:relative;display:block;height:9px;margin:3px 0 2px;border:1.5px solid #283a8c;border-radius:6px 8px 6px 7px;background:#fff;overflow:visible}
.taste-meter i{position:absolute;left:0;top:0;bottom:0;background:repeating-linear-gradient(-45deg,#f6c95a 0 4px,#f2b93a 4px 7px);border-radius:5px;transition:width .25s ease-out}
.taste-meter b{position:absolute;top:-4px;bottom:-4px;width:2px;margin-left:-1px;background:#283a8c}
@media(prefers-reduced-motion:reduce){.taste-meter i{transition:none}}
/* Finale */
.finale{width:min(560px,calc(100% - 20px));max-height:calc(100dvh - 20px);overflow:auto;padding:0 0 16px;border:3px solid #283a8c;border-radius:20px 26px 18px 24px;background:#fbf6ea;color:#283a8c;box-shadow:5px 6px 0 #283a8c33}
.finale::backdrop{background:#283a8c55}
.finale-bunting{display:block;width:100%;height:44px}
.finale-card{padding:0 18px;text-align:center}
.finale-kicker{margin:4px 0 0;font-size:13px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#c8423a}
.finale h2{margin:2px 0 8px;font:700 34px/1.05 Caveat,cursive}
.finale-crew{display:flex;justify-content:center;flex-wrap:wrap;gap:2px;margin:0 0 10px}
.finale-guest{display:inline-block;width:44px;animation:finale-hop 1.1s ease-in-out infinite;animation-delay:calc(var(--i)*.12s)}
.finale-guest svg{width:44px;height:auto}
@keyframes finale-hop{0%,60%,100%{transform:translateY(0)}30%{transform:translateY(-9px) rotate(-3deg)}}
.finale-postcard{display:grid;grid-template-columns:110px 1fr;gap:12px;align-items:center;text-align:left;margin:0 auto 10px;padding:12px;background:#fffaf0;border:2px solid #283a8c;border-radius:10px 14px 9px 13px;box-shadow:2px 3px 0 #283a8c26;transform:rotate(-1deg)}
.finale-postcard ul{margin:0;padding:0;list-style:none;font-size:14px;line-height:1.6}
.finale-sticker{display:grid;justify-items:center;gap:2px;font-size:13px}
.finale-line{font-size:14px;margin:6px 0 12px}
.finale-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}
.finale-actions button{min-height:44px;padding:8px 14px;border:2px solid #283a8c;border-radius:12px 16px 10px 14px;background:#fffaf0;color:#283a8c;font:700 15px 'Trebuchet MS',sans-serif;box-shadow:0 3px 0 #283a8c}
.finale-actions .finale-go{background:#f6c95a}
@media(prefers-reduced-motion:reduce){.finale-guest{animation:none}}
/* Story flag: a regular who has shared all their stories gets a pen flag on their table. */
.table-flag{position:absolute;right:6%;top:-22px;width:22px;pointer-events:none;z-index:3}
.table-flag svg{width:22px;height:22px}
/* Round 3: the kitchen title never wraps or hides; the progress column wraps instead. */
#level-title{white-space:nowrap}
.restaurant{grid-template-columns:max-content minmax(0,1fr)}
.level-progress{flex-wrap:wrap!important;justify-content:flex-end!important;row-gap:4px!important;min-width:0}
.level-progress button{min-height:44px}
@media(max-height:500px) and (orientation:landscape){.restaurant{grid-template-columns:125px minmax(0,1fr)}.level-progress button{min-height:30px}}
/* Header: one line at every phone width, whatever the points. */
.top{flex-wrap:nowrap!important}
.top .back,.top .bank,.brand h1{white-space:nowrap}
@media(max-width:430px){.brand h1{font-size:clamp(20px,6.4vw,26px)!important}.top .back{font-size:12px}}
@media(max-width:380px){.top .back{font-size:0!important;min-width:44px;min-height:44px;display:inline-grid;place-items:center}.top .back .back-glyph{margin:0}.top .back .back-glyph svg{width:18px;height:18px}}
#chapter-open{min-height:44px!important}
/* The robot rolls behind seated guests, not over their heads. */
.cleaner{z-index:2!important}
/* Toasts clear the Dash button when it is shown. */
body:has(#dash-toggle:not([hidden])) #kitchen-notice:not(:empty){right:188px!important}
/* Round 4: meter row = meter + percent, then the nudge on its own line. The long advice may hide on
   phones; the percent and nudge never do. */
.taste-result .taste-row{grid-column:2;display:flex;flex-wrap:wrap;align-items:center;gap:0 6px;margin:2px 0 0;min-width:0}
.taste-result .taste-row .taste-meter{flex:1 1 60px;min-width:48px;margin:3px 0}
.taste-result .taste-chip{flex:0 0 auto;margin:0;font-style:normal;font-size:11.5px;font-weight:700;line-height:1.2;color:#283a8c;white-space:nowrap}
.taste-result .taste-chip:empty{display:none}
.taste-result .taste-row .taste-nudge{flex:1 0 100%;margin:1px 0 0;font-size:11.5px;font-weight:700;line-height:1.2;color:#a3361f}
#prep-dialog.one-screen #taste-result{max-height:none!important;overflow:visible!important}
#prep-dialog.one-screen #taste-result strong{display:block!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-line-clamp:unset}
#prep-dialog.one-screen #taste-result .taste-stars{display:inline!important;margin:0 4px 0 0;vertical-align:-2px}
#prep-dialog.one-screen #taste-result .taste-stars svg,#prep-dialog.one-screen #taste-result .taste-stars img{width:14px!important;height:14px!important}
/* Round 4: every swatch is a real 44x44 target; the paint dot inside stays crayon-sized. Narrow screens
   lay the eight colours out as two rows of four rather than shrinking them. */
#prep-dialog.one-screen .swatch,#prep-dialog.one-screen .swatch:hover{width:44px!important;height:44px!important;min-width:44px!important;border:0!important;border-radius:50%;box-shadow:none!important;background:radial-gradient(circle closest-side,var(--color) 0 calc(100% - 7px),#283a8c calc(100% - 6.5px) calc(100% - 4.5px),transparent calc(100% - 4px))!important}
#prep-dialog.one-screen .swatch[aria-pressed=true]{outline:3px solid #283a8c;outline-offset:-2px;background:radial-gradient(circle closest-side,var(--color) 0 calc(100% - 9px),#283a8c calc(100% - 8.5px) calc(100% - 6.5px),#fff1bd calc(100% - 6px))!important}
#prep-dialog.one-screen #palette{gap:0 2px!important;justify-content:center}
@media(max-width:480px){#prep-dialog.one-screen #palette{display:grid!important;grid-template-columns:repeat(4,44px);gap:0 18px!important;justify-content:center}}
/* Round 4 landscape phone: one row of eight 44px colours, one row of tools, and the taste box beside
   Finish so the meter, percent and the guest's face all stay visible. */
@media(max-height:500px) and (orientation:landscape){
#prep-dialog.one-screen .service{grid-template-columns:minmax(0,1fr) minmax(0,1fr) 112px;grid-template-rows:auto auto auto minmax(0,1fr);grid-template-areas:"plate ticket ticket" "plate pal pal" "plate tools tools" "plate taste serve";column-gap:8px!important}
#prep-dialog.one-screen .service{grid-template-columns:minmax(0,1fr) max(240px,calc(48% - 120px)) 112px}
#prep-dialog.one-screen #palette{display:flex!important;flex-wrap:nowrap;gap:0!important;justify-content:flex-start}
#prep-dialog.one-screen .tools{flex-wrap:nowrap;gap:2px!important}
#prep-dialog.one-screen .tools button{padding:2px 5px!important}
#prep-dialog.one-screen .tools .wide-only,#prep-dialog.one-screen #clear .wide-only{display:none!important}
#prep-dialog.one-screen #taste-result{align-self:end;max-height:none!important;overflow:visible!important}
#prep-dialog.one-screen #taste-result{display:grid!important;grid-template-columns:36px minmax(0,1fr)!important;gap:0 8px!important;align-items:center}
#prep-dialog.one-screen #taste-result .taste-face{display:block!important;grid-row:1/3;grid-column:1;width:36px!important;height:44px!important}
#prep-dialog.one-screen #taste-result .taste-face svg{width:36px!important}
#prep-dialog.one-screen #taste-result strong,#prep-dialog.one-screen #taste-result .taste-row{grid-column:2}
#prep-dialog.one-screen #taste-result .taste-advice{display:none!important}
#prep-dialog.one-screen #serve .serve-to{font-size:12px!important;white-space:nowrap}
#prep-dialog.one-screen #serve{align-self:end;min-height:60px;display:flex;flex-direction:column;justify-content:center}
#prep-dialog.one-screen #serve .wide-only{display:none}
}
/* Small phones (320 wide or short): the plate wins. Colours go back to one row; each stays 44px tall and
   the row has no gaps, so the whole strip is target. */
@media(max-width:360px) and (min-height:501px),(max-width:480px) and (max-height:700px){
#prep-dialog.one-screen #palette{display:grid!important;grid-template-columns:repeat(8,minmax(0,44px));gap:0!important;justify-content:center}
#prep-dialog.one-screen .swatch,#prep-dialog.one-screen .swatch:hover{width:100%!important;min-width:0!important}
}
@media(max-width:360px) and (min-height:501px),(max-width:480px) and (max-height:700px){
#prep-dialog.one-screen .swatch[aria-pressed=true]{border-radius:12px!important;outline-offset:-3px}
#prep-dialog.one-screen .ticket{grid-template-columns:46px minmax(0,1fr)!important}
#prep-dialog.one-screen #reference{width:46px!important}
#prep-dialog.one-screen #food-name{font-size:18px!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#prep-dialog.one-screen #ticket-customer{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#prep-dialog.one-screen .tools{flex-wrap:nowrap!important;gap:2px!important}
#prep-dialog.one-screen .tools button{min-width:34px!important;padding:2px 2px!important;font-size:11px!important;flex:1 1 auto}
#prep-dialog.one-screen .tools .icon-btn{width:34px!important;flex:0 0 34px}#prep-dialog.one-screen .tools{gap:1px!important}
#prep-dialog.one-screen #taste-result .taste-nudge{font-size:11px}
}
/* Round 4 tickets: three short lines (table and guest, dish, what tapping does), each one line high with
   an ellipsis, and the ticket grows to fit them, so nothing is clipped at any width. */
.ticket-queue .order-ticket{height:auto!important;min-height:44px;grid-template-rows:auto auto auto!important;align-content:center;cursor:pointer}
.ticket-queue .order-ticket svg{grid-row:1/4!important}
.ticket-queue .order-ticket>strong,.ticket-queue .order-ticket>span,.ticket-queue .order-ticket>small{display:block;grid-column:2;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.25!important}
.ticket-queue .order-ticket>small.ticket-state{font-size:10.5px!important;font-weight:700;color:#a3361f}
.ticket-queue .order-ticket[disabled]{cursor:default}
.ticket-queue .order-ticket[disabled]>small.ticket-state{color:#283a8c}
/* Round 4 scene scale: the floor is a size container, so tables keep one round shape at every aspect
   (no stretched ovals in landscape or on desktop) and the small floor labels grow on big screens
   (11px on phones, up to 15px at desktop sizes). */
#restaurant-scene{container-type:size;--scene-fs:clamp(11px,min(1.25cqw,2.4cqh),15px)}
#restaurant-scene .dining-table{width:min(20cqw,20cqh,165px)!important;height:auto!important;min-height:0!important;aspect-ratio:1.25}
#restaurant-scene :is(.prep-tag,.table-name,.chef-name,.order-bubble,.guest-bubble,#dash-toggle),#restaurant-scene .guest>span{font-size:var(--scene-fs)!important}
#restaurant-scene #interact{font-size:clamp(13px,min(1.35cqw,2.6cqh),17px)}
#restaurant-scene .table-meal{width:auto!important;height:74%!important;aspect-ratio:5/4}
/* Desktop: the strip text (tickets, prompt, shift line) grows past phone size. */
@media(min-width:1024px) and (min-height:600px){
.room-footer strong{font-size:14px!important}
#context-prompt{font-size:13px!important}
.ticket-queue .order-ticket{grid-template-columns:34px auto!important;padding:4px 10px 4px 6px!important;width:auto!important;max-width:none!important;min-width:200px}
.ticket-queue .order-ticket svg{width:32px!important;height:32px!important}
.ticket-queue .order-ticket>strong,.ticket-queue .order-ticket>span{font-size:13px!important}
.ticket-queue .order-ticket>small.ticket-state{font-size:12px!important}
.level-progress,.level-progress span{font-size:13px}
}
/* Round 4 menu: the heading with its close button stays pinned while the menu scrolls. */
#kitchen-menu .menu-heading{position:sticky;top:-16px;z-index:3;margin:-16px -16px 10px;padding:12px 16px 10px;background:#fbf6ea;border-bottom:1.5px dashed #283a8c55}
#kitchen-menu #close-menu{min-height:44px}
#open-menu{min-height:44px!important;min-width:48px}
.regular-heart,.regular-heart svg,.regular-heart img{width:16px!important;height:16px!important}
/* Round 4: the optional wish line in the taste box. */
.taste-result .taste-row .taste-wish{flex:1 0 100%;margin:1px 0 0;font-size:11.5px;line-height:1.2;color:#6a4a8c;font-weight:600}
.taste-result .taste-row .taste-wish[data-met=true]{color:#2e7d5b;font-weight:700}
#ingredients .wish-tip{color:#6a4a8c;font-weight:700}
/* Round 4 serve payoff: your plate, big, in the open middle of the floor; then it shrinks to the table. */
.serve-reveal{position:absolute;left:50%;top:44%;z-index:30;width:min(64cqw,52cqh,330px);display:grid;justify-items:center;gap:2px;padding:10px 12px 8px;border:2.5px solid #283a8c;border-radius:18px 22px 16px 20px;background:#fffaf0;box-shadow:0 6px 0 #283a8c33;color:#283a8c;font:inherit;cursor:pointer;transform:translate(-50%,-50%);animation:rv-in .42s cubic-bezier(.2,.9,.25,1.3) both}
.serve-reveal[hidden]{display:none}
.serve-reveal .rv-plate{position:relative;display:block;width:100%;aspect-ratio:5/4;border-radius:50%;background:#fff;border:3px double #283a8c66}
.serve-reveal canvas{width:100%;height:100%;display:block}
.serve-reveal .rv-sticker{position:absolute;right:2%;top:2%;transform:rotate(12deg);filter:drop-shadow(0 2px 0 #283a8c44)}
.serve-reveal .rv-stars{font-size:clamp(16px,3cqh,22px);display:flex;align-items:center;gap:4px}
.serve-reveal .rv-stars span{font-size:.9em;color:#2e7d5b}
.serve-reveal .rv-line{font-size:clamp(12px,2.2cqh,15px);font-weight:700;text-align:center}
.serve-reveal .rv-wish{font-size:clamp(11px,2cqh,14px);font-style:normal;font-weight:700;color:#2e7d5b;text-align:center}
.serve-reveal .rv-tap{font-size:10.5px;opacity:.65}
.serve-reveal.leaving{animation:rv-out .42s ease-in both}
@keyframes rv-in{from{opacity:0;transform:translate(-50%,-40%) scale(.5) rotate(-6deg)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}
@keyframes rv-out{to{opacity:0;left:var(--tx,50%);top:var(--ty,70%);transform:translate(-50%,-50%) scale(.15)}}
@media(prefers-reduced-motion:reduce){.serve-reveal,.serve-reveal.leaving{animation:none}}
/* Your chef steps to the side of the table while the reveal plays, and the name tag tucks away. */
.chef[data-aside]{transition:translate .25s ease-out!important}
.chef[data-aside=left]{translate:-75% 0}
.chef[data-aside=right]{translate:75% 0}
.chef[data-aside] .chef-name{opacity:0}
/* A granted wish leaves a heart sticker on the table plate. */
.dining-table[data-wish=true]::before{content:"";position:absolute;right:4%;top:-6%;width:22px;height:20px;z-index:2;transform:rotate(12deg);background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 18'%3E%3Cpath d='M10 16.5C4 12 1.5 9 1.8 5.6 2.1 2.6 5.6 1 8 3.1L10 5l2-1.9c2.4-2.1 5.9-.5 6.2 2.5.3 3.4-2.2 6.4-8.2 10.9Z' fill='%23ec88a8' stroke='%23283a8c' stroke-width='1.6' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat}
/* Stirring a pot (a cosy touch). */
.prep-station.stirring .ink-bowl{animation:diner-stir .6s ease-in-out 2}
@keyframes diner-stir{0%,100%{transform:rotate(0)}30%{transform:rotate(-12deg)}70%{transform:rotate(12deg)}}
@media(prefers-reduced-motion:reduce){.prep-station.stirring .ink-bowl{animation:none}}
/* Pointer affordances: everything tappable on the floor says so, and lifts a little on hover. */
#restaurant-scene .dining-table,#restaurant-scene .prep-station,.order-ticket:not([disabled]){cursor:pointer}
@media(hover:hover){
#restaurant-scene .dining-table,#restaurant-scene .prep-station{transition:translate .15s ease-out,filter .15s ease-out}
#restaurant-scene .dining-table:hover,#restaurant-scene .prep-station:hover{translate:0 -3px;filter:drop-shadow(0 3px 0 #283a8c33)}
}
.chef.bump .chef-body,.chef.bump>svg{animation:chef-bump .26s ease-out}
@keyframes chef-bump{40%{translate:var(--bx,0) var(--by,0)}100%{translate:0 0}}
@media(prefers-reduced-motion:reduce){.chef.bump .chef-body,.chef.bump>svg{animation:none}}
/* Round 4 toast: it sits over the prompt bar it replaces (that bar hides while a toast shows), so it never
   covers the doormat, the cat or the guests. Two lines at most. */
@media(min-height:501px){
#kitchen-notice:not(:empty){bottom:calc(4px + env(safe-area-inset-bottom,0px))!important;left:12px!important;right:12px!important;padding:4px 10px!important;line-height:1.25;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;z-index:40}
body:has(#dash-toggle:not([hidden])) #kitchen-notice:not(:empty){right:12px!important}
}
.serve-reveal{top:40%}
@media(min-height:501px){
#kitchen-notice:not(:empty){bottom:calc(10px + env(safe-area-inset-bottom,0px))!important;min-height:36px;align-content:center}
body:has(#kitchen-notice:not(:empty)) .room-footer>*{visibility:hidden}
}
/* Puddles keep one shape at every aspect and stay a tile wide, sitting low on their tile so guests'
   order bubbles are never painted over them. */
#restaurant-scene .puddle{width:min(6.6cqw,15cqh)!important;height:auto!important;aspect-ratio:1.7;transform:translate(-50%,-25%)!important}
@media(max-width:520px){.your-move{font-size:15px!important;padding:3px 10px!important}}
.serve-reveal{pointer-events:none;cursor:default}
/* Wide, short floors (landscape phones): plate on the left, words on the right. */
@container (min-aspect-ratio: 2/1){
.serve-reveal{width:auto;max-width:78cqw;grid-template-columns:auto minmax(150px,auto);grid-template-rows:auto auto auto;column-gap:12px;align-items:center;justify-items:start;padding:8px 14px 8px 8px;top:42%}
.serve-reveal .rv-plate{grid-row:1/4;width:auto;height:min(64cqh,200px)}
.serve-reveal .rv-line,.serve-reveal .rv-wish{text-align:left;font-size:13px}
.serve-reveal .rv-stars{font-size:18px}
}
@media(max-width:360px) and (min-height:501px),(max-width:480px) and (max-height:700px){
#prep-dialog.one-screen #taste-result{grid-template-columns:minmax(0,1fr)!important}
#prep-dialog.one-screen #taste-result .taste-face{display:none!important}
#prep-dialog.one-screen #taste-result strong,#prep-dialog.one-screen #taste-result .taste-row{grid-column:1!important}
#prep-dialog.one-screen #serve{min-width:0!important;max-width:104px;padding:4px 8px!important}
#prep-dialog.one-screen #serve .serve-to{white-space:normal!important;font-size:11px!important}
}
