/* ===== Path of Building Web — Dark Theme CSS ===== */

:root {
  --bg:            #1a1a1a;
  --bg-deep:       #111111;
  --panel:         #252525;
  --panel-light:   #2e2e2e;
  --border:        #444444;
  --border-light:  #555555;
  --gold:          #c8a44d;
  --gold-bright:   #e0b85a;
  --gold-dim:      #9a7a34;
  --text:          #e0d8c0;
  --text-dim:      #a09880;
  --text-muted:    #6a6050;
  --positive:      #67c837;
  --negative:      #ff4444;
  --mana:          #4080ff;
  --life:          #dd2222;
  --es:            #88aaff;
  --fire:          #e05030;
  --cold:          #6090e0;
  --lightning:     #e0c030;
  --chaos:         #c050c0;
  --scrollbar-w:   6px;
}

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

html, body {
  height: 100%;
  font-family: 'Segoe UI', 'Malgun Gothic', sans-serif;
  font-size: 14px;
  background: var(--bg);
  color: var(--text);
  overflow: hidden;
}

/* ── Scrollbar ─────────────────────────────────────────────────────────── */
::-webkit-scrollbar { width: var(--scrollbar-w); height: var(--scrollbar-w); }
::-webkit-scrollbar-track { background: var(--bg-deep); }
::-webkit-scrollbar-thumb { background: var(--border); border-radius: 3px; }
::-webkit-scrollbar-thumb:hover { background: var(--border-light); }

/* ── Layout ────────────────────────────────────────────────────────────── */
#app {
  display: flex;
  flex-direction: column;
  height: 100vh;
}

/* ── Header ────────────────────────────────────────────────────────────── */
#header {
  background: linear-gradient(180deg, #1e1a10 0%, #141410 100%);
  border-bottom: 2px solid var(--gold-dim);
  padding: 0 16px;
  display: flex;
  align-items: center;
  gap: 16px;
  height: 52px;
  flex-shrink: 0;
  z-index: 100;
}

#logo {
  display: flex;
  align-items: center;
  gap: 10px;
  text-decoration: none;
}

#logo-icon {
  width: 32px;
  height: 32px;
  background: radial-gradient(circle at 40% 40%, #e0c060, #8a5a10);
  border-radius: 50%;
  border: 2px solid var(--gold);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 16px;
  color: var(--bg-deep);
  font-weight: bold;
  flex-shrink: 0;
}

#logo-text {
  font-size: 17px;
  font-weight: 700;
  color: var(--gold);
  letter-spacing: 0.5px;
  white-space: nowrap;
}

#logo-sub {
  font-size: 10px;
  color: var(--text-dim);
  margin-top: 2px;
}

#header-spacer { flex: 1; }

#header-status {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 12px;
  color: var(--text-dim);
}

.status-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: #555;
  transition: background 0.3s;
}
.status-dot.ok  { background: var(--positive); box-shadow: 0 0 6px var(--positive); }
.status-dot.err { background: var(--negative); box-shadow: 0 0 6px var(--negative); }
.status-dot.busy { background: var(--gold); animation: pulse 1s infinite; }

@keyframes pulse { 0%,100% { opacity:1; } 50% { opacity:0.4; } }

/* ── Import bar ────────────────────────────────────────────────────────── */
#import-bar {
  background: var(--panel);
  border-bottom: 1px solid var(--border);
  padding: 10px 16px;
  display: flex;
  gap: 10px;
  align-items: stretch;
  flex-shrink: 0;
}

#code-input {
  flex: 1;
  background: var(--bg-deep);
  border: 1px solid var(--border);
  border-radius: 4px;
  color: var(--text);
  font-family: 'Consolas', 'Courier New', monospace;
  font-size: 12px;
  padding: 8px 10px;
  resize: none;
  height: 58px;
  transition: border-color 0.2s;
}
#code-input:focus { outline: none; border-color: var(--gold-dim); }
#code-input::placeholder { color: var(--text-muted); }

