/* ===== Orchard Blade 果园刀光 ===== */
:root{
  --gold:#ffc65c; --gold-deep:#e08a1e;
  --wood-dark:#171009; --wood:#2a1c0f;
  --panel:rgba(26,16,8,.94);
  --line:#6b4a26; --line-bright:#a97a3a;
  --text:#f7ead2; --dim:#c9b08a;
  --danger:#ff6b57; --cyan:#8fd8ff; --green:#7ed6a0;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;}
html,body{height:100%;}
body{
  margin:0;overflow:hidden;background:#0d0906;color:var(--text);
  font-family:"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Segoe UI",system-ui,sans-serif;
  user-select:none;-webkit-user-select:none;
}
#app{position:fixed;inset:0;display:flex;flex-direction:column;}

/* ---------- HUD ---------- */
#hud{
  height:calc(56px + env(safe-area-inset-top,0px));flex:0 0 auto;display:flex;align-items:center;gap:10px;padding:env(safe-area-inset-top,0px) 12px 0 12px;
  background:linear-gradient(#2b1b0c,#1a1007);
  border-bottom:2px solid #4a3115;z-index:20;
}
.hud-group{display:flex;align-items:center;gap:8px;flex:0 0 auto;}
.hud-group.right{margin-left:auto;}
.chip{
  display:flex;align-items:center;gap:6px;height:34px;padding:0 12px;border-radius:17px;
  background:rgba(15,9,4,.65);border:1.5px solid var(--line);
  font-weight:700;font-size:16px;white-space:nowrap;
}
.chip svg{width:17px;height:17px;flex:0 0 auto;}
.score-chip{color:var(--gold);font-size:19px;min-width:96px;}
.score-chip svg{fill:var(--gold);}
.best-chip{color:var(--dim);font-size:13px;}
.time-chip{color:var(--text);font-variant-numeric:tabular-nums;}
.time-chip svg{fill:var(--dim);}
.time-chip.low{color:var(--danger);border-color:#8a3527;}
.time-chip.low svg{fill:var(--danger);}
.lives{display:flex;gap:3px;align-items:center;}
.lives svg{width:20px;height:20px;fill:#ff5b6a;filter:drop-shadow(0 1px 2px rgba(0,0,0,.6));transition:transform .15s;}
.lives svg.empty{fill:#3a2a22;filter:none;}
.hud-objective{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:4px;align-items:center;}
.obj-text{
  font-size:14.5px;font-weight:700;color:var(--text);letter-spacing:.02em;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;
  text-shadow:0 1px 2px rgba(0,0,0,.7);
}
.obj-text b{color:var(--gold);}
.obj-bar{width:min(340px,90%);height:8px;border-radius:4px;background:rgba(0,0,0,.55);border:1px solid #4a3115;overflow:hidden;}
#hudProgress{height:100%;width:0%;border-radius:4px;background:linear-gradient(90deg,#ffd23e,#ffb84d,#8fe6a8);transition:width .18s;box-shadow:0 0 8px rgba(255,200,90,.35);}
.icon-btn{
  width:38px;height:38px;border-radius:50%;border:2px solid var(--line);
  background:radial-gradient(circle at 35% 30%,#3a2712,#1c1108);
  color:var(--dim);cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;
}
.icon-btn:hover{border-color:var(--line-bright);color:var(--text);}
.icon-btn svg{width:18px;height:18px;fill:currentColor;}
.icon-btn:active{transform:scale(.94);}

/* ---------- stage / canvas ---------- */
#stage{position:relative;flex:1 1 auto;min-height:0;touch-action:none;cursor:crosshair;overflow:hidden;}
#game{position:absolute;inset:0;width:100%;height:100%;display:block;}

/* ---------- overlays ---------- */
.overlay{
  position:absolute;inset:0;z-index:30;display:flex;align-items:center;justify-content:center;
  background:rgba(8,5,2,.52);backdrop-filter:blur(2.5px);
}
.overlay.hidden{display:none;}
.panel{
  background:var(--panel);border:2px solid var(--line-bright);border-radius:20px;
  padding:26px 34px;min-width:300px;max-width:92%;
  box-shadow:0 18px 60px rgba(0,0,0,.6),inset 0 1px 0 rgba(255,220,150,.14);
  text-align:center;
}
.btn{
  appearance:none;border:2px solid #5c3a12;border-radius:13px;padding:12px 26px;
  font-size:17px;font-weight:800;font-family:inherit;color:#3a2208;cursor:pointer;
  background:linear-gradient(#ffcf75,#e6952a);
  box-shadow:0 4px 14px rgba(0,0,0,.45),inset 0 1px 0 rgba(255,255,255,.45);
  transition:transform .08s;
}
.btn:hover{filter:brightness(1.06);}
.btn:active{transform:translateY(2px);}
.btn.primary{background:linear-gradient(#8fe6a8,#3fae67);border-color:#1d5c33;color:#0c2c16;}
.btn.ghost{background:linear-gradient(#4a331c,#31200f);color:var(--text);border-color:var(--line);}
.btn.big{font-size:21px;padding:15px 46px;border-radius:16px;}
.btn:disabled{opacity:.45;cursor:not-allowed;}

/* ---------- menu ---------- */
.menu-wrap{display:flex;flex-direction:column;align-items:center;gap:18px;max-width:96%;}
.game-title{
  margin:0;font-size:clamp(42px,7vw,76px);font-weight:900;letter-spacing:.08em;line-height:1.05;
  background:linear-gradient(#ffe9b0 15%,#ffb84d 55%,#d97b1c 90%);
  -webkit-background-clip:text;background-clip:text;color:transparent;
  filter:drop-shadow(0 4px 10px rgba(0,0,0,.75));
}
.game-sub{
  color:var(--dim);font-size:15px;letter-spacing:.28em;font-weight:700;text-transform:uppercase;
  text-shadow:0 2px 4px rgba(0,0,0,.8);
}
.level-cards{display:flex;gap:14px;flex-wrap:wrap;justify-content:center;}
.level-card{
  position:relative;width:212px;padding:14px 16px;border-radius:16px;cursor:pointer;text-align:left;
  background:linear-gradient(rgba(38,25,13,.92),rgba(24,15,8,.92));
  border:2px solid var(--line);transition:border-color .12s,transform .12s,box-shadow .12s;
}
.level-card:hover{transform:translateY(-2px);}
.level-card.selected{border-color:var(--gold);box-shadow:0 0 0 1px var(--gold),0 8px 24px rgba(224,138,30,.22);}
.level-card.locked{opacity:.55;filter:grayscale(.55);cursor:not-allowed;}
.lc-head{display:flex;align-items:center;gap:9px;margin-bottom:7px;}
.lc-num{
  width:30px;height:30px;border-radius:9px;flex:0 0 auto;display:flex;align-items:center;justify-content:center;
  font-weight:900;font-size:16px;color:#241505;background:linear-gradient(#ffd98a,#e0962c);
}
.level-card[data-theme="market"] .lc-num{background:linear-gradient(#ffb0a0,#d05a3a);}
.level-card[data-theme="harvest"] .lc-num{background:linear-gradient(#b9c4ff,#5a6bd05);}
.lc-name{font-size:17.5px;font-weight:800;}
.lc-goal{font-size:12.5px;color:var(--dim);line-height:1.5;min-height:38px;}
.lc-best{margin-top:7px;font-size:12.5px;color:var(--gold);font-weight:700;}
.lc-lock{
  position:absolute;top:10px;right:10px;display:none;align-items:center;gap:5px;
  padding:4px 9px;border-radius:9px;background:rgba(12,7,3,.82);border:1px solid #4a3115;
  font-size:12px;color:var(--dim);font-weight:700;
}
.lc-lock svg{width:14px;height:14px;fill:var(--dim);}
.level-card.locked .lc-goal{opacity:.75;}
.level-card.locked .lc-lock{display:flex;}
.menu-hint{color:#e8d6b4;font-size:13.5px;letter-spacing:.06em;}
body.in-menu #timeChip{display:none;}
body.in-menu #btnPause{display:none;}

/* ---------- countdown ---------- */
#countdown{background:rgba(8,5,2,.25);backdrop-filter:none;}
#countNum{
  font-size:clamp(90px,16vw,170px);font-weight:900;color:var(--gold);
  text-shadow:0 0 34px rgba(255,178,60,.55),0 8px 18px rgba(0,0,0,.7);
  animation:countPop .62s ease-out;
}
@keyframes countPop{0%{transform:scale(1.7);opacity:0;}30%{transform:scale(1);opacity:1;}100%{transform:scale(.94);opacity:.9;}}

/* ---------- pause / result ---------- */
.panel h2{margin:0 0 6px;font-size:30px;letter-spacing:.05em;}
.pause-title{color:var(--cyan);}
.result-title{font-size:33px;margin-bottom:4px;}
.result-title.won{color:var(--gold);text-shadow:0 0 24px rgba(255,190,80,.4);}
.result-title.lost{color:var(--danger);}
.result-reason{color:var(--dim);font-size:15px;margin-bottom:10px;}
.result-stars{display:flex;gap:8px;justify-content:center;margin:4px 0 12px;}
.result-stars svg{width:34px;height:34px;fill:#3a2a18;}
.result-stars svg.on{fill:var(--gold);filter:drop-shadow(0 2px 8px rgba(255,190,80,.5));}
.result-score{font-size:42px;font-weight:900;color:var(--text);font-variant-numeric:tabular-nums;}
.result-score .rs-label{display:block;font-size:13px;color:var(--dim);font-weight:700;letter-spacing:.2em;}
.result-best{margin-top:4px;font-size:14px;color:var(--dim);}
.result-best .newrec{color:var(--green);font-weight:800;margin-left:6px;}
.result-objective{margin-top:10px;font-size:14.5px;color:var(--text);background:rgba(0,0,0,.3);border:1px solid #4a3115;border-radius:10px;padding:8px 14px;}
.result-actions,.pause-actions{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin-top:20px;}

/* ---------- mobile ---------- */
@media (max-width:640px){
  #hud{flex-wrap:wrap;height:auto;flex:0 0 auto;min-height:52px;padding:6px 8px;row-gap:5px;}
  .hud-objective{order:10;flex:1 1 100%;}
  .obj-text{font-size:13px;}
  .obj-bar{width:96%;height:7px;}
  .icon-btn{width:44px;height:44px;}
  .chip{height:30px;padding:0 9px;font-size:13.5px;border-radius:15px;}
  .chip svg{width:14px;height:14px;}
  .score-chip{font-size:16px;min-width:74px;}
  .best-chip{display:none;}
  .lives svg{width:17px;height:17px;}
  .obj-text{font-size:12px;}
  .obj-bar{width:96%;}
  .icon-btn{width:34px;height:34px;}
  .level-card{width:min(300px,86vw);}
  .panel{padding:20px 18px;}
  .result-score{font-size:34px;}
  .btn{font-size:15.5px;padding:11px 20px;}
  .btn.big{font-size:18px;padding:13px 38px;}
  .game-sub{letter-spacing:.16em;font-size:12px;}
}

/* ===== 精修：模式切换与星级条件 ===== */
.mode-row{display:flex;gap:10px;justify-content:center;margin:10px 0 6px;}
.mode-btn{
  padding:7px 22px;border-radius:18px;border:1.5px solid var(--line);
  background:rgba(15,9,4,.6);color:var(--dim);font-size:14.5px;font-weight:700;
  letter-spacing:.08em;cursor:pointer;transition:all .15s;
}
.mode-btn.on{
  color:#241505;background:linear-gradient(#ffd88a,#ffb84d);
  border-color:var(--gold-deep);box-shadow:0 2px 10px rgba(255,180,70,.35);
}
.mode-hint{color:#bfa87f;font-size:12px;letter-spacing:.03em;margin:0 0 14px;text-align:center;line-height:1.6;}
.star-conditions{display:flex;flex-direction:column;gap:3px;margin:-6px 0 10px;}
.star-row{display:flex;align-items:center;gap:7px;font-size:13px;color:#8f7a58;}
.star-row svg{width:14px;height:14px;fill:#3a2a18;}
.star-row.met{color:var(--gold);}
.star-row.met svg{fill:var(--gold);}
.hud-objective.goal-met .obj-bar #hudProgress{background:linear-gradient(90deg,#ffe08a,#8fe6a8);box-shadow:0 0 10px rgba(160,255,190,.5);}
.hud-objective.goal-met .obj-text{color:#b9f0c8;}
