/* =====================================================================
   Aetherfall – UI 2.0 "Modern" theme
   Loaded after style.css and overrides it: glassy HUD panels, slimmer
   borders, docks for skills / menu, pill tabs, softer shadows.
   NOTE: no backdrop-filter on HUD elements (keeps the GPU free for 144 Hz);
   blur is only used for modal windows/backdrops, which are static.
   ===================================================================== */
:root {
  --g-bg: linear-gradient(180deg, rgba(22, 28, 58, 0.78), rgba(12, 16, 36, 0.82));
  --g-bg-soft: rgba(14, 18, 40, 0.62);
  --g-border: rgba(255, 255, 255, 0.13);
  --g-border-strong: rgba(255, 255, 255, 0.22);
  --g-shadow: 0 10px 28px rgba(0, 0, 0, 0.38);
  --g-hi: inset 0 1px 0 rgba(255, 255, 255, 0.08);
  --accent: #ffc531;
  --accent-2: #5fb0ff;
  --good: #34d399;
  --bad: #ff5d6c;
  --txt: #eef2ff;
  --txt-dim: #a9b4d6;
  /* window colours are dark now – the full window theme lives in theme-dark.css (loaded last) */
  --w-bg: linear-gradient(180deg, #171e3d 0%, #11162f 45%, #0c1024 100%);
  --w-line: rgba(150, 170, 255, 0.15);
  --w-ink: #e8ecff;
  --w-ink-soft: #a3aed6;
}

/* ---------- generic HUD glass ---------- */
.hud-player, .qcard, .cur, .hud-map, .auto-status, .session, .log-line, .round-btn, .instance-timer, .toast,
.hud-skills, .hud-menu, .mode-chip {
  font-family: var(--font);
}
.outline, .outline-sm { text-shadow: 0 1px 2px rgba(0, 0, 0, 0.65), 0 0 1px rgba(0, 0, 0, 0.6); }

/* ---------- player card ---------- */
.hud-player {
  left: 14px; top: 12px; gap: 12px; padding: 8px 16px 8px 8px;
  background: var(--g-bg); border: 1px solid var(--g-border); border-radius: 999px 22px 22px 999px;
  box-shadow: var(--g-shadow), var(--g-hi);
}
.avatar {
  width: 78px; height: 78px; border: 2px solid rgba(255, 255, 255, 0.85);
  background: radial-gradient(circle at 50% 30%, #ffffff 0%, #d7e5ff 55%, #8fb2ff 100%);
  box-shadow: 0 0 0 4px rgba(95, 176, 255, 0.28), 0 6px 16px rgba(0, 0, 0, 0.45);
  transition: transform 0.15s;
}
.avatar:hover { transform: scale(1.05); }
.avatar svg { width: 58px; height: 58px; }
.avatar .lvl {
  bottom: -6px; border: 2px solid #fff; border-radius: 999px; font-size: 13px; padding: 0 8px;
  background: linear-gradient(180deg, #ffe37a, #ffb21c); box-shadow: 0 3px 8px rgba(0, 0, 0, 0.35);
}
.avatar.premium { box-shadow: 0 0 0 4px rgba(255, 213, 79, 0.75), 0 0 18px rgba(255, 213, 79, 0.65), 0 6px 16px rgba(0, 0, 0, 0.45); border-color: #fff3c4; }
.pc-name { font-size: 17px; font-weight: 700; color: var(--txt); }
.pc-title { background: rgba(95, 176, 255, 0.18); color: #cfe6ff; border: 1px solid rgba(95, 176, 255, 0.35); border-radius: 999px; padding: 0 8px; }
.pc-cp { font-size: 24px; letter-spacing: 0.3px; }
.pc-cp small { font-family: var(--font); font-weight: 700; font-size: 11px; color: #ffe9a6; background: rgba(255, 197, 49, 0.18); border-radius: 6px; padding: 0 5px; }
.hpbar { width: 240px; height: 14px; border: none; border-radius: 999px; background: rgba(0, 0, 0, 0.5); box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.65); }
.hpbar .fill { border-radius: 999px; background: linear-gradient(90deg, #ff4d6d, #ff8a5c); box-shadow: 0 0 10px rgba(255, 77, 109, 0.45); }
.hpbar .fill.green { background: linear-gradient(90deg, #16a34a, #4ade80); box-shadow: 0 0 10px rgba(74, 222, 128, 0.4); }
.hpbar .txt { font-size: 11px; text-shadow: 0 1px 2px rgba(0, 0, 0, 0.8); }
.vip-badge, .prem-badge { border: none; border-radius: 999px; padding: 1px 10px; box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3); }
.buffs { top: 116px; left: 22px; }
.buff { border: 1px solid var(--g-border-strong); border-radius: 12px; background: var(--g-bg-soft); box-shadow: 0 4px 10px rgba(0, 0, 0, 0.35); }

/* ---------- feature row ---------- */
.hud-features { left: 410px; top: 10px; gap: 6px; padding: 6px 10px 4px; background: var(--g-bg); border: 1px solid var(--g-border); border-radius: 20px; box-shadow: var(--g-shadow), var(--g-hi); }
.feat { width: 64px; }
.feat .fi { width: 50px; height: 50px; border-radius: 16px; background: radial-gradient(circle at 50% 30%, rgba(255, 255, 255, 0.16), rgba(255, 255, 255, 0.02)); border: 1px solid rgba(255, 255, 255, 0.1); filter: none; transition: transform 0.15s, background 0.15s, box-shadow 0.15s; }
.feat .fi svg { width: 42px; height: 42px; filter: drop-shadow(0 2px 2px rgba(0, 0, 0, 0.45)); }
.feat:hover { transform: none; }
.feat:hover .fi { transform: translateY(-2px); background: radial-gradient(circle at 50% 30%, rgba(255, 255, 255, 0.28), rgba(95, 176, 255, 0.12)); box-shadow: 0 0 0 2px rgba(95, 176, 255, 0.45), 0 6px 14px rgba(0, 0, 0, 0.35); }
.feat .fl { font-size: 11.5px; font-weight: 600; color: var(--txt); margin-top: 3px; }
.dot { width: 13px; height: 13px; border: 2px solid #fff; background: #ff3b5c; box-shadow: 0 0 8px rgba(255, 59, 92, 0.8); }

/* ---------- currencies ---------- */
.hud-currency { right: 274px; top: 12px; gap: 6px; }
.cur { min-width: 120px; height: 32px; padding: 0 8px 0 3px; border: 1px solid var(--g-border); background: var(--g-bg); border-radius: 999px; font-size: 15px; box-shadow: 0 6px 14px rgba(0, 0, 0, 0.3); }
.cur svg { width: 26px; height: 26px; }
.cur .plus { width: 20px; height: 20px; border: none; border-radius: 50%; background: linear-gradient(180deg, #4ade80, #16a34a); font-size: 15px; line-height: 20px; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.35); }

/* ---------- minimap ---------- */
.hud-map { right: 12px; top: 10px; width: 252px; padding: 6px; background: var(--g-bg); border: 1px solid var(--g-border); border-radius: 20px; box-shadow: var(--g-shadow), var(--g-hi); }
.zone-banner { background: none; border: none; padding: 2px 6px 6px; border-radius: 0; }
.zone-name { font-size: 15px; letter-spacing: 0.3px; color: var(--txt); }
.diff-chip { border: none; border-radius: 999px; padding: 0 8px; color: #10142a; box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3); }
.minimap { width: 240px; height: 190px; border: 1px solid rgba(255, 255, 255, 0.18); border-radius: 14px; box-shadow: inset 0 0 22px rgba(0, 0, 0, 0.55); }
.map-btns { margin-top: 6px; justify-content: space-between; }
.map-btns .btn-sm { flex: 1; font-size: 12px; min-height: 28px; }

/* ---------- boss bar ---------- */
.hud-boss { top: 104px; width: 600px; padding: 8px 14px 10px; background: var(--g-bg); border: 1px solid rgba(255, 90, 110, 0.35); border-radius: 18px; box-shadow: 0 10px 30px rgba(0, 0, 0, 0.45), 0 0 24px rgba(255, 60, 90, 0.15); }
.boss-name { font-size: 19px; color: #ffd9de; }
.boss-bar { height: 18px; border: none; border-radius: 999px; background: rgba(0, 0, 0, 0.55); box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.7); }
.boss-bar .fill { border-radius: 999px; background: linear-gradient(90deg, #b3132b, #ff4d6d 60%, #ff8a8a); box-shadow: 0 0 12px rgba(255, 77, 109, 0.6); }
.boss-bar .ghost { border-radius: 999px; background: rgba(255, 220, 170, 0.75); }
.boss-bar .txt { font-size: 12px; }
.instance-timer { top: 68px; border: 1px solid var(--g-border); background: var(--g-bg); border-radius: 999px; font-size: 20px; padding: 2px 18px; box-shadow: var(--g-shadow); }

/* ---------- quest tracker ---------- */
.hud-left { top: 168px; width: 304px; gap: 8px; }
.qcard { position: relative; border: 1px solid var(--g-border); background: var(--g-bg); border-radius: 16px; padding: 9px 12px 10px 16px; box-shadow: 0 8px 18px rgba(0, 0, 0, 0.3); transition: transform 0.15s, border-color 0.15s; }
.qcard::before { content: ''; position: absolute; left: 6px; top: 10px; bottom: 10px; width: 3px; border-radius: 3px; background: var(--accent); opacity: 0.85; }
.qcard.fb-card::before { background: #ff6b7d; }
.qcard:hover { background: var(--g-bg); transform: translateX(2px); border-color: var(--g-border-strong); }
.qhead { font-size: 13px; letter-spacing: 0.4px; text-transform: uppercase; color: #ffd76a; }
.qhead svg { width: 18px; height: 18px; }
.qtext { font-size: 13.5px; color: var(--txt); font-weight: 600; }
.qprog { height: 10px; border-radius: 999px; background: rgba(0, 0, 0, 0.45); }
.qprog .fill { border-radius: 999px; background: linear-gradient(90deg, #16a34a, #4ade80); }
.qprog .txt { font-size: 9.5px; }
.qcard.ready { border-color: rgba(255, 197, 49, 0.7); animation: none; box-shadow: 0 0 0 1px rgba(255, 197, 49, 0.4), 0 0 20px rgba(255, 197, 49, 0.35); }

/* ---------- right column ---------- */
.auto-btn { width: 84px; height: 84px; border: 2px solid rgba(255, 255, 255, 0.85); background: radial-gradient(circle at 50% 30%, #7fb6ff, #2f5ce0 70%); box-shadow: 0 0 0 4px rgba(95, 176, 255, 0.25), 0 10px 22px rgba(0, 0, 0, 0.45); font-size: 19px; transition: transform 0.15s; }
.auto-btn:hover { transform: scale(1.05); }
.auto-btn.on { background: radial-gradient(circle at 50% 30%, #86efac, #16a34a 70%); box-shadow: 0 0 0 4px rgba(74, 222, 128, 0.35), 0 0 26px rgba(74, 222, 128, 0.45), 0 10px 22px rgba(0, 0, 0, 0.45); }
.auto-btn .ring { inset: -8px; border: 3px solid transparent; border-top-color: rgba(255, 255, 255, 0.95); border-right-color: rgba(255, 255, 255, 0.4); }
.mode-chip { border: none; border-radius: 999px; padding: 3px 12px; background: linear-gradient(180deg, #ffe37a, #ffb21c); box-shadow: 0 4px 10px rgba(0, 0, 0, 0.3); font-size: 12px; }
.auto-status { border: 1px solid var(--g-border); background: var(--g-bg); border-radius: 12px; font-size: 12px; font-weight: 600; color: var(--txt); box-shadow: 0 6px 14px rgba(0, 0, 0, 0.3); }
.round-btn { width: 54px; height: 54px; border: 1px solid var(--g-border-strong); background: var(--g-bg); box-shadow: 0 8px 16px rgba(0, 0, 0, 0.35), var(--g-hi); transition: transform 0.15s, box-shadow 0.15s; }
.round-btn:hover { transform: translateY(-2px); box-shadow: 0 0 0 2px rgba(95, 176, 255, 0.45), 0 8px 16px rgba(0, 0, 0, 0.35); }
.round-btn svg { width: 32px; height: 32px; }
.round-btn .lbl { bottom: -15px; font-size: 11px; font-weight: 600; }

/* ---------- skill dock ---------- */
.hud-skills { bottom: 20px; gap: 10px; padding: 10px 14px; align-items: center; background: var(--g-bg); border: 1px solid var(--g-border); border-radius: 24px; box-shadow: 0 14px 34px rgba(0, 0, 0, 0.45), var(--g-hi); }
.skill { width: 70px; height: 70px; border-radius: 18px; border: 2px solid rgba(255, 255, 255, 0.22); background: #1a2147; box-shadow: 0 6px 14px rgba(0, 0, 0, 0.45); }
.skill:hover { transform: translateY(-3px); box-shadow: 0 0 0 2px rgba(95, 176, 255, 0.55), 0 10px 18px rgba(0, 0, 0, 0.45); }
.skill.ult { width: 82px; height: 82px; border-radius: 22px; border: 2px solid #ffd76a; box-shadow: 0 0 0 3px rgba(255, 197, 49, 0.35), 0 0 22px rgba(255, 197, 49, 0.35), 0 6px 14px rgba(0, 0, 0, 0.45); }
.skill .cd { border-radius: inherit; background: conic-gradient(rgba(6, 10, 28, 0.74) var(--p, 0%), transparent 0); font-size: 22px; }
.skill .key { top: auto; bottom: 3px; left: auto; right: 4px; transform: none; font-family: var(--font); font-weight: 700; font-size: 11px; line-height: 16px; padding: 0 5px; border-radius: 6px; background: rgba(6, 10, 28, 0.82); border: 1px solid rgba(255, 255, 255, 0.25); }
.skill .slv { bottom: auto; top: 3px; left: 4px; transform: none; font-size: 10px; background: rgba(6, 10, 28, 0.75); border-radius: 6px; }
.skill.off-auto::after { border-radius: inherit; box-shadow: inset 0 0 0 2px #ff5d6c; }
.potion { width: 54px; height: 54px; border-radius: 16px; border: 2px solid rgba(255, 255, 255, 0.2); background: #1a2147; box-shadow: 0 6px 14px rgba(0, 0, 0, 0.45); }
.potion .cd { border-radius: inherit; }
.potion .key { font-family: var(--font); font-weight: 700; font-size: 11px; }
.potion .cnt { font-size: 14px; }

/* ---------- xp bar ---------- */
.hud-xp { height: 10px; background: rgba(6, 10, 28, 0.75); border-top: 1px solid rgba(255, 255, 255, 0.08); }
.hud-xp .fill { background: linear-gradient(90deg, #a855f7, #5fb0ff 60%, #67e8f9); box-shadow: 0 0 12px rgba(95, 176, 255, 0.7); }
.hud-xp .txt { font-size: 9.5px; font-weight: 600; letter-spacing: 0.3px; }

/* ---------- main menu dock ---------- */
.hud-menu { left: 14px; bottom: 20px; gap: 4px; padding: 8px 10px 6px; background: var(--g-bg); border: 1px solid var(--g-border); border-radius: 22px; box-shadow: 0 14px 34px rgba(0, 0, 0, 0.45), var(--g-hi); }
.mbtn { width: 66px; }
.mbtn:hover { transform: none; }
.mbtn .mi { width: 52px; height: 52px; border-radius: 16px; border: 1px solid rgba(255, 255, 255, 0.16); background: radial-gradient(circle at 50% 25%, rgba(255, 214, 120, 0.35), rgba(255, 170, 40, 0.08) 70%), rgba(255, 255, 255, 0.04); box-shadow: none; transition: transform 0.15s, box-shadow 0.15s, background 0.15s; }
.mbtn .mi svg { width: 38px; height: 38px; filter: drop-shadow(0 2px 2px rgba(0, 0, 0, 0.45)); }
.mbtn:hover .mi { transform: translateY(-3px); background: radial-gradient(circle at 50% 25%, rgba(255, 214, 120, 0.55), rgba(255, 170, 40, 0.15) 70%), rgba(255, 255, 255, 0.06); box-shadow: 0 0 0 2px rgba(255, 197, 49, 0.55), 0 8px 16px rgba(0, 0, 0, 0.35); }
.mbtn .ml { font-size: 11px; font-weight: 600; color: var(--txt); margin-top: 3px; }

/* ---------- log & session ---------- */
.hud-log { left: 16px; bottom: 116px; width: 380px; }
.log-line { font-size: 12.5px; font-weight: 500; color: var(--txt); background: linear-gradient(90deg, rgba(10, 14, 32, 0.78), rgba(10, 14, 32, 0.35)); border-left: 3px solid #5fb0ff; border-radius: 4px 10px 10px 4px; padding: 2px 10px; }
.log-line.loot { border-left-color: #ffb21c; }
.log-line.warn { border-left-color: #ff5d6c; }
.log-line.feed { border-left-color: #e040b0; }
.log-line .sys { font-weight: 700; border-radius: 4px; }
.session { border: 1px solid var(--g-border); background: var(--g-bg); border-radius: 999px; padding: 4px 14px; font-weight: 600; color: var(--txt); box-shadow: 0 6px 14px rgba(0, 0, 0, 0.3); }
.hud-br { bottom: 20px; }

/* ---------- toasts / notifications ---------- */
.toast { border: 1px solid var(--g-border-strong); background: var(--g-bg); border-radius: 14px; font-size: 15px; font-weight: 600; box-shadow: 0 12px 30px rgba(0, 0, 0, 0.45); }
.toast.error { background: linear-gradient(180deg, rgba(120, 20, 40, 0.92), rgba(80, 10, 26, 0.92)); border-color: rgba(255, 120, 140, 0.45); }
.toast.epic { background: linear-gradient(90deg, rgba(110, 40, 190, 0.94), rgba(40, 30, 120, 0.94)); border-color: rgba(255, 213, 79, 0.7); box-shadow: 0 0 24px rgba(180, 100, 255, 0.45), 0 12px 30px rgba(0, 0, 0, 0.45); }
.newgear { border: 1px solid rgba(255, 255, 255, 0.7); border-radius: 18px; background: linear-gradient(180deg, #f9fbff, #e8efff); box-shadow: 0 16px 40px rgba(0, 0, 0, 0.45); }

/* ---------- buttons ---------- */
.btn {
  border: none; border-radius: 12px; min-height: 38px; padding: 6px 18px; font-size: 16px;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.45), inset 0 -3px 0 rgba(0, 0, 0, 0.18), 0 4px 12px rgba(20, 40, 120, 0.25);
  transition: transform 0.08s, filter 0.12s, box-shadow 0.12s;
}
.btn:hover { filter: brightness(1.08); transform: translateY(-1px); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.5), inset 0 -3px 0 rgba(0, 0, 0, 0.18), 0 8px 18px rgba(20, 40, 120, 0.32); }
.btn:active { transform: translateY(1px); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.35), inset 0 -1px 0 rgba(0, 0, 0, 0.18), 0 2px 6px rgba(20, 40, 120, 0.25); }
.btn-sm { min-height: 30px; padding: 3px 12px; font-size: 13.5px; border-radius: 10px; }
.btn-lg { min-height: 50px; font-size: 20px; border-radius: 14px; }
.btn-xl { border-radius: 18px; }
.btn-dark { background: linear-gradient(180deg, #3a4578, #222a52); }
.btn-gray { background: linear-gradient(180deg, #e4e9f5, #c3cbe0); }
.icon-btn { width: 36px; height: 36px; border: none; border-radius: 12px; background: rgba(255, 255, 255, 0.18); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.35); transition: background 0.15s, transform 0.15s; }
.icon-btn:hover { background: rgba(255, 90, 110, 0.85); transform: rotate(90deg); }
.icon-btn svg { width: 20px; height: 20px; }

/* ---------- inputs ---------- */
.toggle { width: 50px; height: 28px; border: none; background: #cbd3e6; box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.25); }
.toggle::after { top: 3px; left: 3px; width: 22px; height: 22px; box-shadow: 0 2px 5px rgba(0, 0, 0, 0.3); }
.toggle.on { background: linear-gradient(90deg, #22c55e, #4ade80); }
.toggle.on::after { left: 25px; }
.inp { border: 1px solid #ccd5ee; border-radius: 10px; font-weight: 600; box-shadow: inset 0 1px 2px rgba(20, 40, 100, 0.08); transition: border-color 0.15s, box-shadow 0.15s; }
.inp:focus { border-color: #5fb0ff; box-shadow: 0 0 0 3px rgba(95, 176, 255, 0.25); }
.seg { border: none; border-radius: 12px; background: #e3e9f8; padding: 3px; gap: 2px; }
.seg button { border-radius: 9px; background: transparent; color: var(--w-ink-soft); }
.seg button.on { background: #fff; color: #2b59ff; box-shadow: 0 2px 8px rgba(40, 70, 160, 0.2); }

/* ---------- windows ---------- */
.backdrop { background: rgba(5, 8, 24, 0.5); backdrop-filter: blur(3px); }
.win, .dialog {
  border: 1px solid rgba(255, 255, 255, 0.75); border-radius: 24px; background: var(--w-bg); color: var(--w-ink);
  box-shadow: 0 0 0 1px rgba(10, 20, 60, 0.25), 0 30px 90px rgba(4, 8, 30, 0.6);
}
.win-head {
  padding: 12px 16px 12px 18px; border-bottom: none;
  background: radial-gradient(120% 140% at 0% 0%, rgba(255, 255, 255, 0.22), transparent 55%), linear-gradient(120deg, #3f6ff7, #6a4cf0 60%, #8a3fe0);
}
.win-head .wi svg { width: 34px; height: 34px; filter: drop-shadow(0 2px 3px rgba(0, 0, 0, 0.35)); }
.win-title { font-size: 25px; letter-spacing: 0.4px; }
.win-tabs { padding: 10px 16px 8px; gap: 6px; background: transparent; border-bottom: 1px solid var(--w-line); }
.tab { top: 0; border: none; border-radius: 999px; padding: 7px 16px; font-size: 14.5px; font-weight: 600; background: #e4eaf9; color: var(--w-ink-soft); transition: background 0.15s, color 0.15s; }
.tab:hover { background: #d6e0f8; color: var(--w-ink); }
.tab.active { background: #fff; color: #2b59ff; box-shadow: 0 2px 10px rgba(40, 70, 160, 0.2); }
.win-body::-webkit-scrollbar { width: 10px; }
.win-body::-webkit-scrollbar-thumb { background: #c3cff0; border: 2px solid #f3f6ff; }
.win-foot { border-top: 1px solid var(--w-line); background: transparent; }
.dialog .win-head { justify-content: flex-start; }

.card { border: 1px solid var(--w-line); border-radius: 16px; box-shadow: 0 2px 12px rgba(30, 50, 120, 0.06); }
.card h3 { font-size: 18px; color: #2b59ff; }
.chip { border: none; background: #e8eefc; color: #3554c8; }
.pbar { border: none; border-radius: 999px; background: #dfe6f6; box-shadow: inset 0 1px 2px rgba(20, 40, 100, 0.15); }
.pbar .fill { border-radius: 999px; }
.goal-row { border: 1px solid var(--w-line); border-radius: 14px; box-shadow: 0 1px 6px rgba(30, 50, 120, 0.05); }
.goal-row.done { background: #effdf3; border-color: #a7ebbb; }
.set-row { border: 1px solid var(--w-line); border-radius: 14px; }
.stat-row { background: #f3f6fd; border-radius: 10px; }
.enh-item, .recipe, .boss-item, .route-item, .pet-card, .mat-pill { border: 1px solid var(--w-line); box-shadow: 0 1px 6px rgba(30, 50, 120, 0.05); transition: transform 0.12s, box-shadow 0.12s, border-color 0.12s; }
.boss-item:hover, .pet-card:hover, .route-item:hover, .enh-item:hover { transform: translateY(-1px); box-shadow: 0 6px 16px rgba(30, 50, 120, 0.12); }
.boss-item.sel, .pet-card.sel, .enh-item.sel { border-color: #5f8bff; box-shadow: 0 0 0 3px rgba(95, 139, 255, 0.25); }
.shop-card { border: 1px solid var(--w-line); box-shadow: 0 2px 12px rgba(30, 50, 120, 0.07); transition: transform 0.12s, box-shadow 0.12s; }
.shop-card:hover { transform: translateY(-2px); box-shadow: 0 10px 24px rgba(30, 50, 120, 0.15); }
.shop-card .tag { border: none; box-shadow: 0 3px 8px rgba(0, 0, 0, 0.25); }
.world-card { border: 1px solid rgba(20, 30, 70, 0.25); box-shadow: 0 6px 18px rgba(20, 40, 100, 0.15); transition: transform 0.15s, box-shadow 0.15s; }
.world-card:hover { transform: translateY(-3px); box-shadow: 0 14px 30px rgba(20, 40, 100, 0.25); }
.world-card.current { box-shadow: 0 0 0 3px #ffc531, 0 14px 30px rgba(20, 40, 100, 0.25); }
.lb-table td { border-color: var(--w-line) !important; }
.lb-table tr.me td { background: #fff8e1; border-color: #ffd36a !important; }
.hero-preview, .pet-preview, .boss-preview { border: 1px solid var(--w-line); border-radius: 20px; }
.kbd { border: 1px solid #b9c3e0; border-radius: 6px; box-shadow: 0 2px 0 #b9c3e0; }

/* ---------- item slots ---------- */
.slot { border: 2px solid rgba(15, 22, 60, 0.45); border-radius: 14px; box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.28), 0 4px 10px rgba(10, 20, 60, 0.18); }
.slot:hover { transform: translateY(-2px); box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.4), 0 8px 16px rgba(10, 20, 60, 0.28); }
.slot.sel { outline: 3px solid #ffc531; outline-offset: 2px; }

/* ---------- tooltip ---------- */
.tooltip { border: 1px solid rgba(255, 255, 255, 0.14); background: linear-gradient(180deg, rgba(20, 26, 56, 0.97), rgba(10, 14, 34, 0.97)); border-radius: 16px; box-shadow: 0 18px 40px rgba(0, 0, 0, 0.55); }
.tooltip .tt-sep { background: rgba(255, 255, 255, 0.1); }

/* ---------- title / character select ---------- */
.title-screen { background: radial-gradient(ellipse at 50% 30%, rgba(8, 12, 35, 0.05), rgba(8, 12, 35, 0.6)); }
.char-slot { border: 1px solid rgba(255, 255, 255, 0.8); border-radius: 24px; background: linear-gradient(180deg, rgba(249, 251, 255, 0.96), rgba(226, 235, 255, 0.96)); box-shadow: 0 20px 50px rgba(0, 0, 0, 0.4); }
.char-slot:hover { box-shadow: 0 0 0 3px rgba(255, 197, 49, 0.7), 0 26px 60px rgba(0, 0, 0, 0.45); }
.char-slot.empty { background: rgba(255, 255, 255, 0.08); border: 2px dashed rgba(255, 255, 255, 0.55); }
.char-slot.empty:hover { background: rgba(255, 255, 255, 0.16); }
.class-card { border: 1px solid rgba(255, 255, 255, 0.85); border-radius: 24px; box-shadow: 0 20px 50px rgba(0, 0, 0, 0.4); }
.class-card.sel { box-shadow: 0 0 0 4px #ffc531, 0 0 30px rgba(255, 197, 49, 0.45), 0 20px 50px rgba(0, 0, 0, 0.4); }
.create-row { border: 1px solid var(--g-border); background: var(--g-bg); border-radius: 20px; }
.server-pill { border: 1px solid var(--g-border); background: var(--g-bg); }

/* ---------- loading / power save ---------- */
.loading { background: rgba(6, 10, 30, 0.7); backdrop-filter: blur(4px); }
.powersave { background: radial-gradient(ellipse at 50% 35%, #111a3d, #04060e); }
.powersave .ps-stat { border-radius: 16px; background: rgba(255, 255, 255, 0.04); border: 1px solid rgba(255, 255, 255, 0.1); }

/* ---------- docked side panels (character / backpack stay open while playing) ---------- */
.win.dock {
  left: auto; top: 150px; bottom: 112px; height: auto; max-height: none; transform: none;
  border-radius: 22px; animation: dockInR 0.22s both; z-index: 9;
  box-shadow: 0 0 0 1px rgba(10, 20, 60, 0.25), 0 20px 60px rgba(4, 8, 30, 0.5);
}
.win.dock-right { right: 112px; width: 560px; }
.win.dock-left { left: 14px; width: 600px; animation-name: dockInL; }
@keyframes dockInR { from { transform: translateX(40px); opacity: 0; } to { transform: none; opacity: 1; } }
@keyframes dockInL { from { transform: translateX(-40px); opacity: 0; } to { transform: none; opacity: 1; } }
.win.dock .win-head { padding: 8px 12px 8px 14px; }
.win.dock .win-title { font-size: 21px; }
.win.dock .win-head .wi svg { width: 28px; height: 28px; }
.win.dock .dock-hint { font-size: 11px; font-weight: 600; color: rgba(255, 255, 255, 0.75); margin-right: 6px; }
.win.dock .win-tabs { padding: 8px 12px 6px; }
.win.dock .tab { padding: 5px 12px; font-size: 13px; }
.win.dock .win-body { padding: 12px; }
/* compact character layout */
.win.dock .char-layout { grid-template-columns: 1fr; height: auto; }
.win.dock .hero-preview { height: 300px; }
.win.dock .equip-area { grid-template-columns: 82px 1fr 82px; }
.win.dock .stat-list { grid-template-columns: 1fr 1fr; gap: 4px 10px; }
.win.dock .stat-row { font-size: 13px; padding: 2px 6px; }
.win.dock .grid2, .win.dock .grid3 { grid-template-columns: 1fr; }
.win.dock .enh-list { grid-template-columns: 1fr 1fr; }
.win.dock .item-grid { grid-template-columns: repeat(auto-fill, 66px); gap: 8px; }
.win.dock .item-grid .slot { width: 66px; height: 66px; }
.win.dock .grid4 { grid-template-columns: 1fr 1fr; }
.win.dock .grid5 { grid-template-columns: 1fr 1fr 1fr; }
.win.dock .seg button { padding: 5px 9px; }
.active-chip { font-size: 11.5px; font-weight: 700; color: #052e16; padding: 3px 10px; border-radius: 999px; background: linear-gradient(180deg, #86efac, #22c55e); box-shadow: 0 4px 10px rgba(0, 0, 0, 0.3), 0 0 12px rgba(74, 222, 128, 0.45); white-space: nowrap; }

/* ---------- fishing ---------- */
.fish-bar { position: absolute; left: 50%; bottom: 150px; transform: translateX(-50%); width: 460px; padding: 10px 16px 12px; display: none; flex-direction: column; align-items: center; gap: 6px; background: var(--g-bg); border: 1px solid rgba(124, 243, 255, 0.45); border-radius: 18px; box-shadow: 0 0 24px rgba(124, 243, 255, 0.25), 0 12px 30px rgba(0, 0, 0, 0.45); cursor: pointer; pointer-events: auto; }
.fish-bar.show { display: flex; animation: fadeIn 0.15s; }
.fb-title { font-family: var(--font-title); font-size: 20px; color: #fff59d; text-shadow: 0 2px 4px rgba(0, 0, 0, 0.6); }
.fb-track { position: relative; width: 100%; height: 22px; border-radius: 999px; background: rgba(0, 0, 0, 0.5); box-shadow: inset 0 1px 4px rgba(0, 0, 0, 0.7); overflow: hidden; }
.fb-zone { position: absolute; top: 0; bottom: 0; background: linear-gradient(180deg, #4ade80, #16a34a); opacity: 0.9; }
.fb-perfect { position: absolute; top: 0; bottom: 0; background: linear-gradient(180deg, #fde68a, #f59e0b); box-shadow: 0 0 10px rgba(253, 230, 138, 0.9); }
.fb-marker { position: absolute; top: -3px; bottom: -3px; width: 6px; margin-left: -3px; border-radius: 3px; background: #ffffff; box-shadow: 0 0 8px #fff, 0 0 2px #000; }
.fb-hint { font-size: 11.5px; font-weight: 600; color: var(--txt-dim); }
.fish-card { position: absolute; left: 50%; bottom: 150px; transform: translateX(-50%); min-width: 300px; padding: 10px 18px; display: none; flex-direction: column; align-items: center; gap: 2px; background: var(--g-bg); border: 1px solid var(--g-border-strong); border-radius: 18px; box-shadow: 0 12px 30px rgba(0, 0, 0, 0.45); pointer-events: none; }
.fish-card.show { display: flex; animation: slideUpC 0.25s both; }
.fc-title { font-family: var(--font-title); font-size: 18px; color: #fff59d; }
.fc-title.bad { color: #ff8a80; }
.fc-name { font-weight: 700; font-size: 17px; }
.fc-sub { font-size: 13px; color: var(--txt-dim); font-weight: 600; }
.fc-new { font-size: 12px; font-weight: 700; color: #052e16; background: linear-gradient(180deg, #86efac, #22c55e); padding: 1px 10px; border-radius: 999px; }
.fc-lvl { font-size: 11px; color: var(--txt-dim); margin-top: 3px; }
.slot.ench { box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.35), 0 0 0 2px #e879f9, 0 0 14px rgba(232, 121, 249, 0.75); }
.slot.ench::after { content: '✦'; position: absolute; top: -4px; left: 4px; font-size: 15px; color: #fdf4ff; text-shadow: 0 0 6px #e879f9, 0 1px 2px #000; }
