:root{--ink:#101216;--panel:#191e24;--line:#38404b;--text:#eee8d7;--muted:#8c98a3;--red:#ff5938;--amber:#ffbd56;--blue:#63c9e6;--success:#b2df71;font-family:'Noto Sans CJK JP','Yu Gothic',sans-serif;color:var(--text);background:var(--ink);font-synthesis:none;color-scheme:dark}
*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 50% 15%,#252325 0,transparent 65%),#101216}button,input,select{font:inherit}button,select{cursor:pointer}button{color:inherit}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible,select:focus-visible{outline:2px solid var(--amber);outline-offset:5px}button:disabled{cursor:default;opacity:.35}[hidden]{display:none!important}svg{display:block}button,select{-webkit-tap-highlight-color:transparent;touch-action:manipulation}
.app{max-width:1280px;margin:auto;padding:28px 48px 12px}.header{display:flex;align-items:center;justify-content:space-between;margin-bottom:22px}.brand{display:flex;gap:17px;align-items:center}.brand-mark{display:grid;place-items:center;width:58px;height:66px;color:var(--ink);background:var(--red);font-size:35px;font-weight:900;border-top:5px solid #ff9c6b;border-bottom:5px solid #9e3428;box-shadow:4px 4px 0 #07090d}.eyebrow{display:block;font-size:11px;font-weight:700;letter-spacing:.18em;margin-bottom:10px;color:var(--red)}.eyebrow span{font-size:8px;color:var(--muted);letter-spacing:.09em;margin-left:8px}h1{margin:0;line-height:1}.wordmark{width:245px;height:49px;filter:drop-shadow(3px 3px 0 #c54b30);image-rendering:pixelated}.header-right{display:flex;align-items:center;gap:10px}.day-tag{font-size:11px;letter-spacing:.1em;color:#b1afa6;margin-right:18px}.day-tag i{display:inline-block;width:6px;height:6px;background:var(--red);box-shadow:0 0 12px #ff593870;margin-right:9px}.icon-button{width:36px;height:36px;background:#1e2227;border:1px solid #3d424a;box-shadow:2px 2px 0 #07090c;display:grid;place-items:center;font-size:17px}.icon-button:hover{background:#34353a}

.game-shell{border:2px solid #484a4b;box-shadow:0 0 0 5px #202328,0 9px 0 5px #090b0e,0 24px 60px #0007;background:#13191f;overflow:hidden}.game-toolbar{height:65px;padding:12px 23px;display:flex;justify-content:space-between;align-items:center;background:#1d2228;border-bottom:3px solid #080d13}.shift-label{display:flex;align-items:center;gap:12px;font-weight:700;font-size:14px;letter-spacing:.1em}.stage-number{font:bold 28px ui-monospace,monospace;color:var(--red);border-right:1px solid #494741;padding-right:13px}.tiny{display:block;font:8px ui-monospace,monospace;color:#a0a6ac;letter-spacing:.13em;margin-top:6px}.toolbar-right{display:flex;align-items:center;gap:22px}.pace-label{font-size:9px;color:var(--muted)}.pace-label select{margin-left:8px;padding:6px 7px;border:1px solid #444b52;background:#10171d;color:#bbc0c0;font-size:10px;border-radius:0}.served{display:flex;align-items:center;gap:9px;font:11px ui-monospace,monospace;color:#9199a0}.served strong{font:bold 25px ui-monospace,monospace;color:var(--amber)}.heart{font-size:8px;letter-spacing:.1em;color:var(--amber)}
.scene{height:506px;position:relative;overflow:hidden;background:#111b29;isolation:isolate;--stage-image:none;--lamp-opacity:1;--scene-shade:.23}.stage-backdrop{position:absolute;inset:0;background-image:linear-gradient(#080b13 0%,#080b13 100%),var(--stage-image);background-blend-mode:screen,normal;background-size:cover;background-position:center 55%;image-rendering:pixelated}.stage-backdrop:after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,#030910a1 0%,#03091022 28%,#03091033 83%,#03091080 100%);opacity:var(--scene-shade)}.scene:after{content:'';position:absolute;inset:0;z-index:7;pointer-events:none;background:repeating-linear-gradient(transparent 0,transparent 3px,#03060c18 3px,#03060c18 4px);opacity:.5}.scene[data-stage="1"]{--lamp-opacity:.25;--scene-shade:.12}.scene[data-stage="2"]{--lamp-opacity:.8;--scene-shade:.2}.alley{position:absolute;inset:0;opacity:.5}.stage-backdrop.loaded~.alley{display:none}.moon{position:absolute;right:18%;top:17px;width:49px;height:49px;background:#babfaf;box-shadow:0 0 30px #bbc3ad13;clip-path:polygon(20% 0,80% 0,80% 10%,100% 10%,100% 80%,80% 80%,80% 100%,20% 100%,20% 90%,0 90%,0 20%,20% 20%)}.buildings{position:absolute;inset:0;background:#182636;clip-path:polygon(0 20%,8% 20%,8% 0,20% 0,20% 13%,33% 13%,33% 4%,44% 4%,44% 22%,62% 22%,62% 8%,75% 8%,75% 28%,86% 28%,86% 12%,100% 12%,100% 100%,0 100%)}.buildings-front{inset:125px 0 0 0;background:repeating-linear-gradient(90deg,#0e1622 0 19px,#17202b 19px 21px);clip-path:none;border-top:10px solid #25313e}.shopfront{position:absolute;left:20%;right:21%;top:75px;bottom:0;background:repeating-linear-gradient(0deg,transparent 0 39px,#090e1680 39px 42px),repeating-linear-gradient(90deg,#332c2a 0 74px,#10151e 74px 80px);border:10px solid #19232d}.cables{position:absolute;left:0;right:0;top:45px;height:1px;background:#070b12;transform:rotate(-4deg);box-shadow:0 12px 0 #070b12}.side-sign{position:absolute;right:30px;top:95px;background:#933a2e;border:4px solid #16181b;padding:14px 8px;font-size:22px;font-weight:900;box-shadow:0 0 18px #eb4d2d30;color:#efbb7d;writing-mode:vertical-rl;letter-spacing:.4em}.side-sign span{color:#f4d2a0}.vending-machine{position:absolute;right:18px;bottom:34px;width:63px;height:135px;border:5px solid #263441;background:#833e31;box-shadow:7px 5px 0 #0b111a}.vending-machine span{display:block;text-align:center;color:#f9cf86;font-size:10px;padding:8px 0;background:#b8663c}.vending-machine i{display:inline-block;background:#7cafc2;width:7px;height:16px;margin:10px 0 0 7px;box-shadow:0 24px 0 #bfac75}.alley-floor{position:absolute;bottom:0;height:60px;left:0;right:0;background:repeating-linear-gradient(0deg,#222d37 0 13px,#101821 13px 15px)}
.roof{position:absolute;left:0;right:0;top:0;height:20px;background:repeating-linear-gradient(90deg,#191b23 0 24px,#404047 24px 28px,#22252d 28px 48px);border-bottom:5px solid #0c1018;z-index:6;box-shadow:0 9px 0 #080c143d}.lantern{position:absolute;top:30px;z-index:5;width:36px;height:59px;border:3px solid #391719;background:repeating-linear-gradient(0deg,#d73d26 0 7px,#ef5b32 7px 9px);color:#301619;text-align:center;font-size:15px;font-weight:900;line-height:1.4;box-shadow:inset 5px 0 0 #ad2f2380,inset -5px 0 0 #ad2f2370;clip-path:polygon(15% 0,85% 0,85% 8%,100% 8%,100% 90%,85% 90%,85% 100%,15% 100%,15% 90%,0 90%,0 8%,15% 8%)}.lantern span{display:block;padding-top:5px}.lantern-one{left:25px}.lantern-two{right:30px;top:39px;transform:scale(.85)}.lantern-light{position:absolute;top:-70px;width:340px;height:350px;background:radial-gradient(ellipse,#ff68373b 0,#ff7b2520 24%,#ff8f1b08 48%,transparent 68%);mix-blend-mode:screen;opacity:var(--lamp-opacity);pointer-events:none;z-index:4}.lantern-light.left{left:-123px}.lantern-light.right{right:-120px}.kitchen-sign{position:absolute;top:128px;left:18px;font-size:15px;letter-spacing:.2em;color:#e8b06e;border-top:2px solid #966041;border-bottom:2px solid #966041;padding:7px 9px;background:#161617b3;text-align:center}.kitchen-sign span{font:7px ui-monospace,monospace;display:block;letter-spacing:.05em;margin-top:5px;color:#8d8479}.lanes{position:absolute;inset:61px 12% 18px 17%}.lane{position:absolute;inset:calc(var(--row)*145px) 0 auto;height:130px}.counter{position:absolute;left:-12px;right:0;top:97px;height:29px;background:repeating-linear-gradient(90deg,#693f2f 0 69px,#583426 69px 72px);border-top:5px solid #d59b56;border-bottom:6px solid #2a2020;box-shadow:0 5px 0 #080d1580;z-index:3}.counter:before{content:'';position:absolute;inset:0 0 auto;height:7px;background:#a36b40;border-bottom:2px solid #c08a4d}.counter:after{content:'';position:absolute;left:7px;right:7px;top:12px;height:2px;background:#392524}.lane-number{position:absolute;left:9px;top:113px;font:8px ui-monospace,monospace;z-index:4;color:#c99559}.customer{position:absolute;bottom:25px;left:82%;width:72px;height:88px;transform:translateX(-50%);z-index:2;will-change:left}.animal{width:100%;height:100%;overflow:visible;image-rendering:pixelated;filter:drop-shadow(3px 3px 0 #070a1366)}.customer.walking .animal{animation:walk .7s steps(2,end) infinite}.customer.leaving .animal{transform:scaleX(-1)}.customer.eating .animal{animation:munch .23s steps(2,end) infinite alternate}.order{position:absolute;bottom:88px;left:50%;transform:translateX(-50%);display:flex;align-items:center;justify-content:center;gap:8px;white-space:nowrap;padding:6px 10px 8px;background:#151b25f5;border:1px solid #65727c;box-shadow:3px 3px 0 #070b13;min-width:91px}.order:after{content:'';position:absolute;bottom:-6px;left:50%;height:6px;width:6px;background:#65727c;clip-path:polygon(0 0,100% 0,0 100%)}.order-word{font-size:16px;font-weight:700;letter-spacing:.04em}.food-icon{width:25px;height:25px}.food-icon svg{width:100%;height:100%;image-rendering:pixelated}.order-progress{position:absolute;bottom:0;left:0;right:0;height:3px;background:#394049;overflow:hidden}.order-progress span{height:100%;width:0;background:var(--success);display:block;transition:width .1s}.customer.selected .order{border-color:var(--amber);box-shadow:0 0 0 1px #ffbd5633,3px 3px 0 #080c13}.customer.selected:after{content:'';position:absolute;bottom:0;left:4px;right:4px;height:3px;background:var(--amber);box-shadow:0 0 10px #ffbd5655}.delivery{position:absolute;left:0;top:66px;width:36px;height:32px;z-index:5;filter:drop-shadow(0 2px 0 #0b101a)}.delivery svg{width:100%;height:100%;image-rendering:pixelated}.delivery:after{content:'';position:absolute;height:4px;bottom:-1px;left:-4px;right:-4px;background:#b8c2c5;border-bottom:2px solid #677d8f}.chef{position:absolute;left:5%;top:66px;width:86px;height:112px;transition:top .17s steps(4,end);z-index:5}.chef #chef-art{width:100%;height:100%}.chef-message{position:absolute;top:-22px;left:0;color:#e6b781;background:#1a1d22e6;white-space:nowrap;font-size:9px;border-left:2px solid var(--red);padding:4px 6px}.chef-tray{position:absolute;bottom:9px;right:-11px;width:49px;height:9px;border-top:3px solid #d9c39b;background:#6d7782;box-shadow:0 3px 0 #171e28}.chef-tray span{position:absolute;bottom:6px;height:8px;background:var(--amber);width:0;transition:width .1s}.dropped-tray{display:none;position:absolute;bottom:12px;right:0;font-size:40px;color:#d3b986}.chef.oops .dropped-tray{display:block;animation:drop .5s steps(5,end) forwards}.chef.oops .chef-tray{animation:wobble .2s steps(2,end)}.supply-crates{position:absolute;bottom:7px;left:16px;display:flex;align-items:end;gap:5px;z-index:2}.supply-crates span{display:grid;place-items:center;width:41px;height:33px;background:#4a3730;border:3px solid #79513b;box-shadow:inset 0 5px 0 #593c2d;color:#b18a5b;font-size:14px;transform:rotate(-3deg)}.supply-crates span+span{height:42px;transform:rotate(0)}.scene-caption{position:absolute;bottom:8px;right:15px;font:7px ui-monospace,monospace;color:#d6c4a490;letter-spacing:.16em;z-index:5}
.typing-panel{position:relative;display:flex;align-items:center;gap:23px;min-height:154px;padding:21px 28px;background:#1b2026;border-top:4px solid #080c13;box-shadow:inset 0 1px 0 #4b4c4a}.panel-icon{width:68px;height:68px;flex-shrink:0;display:grid;place-items:center;background:#10171f;border:1px solid #39434e;box-shadow:3px 3px 0 #0d1117}.panel-icon svg{width:44px;height:44px;image-rendering:pixelated}.typing-content{flex:1;min-width:0}.typing-label{font-size:10px;letter-spacing:.08em;color:#b0a38f;margin-bottom:7px;min-height:16px}.kana{font-size:28px;line-height:1.4;letter-spacing:.08em;font-weight:700;white-space:nowrap}.kana .done,.romaji .done{color:var(--success)}.kana .remaining,.romaji .remaining{color:var(--text);opacity:.35}.romaji{font:11px ui-monospace,monospace;letter-spacing:.14em;color:#98a2ab;margin-top:7px;min-height:19px}.romaji.playing{font-size:18px;letter-spacing:.2em}.romaji .next{color:var(--text);opacity:.5;border-bottom:2px solid var(--amber);padding-bottom:2px}.typing-field{position:relative}.is-playing .typing-field{min-height:88px;padding:10px 16px;background:#0d1218;border:1px solid #4a535d;box-shadow:inset 3px 3px 0 #05090e;cursor:text}.is-playing .typing-field:focus-within{border-color:#82917f;box-shadow:inset 3px 3px 0 #05090e,0 0 0 1px #b2df7110}.is-playing .kana{min-height:40px}.is-playing .kana:empty:before{content:'';display:inline-block;width:3px;height:27px;background:var(--success);margin-top:5px}.typing-input{position:absolute;width:1px;height:1px;opacity:0;bottom:5px;left:50%;border:0;padding:0}.is-playing .typing-input{inset:0;width:100%;height:100%;cursor:text}.idle-keyboard{font-size:26px;color:#7b8c99}.panel-action{display:flex;flex-direction:column;align-items:center;gap:13px}.primary-button{border:0;border-top:2px solid #ffa175;background:var(--red);color:#14151b;padding:13px 24px;box-shadow:0 4px 0 #9e3126,4px 6px 0 #090d13;font-weight:800;font-size:14px;letter-spacing:.12em;white-space:nowrap}.primary-button:hover{background:#ff7954}.primary-button:active{transform:translateY(2px);box-shadow:0 2px 0 #9e3126}.primary-button span{margin-left:22px;font-size:13px}.warmup-button{border:0;border-bottom:1px solid #64717a;color:#a6b1b9;background:none;font-size:9px;padding:3px 0;letter-spacing:.08em}.warmup-button:hover{color:var(--text)}.key-hint{text-align:center;border-left:1px solid #39414a;padding-left:23px;min-width:75px}.key-hint>span{display:block;font-size:8px;color:#969fa8;margin-bottom:8px}kbd{font:inherit;background:#29313a;border:1px solid #64717b;border-bottom:4px solid #485561;padding:4px 9px;color:#e5dec8}#next-key{display:inline-grid;place-items:center;min-width:40px;height:40px;font:22px ui-monospace,monospace;color:var(--amber)}.is-playing #key-hint[hidden]{display:block!important;visibility:hidden}.typing-panel.mistake{animation:panel-mistake .3s}.footer{display:flex;justify-content:space-between;align-items:center;gap:15px;padding:21px 0;font-size:9px;color:#78838f}.footer strong{color:#b0b8b8;font-weight:500}.keyboard-icon{font-size:17px;vertical-align:-2px;margin-right:5px}.footer-code{color:#ad654c;font:9px ui-monospace,monospace;letter-spacing:.1em}
.overlay{position:absolute;inset:0;background:#080d16d9;z-index:10;display:grid;place-items:center}.pause-card{text-align:center;padding:30px}.tea{font:bold 42px ui-monospace,monospace;color:var(--red)}h2{font-size:23px;letter-spacing:.1em}.pause-card p{font-size:12px;color:#abb4b9;margin-bottom:25px}.warmup-guide{position:absolute;bottom:30px;left:50%;transform:translateX(-50%);z-index:9;width:max-content;max-width:95%;text-align:center;background:#121a25f5;border:1px solid #6e7e8a;box-shadow:5px 5px 0 #060b12;padding:24px 22px 13px;color:#a3b0b9;font-size:9px}.warmup-guide>span:first-child{position:absolute;top:8px;left:65px}.warmup-guide>span:nth-of-type(2){position:absolute;top:8px;right:65px}.home-keys{display:flex;gap:5px;align-items:center}.home-keys>span{width:12px}.home-keys kbd{position:relative;display:grid;place-items:center;width:33px;height:36px;padding:0;font:15px ui-monospace,monospace}.home-key i{position:absolute;bottom:4px;left:10px;width:10px;height:2px;background:#c4c4b7}.home-key.lit{background:var(--red);color:var(--ink);border-color:#f68f65}.home-key.lit i{background:#68271e}.warmup-guide p{font-size:10px;margin:12px 0 0}dialog{max-width:510px;width:calc(100% - 40px);border:2px solid #758087;background:#171e27;color:var(--text);padding:36px;box-shadow:8px 8px 0 #080b10}dialog::backdrop{background:#02070bdc}dialog h2{font-size:20px;line-height:1.6}dialog ol{padding-left:22px;font-size:13px;line-height:2.8}dialog p{font-size:12px;line-height:2;color:#a9b5be}.close-button{position:absolute;right:12px;top:8px;border:0;background:none;color:#a5acb3;font-size:26px}.help-keys{font-size:10px!important;margin:22px 0}.help-keys kbd{padding:3px 6px}.celebration{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:11}.confetti{position:absolute;top:-20px;width:6px;height:12px;background:var(--color);animation:confetti 3s var(--delay) steps(30,end) forwards;left:var(--left)}
.clear-card{width:min(430px,85%);text-align:center;background:#171e27;border:2px solid var(--amber);box-shadow:6px 6px 0 #03070e;padding:24px}.clear-card .eyebrow{color:var(--amber);font-family:ui-monospace,monospace;letter-spacing:.25em}.clear-card h2{margin:10px 0 15px}.next-stage-preview{position:relative;height:132px;margin:16px 0 21px;overflow:hidden;border:1px solid #5e6770}.next-stage-preview img{width:100%;height:100%;object-fit:cover;image-rendering:pixelated}.next-stage-preview span{position:absolute;bottom:0;left:0;right:0;padding:8px;background:#080d17d9;font-size:12px;letter-spacing:.1em}.clear-card>p{font-size:11px;color:#a9b4bb}.clear-card .primary-button{font-size:12px}
@keyframes walk{50%{translate:0 -2px}}@keyframes munch{to{translate:0 3px}}@keyframes drop{to{transform:translate(25px,65px) rotate(80deg);opacity:0}}@keyframes wobble{50%{transform:rotate(18deg)}}@keyframes panel-mistake{50%{background:#3e2524}}@keyframes confetti{to{transform:translate(30px,530px) rotate(380deg);opacity:0}}
@media(max-width:900px){.app{padding:22px}.day-tag{display:none}.wordmark{width:210px;height:42px}.scene{height:495px}.lanes{left:19%;right:10%;top:55px}.chef{left:3%;width:80px}.kitchen-sign{left:9px;font-size:12px;padding:6px}.typing-panel{padding:20px;gap:16px}.kana{font-size:24px}.panel-icon{width:55px;height:55px}.toolbar-right{gap:13px}.primary-button{padding:12px 16px}.footer{font-size:8px}}
@media(max-width:600px){.app{padding:17px 10px}.header{padding:0 3px;margin-bottom:20px}.brand{gap:12px}.brand-mark{width:39px;height:49px;font-size:27px}.wordmark{width:175px;height:35px}.eyebrow{font-size:9px;margin-bottom:8px}.eyebrow span{font-size:6px;margin-left:4px}.header-right{gap:6px}.icon-button{height:30px;width:30px}.game-toolbar{height:64px;padding:10px}.shift-label{font-size:12px;gap:8px;letter-spacing:.04em}.stage-number{font-size:23px;padding-right:8px}.tiny{font-size:6px;letter-spacing:0}.toolbar-right{gap:9px}.pace-label{font-size:0}.pace-label select{font-size:9px;margin:0;padding:5px}.served{gap:3px;font-size:9px}.served strong{font-size:21px}.heart{display:none}.scene{height:450px}.lanes{left:23%;right:10%;top:55px}.lane{top:calc(var(--row)*132px)}.customer{width:54px;height:72px}.order{padding:5px 6px 7px;bottom:70px;gap:5px;min-width:70px}.order-word{font-size:13px}.food-icon{width:20px;height:20px}.chef{left:1%;width:66px;height:96px}.chef-message{font-size:7px;padding:3px 4px;top:-17px}.chef-tray{width:34px;right:-5px}.kitchen-sign{top:136px;left:4px;padding:5px;font-size:9px}.kitchen-sign span{font-size:5px}.lantern-one{left:20px;top:30px;transform:scale(.8);transform-origin:top left}.lantern-two{right:6px;transform:scale(.7);transform-origin:top right}.supply-crates{left:5px;bottom:6px;gap:2px}.supply-crates span{width:27px;height:26px;font-size:10px}.supply-crates span+span{height:33px}.scene-caption{font-size:5px;right:6px}.typing-panel{padding:15px 12px;gap:10px;min-height:160px;flex-wrap:wrap}.panel-icon{width:42px;height:48px}.panel-icon svg{width:33px;height:33px}.typing-content{min-width:150px}.typing-label{font-size:8px;min-height:14px;letter-spacing:.01em}.kana{font-size:20px;letter-spacing:.02em}.romaji{font-size:9px}.romaji.playing{font-size:16px}.is-playing .typing-field{padding:10px;min-height:80px}.is-playing .kana{min-height:30px}.is-playing .kana:empty:before{height:23px;margin-top:2px}.key-hint{padding-left:10px;min-width:44px}.key-hint>span{font-size:7px}#next-key{min-width:30px;height:34px;font-size:18px}.panel-action{width:100%;flex-direction:row;justify-content:center;gap:20px}.primary-button{font-size:12px;padding:10px 18px}.warmup-button{font-size:8px}.home-keys{gap:3px}.home-keys kbd{width:29px}.home-key i{left:8px}.warmup-guide{padding-inline:12px}.footer{flex-wrap:wrap;justify-content:center;gap:6px;padding:18px 0}.footer>span:nth-child(2){width:100%;text-align:center}.footer-code{display:none}.clear-card{padding:18px}.clear-card h2{font-size:20px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
.pixel-food{width:100%;height:100%;object-fit:contain;image-rendering:pixelated}
.delivery.consuming{transform-origin:50% 100%}
.delivery.consuming:after{display:none}
.panel-icon .pixel-food{width:44px;height:44px}
@media(max-width:600px){.panel-icon .pixel-food{width:33px;height:33px}}

/* The portable stall is a single foreground set, with scenery beyond it. */
.stall-backwall{position:absolute;left:0;top:19px;bottom:0;width:16%;background:linear-gradient(90deg,#161719e8,#2c221ded),repeating-linear-gradient(90deg,#573a2b 0 18px,#35281f 18px 21px);border-bottom:9px solid #513525;box-shadow:inset -8px 0 0 #14171a,10px 0 20px #090e1740;z-index:1}
.stall-backwall:after{content:'';position:absolute;inset:0;background:repeating-linear-gradient(0deg,transparent 0 45px,#9d683326 45px 47px);border-right:2px solid #99653a55}
.stall-post{position:absolute;top:15px;bottom:8px;width:16px;background:linear-gradient(90deg,#291b19 0 3px,#795033 3px 7px,#493123 7px 13px,#2a211e 13px);z-index:1;border-bottom:8px solid #22262b;box-shadow:5px 3px 0 #080c1359}
.stall-post:before,.stall-post:after{content:'';position:absolute;left:-2px;right:-2px;height:12px;background:#282a2a;border-block:2px solid #62605a}.stall-post:before{top:12px}.stall-post:after{bottom:29px}.post-left{left:15%}.post-right{right:6%}
.stall-lintel{position:absolute;top:20px;left:14%;right:5%;height:12px;background:#553824;border-top:3px solid #9e6b40;border-bottom:4px solid #281e1a;z-index:2;box-shadow:0 7px 0 #0a0c1329}
.kitchen-sign{z-index:2}.lanes{z-index:2}.lantern,.roof{z-index:6}.supply-crates{z-index:3}
.lane-deck{position:absolute;left:-19px;right:-25px;top:142px;height:10px;background:repeating-linear-gradient(90deg,#574333 0 45px,#352d26 45px 47px);border-top:2px solid #816144;border-bottom:4px solid #252325;box-shadow:0 6px 0 #0a0d1666;z-index:0}
.lane-deck:before{content:'';position:absolute;left:17px;right:17px;top:-6px;height:8px;background:#05080e80;filter:blur(2px)}
.table-supports{position:absolute;top:121px;left:-12px;right:0;height:25px;z-index:1}.table-supports i{position:absolute;top:0;bottom:0;left:22px;width:13px;background:#5c3c2c;border-left:4px solid #9d6a40;border-right:3px solid #2b2220;box-shadow:5px 2px 0 #0b111a80}.table-supports i:nth-child(2){left:auto;right:23px}.table-supports span{position:absolute;left:28px;right:28px;bottom:5px;height:5px;background:#593b29;border-top:1px solid #8c5b35}
.customer{width:56px;height:64px;left:100%}.order{bottom:64px;padding:4px 8px 6px}.order .food-icon{width:24px;height:24px}
@media(max-width:900px){.stall-backwall{width:18%}.post-left{left:17%}.post-right{right:5%}.stall-lintel{left:16%;right:4%}}
@media(max-width:600px){.scene{height:470px}.stall-backwall{width:22%}.post-left{left:20%}.post-right{right:3%}.stall-post{width:12px}.stall-lintel{left:19%;right:2%}.customer{width:48px;height:56px}.order{bottom:56px;padding:4px 6px 6px}.order .food-icon{width:20px;height:20px}.lane-deck{left:-13px;right:-17px}.table-supports i{left:13px;width:10px}.table-supports i:nth-child(2){right:12px}.table-supports span{left:17px;right:17px}}

/* Arcade stage: scenery at the back, one simple ground plane for the action. */
.scene{--floor-color:#343b40}
.scene[data-stage="1"]{--floor-color:#9a895f}
.scene[data-stage="2"]{--floor-color:#4b4544}
.stage-backdrop{bottom:auto;height:190px;background-size:cover;background-position:center 28%}
.arena-floor{position:absolute;inset:160px 0 0;background-color:var(--floor-color);background-image:linear-gradient(#080e183d,transparent 80px),url('assets/floor.svg');background-size:100% 100%;border-top:5px solid #17212a;box-shadow:inset 0 5px 0 #ffffff0d;image-rendering:pixelated}
.stall-lintel,.stall-post,.lane-deck{display:none}
.stall-backwall{background:repeating-linear-gradient(90deg,#2e2623 0 18px,#221f20 18px 21px);border-right:5px solid #705139;box-shadow:8px 0 0 #10151c55}
.counter{box-shadow:0 5px 0 #090f1840}
.table-supports:after{content:'';position:absolute;left:8px;right:-9px;bottom:-5px;height:8px;background:#080e184f;transform:skewX(-30deg);z-index:-1}
@media(max-width:600px){.arena-floor{top:155px}.stage-backdrop{height:180px;background-position:center 28%}}

/* A2 room: one art coordinate system for all stages and live actors. */
.app{max-width:1440px;padding:20px 30px 12px}
.header{margin-bottom:16px}.brand-mark{width:40px;height:47px;font-size:25px}.wordmark{width:190px;height:38px}.eyebrow{font-size:9px;margin-bottom:5px}
.game-shell{border-color:#584331;background:#171411;box-shadow:0 0 0 4px #241c17,0 8px 0 4px #080807,0 20px 50px #0006}
.game-toolbar{background:#1c1917;border-bottom:2px solid #62442d;height:59px}.stage-number{color:#de9959}
.scene{height:auto;aspect-ratio:1536 / 780;background:#15110e}.scene:after{display:none}
.room-world{position:absolute;left:0;top:0;width:1536px;height:780px;transform-origin:top left;overflow:hidden}
.room-backdrop{position:absolute;left:0;top:-90px;width:1536px;height:1024px;max-width:none;image-rendering:pixelated}
.room-world .lanes{inset:0;top:-90px;width:1536px;height:1024px;z-index:2}
.room-world .lane{right:auto;bottom:auto;height:235px}
.room-world .customer{top:72px;bottom:auto;width:109.5px;height:146px;z-index:2}
.room-world .customer-art{width:100%;height:146px;overflow:hidden}
.room-world .customer-art .animal{width:109.5px;height:146px;max-width:none;filter:none;object-fit:contain;object-position:center bottom}
.room-world .customer.selected:after{display:none}
.room-world .order{bottom:auto;top:-68px;min-width:176px;padding:9px 12px 12px;gap:10px;background:#10171df5;border:2px solid #6b757b;box-shadow:3px 3px 0 #080c10}
.room-world .order-word{font-size:28px;line-height:1.2;color:#c4bdaba6;letter-spacing:0}
.room-world .order-word .done{color:var(--success)}.room-world .order-word .remaining{color:#c4bdaba6}
.room-world .order .food-icon{width:34px;height:34px;flex-shrink:0}.room-world .order-progress{height:5px}
.room-world .delivery{top:158px;width:44px;height:44px;translate:-50% 0;filter:none}.room-world .delivery:after{display:none}
.room-world .chef{margin-top:-90px;width:99px;height:132px;transition:top .17s linear,left .17s linear;z-index:4}
.room-world .chef .animal{filter:none}.room-world .chef-message,.room-world .chef-tray{display:none}
.room-world .dropped-tray{left:76px;top:63px;right:auto;bottom:auto;width:48px;height:24px;image-rendering:pixelated;pointer-events:none;transform-origin:center;opacity:0}
.room-world .chef.oops .dropped-tray{animation:tray-fumble .55s steps(6,end) forwards}
@keyframes tray-fumble{0%{transform:translate(0,0) rotate(-12deg);opacity:1}35%{transform:translate(20px,-9px) rotate(24deg);opacity:1}75%{transform:translate(38px,25px) rotate(105deg);opacity:1}100%{transform:translate(40px,22px) rotate(95deg);opacity:0}}
.typing-panel{background:#17191a;border-top:7px solid #4d3222;box-shadow:inset 0 2px 0 #8e5c34;padding:18px 26px;min-height:136px}
.panel-icon{background:#111416;border-color:#4b4540}.is-playing .typing-field{background:#0c1012;border-color:#665d4c}.primary-button{background:#d28b50;border-color:#f0bb80;box-shadow:0 4px 0 #724626,4px 6px 0 #090806}.primary-button:hover{background:#e3a264}
@media(max-width:600px){.app{padding:12px 8px}.header{padding:0}.wordmark{width:146px;height:30px}.brand{gap:9px}.brand-mark{width:30px;height:38px;font-size:21px}.game-toolbar{height:56px;padding:8px}.typing-panel{padding:12px;min-height:150px}.room-world .order-word{font-size:34px}.room-world .order{padding:8px 10px 12px}.room-world .order .food-icon{width:36px;height:36px}}

/* Cosmetic chef selection and the hanging opening sign. */
.chef-picker{display:flex;align-items:center;gap:7px;height:38px;padding:2px 10px 2px 3px;border:1px solid #6a503a;background:#201b17;color:#e6c8a4;font-size:10px;cursor:pointer}.chef-picker img{width:29px;height:33px;object-fit:contain;image-rendering:pixelated}.chef-picker:hover{border-color:#d5a16c}
.room-world #chef-art{position:relative}.room-world .chef-sprite{object-fit:contain;object-position:center bottom;image-rendering:pixelated}
.start-menu{position:absolute;left:50%;top:49%;transform:translate(-50%,-50%);z-index:9;width:316px;padding:20px 25px 18px;gap:12px;background:linear-gradient(#29201b,#191513);border:5px solid #805335;box-shadow:inset 0 0 0 2px #b7804b,0 7px 0 #0c0b0ad9,0 12px 35px #0008}
.start-menu:before,.start-menu:after{content:'';position:absolute;top:-83px;width:5px;height:79px;background:repeating-linear-gradient(0deg,#b58b54 0 5px,#725333 5px 8px);box-shadow:2px 0 0 #19120f}.start-menu:before{left:36px}.start-menu:after{right:36px}
.start-kicker{font-size:11px;letter-spacing:.2em;color:#b7a185}.chosen-chef{display:flex;align-items:center;justify-content:center;gap:12px;width:100%;padding:0 4px;background:transparent;border:0;color:#f1d8b5;cursor:pointer}.chosen-chef img{height:63px;width:51px;object-fit:contain;image-rendering:pixelated}.chosen-chef span{font-size:19px;font-weight:bold}.chosen-chef small{font-size:10px;color:#c19365}.chosen-chef:hover small{color:#ffe2b0}.start-menu #start{width:100%;font-size:24px;padding:13px 20px;letter-spacing:.1em}.start-menu #start span{margin-left:14px}.start-menu .warmup-button{font-size:10px;color:#baa48b}
.chef-dialog{width:min(670px,calc(100% - 32px));max-width:670px;padding:30px 28px 25px;background:#171615;border:3px solid #a77749;text-align:center}.chef-dialog h2{margin:9px 0 22px}.chef-dialog .eyebrow{color:#bca283;letter-spacing:.12em}.chef-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:13px;margin:0 0 24px}.chef-choice{position:relative;min-width:0;padding:13px 8px 16px;background:radial-gradient(ellipse at 50% 75%,#53412c 0,transparent 68%),#201d19;border:2px solid #514337;color:#bdac98;cursor:pointer}.chef-portrait{height:186px;display:flex;align-items:end;justify-content:center;margin-bottom:14px}.chef-portrait img{width:100%;height:100%;object-fit:contain;image-rendering:pixelated;filter:drop-shadow(0 4px 0 #090b0ba0)}.chef-choice strong{font-size:17px;letter-spacing:.08em}.chef-choice[aria-pressed=true]{border-color:#efb76b;color:#ffe3b8;background:radial-gradient(ellipse at 50% 75%,#785234 0,transparent 70%),#30241c;box-shadow:0 0 0 1px #efb76b}.choice-mark{position:absolute;top:7px;right:8px;font-size:14px;color:#f0bc78;visibility:hidden}.chef-choice[aria-pressed=true] .choice-mark{visibility:visible}.chef-choice:hover{border-color:#a57c53}
@media(max-width:600px){.chef-picker{width:31px;height:32px;padding:0;justify-content:center}.chef-picker img{height:28px;width:25px}.chef-picker span{display:none}.start-menu{width:236px;top:51%;padding:9px 15px 10px;gap:6px;border-width:3px;flex-direction:column}.start-menu:before,.start-menu:after{height:32px;top:-35px;width:4px}.start-kicker{font-size:8px}.chosen-chef img{height:35px;width:30px}.chosen-chef span{font-size:14px}.chosen-chef small{font-size:9px}.start-menu #start{font-size:19px;padding:8px 14px}.start-menu .warmup-button{font-size:8px}.chef-dialog{padding:27px 14px 18px}.chef-dialog h2{font-size:19px;margin-bottom:16px}.chef-options{gap:7px;margin-bottom:19px}.chef-choice{padding:9px 3px 12px}.chef-portrait{height:130px;margin-bottom:10px}.chef-choice strong{font-size:13px}.chef-dialog .eyebrow{font-size:8px}}

/* Round progression is independent of the room catalog. */

.stage-number{display:inline-flex;align-items:baseline;gap:7px;line-height:1.05;white-space:nowrap;font-variant-numeric:tabular-nums;padding:6px 10px;background:#302319;border:1px solid #91653e;color:#ffd18c}
.stage-number small{font-size:11px;font-family:inherit;letter-spacing:0}
.clear-card .new-words{color:#dec49e;line-height:1.6;overflow-wrap:anywhere}
#clear-overlay{padding:10px;overflow-y:auto}
#clear-overlay .clear-card{max-height:100%;overflow-y:auto}
@media(max-width:600px){.stage-number{font-size:22px;gap:4px;padding:5px 7px}.stage-number small{font-size:9px}.clear-card{padding:12px}.clear-card h2{font-size:16px;margin:6px 0}.next-stage-preview{height:74px;margin:8px 0}.next-stage-preview span{font-size:10px;padding:5px}.clear-card>p{font-size:10px;margin:7px 0}.clear-card .eyebrow{font-size:8px;margin-bottom:5px}}

/* Keep level and served guests in one progress block. */
.game-toolbar{gap:22px}
.round-progress{display:flex;align-items:center;gap:12px;padding:5px 11px;background:#302319;border:1px solid #91653e;flex-shrink:0}
.round-progress .stage-number{padding:0;background:none;border:0}
.round-progress .served{gap:5px;padding-left:12px;border-left:1px solid #765536;white-space:nowrap}
.game-toolbar .shift-label{flex:1;min-width:0}
.game-toolbar .toolbar-right{flex-shrink:0}
.room-world .customer.impatient .order{border-color:#c58658;background:#30221bf5}
.room-world .customer.impatient .order-word{color:#f0bf93;font-size:25px}
.retry-button{display:block;margin:12px auto;padding:8px 12px;border:1px solid #ab8356;background:#302820;color:#ffe0af;font-size:12px;cursor:pointer}
.retry-button:hover{background:#493a29}
@media(max-width:600px){.game-toolbar{gap:9px}.round-progress{gap:7px;padding:5px 7px}.round-progress .served{padding-left:7px;gap:3px}.round-progress .served strong{font-size:20px}.game-toolbar .shift-label{font-size:10px;letter-spacing:0}.game-toolbar .shift-label .tiny{display:none}.game-toolbar .toolbar-right{gap:6px}}
@media(max-width:360px){.game-toolbar{height:auto;min-height:56px;flex-wrap:wrap}.game-toolbar .shift-label{order:3;flex-basis:100%}.game-toolbar .toolbar-right{margin-left:auto}}

/* A quiet introduction below the game, also readable without JavaScript. */
.about-game{max-width:780px;margin:22px auto 16px;padding-top:18px;border-top:1px solid #42372d;color:#aaa296;font-size:12px;line-height:1.9}
.about-game h2{margin:0 0 8px;color:#caba9f;font-size:14px;font-weight:600}
.about-game p{margin:8px 0}

/* Optional spelling guides stay attached to the order, above the customer's head. */
.romaji-option{display:flex;align-items:center;gap:5px;white-space:nowrap;color:#caba9f;font-size:11px;cursor:pointer}
.romaji-option input{margin:0;width:15px;height:15px;accent-color:#d28b50;cursor:pointer}
.romaji-option input:focus-visible{outline:2px solid var(--amber);outline-offset:3px}
.order-text{display:flex;flex-direction:column;align-items:center}
.room-world .order-romaji{display:none;font:600 24px/1.15 ui-monospace,monospace;letter-spacing:.04em;margin-top:3px}
.show-romaji .order-romaji{display:block}
.show-romaji .order{top:-99px}
.room-world .order-romaji .done{color:var(--success)}
.room-world .order-romaji .remaining{color:#c4bdaba6}
.room-world .customer.impatient .order-romaji{display:none}
.show-romaji .customer.impatient .order{top:-68px}
@media(max-width:700px){.game-toolbar{height:auto;min-height:56px;flex-wrap:wrap}.game-toolbar .shift-label{order:3;flex-basis:100%}.game-toolbar .toolbar-right{margin-left:auto}.romaji-option{font-size:10px}}

/* Touch keys occupy their own space; they never overlay the scene. */
.touch-keyboard{margin:12px 0 0;padding:10px 6px max(10px,env(safe-area-inset-bottom));background:#1c1917;border:2px solid #584331;user-select:none;-webkit-user-select:none;touch-action:manipulation}
.touch-key-row{display:flex;justify-content:center;gap:4px;margin-bottom:5px}
.touch-key-row:last-child{margin-bottom:0}
.touch-key-row button{position:relative;flex:1;min-width:0;max-width:64px;height:44px;padding:0;border:1px solid #78634d;border-bottom:3px solid #61472f;background:#302820;color:#e4d2b8;font:600 18px ui-monospace,monospace;border-radius:3px;touch-action:manipulation}
.touch-key-row:nth-child(2){padding-inline:4%}
.touch-key-row button:active{background:#805335;border-bottom-width:1px}
.touch-key-row button:disabled{opacity:.35;cursor:default}
.home-key-touch:after{content:'';position:absolute;bottom:5px;left:35%;right:35%;height:2px;background:#b99b73}
.touch-controls .typing-panel{min-height:94px;padding:10px 12px;flex-wrap:nowrap;gap:10px}
.touch-controls .typing-content{min-width:0}
.touch-controls .typing-label{font-size:9px;letter-spacing:0;min-height:12px}
.touch-controls .is-playing .typing-field{min-height:59px;padding:5px 9px}
.touch-controls .is-playing .kana{font-size:20px;min-height:27px}
.touch-controls .romaji.playing{font-size:15px;margin-top:3px}
.touch-controls .panel-icon{width:34px;height:40px;flex-shrink:0}
.touch-controls .key-hint{min-width:34px;padding-left:8px}
.touch-controls #next-key{min-width:28px;height:30px;font-size:17px}
