/* Self-hosted (SIL OFL), latin subset. Variable fonts: one file covers the weight range. */
@font-face{font-family:'Fraunces';font-style:normal;font-weight:600 800;font-display:swap;src:url(fonts/Fraunces-latin.woff2) format('woff2')}
@font-face{font-family:'Nunito';font-style:normal;font-weight:500 900;font-display:swap;src:url(fonts/Nunito-latin.woff2) format('woff2')}
:root{
  --r:14px;
  --font-d:'Fraunces', Georgia, serif; --font-b:'Nunito', system-ui, sans-serif;
  /* theme: change this block alone to recolour the whole game */
  --cream:#f7efe1; --paper:#fffaf1; --wood:#b8743c; --wood-d:#7a4624; --wood-l:#ecd0a8;
  --ink:#33201a; --muted:#86695a; --teal:#1b6b5c; --teal-l:#2d8a77; --rose:#c8372d;
  --gold:#e3a325; --ok:#3e9b5c; --cell:#f1e2c8; --cell2:#ead7b8;
  --board:#b9d3c9; --bcell:#e4f0ea; --bcell2:#d6e7df; /* the board only; --cell stays warm for order cards, quests, album */
  --shadow:0 2px 0 rgba(90,55,25,.25), 0 6px 14px rgba(90,55,25,.12);
  --bg-bottom:#1c0f0c;
  --bg-top:#4a2018;
  --black-00:rgba(0,0,0,0);
  --black-08:rgba(0,0,0,.08);
  --black-20:rgba(0,0,0,.2);
  --black-25:rgba(0,0,0,.25);
  --black-30:rgba(0,0,0,.3);
  --black-35:rgba(0,0,0,.35);
  --black-40:rgba(0,0,0,.4);
  --brown-28:rgba(80,45,15,.28);
  --bubble-a:rgba(170,215,255,.55);
  --bubble-b:rgba(120,180,240,.35);
  --bubble-edge:rgba(110,170,230,.8);
  --bubble-ink:#2d5f8f;
  --crate:#e6c58a;
  --gen-a:#fff7e3;
  --gen-b:#f0d7a6;
  --gold-l:#ffd868;
  --gold-xl:#f5c84c;
  --maxed:rgba(245,200,76,.35);
  --miss:#ff7a8a;
  --need:#8fc866;
  --off:#7d8f88;
  --off-ink:#cfdcd8;
  --ok-25:rgba(62,155,92,.25);
  --on-dark:#fdf3df;
  --panel-85:rgba(255,250,241,.85);
  --panel-edge:#c9ae8c;
  --ready-a:#f0b93a;
  --ready-b:#d99a1c;
  --scrim:rgba(30,20,12,.5);
  --scrim-55:rgba(28,15,12,.55);
  --scrim-60:rgba(27,18,10,.6);
  --teal-08:rgba(27,107,92,.08);
  --teal-18:rgba(27,107,92,.18);
  --tile-a:#1f6d5e;
  --tile-b:#154c42;
  --toast:rgba(40,24,18,.92);
  --vip-a:#fff6d9;
  --vip-b:#fde9b0;
  --vip-clock:#a0522d;
  --vip-ink:#8a5a00;
  --white:#fff;
  --white-18:rgba(255,255,255,.18);
  --white-22:rgba(255,255,255,.22);
  --white-95:rgba(255,255,255,.95);
  --confetti-blue:#7fb6e6;
  /* /theme */
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%;background:radial-gradient(ellipse at 50% 35%,var(--black-00) 40%,var(--black-35)),linear-gradient(180deg,var(--bg-top),var(--bg-bottom)) fixed;color:var(--ink);font-family:var(--font-b);overscroll-behavior:none}
body{display:flex;justify-content:center;user-select:none;-webkit-user-select:none}
#app{position:relative;width:100%;max-width:460px;height:100dvh;display:flex;flex-direction:column;box-sizing:border-box;padding:env(safe-area-inset-top) 0 env(safe-area-inset-bottom); /* the notch and the home indicator, 0 in a browser tab */
  background:linear-gradient(var(--scrim-55),var(--scrim-55)),url(art/bg_shophouse.webp) center/cover,linear-gradient(180deg,var(--bg-top),var(--bg-bottom)); /* the scene, dimmed so the panels read; html,body keep the plain gradient so wide screens show no bars */
  overflow:hidden}