.btn {
  background: linear-gradient(180deg, #3a3020 0%, #25200f 100%);
  border: 1px solid var(--gold-dim);
  border-radius: 4px;
  color: var(--gold);
  font-size: 13px;
  font-weight: 600;
  padding: 0 18px;
  cursor: pointer;
  white-space: nowrap;
  transition: background 0.15s, border-color 0.15s, color 0.15s;
  letter-spacing: 0.3px;
}
.btn:hover { background: linear-gradient(180deg, #503a18 0%, #3a2810 100%); border-color: var(--gold); color: var(--gold-bright); }
.btn:active { transform: translateY(1px); }
.btn:disabled { opacity: 0.4; cursor: not-allowed; transform: none; }

.btn-secondary {
  background: linear-gradient(180deg, #2e2e2e 0%, #1e1e1e 100%);
  border-color: var(--border);
  color: var(--text-dim);
}
.btn-secondary:hover { border-color: var(--border-light); color: var(--text); background: linear-gradient(180deg, #383838 0%, #282828 100%); }

/* ── History dropdown ──────────────────────────────────────────────────── */
#history-wrap { position: relative; }
#history-dropdown {
  position: absolute;
  top: calc(100% + 4px);
  right: 0;
  background: var(--panel);
  border: 1px solid var(--border-light);
  border-radius: 4px;
  min-width: 320px;
  z-index: 200;
  box-shadow: 0 4px 16px rgba(0,0,0,0.6);
}
#history-dropdown.hidden { display: none; }
.history-item {
  padding: 8px 12px;
  cursor: pointer;
  border-bottom: 1px solid var(--border);
  font-size: 12px;
  color: var(--text-dim);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.history-item:last-child { border-bottom: none; }
.history-item:hover { background: rgba(200,160,60,0.1); color: var(--gold); }
.history-empty {
  padding: 10px 12px;
  font-size: 12px;
  color: var(--text-muted);
  text-align: center;
}

/* ── Main layout ───────────────────────────────────────────────────────── */
#main {
  display: flex;
  flex: 1;
  overflow: hidden;
}

/* ── Left panel: character info ────────────────────────────────────────── */
#left-panel {
  width: 220px;
  background: var(--panel);
  border-right: 1px solid var(--border);
  display: flex;
  flex-direction: column;
  flex-shrink: 0;
  overflow: hidden;
}

#char-card {
  padding: 14px 12px;
  border-bottom: 1px solid var(--border);
  background: linear-gradient(180deg, #2a2010 0%, #1e1a0c 100%);
}

.char-portrait {
  width: 56px;
  height: 56px;
  border-radius: 50%;
  border: 2px solid var(--gold-dim);
  background: #2a2010;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 26px;
  margin-bottom: 10px;
  position: relative;
}

.char-portrait .class-emoji { filter: drop-shadow(0 0 4px rgba(200,164,77,0.5)); }

.char-name {
  font-size: 15px;
  font-weight: 700;
  color: var(--gold);
  margin-bottom: 2px;
}
.char-class {
  font-size: 12px;
  color: var(--text-dim);
  margin-bottom: 1px;
}
.char-ascendancy {
  font-size: 11px;
  color: var(--gold-dim);
}
.char-level {
  font-size: 11px;
  color: var(--text-muted);
  margin-top: 4px;
}

.stat-block {
  padding: 10px 12px;
  border-bottom: 1px solid var(--border);
}
.stat-block-title {
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 1px;
  color: var(--gold-dim);
  margin-bottom: 8px;
  font-weight: 700;
}

.globe-row {
  display: flex;
  gap: 8px;
  margin-bottom: 8px;
}

.globe {
  flex: 1;
  background: var(--bg-deep);
  border-radius: 6px;
  border: 1px solid var(--border);
  padding: 6px 8px;
  text-align: center;
}
.globe-val {
  font-size: 16px;
  font-weight: 700;
  line-height: 1;
}
.globe-lbl {
  font-size: 9px;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  margin-top: 2px;
  color: var(--text-muted);
}
.globe.life   .globe-val { color: var(--life); }
.globe.mana   .globe-val { color: var(--mana); }
.globe.es     .globe-val { color: var(--es); }
.globe.ward   .globe-val { color: #a0c0a0; }

.resist-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 4px;
  margin-top: 6px;
}
.resist-item {
  display: flex;
  justify-content: space-between;
  align-items: center;
  background: var(--bg-deep);
  border-radius: 3px;
  padding: 3px 6px;
  font-size: 11px;
}
.resist-item span:first-child { color: var(--text-dim); }
.resist-item .rval { font-weight: 700; }
.resist-item.fire     .rval { color: var(--fire); }
.resist-item.cold     .rval { color: var(--cold); }
.resist-item.lightning .rval { color: var(--lightning); }
.resist-item.chaos    .rval { color: var(--chaos); }
.resist-item.rval-low  { background: #1e0f0f; border: 1px solid #552222; }
.resist-item.rval-capped .rval { color: var(--positive); }
.rval-over-num { font-weight: 400; font-size: 10px; color: #aaa; margin-left: 2px; }

.dps-big {
  background: linear-gradient(180deg, #1e1a0a 0%, #141008 100%);
  border: 1px solid var(--gold-dim);
  border-radius: 6px;
  padding: 10px;
  text-align: center;
  margin-top: 4px;
}
.dps-big-val {
  font-size: 22px;
  font-weight: 700;
  color: var(--gold);
  letter-spacing: 0.5px;
}
.dps-big-lbl {
  font-size: 10px;
  color: var(--text-muted);
  margin-top: 2px;
}

/* ── Tabs ──────────────────────────────────────────────────────────────── */
#content-area {
  flex: 1;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  min-width: 0;
}

#tabs {
  display: flex;
  background: var(--panel);
  border-bottom: 1px solid var(--border);
  flex-shrink: 0;
  overflow-x: auto;
}
#tabs::-webkit-scrollbar { height: 3px; }

.tab-btn {
  padding: 10px 18px;
  font-size: 13px;
  color: var(--text-dim);
  background: none;
  border: none;
  border-bottom: 2px solid transparent;
  cursor: pointer;
  white-space: nowrap;
  transition: color 0.15s, border-color 0.15s;
  font-family: inherit;
  letter-spacing: 0.3px;
}
.tab-btn:hover { color: var(--text); }
.tab-btn.active { color: var(--gold); border-bottom-color: var(--gold); font-weight: 600; }

#tab-content {
  flex: 1;
  overflow: hidden;
  position: relative;
}

.tab-pane {
  display: none;
  height: 100%;
  overflow-y: auto;
  padding: 16px;
}
.tab-pane.active { display: block; }

/* ── Stats grid ────────────────────────────────────────────────────────── */
.stats-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 12px;
}

.stat-card {
  background: var(--panel);
  border: 1px solid var(--border);
  border-radius: 6px;
  overflow: hidden;
}

.stat-card-header {
  background: linear-gradient(180deg, #2a2010 0%, #1e1a0c 100%);
  border-bottom: 1px solid var(--border);
  padding: 8px 12px;
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 1px;
  color: var(--gold-dim);
  display: flex;
  align-items: center;
  gap: 6px;
}

.stat-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 5px 12px;
  border-bottom: 1px solid #2a2a2a;
  font-size: 13px;
}
.stat-row:last-child { border-bottom: none; }
.stat-row:nth-child(even) { background: rgba(255,255,255,0.02); }
.stat-lbl { color: var(--text-dim); }
.stat-val { font-weight: 600; color: var(--text); }
.stat-val.positive { color: var(--positive); }
.stat-val.negative { color: var(--negative); }
.stat-val.gold { color: var(--gold); }
.stat-val.life { color: var(--life); }
.stat-val.mana { color: var(--mana); }
.stat-val.es { color: var(--es); }

/* ── Passive tree tab ──────────────────────────────────────────────────── */
#tree-pane {
  display: none;
  height: 100%;
  overflow: hidden;
  position: relative;
  background: #060a0d;
}
#tree-pane.active { display: flex; flex-direction: column; }

#tree-toolbar {
  background: var(--panel);
  border-bottom: 1px solid var(--border);
  padding: 8px 12px;
  display: flex;
  gap: 10px;
  align-items: center;
  flex-shrink: 0;
  flex-wrap: wrap;
}

#tree-info {
  font-size: 12px;
  color: var(--text-dim);
  margin-left: auto;
}

