/* ═══════════════════════════════════════
   摸鱼矿工 — styles.css
   See DESIGN_SYSTEM.md for token reference
═══════════════════════════════════════ */
*{box-sizing:border-box;margin:0;padding:0;}

:root {
  --s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:20px;--s6:24px;--s8:32px;
  --t-xs:10px;--t-sm:12px;--t-md:14px;--t-lg:18px;--t-xl:24px;
  --ink:#18140e;--ink-2:#4a4438;--ink-3:#8a8070;
  --surface:#ffffff;--bg:#f0ede8;
  --line:rgba(0,0,0,0.08);
  --danger:#ff4757;--money:#b08800;--rare:#a855f7;--good:#22c55e;
  --r-sm:8px;--r-md:12px;--r-lg:16px;--r-pill:100px;
  --sh-sm:0 1px 0 rgba(0,0,0,.10),0 2px 8px rgba(0,0,0,.06);
  --sh-md:0 2px 0 rgba(0,0,0,.10),0 4px 16px rgba(0,0,0,.08);
  --sh-lg:0 4px 0 rgba(0,0,0,.12),0 8px 32px rgba(0,0,0,.10);
  --office:#3d7fff;--canteen:#ff8c42;
  --accent:var(--office);
  --accent-glow:rgba(160,210,255,0.6);
}

body {
  font-family:'Noto Sans SC','PingFang SC','Microsoft YaHei',sans-serif;
  background:var(--bg);
  color:var(--ink);
  height:100vh;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  overflow:hidden;
  user-select:none;
}

/* ── GAME SHELL ── */
#game-shell {
  width:100%;
  max-width:420px;
  height:100%;
  max-height:780px;
  display:flex;
  flex-direction:column;
  background:var(--surface);
  border-radius:0;
  box-shadow:var(--sh-lg);
  overflow:hidden;
  position:relative;
}
@media (min-width:480px) {
  #game-shell { border-radius:var(--r-lg); height:calc(100vh - 40px); }
}

/* ── HUD ── */
#hud {
  background:var(--surface);
  border-bottom:1px solid var(--line);
  padding:var(--s2);
  display:flex;
  align-items:center;
  position:relative;
  z-index:10;
  flex-shrink:0;
  box-shadow:var(--sh-sm);
}
#hud::before {
  content:'';
  position:absolute;top:0;left:0;right:0;height:3px;
  background:var(--accent);
  box-shadow:0 0 10px var(--accent-glow);
  border-radius:0 0 2px 2px;
  transition:background .4s,box-shadow .4s;
}
.hud-cell {
  flex:1;display:flex;flex-direction:column;
  align-items:center;gap:1px;padding:1px 0;
}
.hud-cell+.hud-cell { border-left:1px solid var(--line); }
.hud-icon { font-size:13px;line-height:1; }
.hud-val  { font-size:13px;font-weight:900;line-height:1;color:var(--ink); }
.hud-val.accent { color:var(--accent);transition:color .4s; }
.hud-val.money  { color:var(--money); }
.hud-val.danger { color:var(--danger); }
.hud-lbl  { font-size:7px;font-weight:700;letter-spacing:1.5px;text-transform:uppercase;color:var(--ink-3);line-height:1; }

/* ── OBJECTIVE BAR ── */
#obj-bar {
  background:var(--ink);
  margin:var(--s2);
  border-radius:var(--r-md);
  padding:7px var(--s3);
  display:flex;
  align-items:center;
  gap:var(--s2);
  flex-shrink:0;
}
#obj-text { flex:1;font-size:10px;color:rgba(255,255,255,.55);font-weight:700;white-space:nowrap; }
#obj-text strong { color:white;font-weight:900; }
#obj-track { flex:2;height:6px;background:rgba(255,255,255,.08);border-radius:var(--r-pill);overflow:hidden; }
#obj-fill {
  height:100%;width:0%;background:var(--accent);
  border-radius:var(--r-pill);
  box-shadow:0 0 6px var(--accent-glow);
  transition:width .3s ease;
  animation:obj-pulse 2s ease-in-out infinite;
}
@keyframes obj-pulse { 0%,100%{opacity:1} 50%{opacity:.65} }
#obj-frac { font-size:10px;font-weight:900;color:white;white-space:nowrap; }

/* ── CANVAS ── */
#game-canvas {
  flex:1;
  width:100%;
  display:block;
  cursor:pointer;
  touch-action:none;
}