button{font:inherit;color:inherit;border:0;background:none;cursor:pointer}

/* the raised plate: HUD pills and nav buttons share it so the two never drift */
.plate{background:var(--paper);box-shadow:0 3px 0 var(--panel-edge)}
button.plate:active{transform:translateY(2px);box-shadow:none}

/* HUD */
.hud{display:flex;align-items:center;gap:6px;padding:6px 10px 4px}
.brand{display:flex;align-items:center;gap:4px;color:var(--teal);font-weight:900;font-size:13px;margin-right:auto}
.brand b{font-family:var(--font-d);font-size:16px}
.pill{display:flex;align-items:center;gap:3px;border-radius:999px;padding:4px 9px 4px 5px;
  font-weight:900;font-size:13px;font-variant-numeric:tabular-nums;white-space:nowrap}
.pill .ic{font-size:15px}
.pill small{font-size:10px;color:var(--muted);font-weight:800;margin-left:2px}
.pill .plus{background:var(--ok);color:var(--white);border-radius:50%;width:16px;height:16px;display:grid;place-items:center;font-size:12px;margin-left:3px}
.pill.bump{animation:bump .35s}
@keyframes bump{40%{transform:scale(1.18)}}

/* Lobby */
.lobby{margin:2px 10px 6px;background:linear-gradient(180deg,var(--tile-a),var(--tile-b));color:var(--on-dark);border-radius:var(--r);
  padding:8px 10px;display:flex;align-items:center;gap:10px;box-shadow:var(--shadow)}
.lobby-scene{display:flex;gap:1px;font-size:18px;min-width:84px;max-width:110px;flex-wrap:wrap;line-height:1.1}
.lobby-scene .empty{opacity:.25;filter:grayscale(1)}
.lobby-meta{flex:1;min-width:0}
.lobby-title{font-family:var(--font-d);font-weight:600;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bar{height:7px;background:var(--white-18);border-radius:9px;margin-top:5px;overflow:hidden}
.bar i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--gold-xl),var(--gold));border-radius:9px;transition:width .4s}
.btn{border-radius:11px;padding:7px 12px;font-weight:900;font-size:13px;box-shadow:0 3px 0 var(--black-25)}
.btn:active{transform:translateY(2px);box-shadow:0 1px 0 var(--black-25)}
.btn.reno{background:var(--gold);color:var(--ink)}
.btn.reno:disabled{background:var(--off);color:var(--off-ink);box-shadow:none;cursor:default}
.btn.green{background:var(--ok);color:var(--white)}
.btn.teal{background:var(--teal);color:var(--white)}
.btn.rose{background:var(--rose);color:var(--white)}
.btn.ghosty{background:var(--wood-l);color:var(--ink)}
.btn:disabled{opacity:.5}

/* Orders */
.orders{display:flex;gap:6px;padding:9px 10px 4px;overflow-x:auto;scrollbar-width:none;scroll-snap-type:x mandatory}
.orders::-webkit-scrollbar{display:none}
.order{flex:0 0 calc((100% - 12px) / 3);scroll-snap-align:start;background:var(--paper);border-radius:var(--r);padding:4px 6px 5px;box-shadow:var(--shadow);display:flex;flex-direction:column;
  align-items:center;gap:2px;position:relative;height:84px;transition:transform .2s}
.order.ready{outline:3px solid var(--ok);animation:glow 1.4s ease-in-out infinite}
@keyframes glow{50%{box-shadow:0 0 0 5px var(--ok-25),var(--shadow)}}
.order.enter{animation:enter .4s cubic-bezier(.2,1.4,.4,1)}
@keyframes enter{from{transform:translateY(12px) scale(.85);opacity:0}}
.order.leaving{animation:leave .45s forwards}
@keyframes leave{to{transform:translateY(-14px) scale(.9);opacity:0}}
.order .who{align-self:stretch;padding-left:26px;font-size:10.5px;font-weight:800;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:center}
.order .portrait{position:absolute;left:-5px;top:-11px;width:36px;height:36px;object-fit:contain;filter:drop-shadow(0 2px 2px var(--black-30));pointer-events:none}
.order .reqs{display:flex;gap:4px}
.req{width:42px;height:42px;border-radius:11px;background:var(--cell);display:grid;place-items:center;font-size:26px;position:relative}
.req.have::after{content:'✓';position:absolute;right:-4px;bottom:-4px;background:var(--ok);color:var(--white);border-radius:50%;width:15px;height:15px;font-size:10px;display:grid;place-items:center;font-weight:900}
.req .t{position:absolute;left:2px;top:0;font-size:9px;font-weight:900;color:var(--wood-d)}
.order .rew{font-size:11px;font-weight:800;color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}
.order .serve{width:100%;padding:2px 0;font-size:12px;line-height:1.3;margin-top:auto}