#tree-canvas-wrap, #tree1-canvas-wrap {
  flex: 1;
  overflow: hidden;
  position: relative;
  cursor: grab;
}
#tree-canvas-wrap.dragging, #tree1-canvas-wrap.dragging { cursor: grabbing; }
#tree-canvas { display: block; }

/* V2/V3 tree panes */
#tree-pane-v2 {
  display: none;
  height: 100%;
  overflow: hidden;
  position: relative;
  background: #060a0d;
}
#tree-pane-v2.active { display: flex; flex-direction: column; }
#tree-toolbar-v2 {
  background: var(--panel);
  border-bottom: 1px solid var(--border);
  padding: 8px 12px;
  display: flex;
  gap: 10px;
  align-items: center;
  flex-shrink: 0;
}
#tree2-canvas-wrap {
  flex: 1;
  overflow: hidden;
  position: relative;
  cursor: grab;
}
#tree2-canvas-wrap.dragging { cursor: grabbing; }

/* V1 tree pane — mirrors tree-pane */
#tree-pane-v1 {
  display: none;
  height: 100%;
  overflow: hidden;
  position: relative;
  background: #060a0d;
}
#tree-pane-v1.active { display: flex; flex-direction: column; }
#tree-toolbar-v1 {
  background: var(--panel);
  border-bottom: 1px solid var(--border);
  padding: 8px 12px;
  display: flex;
  gap: 10px;
  align-items: center;
  flex-shrink: 0;
  flex-wrap: wrap;
}
#tree1-canvas-wrap { cursor: grab; }
#tree1-canvas-wrap.dragging { cursor: grabbing; }
#tree1-tooltip {
  position: absolute;
  background: #0c0905;
  border: 1px solid #6b5228;
  border-radius: 2px;
  padding: 0;
  font-size: 13px;
  pointer-events: none;
  display: none;
  z-index: 300;
  max-width: 320px;
  min-width: 200px;
  box-shadow: 0 0 0 1px #2e1f08, 0 10px 40px rgba(0,0,0,0.95);
  overflow: hidden;
}

