:root{
  --sky:#7ec8e3; --grass:#2f9e5f; --grass-d:#1c6b4a; --wood:#a9713d;
  --ink:#123022; --paper:#fffaf0;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%;overflow:hidden;background:#0d1f17;position:fixed;inset:0;width:100%;
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",Segoe UI,Roboto,sans-serif;
  color:var(--ink);user-select:none;-webkit-user-select:none;touch-action:manipulation}
#app{position:fixed;inset:0;display:flex;flex-direction:column}

/* ---------- HUD ---------- */
#hud{display:flex;align-items:center;gap:8px;padding:calc(6px + env(safe-area-inset-top)) 10px 6px;
  background:linear-gradient(180deg,var(--grass-d),#15553b);box-shadow:0 2px 0 rgba(0,0,0,.25);z-index:5}
#hud-mid{flex:1;text-align:center;color:#eaf7ee;line-height:1.15;min-width:0}
.hud-line{font-weight:800;font-size:clamp(13px,3.6vw,17px);text-shadow:0 1px 2px rgba(0,0,0,.35);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hud-line.sub{font-weight:600;font-size:clamp(10px,2.8vw,12px);opacity:.85;display:flex;gap:10px;justify-content:center}
.stars{letter-spacing:2px;color:#ffd85e;margin-left:6px}
.hud-btn{border:0;border-radius:10px;padding:8px 11px;font-size:clamp(11px,3vw,13px);font-weight:800;
  background:#f6f1e4;color:#1d4633;box-shadow:0 2px 0 #b7ac91;cursor:pointer}
.hud-btn:active{transform:translateY(2px);box-shadow:0 0 0 #b7ac91}
.hud-right{display:flex;gap:6px}

/* ---------- Stage ---------- */
#stage{position:relative;flex:1;overflow:hidden;background:var(--sky)}
#game{display:block;width:100%;height:100%;touch-action:none;overscroll-behavior:none;cursor:crosshair}
.hint,.ability-tip{position:absolute;left:50%;transform:translateX(-50%);bottom:calc(14px + env(safe-area-inset-bottom));
  padding:7px 14px;border-radius:999px;background:rgba(12,40,28,.72);color:#f4fff7;font-size:13px;font-weight:700;
  pointer-events:none;transition:opacity .3s;white-space:nowrap}
.ability-tip{bottom:auto;top:calc(12px + env(safe-area-inset-top));background:rgba(219,74,52,.9);animation:pulse 1s infinite}
@keyframes pulse{0%,100%{transform:translateX(-50%) scale(1)}50%{transform:translateX(-50%) scale(1.07)}}
.hidden{opacity:0;pointer-events:none;visibility:hidden}

/* ---------- Overlay ---------- */
.overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  background:rgba(8,26,18,.72);z-index:10;padding:16px}
.card{width:min(400px,94vw);background:var(--paper);border-radius:20px;padding:22px 20px;text-align:center;
  box-shadow:0 12px 0 rgba(0,0,0,.25),0 0 0 4px #fff inset;animation:pop .25s ease-out}
.card.wide{width:min(560px,96vw);max-height:88vh;overflow:auto}
@keyframes pop{from{transform:scale(.86);opacity:0}to{transform:scale(1);opacity:1}}
.ov-title{font-size:26px;font-weight:900;letter-spacing:1px}
.ov-stars{font-size:40px;color:#ffb703;letter-spacing:6px;margin:6px 0;text-shadow:0 2px 0 #b06f00}
.ov-score{font-size:16px;font-weight:700}
.ov-best{font-size:12px;opacity:.65;margin-bottom:4px}
.ov-tip{font-size:12px;font-weight:700;color:#7a5c2e;background:#fdf1d3;border-radius:10px;padding:8px;margin:10px 0 2px}
.ov-btns{display:flex;gap:10px;justify-content:center;margin-top:16px;flex-wrap:wrap}
.btn{border:0;border-radius:14px;padding:13px 20px;font-size:15px;font-weight:900;cursor:pointer;transition:transform .08s}
.btn.primary{background:#db4a34;color:#fff;box-shadow:0 4px 0 #9c2f1f}
.btn.ghost{background:#e7e0cf;color:#3b3220;box-shadow:0 4px 0 #bdb49d}
.btn:active{transform:translateY(4px);box-shadow:0 0 0}

/* ---------- Level select ---------- */
.lv-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(88px,1fr));gap:10px;margin:16px 0 4px}
.lv{position:relative;border:0;border-radius:14px;padding:10px 6px 8px;background:#eef7e6;cursor:pointer;
  box-shadow:0 4px 0 #b9cdb0;font:inherit;color:inherit}
.lv:active{transform:translateY(4px);box-shadow:0 0 0}
.lv .no{font-size:19px;font-weight:900}
.lv .st{font-size:12px;color:#e09b00;letter-spacing:1px}
.lv .sc{font-size:10px;opacity:.6;font-weight:700}
.lv .ab{display:inline-block;margin-top:4px;font-size:10px;font-weight:800;color:#fff;background:#8a6f42;
  padding:2px 6px;border-radius:6px}
.lv.locked{background:#e3e0da;color:#a09a8f;box-shadow:0 4px 0 #c2beb5;cursor:not-allowed}