/* Board */
.board-wrap{flex:1;display:flex;align-items:center;justify-content:center;padding:0 6px;min-height:0;container-type:size}
.board{background:var(--board);border-radius:10px;display:grid;grid-template-columns:repeat(7,1fr);gap:2px;padding:4px;width:min(100cqw, calc(100cqh * 7 / 7.6));aspect-ratio:7/7.6;grid-template-rows:repeat(9,1fr)}
.cell{background:var(--bcell);border-radius:9px;position:relative;display:grid;place-items:center;min-width:0;min-height:0}
.cell:nth-child(odd){background:var(--bcell2)}
.cell.target{box-shadow:inset 0 0 0 3px var(--ok)}
.cell.partner .item{animation:wiggle .9s infinite}
@keyframes wiggle{25%{transform:rotate(-6deg)}75%{transform:rotate(6deg)}}
.item{width:100%;height:100%;display:grid;place-items:center;font-size:min(7.2vw,31px,5.2cqh);position:relative;border-radius:9px;touch-action:none;cursor:grab}
.item .t{display:none;position:absolute;left:3px;top:1px;font-size:9px;font-weight:900;color:var(--wood-d);font-family:var(--font-b)}
.item.sel{box-shadow:inset 0 0 0 3px var(--teal);background:var(--teal-08)}
.item.need{background:var(--need)}
.item.crate{cursor:default;background:var(--crate);font-size:min(8vw,34px,5.8cqh)}
.item.maxed .t{color:var(--gold)}
.item.pop{animation:pop .3s}
@keyframes pop{0%{transform:scale(.4)}70%{transform:scale(1.15)}100%{transform:scale(1)}}
.item.dragging{opacity:.25}
.gen{background:radial-gradient(circle at 50% 40%,var(--gen-a),var(--gen-b));box-shadow:inset 0 0 0 2px var(--gold)}
.gen .charge{position:absolute;bottom:2px;left:50%;transform:translateX(-50%);font-size:9px;font-weight:900;background:var(--teal);color:var(--white);border-radius:6px;padding:0 4px}
.gen.cool{filter:grayscale(.7)}
.gen.cool .charge{background:var(--rose)}
.gen.tap{animation:tap .18s}
@keyframes tap{50%{transform:scale(.88)}}
.bubble{background:radial-gradient(circle at 35% 30%,var(--white-95),var(--bubble-a) 45%,var(--bubble-b));
  border-radius:50%;box-shadow:inset 0 0 0 2px var(--bubble-edge)}
.bubble .timer{position:absolute;bottom:1px;left:50%;transform:translateX(-50%);font-size:9px;font-weight:900;color:var(--bubble-ink)}