#tree-tooltip, #tree2-tooltip {
  position: absolute;
  background: #0c0905;
  border: 1px solid #6b5228;
  border-radius: 2px;
  padding: 0;
  font-size: 13px;
  pointer-events: none;
  display: none;
  z-index: 300;
  max-width: 320px;
  min-width: 200px;
  box-shadow: 0 0 0 1px #2e1f08, 0 10px 40px rgba(0,0,0,0.95);
  overflow: hidden;
}
/* jewel tooltip (old structure) */
#tree-tooltip .tt-header, #tree2-tooltip .tt-header {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 12px 8px;
}
#tree-tooltip .tt-icon, #tree2-tooltip .tt-icon {
  width: 40px;
  height: 40px;
  flex-shrink: 0;
  image-rendering: pixelated;
  border: 1px solid rgba(180,140,60,0.3);
  border-radius: 2px;
  background: rgba(0,0,0,0.4);
}
#tree-tooltip .tt-title, #tree2-tooltip .tt-title {
  flex: 1;
  min-width: 0;
}
#tree-tooltip .tt-name, #tree2-tooltip .tt-name {
  font-weight: 700;
  font-size: 15px;
  letter-spacing: 0.3px;
  line-height: 1.3;
}
#tree-tooltip .tt-type, #tree2-tooltip .tt-type {
  font-size: 11px;
  margin-top: 3px;
  letter-spacing: 0.6px;
  text-transform: uppercase;
  color: #8a7050;
}
#tree-tooltip .tt-sep, #tree2-tooltip .tt-sep {
  height: 1px;
  background: linear-gradient(to right, transparent 0%, #7a5530 15%, #c8963c 50%, #7a5530 85%, transparent 100%);
  margin: 0;
}
#tree-tooltip .tt-passive-stats, #tree2-tooltip .tt-passive-stats {
  padding: 8px 12px 10px;
  line-height: 1.75;
}
#tree-tooltip .tt-stat, #tree2-tooltip .tt-stat {
  color: #aacce8;
  font-size: 13px;
  margin: 1px 0;
}

/* ── Passive node tooltip: GGG 실제 프레임 이미지 사용 ───────────────── */
.poe-passive-tt {
  font-family: inherit;
}
.poe-pt-namebar {
  display: flex;
  align-items: stretch;
  height: 54px;
}
.poe-pt-side {
  width: 44px;
  height: 54px;
  flex-shrink: 0;
  background-size: 44px 54px;
  background-repeat: no-repeat;
}
.poe-pt-mid {
  flex: 1;
  height: 54px;
  background-repeat: repeat-x;
  background-size: 44px 54px;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0 4px;
}
/* normal 노드 */
.poe-pt-normal .poe-pt-l   { background-image: url('/static/ui/passive-normal-left.png'); }
.poe-pt-normal .poe-pt-r   { background-image: url('/static/ui/passive-normal-right.png'); }
.poe-pt-normal .poe-pt-mid { background-image: url('/static/ui/passive-normal-middle.png'); }
/* notable 노드 */
.poe-pt-notable .poe-pt-l   { background-image: url('/static/ui/passive-notable-left.png'); }
.poe-pt-notable .poe-pt-r   { background-image: url('/static/ui/passive-notable-right.png'); }
.poe-pt-notable .poe-pt-mid { background-image: url('/static/ui/passive-notable-middle.png'); }
/* keystone 노드 */
.poe-pt-keystone .poe-pt-l   { background-image: url('/static/ui/passive-keystone-left.png'); }
.poe-pt-keystone .poe-pt-r   { background-image: url('/static/ui/passive-keystone-right.png'); }
.poe-pt-keystone .poe-pt-mid { background-image: url('/static/ui/passive-keystone-middle.png'); }
.poe-pt-name {
  font-weight: 700;
  font-size: 16px;
  letter-spacing: 0.4px;
  line-height: 1.3;
  text-shadow: 0 1px 4px rgba(0,0,0,0.95);
  text-align: center;
  padding: 0 4px;
}
.poe-pt-stats {
  padding: 9px 15px 11px;
  line-height: 1.7;
}
.poe-pt-stat {
  color: #8888ff;
  font-size: 13px;
  margin: 1px 0;
  padding-left: 16px;
  position: relative;
  line-height: 1.6;
}
.poe-pt-stat::before {
  content: '○';
  position: absolute;
  left: 0;
  top: 1px;
  color: #5055a0;
  font-size: 11px;
  line-height: 1.6;
}
.poe-pt-stat-alloc {
  color: #ffd700;
  padding-left: 20px;
}
.poe-pt-stat-alloc::before {
  content: none;
}
.poe-pt-alloc-mark {
  position: absolute;
  left: 0;
  top: 1px;
  color: #ffd700;
  font-size: 13px;
  line-height: 1.6;
}
.poe-pt-stat-unalloc {
  color: #5a5a8a;
  padding-left: 16px;
}
.poe-pt-stat-unalloc::before {
  content: '○';
  position: absolute;
  left: 0;
  top: 1px;
  color: #3a3a6a;
  font-size: 11px;
  line-height: 1.6;
}