/* ── SMOKE BREAK BUTTON ── */
#smoke-btn {
  position:absolute;
  bottom:56px;right:var(--s4);
  width:52px;height:52px;
  border-radius:50%;
  background:rgba(24,20,14,.78);
  backdrop-filter:blur(8px);
  border:2px solid rgba(255,255,255,.14);
  display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:1px;
  box-shadow:var(--sh-lg);
  z-index:20;cursor:pointer;
  transition:transform .1s,opacity .2s;
}
#smoke-btn:active { transform:scale(.93); }
#smoke-btn.depleted { opacity:.35;pointer-events:none; }
#smoke-em  { font-size:20px;line-height:1; }
#smoke-lbl { font-size:7px;font-weight:700;letter-spacing:.5px;text-transform:uppercase;color:rgba(255,255,255,.55); }

/* ── TICKER ── */
#ticker {
  background:var(--ink);
  padding:5px var(--s3);
  display:flex;align-items:center;gap:var(--s2);
  overflow:hidden;flex-shrink:0;
  height:28px;
}
#ticker-tag {
  font-size:9px;font-weight:700;color:white;
  background:var(--danger);
  padding:2px 8px;border-radius:var(--r-pill);
  white-space:nowrap;flex-shrink:0;
  transition:background .4s;
}
#ticker-text {
  font-size:10px;color:rgba(255,255,255,.6);font-weight:500;
  white-space:nowrap;animation:ticker-scroll 28s linear infinite;
}
@keyframes ticker-scroll { 0%{transform:translateX(0)} 100%{transform:translateX(-50%)} }

/* ── EVENT BANNER ── */
#event-banner {
  position:absolute;bottom:52px;left:var(--s3);right:var(--s3);
  background:#fff3cd;border:2px solid #ffc837;border-radius:var(--r-md);
  padding:var(--s2) var(--s3);
  display:none;align-items:center;gap:var(--s2);
  box-shadow:var(--sh-md);z-index:25;
  animation:warn-pulse .7s ease-in-out infinite alternate;
}
#event-banner.visible { display:flex; }
#event-icon { font-size:22px; }
#event-text strong { display:block;font-size:11px;font-weight:900;color:#9a6000; }
#event-text span   { font-size:9px;color:#b87800;font-weight:500; }
#event-timer { margin-left:auto;font-size:20px;font-weight:900;color:var(--danger);animation:blink 1s linear infinite; }
@keyframes blink  { 0%,100%{opacity:1} 50%{opacity:.35} }
@keyframes warn-pulse { from{opacity:.8} to{opacity:1} }

/* ── COMBO PILL (canvas overlay) ── */
#combo-pill {
  position:absolute;top:74px;right:var(--s3);
  background:linear-gradient(135deg,#ff6b35,#ff4757);
  color:white;font-size:13px;font-weight:900;
  padding:3px 11px;border-radius:var(--r-pill);
  box-shadow:0 2px 8px rgba(255,71,87,.5);
  display:none;z-index:20;
  animation:combo-pop .3s cubic-bezier(.34,1.56,.64,1) both;
}
#combo-pill.visible { display:block; }
@keyframes combo-pop { from{transform:scale(.6);opacity:0} to{transform:scale(1);opacity:1} }

/* ── MODALS ── */
.overlay {
  position:absolute;inset:0;
  background:rgba(18,14,10,.82);
  backdrop-filter:blur(4px);
  display:flex;flex-direction:column;
  z-index:50;overflow-y:auto;
}
.overlay.hidden { display:none; }

.modal-box {
  background:var(--surface);
  border-radius:var(--r-lg);
  margin:auto var(--s3);
  overflow:hidden;
  box-shadow:var(--sh-lg);
}

.modal-header {
  padding:var(--s4) var(--s4) var(--s3);
  border-bottom:1px solid var(--line);
  position:relative;
}
.modal-header::before {
  content:'';position:absolute;top:0;left:0;right:0;height:3px;
  background:var(--accent);box-shadow:0 0 10px var(--accent-glow);
}
.modal-title  { font-size:var(--t-xl);font-weight:900;letter-spacing:-.5px; }
.modal-sub    { font-size:var(--t-sm);color:var(--ink-3);font-weight:500;margin-top:2px; }
.modal-cash   { position:absolute;top:var(--s4);right:var(--s4);font-size:var(--t-md);font-weight:900;color:var(--money); }
.modal-body   { padding:var(--s3);display:flex;flex-direction:column;gap:var(--s2); }
.modal-footer { padding:var(--s3) var(--s4) var(--s6);text-align:center;font-size:var(--t-sm);color:var(--ink-3);font-weight:700;cursor:pointer; }
.modal-footer:hover { color:var(--ink); }

