:root{
  --cream:#FFF7E8;
  --ink:#14103A;
  --magenta:#FF2D9B;
  --royal:#2B37E8;
  --turq:#14E0C0;
  --yellow:#FFD02E;
  --brown:#6B3410;
  --olive:#9BA83A;
  --ivory:#FFFBEF;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;}
html,body{margin:0;padding:0;height:100%;}
body{
  background:var(--cream);
  color:var(--ink);
  font-family:'Baloo Bhaijaan 2','Tajawal',system-ui,-apple-system,'Segoe UI',sans-serif;
  font-feature-settings:"tnum" 1;
  -webkit-user-select:none;user-select:none;
  overflow:hidden;
  touch-action:manipulation;
  overscroll-behavior:none;
}
#game-root{
  position:relative;
  height:100%;
  height:100dvh;
  display:flex;
  flex-direction:column;
  background:var(--cream);
  overflow:hidden;
}
.hidden{display:none !important;}

/* ───────── HUD ───────── */
#hud{
  flex:0 0 auto;
  background:var(--cream);
  border-bottom:3px solid var(--ink);
  padding:6px 10px 8px;
  display:flex;
  flex-direction:column;
  gap:6px;
  z-index:6;
}
.hud-top{display:flex;align-items:center;gap:6px;min-width:0;}
.chip{
  background:#fff;
  border:2.5px solid var(--ink);
  border-radius:12px;
  padding:3px 8px;
  display:flex;
  align-items:baseline;
  gap:5px;
  box-shadow:0 2.5px 0 var(--ink);
  line-height:1;
  flex:0 0 auto;
}
.chip-label{font-size:10px;font-weight:700;opacity:.65;}
.chip-val{font-size:21px;font-weight:800;font-variant-numeric:tabular-nums;}
.combo-chip{background:var(--yellow);transition:background .2s,color .2s,transform .2s;}
.combo-chip.hot{background:var(--magenta);color:#fff;transform:scale(1.05);}
.hearts{display:flex;gap:2px;flex:0 0 auto;}
.hrt{
  width:21px;height:21px;
  fill:var(--magenta);
  stroke:var(--ink);stroke-width:2.1;stroke-linejoin:round;
  transition:fill .18s, opacity .18s, transform .18s;
}
.hrt.off{fill:#fff;opacity:.42;transform:scale(.86);}
.icon-btn{
  margin-inline-start:auto;
  flex:0 0 auto;
  width:38px;height:38px;
  display:flex;align-items:center;justify-content:center;
  background:#fff;
  border:2.5px solid var(--ink);
  border-radius:12px;
  box-shadow:0 2.5px 0 var(--ink);
  color:var(--ink);
  cursor:pointer;
  padding:0;
  transition:transform .1s, box-shadow .1s;
}
.icon-btn svg{width:18px;height:18px;fill:currentColor;}
.icon-btn:active{transform:translateY(3px);box-shadow:0 0 0 var(--ink);}
.patience{display:flex;align-items:center;gap:8px;min-width:0;}
.pat-label{font-size:11px;font-weight:700;white-space:nowrap;flex:0 0 auto;}
.pat-label b{font-weight:800;color:var(--royal);}
.pat-bar{
  flex:1 1 auto;min-width:0;height:12px;
  border:2.5px solid var(--ink);
  border-radius:99px;
  background:#fff;
  overflow:hidden;
}
.pat-bar i{
  display:block;height:100%;width:100%;
  background:var(--turq);
  border-radius:99px 0 0 99px;
  transition:width .12s linear, background .3s;
}
.pat-bar i.warn{background:var(--yellow);}
.pat-bar i.low{background:var(--magenta);}

/* ───────── stage ───────── */
#stage{position:relative;flex:1 1 auto;min-height:0;overflow:hidden;background:var(--cream);}
#cv{display:block;width:100%;height:100%;touch-action:none;cursor:crosshair;}

.toast{
  position:absolute;top:10px;left:50%;
  transform:translateX(-50%) translateY(-14px) scale(.9);
  background:var(--ink);color:#fff;
  font-weight:700;font-size:14px;line-height:1.35;
  padding:7px 16px;border-radius:99px;
  max-width:86%;text-align:center;
  opacity:0;pointer-events:none;
  transition:opacity .16s, transform .16s;
  z-index:20;
  box-shadow:0 4px 0 rgba(20,16,58,.25);
}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0) scale(1);}
.toast.bad{background:var(--magenta);color:#fff;}
.toast.good{background:var(--turq);color:var(--ink);}

/* ───────── overlays ───────── */
.overlay{
  position:absolute;inset:0;z-index:60;
  display:flex;padding:14px;
  background:rgba(255,247,232,0.96);
  overflow-y:auto;
  overscroll-behavior:contain;
  -webkit-overflow-scrolling:touch;
}
.overlay.center{align-items:flex-start;justify-content:center;}
.overlay.bottom{align-items:flex-start;justify-content:center;padding-bottom:12px;}
.panel{
  background:var(--ivory);
  border:4px solid var(--ink);
  border-radius:24px;
  box-shadow:6px 6px 0 var(--ink);
  padding:16px;
  width:100%;
  max-width:360px;
  margin:auto;
}
.start-panel{text-align:center;display:flex;flex-direction:column;gap:10px;align-items:stretch;}
.mascot{width:56px;height:56px;margin:0 auto -4px;display:block;}
.title{
  font-size:33px;font-weight:800;margin:0;line-height:1.1;
  color:var(--ink);
  text-shadow:4px 4px 0 var(--magenta);
  letter-spacing:0;
}
.sub{margin:0;font-size:14px;font-weight:600;line-height:1.5;opacity:.85;}
.tools-line{
  display:flex;flex-wrap:wrap;gap:5px;justify-content:center;
  font-size:11.5px;font-weight:600;
}
.tools-line span{
  background:#fff;border:2px solid var(--ink);border-radius:99px;
  padding:3px 9px;line-height:1.4;
}
.tools-line b{color:var(--royal);}
.best-line{margin:0;font-size:12.5px;font-weight:700;opacity:.75;}
.best-line b{color:var(--magenta);font-size:15px;}
.panel-title{
  font-size:23px;font-weight:800;margin:0 0 10px;text-align:center;
  color:var(--ink);text-shadow:3px 3px 0 var(--yellow);
}
.btn{
  display:flex;align-items:center;justify-content:center;gap:8px;
  width:100%;min-height:52px;padding:10px 18px;margin:0;
  border:3.5px solid var(--ink);border-radius:16px;
  font-family:inherit;font-size:19px;font-weight:800;line-height:1.2;
  background:var(--magenta);color:#fff;
  box-shadow:0 5px 0 var(--ink);
  cursor:pointer;
  transition:transform .1s, box-shadow .1s, background .15s;
  -webkit-user-select:none;user-select:none;
}
.btn:active{transform:translateY(4px);box-shadow:0 1px 0 var(--ink);}
.btn.ghost{background:#fff;color:var(--ink);}
.btn:focus-visible{outline:3px solid var(--royal);outline-offset:3px;}

.steps{list-style:none;margin:0 0 12px;padding:0;display:flex;flex-direction:column;gap:10px;}
.steps li{display:flex;gap:10px;align-items:flex-start;}
.step-ic{
  flex:0 0 auto;width:44px;height:44px;border-radius:14px;
  border:3px solid var(--ink);background:var(--turq);color:var(--ink);
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 3px 0 var(--ink);
}
.step-ic svg{width:24px;height:24px;}
.steps b{font-size:15px;font-weight:800;}
.steps p{margin:2px 0 0;font-size:12.5px;line-height:1.5;font-weight:600;opacity:.82;}
.warn-line{
  margin:0 0 12px;font-size:12.5px;font-weight:700;text-align:center;
  background:var(--yellow);border:2.5px solid var(--ink);border-radius:12px;
  padding:6px 8px;
}

.over-panel{max-width:360px;}
.over-title{
  margin:0 0 12px;font-size:26px;font-weight:800;text-align:center;
  color:var(--ink);text-shadow:3px 3px 0 var(--magenta);
}
.over-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:14px;}
.stat{
  background:#fff;border:3px solid var(--ink);border-radius:14px;
  box-shadow:0 3px 0 var(--ink);
  padding:6px 4px;text-align:center;display:flex;flex-direction:column;gap:2px;
}
.stat span{font-size:10.5px;font-weight:700;opacity:.65;line-height:1.2;}
.stat b{font-size:21px;font-weight:800;font-variant-numeric:tabular-nums;color:var(--royal);}
.lb{margin-bottom:12px;}
.lb h3{margin:0 0 6px;font-size:13px;font-weight:800;text-align:center;opacity:.8;}
.lb-row{
  display:flex;justify-content:space-between;gap:8px;
  font-size:12.5px;font-weight:700;
  padding:3px 8px;border-radius:8px;
}
.lb-row:nth-child(odd){background:#fff;}
.lb-row.me{background:var(--yellow);}

/* ───────── controls dock ───────── */
#controls{
  flex:0 0 auto;
  display:flex;
  gap:8px;
  padding:8px 10px 10px;
  background:var(--cream);
  border-top:3px solid var(--ink);
  z-index:6;
}
.tool-btn{
  flex:1 1 0;
  min-width:0;
  min-height:66px;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;
  background:#fff;color:var(--ink);
  border:3px solid var(--ink);border-radius:18px;
  box-shadow:0 4px 0 var(--ink);
  font-family:inherit;font-weight:800;font-size:13px;
  padding:4px;
  cursor:pointer;
  transition:transform .1s, background .15s, box-shadow .1s, color .15s;
  -webkit-user-select:none;user-select:none;
}
.tool-btn svg{width:26px;height:26px;}
.tool-btn span{line-height:1.15;}
.tool-btn:active{transform:translateY(3px);box-shadow:0 1px 0 var(--ink);}
.tool-btn.sel{
  background:var(--magenta);color:#fff;
  transform:translateY(-3px);
  box-shadow:0 7px 0 var(--ink);
}
.tool-btn:disabled{opacity:.45;transform:none;box-shadow:0 4px 0 var(--ink);}
.tool-btn:focus-visible{outline:3px solid var(--royal);outline-offset:3px;}

@media (max-width:360px){
  .chip-val{font-size:18px;}
  .chip-label{font-size:9px;}
  .hrt{width:18px;height:18px;}
  .title{font-size:28px;}
  .tool-btn{min-height:60px;font-size:12px;}
  .tool-btn svg{width:22px;height:22px;}
}
@media (max-height:520px){
  .mascot{display:none;}
  .title{font-size:26px;}
  .panel{padding:12px;border-radius:18px;}
  .btn{min-height:46px;font-size:16px;}
  .steps{gap:6px;}
  .step-ic{width:36px;height:36px;border-radius:10px;}
}
@media (max-height:430px){
  .overlay{padding:8px;}
  .panel{padding:10px;border-width:3px;border-radius:16px;box-shadow:4px 4px 0 var(--ink);}
  .start-panel{gap:6px;}
  .mascot{display:none;}
  .title{font-size:22px;text-shadow:2px 2px 0 var(--magenta);}
  .sub{font-size:12px;line-height:1.35;}
  .tools-line{display:none;}
  .panel-title{font-size:18px;margin-bottom:6px;text-shadow:2px 2px 0 var(--yellow);}
  .btn{min-height:44px;font-size:15px;}
  .best-line{font-size:11.5px;}
  .steps li{gap:8px;}
  .steps p{font-size:11.5px;line-height:1.35;}
  .over-grid{gap:6px;margin-bottom:8px;}
  .stat b{font-size:17px;}
}
@media (prefers-reduced-motion:reduce){
  *{transition-duration:.01ms !important;}
}