/* ── Skills tab ────────────────────────────────────────────────────────── */
.skill-group {
  background: var(--panel);
  border: 1px solid var(--border);
  border-radius: 6px;
  margin-bottom: 12px;
  overflow: hidden;
}
.skill-group-header {
  background: linear-gradient(180deg, #2a2010 0%, #1e1a0c 100%);
  border-bottom: 1px solid var(--border);
  padding: 8px 12px;
  font-weight: 700;
  color: var(--gold-dim);
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 13px;
}
.skill-badge {
  background: var(--gold-dim);
  color: var(--bg-deep);
  border-radius: 10px;
  padding: 1px 7px;
  font-size: 10px;
  font-weight: 700;
}
.skill-gem {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 7px 12px;
  border-bottom: 1px solid #2a2a2a;
  font-size: 12px;
}
.skill-gem:last-child { border-bottom: none; }
.gem-icon {
  width: 22px;
  height: 22px;
  border-radius: 3px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 11px;
  font-weight: bold;
  flex-shrink: 0;
}
.gem-icon.active  { background: #3a5a20; color: #80d040; border: 1px solid #406030; }
.gem-icon.support { background: #203050; color: #4080d0; border: 1px solid #304080; }
.gem-icon.gem-str { background: #5a1a1a; color: #e05040; border: 1px solid #803030; }
.gem-icon.gem-dex { background: #1a4a1a; color: #60d040; border: 1px solid #306030; }
.gem-icon.gem-int { background: #1a1a5a; color: #5070e0; border: 1px solid #303090; }
.gem-icon.gem-str.support { background: #4a1010; color: #c04030; border: 1px solid #602020; }
.gem-icon.gem-dex.support { background: #103a10; color: #40a030; border: 1px solid #205020; }
.gem-icon.gem-int.support { background: #10104a; color: #3050c0; border: 1px solid #202070; }
.gem-name { flex: 1; color: var(--text); }
.gem-level { color: var(--text-muted); font-size: 11px; }
.gem-main { color: var(--gold); font-size: 10px; margin-left: 4px; }

/* ── Items tab — Inventory grid ────────────────────────────────────────── */
.inv-grid {
  display: grid;
  grid-template-columns: repeat(8, 58px);
  grid-template-rows: repeat(8, 58px);
  gap: 3px;
  grid-template-areas:
    "W1 W1 .  HH HH .  W2 W2"
    "W1 W1 .  HH HH .  W2 W2"
    "W1 W1 .  BA BA AM W2 W2"
    "W1 W1 RL BA BA RR W2 W2"
    ".  GL GL BA BA BT BT ."
    ".  GL GL BL BL BT BT ."
    ".  F1 F2 F3 F4 F5 .  ."
    ".  F1 F2 F3 F4 F5 .  .";
  margin: 12px auto;
}
.inv-slot {
  position: relative;
  background: #141008;
  border: 1px solid #2e2618;
  border-radius: 3px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  cursor: default;
  transition: border-color 0.15s, box-shadow 0.15s;
}
.inv-slot:not(.inv-empty):hover { border-color: #8b6914; }
.inv-empty {
  background: #0d0a06;
  border-color: #1e1810;
  border-style: dashed;
}
.inv-slot-label {
  position: absolute;
  top: 3px;
  left: 4px;
  font-size: 7px;
  color: #3a3020;
  text-transform: uppercase;
  letter-spacing: 0.4px;
  pointer-events: none;
}
.inv-item-name {
  font-size: 9px;
  font-weight: 600;
  text-align: center;
  line-height: 1.2;
  padding: 14px 3px 2px;
  word-break: break-word;
  overflow: hidden;
  max-height: 100%;
}
/* Rarity borders */
.inv-slot.unique { border-color: #5a2a08; }
.inv-slot.unique:hover { border-color: #af6025; box-shadow: 0 0 8px rgba(175,96,37,0.35); }
.inv-slot.rare   { border-color: #5a4a08; }
.inv-slot.rare:hover   { border-color: #e0c030; box-shadow: 0 0 8px rgba(224,192,48,0.25); }
.inv-slot.magic  { border-color: #20206a; }
.inv-slot.magic:hover  { border-color: #8888ff; box-shadow: 0 0 8px rgba(136,136,255,0.25); }
.inv-slot.relic  { border-color: #1a4a1a; }
.inv-slot.relic:hover  { border-color: #60c060; box-shadow: 0 0 8px rgba(96,192,96,0.25); }
/* Item name colors */
.inv-item-name.normal { color: #c8c8c8; }
.inv-item-name.magic  { color: #8888ff; }
.inv-item-name.rare   { color: #e0c030; }
.inv-item-name.unique { color: #c87840; }
.inv-item-name.relic  { color: #60c060; }
/* Item image overlays text name */
.inv-item-img {
  position: absolute;
  top: 0; left: 0;
  width: 100%; height: 100%;
  object-fit: contain;
  object-position: center;
  padding: 4px;
  z-index: 2;
  background: #141008;
}
.inv-slot-label { z-index: 3; }

/* ── Notes tab ─────────────────────────────────────────────────────────── */
#notes-content {
  background: var(--panel);
  border: 1px solid var(--border);
  border-radius: 6px;
  padding: 14px;
  white-space: pre-wrap;
  font-size: 13px;
  color: var(--text-dim);
  min-height: 200px;
  line-height: 1.6;
}

/* ── Empty / loading states ────────────────────────────────────────────── */
.empty-state {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  height: 100%;
  min-height: 200px;
  color: var(--text-muted);
  gap: 12px;
  text-align: center;
  padding: 32px;
}
.empty-icon { font-size: 48px; opacity: 0.4; }
.empty-title { font-size: 16px; font-weight: 600; color: var(--text-dim); }
.empty-desc { font-size: 13px; max-width: 400px; line-height: 1.6; }

.loading-spinner {
  width: 32px;
  height: 32px;
  border: 3px solid var(--border);
  border-top-color: var(--gold);
  border-radius: 50%;
  animation: spin 0.8s linear infinite;
}
@keyframes spin { to { transform: rotate(360deg); } }

/* ── Toast notifications ───────────────────────────────────────────────── */
#toast-container {
  position: fixed;
  bottom: 20px;
  right: 20px;
  z-index: 9999;
  display: flex;
  flex-direction: column;
  gap: 8px;
  pointer-events: none;
}
.toast {
  background: var(--panel);
  border: 1px solid var(--border);
  border-radius: 6px;
  padding: 10px 16px;
  font-size: 13px;
  min-width: 200px;
  max-width: 360px;
  box-shadow: 0 4px 16px rgba(0,0,0,0.5);
  animation: toast-in 0.25s ease;
  pointer-events: auto;
}
.toast.success { border-color: var(--positive); color: var(--positive); }
.toast.error   { border-color: var(--negative); color: var(--negative); }
.toast.info    { border-color: var(--gold-dim); color: var(--gold); }
@keyframes toast-in { from { opacity:0; transform: translateX(20px); } to { opacity:1; transform: none; } }
@keyframes toast-out { to { opacity:0; transform: translateX(20px); } }

/* ── Overlay (loading) ─────────────────────────────────────────────────── */
#overlay {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.6);
  display: none;
  align-items: center;
  justify-content: center;
  z-index: 500;
  flex-direction: column;
  gap: 16px;
  font-size: 15px;
  color: var(--gold);
}
#overlay.show { display: flex; }

/* ── Error banner ──────────────────────────────────────────────────────── */
#error-banner {
  display: none;
  background: #2a0808;
  border: 1px solid #882222;
  color: #ff8888;
  padding: 10px 16px;
  font-size: 13px;
  border-radius: 4px;
  margin: 10px 16px;
  line-height: 1.5;
}
#error-banner.show { display: block; }

/* ── Summary tab layout ────────────────────────────────────────────────── */
.summary-cols {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
}

/* ── Progress bar (for crit, hit chance, etc.) ─────────────────────────── */
.progress-row {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 5px 12px;
  border-bottom: 1px solid #2a2a2a;
  font-size: 13px;
}
.progress-row:last-child { border-bottom: none; }
.progress-lbl { color: var(--text-dim); flex: 1; }
.progress-val { color: var(--text); font-weight: 600; width: 55px; text-align: right; }
.progress-bar-wrap {
  width: 80px;
  height: 6px;
  background: var(--bg-deep);
  border-radius: 3px;
  overflow: hidden;
}
.progress-bar-fill {
  height: 100%;
  background: var(--gold);
  border-radius: 3px;
  transition: width 0.4s ease;
}

/* ── XML viewer ─────────────────────────────────────────────────────────── */
#xml-viewer {
  background: var(--bg-deep);
  border: 1px solid var(--border);
  border-radius: 4px;
  padding: 10px;
  font-family: 'Consolas', monospace;
  font-size: 11px;
  color: var(--text-dim);
  max-height: 300px;
  overflow-y: auto;
  white-space: pre;
  tab-size: 2;
}

/* ── Responsive ────────────────────────────────────────────────────────── */
@media (max-width: 768px) {
  #left-panel { display: none; }
  .summary-cols { grid-template-columns: 1fr; }
  #logo-sub { display: none; }
}

/* ── Utility ────────────────────────────────────────────────────────────── */
.text-gold   { color: var(--gold); }
.text-dim    { color: var(--text-dim); }
.text-muted  { color: var(--text-muted); }
.text-pos    { color: var(--positive); }
.text-neg    { color: var(--negative); }
.mt-8  { margin-top: 8px; }
.mt-12 { margin-top: 12px; }
.mb-8  { margin-bottom: 8px; }
.sep { height: 1px; background: var(--border); margin: 8px 0; }
.bold { font-weight: 700; }
.monospace { font-family: 'Consolas', monospace; }

/* section label */
.section-label {
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 1.5px;
  color: var(--gold-dim);
  margin-bottom: 8px;
  margin-top: 16px;
  font-weight: 700;
  padding-left: 2px;
}
.section-label:first-child { margin-top: 0; }

/* ── Jewel list ────────────────────────────────────────────────────────── */
.jewel-list {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
.jewel-card {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  background: var(--bg-deep);
  border: 1px solid var(--border);
  border-radius: 4px;
  padding: 5px;
  width: 52px;
  cursor: default;
}
.jewel-card.unique { border-color: #5a2a08; }
.jewel-card.rare   { border-color: #5a4a08; }
.jewel-card.magic  { border-color: #20206a; }
.jewel-card:hover  { border-color: #8b6914; z-index: 10; }
.jewel-icon-wrap {
  width: 40px;
  height: 40px;
  flex-shrink: 0;
  position: relative;
  background: #141008;
  border-radius: 3px;
  overflow: hidden;
}
.jewel-icon-img {
  width: 100%; height: 100%;
  object-fit: contain;
  padding: 2px;
}
.jewel-icon-placeholder {
  width: 100%; height: 100%;
  border-radius: 3px;
}
.jewel-icon-placeholder.unique { background: rgba(175,96,37,0.2); }
.jewel-icon-placeholder.rare   { background: rgba(224,192,48,0.15); }
.jewel-icon-placeholder.magic  { background: rgba(136,136,255,0.15); }
.jewel-icon-placeholder.normal { background: rgba(200,200,200,0.1); }
.jewel-name {
  font-size: 9px;
  font-weight: 600;
  line-height: 1.2;
  margin-top: 3px;
  text-align: center;
  width: 100%;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.jewel-name.unique { color: #c87840; }
.jewel-name.rare   { color: #e0c030; }
.jewel-name.magic  { color: #8888ff; }
.jewel-name.normal { color: #c8c8c8; }
/* Tooltip shown on hover */
.jewel-card { cursor: default; }

/* ── Equipped items list ───────────────────────────────────────────────── */
.equipped-list { display: flex; flex-direction: column; gap: 3px; }
.equipped-row {
  display: grid;
  grid-template-columns: 64px 1fr;
  grid-template-rows: auto auto;
  gap: 0 8px;
  background: var(--bg-deep);
  border: 1px solid var(--border);
  border-radius: 4px;
  padding: 5px 8px;
  align-items: start;
}
.equipped-slot-label {
  font-size: 10px;
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 0.5px;
  grid-row: 1 / 3;
  align-self: center;
}
.equipped-item-info { display: flex; align-items: baseline; gap: 6px; flex-wrap: wrap; }
.equipped-name { font-size: 13px; font-weight: 600; }
.equipped-name.unique { color: #c87840; }
.equipped-name.rare   { color: #e0c030; }
.equipped-name.magic  { color: #8888ff; }
.equipped-name.normal { color: #c8c8c8; }
.equipped-base { font-size: 11px; color: var(--text-muted); }
.equipped-mods { grid-column: 2; display: flex; flex-wrap: wrap; gap: 2px 10px; margin-top: 2px; }
.equipped-mod  { font-size: 11px; color: #8ab4f8; }

/* ── Hover tooltip ─────────────────────────────────────────────────────── */
#hover-tooltip {
  display: none;
  position: fixed;
  z-index: 9999;
  background: #1a1510;
  border: 1px solid #6b4f1e;
  border-radius: 6px;
  padding: 10px 14px;
  max-width: 340px;
  min-width: 180px;
  box-shadow: 0 4px 20px rgba(0,0,0,0.7);
  pointer-events: none;
  font-size: 13px;
  line-height: 1.5;
}
/* Gem tooltip classes */
.tt-gem-name    { font-weight: 700; color: #c8a44d; margin-bottom: 2px; }
.tt-gem-name-en { font-size: 11px; color: #888; margin-bottom: 4px; }
.tt-gem-stats   { font-size: 11px; color: #aaa; margin-bottom: 6px; }
.tt-gem-desc    { font-size: 12px; color: #ccc; border-top: 1px solid #333; padding-top: 6px; white-space: pre-wrap; }
.tt-gem-mods    { font-size: 12px; color: #88ccff; border-top: 1px solid #333; padding-top: 6px; line-height: 1.6; }
.tt-gem-mods div { margin: 1px 0; }
.tt-gem-qual    { font-size: 12px; color: #d4a853; border-top: 1px solid #444; padding-top: 6px; margin-top: 4px; line-height: 1.6; }
.tt-gem-qual div { margin: 1px 0; }
.tt-gem-qual-header { font-size: 11px; color: #888; margin-bottom: 3px; }

/* ── PoE-style item tooltip ────────────────────────────────────────────── */
@font-face {
  font-family: 'FontinSmallCaps';
  src: url('https://assets.pobb.in/1/Art/2DArt/Fonts/Fontin-SmallCaps.woff2') format('woff2');
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}
#hover-tooltip.poe-item {
  background: #0e0b08;
  border: 1px solid #5a4510;
  padding: 0;
  min-width: 240px;
  max-width: 380px;
  border-radius: 0;
  overflow: hidden;
  font-family: 'FontinSmallCaps', 'Fontin SmallCaps', serif;
}
/* 헤더: 실제 GGG 프레임 이미지 */
.poe-tt-header {
  position: relative;
  text-align: center;
  padding: 6px 48px;
  background-repeat: no-repeat;
  background-size: auto 100%;
}
.poe-tt-header.normal {
  background-color: #0d0d0d;
  background-image:
    url('https://assets.pobb.in/1/Art/2DArt/UIImages/InGame/ItemsHeaderWhiteLeft.webp'),
    url('https://assets.pobb.in/1/Art/2DArt/UIImages/InGame/ItemsHeaderWhiteRight.webp'),
    url('https://assets.pobb.in/1/Art/2DArt/UIImages/InGame/ItemsHeaderWhiteMiddle.webp');
  background-position: left center, right center, center center;
  background-repeat: no-repeat, no-repeat, repeat-x;
}
.poe-tt-header.magic {
  background-color: #0d0d0d;
  background-image:
    url('https://assets.pobb.in/1/Art/2DArt/UIImages/InGame/ItemsHeaderMagicLeft.webp'),
    url('https://assets.pobb.in/1/Art/2DArt/UIImages/InGame/ItemsHeaderMagicRight.webp'),
    url('https://assets.pobb.in/1/Art/2DArt/UIImages/InGame/ItemsHeaderMagicMiddle.webp');
  background-position: left center, right center, center center;
  background-repeat: no-repeat, no-repeat, repeat-x;
}
.poe-tt-header.rare {
  background-color: #0d0d0d;
  background-image:
    url('https://assets.pobb.in/1/Art/2DArt/UIImages/InGame/ItemsHeaderRareLeft.webp'),
    url('https://assets.pobb.in/1/Art/2DArt/UIImages/InGame/ItemsHeaderRareRight.webp'),
    url('https://assets.pobb.in/1/Art/2DArt/UIImages/InGame/ItemsHeaderRareMiddle.webp');
  background-position: left center, right center, center center;
  background-repeat: no-repeat, no-repeat, repeat-x;
}
.poe-tt-header.unique {
  background-color: #0d0d0d;
  background-image:
    url('https://assets.pobb.in/1/Art/2DArt/UIImages/InGame/ItemsHeaderUniqueLeft.webp'),
    url('https://assets.pobb.in/1/Art/2DArt/UIImages/InGame/ItemsHeaderUniqueRight.webp'),
    url('https://assets.pobb.in/1/Art/2DArt/UIImages/InGame/ItemsHeaderUniqueMiddle.webp');
  background-position: left center, right center, center center;
  background-repeat: no-repeat, no-repeat, repeat-x;
}
.poe-tt-header.relic {
  background-color: #0d0d0d;
  background-image:
    url('https://assets.pobb.in/1/Art/2DArt/UIImages/InGame/ItemsHeaderFoilLeft.webp'),
    url('https://assets.pobb.in/1/Art/2DArt/UIImages/InGame/ItemsHeaderFoilRight.webp'),
    url('https://assets.pobb.in/1/Art/2DArt/UIImages/InGame/ItemsHeaderFoilMiddle.webp');
  background-position: left center, right center, center center;
  background-repeat: no-repeat, no-repeat, repeat-x;
}
.poe-tt-name {
  font-size: 19px;
  font-weight: 400;
  line-height: 1.2;
  font-family: 'FontinSmallCaps', 'Fontin SmallCaps', serif;
}
.poe-tt-name.normal { color: #c8c8c8; }
.poe-tt-name.magic  { color: #8888ff; }
.poe-tt-name.rare   { color: #e0c030; }
.poe-tt-name.unique { color: #af6025; }
.poe-tt-name.relic  { color: #60c060; }
.poe-tt-base {
  font-size: 15px;
  font-family: 'FontinSmallCaps', 'Fontin SmallCaps', serif;
  margin-top: 1px;
}
.poe-tt-base.normal { color: #c8c8c8; }
.poe-tt-base.magic  { color: #8888ff; }
.poe-tt-base.rare   { color: #e0c030; }
.poe-tt-base.unique { color: #af6025; }
.poe-tt-base.relic  { color: #60c060; }
.poe-tt-prop  { font-size: 13px; color: #c8c8c8; text-align: center; line-height: 1.5; margin: 1px 0; }
.poe-tt-prop-label { color: #7a7a7a; }
.poe-tt-prop-val   { color: #88d4f0; }
.poe-tt-body { padding: 4px 14px 10px; text-align: center; }
.poe-tt-mod  { font-size: 13px; color: #88c0ff; line-height: 1.5; margin: 1px 0; }
.poe-tt-mod.white     { color: #c8c8c8; }
.poe-tt-mod.corrupted { color: #d20000; }
.poe-tt-mod.fractured { color: #a0c8ff; }
.poe-tt-mod.flavour   { color: #af6025; font-style: italic; }
/* 구분선: CSS 그라디언트 (항상 표시) */
.poe-sep {
  height: 8px;
  margin: 3px 0;
  background-repeat: no-repeat;
  background-position: center;
  background-size: 100% 2px;
}
.poe-sep.normal { background-image: linear-gradient(to right, transparent 0%, #a09080 25%, #c8beb4 50%, #a09080 75%, transparent 100%); }
.poe-sep.magic  { background-image: linear-gradient(to right, transparent 0%, #5050a0 25%, #8888ff 50%, #5050a0 75%, transparent 100%); }
.poe-sep.rare   { background-image: linear-gradient(to right, transparent 0%, #a08020 25%, #e0c030 50%, #a08020 75%, transparent 100%); }
.poe-sep.unique { background-image: linear-gradient(to right, transparent 0%, #7a4010 25%, #af6025 50%, #7a4010 75%, transparent 100%); }
.poe-sep.relic  { background-image: linear-gradient(to right, transparent 0%, #408040 25%, #60c060 50%, #408040 75%, transparent 100%); }
