:root{
  --t:44px;
  --night:#1b1330; --night2:#2a1c44;
  --warm:#ffb84d; --red:#d9412b; --green:#2e9a52;
  --paper:#fff4dc; --ink:#3a2416; --gold:#ffe27a;
}
*{box-sizing:border-box}
[hidden]{display:none!important}
body{margin:0;min-height:100vh;background:var(--night);color:var(--paper);font-family:"Noto Sans TC",system-ui,sans-serif;
  display:flex;flex-direction:column;align-items:center;padding:12px 16px 20px;overflow-x:hidden}
button{font:inherit;font-weight:900;border:none;border-radius:10px;padding:10px 18px;cursor:pointer;background:#5a4870;color:var(--paper)}
button.go{background:var(--warm);color:var(--ink)}
button:hover{filter:brightness(1.1)}

/* 首頁：左邊選單、後面是會動的夜市場景、右邊換裝 */
#home{position:fixed;inset:0;z-index:50;overflow:hidden;text-align:left}
body:has(#home:not([hidden])){overflow:hidden}
#home .err{color:#ff8a6a;font-weight:900;min-height:1.2em}
/* ---- 後面的遊戲場景：慢慢推近，往右偏讓出左邊選單 ---- */
#home .hbg{position:fixed;inset:0;overflow:hidden}
#home .world{position:absolute;top:50%;left:calc(50% + min(9vw, 130px));height:max(82vh, calc(100vw * 0.62 * 624 / 960));aspect-ratio:960/624;
  transform:translate(-50%,-50%);animation:drift 40s ease-in-out infinite alternate}
@keyframes drift{from{transform:translate(-50%,-50%) scale(1)}to{transform:translate(-51%,-50%) scale(1.04)}}
#home .scene{position:absolute;inset:0;width:100%;height:100%}
#home .walker{position:absolute;left:0;width:5%;aspect-ratio:60/88;margin-top:-3.6%;animation:ltr 26s linear infinite}
#home .walker svg{width:100%;height:100%;display:block;overflow:visible}
#home .walker.rtl{animation-name:rtl}#home .walker.rtl svg{transform:scaleX(-1)}
@keyframes ltr{from{left:-6%}to{left:104%}}
@keyframes rtl{from{left:104%}to{left:-6%}}
#home .shade{position:fixed;inset:0;pointer-events:none;
  background:linear-gradient(90deg,rgba(14,8,28,.96) 0,rgba(14,8,28,.88) min(34vw,430px),rgba(14,8,28,.25) min(56vw,760px),rgba(14,8,28,.05) 100%),
  radial-gradient(ellipse at 70% 60%,transparent 40%,rgba(10,5,24,.55) 100%)}

/* ---- 左邊選單 ---- */
#home .menu{position:fixed;left:0;top:0;bottom:0;width:min(440px,100vw);padding:clamp(18px,4.5vh,44px) clamp(20px,3vw,44px);
  display:flex;flex-direction:column;gap:clamp(10px,2.2vh,20px);overflow-y:auto;scrollbar-width:none}
#home .menu::-webkit-scrollbar{display:none}
#home .menu > *{flex-shrink:0}
#home .menu::after{content:"";position:fixed;left:min(440px,100vw);top:8vh;bottom:8vh;width:2px;background:linear-gradient(transparent,rgba(255,184,77,.55),transparent)}

/* 招牌 */
#home .logo{position:relative;align-self:flex-start;margin:4px 0 4px 2px}
#home .logo .board{position:relative;background:linear-gradient(#e2492f,#b9301c);border:3px solid var(--ink);border-radius:14px;padding:10px 22px 12px;
  box-shadow:0 0 0 4px #f6c445 inset,0 0 0 7px var(--ink) inset,0 10px 0 rgba(0,0,0,.35),0 0 50px rgba(255,90,40,.45);transform:rotate(-2deg)}
#home .logo h1{margin:0;font-size:clamp(36px,5.2vh,52px);font-weight:900;letter-spacing:.12em;color:var(--gold);line-height:1.15;
  text-shadow:0 3px 0 var(--ink),0 0 18px rgba(255,220,120,.8)}
#home .logo .bulbs{position:absolute;left:8px;right:8px;top:-9px;display:flex;justify-content:space-between}
#home .logo .bulbs i{width:12px;height:12px;border-radius:50%;background:#fff3b0;border:2px solid var(--ink);box-shadow:0 0 12px #ffcf5a;animation:flick 1.2s ease-in-out infinite alternate}
#home .logo .bulbs i:nth-child(2n){animation-delay:.6s}
#home .logo .ltag{position:absolute;right:-14px;bottom:-14px;transform:rotate(6deg);background:var(--paper);color:var(--ink);font-weight:900;font-size:14px;
  border:2.5px solid var(--ink);border-radius:9px;padding:2px 10px;box-shadow:0 4px 0 rgba(0,0,0,.3)}

#home .field{display:flex;flex-direction:column;gap:7px}
#home .field > b{font-size:15px;color:var(--warm);letter-spacing:.06em}
#home input{font:inherit;font-size:20px;font-weight:900;padding:11px 14px;border-radius:12px;border:3px solid var(--ink);background:var(--paper);color:var(--ink);outline:none;width:100%;
  box-shadow:0 4px 0 rgba(0,0,0,.35)}
#home input:focus{box-shadow:0 0 0 3px var(--warm),0 4px 0 rgba(0,0,0,.35)}

/* 選攤位 */
#home .modes{display:grid;grid-template-columns:repeat(3,1fr);gap:12px 9px}
#home .mode{position:relative;font:inherit;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:4px;padding:10px 4px 9px;border-radius:14px;
  background:rgba(255,244,220,.07);border:2.5px solid rgba(255,244,220,.18);color:var(--paper);font-weight:900;font-size:15px;transition:transform .15s,background .15s}
#home .mode svg{width:48px;height:44px}
#home .mode:hover{transform:translateY(-2px);background:rgba(255,244,220,.12)}
#home .mode.on{background:linear-gradient(rgba(255,184,77,.28),rgba(255,184,77,.12));border-color:var(--warm);box-shadow:0 0 22px rgba(255,184,77,.35)}
#home .mode.on::after{content:"✓";position:absolute;top:-9px;right:-7px;width:24px;height:24px;border-radius:50%;background:var(--warm);color:var(--ink);border:2.5px solid var(--ink);
  font-size:13px;display:flex;align-items:center;justify-content:center}
#home .mode .rec{font-style:normal;font-size:12px;color:var(--ink);background:var(--gold);border-radius:6px;padding:0 6px;position:absolute;top:-9px;left:-6px;border:2px solid var(--ink)}

/* 按鈕 */
#home .btn{font:inherit;font-weight:900;cursor:pointer;border:3px solid var(--ink);border-radius:14px;color:var(--ink);transition:transform .1s,filter .15s}
#home .btn:hover{filter:brightness(1.08)}#home .btn:active{transform:translateY(3px)}
#home .start{position:relative;font-size:26px;letter-spacing:.14em;padding:14px 18px;background:linear-gradient(#ffd27a,#ff9f2e);
  box-shadow:0 6px 0 #8a4a10,0 0 34px rgba(255,170,60,.55);display:flex;align-items:center;justify-content:center;gap:12px;overflow:hidden}
#home .start::before{content:"";position:absolute;inset:0;background:linear-gradient(100deg,transparent 30%,rgba(255,255,255,.45) 45%,transparent 60%);transform:translateX(-100%);animation:shine 3.2s ease-in-out infinite}
@keyframes shine{60%,100%{transform:translateX(100%)}}
#home .start svg{width:30px;height:30px}
#home .or2{display:flex;align-items:center;gap:10px;color:var(--warm);font-weight:900;font-size:14px}
#home .or2::before,#home .or2::after{content:"";flex:1;height:2px;background:rgba(255,184,77,.35)}
#home .join{display:flex;gap:9px}
#home .join input{text-transform:uppercase;letter-spacing:.35em;text-align:center}
#home .join .btn{flex:none;padding:0 22px;font-size:18px;background:var(--paper);box-shadow:0 4px 0 rgba(0,0,0,.35)}

/* 顧攤的熊 */
#home .crew{margin-top:auto;display:flex;align-items:flex-end;gap:2px;padding-top:6px}
#home .crew svg{width:58px;height:85px;animation:hop 2.4s ease-in-out infinite}
@keyframes hop{0%,80%,100%{transform:translateY(0)}88%{transform:translateY(-7px)}}
#home .crew span{margin-left:10px;margin-bottom:12px;font-weight:900;font-size:14px;color:var(--warm)}
#home .tools{display:flex;gap:8px;margin-top:auto}
#home .dressBtn{display:none}

/* ---- 右邊：我的熊（換帽子、毛色、衣服、顏色） ---- */
#home .dress{position:fixed;right:clamp(16px,3vw,48px);bottom:clamp(16px,4vh,44px);width:300px;padding:16px 18px 18px;border-radius:20px;
  background:linear-gradient(rgba(36,22,58,.92),rgba(22,13,38,.94));border:2.5px solid rgba(255,184,77,.55);box-shadow:0 18px 50px rgba(0,0,0,.55),0 0 30px rgba(255,170,60,.18)}
#home .dhead{display:flex;justify-content:space-between;align-items:center}
#home .dhead b{font-size:18px;color:var(--warm);letter-spacing:.08em}
#home .dhead .x{display:none;font:inherit;background:none;border:none;color:var(--paper);font-size:20px;cursor:pointer}
#home .stagebox{position:relative;height:190px;display:flex;justify-content:center;align-items:flex-end}
#home .stagebox .spot{position:absolute;bottom:4px;width:170px;height:40px;border-radius:50%;background:radial-gradient(rgba(255,200,110,.55),transparent 70%)}
#home .stagebox svg{position:relative;width:130px;height:190px;overflow:visible}
#home .rows{display:flex;flex-direction:column;gap:8px;margin:6px 0 12px}
#home .row{display:grid;grid-template-columns:42px 34px 1fr 34px;align-items:center;gap:6px}
#home .row > b{font-size:14px;color:var(--warm)}
#home .row button{padding:0;font:inherit;font-weight:900;width:34px;height:34px;border-radius:10px;border:2.5px solid var(--ink);background:var(--paper);color:var(--ink);cursor:pointer;box-shadow:0 3px 0 rgba(0,0,0,.35)}
#home .row button:active{transform:translateY(2px)}
#home .row span{display:flex;align-items:center;justify-content:center;gap:6px;height:34px;border-radius:10px;background:rgba(255,244,220,.08);font-weight:900}
#home .row span i{width:16px;height:16px;border-radius:50%;border:2px solid var(--ink)}
#home .rand{width:100%;padding:9px;font-size:16px;background:var(--paper);box-shadow:0 4px 0 rgba(0,0,0,.35)}
#home .tools button{font:inherit;font-weight:900;font-size:14px;cursor:pointer;border-radius:10px;padding:7px 14px;background:rgba(255,244,220,.08);color:var(--paper);border:2px solid rgba(255,244,220,.25)}
#home .tools button:hover{background:rgba(255,244,220,.16)}