/* Info */
.info{margin:4px 10px 0;background:var(--panel-85);border-radius:var(--r);padding:5px 7px 5px 9px;display:flex;align-items:center;gap:8px;box-shadow:var(--shadow);min-height:58px}
.info-icon{font-size:28px;width:40px;text-align:center}
.info-text{flex:1;min-width:0}
.info-name{font-family:var(--font-d);font-weight:800;font-size:14.5px}
.info-sub{font-size:12px;color:var(--muted);font-weight:700;line-height:1.25;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.info-actions{display:flex;gap:5px}
.info-actions .btn{padding:6px 9px;font-size:12px}

/* Dock */
.dock{padding:4px 10px 6px}
.storage{flex:0 0 108px;display:grid;grid-auto-flow:column;grid-template-rows:repeat(2,30px);grid-auto-columns:34px;gap:3px;overflow-x:auto;scrollbar-width:none}
.storage::-webkit-scrollbar{display:none}
.slot{height:30px;border-radius:8px;background:var(--paper);display:grid;place-items:center;font-size:22px;position:relative;box-shadow:inset 0 0 0 2px var(--wood-l)}
.slot .t{position:absolute;left:2px;top:0;font-size:8px;font-weight:900;color:var(--wood-d)}
.slot.empty{opacity:.7}
.slot.buy{background:var(--wood-l);font-size:8.5px;font-weight:900;color:var(--wood-d);line-height:1.05;text-align:center}
.slot.target{box-shadow:inset 0 0 0 3px var(--ok)}
.nav{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:6px}
.nav-btn{border-radius:12px;padding:3px 0 4px;font-size:11px;font-weight:900;color:var(--muted);display:flex;flex-direction:column;align-items:center}
.nav-btn span{font-size:18px}

/* Toast / ghost / modal */
.toast{position:absolute;left:50%;top:30%;transform:translate(-50%,0) scale(.9);background:var(--toast);color:var(--white);
  padding:9px 14px;border-radius:12px;font-weight:800;font-size:13px;opacity:0;pointer-events:none;transition:.2s;max-width:80%;text-align:center;z-index:30}
.toast.show{opacity:1;transform:translate(-50%,0) scale(1)}
.ghost{position:fixed;pointer-events:none;font-size:38px;z-index:40;transform:translate(-50%,-60%) scale(1.12);display:none;filter:drop-shadow(0 8px 8px var(--black-30))}
.float{position:absolute;pointer-events:none;font-weight:900;font-size:13px;z-index:35;animation:floatUp 1s forwards;color:var(--teal);text-shadow:0 1px 0 var(--white)}
@keyframes floatUp{to{transform:translateY(-36px);opacity:0}}
.modal{position:absolute;inset:0;background:var(--scrim);display:none;align-items:flex-end;z-index:50}
.modal.open{display:flex}
.sheet{background:var(--cream);width:100%;max-height:80%;border-radius:20px 20px 0 0;display:flex;flex-direction:column;animation:up .25s}
@keyframes up{from{transform:translateY(40px);opacity:.4}}
.sheet-head{display:flex;align-items:center;padding:14px 16px 6px}
.sheet-head h2{font-family:var(--font-d);margin:0;font-size:20px;flex:1}
.x{font-size:16px;width:32px;height:32px;border-radius:50%;background:var(--wood-l)}
.sheet-body{padding:6px 16px 20px;overflow:auto}
.row{display:flex;align-items:center;gap:10px;background:var(--paper);border-radius:12px;padding:10px 12px;margin-bottom:7px;box-shadow:var(--shadow)}
.row .big{font-size:26px}
.row .grow{flex:1}
.row .t1{font-weight:900;font-size:14px}
.row .t2{font-size:12px;color:var(--muted);font-weight:700}
.row.done{opacity:.55}
.stats{display:grid;grid-template-columns:1fr 1fr;gap:7px}
.stat{background:var(--paper);border-radius:12px;padding:9px 11px;box-shadow:var(--shadow)}
.stat b{font-family:var(--font-d);font-size:20px;display:block}
.stat span{font-size:11.5px;color:var(--muted);font-weight:800}
.stat.hot b{color:var(--rose)}
.note{font-size:12px;color:var(--muted);font-weight:700;margin:10px 2px}
.tune label{display:block;font-weight:800;font-size:13px;margin:12px 0 2px}
.tune label output{float:right;color:var(--teal);font-weight:900}
.tune input[type=range]{width:100%;accent-color:var(--teal)}
.seg{display:flex;gap:6px;margin-top:4px}
.seg button{flex:1;padding:7px 0;border-radius:10px;background:var(--paper);font-weight:900;box-shadow:var(--shadow)}
.seg button.on{background:var(--teal);color:var(--white)}
@media (max-height:700px){.order{height:88px}.req{width:38px;height:38px;font-size:23px}.lobby{padding:6px 10px}}

/* ---------- v2 polish ---------- */
.brand{gap:6px;padding:0}
.rank{display:flex;flex-direction:column;align-items:flex-start;line-height:1}
.rank b{font-family:var(--font-d);font-size:12.5px;white-space:nowrap}
.xp{display:block;width:62px;height:5px;background:var(--teal-18);border-radius:5px;margin-top:3px;overflow:hidden}
.xp i{display:block;height:100%;width:0;background:var(--teal);border-radius:5px;transition:width .4s}
.pill .cap{display:none}
.order.vip{background:linear-gradient(180deg,var(--vip-a),var(--vip-b));outline:2px solid var(--gold)}
.order.vip .who{color:var(--vip-ink)}
.vip-tag{position:absolute;top:-6px;right:-4px;background:var(--gold);color:var(--ink);font-size:9px;font-weight:900;border-radius:7px;padding:1px 5px;box-shadow:0 2px 0 var(--black-20)}
.vip-time{position:absolute;top:3px;left:5px;font-size:10px;font-weight:900;color:var(--vip-clock)}
.cell.hint .item{animation:hint 1s ease-in-out infinite}
@keyframes hint{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px) scale(1.06)}}
.spark{position:absolute;width:7px;height:7px;border-radius:50%;pointer-events:none;z-index:36;animation:spark .6s ease-out forwards}
@keyframes spark{to{transform:translate(var(--dx),var(--dy)) scale(.2);opacity:0}}
.ring{position:absolute;border-radius:50%;border:3px solid var(--white);pointer-events:none;z-index:35;animation:ring .45s ease-out forwards}
@keyframes ring{from{transform:scale(.3);opacity:1}to{transform:scale(1.5);opacity:0}}
.flyer{position:absolute;font-size:18px;pointer-events:none;z-index:45;transition:transform .7s cubic-bezier(.5,-0.3,.7,1),opacity .7s}
.nav-btn{position:relative}
.nav-btn .dot{position:absolute;top:3px;right:calc(50% - 18px);min-width:16px;height:16px;border-radius:8px;background:var(--rose);color:var(--white);font-size:10px;font-style:normal;font-weight:900;display:none;place-items:center;padding:0 4px;box-shadow:0 0 0 2px var(--paper)}
.nav-btn .dot.on{display:grid;animation:bump .5s}
.quest{display:flex;align-items:center;gap:10px;background:var(--paper);border-radius:12px;padding:10px 12px;margin-bottom:7px;box-shadow:var(--shadow)}
.quest .qi{font-size:24px}
.quest .grow{flex:1;min-width:0}
.quest .t1{font-weight:900;font-size:13.5px}
.quest .qbar{height:8px;background:var(--cell);border-radius:6px;margin:5px 0 3px;overflow:hidden}
.quest .qbar i{display:block;height:100%;background:linear-gradient(90deg,var(--teal-l),var(--teal));border-radius:6px}
.quest .t2{font-size:11.5px;color:var(--muted);font-weight:800}
.quest.done{outline:2px solid var(--ok)}
.tabs{display:flex;gap:6px;margin-bottom:10px}
.tabs button{flex:1;padding:7px 0;border-radius:10px;background:var(--paper);font-weight:900;box-shadow:var(--shadow)}
.tabs button.on{background:var(--teal);color:var(--white)}
.album-line{background:var(--paper);border-radius:12px;padding:9px 10px;margin-bottom:7px;box-shadow:var(--shadow)}
.album-line .t1{font-weight:900;font-size:13px;display:flex;justify-content:space-between}
.album-row{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-top:6px}
.album-row div{aspect-ratio:1;border-radius:9px;background:var(--cell);display:grid;place-items:center;font-size:21px;position:relative}
.album-row div.unk{color:var(--wood);font-size:15px;font-weight:900}
.album-row div .t{position:absolute;left:3px;top:0;font-size:8.5px;font-weight:900;color:var(--wood-d)}
.rankrow{display:flex;align-items:center;gap:10px;background:var(--paper);border-radius:12px;padding:10px 12px;margin-bottom:7px;box-shadow:var(--shadow)}
.rankrow.cur{outline:3px solid var(--teal)}
.rankrow.locked{opacity:.55}
.rankrow .big{font-size:24px}
.celebrate{position:absolute;inset:0;z-index:70;display:none;align-items:center;justify-content:center;background:var(--scrim-55);backdrop-filter:blur(2px)}
.celebrate.open{display:flex}
.cel-card{position:relative;background:var(--cream);border-radius:22px;padding:22px 22px 18px;width:80%;max-width:320px;text-align:center;box-shadow:0 20px 40px var(--black-35);animation:celIn .5s cubic-bezier(.2,1.5,.4,1)}
@keyframes celIn{from{transform:scale(.6) translateY(30px);opacity:0}}
.cel-icon{font-size:64px;margin-top:-58px;filter:drop-shadow(0 8px 10px var(--black-25));animation:float 2.4s ease-in-out infinite}
@keyframes float{50%{transform:translateY(-6px) rotate(-3deg)}}
.cel-kicker{text-transform:uppercase;letter-spacing:.14em;font-size:11px;font-weight:900;color:var(--gold);margin-top:4px}
.cel-card h3{font-family:var(--font-d);font-size:26px;margin:2px 0 6px}
.cel-card p{font-size:13px;color:var(--muted);font-weight:700;margin:0 0 12px;line-height:1.35}
.cel-rewards{display:flex;justify-content:center;gap:8px;flex-wrap:wrap;margin-bottom:14px}
.cel-rewards span{background:var(--paper);border-radius:999px;padding:5px 11px;font-weight:900;font-size:13px;box-shadow:var(--shadow)}
.btn.big{padding:10px 26px;font-size:15px}
.confetti{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.confetti i{position:absolute;top:-12px;width:8px;height:12px;border-radius:2px;animation:fall linear forwards}
@keyframes fall{to{transform:translate(var(--dx),110vh) rotate(var(--r))}}
.mute{font-size:14px}
.hud{gap:4px}
.brand{flex:1 1 auto;min-width:0}
.rank{min-width:0}
.rank b{max-width:92px;overflow:hidden;text-overflow:ellipsis;display:block;font-size:12px}
.pill{padding:3px 7px 3px 4px;font-size:12px;flex-shrink:0}
.pill .ic{font-size:13px}
.pill .plus{width:14px;height:14px;font-size:11px}
@media (max-width:380px){.pill small{display:none}}
.brand svg{display:none}
@media (min-width:430px){.brand svg{display:block}}
.rank b{max-width:84px}
.pill small{display:none}
.rankrow .grow{flex:1;min-width:0}
.rankrow .t1{font-weight:900;font-size:14px}
.rankrow .t2{font-size:12px;color:var(--muted);font-weight:700}
.pill small{display:inline}
.pill .plus{display:none}

/* illustrated art */
.art{width:88%;height:88%;object-fit:contain;pointer-events:none;-webkit-user-drag:none;filter:drop-shadow(0 2px 1.5px var(--brown-28))}
.item .t,.slot .t,.req .t,.album-row .t{z-index:2;background:var(--panel-85);border-radius:5px;padding:0 3px;line-height:1.35}
.item .art{width:92%;height:92%}
.item.gen .art{width:96%;height:96%}
.item .charge,.bubble .timer{z-index:2}
.bubble .art{width:72%;height:72%;opacity:.9}
.req .art{width:90%;height:90%}
.slot .art{width:84%;height:84%}
.album-row .art{width:84%;height:84%}
.info-icon{height:40px;display:grid;place-items:center}
.info-icon .art{width:40px;height:40px}
.ghost{font-size:0}
.ghost .art{width:66px;height:66px;filter:drop-shadow(0 8px 8px var(--black-30))}
.cel-icon .cel-art{width:110px;height:110px}
.item.maxed{background:radial-gradient(circle,var(--maxed),transparent 70%)}

.stbl{width:100%;border-collapse:collapse;font-size:11px;margin-top:6px}
.stbl th,.stbl td{padding:4px 3px;text-align:left;border-bottom:1px solid var(--black-08)}
.stbl th{color:var(--muted);font-weight:900}

/* resource items */
.item .amt{position:absolute;right:2px;bottom:1px;z-index:2;font-size:10px;font-weight:900;color:var(--white);background:var(--ok);border-radius:6px;padding:0 4px;line-height:1.3}

/* find helper on an order's wanted item */
.req .find{position:absolute;right:-5px;top:-5px;width:17px;height:17px;border-radius:50%;background:var(--paper);box-shadow:0 1px 2px var(--black-30);font-size:10px;line-height:1;display:grid;place-items:center;padding:0;z-index:3}

/* ---------- chunky HUD ---------- */
.brand{gap:7px;color:var(--ink)}
.lvl{flex:0 0 34px;height:34px;display:grid;place-items:center;background:linear-gradient(180deg,var(--gold-l),var(--gold));color:var(--ink);
  clip-path:polygon(50% 0,63% 33%,98% 36%,71% 58%,80% 92%,50% 73%,20% 92%,29% 58%,2% 36%,37% 33%)}
.lvl b{font-family:var(--font-b);font-weight:900;font-size:13px;margin-top:3px}
.xp{width:54px;background:var(--white-22)}
.xp i{background:linear-gradient(90deg,var(--gold-l),var(--gold))}
.pill{height:30px;border-radius:10px;padding:0 9px 0 6px;gap:4px;font-family:var(--font-b);font-weight:900;font-size:16px}
.pill .ic{font-size:16px}
.pill .num{display:flex;flex-direction:column;align-items:flex-start;line-height:1}
.pill small{display:block;font-size:10px;margin:0;line-height:1}
.pill small:empty{display:none}

/* ---------- the clocks: tiles instead of the lobby strip ---------- */
.tiles{display:flex;gap:6px;margin:2px 10px 4px;height:46px}
.nav-btn.locked{opacity:.55}
.tile{flex:1 1 0;min-width:0;position:relative;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:1px;text-align:left;
  background:linear-gradient(180deg,var(--tile-a),var(--tile-b));color:var(--on-dark);border-radius:12px;padding:6px 9px;box-shadow:var(--shadow)}
.tile[hidden]{display:none}
.tile b{font-family:var(--font-d);font-weight:600;font-size:12.5px;line-height:1.15;max-width:100%}
.tile .bar{margin-top:auto}
#tileReno{flex-grow:1.5}
#tileReno span:first-of-type{order:-1;font-size:10.5px}
.tile span{font-size:11px;font-weight:800;opacity:.85}
.tile .bar{width:100%;margin-top:3px;height:5px}
.tile.ready{background:linear-gradient(180deg,var(--ready-a),var(--ready-b));color:var(--ink);animation:glow 1.4s ease-in-out infinite}
.tile .dot{position:absolute;top:-4px;right:-3px;width:12px;height:12px;border-radius:50%;background:var(--rose);box-shadow:0 0 0 2px var(--paper)}

/* on the dark background */
.xp{background:var(--white-22)}

/* first-run pointer */
.hand{position:absolute;font-size:30px;line-height:1;pointer-events:none;z-index:25;filter:drop-shadow(0 3px 3px var(--black-40));animation:handTap 1s ease-in-out infinite}
.hand.drag{animation:handDrag 1.8s ease-in-out infinite}
@keyframes handTap{50%{transform:translateY(8px) scale(.9)}}
@keyframes handDrag{0%,15%{transform:translate(0,0) scale(.9)}65%,85%{transform:translate(var(--dx),var(--dy)) scale(.9)}100%{transform:translate(0,0) scale(.9)}}

/* ---------- Find It ---------- */
#tileFind{flex-grow:.9}
.find{position:absolute;inset:0;z-index:60;display:none;flex-direction:column;background:linear-gradient(180deg,var(--bg-top),var(--bg-bottom));padding:8px 8px 10px;gap:6px}
.find.open{display:flex}
.find-head{display:flex;align-items:center;gap:8px;color:var(--on-dark)}
.find-head b{flex:1;font-family:var(--font-d);font-size:15px}
.find-time{font-weight:900;font-size:20px;font-variant-numeric:tabular-nums;min-width:44px;text-align:right}
.find-time.low{color:var(--miss)}
.find-bar{height:6px;border-radius:6px;background:var(--white-18);overflow:hidden}
.find-bar i{display:block;height:100%;width:100%;background:linear-gradient(90deg,var(--gold-xl),var(--gold))}
.find-scene{flex:1;position:relative;overflow:hidden;border-radius:14px;touch-action:manipulation;box-shadow:inset 0 0 40px var(--black-35)}
.find-scene.shake{animation:fshake .3s}
@keyframes fshake{25%{transform:translateX(-6px)}75%{transform:translateX(6px)}}
.fo{position:absolute;display:grid;place-items:center;cursor:pointer}
.fo img{pointer-events:none;filter:drop-shadow(0 2px 2px var(--black-35))}
.fo.dim{opacity:.8;filter:brightness(.85)}
.fo.gone{pointer-events:none;animation:fgone .35s forwards}
@keyframes fgone{to{transform:scale(1.5) rotate(0);opacity:0}}
.fo.hint::after{content:'';position:absolute;inset:-2px;border-radius:50%;border:3px solid var(--gold-l);animation:fhint .5s ease-in-out 4}
@keyframes fhint{50%{transform:scale(1.25);opacity:.4}}
.shelf{position:absolute;height:22px;border-radius:4px;pointer-events:none;z-index:5;box-shadow:0 3px 0 var(--black-35),inset 0 3px 0 var(--white-18)}
.find-list{display:grid;grid-template-columns:repeat(6,1fr);gap:4px}
.fl{background:var(--paper);border-radius:10px;padding:4px 2px 3px;display:flex;flex-direction:column;align-items:center;position:relative;min-width:0}
.fl img{width:38px;height:38px;object-fit:contain}
.fl span{font-size:9px;font-weight:800;color:var(--muted);text-align:center;line-height:1.1;min-height:20px;display:flex;align-items:center}
.fl.done{opacity:.55}
.fl.done span{text-decoration:line-through}
.fl.done::after{content:'✓';position:absolute;right:-3px;top:-3px;background:var(--ok);color:var(--white);border-radius:50%;width:16px;height:16px;font-size:11px;font-weight:900;display:grid;place-items:center}
.find-result{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:var(--scrim-60);z-index:10}
.find-result[hidden]{display:none}
.find-stars{font-size:34px;color:var(--gold);letter-spacing:4px;margin-bottom:8px}

/* currency icons (art/ic_*.webp) replace the emoji glyphs */
img.ic{width:1.15em;height:1.15em;vertical-align:-.2em;object-fit:contain}
.pill img.ic{width:22px;height:22px;vertical-align:baseline}
.flyer img.ic{width:22px;height:22px}
.order .rew img.ic{width:13px;height:13px;vertical-align:-3px}
.gen .gbadge{position:absolute;top:-1px;right:-1px;width:38%;height:38%;z-index:2;filter:drop-shadow(0 1px 1px var(--black-30));pointer-events:none}

/* ---------- The floor ---------- */
.nav-btn[hidden]{display:none}
.floor{position:absolute;inset:0;z-index:60;display:none;flex-direction:column;background:inherit;padding:8px 8px 10px;gap:6px}
.floor.open{display:flex}
.floor-head{display:flex;align-items:center;gap:8px;color:var(--on-dark)}
.floor-head b{flex:1;font-family:var(--font-d);font-size:15px}
.floor-coin{width:20px;height:20px;object-fit:contain;margin-right:-4px}
.floor-stat{font-weight:900;font-size:13px;font-variant-numeric:tabular-nums}
.floor-stage{flex:1;min-height:0;display:flex;align-items:center;justify-content:center}
.floor-stage canvas{display:block;touch-action:none;border-radius:12px;box-shadow:0 0 0 2px var(--black-35),0 8px 24px var(--black-35)}
.floor-tip{min-height:34px;display:flex;align-items:center;justify-content:center;text-align:center;color:var(--on-dark);font-weight:800;font-size:13px;background:var(--scrim);border-radius:10px;padding:4px 10px}

/* ---------- guest cards: the portrait fills the left, the order and its reward sit beside it, no name row ---------- */
.order,.order.vip{flex-direction:row;align-items:stretch;gap:5px;padding:4px 6px 4px 3px;height:74px}
.order .portrait{position:static;flex:0 0 44px;width:44px;height:100%;object-fit:contain;object-position:center bottom;pointer-events:none}
.order .who{display:none}
.order .ocol{flex:1;min-width:0;display:flex;flex-direction:column;justify-content:space-between;gap:3px}
.order .reqs{justify-content:center;gap:3px}
.order .req{flex:0 1 38px;width:auto;height:auto;aspect-ratio:1;max-width:38px;font-size:23px}
.order{min-width:0}
.order .rew{font-size:10.5px;display:flex;flex-wrap:wrap;justify-content:center;gap:0 5px;line-height:1.3}
.order .serve{margin:0}
.vip-time{left:auto;right:6px}
