@font-face{font-family:TheoDisplay;src:url('assets/fonts/tiktok.ttf') format('truetype');font-weight:100 900;font-display:swap}
@font-face{font-family:Manrope;src:url('assets/fonts/Manrope-Regular.woff2') format('woff2');font-weight:400;font-display:swap}
@font-face{font-family:Manrope;src:url('assets/fonts/Manrope-Bold.woff2') format('woff2');font-weight:600 800;font-display:swap}
:root{--blue:#092a61;--cream:#faf4e8;--red:#df392d;--yellow:#ffce36;--muted:#516079;--display:TheoDisplay,Manrope,sans-serif;--body:Manrope,sans-serif}
*{box-sizing:border-box}[hidden]{display:none!important}
body{margin:0;background:var(--cream);color:var(--blue);font:400 15px/1.5 var(--body);min-height:100dvh}
a{color:inherit;text-decoration:none}button{font:inherit}button,a,summary{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid var(--red);outline-offset:5px}
.app-header{max-width:1360px;margin:auto;display:flex;align-items:center;gap:28px;padding:15px 40px;border-bottom:1px solid #092a6121;height:84px}
.brand img{display:block;width:35px;height:54px;object-fit:contain}.back-link,.menu-link{display:flex;align-items:center;gap:10px;font-size:13px;font-weight:800;min-height:44px}.menu-link{margin-left:auto}.app-header svg{width:20px;height:20px}.app-header a:hover{text-decoration:underline;text-underline-offset:5px}
.game-layout{width:min(1080px,calc(100% - 80px));margin:30px auto 24px;display:grid;grid-template-columns:minmax(240px,1fr) minmax(0,570px);gap:74px;align-items:start}
.intro{padding-top:15px;position:relative}.intro h1{font-family:var(--display);font-size:clamp(64px,7.5vw,96px);letter-spacing:-.035em;line-height:.87;margin:0}.intro h1 span{color:var(--red)}.intro-copy{font-weight:800;font-size:19px;line-height:1.5;margin:24px 0 0}.intro-how{font-size:13px;font-weight:600;margin:0 0 12px;color:var(--muted);line-height:1.7}
.theo-scene{height:228px;position:relative;margin:6px 0 6px}.theo-figure{position:absolute;left:0;bottom:0;width:195px;height:224px;background:url('assets/sprites.webp') -63px -5px/645px 430px no-repeat;clip-path:inset(0 0 0 0)}.theo-note{position:absolute;left:158px;top:50px;transform:rotate(7deg);background:var(--yellow);border-radius:50%;width:106px;height:106px;display:grid;place-content:center;text-align:center;font-family:var(--display);font-size:21px;line-height:1.1}.help{font-size:13px;max-width:300px}.help summary{min-height:44px;cursor:pointer;font-weight:800;text-decoration:underline;text-underline-offset:4px;display:list-item;padding:10px 0}.help p{color:var(--muted);margin:0 0 12px}
.kitchen{min-width:0;border-radius:16px;background:#fffaf1;box-shadow:0 14px 45px #54351215;overflow:hidden}.kitchen-top{background:var(--blue);color:#fff;display:flex;align-items:center;padding:12px 20px;gap:16px;min-height:58px}.stations{display:flex;gap:20px;align-items:center;flex:1}.stations span{font-size:13px;font-weight:800;color:#c7d3e5;padding:4px 0;border-bottom:2px solid transparent}.stations span.is-active{color:var(--yellow);border-color:var(--yellow)}.clock{display:flex;align-items:center;gap:6px;white-space:nowrap}.clock svg{width:19px;height:19px}.clock span{font-size:21px;font-weight:800;line-height:1;font-variant-numeric:tabular-nums}.clock.is-urgent{color:#ffd274}.pause-button{display:grid;place-items:center;width:32px;height:32px;color:#fff;border:1px solid #ffffff50;border-radius:50%;background:transparent;cursor:pointer}.pause-button svg{width:15px;height:15px}.pause-button:hover{background:#ffffff25}
.order-bar{position:relative;display:grid;grid-template-columns:64px minmax(0,1fr);gap:13px;align-items:center;min-height:115px;padding:15px 20px 18px;background:#fffaf1}.guest{text-align:center;font-size:11px}.guest-portrait{width:49px;height:49px;margin:0 auto 2px;background:var(--blue) url('assets/sprites.webp') -74px -7px/420px 280px no-repeat;border-radius:50%;overflow:hidden}.guest strong{font-weight:800}.guest-portrait[data-guest="2"]{background-position:-61px -7px;background-size:360px 240px}.guest-portrait[data-guest="3"]{background-position:-22px -184px;background-size:470px 313px;background-color:#f1d6a7}.order-card{min-width:0;display:flex;flex-direction:column;gap:4px}.order-card>strong{font-weight:800;font-size:17px;line-height:1.23;padding-right:2px}.order-card #order-parts{font-size:11px;font-weight:600;color:#455471;line-height:1.4}.order-card #guest-line{font-size:11px;color:#657087;line-height:1.3}.order-number{position:absolute;right:15px;top:5px;font-size:9px;font-weight:700;color:#6a7486;display:none}.patience-bar{position:absolute;left:0;right:0;bottom:0;height:4px;background:#e6dcc8}.patience-bar span{display:block;width:100%;height:100%;background:var(--yellow)}
.worktop-head{padding:10px 18px;display:flex;align-items:center;gap:14px;background:#eee2ca}.steps{display:flex;gap:12px;flex:1;min-width:0;align-items:center}.steps span{position:relative;font-size:10px;font-weight:800;color:#676354;padding-bottom:7px;flex:1;text-align:center;white-space:nowrap}.steps span:after{content:"";position:absolute;bottom:0;left:0;right:0;height:3px;border-radius:2px;background:#cbc0a8}.steps .is-active{color:var(--blue)}.steps .is-active:after{background:var(--blue)}.steps .is-done{color:#3b6d39}.steps .is-done:after{background:#688b48}.score-hud{display:flex;gap:5px;align-items:baseline;min-width:61px;position:relative}.score-hud strong{font-size:25px;line-height:1;font-weight:800;font-variant-numeric:tabular-nums}.score-hud>span{font-size:9px;font-weight:800}.score-hud em{position:absolute;right:0;top:28px;z-index:2;white-space:nowrap;font-size:10px;font-weight:800;font-style:normal;background:var(--yellow);padding:1px 4px;border-radius:3px}.score-hud em:empty{display:none}
.arena{position:relative;width:100%;height:360px;overflow:hidden;background:#e9ce9e;touch-action:none;user-select:none;-webkit-user-select:none}#board{display:block;width:100%;height:100%;touch-action:none}.step-hint{position:absolute;top:12px;left:16px;right:16px;text-align:center;color:var(--blue);font-size:12px;font-weight:800;pointer-events:none;line-height:1.4}.controls{display:flex;align-items:center;gap:14px;padding:12px 18px;min-height:74px;background:var(--blue);color:#fff}.controls>span{font-size:11px;line-height:1.5;flex:1;color:#d5dfef}.button{display:inline-flex;align-items:center;justify-content:center;gap:12px;min-height:48px;padding:12px 22px;border:0;border-radius:8px;font:800 14px var(--body);cursor:pointer;transition:background .16s,transform .16s;white-space:nowrap}.button-yellow{background:var(--yellow);color:var(--blue)}.button:hover{background:#ffdd72;transform:translateY(-1px)}.button:active{transform:translateY(1px)}.button:disabled{opacity:.5;cursor:default;transform:none}.button svg{width:20px;height:20px}.proto-note{margin:0;padding:9px 10px;text-align:center;font-size:10px;color:#5a6575;background:var(--cream)}
.pause-screen,.result-screen{position:absolute;inset:0;z-index:3;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#fff6e9f5;text-align:center;padding:24px}.pause-screen h2{font:44px/1 var(--display);margin:0}.pause-screen p{margin:15px 0 24px}.result-screen>strong{font:88px/1.05 var(--display);color:var(--red)}.result-screen>span{font-size:15px;font-weight:800}.result-screen p{font-size:14px;max-width:280px;line-height:1.7}.rating{padding:20px;background:#fffaf1}.rating h2{font-size:18px;margin:0 0 12px}.rating-list{list-style:none;margin:0;padding:0;display:grid;gap:0}.rating-list li{display:flex;justify-content:space-between;gap:20px;padding:10px 0;border-top:1px solid #e8decc;font-size:12px;line-height:1.5}.rating-list li span:last-child{font-weight:800;white-space:nowrap;font-variant-numeric:tabular-nums}.rating-list li small{display:block;font-size:10px;color:var(--muted)}
@media(min-width:1000px) and (max-height:850px){.app-header{height:68px;padding-top:7px;padding-bottom:7px}.brand img{width:29px;height:46px}.game-layout{margin-top:22px;gap:64px;grid-template-columns:1fr 540px}.arena{height:310px}.order-bar{min-height:108px}.intro h1{font-size:84px}.theo-scene{height:196px}.theo-figure{height:196px}.intro-copy{margin-top:18px}.kitchen-top{min-height:52px;padding:8px 18px}.controls{min-height:68px;padding:10px 18px}}
@media(max-width:999px){.game-layout{width:min(650px,calc(100% - 32px));grid-template-columns:1fr;gap:17px;margin-top:20px}.intro{padding:0;display:flex;align-items:center;gap:20px;justify-content:space-between}.intro h1{font-size:44px;line-height:.95;white-space:nowrap}.intro h1 br{display:none}.intro-copy{font-size:13px;margin:0}.theo-scene,.intro-how,.help{display:none}.arena{height:clamp(320px,calc(100svh - 360px),470px)}.app-header{padding:10px 24px;height:68px}.brand img{width:28px;height:44px}}
@media(max-width:520px){.app-header{padding:5px 14px;height:54px;gap:15px}.brand img{width:25px;height:39px}.back-link,.menu-link{font-size:11px;gap:5px}.back-link svg{display:none}.menu-link svg{width:16px}.game-layout{width:calc(100% - 20px);margin:14px auto 12px;gap:12px}.intro{padding:0 4px}.intro h1{font-size:37px}.intro-copy{font-size:11px}.kitchen{border-radius:12px}.kitchen-top{min-height:48px;padding:8px 12px;gap:11px}.stations{gap:17px}.stations span{font-size:12px}.clock span{font-size:19px}.clock svg{width:16px}.pause-button{width:29px;height:29px}.order-bar{grid-template-columns:48px minmax(0,1fr);padding:13px 12px 14px;gap:10px;min-height:109px}.guest-portrait{width:43px;height:43px}.order-card>strong{font-size:15px}.order-card #order-parts{font-size:10px}.order-card #guest-line{font-size:10px}.worktop-head{padding:9px 12px;gap:12px}.steps{gap:8px}.steps span{font-size:9px}.score-hud strong{font-size:21px}.arena{height:clamp(295px,calc(100svh - 340px),445px)}.step-hint{top:9px;left:10px;right:10px;font-size:11px}.controls{padding:10px 12px;min-height:67px;gap:10px}.controls>span{font-size:10px}.button{font-size:12px;padding:12px 16px;gap:8px;min-height:47px}.button svg{width:16px}.proto-note{font-size:9px;padding:7px}.rating{padding:16px}}
@media(max-width:360px){.back-link{font-size:10px}.menu-link{font-size:10px}.intro h1{font-size:32px}.intro-copy{font-size:10px}.stations{gap:12px}.order-card>strong{font-size:14px}.controls>span{font-size:9px}.button{padding:11px 12px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;scroll-behavior:auto!important}}
.guest-portrait.is-initial{display:grid;place-items:center;background:#e1e9dc;color:#315233;font:26px/1 var(--display)}.guest-portrait.is-initial[data-guest="1"]{background:#f2d4b4;color:#754018}.guest-portrait.is-initial[data-guest="3"]{background:#d9e7f5;color:#092a61}
/* Проверка первого экрана: контраст логотипа, целый персонаж, короткие экраны. */
.brand{display:grid;place-items:center;background:var(--blue);padding:4px 7px;border-radius:4px}.brand img{height:42px;width:27px}
.guest-portrait{background-position:-49px -3px}
.theo-figure{width:185px;height:228px;background-size:590px 393px;background-position:-38px -4px}
.step-hint{top:19px}
@media(min-width:1000px) and (max-height:850px){.theo-scene{height:228px}.theo-figure{height:228px}.brand img{height:38px;width:25px}}
@media(max-width:999px){.intro h1 span{margin-left:.13em}.arena{height:clamp(295px,calc(100svh - 385px),440px)}}
@media(max-width:520px){.brand img{width:21px;height:32px}.brand{padding:3px 5px}.arena{height:clamp(280px,calc(100svh - 390px),410px)}.step-hint{top:21px;font-size:10px}.intro-copy{max-width:124px}.intro h1{font-size:35px}}

/* Бумажные чеки на рейке: время и выбранный заказ видны одновременно. */
.ticket-rack{position:relative;padding:12px 18px 9px;color:#fff;background:linear-gradient(155deg,#184a78,#0c326b 68%,#092a61);box-shadow:inset 0 3px #ffffff18}
.rack-head,.rush-line{display:flex;align-items:center;justify-content:space-between;gap:12px}.rack-head{margin-bottom:10px}.rack-head strong{font:19px/1 var(--display);letter-spacing:.005em}.rack-head span{font-size:10px;font-weight:700;color:#c5d6e9;text-align:right;line-height:1.3}.rush-line{margin-top:8px;padding-top:7px;border-top:1px solid #ffffff2b;font-size:10px;font-weight:800;color:#d8e8f6}.rush-line #wave-label{text-transform:uppercase;letter-spacing:.08em;color:#ffda6b}.rush-line #queue-count{font-variant-numeric:tabular-nums}
.ticket-list{display:flex;gap:10px;min-height:115px;padding:3px 2px 9px;overflow-x:auto;overflow-y:hidden;overscroll-behavior-inline:contain;scroll-snap-type:x proximity;scrollbar-width:thin;scrollbar-color:#ffffff85 transparent}.ticket-list:empty::before{content:"Первый чек появится после начала смены";display:grid;place-items:center;width:100%;min-height:102px;border:1px dashed #ffffff5b;border-radius:6px;color:#d4e2f1;font-size:11px;font-weight:700;text-align:center;padding:12px}.ticket-list::-webkit-scrollbar{height:5px}.ticket-list::-webkit-scrollbar-thumb{background:#ffffff85;border-radius:5px}
.ticket{position:relative;flex:0 0 148px;min-width:0;height:107px;display:flex;flex-direction:column;align-items:stretch;gap:3px;text-align:left;padding:11px 11px 12px;border:1px solid #eee3cf;border-top:3px solid #e9c870;border-radius:3px 3px 1px 1px;background:#fffdf7;color:var(--blue);box-shadow:2px 4px 0 #061f3e50,0 8px 13px #071d3455;clip-path:polygon(0 0,100% 0,100% calc(100% - 5px),96% 100%,92% calc(100% - 5px),88% 100%,84% calc(100% - 5px),80% 100%,76% calc(100% - 5px),72% 100%,68% calc(100% - 5px),64% 100%,60% calc(100% - 5px),56% 100%,52% calc(100% - 5px),48% 100%,44% calc(100% - 5px),40% 100%,36% calc(100% - 5px),32% 100%,28% calc(100% - 5px),24% 100%,20% calc(100% - 5px),16% 100%,12% calc(100% - 5px),8% 100%,4% calc(100% - 5px),0 100%);cursor:pointer;scroll-snap-align:start;transition:transform .18s,background .18s,border-color .18s}
.ticket::before{content:"";position:absolute;top:-3px;left:50%;width:36px;height:6px;transform:translateX(-50%);border-radius:0 0 4px 4px;background:#adbac1;box-shadow:0 2px 0 #ffffffb0 inset}.ticket:hover{transform:translateY(-2px);background:#fff8e8}.ticket:focus-visible{outline:3px solid var(--yellow);outline-offset:2px}.ticket.is-active{background:#fff4d4;border-top-color:var(--yellow);box-shadow:2px 4px 0 #07172d60,0 0 0 2px var(--yellow)}.ticket.is-ready{background:#eff8e8;border-top-color:#6ca24b}.ticket.is-urgent{border-top-color:var(--red);background:#fff0e9}.ticket.is-arriving{animation:receipt-drop .32s cubic-bezier(.16,1,.3,1) both}
.ticket-number,.ticket-time{font-size:10px;font-weight:800;letter-spacing:.03em;font-variant-numeric:tabular-nums}.ticket-number{color:#6e7681}.ticket-title{font:18px/1.08 var(--display);letter-spacing:-.01em;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;max-height:42px}.ticket-time{margin-top:auto;align-self:flex-end;color:#445671}.ticket.is-urgent .ticket-time{color:#b4231d}.ticket.is-ready .ticket-time{color:#3e7d32}.ticket-meter{height:4px;width:100%;overflow:hidden;border-radius:10px;background:#d6d5ca;margin-top:2px}.ticket-meter>span{display:block;width:100%;height:100%;border-radius:inherit;background:#e8a536;transform-origin:left center;transition:transform .2s linear}.ticket.is-urgent .ticket-meter>span{background:var(--red)}.ticket.is-ready .ticket-meter>span{background:#6ca24b}
.ticket-top,.ticket-bottom{width:100%;display:flex;align-items:center;justify-content:space-between;gap:5px;line-height:1}.ticket-top strong{font-size:10px;font-weight:800;color:#6e7681;white-space:nowrap}.ticket-top small{font-size:8px;letter-spacing:.06em;font-weight:800;color:#637081}.ticket-bottom{margin-top:auto}.ticket-state{font-size:9px;font-weight:800;color:#586475;white-space:nowrap}.ticket-bottom .ticket-time{margin:0;align-self:auto;white-space:nowrap}.ticket.is-active .ticket-state{color:#9b5d00}.ticket.is-ready .ticket-state{color:#3e7d32}.ticket.is-urgent .ticket-state{color:#b4231d}
@keyframes receipt-drop{from{opacity:0;transform:translateY(-24px) rotate(-4deg)}to{opacity:1;transform:translateY(0) rotate(0)}}

/* Тео ждёт за стойкой, пока игрок не выбрал чек. */
.theo-scene{display:none}.intro-how{margin-top:28px;max-width:245px}
.counter-scene{position:absolute;inset:0;z-index:1;overflow:hidden;pointer-events:none;background:linear-gradient(#e9d3aa,#f5e5c8 65%,#bb8651)}.scene-wall{position:absolute;inset:0 0 23%;background:repeating-linear-gradient(0deg,transparent 0 41px,#a9865c25 42px 44px),repeating-linear-gradient(90deg,#f4dfba 0 75px,#f9e9cc 76px 151px);box-shadow:inset 0 -16px 25px #97704b1c}.scene-wall::after{content:"";position:absolute;left:0;right:0;bottom:0;height:13px;background:#b78650;box-shadow:0 4px 8px #523b235c}.scene-sign{position:absolute;top:23px;left:44px;width:74px;height:83px;padding:10px 0;background:#fffdf3;box-shadow:3px 4px 0 #8b6842a3;color:var(--blue);text-align:center;font:900 19px/.84 var(--body);transform:rotate(-4deg)}.scene-sign b{color:var(--red)}.scene-shelf{position:absolute;right:36px;width:152px;height:7px;border-radius:3px;background:#7f5032;box-shadow:0 4px 0 #b2814f,0 7px 6px #583f2c64;display:flex;align-items:end;justify-content:space-around;padding:0 8px}.scene-shelf-one{top:95px}.scene-shelf-two{top:187px;right:24px;width:145px}.scene-shelf i{display:block;width:19px;height:36px;border:2px solid #38515b;border-radius:3px 3px 6px 6px;background:linear-gradient(#e8e5d2 30%,#a4b398 30%);transform:translateY(-3px)}.scene-shelf i:nth-child(2n){height:27px;background:linear-gradient(#ffdd81 35%,#d68445 35%)}.scene-shelf-two i{height:30px;width:25px;border-color:#597281;border-radius:7px 7px 4px 4px;background:#cad8ce}
.scene-theo{position:absolute;left:50%;bottom:14px;z-index:1;width:172px;height:315px;transform:translateX(-50%);background:url('assets/sprites.webp') -69px 0/768px 512px no-repeat;filter:drop-shadow(4px 5px 0 #47352c3d)}.scene-counter{position:absolute;z-index:2;left:0;right:0;bottom:0;height:100px;border-top:13px solid #9b5a30;background:repeating-linear-gradient(90deg,#8d512f 0 82px,#824929 83px 87px);box-shadow:0 -8px 12px #3d271e35,inset 0 8px #b9733a,inset 0 -10px #68381f}.scene-counter::before{content:"";position:absolute;left:0;right:0;top:-22px;height:8px;background:#c98a4d;box-shadow:0 2px #6d4227}.counter-label{position:absolute;left:22px;top:20px;display:block;padding:5px 11px;border-radius:3px;background:#f7eaca;color:var(--blue);font:15px/1 var(--display);transform:rotate(-3deg);box-shadow:2px 3px 0 #3821165e}.counter-detail{position:absolute;right:25px;top:20px;width:66px;height:45px;border:5px solid #d8a15e;border-radius:3px;box-shadow:inset 0 5px #633b28,2px 4px #4c2a1a}
.step-hint{z-index:2}.pause-screen,.result-screen{z-index:3}

@media(min-width:1000px) and (max-height:850px){.ticket-rack{padding-top:8px;padding-bottom:7px}.rack-head{margin-bottom:6px}.ticket-list{min-height:98px;padding-bottom:5px}.ticket{height:94px}.ticket-list:empty::before{min-height:88px}.rush-line{margin-top:5px;padding-top:5px}.scene-theo{bottom:0}.scene-shelf-two{top:155px}}
@media(max-width:999px){.ticket-rack{padding:11px 14px 8px}.ticket-list{min-height:108px}.ticket{height:100px}.scene-theo{bottom:0}}
@media(max-width:520px){.ticket-rack{padding:9px 0 7px}.rack-head,.rush-line{margin-left:12px;margin-right:12px}.rack-head{margin-bottom:7px}.rack-head strong{font-size:17px}.rack-head span{font-size:9px;max-width:170px}.ticket-list{gap:8px;min-height:101px;padding:2px 12px 8px;scroll-padding-left:12px}.ticket-list:empty::before{min-height:91px}.ticket{flex-basis:147px;height:93px;padding:8px 10px 9px;gap:2px}.ticket-title{font-size:15px;max-height:33px}.ticket-number,.ticket-time{font-size:9px}.ticket-top small{font-size:7px}.ticket-state{font-size:8px}.rush-line{margin-top:3px;padding-top:5px;font-size:9px}.arena{height:clamp(280px,calc(100svh - 440px),340px)}body[data-mode="shift"] .arena{height:270px}.scene-theo{width:140px;height:250px;bottom:11px;background-size:615px 410px;background-position:-55px 0}.scene-counter{height:73px;border-top-width:10px}.scene-counter::before{top:-17px;height:7px}.counter-label{top:12px;left:14px;font-size:13px}.counter-detail{top:11px;right:15px;width:48px;height:34px;border-width:4px}.scene-sign{top:21px;left:17px;width:56px;height:64px;padding:8px 0;font-size:15px}.scene-shelf{right:16px;width:93px;top:78px}.scene-shelf-two{top:145px;right:9px;width:95px}.scene-shelf i{width:14px;height:26px}.scene-shelf-two i{width:17px;height:23px}.controls{flex-wrap:wrap}.controls>span{min-width:105px}.controls #serve-button{margin-left:auto}}
@media(prefers-reduced-motion:reduce){.ticket.is-arriving{animation:none}}

body[data-mode="idle"] .step-hint{display:none}

/* Горизонтальный фирменный знак в шапке игры. */
.app-header .brand{display:flex;align-items:center;flex:none;padding:0;background:none;border-radius:0}
.app-header .brand img{display:block;width:auto;height:53px;max-width:none}
@media(min-width:1000px) and (max-height:850px){.app-header .brand img{height:43px}}
@media(max-width:999px){.app-header .brand img{height:41px}}
@media(max-width:520px){.app-header .brand img{height:32px}.app-header .back-link{display:none}.app-header .menu-link{font-size:11px}}
@media(max-width:360px){.app-header .brand img{height:32px}.app-header .menu-link{font-size:10px}}
.app-header{background:var(--blue);color:#fff;border-bottom:1px solid rgba(255,255,255,.16)}

/* ---- 28.09: портреты гостей, чеки, липкие кнопки, лига ---- */
.guest-portrait[data-guest]{background-position:center;background-size:cover;background-repeat:no-repeat;border:2px solid #fff;box-shadow:0 0 0 1px #d7c7a8}
.guest-portrait[data-guest="mia"]{background-image:url('assets/guest-mia.webp');background-color:#f3ead8}
.guest-portrait[data-guest="nao"]{background-image:url('assets/guest-nao.webp');background-color:#f3ead8}
.guest-portrait[data-guest="courier"]{background-image:url('assets/guest-courier.webp');background-color:#f1d6a7}
.guest-portrait[data-guest="guest"]{background-color:#dfe8f4;background-size:80%;background-position:50% 100%;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 40'%3E%3Ccircle cx='20' cy='15' r='8' fill='%23092a61'/%3E%3Cpath d='M5 40c1-10 7-15 15-15s14 5 15 15z' fill='%23092a61'/%3E%3Cpath d='M12 12c2-6 14-6 16 0' stroke='%23df392d' stroke-width='3' fill='none'/%3E%3C/svg%3E")}
body[data-mode="over"] .ticket-list:empty::before{content:"Смена окончена. Итог и таблица недели — ниже"}
.kitchen{overflow:clip}
body[data-mode="shift"] .controls{position:sticky;bottom:0;z-index:6;box-shadow:0 -8px 18px #07183a33}
@media(max-width:999px){body[data-mode="shift"] .intro{display:none}}
@media(max-width:520px){
.ticket-top strong,.ticket-number,.ticket-time{font-size:11px}
.ticket-top small{font-size:10px}
.ticket-state{font-size:10px}
.ticket-title{font-size:16px;max-height:36px}
.rack-head span{font-size:11px}
.rush-line{font-size:11px}
.steps span{font-size:11px}
.controls>span{font-size:11px}
}
.league{padding:20px;background:#fffaf1;border-top:1px solid #e8decc;color:var(--blue)}
.league-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:4px 14px;margin-bottom:10px}
.league-head h2{margin:0;font:26px/1 var(--display)}
.league-head span{font-size:11px;color:var(--muted)}
.league-last{margin:0 0 10px;font-size:13px;font-weight:800}
.league-empty,.league-rule{font-size:12px;color:var(--muted);line-height:1.5;margin:8px 0}
.league-list{list-style:none;margin:0;padding:0}
.league-line{display:grid;grid-template-columns:30px minmax(0,1fr) auto;align-items:center;gap:10px;padding:9px 0;border-top:1px solid #e8decc;font-size:13px}
.league-line.is-me{background:#fff1c7;margin:0 -10px;padding-left:10px;padding-right:10px;border-radius:6px}
.league-rank{display:grid;place-items:center;width:26px;height:26px;border-radius:50%;background:#e9e1cf;font-weight:800;font-size:12px}
.league-line.is-top .league-rank{background:var(--yellow)}
.league-line:first-child.is-top .league-rank{background:var(--red);color:#fff}
.league-player{font-weight:800;overflow:hidden;text-overflow:ellipsis}
.league-player em{font-style:normal;color:#9b5d00}
.league-player small,.league-score small{display:block;font-size:11px;font-weight:600;color:var(--muted)}
.league-score{text-align:right;font-weight:800;font-size:16px;font-variant-numeric:tabular-nums}
.league-top{list-style:none;display:flex;flex-wrap:wrap;gap:6px;margin:4px 0 14px;padding:0}
.league-top li{display:flex;align-items:center;gap:6px;padding:5px 10px 5px 5px;border-radius:20px;background:#f1e7d3;font-size:12px;font-weight:700}
.league-top b{display:grid;place-items:center;width:20px;height:20px;border-radius:50%;background:var(--blue);color:#fff;font-size:11px}
.league-reward{padding:14px;border-radius:10px;background:#fff;box-shadow:0 0 0 1px #e8decc}
.league-reward-head{display:flex;justify-content:space-between;gap:10px;font-size:13px}
.league-reward-head span{font-size:11px;color:var(--muted);white-space:nowrap}
.league-reward p{font-size:12px;line-height:1.5;margin:10px 0 0}
.league-progress{height:8px;margin-top:9px;border-radius:8px;background:#ece3d1;overflow:hidden}
.league-progress span{display:block;height:100%;background:var(--yellow);border-radius:inherit}
.league-form{display:grid;gap:7px;margin:12px 0}
.league-form label{font-size:12px;font-weight:700;line-height:1.4}
.league-row{display:flex;gap:8px}
.league-row input{flex:1;min-width:0;min-height:46px;padding:0 12px;border:1px solid #cdbf9f;border-radius:8px;font:600 15px var(--body);color:var(--blue);background:#fffdf7}
.league-row input:focus{outline:3px solid var(--yellow);outline-offset:1px}
.league-demo{font-size:11px;color:#9b5d00;font-weight:700}
.league-choice{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}
.league-option{display:grid;gap:4px;text-align:left;padding:12px;border:2px solid var(--blue);border-radius:10px;background:#fffdf7;color:var(--blue);font:inherit;cursor:pointer}
.league-option:hover,.league-option:focus-visible{background:#fff1c7}
.league-option strong{font-size:14px}
.league-option small{font-size:11px;color:var(--muted);line-height:1.35}
.league-coupon{display:grid;gap:4px;margin-top:12px;padding:14px;border:2px dashed var(--red);border-radius:10px;text-align:center}
.league-coupon strong{font:28px/1.1 var(--display);letter-spacing:.04em;color:var(--red)}
.league-coupon small{font-size:12px;font-weight:800}
.league-coupon span{font-size:11px;color:var(--muted)}
.league-error{margin:10px 0 0;color:#b4231d;font-size:12px;font-weight:700}
.league-demo-note{margin:12px 0 0;font-size:11px;line-height:1.5;color:var(--muted)}
@media(max-width:520px){.league{padding:16px 14px}.league-choice{grid-template-columns:1fr}.league-row{flex-wrap:wrap}.league-row .button{flex:1}}
@media(max-width:999px){.game-layout{grid-template-columns:minmax(0,1fr)}}
@media(max-width:360px){.intro{gap:10px}.intro h1{font-size:31px}.intro-copy{min-width:0}}
.league-coupon strong{white-space:nowrap;font-size:clamp(20px,7vw,28px)}
.league-row input{min-width:150px}
.league:not([hidden])+.proto-note{display:none}
.league-link{justify-self:start;padding:4px 0;border:0;background:none;color:var(--blue);font-size:12px;font-weight:700;text-decoration:underline;cursor:pointer}
/* Состав заказа — чек-лист: следующий ингредиент жёлтый, уложенные зачёркнуты. */
.order-card #order-parts{display:flex;flex-wrap:wrap;gap:4px 5px}
.order-card #order-parts span{padding:2px 8px;border-radius:12px;background:#f1e7d3;color:#344363;line-height:1.35}
.order-card #order-parts span.is-next{background:var(--yellow);color:var(--blue);box-shadow:0 0 0 2px #e0a800 inset}
.order-card #order-parts span.is-done{background:#e4efdc;color:#3e7d32;text-decoration:line-through}
.order-card #order-parts span.is-done::before{content:"✓ ";text-decoration:none;display:inline-block;margin-right:2px}
/* Онбординг перед первой сменой */
.coach{position:absolute;inset:0;z-index:5;display:grid;place-items:center;padding:14px;background:#092a61d9;backdrop-filter:blur(2px)}
.coach-card{width:min(340px,100%);display:grid;gap:8px;padding:18px 18px 16px;border-radius:14px;background:#fffaf1;color:var(--blue);text-align:center;box-shadow:0 18px 40px #0419;animation:coach-in .25s ease-out both}
.coach-step{font-size:11px;font-weight:800;letter-spacing:.08em;color:#9b5d00;text-transform:uppercase}
.coach-card h2{margin:0;font:25px/1.05 var(--display)}
.coach-card p{margin:0;font-size:13px;line-height:1.45;color:#344363}
.coach-actions{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:4px}
.coach-skip{border:0;background:none;color:var(--muted);font:700 12px var(--body);text-decoration:underline;cursor:pointer;padding:8px 4px}
.coach-visual{position:relative;height:74px;margin:2px auto 2px;width:220px}
.cv-ticket{position:absolute;left:30px;top:6px;width:128px;height:60px;display:grid;align-content:start;gap:2px;padding:7px 9px;text-align:left;background:#fffdf7;border:1px solid #eee3cf;border-top:3px solid #e9c870;border-radius:3px;box-shadow:2px 3px 0 #061f3e33}
.cv-ticket b{font-size:9px;color:#6e7681}.cv-ticket i{font:16px/1 var(--display);font-style:normal}.cv-ticket em{height:4px;margin-top:5px;border-radius:4px;background:#e8a536;width:80%}
.cv-tap{position:absolute;left:138px;top:34px;width:24px;height:24px;border-radius:50%;background:#fffaf1;border:2.5px solid var(--blue);box-shadow:0 0 0 0 #ffce36;animation:coach-tap 1.3s ease-out infinite}
.cv-tap::after{content:"";position:absolute;inset:6px;border-radius:50%;background:var(--blue)}
.cv-shelf{position:absolute;left:8px;top:32px;width:44px;height:36px;border-radius:8px;background:#fff8e8;border:3px solid var(--yellow)}
.cv-shelf::after{content:"";position:absolute;left:10px;top:7px;width:18px;height:14px;border-radius:50%;background:#ffd76a;border:2px solid #fff}
.cv-bowl{position:absolute;right:10px;top:14px;width:58px;height:58px;border-radius:50%;background:#b86722;border:6px solid #fffaf1;box-shadow:0 0 0 2px #d9ccb2,0 0 0 5px #ffce36}
.cv-path{position:absolute;left:34px;right:44px;top:6px;height:46px;border:2px dashed #092a6166;border-bottom:0;border-radius:60px 60px 0 0}
.cv-move{left:22px;top:40px;animation:coach-move 1.8s ease-in-out infinite}
.cv-serve{position:absolute;left:50%;top:6px;transform:translateX(-50%);padding:10px 16px;border-radius:8px;background:var(--yellow);font-weight:800;font-size:13px;white-space:nowrap;animation:coach-pulse 1.3s ease-in-out infinite}
.cv-bar{position:absolute;left:30px;right:30px;bottom:6px;height:6px;border-radius:6px;background:#e6dcc8;overflow:hidden}
.cv-bar i{display:block;height:100%;width:100%;background:#e8a536;transform-origin:left;animation:coach-bar 3s linear infinite}
@keyframes coach-in{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
@keyframes coach-tap{0%{box-shadow:0 0 0 0 #ffce36cc}100%{box-shadow:0 0 0 16px #ffce3600}}
@keyframes coach-move{0%,15%{transform:translate(0,0)}55%{transform:translate(70px,-34px)}85%,100%{transform:translate(150px,-6px)}}
@keyframes coach-pulse{50%{transform:translateX(-50%) scale(1.06)}}
@keyframes coach-bar{from{transform:scaleX(1)}to{transform:scaleX(0)}}
@media(prefers-reduced-motion:reduce){.coach-card,.cv-tap,.cv-move,.cv-serve,.cv-bar i{animation:none}}
.help-replay{margin-top:6px;padding:8px 0;border:0;background:none;color:var(--blue);font:800 13px var(--body);text-decoration:underline;cursor:pointer}
/* На разминочных чеках подсказка шага — крупная жёлтая плашка */
.step-hint.is-coach{left:50%;right:auto;transform:translateX(-50%);width:max-content;max-width:calc(100% - 20px);padding:6px 12px;border-radius:8px;background:var(--yellow);font-size:13px;box-shadow:0 3px 0 #c58d14}
.coach-visual .cv-ticket+.cv-tap{left:146px;top:50px}
.arena:has(.coach:not([hidden])){height:auto;min-height:340px}
@media(max-width:360px){.coach{padding:10px}.coach-card{padding:12px 12px 10px;gap:6px}.coach-card h2{font-size:21px}.coach-card p{font-size:12px}.coach-visual{height:64px;transform:scale(.9)}.coach-actions .button{min-height:40px;padding:9px 14px}}