/* 手機橫拿：選單變窄、字變小 */
@media (max-height:520px){
  #home .menu{width:min(360px,100vw);gap:8px;padding:12px 18px}
  #home .menu::after{left:min(360px,100vw)}
  #home .logo h1{font-size:30px}#home .logo .ltag{font-size:11px}
  #home input{font-size:16px;padding:7px 10px}
  #home .mode{padding:6px 2px;font-size:13px}#home .mode svg{width:34px;height:30px}
  #home .start{font-size:20px;padding:9px}
  #home .crew svg{width:38px;height:56px}
  #home .field > b{font-size:13px}
  #home .stagebox{height:120px}#home .stagebox svg{width:82px;height:120px}
  #home .dress{top:8px;bottom:8px;right:10px;width:min(300px,calc(100vw - 380px));overflow:auto;padding:8px 12px;scrollbar-width:none}
  #home .stagebox{height:90px}#home .stagebox svg{width:62px;height:90px}
  #home .rows{gap:5px}#home .row button,#home .row span{height:28px}#home .row button{padding:0;width:28px}
}
@media (max-width:600px) and (min-height:521px){ #home .shade{background:rgba(14,8,28,.82)} #home .menu::after{display:none} }


/* 遊戲外框 */
.stage{position:relative;width:calc(20*var(--t) + 32px);background:var(--night2);border-radius:18px;padding:12px 16px 12px;box-shadow:0 20px 60px rgba(0,0,0,.6)}
.hud{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:10px;min-height:112px}
.stats{display:flex;gap:8px}
.stat{background:rgba(0,0,0,.35);border:2px solid rgba(255,184,77,.5);border-radius:12px;padding:5px 12px;text-align:center;min-width:72px}
.stat small{display:block;font-size:12px;color:var(--warm)}
.stat strong{font-size:22px;font-weight:900}
.stat.low strong{color:#ff7a5a}
.alert{align-self:center;background:var(--red);color:#fff;font-weight:900;font-size:18px;padding:8px 16px;border-radius:12px;border:3px solid #ffe27a;animation:blinkA .5s infinite alternate;white-space:nowrap}
@keyframes blinkA{to{background:#ff7a1a}}

/* 點單紙 */
.orders{display:flex;gap:8px;flex-wrap:wrap}
.ticket{position:relative;width:96px;background:var(--paper);color:var(--ink);border-radius:4px 4px 8px 8px;padding:18px 7px 6px;
  box-shadow:0 4px 0 rgba(0,0,0,.25);border:2px solid var(--ink);transform:rotate(var(--r,0deg))}
.ticket::before{content:"";position:absolute;top:-7px;left:50%;width:30px;height:12px;transform:translateX(-50%);background:#9aa3ab;border:2px solid var(--ink);border-radius:3px}
.ticket .tbl{position:absolute;top:2px;left:5px;font-weight:900;font-size:12px;background:var(--ink);color:var(--paper);border-radius:6px;padding:0 5px}
.ticket .tbl.out{background:var(--red)}
.ticket svg{display:block;width:40px;height:36px;margin:0 auto}
.ticket .name{text-align:center;font-weight:900;font-size:13px}
.pat{height:7px;border-radius:4px;background:#e2d3b5;overflow:hidden;margin-top:3px;border:1px solid var(--ink)}
.pat b{display:block;height:100%;width:var(--p);background:var(--c,#3aa55c);transition:width 1s linear}
.ticket .sec{font-size:11px;font-weight:700;text-align:right}
.ticket.urgent{animation:shake .5s infinite}
@keyframes shake{0%,100%{transform:rotate(var(--r,0deg))}50%{transform:rotate(calc(var(--r,0deg) + 2deg))}}
@keyframes drop{from{transform:translateY(-30px);opacity:0}}

/* 準備面板 */
.brief{display:flex;gap:16px;background:rgba(0,0,0,.4);border:2px solid rgba(255,184,77,.5);border-radius:12px;padding:8px 14px;font-weight:700;font-size:14px;line-height:1.6}
.brief > div:first-child{min-width:150px}
.brief h3{margin:0;color:var(--warm);font-size:18px}
.brief .recipe{display:flex;align-items:center;gap:6px}
.brief .recipe svg{width:26px;height:24px}
.brief .bad{color:#ff7a5a}
.brief .good{color:#7be09a}
.chips{display:flex;gap:6px;flex-wrap:wrap;margin:4px 0}
.chips span{padding:1px 8px;border-radius:8px;font-size:12px;background:var(--pc);opacity:.45}
.chips span.y{opacity:1}
.brief .btns{display:flex;gap:8px;margin-top:4px}
.brief button{padding:6px 12px;font-size:14px;white-space:nowrap}

/* 地圖 */
.map{position:relative;width:calc(20*var(--t));height:calc(13*var(--t));border-radius:10px;overflow:hidden;border:3px solid var(--ink)}
.layer{position:absolute;inset:0}
.layer > svg{width:100%;height:100%;display:block}
.over{pointer-events:none;z-index:900}
.o{stroke:var(--ink);stroke-width:2;stroke-linejoin:round;paint-order:stroke}
.st{position:absolute;left:calc(var(--x)*var(--t));top:calc(var(--y)*var(--t));width:var(--t);height:var(--t)}
.st > svg{width:100%;height:100%;overflow:visible;display:block}
.label{position:absolute;left:50%;bottom:-3px;transform:translate(-50%,50%);white-space:nowrap;background:rgba(58,36,22,.9);color:var(--paper);
  font-size:11px;font-weight:900;padding:0 6px;border-radius:6px;z-index:3;pointer-events:none}
.badge{position:absolute;top:-8px;right:-8px;background:var(--red);color:#fff;font-size:11px;font-weight:900;border-radius:10px;padding:0 6px;border:2px solid var(--ink);z-index:4;white-space:nowrap}
.badge.ok{background:var(--green)}
.badge.cook{background:#b8741a}
.badge.burnt{background:#222;color:#ffb0a0}
.prog{position:absolute;left:50%;top:-14px;transform:translateX(-50%);width:24px;height:24px;border-radius:50%;border:2px solid var(--ink);
  background:conic-gradient(var(--pc,#4fd17a) var(--p),rgba(0,0,0,.55) 0);z-index:5}
.prep .movable{outline:2px dashed #fff;outline-offset:-2px;border-radius:6px}
.zones{display:none}
.prep .zones{display:block}
.zone{position:absolute;border:3px dashed rgba(255,226,122,.7);border-radius:8px}
.zone span{position:absolute;right:6px;bottom:2px;font-size:12px;font-weight:900;color:#ffe27a;text-shadow:0 1px 0 #000}
.zone.lane{border-color:rgba(255,120,90,.8)}
.zone.lane span{color:#ff9a7a}
.grid{position:absolute;inset:0;pointer-events:none;opacity:0;z-index:1;
  background-image:linear-gradient(rgba(255,255,255,.12) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.12) 1px,transparent 1px);background-size:var(--t) var(--t)}
.prep .grid{opacity:1}
.aim{position:absolute;left:0;top:0;width:var(--t);height:var(--t);border:3px solid rgba(255,255,255,.85);border-radius:10px;pointer-events:none;z-index:2;display:none}
.aim.on{display:block}
.aim.ok{border-color:#4fd17a;background:rgba(79,209,122,.25)}
.aim.no{border-color:#ff5a3a;background:rgba(255,90,58,.25)}

/* 角色 */
.ch{position:absolute;left:0;top:0;width:var(--t);height:calc(var(--t)*1.47);will-change:transform;pointer-events:none}
.ch > svg{width:100%;height:100%;overflow:visible;display:block}
.ch.left > svg{transform:scaleX(-1)}
.ch.off{opacity:.4;filter:grayscale(1)}
.ch.npc{opacity:.88}
.ch.dash > svg{filter:drop-shadow(-8px 0 2px rgba(255,255,255,.35))}
.tag{position:absolute;top:-6px;left:50%;transform:translateX(-50%);font-size:11px;font-weight:900;padding:0 6px;border-radius:6px;color:#fff;background:var(--pc);border:2px solid var(--ink);white-space:nowrap;z-index:2}
.bubble{position:absolute;bottom:calc(100% + 6px);left:50%;transform:translateX(-50%);white-space:nowrap;background:var(--paper);color:var(--ink);
  font-weight:900;font-size:12px;padding:2px 8px;border-radius:10px;border:2px solid var(--ink);z-index:3}
.want{position:absolute;bottom:calc(100% - 4px);left:50%;transform:translateX(-50%);width:40px;height:40px;border-radius:50%;border:2px solid var(--ink);
  background:conic-gradient(var(--c) var(--p),#6b5a4a 0);display:flex;align-items:center;justify-content:center;z-index:3}
.want::before{content:"";position:absolute;inset:4px;border-radius:50%;background:var(--paper)}
.want svg{position:relative;width:28px;height:26px}
.want.angry{animation:shake .3s infinite}
.mood{position:absolute;top:2px;right:-4px;width:20px;height:20px;z-index:3}

/* 動畫 */
.bob{animation:bob 1.3s ease-in-out infinite}
@keyframes bob{50%{transform:translateY(-1.3px)}}
.walk .bob{animation-duration:.42s}
.legL,.legR{transform-box:fill-box;transform-origin:50% 10%}
.walk .legL{animation:leg .42s ease-in-out infinite alternate}
.walk .legR{animation:leg .42s ease-in-out infinite alternate-reverse}
@keyframes leg{from{transform:rotate(24deg)}to{transform:rotate(-24deg)}}
.eyes{transform-box:fill-box;transform-origin:center;animation:blink 3.6s infinite}
@keyframes blink{0%,93%,100%{transform:scaleY(1)}96%{transform:scaleY(.1)}}
.bub{transform-box:fill-box;transform-origin:center;animation:bub 1s ease-out infinite}
@keyframes bub{0%{transform:scale(.2);opacity:0}50%{opacity:1}100%{transform:scale(1.3) translateY(-2px);opacity:0}}
.steam,.smoke{transform-box:fill-box;transform-origin:center;animation:steam 2.4s ease-out infinite}
@keyframes steam{0%{transform:translateY(0) scale(.5);opacity:0}25%{opacity:.6}100%{transform:translateY(-26px) scale(1.7);opacity:0}}
.lan{transform-box:fill-box;transform-origin:50% 0;animation:sway 2.8s ease-in-out infinite alternate}
@keyframes sway{from{transform:rotate(-5deg)}to{transform:rotate(5deg)}}
.lglow{animation:flick 1.7s ease-in-out infinite alternate}
@keyframes flick{from{opacity:.45}to{opacity:.9}}
.flame{transform-box:fill-box;transform-origin:50% 100%;animation:flame .22s ease-in-out infinite alternate}
@keyframes flame{to{transform:scaleY(1.2) scaleX(.9)}}

.pop{position:absolute;font-size:20px;font-weight:900;color:#ffe27a;text-shadow:0 2px 0 #7a1d10,0 0 6px #000;pointer-events:none;opacity:0;z-index:950;white-space:nowrap}
.pop.on{animation:popUp 1.4s ease-out}
@keyframes popUp{0%{opacity:1;transform:translate(-50%,0)}100%{opacity:0;transform:translate(-50%,-60px)}}
.count{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:96px;font-weight:900;color:var(--warm);
  text-shadow:0 0 30px rgba(255,170,60,.9),0 4px 0 var(--ink);pointer-events:none;z-index:960}

.bottom{display:flex;justify-content:space-between;align-items:center;margin-top:10px;gap:12px;min-height:28px}
.keys{display:flex;gap:12px;font-size:13px;font-weight:700;flex-wrap:wrap}
.keys kbd{display:inline-block;min-width:22px;text-align:center;background:var(--paper);color:var(--ink);border-radius:5px;padding:0 5px;margin-right:3px;box-shadow:0 2px 0 #b9a27a;font-family:inherit}
.prepOnly{display:none!important}
.prep .prepOnly{display:inline!important}
.hand{font-weight:900;font-size:15px;color:var(--warm);text-align:right}
.hand b{color:var(--paper)}

/* 大廳、結算 */
.overlay{position:absolute;inset:0;background:rgba(18,10,32,.82);display:flex;align-items:center;justify-content:center;z-index:990;padding:20px;border-radius:18px}
.panel{background:var(--paper);color:var(--ink);border-radius:16px;padding:22px 26px;max-width:760px;width:100%;box-shadow:0 10px 0 rgba(0,0,0,.3);border:3px solid var(--ink)}
.panel h2{margin:0 0 10px;font-size:26px;font-weight:900;display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.panel h2 .code{background:var(--ink);color:var(--warm);padding:2px 12px;border-radius:8px;letter-spacing:.2em}
.panel h2 button{font-size:14px;padding:6px 12px}
.team{display:flex;gap:14px;margin:6px 0 16px;flex-wrap:wrap}
.team .who{display:flex;flex-direction:column;align-items:center;font-weight:900;font-size:13px}
.team svg{width:54px;height:70px}
.team .empty{width:54px;height:54px;border:2px dashed #c9b48a;border-radius:50%;margin:8px 0}
.levels{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.lv{background:#fbe9c6;color:var(--ink);text-align:left;border:3px solid #e2c48d;border-radius:12px;padding:12px;display:flex;flex-direction:column;gap:4px}
.lv:hover{border-color:var(--red)}
.lv .id{color:var(--red);font-size:14px}
.lv .nm{font-size:20px}
.lv .goal{font-size:13px;font-weight:700}
.lv .menu svg{width:30px;height:28px}
.lv .stars{color:#e0a100;font-size:20px;letter-spacing:2px}
.ledger{display:grid;grid-template-columns:1fr auto;gap:4px 30px;font-size:17px;font-weight:700;margin:10px 0 16px;
  background:repeating-linear-gradient(#fff4dc 0 29px,#e6d3ae 29px 30px);padding:4px 12px;border-left:4px solid var(--red)}
.ledger b{text-align:right}
.bigStars{font-size:52px;color:#e0a100;letter-spacing:6px;text-align:center}
.bigStars .dim{color:#d8c7a2}
.panel .btns{display:flex;gap:10px;justify-content:center}
.net{position:absolute;left:50%;top:70px;transform:translateX(-50%);background:var(--red);color:#fff;font-weight:900;padding:6px 16px;border-radius:10px;z-index:995}

/* ---------- 天數經營版 ---------- */
.hud #left{flex:1;min-width:0}
.stats{align-items:center;gap:14px}
.money{display:flex;align-items:center;gap:8px;background:rgba(0,0,0,.4);border:2px solid var(--ink);border-radius:12px;padding:4px 14px;font-size:24px;font-weight:900}
.coin{display:inline-flex;width:24px;height:24px;border-radius:50%;background:#f6c445;border:2px solid var(--ink);color:#7a4a00;font-style:normal;font-size:14px;font-weight:900;align-items:center;justify-content:center}
.day{text-align:right;font-weight:900}
.day strong{font-size:22px;color:var(--warm)}
.dots{display:flex;gap:3px;margin-top:2px}
.dots i{width:14px;height:14px;border-radius:50%;background:#4a3a5a;border:2px solid var(--ink);font-style:normal;font-size:9px;line-height:10px;text-align:center;color:#ffe27a}
.dots i.done{background:#3aa55c}.dots i.now{background:var(--warm)}
.timebar{display:flex;align-items:center;gap:10px;margin-top:20px}
.clock{flex:none;width:30px;height:30px;border-radius:50%;background:var(--paper);border:3px solid var(--ink);position:relative}
.clock::after{content:"";position:absolute;left:11px;top:3px;width:3px;height:10px;background:var(--ink);transform-origin:bottom;transform:rotate(130deg)}
.track{position:relative;flex:1;height:18px;background:#3a3046;border:3px solid var(--ink);border-radius:10px;overflow:hidden}
.track b{position:absolute;left:0;top:0;bottom:0;background:linear-gradient(#ffe27a,#f6b73c);transition:width .5s linear}
.track .night{position:absolute;top:0;bottom:0;right:0;background:rgba(40,30,90,.6)}
.remain{white-space:nowrap;font-weight:900}
.remain b{color:var(--warm)}
.map::after{content:"";position:absolute;inset:0;background:rgba(20,10,60,.35);opacity:0;transition:opacity 2s;pointer-events:none;z-index:899}
.map.night::after{opacity:1}
.pbar{position:absolute;left:4px;right:4px;top:-12px;height:10px;background:#2a2030;border:2px solid var(--ink);border-radius:6px;z-index:6;overflow:hidden}
.pbar b{display:block;height:100%;background:#5fd36a}
.pbar.blue b{background:#4fc3ff}
.pbar.hot b{background:#ff4a2a;animation:hot .3s infinite alternate}
@keyframes hot{to{background:#ffb02a}}
.warn{position:absolute;left:50%;top:-44px;transform:translateX(-50%);width:26px;height:26px;border-radius:50%;background:#e2392c;border:3px solid var(--ink);color:#fff;font-weight:900;font-size:18px;
  display:flex;align-items:center;justify-content:center;z-index:7;animation:warn .35s infinite alternate}
@keyframes warn{to{transform:translateX(-50%) scale(1.25);background:#ff8a1a}}
.inbox{position:absolute;left:0;right:0;top:-30px;display:flex;justify-content:center;z-index:6}
.inbox svg{width:16px;height:15px;background:var(--paper);border:1.5px solid var(--ink);border-radius:50%;margin:0 -2px}
.badge2{top:auto;bottom:-8px}
.st.chair{pointer-events:none}
#stations .st{z-index:1}
#stations .st:has(.warn),#stations .st:has(.pbar){z-index:950}
.pat2{position:absolute;bottom:calc(100% - 4px);left:50%;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;z-index:4}
.pat2 .tube{width:16px;height:34px;background:#2a2030;border:2px solid var(--ink);border-radius:6px;display:flex;align-items:flex-end;overflow:hidden}
.pat2 .tube b{display:block;width:100%}
.pat2 .ico{width:24px;height:24px;margin-top:-2px;background:var(--paper);border:2px solid var(--ink);border-radius:50%;display:flex;align-items:center;justify-content:center}
.pat2 .ico svg{width:18px;height:18px}
.pat2 span{margin-top:2px;font-size:10px;font-weight:900;background:rgba(58,36,22,.9);color:var(--paper);padding:0 5px;border-radius:5px;white-space:nowrap}
.pat2.shake{animation:shake2 .3s infinite}
@keyframes shake2{0%,100%{transform:translateX(-50%)}50%{transform:translateX(calc(-50% + 2px))}}
.order{position:absolute;bottom:calc(100% - 8px);left:50%;transform:translateX(-50%);width:32px;height:32px;border-radius:50%;background:#fff;border:2px solid var(--ink);display:flex;align-items:center;justify-content:center;z-index:3}
.order svg{width:24px;height:22px}
.pop{display:flex;align-items:center;gap:4px}
.env{position:absolute;width:calc(var(--t)*1.9);margin-left:calc(var(--t)*-.45);z-index:5;pointer-events:none}
.env .paper{background:var(--paper);color:var(--ink);border:2px solid var(--ink);border-radius:6px;padding:14px 4px 3px;text-align:center;position:relative;box-shadow:0 4px 0 rgba(0,0,0,.3);transform:rotate(-3deg)}
.env .paper::before{content:"";position:absolute;left:0;right:0;top:0;height:12px;background:linear-gradient(135deg,#e2553f 50%,transparent 50%) left/50% 100% no-repeat,linear-gradient(225deg,#e2553f 50%,transparent 50%) right/50% 100% no-repeat;border-bottom:2px solid var(--ink)}
.env b{display:block;font-size:11px;white-space:nowrap}
.env span{font-weight:900;font-size:12px;color:#2e7a3a}
.env span.no{color:#d9412b}
.env.reroll .paper{background:#cfe8ff}
.cardpick{display:flex;flex-direction:column;align-items:center;gap:12px}
.cardpick h2{color:var(--warm);font-size:26px;margin:0}
.cardpick .ledger{background:var(--paper);color:var(--ink);margin:0;min-width:360px}
.cards{display:flex;gap:30px}
.card{width:230px;background:var(--paper);color:var(--ink);border:3px solid var(--ink);border-radius:14px;padding:12px;text-align:center;box-shadow:0 8px 0 rgba(0,0,0,.35);font-family:inherit}
.card:hover{filter:none;transform:translateY(-4px)}
.card.cust{border-top:12px solid #7b5cc4}
.card.food{border-top:12px solid #e0a100}
.card .kind{font-weight:900;font-size:13px;color:#7a5a3a}
.card .art{height:96px;display:flex;align-items:center;justify-content:center}
.card h3{margin:4px 0;font-size:22px}
.card p{margin:0 0 8px;font-weight:700;font-size:14px}
.card .vote{font-size:12px;font-weight:900;background:#efe2c4;border-radius:8px;padding:3px}
.tie{font-weight:700}
.rule{font-weight:700;line-height:1.6}
button.big{font-size:20px;padding:12px 28px}

/* 放大：上方資訊蓋在背景店面那兩排上面 */
body{padding:8px 12px 8px}
.stage{padding:10px 12px 8px}
.hud{position:absolute;left:12px;right:12px;top:10px;height:calc(2*var(--t) - 30px);margin:0;min-height:0;z-index:985;padding:6px 10px;
  background:linear-gradient(rgba(27,19,48,.94),rgba(27,19,48,.8));border-radius:10px 10px 0 0;align-items:center;pointer-events:none}
.hud button,.hud .brief{pointer-events:auto}
.brief{font-size:13px;line-height:1.45;padding:5px 10px;max-height:calc(2*var(--t) - 40px);overflow:hidden}
.brief h3{font-size:16px}
.timebar{margin-top:0}
.rcode{color:var(--warm);letter-spacing:.15em}
button.mini{font-size:12px;padding:3px 9px;border-radius:7px}
.bottom{margin-top:8px}
.bottom > .mini:first-of-type{margin-left:auto}
.bottom > .mini + .mini{margin-left:6px}
.hand{margin-left:12px}

/* ---------- 手機、平板（觸控） ---------- */
.touchui,.rotate{display:none}
body.touch:has(#game:not([hidden])){padding:0;overflow:hidden;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
body.touch .game{width:100vw;height:100vh;display:flex;justify-content:center;align-items:center}
body.touch .stage{width:calc(20*var(--t));padding:0;border-radius:0;box-shadow:none;background:transparent}
body.touch .map{border:none;border-radius:0}
body.touch .bottom{display:none}
body.touch .hud{left:0;right:0;top:0;height:auto;min-height:calc(1.3*var(--t));padding:3px 8px;border-radius:0}
body.touch .brief{font-size:11px;line-height:1.35;padding:3px 8px;gap:8px;max-height:none}
body.touch .brief h3{font-size:13px}
body.touch .brief > div:nth-child(2){display:none}
body.touch .brief button{padding:3px 10px;font-size:13px}
body.touch .dots{display:none}
body.touch .money{font-size:15px;padding:2px 8px}
body.touch .coin{width:18px;height:18px;font-size:11px}
body.touch .day strong{font-size:14px}
body.touch .timebar .clock{width:20px;height:20px;border-width:2px}
body.touch .timebar .clock::after{left:7px;top:2px;height:7px}
body.touch .track{height:12px;border-width:2px}
body.touch .remain{font-size:12px}
body.touch .alert{font-size:13px;padding:3px 10px}
body.touch .label,body.touch .tag{font-size:8px;padding:0 3px}
body.touch .badge{font-size:8px;padding:0 4px;top:-6px;right:-6px}
body.touch .pat2 .tube{width:10px;height:22px}
body.touch .pat2 .ico{width:16px;height:16px}
body.touch .pat2 .ico svg{width:12px;height:12px}
body.touch .pat2 span,body.touch .bubble{font-size:8px}
body.touch .order{width:22px;height:22px}
body.touch .order svg{width:17px;height:15px}
body.touch .env b{font-size:8px}
body.touch .env span{font-size:9px}
body.touch .overlay{position:fixed;border-radius:0}
body.touch .panel{max-height:92vh;overflow:auto;padding:12px 16px}
body.touch .cards{gap:12px}
body.touch .card{width:180px;padding:8px}
body.touch .card .art{height:64px}
body.touch .pop{font-size:14px}
body.touch .count{font-size:64px}
body.touch .touchui{display:block;position:fixed;inset:0;pointer-events:none;z-index:1000}
.touchui .stick{position:absolute;left:calc((var(--side) - 120px)/2 + 6px);bottom:16%;width:120px;height:120px;border-radius:50%;
  background:rgba(255,244,220,.12);border:3px solid rgba(255,244,220,.4);pointer-events:auto;touch-action:none}
.touchui .stick i{position:absolute;left:34px;top:34px;width:52px;height:52px;border-radius:50%;background:rgba(255,184,77,.9);border:3px solid var(--ink);box-shadow:0 4px 0 rgba(0,0,0,.35);pointer-events:none}
.touchui .tbtns{position:absolute;right:max(8px,calc((var(--side) - 132px)/2));bottom:14%;width:132px;display:grid;grid-template-columns:1fr 1fr;gap:10px;justify-items:center;align-items:center}
.touchui .tb{pointer-events:auto;touch-action:none;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;
  border:3px solid var(--ink);box-shadow:0 5px 0 rgba(0,0,0,.4);font-weight:900;color:var(--ink);padding:0;line-height:1.1}
.touchui .tb small{font-size:9px}
.touchui .tb.on{transform:translateY(3px);box-shadow:0 2px 0 rgba(0,0,0,.4);filter:brightness(1.15)}
.touchui .big{grid-column:1/3;width:96px;height:96px;background:var(--warm);font-size:19px}
.touchui .mid{width:64px;height:64px;background:#7fc4e8;font-size:15px}
.touchui .sm{width:56px;height:56px;background:#cfc3e8;font-size:14px}
.touchui .tcorner{position:absolute;right:8px;top:8px;display:flex;gap:6px}
.touchui .xs{width:34px;height:34px;background:rgba(255,244,220,.85);font-size:15px;box-shadow:0 3px 0 rgba(0,0,0,.4)}
body.touch.portrait:has(#game:not([hidden])) .rotate{display:flex;position:fixed;inset:0;z-index:2000;background:var(--night);flex-direction:column;align-items:center;justify-content:center;gap:18px;text-align:center;font-weight:900;font-size:22px;color:var(--paper)}
.rotate .ph{width:80px;height:136px;border:6px solid var(--warm);border-radius:18px;animation:rot 2s ease-in-out infinite}
@keyframes rot{0%,30%{transform:rotate(0)}60%,100%{transform:rotate(-90deg)}}
/* 手機：準備面板只留重點，不要擋住攤位 */
body.touch .hud{min-height:0;max-height:calc(2*var(--t) - 6px);overflow:hidden}
body.touch .brief{padding:2px 8px;gap:10px;align-items:center}
body.touch .brief > div:first-child > div:nth-of-type(2){display:none}
body.touch .brief .bad ~ .bad,body.touch .brief .chips{display:none}
body.touch .brief .btns{margin-top:0}
body.touch .zone span{font-size:8px}
body.touch .env .paper{padding:8px 2px 2px}
body.touch .env .paper::before{height:7px}
body.touch .env b{font-size:7px}
body.touch .env span{font-size:8px}
body.touch .timebar{gap:6px}
body.touch .env{width:calc(var(--t)*1.5);margin-left:calc(var(--t)*-.25)}
/* 觸控按鈕：各自定位，透明度、大小可調 */
.touchui{--tuiop:.85;--tuisc:1}
.touchui .ctl{position:absolute;bottom:auto;right:auto;transform:translate(-50%,-50%) scale(var(--tuisc));opacity:var(--tuiop);transition:opacity .15s}
.touchui .ctl.on{opacity:1}
.touchui .tb.on{transform:translate(-50%,-50%) scale(calc(var(--tuisc)*.93));box-shadow:0 2px 0 rgba(0,0,0,.4);filter:brightness(1.15)}
.touchui .stick{left:auto;bottom:auto;width:130px;height:130px}
.touchui .stick i{left:39px;top:39px}
.touchui .stickzone{position:absolute;left:0;top:calc(2*var(--t));width:48vw;bottom:0;pointer-events:auto;touch-action:none}
body.ov .touchui .stickzone{display:none}
.touchui .tset{position:absolute;right:12px;top:52px;width:300px;background:var(--paper);color:var(--ink);border:3px solid var(--ink);border-radius:14px;padding:12px 14px;pointer-events:auto;box-shadow:0 8px 0 rgba(0,0,0,.35);z-index:5}
.touchui .tset h3{margin:0 0 6px;font-size:17px}
.touchui .tset .item{display:flex;align-items:center;gap:10px;margin:8px 0;font-weight:900;font-size:14px}
.touchui .tset .item span{flex:none;width:96px}
.touchui .tset input[type=range]{flex:1;accent-color:#e2553f}
.touchui .tset input[type=checkbox]{width:22px;height:22px;accent-color:#e2553f}
.touchui .tset .item b{width:30px;text-align:right}
.touchui .tset .btns{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}
.touchui .tset .btns button{font-size:13px;padding:6px 10px}
.touchui .tedit-bar{display:none}
body.tedit .touchui .tedit-bar{display:flex;align-items:center;gap:10px;position:absolute;left:50%;top:10px;transform:translateX(-50%);background:var(--paper);color:var(--ink);font-weight:900;border:3px solid var(--ink);border-radius:12px;padding:6px 12px;pointer-events:auto}
body.tedit .touchui .ctl{outline:3px dashed #ffe27a;outline-offset:4px;opacity:1}
body.tedit .touchui .stickzone{display:none}

/* 按鍵提示：選中的東西上方顯示按下去會做什麼 */
.tip{position:absolute;left:0;top:0;display:flex;gap:6px;z-index:970;pointer-events:none;white-space:nowrap}
.tip span{display:flex;align-items:center;gap:4px;background:var(--paper);color:var(--ink);border:2px solid var(--ink);border-radius:8px;padding:1px 7px 1px 3px;font-size:12px;font-weight:900;box-shadow:0 3px 0 rgba(0,0,0,.35)}
.tip kbd{background:var(--ink);color:var(--paper);border-radius:5px;padding:0 5px;font-family:inherit;font-size:11px}
.aim.on{border-color:rgba(255,255,255,.6)}
.aim.on.go{background:none;border-color:#ffe27a;box-shadow:0 0 0 2px rgba(58,36,22,.6),0 0 12px rgba(255,226,122,.7)}
body.touch .tip span{font-size:10px}
body.touch .touchui .tb{font-size:clamp(11px, 2.2vw, 17px)}

/* 設定面板（電腦、手機共用） */
.gset{position:fixed;right:12px;top:52px;width:320px;max-height:88vh;overflow:auto;background:var(--paper);color:var(--ink);border:3px solid var(--ink);border-radius:14px;padding:12px 14px;z-index:1100;box-shadow:0 8px 0 rgba(0,0,0,.35)}
.gset h3{margin:0 0 6px;font-size:18px}
.gset .item{display:flex;align-items:center;gap:10px;margin:9px 0;font-weight:900;font-size:14px}
.gset .item > span{flex:none;width:96px}
.gset input[type=range]{flex:1;accent-color:#e2553f}
.gset input[type=checkbox]{width:22px;height:22px;accent-color:#e2553f}
.gset .item b{width:30px;text-align:right}
.gset .seg{display:flex;border:2px solid var(--ink);border-radius:999px;overflow:hidden}
.gset .seg button{background:transparent;color:var(--ink);border-radius:0;padding:4px 16px;font-size:14px}
.gset .seg button.on{background:var(--ink);color:var(--paper)}
.gset .btns{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}
.gset .btns button{font-size:13px;padding:6px 10px}
body:not(.touch) .gset .tonly{display:none}
body.touch .gset{top:48px;width:300px;padding:8px 12px}
body.touch .gset .item{margin:6px 0;font-size:13px}
/* 低畫質：關掉地圖上的動畫和陰影發光，警告類照樣會動 */
body.q0 .map *:not(.warn):not(.pbar b):not(.alert){animation:none!important}
body.q0 .ch > svg{filter:none!important}
body.q0 #stations svg{filter:none!important}

/* 名人 */
.ch.celeb > svg{transform-origin:50% 95%;scale:1.12}
.ch.celeb.left > svg{transform:scaleX(-1)}
.ctag{position:absolute;top:-12px;left:50%;transform:translateX(-50%);white-space:nowrap;font-size:11px;font-weight:900;color:#3a2416;background:linear-gradient(#ffe27a,#f6b73c);border:2px solid var(--ink);border-radius:8px;padding:0 6px;z-index:4;box-shadow:0 0 8px rgba(255,210,90,.8)}
.order em{position:absolute;right:-8px;bottom:-6px;font-style:normal;font-size:11px;font-weight:900;background:var(--red);color:#fff;border:2px solid var(--ink);border-radius:8px;padding:0 4px}
.cbanner{position:absolute;left:50%;top:calc(11.15*var(--t));transform:translateX(-50%);z-index:975;display:flex;align-items:center;gap:10px;white-space:nowrap;pointer-events:none;
  background:linear-gradient(90deg,#c8301e,#e2553f);border:3px solid #ffe27a;border-radius:14px;padding:4px 16px 4px 6px;font-weight:900;font-size:18px;color:#fff;
  box-shadow:0 0 18px rgba(255,200,80,.6);animation:blinkA .6s infinite alternate}
.cbanner b{color:#ffe27a}
.cbanner .ava{width:44px;height:44px;border-radius:50%;background:var(--paper);border:3px solid var(--ink);overflow:hidden;display:flex;justify-content:center;flex:none}
.cbanner .ava svg{width:44px;height:64px;margin-top:-2px}
body.touch .cbanner{font-size:12px;padding:2px 10px 2px 4px}
body.touch .cbanner .ava{width:28px;height:28px}
body.touch .cbanner .ava svg{width:28px;height:41px}
body.touch .ctag{font-size:8px}

/* 熊頭上的進度條 */
.hbar{position:absolute;left:12%;right:12%;top:-26px;height:10px;background:#2a2030;border:2px solid var(--ink);border-radius:6px;overflow:hidden;z-index:5}
.hbar b{display:block;height:100%;background:#5fd36a;transition:width .1s linear}
.hbar.blue b{background:#4fc3ff}
body.touch .hbar{height:7px;top:-18px}
/* 洗碗桶狀態：一個標籤放正上方，永遠在最上層 */
.sink{position:absolute;left:50%;top:-14px;transform:translateX(-50%);display:flex;gap:2px;z-index:6;white-space:nowrap}
.sink i{font-style:normal;font-size:12px;font-weight:900;color:#fff;border:2px solid var(--ink);border-radius:8px;padding:0 5px}
.sink i.d{background:#a0522d}
.sink i.c{background:#2e7ad8}
body.touch .sink i{font-size:8px;padding:0 3px}
#stations .st:has(.badge),#stations .st:has(.sink){z-index:950}

/* 進度條在最上層；名牌裡的數量 */
.bars{pointer-events:none;z-index:980}
.bars .hbar{position:absolute;left:0;top:0;right:auto;width:calc(var(--t)*.8);height:10px}
body.touch .bars .hbar{height:7px}
.label i{font-style:normal;border-radius:5px;padding:0 4px;margin-left:2px}
.label i.d{background:#a0522d}
.label i.c{background:#2e7ad8}

/* 碗盤架、洗碗桶的名牌放在設備上方，熊站在前面也看得到 */
.label.top{bottom:auto;top:-2px;transform:translate(-50%,-50%);font-size:12px}
#stations .st:has(.label.top){z-index:950}
/* 開房間選模式 */
.modeSeg{display:flex;gap:6px}
.modeSeg button{flex:1;padding:8px 4px;font-size:15px}
.modeSeg button.on{background:var(--warm);color:var(--ink)}
/* 點兩杯飲料 */
.order.two{width:52px;border-radius:16px}
/* 金魚游來游去 */
.swim{animation:swim 3s ease-in-out infinite alternate}
@keyframes swim{to{transform:translateX(10px)}}
/* 自動化設備：輸送帶箭頭在跑、齒輪在轉、綠燈在閃 */
.chev{animation:chev .7s linear infinite}@keyframes chev{from{transform:translateX(-12px)}to{transform:translateX(0)}}
.spin{transform-box:fill-box;transform-origin:center;animation:spin 2s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
.lamp{animation:lamp 1s ease-in-out infinite alternate}@keyframes lamp{to{opacity:.35}}
/* 攤位擴建後，後面那兩排變成攤位：上方資訊移到地圖外面，不擋設備 */
.stage.ext .hud{position:relative;left:auto;right:auto;top:auto;margin:0 0 6px;border-radius:10px}
body.touch .stage.ext .hud{height:calc(2*var(--t) - 6px)}
.stage.ext .hud{height:auto;min-height:calc(2*var(--t) - 30px);max-height:calc(2*var(--t) - 4px)}
.stage.ext .brief{max-height:calc(2*var(--t) - 14px)}

/* 藍圖信封：金色＝升級、藍色＝影印機 */
.env .paper i{position:absolute;top:-9px;right:-8px;font-style:normal;font-size:10px;font-weight:900;border:2px solid var(--ink);border-radius:7px;padding:0 4px;background:var(--gold);color:var(--ink);line-height:1.3}
.env.upg .paper{background:#fff2c2;box-shadow:0 4px 0 rgba(0,0,0,.3),0 0 14px rgba(255,210,80,.6)}
.env.upg .paper::before{background:linear-gradient(135deg,#e0a100 50%,transparent 50%) left/50% 100% no-repeat,linear-gradient(225deg,#e0a100 50%,transparent 50%) right/50% 100% no-repeat}
.env.copy .paper{background:#dceeff}
.env.copy .paper::before{background:linear-gradient(135deg,#2e7ad8 50%,transparent 50%) left/50% 100% no-repeat,linear-gradient(225deg,#2e7ad8 50%,transparent 50%) right/50% 100% no-repeat}
body.touch .env .paper i{font-size:7px}

/* 加料卡、飲料卡 */
.card.top{border-top:12px solid #d9241a}
.card.drink{border-top:12px solid #2e9a52}

/* 每天的小卡：夜市抽獎券 */
.sc{position:relative;width:210px;background:#fff8e6;color:var(--ink);border:3px solid var(--ink);border-radius:12px;padding:10px 12px 10px 22px;text-align:center;box-shadow:0 6px 0 rgba(0,0,0,.35);font:inherit;font-weight:700;cursor:pointer;transition:transform .15s}
.sc:hover{transform:translateY(-4px) rotate(-1deg)}
.sc::before{content:"";position:absolute;left:10px;top:8px;bottom:8px;border-left:2.5px dashed rgba(58,36,22,.4)}
.sc .kind{display:inline-block;font-size:11px;font-weight:900;background:var(--red);color:#fff;border-radius:8px;padding:1px 8px}
.sc svg{width:84px;height:72px;display:block;margin:4px auto}
.sc h4{margin:0;font-size:19px}
.sc p{margin:3px 0 0;font-size:13px;line-height:1.45}
.sc .when{display:inline-block;margin-top:6px;font-size:11px;font-weight:900;border-radius:6px;padding:0 6px;background:#efe2c4}
.sc .when.forever{background:#c9f0d4}
.sc .vote{margin-top:6px;font-size:12px;font-weight:900;background:#efe2c4;border-radius:8px;padding:3px}
body.touch .sc{width:160px;padding:6px 8px 6px 18px}
body.touch .sc svg{width:56px;height:48px}
/* 今天有效的小卡 */
.tchip{display:inline-flex;align-items:center;gap:4px;margin-left:8px;background:#fff8e6;color:var(--ink);border:2px solid var(--ink);border-radius:9px;padding:0 8px;font-weight:900;font-size:12px;white-space:nowrap;vertical-align:middle}
.tchip svg{width:18px;height:18px}

/* 熊熊等級 */
#home .lvbox{background:rgba(255,244,220,.07);border:2px solid rgba(255,184,77,.35);border-radius:14px;padding:8px 12px}
#home .lvtop{display:flex;align-items:center;gap:8px;font-weight:900}
#home .lvn{background:var(--warm);color:var(--ink);border-radius:8px;padding:0 8px;font-size:15px}
#home .lvtop em{margin-left:auto;font-style:normal;color:var(--gold);font-size:14px}
#home .lvbar{height:8px;border-radius:5px;background:rgba(0,0,0,.4);margin:6px 0 4px;overflow:hidden}
#home .lvbar b{display:block;height:100%;background:linear-gradient(90deg,#ffb84d,#ffe27a)}
#home .lvnext{font-size:13px;line-height:1.5}
#home .lvnext b{color:var(--gold)}
#home .row span .lk{display:inline-flex;align-items:center;gap:2px;font-style:normal;font-size:11px;color:#ffb84d;margin-left:4px}
#home .row span .lk svg{width:10px;height:12px}
@media (max-height:520px){#home .lvbox{padding:5px 10px}#home .lvnext{font-size:11px}}
/* 結束時的熊熊經驗 */
.xpgain{margin-top:10px;font-weight:900;font-size:17px;color:var(--ink)}
.xpgain b{color:#d9412b}
.unlock{margin-top:6px;font-weight:900;background:linear-gradient(90deg,#ffe27a,#ffb84d);color:var(--ink);border:2px solid var(--ink);border-radius:10px;padding:4px 10px;animation:drop .4s ease-out}

/* 3D 畫面：地圖改由立體場景畫，原本的 2D 圖層藏起來，只留名字、點單、進度條這些文字 */
.map canvas.three{position:absolute;inset:0;z-index:0;display:block}
.map.three #bg,.map.three #zones,.map.three #over,.map.three .grid,.map.three .aim{display:none}
.map.three .st > svg,.map.three .ch > svg{display:none}
.map.three .layer{pointer-events:none}
.map.three .st{width:var(--t);height:var(--t)}
.map.three .ch{height:0}
.map.three .label{bottom:auto;top:50%}
.map.three.night::after{opacity:.4}
.map.three .prep .movable,.prep .map.three .movable{outline:none}

/* 手機：3D 遊戲畫面撐滿整個螢幕，上方資訊和按鈕疊在上面 */
body.touch .stage{width:100vw;height:100vh;height:100dvh}
body.touch .map{width:100vw;height:100vh;height:100dvh}
body.touch #tCam{font-size:11px;width:auto;padding:0 8px}

/* 手機：畫面四周留一點邊 */
body.touch .stage{width:100vw;height:100vh;height:100dvh;padding:8px 10px;padding-left:max(10px,env(safe-area-inset-left));padding-right:max(10px,env(safe-area-inset-right))}
body.touch .map{width:100%;height:100%;border-radius:14px;border:2px solid rgba(58,36,22,.8)}
body.touch .hud{left:10px;right:10px;top:8px;border-radius:14px 14px 0 0}
/* 設定面板裡換外觀（遊戲中也能換） */
.gset .lookItem{display:grid;grid-template-columns:auto 44px 1fr;align-items:center}
.gset .lookItem svg{width:44px;height:64px;overflow:visible}
.gset .rows{display:flex;flex-direction:column;gap:4px}
.gset .row{display:grid;grid-template-columns:34px 26px 1fr 26px;align-items:center;gap:4px}
.gset .row > b{font-size:12px}
.gset .row button{padding:0;width:26px;height:26px;border-radius:8px;border:2px solid var(--ink);background:#fff;color:var(--ink);font:inherit;font-weight:900;cursor:pointer}
.gset .row span{display:flex;align-items:center;justify-content:center;gap:4px;height:26px;border-radius:8px;background:rgba(58,36,22,.08);font-size:13px;font-weight:900}
.gset .row span i{width:12px;height:12px;border-radius:50%;border:2px solid var(--ink)}
.gset .row span .lk{display:inline-flex;align-items:center;gap:2px;font-style:normal;font-size:10px;color:#b8741a}
.gset .row span .lk svg{width:9px;height:11px}
.gset .lookItem{grid-template-columns:44px 1fr;gap:6px}
.gset .lookItem > span{grid-column:1/-1}
.gset .seg button{white-space:nowrap}
.gset .row span{white-space:nowrap;overflow:hidden}
body.touch .gset{width:min(360px,calc(100vw - 24px))}

/* 3D：營業時收起設備名牌（數量那種留著）、客人耐心條只留圖示，不擋畫面 */
#stage:not(.prep) .map.three .st .label:not(.top){display:none}
.map.three .pat2 span{display:none}
.map.three .inbox{display:none}
/* 3D：設備的進度條在設備上方、粗一點 */
.map.three .st .pbar{top:-30px;left:-8px;right:-8px;height:13px;border-width:2.5px;z-index:7}
body.touch .map.three .st .pbar{top:-22px;height:10px;left:-4px;right:-4px}
.map.three .st:has(.pbar){z-index:950}
/* 手機點太遠的提示 */
.taphint{position:fixed;transform:translate(-50%,-140%);background:var(--paper);color:var(--ink);border:2px solid var(--ink);border-radius:10px;padding:2px 10px;font-weight:900;font-size:13px;pointer-events:none;opacity:0;white-space:nowrap}
.taphint.on{animation:taphint 1s ease-out}
@keyframes taphint{0%{opacity:1}70%{opacity:1}100%{opacity:0;transform:translate(-50%,-200%)}}

/* 換裝：儲存／復原 */
#home .dsave{display:flex;gap:8px;margin-top:8px}
#home .dsave .btn{flex:1;padding:9px;font-size:16px;background:var(--paper);box-shadow:0 4px 0 rgba(0,0,0,.35)}
#home .dsave .save{flex:2;background:linear-gradient(#ffd27a,#ff9f2e)}
#home .dsave .save.done{background:#9fe0b2;cursor:default}
@media (max-height:520px){#home .dsave{margin-top:5px}#home .dsave .btn{padding:5px;font-size:14px}#home .rand{padding:5px;font-size:14px}}

/* 首頁背景拉遠後，四周補夜色 */
#home .hbg{background:radial-gradient(ellipse at 65% 50%,#2a1c44,#140d24 70%)}
#home .world{border-radius:18px;overflow:hidden;box-shadow:0 0 0 2px rgba(255,184,77,.25),0 30px 80px rgba(0,0,0,.6)}
/* 練習／排位 */
#home .playSeg{display:grid;grid-template-columns:1fr 1fr;gap:6px;background:rgba(0,0,0,.3);border-radius:14px;padding:4px}
#home .playSeg button{font:inherit;font-weight:900;font-size:16px;padding:8px;border:none;border-radius:10px;background:transparent;color:var(--paper);cursor:pointer}
#home .playSeg button.on{background:var(--warm);color:var(--ink)}
#home .rankSeg{display:grid;grid-template-columns:1fr 1fr;gap:9px}
#home .rankSeg button{font:inherit;cursor:pointer;display:flex;flex-direction:column;gap:3px;padding:10px 8px;border-radius:14px;background:rgba(255,244,220,.07);border:2.5px solid rgba(255,244,220,.18);color:var(--paper);text-align:center}
#home .rankSeg button strong{font-size:17px}
#home .rankSeg button small{font-size:12px;opacity:.85}
#home .rankSeg button.on{background:linear-gradient(rgba(255,184,77,.28),rgba(255,184,77,.12));border-color:var(--warm);box-shadow:0 0 22px rgba(255,184,77,.35)}
#home .lb{background:rgba(0,0,0,.3);border:2px solid rgba(255,184,77,.35);border-radius:14px;padding:8px 10px}
#home .lbHead{font-weight:900;color:var(--warm);margin-bottom:4px}
#home .lb ol{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px;max-height:210px;overflow:auto}
#home .lb li{display:grid;grid-template-columns:26px 1fr auto;grid-template-rows:auto auto;column-gap:8px;align-items:center;background:rgba(255,244,220,.06);border-radius:9px;padding:4px 8px;font-size:13px;font-weight:700}
#home .lb li .rk{grid-row:1/3;width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:#5a4870;font-size:13px}
#home .lb li .rk.r1{background:#f6c445;color:var(--ink)}#home .lb li .rk.r2{background:#d8dde2;color:var(--ink)}#home .lb li .rk.r3{background:#d9925a;color:var(--ink)}
#home .lb li .nm{font-weight:900}
#home .lb li .ds{grid-column:2;font-size:11px;opacity:.75}
#home .lb li em{grid-row:1/3;grid-column:3;font-style:normal;color:var(--gold);font-weight:900;white-space:nowrap}
#home .lb li.none{display:block;text-align:center;opacity:.7}
.rkTag{display:inline-block;background:#d9412b;color:#fff;border-radius:6px;padding:0 6px;margin-right:6px;font-size:12px}
@media (max-height:520px){#home .playSeg button{font-size:13px;padding:5px}#home .rankSeg button{padding:5px}#home .rankSeg button strong{font-size:14px}#home .rankSeg button small{font-size:10px}#home .lb ol{max-height:120px}}

/* 開攤選項變多：三欄排列 */
#home .modes{grid-template-columns:repeat(3,1fr)}
/* 排行榜按鈕＋彈窗 */
#home .tools .lbBtn{background:linear-gradient(#ffd27a,#ff9f2e);color:var(--ink);border-color:var(--ink)}
#home .lbModal{position:fixed;inset:0;z-index:60;background:rgba(10,6,20,.6);display:flex;align-items:center;justify-content:center;padding:16px}
#home .lbBox{width:min(460px,100%);max-height:90vh;overflow:auto;background:linear-gradient(#2a1c44,#1b1330);border:3px solid var(--warm);border-radius:20px;padding:14px 16px 16px;box-shadow:0 20px 60px rgba(0,0,0,.6)}
#home .lbTop{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}
#home .lbTop b{font-size:20px;color:var(--warm)}
#home .lbTop .x{font:inherit;font-size:20px;background:none;border:none;color:var(--paper);cursor:pointer}
#home .lbTabs{display:grid;grid-template-columns:1fr 1fr;gap:6px;background:rgba(0,0,0,.3);border-radius:12px;padding:4px;margin-bottom:10px}
#home .lbTabs button{font:inherit;font-weight:900;font-size:16px;padding:7px;border:none;border-radius:9px;background:transparent;color:var(--paper);cursor:pointer}
#home .lbTabs button.on{background:var(--warm);color:var(--ink)}
#home .lbModal .lb ol{max-height:none}
#home .lbTabs[hidden]{display:none}
#home .lbGames{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:10px}
#home .lbGames button{font:inherit;font-weight:900;font-size:14px;display:flex;flex-direction:column;align-items:center;gap:2px;padding:9px 4px;border-radius:14px;border:2.5px solid rgba(255,244,220,.2);background:rgba(255,244,220,.06);color:var(--paper);cursor:pointer}
#home .lbGames button i{font-style:normal;font-size:26px}
#home .lbGames button.on{background:linear-gradient(rgba(255,184,77,.35),rgba(255,184,77,.12));border-color:var(--warm);box-shadow:0 0 18px rgba(255,184,77,.4)}
@media (max-height:520px){#home .lbGames button{padding:4px;font-size:12px}#home .lbGames button i{font-size:18px}#home .lbBox{padding:8px 12px}#home .lbTop b{font-size:16px}#home .lbTabs button{padding:4px;font-size:14px}}

/* 設定：回到主畫面 */
.gset .leave{display:block;width:100%;margin-top:10px;font:inherit;font-weight:900;font-size:15px;padding:8px;border-radius:10px;border:2px solid var(--ink);background:#f3efe6;color:#c9342a;cursor:pointer}
.gset .leave.sure{background:#d9412b;color:#fff}

/* 電腦版：遊戲畫面撐滿整個視窗（任何比例的螢幕都適配） */
body:not(.touch):has(#game:not([hidden])){padding:0;overflow:hidden}
body:not(.touch) .game{width:100vw;height:100vh}
body:not(.touch) .stage{width:100vw;height:100vh;border-radius:0;padding:10px 14px 8px;display:flex;flex-direction:column;box-shadow:none}
body:not(.touch) .map{width:100%;height:auto;flex:1;min-height:0}
body:not(.touch) .hud{left:14px;right:14px}
body:not(.touch) .stage.ext .hud{left:auto;right:auto}
.pauseNote{font-size:13px;color:#c9342a;margin-left:6px}

/* 首頁選單：一眼看完，不用捲動 */
@media (min-height:521px){
  #home .menu{width:min(600px,48vw);gap:clamp(6px,1.3vh,12px);padding:clamp(12px,2.4vh,26px) clamp(18px,2.4vw,34px);overflow:hidden}
  #home .menu::after{left:min(600px,48vw)}
  #home .logo{margin:0}
  #home .logo h1{font-size:clamp(28px,4.4vh,44px)}
  #home .logo .ltag{font-size:12px;bottom:-12px}
  #home .lvbox{padding:6px 12px}
  #home .lvnext{font-size:12px}
  #home .field{gap:4px}
  #home .field > b{font-size:13px}
  #home input{padding:7px 12px;font-size:17px}
  #home .playSeg button{padding:6px;font-size:15px}
  #home .modes{grid-template-columns:repeat(5,1fr);gap:8px 6px}
  #home .mode{padding:5px 2px 4px;font-size:13px;gap:2px;border-radius:12px}
  #home .mode svg{width:34px;height:30px}
  #home .mode.on::after{width:18px;height:18px;font-size:10px;top:-7px;right:-5px}
  #home .rankSeg button{padding:8px 6px}
  #home .start{font-size:22px;padding:9px}
  #home .start svg{width:24px;height:24px}
  #home .or2{font-size:12px}
  #home .join input{padding:7px}
  #home .join .btn{font-size:16px}
  #home .tools button{padding:5px 12px;font-size:13px}
  #home .tools{margin-top:auto}
}
body:not(.touch) .hud{height:auto;min-height:0;padding-bottom:8px}
body:not(.touch) .brief{max-height:none}
/* 手機橫拿首頁：左右兩欄一眼看完（左：名字、模式、開房間；右：開哪一攤），換裝用按鈕叫出來 */
@media (max-height:520px){
  #home .menu{width:100vw;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);grid-auto-flow:row dense;align-content:start;gap:5px 14px;padding:8px 14px;overflow:hidden}
  #home .menu::after{display:none}
  #home .menu > *{grid-column:1}
  #home #practiceBox,#home #rankedBox{grid-column:2;grid-row:1 / span 8;align-self:start}
  #home .logo{margin:0}#home .logo .board{padding:4px 14px 6px}#home .logo h1{font-size:22px}#home .logo .ltag{display:none}#home .logo .bulbs{display:none}
  #home .lvbox{padding:3px 8px}#home .lvnext{display:none}#home .lvbar{margin:3px 0 0}
  #home .field > b{font-size:12px}
  #home input{font-size:14px;padding:4px 8px}
  #home .playSeg{padding:3px}#home .playSeg button{font-size:13px;padding:3px}
  #home .modes{grid-template-columns:repeat(5,1fr);gap:5px 4px}
  #home .mode{padding:3px 1px;font-size:11px;gap:0}#home .mode svg{width:28px;height:24px}
  #home .start{font-size:17px;padding:5px}#home .start svg{width:18px;height:18px}
  #home .or2{font-size:11px}
  #home .join input{padding:4px}#home .join .btn{font-size:14px;padding:0 12px}
  #home .tools{margin-top:0;flex-wrap:wrap;gap:5px}#home .tools button{padding:3px 8px;font-size:12px}
  #home .dressBtn{display:block;font:inherit;font-weight:900;font-size:12px;padding:3px 8px;border-radius:10px;border:2px solid var(--warm);background:rgba(255,184,77,.15);color:var(--paper);cursor:pointer}
  #home .dress{display:none;top:8px;bottom:8px;right:10px;width:320px;z-index:5}
  #home .dress.open{display:block}#home .dhead .x{display:block}
}
@media (max-height:520px){
  #home .shade{background:rgba(14,8,28,.8)}
  #home .logo{justify-self:start}
  #home .modes > .mode{min-width:0;overflow:hidden;background:rgba(40,26,64,.92)}
  #home .mode.on{overflow:visible}
  #home #practiceBox,#home #rankedBox{min-width:0}
}

/* 測試模式的框框 */
.trialTag{position:absolute;left:0;top:0;z-index:960;pointer-events:none;display:flex;flex-direction:column;align-items:center;gap:2px;background:rgba(20,40,28,.85);border:2px solid #7bff9a;border-radius:10px;padding:4px 10px;color:#eafff0;box-shadow:0 0 14px rgba(123,255,154,.4)}
.trialTag b{font-size:14px}
.trialTag small{font-size:11px;opacity:.85}
.trialTag i{display:block;width:70px;height:8px;border-radius:5px;background:#1a2a20;border:1.5px solid #3a2416;overflow:hidden}
.trialTag i u{display:block;height:100%;background:#7bff9a;text-decoration:none}
body.touch .trialTag{padding:2px 6px}body.touch .trialTag b{font-size:11px}body.touch .trialTag small{font-size:9px}
.trialHud{background:rgba(40,120,70,.85);border:2px solid #7bff9a;border-radius:10px;padding:4px 12px;font-size:14px;font-weight:700}
.trialHud b{color:#ffe27a;margin-right:8px}
.gset .leave.endTrial{color:#2e7a3a}

/* 3D：設備名牌用 transform 定位 */
.map.three .st{left:0;top:0;will-change:transform}

/* 進站畫面：3D 紅燈籠夜市街（預覽19 定案） */
.intro{position:fixed;inset:0;z-index:3000;overflow:hidden;background:#000;cursor:pointer;text-align:center;color:#fff4e6}
.intro .gate{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;background:radial-gradient(ellipse at center,#1c0d16,#07040c 70%)}
.intro .glogo{font-size:clamp(40px,7vw,80px);font-weight:900;letter-spacing:.12em;color:#fff3e6;text-shadow:0 0 12px #ffb36b,0 0 30px #ff7a2a}
.intro .gate small{opacity:.7;font-weight:700}
.intro .gload{width:min(60vw,280px);height:10px;border-radius:8px;border:2px solid #3a2a40;background:#1a1020;overflow:hidden}
.intro .gload i{display:block;width:40%;height:100%;background:linear-gradient(90deg,#ffd27a,#ff9f2e);border-radius:6px;animation:gload 1s ease-in-out infinite alternate}
@keyframes gload{from{transform:translateX(-60%)}to{transform:translateX(210%)}}
.intro canvas{position:absolute;inset:0;width:100%;height:100%;display:block}
.intro .ititle{position:absolute;left:0;right:0;top:38%;transform:translateY(-50%);pointer-events:none}
.intro .ititle h1{margin:0;font-family:"Noto Serif TC",serif;font-weight:900;font-size:clamp(50px,9.5vw,136px);letter-spacing:.14em;padding-left:.14em;line-height:1.1;
  background:linear-gradient(100deg,#ffcf8a 0%,#fff6e0 38%,#fff 48%,#fff6e0 58%,#ffb55a 100%);background-size:250% 100%;background-position:100% 0;-webkit-background-clip:text;background-clip:text;color:transparent;
  filter:drop-shadow(0 0 18px rgba(255,140,60,.55)) drop-shadow(0 6px 30px rgba(0,0,0,.8));opacity:0;transform:translateY(18px) scale(.98);transition:opacity 1.4s ease,transform 1.8s cubic-bezier(.2,.7,.2,1)}
.intro .ititle.on h1{opacity:1;transform:none;animation:isweep 3.2s 1s ease-in-out infinite}
@keyframes isweep{0%{background-position:100% 0}55%,100%{background-position:0 0}}
.intro .irule{display:flex;align-items:center;justify-content:center;gap:16px;margin-top:18px;font-size:clamp(12px,1.5vw,17px);font-weight:500;letter-spacing:.5em;padding-left:.5em;color:#ffd9a8;opacity:0;transition:opacity 1.2s ease .6s}
.intro .irule i{display:block;width:clamp(30px,8vw,110px);height:1px;background:linear-gradient(90deg,transparent,#ffcf8a,transparent)}
.intro .ititle.on .irule{opacity:.92}
.intro .icta{position:absolute;left:50%;bottom:11vh;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:10px;opacity:0;transition:opacity 1s ease;pointer-events:none}
.intro .icta.on{opacity:1}
.intro .icta b{font-weight:500;font-size:clamp(15px,1.7vw,19px);letter-spacing:.6em;padding-left:.6em;animation:ibreathe 2.4s ease-in-out infinite}
.intro .icta span{font-size:12px;letter-spacing:.3em;color:rgba(255,230,200,.5)}
.intro .iring{width:44px;height:44px;border-radius:50%;border:1px solid rgba(255,214,160,.7);position:relative}
.intro .iring::after{content:"";position:absolute;inset:-1px;border-radius:50%;border:1px solid rgba(255,214,160,.7);animation:iping 2.4s ease-out infinite}
.intro .iring::before{content:"";position:absolute;left:50%;top:50%;width:6px;height:6px;margin:-3px 0 0 -3px;border-radius:50%;background:#ffd9a8;box-shadow:0 0 10px #ffb36b}
@keyframes iping{from{transform:scale(1);opacity:.8}to{transform:scale(2.2);opacity:0}}
@keyframes ibreathe{50%{opacity:.45}}
.intro .iflash{position:absolute;inset:0;background:radial-gradient(circle at 50% 45%,#fff5e0,#ffb060 40%,rgba(255,120,40,0) 75%);opacity:0;pointer-events:none;transition:opacity .5s ease-in}
.intro .ivig{position:absolute;inset:0;pointer-events:none;box-shadow:inset 0 0 220px 60px rgba(0,0,0,.85)}
.intro .ibar{position:absolute;left:0;right:0;height:7vh;background:#000;z-index:3;transition:height 1.2s cubic-bezier(.6,0,.3,1)}
.intro .ibar.t{top:0}.intro .ibar.b{bottom:0}.intro.open .ibar{height:0}
.intro.out{opacity:0;transition:opacity .7s ease;pointer-events:none}

/* 載入畫面的進度條、第一次玩的引導、大廳玩法四格 */
.coach{position:absolute;left:50%;top:calc(2.3*var(--t));transform:translateX(-50%);z-index:970;pointer-events:none;max-width:70%;text-align:center;background:rgba(20,10,30,.86);border:2px solid #ffb84d;border-radius:12px;padding:5px 14px;color:#fff4dc;font-weight:900;font-size:calc(.3*var(--t) + 5px);line-height:1.4}
.coach b{color:#ffe27a}
body.touch .coach{font-size:12px;padding:3px 10px;max-width:56%}
body.ov .coach{display:none}
.how{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:10px 0}
.how div{background:#fff4dc;border:3px solid #3a2416;border-radius:12px;padding:8px 6px;color:#3a2416;font-weight:700;font-size:13px;line-height:1.4;text-align:center}
.how div b{display:block;font-size:16px;font-weight:900;color:#d9412b}
body.touch .how div{font-size:11px;padding:4px}body.touch .how div b{font-size:13px}

/* 字卡不重疊：名牌在腳下、設備上方由下到上＝狀態 → 進度條 → 警告在旁邊 → 操作提示 */
.map.three .ch.bear .tag{top:var(--fy,-6px)}
.map.three .tipOn .ch.bear.me .tag{opacity:0}
.map.three .st .badge{right:auto;left:50%;top:-10px;transform:translateX(-50%)}
.map.three .st:has(.label.top) .badge{top:-34px}
.map.three .st:has(.label.top) .pbar{top:-54px}
.map.three .st .warn{left:auto;right:calc(100% + 12px);top:-38px;transform:none}

/* 主選單：小遊戲入口（粉紅霓虹） */
#home .tools .mgBtn{background:linear-gradient(#ff8ac2,#e2357a);color:#fff;border-color:var(--ink);box-shadow:0 0 14px rgba(255,90,170,.55)}
#home .tools .mgBtn:hover{filter:brightness(1.1)}
#home .tools .mgBtn.cw{background:linear-gradient(#e0a8ff,#9a4ad8);box-shadow:0 0 14px rgba(190,110,255,.55)}
#home .tools .mgBtn.bl{background:linear-gradient(#7fd0ff,#2a7ad8);box-shadow:0 0 14px rgba(80,170,255,.55)}
#home .lb li.me{background:rgba(255,184,77,.3);outline:2px solid var(--warm)}
/* 工具列按鈕變多：排不下就換行，按鈕文字不折行 */
#home .tools{flex-wrap:wrap;gap:5px}#home .tools button{white-space:nowrap;padding:6px 7px;font-size:13px}

/* 從小遊戲回首頁的過場：黑幕淡開、畫面輕輕推近 */
.intro.back{background:#07040c;cursor:default}.intro.back>*{display:none}
.intro.back.go{animation:backFade .7s ease-out forwards}@keyframes backFade{to{opacity:0}}
#home.backIn{animation:backIn .9s cubic-bezier(.2,.7,.2,1)}@keyframes backIn{from{transform:scale(1.06);filter:blur(6px)}to{transform:none;filter:none}}

/* 首頁：夜市小遊戲三張卡（預覽20 定案） */
#home .mg{display:flex;flex-direction:column;gap:8px}
#home .mg .mgHead{display:flex;align-items:center;gap:10px;font-weight:900;font-size:14px;letter-spacing:.2em;color:#ffd9a8}
#home .mg .mgHead::after{content:"";flex:1;height:1px;background:linear-gradient(90deg,rgba(255,184,77,.6),transparent)}
#home .mg .mgCards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
#home .mg .mgCard{position:relative;display:block;height:clamp(84px,12.5vh,118px);border-radius:14px;overflow:hidden;cursor:pointer;text-decoration:none;border:2px solid rgba(255,244,220,.18);
  box-shadow:0 8px 20px rgba(0,0,0,.45);transition:transform .2s,box-shadow .2s,border-color .2s;background:#1a1020 center/cover}
#home .mg .mgCard::before{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(10,4,16,0) 35%,rgba(10,4,16,.92))}
#home .mg .mgCard b{position:absolute;left:12px;bottom:26px;font-size:18px;font-weight:900;color:#fff;text-shadow:0 2px 8px #000}
#home .mg .mgCard small{position:absolute;left:12px;right:8px;bottom:9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:11px;font-weight:700;color:rgba(255,236,210,.82)}
#home .mg .mgCard i{position:absolute;right:8px;top:8px;font-style:normal;font-size:11px;font-weight:900;padding:2px 8px;border-radius:999px;color:#2a1408;background:var(--c)}
#home .mg .mgCard:hover,#home .mg .mgCard:focus-visible{transform:translateY(-3px);border-color:var(--c);box-shadow:0 10px 26px rgba(0,0,0,.5),0 0 22px color-mix(in srgb,var(--c) 55%,transparent);outline:none}
/* 矮螢幕（小筆電）：卡片縮成一排細長條 */
#home .err:empty{display:none}
@media (max-height:820px){#home .menu{gap:9px;padding-top:10px;padding-bottom:10px}#home .mg .mgHead{display:none}#home .mg .mgCard{height:46px}#home .mg .mgCard small,#home .mg .mgCard i{display:none}
  #home .mg .mgCard b{bottom:auto;top:50%;transform:translateY(-50%);font-size:15px}#home .mg .mgCard::before{background:linear-gradient(90deg,rgba(10,4,16,.85),rgba(10,4,16,.15))}}

/* ===== 紙本介面（預覽21 定案）：今日菜單、點單小票、打烊日報、食譜圖鑑 ===== */
:root{--paperBg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3'/%3E%3CfeColorMatrix values='0 0 0 0 .4 0 0 0 0 .3 0 0 0 0 .15 0 0 0 .09 0'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E"),linear-gradient(170deg,#fbf2df,#f1e2c2);--hand:"LXGW WenKai TC","Noto Sans TC",serif}
.pmPaper,.news,.bookPaper{position:relative;color:#3a2416;background:var(--paperBg);box-shadow:0 18px 40px rgba(0,0,0,.55)}
.tape{position:absolute;width:92px;height:26px;background:rgba(255,236,190,.62);box-shadow:0 1px 3px rgba(0,0,0,.15);top:-12px;pointer-events:none}.tape.l{left:-18px;transform:rotate(-32deg)}.tape.r{right:-18px;transform:rotate(30deg)}
/* 今日菜單 */
.pmenu{position:absolute;z-index:60;left:50%;top:50%;transform:translate(-50%,-50%);width:min(500px,92vw);max-height:90%;overflow:auto;scrollbar-width:none;animation:pmIn .45s cubic-bezier(.2,1.4,.4,1)}
@keyframes pmIn{from{opacity:0;transform:translate(-50%,-44%) rotate(-4deg) scale(.92)}}
.pmPaper{padding:30px 34px 22px;transform:rotate(-1deg);font-family:var(--hand)}
.pmPaper .seal{position:absolute;right:22px;top:20px;width:62px;height:62px;border:3px solid #c4161c;border-radius:12px;color:#c4161c;font-family:"Noto Serif TC",serif;font-weight:900;font-size:19px;line-height:1.1;display:grid;place-items:center;text-align:center;transform:rotate(12deg);opacity:.78;animation:stampIn .5s .35s cubic-bezier(.3,1.8,.5,1) both}
@keyframes stampIn{from{transform:rotate(12deg) scale(2.2);opacity:0}}
.pmHead{text-align:center;border-bottom:2px dashed rgba(58,36,22,.35);padding-bottom:10px;margin-bottom:8px}
.pmHead small{display:block;font-size:14px;letter-spacing:.3em;color:#8a5a30}.pmHead b{display:block;font-family:"Noto Serif TC",serif;font-size:38px;letter-spacing:.18em;color:#c4161c;line-height:1.2}.pmHead span{font-size:15px}.pmHead u{text-decoration:none;color:#c4161c}
.pmNight{margin:6px 0;padding:6px 10px;background:rgba(196,22,28,.08);border-left:4px solid #c4161c;font-size:15px}
.pmDish{display:grid;grid-template-columns:58px 1fr auto;gap:12px;align-items:center;padding:8px 0;border-bottom:1px dotted rgba(58,36,22,.3);animation:dishIn .4s backwards}
.pmDish:nth-child(2){animation-delay:.08s}.pmDish:nth-child(3){animation-delay:.16s}.pmDish:nth-child(4){animation-delay:.24s}@keyframes dishIn{from{opacity:0;transform:translateX(30px)}}
.pmDish .ic{width:58px;height:54px;border-radius:50%;background:radial-gradient(#fffaf0,#efdcb8);display:grid;place-items:center;box-shadow:inset 0 0 0 2px rgba(58,36,22,.18)}.pmDish .ic svg{width:50px;height:46px}
.pmDish .nm{font-size:24px;font-weight:700;line-height:1.1}.pmDish .price{font-family:"Noto Serif TC",serif;font-weight:900;font-size:22px;color:#c4161c}
.tagNote{display:inline-block;margin-left:6px;font-family:"Noto Sans TC";font-size:12px;font-weight:900;color:#c4161c;background:#ffd0e4;padding:1px 6px;transform:rotate(-3deg)}
.pmSteps{display:flex;flex-wrap:wrap;align-items:center;gap:3px;margin-top:4px;font-size:14px}.pmSteps i{font-style:normal;padding:0 7px;border:1.5px solid rgba(58,36,22,.55);border-radius:999px;background:rgba(255,255,255,.45)}.pmSteps i.hot{border-color:#c4161c;color:#c4161c}.pmSteps em{font-style:normal;opacity:.5}
.pmFoot{display:flex;justify-content:space-between;gap:10px;margin-top:10px;font-size:15px}.pmFoot span:last-child{color:#8a5a30}
.pmSign{display:flex;justify-content:flex-end;align-items:baseline;gap:8px;margin-top:6px;transform:rotate(-3deg);font-size:20px;color:#2a4ab0}.pmSign b{display:inline}.pmSign small{font-size:12px;color:#5a6a90}
.pmTab{margin-top:8px;text-align:center;font-family:"Noto Sans TC";font-size:12px;color:#8a5a30;cursor:pointer}
.pmBtn{position:absolute;z-index:55;left:12px;bottom:calc(var(--t) * 1.6);font:inherit;font-weight:900;font-size:14px;cursor:pointer;color:#3a2416;background:var(--paperBg);border:2px solid #3a2416;border-radius:10px;padding:6px 12px;box-shadow:0 4px 0 rgba(0,0,0,.35);transform:rotate(-2deg)}
.pmBtn kbd{font:inherit;font-size:11px;background:#3a2416;color:#fff4dc;border-radius:4px;padding:0 4px}
.brief .pmOpen{margin:4px 0}.nightChip{margin-top:4px;color:#ffd0a0;font-weight:900}.tchip.night{background:#3a2a60;color:#e0d8ff}
/* 點單小票軌道 */
.trail{position:absolute;z-index:40;left:calc(var(--t) * .35);top:calc(var(--t) * 1.25);display:flex;gap:10px;align-items:flex-start;max-width:62%;pointer-events:none;padding-top:10px}
.trail::before{content:"";position:absolute;left:-14px;right:-14px;top:0;height:7px;border-radius:4px;background:linear-gradient(#e9ecf0,#7d828b);box-shadow:0 2px 4px rgba(0,0,0,.4)}
.trail:empty::before{display:none}
.tk{position:relative;width:104px;padding:14px 8px 12px;color:#3a2416;background:#fdfbf4;font-family:var(--hand);box-shadow:0 6px 12px rgba(0,0,0,.35);transform-origin:top center;animation:tkSway 3s ease-in-out infinite;
  -webkit-mask:linear-gradient(#000 0 0) top/100% calc(100% - 6px) no-repeat,conic-gradient(from -45deg at bottom,#0000,#000 1deg 89deg,#0000 90deg) bottom/12px 6px repeat-x;mask:linear-gradient(#000 0 0) top/100% calc(100% - 6px) no-repeat,conic-gradient(from -45deg at bottom,#0000,#000 1deg 89deg,#0000 90deg) bottom/12px 6px repeat-x}
.tk:nth-child(2n){animation-delay:-1.2s}.tk:nth-child(3n){animation-delay:-2.1s}
@keyframes tkSway{50%{transform:rotate(1.5deg)}}
.tk.new{animation:tkDrop .7s cubic-bezier(.2,1.6,.4,1) both}@keyframes tkDrop{from{transform:translateY(-50px) rotate(-8deg);opacity:0}}
.tk.gone{animation:tkGone .45s ease-in forwards}@keyframes tkGone{to{transform:translate(30px,-60px) rotate(25deg);opacity:0}}
.tk.angry{background:#fff0ea;animation:tkShake .35s ease-in-out infinite}@keyframes tkShake{25%{transform:rotate(-3deg)}75%{transform:rotate(3deg)}}
.tk .clip{position:absolute;top:-8px;left:50%;transform:translateX(-50%);width:26px;height:13px;border-radius:3px;background:linear-gradient(#f0f2f5,#9aa0a8);box-shadow:0 2px 3px rgba(0,0,0,.4)}
.tk .no{display:flex;justify-content:flex-end;gap:4px;align-items:center;font-size:13px;border-bottom:1px dashed #aaa;padding-bottom:2px;margin-bottom:2px}.tk .no b{font-size:15px}
.tk .vip{font-family:"Noto Sans TC";font-weight:900;font-size:10px;color:#fff;background:#c4161c;border-radius:4px;padding:0 4px}
.tk .it{position:relative;display:flex;flex-direction:column;align-items:center}.tk .it svg{width:44px;height:40px}.tk .it span{font-size:14px;font-weight:700;line-height:1.1;text-align:center}
.tk .add{position:absolute;right:-2px;top:2px;transform:rotate(10deg);font-style:normal;background:#c4161c;color:#fff;font-family:"Noto Sans TC";font-weight:900;font-size:10px;padding:1px 5px;border-radius:5px}
.tk .bar{margin-top:5px;height:6px;border-radius:3px;background:#e8e0d0;overflow:hidden}.tk .bar i{display:block;height:100%;transition:width .3s,background .3s}
body.touch .trail{top:calc(var(--t) * 1.6);gap:6px}body.touch .tk{width:78px;padding:12px 5px 10px}body.touch .tk .it svg{width:32px;height:30px}body.touch .tk .it span{font-size:11px}
/* 小費連擊、食譜蓋章提示 */
.comboFx{position:absolute;z-index:58;left:50%;top:30%;transform:translate(-50%,-50%);pointer-events:none;font-size:calc(var(--t) * 1.3);font-weight:900;color:#ffe27a;text-shadow:0 4px 0 #7a1d10,0 0 24px #ff8a3a;opacity:0;white-space:nowrap}
.comboFx.on{animation:comboIn 1.1s ease-out}@keyframes comboIn{0%{opacity:0;transform:translate(-50%,-50%) scale(.4)}18%{opacity:1;transform:translate(-50%,-50%) scale(1.15)}75%{opacity:1}100%{opacity:0;transform:translate(-50%,-80%) scale(1)}}
.bookToast{position:absolute;z-index:58;right:14px;bottom:calc(var(--t) * 1.7);pointer-events:none;font-family:var(--hand);font-size:17px;font-weight:700;color:#3a2416;background:var(--paperBg);border:2px solid #c4161c;border-radius:8px;padding:6px 14px;opacity:0;transform:rotate(-2deg)}
.bookToast.on{animation:bkToast 2.6s ease-out}@keyframes bkToast{0%{opacity:0;transform:translateY(20px) rotate(-2deg)}10%,80%{opacity:1;transform:rotate(-2deg)}100%{opacity:0}}
/* 特殊夜晚：下雨、颱風有雨絲；跨年有煙火光；普渡偏綠 */
.stage[data-night]:not([data-night=""]) .map::before{content:"";position:absolute;inset:0;pointer-events:none;z-index:30}
.stage[data-night=rain] .map::before,.stage[data-night=typhoon] .map::before{background:repeating-linear-gradient(105deg,transparent 0 22px,rgba(200,220,255,.18) 22px 23px);background-size:200px 200px;animation:rain .45s linear infinite}
.stage[data-night=typhoon] .map::before{background:repeating-linear-gradient(120deg,transparent 0 14px,rgba(200,220,255,.24) 14px 15px);background-size:160px 160px;animation-duration:.25s}
@keyframes rain{to{background-position:-40px 200px}}
.stage[data-night=ghost] .map::before{background:radial-gradient(ellipse at 50% 0,rgba(90,255,170,.12),transparent 70%)}
.stage[data-night=newyear] .map::before{background:radial-gradient(circle at 20% 15%,rgba(255,210,80,.25),transparent 12%),radial-gradient(circle at 78% 10%,rgba(255,90,170,.22),transparent 11%),radial-gradient(circle at 55% 22%,rgba(120,220,255,.2),transparent 10%);animation:fw 2.4s ease-in-out infinite alternate}
@keyframes fw{to{opacity:.35}}
/* 打烊日報 */
.overlay .news{width:min(660px,94vw);max-height:92vh;overflow:auto;scrollbar-width:none;padding:20px 26px 18px;font-family:"Noto Serif TC",serif;text-align:left;animation:newsIn .9s cubic-bezier(.2,.9,.3,1.1)}
@keyframes newsIn{0%{transform:scale(.05) rotate(-720deg);opacity:0}70%{transform:scale(1.04) rotate(2deg);opacity:1}100%{transform:rotate(.8deg)}}
.news{transform:rotate(.8deg)}
.news .mast{text-align:center;border-bottom:4px double #3a2416;padding-bottom:6px}.news .mast b{display:block;font-size:42px;letter-spacing:.25em;line-height:1.1}
.news .mast div{display:flex;justify-content:space-between;font-family:"Noto Sans TC";font-size:12px;border-top:1px solid #3a2416;margin-top:6px;padding-top:4px}
.news h3{font-size:26px;margin:10px 0 8px;line-height:1.25}
.news .cols{display:grid;grid-template-columns:1.15fr 1fr;gap:14px}
.news .photo{border:2px solid #3a2416;filter:sepia(.35) contrast(1.05);line-height:0}.news .photo svg{width:100%;height:auto}
.news .savePhoto{margin-top:6px;font-family:"Noto Sans TC";color:#3a2416;background:#fff4dc;border:2px solid #3a2416}
.news .stars{font-size:24px;color:#c4161c;letter-spacing:.04em}.news .stars small{display:block;font-size:12px;color:#3a2416;font-family:"Noto Sans TC";letter-spacing:0}
.news table{width:100%;border-collapse:collapse;font-family:"Noto Sans TC";font-size:13px;margin-top:6px}.news td{padding:3px 0;border-bottom:1px dotted rgba(58,36,22,.4)}.news td:last-child{text-align:right;font-weight:900}
.news .mvp{margin-top:8px;font-family:"Noto Sans TC";font-size:13px;background:rgba(196,22,28,.08);border-left:4px solid #c4161c;padding:5px 9px}
.news .reviews{display:flex;gap:12px;margin-top:12px}
.news .rv{flex:1;padding:8px 10px 10px;font-family:var(--hand);font-size:15px;line-height:1.4;box-shadow:0 6px 12px rgba(0,0,0,.25)}
.news .rv:nth-child(1){background:#fff59a;transform:rotate(-2.5deg)}.news .rv:nth-child(2){background:#ffd0e4;transform:rotate(1.5deg)}.news .rv:nth-child(3){background:#c8ecff;transform:rotate(-1deg)}
.news .rv svg{width:28px;height:40px;float:left;margin:-2px 6px 0 -4px}.news .rv small{display:block;font-size:12px;margin-top:3px;opacity:.75}.news .rv .s{color:#c4161c}
.news .btns{margin-top:14px;text-align:center}
/* 大廳：攤位名稱 */
.stallRow{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin:10px 0}.stallRow span{font-weight:900}.stallRow input{font:inherit;font-weight:900;width:11em;padding:5px 10px;border-radius:9px;border:2px solid #3a2416}.stallRow small{opacity:.75;font-size:12px}
/* 食譜圖鑑 */
.bookModal{position:fixed;inset:0;z-index:4000;display:flex;align-items:center;justify-content:center;background:rgba(10,6,20,.6);padding:16px}.bookModal[hidden]{display:none}
.bookPaper{width:min(720px,100%);max-height:90vh;overflow:auto;scrollbar-width:none;padding:22px 24px;font-family:var(--hand);animation:pmIn2 .4s ease-out}@keyframes pmIn2{from{opacity:0;transform:translateY(20px) rotate(-2deg)}}
.bkHead{display:flex;align-items:baseline;gap:14px;border-bottom:2px dashed rgba(58,36,22,.35);padding-bottom:8px;margin-bottom:12px}.bkHead b{font-family:"Noto Serif TC",serif;font-size:30px;color:#c4161c;letter-spacing:.1em}.bkHead span{flex:1;font-size:15px}
.bkHead .x{font:inherit;font-size:18px;color:#3a2416;background:none;border:2px solid #3a2416;border-radius:8px;cursor:pointer;padding:0 8px}
.bkGrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:10px}
.bk{position:relative;text-align:center;background:rgba(255,255,255,.4);border:1.5px solid rgba(58,36,22,.25);border-radius:10px;padding:6px 4px 8px}
.bk .ic svg{width:64px;height:58px}.bk:not(.got) .ic svg{filter:brightness(0);opacity:.18}.bk b{display:block;font-size:17px}.bk small{font-size:12px;color:#8a5a30}
.bk .stamp{position:absolute;right:4px;top:4px;font-family:"Noto Serif TC",serif;font-weight:900;font-size:12px;color:#c4161c;border:2px solid #c4161c;border-radius:6px;padding:0 4px;transform:rotate(14deg);opacity:.8}

.stallRow.mini{margin:4px 0;gap:6px;font-size:13px}.stallRow.mini input{width:8em;padding:2px 8px;font-size:13px;border-width:1.5px}
.bkLock{margin:-4px 0 12px;padding:10px 12px;text-align:center;font-size:16px;background:rgba(196,22,28,.07);border:1.5px dashed rgba(196,22,28,.5);border-radius:10px}.bkLock .mini{margin-top:6px;opacity:.6;cursor:default}

/* Google 帳號：首頁右上角 */
#home .accBar{position:absolute;right:clamp(20px,3vw,44px);top:calc(clamp(18px,4.5vh,44px) + 20px);z-index:2;display:flex;align-items:center;gap:8px;font-size:13px;font-weight:900;color:var(--paper)}
#home .accBar .who{max-width:9em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#home .rankLogin{margin:6px 0;padding:6px 10px;font-size:13px;border-radius:10px;background:rgba(217,65,43,.18);border:1.5px dashed #ff8a6a}#home .rankLogin[hidden]{display:none}
.devLogin{display:flex;gap:4px;margin-top:4px}.devLogin input{width:8em;font:inherit;font-size:12px;padding:2px 6px}.devLogin button{font:inherit;font-size:12px}
.bkLock .gLogin{display:flex;justify-content:center;margin-top:6px;min-height:40px}
#home .accBar .devLogin{margin:0}#home .accBar .devLogin input{width:7em;padding:3px 6px;font-size:12px;height:auto;border-radius:6px}#home .accBar .devLogin button{padding:3px 8px;font-size:12px}
