:root {
  --bg: #0b0f1c; --panel: rgba(18, 24, 42, 0.95); --panel2: rgba(30, 38, 64, 0.95); --border: #5a78b8; --gold: #e8c060;
  --text: #e8ecf8; --dim: #8a93ad; --head1: #6a8fd0; --head2: #34508e;
  --normal: #e8e8e8; --magic: #8888ff; --rare: #ffff77; --unique: #e8883a; --gem: #1ba29b; --cur: #aa9e82;
}
* { box-sizing: border-box; }
html, body { margin: 0; height: 100%; overflow: hidden; background: var(--bg); color: var(--text); font-family: "Trebuchet MS", "Segoe UI", Arial, sans-serif; font-size: 13px; user-select: none; }
#bg { position: fixed; inset: 0; z-index: 0; }
#app { position: fixed; inset: 0; z-index: 1; }
#game { position: absolute; inset: 0; display: block; image-rendering: auto; }
.ui-root { position: absolute; inset: 0; pointer-events: none; }
.ui-root > * { pointer-events: auto; }
button { font-family: inherit; }
input, select { font-family: inherit; background: #0e1424; color: var(--text); border: 1px solid #3a4a70; border-radius: 4px; padding: 6px 8px; font-size: 13px; }
input:focus { outline: 1px solid var(--gold); }
.dim { color: var(--dim); } .small { font-size: 11px; } .bad { color: #ff6a6a !important; } .good { color: #8fe08f; } .aug { color: #8888ff; } .err { color: #ff8a8a; min-height: 18px; }
.d-fire { color: #ff7a2a; } .d-cold { color: #7ad0ff; } .d-light { color: #fff27a; } .d-chaos { color: #c77dff; } .d-phys { color: #fff; }
.c-str { color: #ff8a7a; } .c-dex { color: #8fe08f; } .c-int { color: #8ab8ff; }
.row { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin: 6px 0; }
.hidden { display: none !important; }

/* ---------- buttons ---------- */
.btn { background: linear-gradient(#5a7ac8, #2e4a8a); color: #fff; border: 1px solid #a0b8f0; border-radius: 6px; padding: 5px 12px; cursor: pointer; font-weight: bold; text-shadow: 0 1px 0 #000; box-shadow: inset 0 1px 0 rgba(255,255,255,0.3); }
.btn:hover { background: linear-gradient(#7a9ae8, #3e5aa8); }
.btn.big { font-size: 15px; padding: 8px 20px; }
.btn.tiny { padding: 2px 8px; font-size: 11px; }
.btn.on { background: linear-gradient(#e8c060, #a07a20); border-color: #ffe8a0; color: #221a00; text-shadow: none; }
.btn.danger { background: linear-gradient(#c85a5a, #8a2e2e); border-color: #f0a0a0; }
.btn.link { background: none; border: none; box-shadow: none; color: #9ad0ff; text-decoration: underline; }
.btn.glow { box-shadow: 0 0 12px #c080ff; }

/* ---------- title / login ---------- */
.screen { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: flex-start; padding-top: 5vh; overflow: auto; }
.logo { text-align: center; margin-bottom: 18px; filter: drop-shadow(0 4px 6px rgba(0,0,0,0.5)); }
.logo span { font-size: 72px; font-weight: 900; font-family: "Arial Black", "Trebuchet MS", sans-serif; -webkit-text-stroke: 3px #3a1a00; }
.logo-maple { background: linear-gradient(#ffe070, #ff8a20); -webkit-background-clip: text; color: transparent; }
.logo-poe { background: linear-gradient(#e0e0e0, #8a6a4a); -webkit-background-clip: text; color: transparent; margin-left: 6px; }
.logo-sub { color: #fff; font-size: 16px; letter-spacing: 4px; text-shadow: 0 2px 4px #000; }
.panel { background: var(--panel); border: 2px solid var(--border); border-radius: 12px; padding: 18px 22px; min-width: 360px; max-width: 92vw; box-shadow: 0 10px 40px rgba(0,0,0,0.6); }
.panel h2 { margin: 0 0 12px; color: var(--gold); }
.login { display: flex; flex-direction: column; gap: 10px; width: 380px; }
.char-list { display: flex; gap: 12px; flex-wrap: wrap; justify-content: center; max-width: 900px; }
.char-card { background: var(--panel2); border: 1px solid #3a4a70; border-radius: 10px; padding: 10px; width: 160px; text-align: center; cursor: pointer; }
.char-card:hover { border-color: var(--gold); }
.char-card-name { font-weight: bold; font-size: 15px; color: var(--gold); }
.preview { display: block; margin: 0 auto; }
.create { width: 860px; }
.class-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 8px; }
.class-card { background: var(--panel2); border: 2px solid; border-radius: 10px; padding: 6px; text-align: center; cursor: pointer; opacity: 0.75; }
.class-card.on { opacity: 1; box-shadow: 0 0 14px rgba(255,220,120,0.5); background: #2a3660; }
.class-desc { min-height: 90px; margin: 10px 0; }
.class-desc h3 { margin: 4px 0; }

/* ---------- windows ---------- */
.window { position: absolute; display: none; flex-direction: column; background: var(--panel); border: 2px solid var(--border); border-radius: 10px; box-shadow: 0 8px 30px rgba(0,0,0,0.65); max-height: 92vh; z-index: 50; }
.win-head { display: flex; align-items: center; justify-content: space-between; background: linear-gradient(var(--head1), var(--head2)); border-radius: 8px 8px 0 0; padding: 5px 10px; cursor: move; font-weight: bold; color: #fff; text-shadow: 0 1px 2px #000; }
.win-title { font-size: 14px; }
.win-close { background: #c84a4a; border: 1px solid #fff; color: #fff; border-radius: 4px; cursor: pointer; font-size: 11px; width: 20px; height: 20px; padding: 0; }
.win-body { padding: 10px; overflow: auto; }
.w-inv { width: 540px; } .w-cur { width: 330px; } .w-char { width: 560px; } .w-skills { width: 560px; }
.w-tree { width: 94vw; height: 92vh; } .w-tree .win-body { display: flex; flex-direction: column; flex: 1; padding: 0; position: relative; overflow: hidden; }
.w-npc { width: 520px; } .w-stash { width: 520px; } .w-sf { width: 340px; } .w-device { width: 380px; } .w-atlas { width: 820px; } .w-market { width: 560px; } .w-ladder { width: 600px; } .w-trade { width: 560px; } .w-menu { width: 320px; } .w-help { width: 640px; }
.npc-say { background: #1e2848; border-left: 3px solid var(--gold); padding: 6px 10px; margin-bottom: 8px; font-style: italic; color: #d8dcf0; }
.tabs { display: flex; gap: 4px; margin-bottom: 6px; flex-wrap: wrap; }
.tab { background: #202a48; color: #c8d0e8; border: 1px solid #3a4a70; border-radius: 6px 6px 0 0; padding: 4px 12px; cursor: pointer; }
.tab.on { background: #3a4a80; color: #fff; border-color: var(--gold); }
h4 { margin: 10px 0 4px; color: var(--gold); font-size: 13px; }

/* ---------- inventory ---------- */
.inv-top { display: flex; gap: 10px; }
.doll { position: relative; flex: none; width: 352px; height: 264px; background: radial-gradient(#1c2440, #0e1222); border: 1px solid #2a3658; border-radius: 8px; }
.equip-slot { position: absolute; background: rgba(10,14,28,0.9); border: 1px solid #3a4a70; border-radius: 4px; display: flex; align-items: center; justify-content: center; cursor: pointer; overflow: visible; }
.equip-slot:hover { border-color: var(--gold); }
.equip-slot.disabled { border-color: #c04040; background: rgba(60,10,10,0.8); }
.equip-slot img { max-width: 92%; max-height: 92%; pointer-events: none; }
.slot-label { color: #4a5678; font-size: 10px; text-align: center; }
.eq-sockets { position: absolute; display: grid; grid-template-columns: 1fr; gap: 3px; pointer-events: auto; }
.eq-sockets.two { grid-template-columns: 1fr 1fr; }
.eq-sock { width: 16px; height: 16px; border-radius: 50%; border: 2px solid #111; box-shadow: inset 0 0 4px #000; position: relative; }
.eq-sock.linked::after { content: ''; position: absolute; left: 5px; top: 15px; width: 3px; height: 5px; background: #e8c060; }
.eq-sockets.two .eq-sock.linked::after { left: 15px; top: 5px; width: 5px; height: 3px; }
.eq-gem { position: absolute; inset: 1px; border-radius: 50%; border: 1px solid #fff; box-shadow: 0 0 6px #fff; }
.eq-gem.sup { border-radius: 2px; transform: rotate(45deg) scale(0.8); }
.eq-stars { position: absolute; right: 2px; bottom: 1px; color: #ffe070; font-size: 10px; text-shadow: 0 0 3px #000; }
.inv-side { flex: 1; min-width: 150px; display: flex; flex-direction: column; gap: 6px; }
.mini-stats > div { display: flex; justify-content: space-between; font-size: 12px; }
.inv-label { color: var(--dim); font-size: 11px; }
.inv-flasks { display: flex; gap: 3px; }
.inv-grid { position: relative; margin-top: 8px; background-color: #0a0e1a; background-image: linear-gradient(#1e2640 1px, transparent 1px), linear-gradient(90deg, #1e2640 1px, transparent 1px); background-size: 40px 40px; border: 1px solid #3a4a70; }
.inv-item { position: absolute; display: flex; align-items: center; justify-content: center; background: rgba(40,50,80,0.35); cursor: pointer; border: 1px solid transparent; }
.inv-item img { width: 100%; height: 100%; pointer-events: none; }
.inv-item:hover { background: rgba(120,140,220,0.35); border-color: #8ab0ff; }
.inv-item.r-magic { background: rgba(60,60,160,0.35); } .inv-item.r-rare { background: rgba(140,130,40,0.3); } .inv-item.r-unique { background: rgba(160,80,20,0.35); } .inv-item.r-gem { background: rgba(20,100,100,0.35); }
.inv-item.unusable { background: rgba(160,30,30,0.4); }
.gem-lvl { position: absolute; right: 2px; bottom: 0; font-size: 10px; font-weight: bold; color: #fff; text-shadow: 0 0 2px #000, 0 0 2px #000; }
.sock-badge { position: absolute; left: 2px; top: 1px; font-size: 9px; color: #ffe070; text-shadow: 0 0 2px #000; }
.inv-foot { margin-top: 6px; display: flex; align-items: center; gap: 4px; }
.meso-ico { display: inline-block; width: 14px; height: 14px; border-radius: 50%; background: radial-gradient(circle at 35% 35%, #fff6a0, #e0a020 60%, #8a5a10); border: 1px solid #5a3a00; vertical-align: middle; margin-right: 4px; }
.cursor-item { position: fixed; pointer-events: none !important; z-index: 1000; transform: translate(-50%, -50%); opacity: 0.9; }
.cur-cursor { width: 36px; height: 36px; }

.cur-grid { display: grid; grid-template-columns: repeat(6, 1fr); gap: 6px; }
.cur-cell { position: relative; background: #141a30; border: 1px solid #3a4a70; border-radius: 6px; height: 48px; display: flex; align-items: center; justify-content: center; cursor: pointer; }
.cur-cell:hover { border-color: var(--gold); }
.cur-cell img { width: 38px; height: 38px; pointer-events: none; }
.cur-cell span { position: absolute; right: 3px; bottom: 1px; font-weight: bold; font-size: 11px; text-shadow: 0 0 3px #000; }
.cur-cell.none { opacity: 0.3; }
.cur-cell.mini { height: 34px; width: 38px; display: inline-flex; } .cur-cell.mini img { width: 26px; height: 26px; }
.stash-cur { display: flex; flex-wrap: wrap; gap: 3px; }

/* ---------- tooltip (PoE style) ---------- */
.tooltip { position: fixed; z-index: 2000; pointer-events: none !important; max-width: 420px; }
.tt { background: rgba(4, 4, 8, 0.96); border: 1px solid #6a5a3a; text-align: center; font-family: "Fontin SmallCaps", "Trebuchet MS", serif; min-width: 260px; box-shadow: 0 0 18px rgba(0,0,0,0.8); }
.tt-head { padding: 6px 12px; font-size: 16px; font-weight: bold; background: linear-gradient(rgba(255,255,255,0.08), rgba(0,0,0,0)); border-bottom: 1px solid #3a3020; }
.tt-normal { border-color: #8a8a8a; } .tt-magic { border-color: #5a5ad8; } .tt-rare { border-color: #b8a040; } .tt-unique { border-color: #b86a2a; } .tt-gem { border-color: #1b8a8a; } .tt-currency { border-color: #8a7a5a; }
.tt-body { padding: 4px 10px 8px; color: #8888ff; font-size: 13px; }
.tt-sec { padding: 4px 0; border-bottom: 1px solid #2a2418; color: #8a8a8a; }
.tt-sec:last-child { border-bottom: none; }
.tt-sec b { color: #fff; } .tt-sec b.aug { color: #8888ff; } .tt-sec b.bad { color: #d02020; }
.mod { color: #8888ff; } .corrupt { color: #d02020; font-weight: bold; } .corrupt-imp { color: #d05050; } .flavor { color: #af6025; font-style: italic; } .hint { color: #7a7a7a; font-size: 11px; } .price { color: #ffe070; }
.tier { color: #5a5a5a; font-size: 10px; }
.stars { color: #ffd040; font-size: 12px; letter-spacing: -1px; } .stars .dim { color: #3a3a3a; }
.gemdesc { color: #1ba29b; }
.sockets { display: flex; align-items: center; justify-content: center; gap: 0; }
.sock { width: 14px; height: 14px; border-radius: 50%; border: 2px solid #111; display: inline-block; position: relative; }
.sock i { position: absolute; inset: 2px; border-radius: 50%; border: 1px solid #fff; }
.link { color: #e8c060; font-size: 10px; margin: 0 -1px; }
.tt-node .tt-head { color: #e8dcc0; } .tt-node.keystone .tt-head { color: #ffb050; } .tt-node.notable .tt-head { color: #f0d080; }
.tt-node .mod { color: #8aa8ff; }

/* ---------- HUD (Maple status bar) ---------- */
.hud { position: absolute; left: 0; right: 0; bottom: 0; background: linear-gradient(#3a4870, #1a2238); border-top: 2px solid #8aa0d8; padding: 4px 8px 0; box-shadow: 0 -4px 20px rgba(0,0,0,0.4); }
.hud-row { display: flex; align-items: center; gap: 12px; }
.hud-info { min-width: 110px; }
.hud-lvl { font-weight: 900; font-size: 18px; color: #ffe070; text-shadow: 0 2px 0 #5a3a00, 0 0 6px #000; font-family: "Arial Black", sans-serif; }
.hud-name { color: #fff; font-weight: bold; font-size: 12px; }
.hud-bars { display: flex; flex-direction: column; gap: 3px; width: 320px; }
.bar { position: relative; height: 16px; background: #0a0e18; border: 1px solid #000; border-radius: 8px; overflow: hidden; box-shadow: inset 0 2px 4px rgba(0,0,0,0.8); }
.bar-fill { position: absolute; left: 0; top: 0; bottom: 0; border-radius: 8px; transition: width 0.12s; }
.bar-text { position: absolute; inset: 0; text-align: center; font-size: 11px; font-weight: bold; line-height: 15px; color: #fff; text-shadow: 0 0 3px #000, 0 0 2px #000; }
.bar-hp .bar-fill { background: linear-gradient(#ff8a8a, #d8202a 60%, #8a0a1a); }
.bar-mp .bar-fill { background: linear-gradient(#8ab8ff, #2a5ad8 60%, #0a2a8a); }
.bar-es .bar-fill { background: linear-gradient(#e0e8ff, #8a9ae8 60%, #4a5aa8); } .bar-es { height: 10px; } .bar-es .bar-text { font-size: 9px; line-height: 9px; }
.bar-xp { height: 12px; margin: 4px 0 3px; border-radius: 6px; } .bar-xp .bar-fill { background: linear-gradient(#fff6a0, #e8c020 60%, #8a6a00); border-radius: 6px; } .bar-xp .bar-text { font-size: 10px; line-height: 11px; }
.hud-flasks { display: flex; gap: 3px; }
.flask-slot { position: relative; width: 34px; height: 60px; background: #0c1020; border: 1px solid #4a5a88; border-radius: 5px; display: flex; align-items: center; justify-content: center; cursor: pointer; }
.flask-slot img { width: 30px; height: 58px; pointer-events: none; }
.flask-slot.active { border-color: #ffe070; box-shadow: 0 0 10px #ffe070; }
.flask-slot.empty img { opacity: 0.45; }
.slot-key { position: absolute; left: 2px; top: 0; font-size: 10px; font-weight: bold; color: #ffe070; text-shadow: 0 0 2px #000; z-index: 2; }
.hud-slots { display: flex; gap: 4px; margin-left: auto; }
.slot { position: relative; width: 50px; height: 50px; background: #0c1020; border: 1px solid #4a5a88; border-radius: 6px; cursor: pointer; display: flex; align-items: center; justify-content: center; }
.slot.on { border-color: #bfe6ff; box-shadow: 0 0 10px #bfe6ff; }
.slot-icon { width: 40px; height: 40px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-weight: 900; font-size: 12px; color: #fff; text-shadow: 0 0 3px #000, 0 0 3px #000; border: 1px solid #000; }
.slot-empty { width: 40px; height: 40px; border-radius: 50%; background: #151b30; }
.slot-cd { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; font-weight: 900; color: #fff; text-shadow: 0 0 3px #000; pointer-events: none; }
.slot.cooling .slot-icon { filter: grayscale(0.8) brightness(0.5); }
.hud-buffs { position: absolute; right: 10px; top: 44px; display: flex; flex-direction: column; gap: 3px; align-items: flex-end; pointer-events: none !important; }
.buff { background: rgba(10,20,40,0.75); border: 1px solid #5a78b8; border-radius: 4px; padding: 2px 8px; font-size: 11px; display: flex; gap: 8px; }
.buff i { color: #ffe070; font-style: normal; }
.hud-menu { position: absolute; right: 10px; top: 8px; display: flex; gap: 3px; flex-wrap: wrap; justify-content: flex-end; max-width: 60vw; }
.hud-menu button { background: rgba(40,56,100,0.85); color: #dfe6ff; border: 1px solid #5a78b8; border-radius: 5px; padding: 3px 7px; font-size: 11px; cursor: pointer; }
.hud-menu button:hover { background: #4a68b8; }
.hud-meso { position: absolute; right: 250px; bottom: 100px; background: rgba(10,20,40,0.75); border: 1px solid #5a78b8; border-radius: 12px; padding: 2px 10px; font-weight: bold; color: #ffe070; }
.online { position: absolute; left: 244px; top: 12px; font-size: 11px; color: #8fe08f; text-shadow: 0 0 3px #000; pointer-events: none !important; }
.party-frame { position: absolute; left: 10px; top: 200px; display: flex; flex-direction: column; gap: 4px; }
.party-title { color: #8fe08f; font-weight: bold; text-shadow: 0 0 3px #000; }
.party-m { background: rgba(10,20,40,0.8); border: 1px solid #3a6a3a; border-radius: 5px; padding: 3px 6px; width: 180px; font-size: 11px; }
.party-zone { color: var(--dim); font-size: 10px; }
.party-hp { height: 5px; background: #300; border-radius: 3px; overflow: hidden; } .party-hp i { display: block; height: 100%; background: #e03a3a; }
.invite { position: absolute; left: 50%; top: 20%; transform: translateX(-50%); background: var(--panel); border: 2px solid var(--gold); border-radius: 10px; padding: 12px 18px; display: flex; gap: 10px; align-items: center; z-index: 900; }

/* ---------- chat ---------- */
.chat { position: absolute; left: 8px; bottom: 92px; width: 420px; display: flex; flex-direction: column; }
.chat-log { max-height: 170px; overflow-y: auto; background: rgba(0,0,0,0.35); border-radius: 6px 6px 0 0; padding: 4px 6px; font-size: 12px; text-shadow: 0 1px 2px #000; scrollbar-width: thin; }
.chat-line { margin: 1px 0; word-wrap: break-word; }
.chat-input { background: rgba(0,0,0,0.55); border: 1px solid #3a4a70; border-radius: 0 0 6px 6px; font-size: 12px; }

.toasts { position: absolute; left: 50%; top: 18%; transform: translateX(-50%); display: flex; flex-direction: column; align-items: center; gap: 4px; pointer-events: none !important; z-index: 1500; }
.toast { background: rgba(0,0,0,0.75); border: 1px solid #5a78b8; border-radius: 8px; padding: 5px 14px; font-weight: bold; transition: opacity 0.5s, transform 0.5s; }
.toast.fade { opacity: 0; transform: translateY(-10px); }
.death { position: absolute; inset: 0; background: radial-gradient(rgba(60,0,0,0.3), rgba(0,0,0,0.85)); display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 14px; z-index: 1800; }
.death-title { font-size: 56px; font-weight: 900; color: #d02020; text-shadow: 0 0 20px #000; font-family: serif; }
.death-sub { color: #ccc; }

/* ---------- panels ---------- */
.char-head { text-align: center; margin-bottom: 6px; } .char-name { font-size: 20px; color: var(--gold); font-weight: bold; }
.stat-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.stat-row { display: flex; justify-content: space-between; gap: 8px; padding: 1px 0; border-bottom: 1px dotted #26304c; }
.ks-list { display: flex; flex-wrap: wrap; gap: 4px; } .ks { background: #3a2a10; color: #ffb050; border: 1px solid #8a6a3a; border-radius: 4px; padding: 1px 6px; font-size: 11px; text-transform: capitalize; }
.skill-table { width: 100%; border-collapse: collapse; font-size: 12px; } .skill-table th { text-align: left; color: var(--gold); border-bottom: 1px solid #3a4a70; } .skill-table td { padding: 2px 4px; border-bottom: 1px dotted #26304c; }
.skill-row { display: flex; gap: 10px; align-items: center; padding: 6px; border-bottom: 1px solid #26304c; }
.skill-gem { width: 26px; height: 26px; border-radius: 50%; border: 2px solid #000; box-shadow: inset 0 0 6px rgba(255,255,255,0.6); flex: none; }
.skill-info { flex: 1; }
.bind-keys { display: flex; gap: 2px; }
.keybtn { width: 22px; height: 22px; padding: 0; background: #1c2440; color: #aab; border: 1px solid #3a4a70; border-radius: 4px; cursor: pointer; font-weight: bold; }
.keybtn.on { background: var(--gold); color: #221a00; }
.shop-list { display: flex; flex-direction: column; gap: 2px; max-height: 52vh; overflow-y: auto; }
.shop-row { display: flex; gap: 8px; align-items: center; padding: 4px 6px; background: #141a30; border: 1px solid #26304c; border-radius: 5px; cursor: pointer; }
.shop-row:hover { border-color: var(--gold); background: #1c2444; }
.shop-row.here { border-color: #8fe08f; }
.shop-ico { width: 30px; height: 30px; object-fit: contain; }
.shop-name { flex: 1; font-weight: bold; }
.shop-price { color: #ffe070; font-weight: bold; }
.sf-wrap { display: flex; justify-content: center; margin: 8px 0; }
.sf-slot { width: 100px; height: 140px; border: 2px dashed #5a78b8; border-radius: 8px; display: flex; align-items: center; justify-content: center; cursor: pointer; background: radial-gradient(#243058, #0c1020); }
.sf-slot img { max-width: 90px; max-height: 130px; pointer-events: none; }
.sf-stars { text-align: center; font-size: 18px; color: #333; } .sf-stars .on { color: #ffd040; text-shadow: 0 0 6px #ffd040; }
.sf-info { display: flex; flex-direction: column; align-items: center; gap: 3px; } .boom { color: #ff5050; font-weight: bold; }
.atlas-head { color: var(--gold); font-weight: bold; margin-bottom: 6px; }
.atlas-grid { display: grid; grid-template-columns: repeat(16, 1fr); gap: 3px; }
.atlas-col { display: flex; flex-direction: column; gap: 3px; }
.atlas-tier { text-align: center; font-weight: bold; border-radius: 4px; } .atlas-tier.white { color: #e8e8e8; } .atlas-tier.yellow { color: #ffe070; } .atlas-tier.red { color: #ff6a5a; }
.atlas-map { background: #141a30; border: 1px solid #26304c; border-radius: 4px; font-size: 9px; padding: 3px 2px; text-align: center; min-height: 28px; }
.atlas-map.done { border-color: #e8c060; color: #ffe8a0; background: #2a2410; }
.atlas-passives { display: grid; grid-template-columns: repeat(4, 1fr); gap: 5px; }
.ap { background: #141a30; border: 1px solid #26304c; border-radius: 5px; padding: 5px; font-size: 11px; } .ap.on { border-color: #e8c060; background: #2a2410; } .ap.can { border-color: #8fe08f; }
.quest { padding: 6px; border-bottom: 1px solid #26304c; } .quest.done b { color: #8fe08f; }
.market-list { max-height: 40vh; overflow-y: auto; display: flex; flex-direction: column; gap: 2px; } .small-list { max-height: 18vh; }
.ladder { width: 100%; border-collapse: collapse; } .ladder th { color: var(--gold); text-align: left; } .ladder td { padding: 3px 6px; border-bottom: 1px dotted #26304c; } .ladder tr.me td { color: #ffe070; }
.trade-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.trade-side { background: #10162a; border: 1px solid #26304c; border-radius: 6px; padding: 6px; min-height: 160px; }
.trade-items { display: flex; flex-wrap: wrap; gap: 3px; min-height: 90px; }
.modal { position: absolute; inset: 0; background: rgba(0,0,0,0.5); display: flex; align-items: center; justify-content: center; z-index: 1900; }
.modal-box { background: var(--panel); border: 2px solid var(--gold); border-radius: 10px; padding: 14px; }
.help h3 { color: var(--gold); margin: 10px 0 4px; } .help p { margin: 4px 0; line-height: 1.45; }

/* ---------- tree ---------- */
.tree-bar { display: flex; gap: 12px; align-items: center; padding: 6px 10px; background: #141a30; border-bottom: 1px solid #3a4a70; }
.tree-points { color: var(--gold); font-size: 14px; } .tree-points b { font-size: 18px; }
.tree-search { width: 260px; }
.tree-canvas { flex: 1; width: 100%; height: 100%; display: block; cursor: grab; }
.asc-panel { position: absolute; right: 12px; top: 52px; width: 420px; max-height: 80%; overflow: auto; background: var(--panel); border: 2px solid #c080ff; border-radius: 10px; padding: 12px; }
.asc-panel h3 { margin: 0 0 6px; color: #e0b0ff; }
.asc-panel .win-close { position: absolute; right: 8px; top: 8px; }
.asc-choice { border: 1px solid #5a3a7a; border-radius: 8px; padding: 8px; margin: 8px 0; background: #1e1430; } .asc-choice h4 { color: #e0b0ff; margin: 0; } .asc-choice ul { margin: 6px 0; padding-left: 18px; font-size: 11px; }
.asc-node { border: 1px solid #3a2a5a; border-radius: 6px; padding: 6px; margin: 5px 0; display: grid; grid-template-columns: 1fr auto; gap: 2px 8px; align-items: center; } .asc-node .small { grid-column: 1; } .asc-node button { grid-row: 1 / 3; grid-column: 2; }
.asc-node.on { border-color: #e0b0ff; background: #2a1a40; }
::-webkit-scrollbar { width: 8px; } ::-webkit-scrollbar-thumb { background: #3a4a70; border-radius: 4px; } ::-webkit-scrollbar-track { background: transparent; }