/* Augment card */
.aug-card {
  background:var(--surface);border:1px solid var(--line);
  border-radius:var(--r-md);box-shadow:var(--sh-sm);
  display:flex;align-items:center;gap:var(--s3);
  padding:var(--s3);position:relative;overflow:hidden;
  cursor:pointer;transition:transform .12s,box-shadow .12s;
}
.aug-card:hover { transform:translateY(-1px);box-shadow:var(--sh-md); }
.aug-card::before { content:'';position:absolute;top:0;left:0;right:0;height:3px; }
.ac-bronze::before { background:#cd7f32; }
.ac-silver::before { background:#94a3b8; }
.ac-gold::before   { background:#ffc837;box-shadow:0 0 8px rgba(255,200,55,.5); }
.ac-diamond::before{ background:linear-gradient(90deg,#a8e8ff,#c084fc); }
.aug-card.owned    { opacity:.5;pointer-events:none; }
.aug-card.cant-buy .aug-buy { opacity:.4;pointer-events:none; }

.aug-em   { font-size:26px;width:34px;text-align:center;flex-shrink:0; }
.aug-info { flex:1; }
.aug-name { font-size:var(--t-md);font-weight:900; }
.aug-en   { font-size:9px;color:var(--ink-3);font-weight:500;margin-bottom:2px; }
.aug-desc { font-size:9px;color:var(--ink-2);font-weight:500; }
.aug-right{ display:flex;flex-direction:column;align-items:flex-end;gap:4px;flex-shrink:0; }

.badge { font-size:7px;font-weight:700;padding:2px 6px;border-radius:var(--r-pill);letter-spacing:1px;text-transform:uppercase; }
.b-bronze  { background:#fdf4e7;color:#92400e;border:1px solid #cd7f32; }
.b-silver  { background:#f1f5f9;color:#475569;border:1px solid #94a3b8; }
.b-gold    { background:#fef9e7;color:#92400e;border:1px solid #ffc837; }
.b-diamond { background:linear-gradient(90deg,#e0f4ff,#f5e8ff);color:#0369a1;border:1px solid #a8e8ff; }

.aug-price { font-size:11px;font-weight:900;color:var(--money);background:#fef9e7;border:1px solid #fde68a;padding:2px 8px;border-radius:var(--r-pill); }
.aug-owned-tag { font-size:8px;font-weight:700;color:var(--good);background:#f0fdf4;border:1px solid #86efac;padding:2px 8px;border-radius:var(--r-pill); }
.aug-buy {
  font-size:9px;font-weight:700;color:white;
  background:var(--accent);padding:4px 10px;
  border-radius:var(--r-sm);border:none;cursor:pointer;font-family:inherit;
}

/* Draft overlay */
.draft-head    { text-align:center;padding:var(--s4) 0 var(--s2); }
.draft-grid    { display:grid;grid-template-columns:repeat(3,1fr);gap:var(--s2);padding:0 var(--s3) var(--s3); }
.draft-card {
  background:var(--surface);border:1px solid var(--line);
  border-radius:var(--r-md);box-shadow:var(--sh-sm);overflow:hidden;
  display:flex;flex-direction:column;align-items:center;
  padding:var(--s3) var(--s2);gap:var(--s1);
  position:relative;cursor:pointer;text-align:center;
  transition:transform .12s,box-shadow .12s;
}
.draft-card:hover { transform:translateY(-2px);box-shadow:var(--sh-md); }
.draft-card::before { content:'';position:absolute;top:0;left:0;right:0;height:3px; }
.dc-bronze::before { background:#cd7f32; }
.dc-silver::before { background:#94a3b8; }
.draft-em   { font-size:28px; }
.draft-name { font-size:11px;font-weight:900; }
.draft-en   { font-size:8px;color:var(--ink-3);font-weight:500; }
.draft-desc { font-size:8px;color:var(--ink-2);font-weight:500;line-height:1.4; }
.draft-btn {
  width:100%;padding:6px;font-size:10px;font-weight:700;
  color:white;background:var(--ink);border:none;
  border-radius:var(--r-sm);cursor:pointer;font-family:inherit;
}

/* Run Over */
#runover-overlay { flex-direction:column;padding:var(--s4); }
.ro-inner { display:flex;flex-direction:column;align-items:center;gap:var(--s3);width:100%; }
.ro-title { font-size:var(--t-xl);font-weight:900;color:white;letter-spacing:-.5px; }
.ro-sub   { font-size:var(--t-sm);color:rgba(255,255,255,.45);font-weight:500; }
.ro-emoji { font-size:52px;filter:drop-shadow(0 4px 12px rgba(0,0,0,.4));animation:sad-bob 2s ease-in-out infinite; }
@keyframes sad-bob { 0%,100%{transform:rotate(-5deg)} 50%{transform:translateY(-6px) rotate(5deg)} }
.ro-stats {
  background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.07);
  border-radius:var(--r-md);padding:var(--s3) var(--s4);width:100%;
  display:grid;grid-template-columns:1fr 1fr;gap:var(--s2);
}
.ro-stat { display:flex;flex-direction:column;gap:2px; }
.ro-stat-val { font-size:var(--t-lg);font-weight:900;color:white; }
.ro-stat-val.gold { color:#ffc837; }
.ro-stat-lbl { font-size:7px;font-weight:700;color:rgba(255,255,255,.35);letter-spacing:1.5px;text-transform:uppercase; }
.ro-augs { background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.06);border-radius:var(--r-md);padding:var(--s2) var(--s3);width:100%; }
.ro-augs-title { font-size:8px;font-weight:700;color:rgba(255,255,255,.35);letter-spacing:2px;text-transform:uppercase;margin-bottom:6px; }
.aug-pill { display:inline-flex;align-items:center;gap:4px;font-size:9px;font-weight:700;color:rgba(255,255,255,.75);padding:2px 8px;border-radius:var(--r-pill);margin:2px; }
.ap-bronze { background:rgba(205,127,50,.2);border:1px solid rgba(205,127,50,.3); }
.ap-silver { background:rgba(148,163,184,.2);border:1px solid rgba(148,163,184,.3); }
.ap-gold   { background:rgba(255,200,55,.2);border:1px solid rgba(255,200,55,.3); }
.ro-lb { background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.05);border-radius:var(--r-md);padding:var(--s2) var(--s3);width:100%; }
.ro-lb-title { font-size:8px;font-weight:700;color:rgba(255,255,255,.35);letter-spacing:2px;text-transform:uppercase;margin-bottom:6px; }
.lbr { display:flex;align-items:center;gap:var(--s2);padding:4px 0; }
.lbr+.lbr { border-top:1px solid rgba(255,255,255,.04); }
.lbr-rank { font-size:11px;font-weight:900;color:rgba(255,255,255,.25);width:16px; }
.lbr-rank.gold { color:#ffc837; }
.lbr-name { flex:1;font-size:11px;font-weight:700;color:rgba(255,255,255,.75); }
.lbr-name.now { color:var(--office); }
.lbr-meta { font-size:8px;color:rgba(255,255,255,.3);font-weight:500; }
.lbr-score { font-size:11px;font-weight:900;color:#ffc837; }

/* Start screen */
#start-overlay { flex-direction:column;background:rgba(18,14,10,.88); }
.start-inner {
  display:flex;flex-direction:column;align-items:center;
  padding:var(--s8) var(--s6) var(--s6);gap:var(--s4);
}
.start-title { font-size:32px;font-weight:900;color:white;letter-spacing:-1px;text-align:center; }
.start-sub   { font-size:var(--t-sm);color:rgba(255,255,255,.45);font-weight:500; }
.start-emojis { font-size:26px;filter:drop-shadow(0 3px 6px rgba(0,0,0,.4)); }
.btn-start-main {
  width:100%;padding:var(--s4);font-size:var(--t-lg);font-weight:900;
  color:white;background:var(--office);border:none;border-radius:var(--r-md);
  cursor:pointer;box-shadow:0 4px 0 rgba(30,80,200,.4),0 4px 16px rgba(61,127,255,.35);
  font-family:inherit;transition:transform .1s;
}
.btn-start-main:hover { transform:translateY(-2px); }
.btn-retry {
  width:100%;padding:var(--s4);font-size:var(--t-lg);font-weight:900;
  color:var(--ink);background:white;border:none;
  border-radius:var(--r-md);cursor:pointer;
  box-shadow:0 4px 0 rgba(0,0,0,.2);font-family:inherit;
}

/* Transition overlay */
#biome-transition {
  position:absolute;inset:0;
  background:var(--ink);
  display:flex;flex-direction:column;
  align-items:center;justify-content:center;
  gap:var(--s3);z-index:60;
  opacity:0;pointer-events:none;
  transition:opacity .3s;
}
#biome-transition.visible { opacity:1;pointer-events:all; }
#bt-floor { font-size:48px;font-weight:900;color:white;letter-spacing:-.5px; }
#bt-name  { font-size:var(--t-lg);font-weight:700;color:rgba(255,255,255,.6); }
