/* Periodic Table - CSS variables & base styles */
:root {
  --bg: #0a0c10;
  --fg: #eaf2fb;
  --muted: #a9b4c0;
  --card: #121723;
  --accent: #82eaff;
  --border: #2b3545;
  --ring: #ffd166;
  --tooltip: #0A0D14;
  --grid-gap: 8px;
  --cell-min: 60px;
  --cell-h: 72px;
}

/* Theme tokens via data-theme */
:root[data-theme="dark"] { 
  --bg:#0a0c10; --fg:#eaf2fb; --muted:#a9b4c0; --card:#121723; --accent:#82eaff; 
  --border:#2b3545; --ring:#ffd166; --tooltip:#0A0D14; 
}
:root[data-theme="light"] { 
  --bg:#f7fafc; --fg:#0c1116; --muted:#4c5a67; --card:#ffffff; --accent:#0066ff; 
  --border:#d7dde5; --ring:#0052cc; --tooltip:#1E2530; 
}
:root[data-theme="high-contrast"] { 
  --bg:#000000; --fg:#ffffff; --muted:#d0d0d0; --card:#0d0d0d; --accent:#00e5ff; 
  --border:#ffffff; --ring:#ffdd00; --tooltip:#000000; 
}

/* System preference fallback when no localStorage (handled in JS) */
@media (prefers-color-scheme: dark) { :root[data-theme="system"] { --bg:#0a0c10; --fg:#eaf2fb; --muted:#a9b4c0; --card:#121723; --accent:#82eaff; --border:#2b3545; --ring:#ffd166; --tooltip:#0A0D14; } }
@media (prefers-color-scheme: light) { :root[data-theme="system"] { --bg:#f7fafc; --fg:#0c1116; --muted:#4c5a67; --card:#ffffff; --accent:#0066ff; --border:#d7dde5; --ring:#0052cc; --tooltip:#1E2530; } }

/* Minibar (sticky summary) */
.minibar { position: sticky; top: 0; z-index: 20; background: var(--bg); padding: 8px 12px; display: flex; flex-wrap: wrap; gap: 6px; border-bottom: 1px solid var(--border); }
.badge { display: inline-flex; align-items: center; gap: 6px; padding: 4px 8px; border-radius: 999px; border: 1px solid var(--border); background: var(--card); color: var(--fg); font-size: 12px; }
.badge .icon { font-size: 12px; }
/* file:// 보안으로 데이터가 안 불릴 때 상단 안내 */
.notice { margin: 8px 12px; padding: 10px 12px; border-radius: 10px; background: color-mix(in oklab, var(--accent), transparent 85%); color: var(--fg); border: 1px solid var(--border); font-size: 13px; }
.error  { margin: 8px 12px; padding: 10px 12px; border-radius: 10px; background: #3a0f0f; color: #ffdede; border: 1px solid #5b1a1a; font-size: 13px; }

/* Topbar layout: right fixed controls */
.topbar { display: flex; align-items: center; gap: 12px; padding: 12px; position: sticky; top: 0; z-index: 10; background: var(--bg); }
.topbar .topbar-right { margin-left: auto; display: inline-flex; gap: 8px; align-items: center; }

/* 로고 & 타이틀 정렬 개선 */
.topbar .title { display: inline-flex; align-items: center; gap: 8px; }
.topbar .title img { height: 24px; width: auto; display: inline-block; }

/* Segmented control */
.segmented { display: inline-flex; background: var(--card); border: 1px solid var(--border); border-radius: 10px; overflow: hidden; }
.seg-btn { display: inline-flex; align-items: center; gap: 0; padding: 6px 10px; background: transparent; color: var(--fg); border: none; cursor: pointer; position: relative; }
.seg-btn + .seg-btn { border-left: 1px solid var(--border); }
.seg-btn[aria-checked="true"] { background: color-mix(in oklab, var(--accent), transparent 85%); font-weight: 700; box-shadow: inset 0 0 0 2px var(--accent); }
.seg-btn:focus-visible { outline: 2px solid var(--ring); outline-offset: 2px; box-shadow: none; }
:root[data-theme="light"] .seg-btn:focus-visible { outline: 2px solid var(--ring); outline-offset: 2px; box-shadow: none; }

/* Legend selected state */
.legend .legend-item { display: inline-flex; align-items: center; gap: 6px; padding: 4px 8px; border-radius: 999px; border: 1px solid var(--border); background: var(--card); }
.legend .legend-item.selected { border-width: 2px; box-shadow: 0 0 0 2px color-mix(in oklab, var(--accent), transparent 50%); }
.legend .legend-item .selected-icon { content: '✓'; display: inline-block; font-weight: 700; color: var(--accent); }
.legend .dot { width: 10px; height: 10px; border-radius: 50%; }

/* Removed legacy tooltip h3/el-icon styles - now using .t-head structure */

/* Dialog: 2-column info on desktop, 1-column on mobile */
.dialog-body ul { list-style: none; padding: 0; margin: 8px 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px 12px; }
@media (max-width: 640px) { .dialog-body ul { grid-template-columns: 1fr; } }

/* Scroll lock and focus visuals retained */
body.scroll-lock { overflow: hidden; }
.controls button:focus-visible,
.controls select:focus-visible,
.controls input:focus-visible,
.legend .legend-item:focus-visible,
.cell:focus-visible,
.dialog-close:focus-visible,
.dialog-actions .chip:focus-visible { outline: 2px solid var(--ring); outline-offset: 2px; box-shadow: none; }
:root[data-theme="light"] .controls button:focus-visible,
:root[data-theme="light"] .controls select:focus-visible,
:root[data-theme="light"] .controls input:focus-visible,
:root[data-theme="light"] .legend .legend-item:focus-visible,
:root[data-theme="light"] .cell:focus-visible,
:root[data-theme="light"] .dialog-close:focus-visible,
:root[data-theme="light"] .dialog-actions .chip:focus-visible { outline: 2px solid var(--ring); outline-offset: 2px; box-shadow: none; }

/* Heat bar via transform */
.cell .heat { position: absolute; bottom: 0; left: 0; right: 0; height: 100%; background: var(--accent); border-bottom-left-radius: 10px; border-bottom-right-radius: 10px; transform-origin: bottom; transform: scaleY(0); transition: transform 160ms ease; opacity: 0.6; }

/* Tooltip perf */
#tooltip { will-change: transform, opacity; transform: translate3d(0,0,0); transition: opacity 120ms ease; }

/* Base */
html, body { height: 100%; }
body {
  margin: 0;
  color: var(--fg);
  background: var(--bg);
  font: 14px/1.6 -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
    'Noto Sans KR', 'Apple SD Gothic Neo', Helvetica, Arial, 'Apple Color Emoji',
    'Segoe UI Emoji';
}

.sr-only {
  position: absolute;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0, 0, 0, 0);
  white-space: nowrap; border: 0;
}

.title { margin: 0; font-weight: 700; font-size: 18px; }
.controls { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.controls input, .controls select {
  height: 32px; border-radius: 8px; border: 1px solid var(--border);
  background: var(--card); color: var(--fg); padding: 0 10px;
}
.chip {
  height: 32px; padding: 0 10px; border-radius: 999px; border: 1px solid var(--border);
  background: var(--card); color: var(--fg);
}

.legend { display: flex; gap: 8px; padding: 8px 12px; flex-wrap: wrap; }
.legend .legend-item { display: inline-flex; align-items: center; gap: 6px; padding: 4px 8px; border-radius: 999px; border: 1px solid var(--border); background: var(--card); }
.legend .dot { width: 10px; height: 10px; border-radius: 50%; }

.grid-wrap { padding: 12px; overflow-x: auto; }
.grid {
  display: grid;
  grid-template-columns: repeat(18, minmax(var(--cell-min), 1fr));
  gap: var(--grid-gap);
}

.cell {
  position: relative;
  display: inline-flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  height: var(--cell-h);
  min-width: var(--cell-min);
  background: var(--card);
  border-radius: 10px;
  border: 1px solid var(--border);
  color: var(--fg);
  transition: transform 120ms ease, box-shadow 120ms ease, opacity 120ms ease;
}
.cell:focus-visible { outline: none; box-shadow: 0 0 0 3px var(--ring), inset 0 0 0 2px #000; }
:root[data-theme="light"] .cell:focus-visible { box-shadow: 0 0 0 3px var(--ring), inset 0 0 0 2px #fff; }
.cell:hover { transform: translateY(-2px); }

/* Tooltip */
#tooltip {
  position: fixed;
  pointer-events: none;
  min-width: 240px;
  max-width: 320px;
  padding: 14px 16px;
  border-radius: 12px;
  background: var(--tooltip);
  border: 1px solid var(--border);
  border-left: 4px solid var(--accent);
  color: #FFFFFF;
  box-shadow: 0 6px 20px rgba(0,0,0,0.35);
  will-change: transform, opacity;
  transform: translate3d(0,0,0);
  transition: opacity 120ms ease;
  opacity: 0;
}
#tooltip[aria-hidden="false"] { opacity: 1; }

/* Tooltip structure */
#tooltip .t-head { 
  display: flex; 
  gap: 8px; 
  align-items: center; 
  font-size: 15px; 
  font-weight: 700;
  margin-bottom: 4px;
}
#tooltip .dot { 
  width: 10px; 
  height: 10px; 
  border-radius: 50%; 
  display: inline-block; 
  flex-shrink: 0;
}
#tooltip .t-meta { 
  color: #9fb0c0; 
  font-size: 12px; 
  margin-top: 2px; 
}
#tooltip .t-desc { 
  font-size: 14px; 
  line-height: 1.55; 
  color: #E0E6ED;
}
#tooltip .t-uses { 
  font-size: 13px; 
}
#tooltip .t-uses ul {
  list-style: disc;
  color: #B8C5D3;
}
#tooltip .t-uses strong {
  color: #FFFFFF;
}
#tooltip .t-note { 
  color: #8A95A3; 
  font-size: 11px; 
  opacity: 0.8; 
}

/* Dialog */
.dialog-body { padding: 16px; background: var(--card); }
.dialog-actions { padding: 12px 16px; border-top: 1px solid var(--border); background: var(--bg); display: flex; justify-content: flex-end; }
.dialog-close { position: absolute; right: 10px; top: 8px; height: 28px; width: 28px; border-radius: 50%; border: 1px solid var(--border); background: var(--card); color: var(--fg); }

.footer { padding: 20px; text-align: center; color: var(--muted); }

/* Category colors - border emphasis + label */
:root { --cat-alkali-metal: #ff6b6b; --cat-alkaline-earth-metal: #ffa94d; --cat-transition-metal: #ffd43b; --cat-post-transition-metal: #a5d8ff; --cat-metalloid: #66d9e8; --cat-polyatomic-nonmetal: #b2f2bb; --cat-diatomic-nonmetal: #8ce99a; --cat-noble-gas: #c0eb75; --cat-lanthanide: #faa2c1; --cat-actinide: #e599f7; --cat-unknown: #adb5bd; }
.cell[data-category] { border-color: color-mix(in oklab, var(--cat-unknown), transparent 10%); }
.cell[data-category="alkali metal"] { border-color: color-mix(in oklab, var(--cat-alkali-metal), white 10%); border-left-color: var(--cat-alkali-metal); border-left-width: 4px; }
.cell[data-category="alkaline earth metal"] { border-color: color-mix(in oklab, var(--cat-alkaline-earth-metal), white 10%); border-left-color: var(--cat-alkaline-earth-metal); border-left-width: 4px; }
.cell[data-category="transition metal"] { border-color: color-mix(in oklab, var(--cat-transition-metal), white 10%); border-left-color: var(--cat-transition-metal); border-left-width: 4px; }
.cell[data-category="post-transition metal"] { border-color: color-mix(in oklab, var(--cat-post-transition-metal), white 10%); border-left-color: var(--cat-post-transition-metal); border-left-width: 4px; }
.cell[data-category="metalloid"] { border-color: color-mix(in oklab, var(--cat-metalloid), white 10%); border-left-color: var(--cat-metalloid); border-left-width: 4px; }
.cell[data-category*="nonmetal"] { border-color: color-mix(in oklab, var(--cat-polyatomic-nonmetal), white 10%); border-left-color: var(--cat-polyatomic-nonmetal); border-left-width: 4px; }
.cell[data-category="noble gas"] { border-color: color-mix(in oklab, var(--cat-noble-gas), white 10%); border-left-color: var(--cat-noble-gas); border-left-width: 4px; }
.cell[data-category="lanthanide"] { border-color: color-mix(in oklab, var(--cat-lanthanide), white 10%); border-left-color: var(--cat-lanthanide); border-left-width: 4px; }
.cell[data-category="actinide"] { border-color: color-mix(in oklab, var(--cat-actinide), white 10%); border-left-color: var(--cat-actinide); border-left-width: 4px; }
.cell[data-category="halogen"] { border-color: color-mix(in oklab, var(--cat-halogen), white 10%); border-left-color: var(--cat-halogen); border-left-width: 4px; }

/* Responsive */
@media (max-width: 640px) {
  .controls { gap: 6px; }
  .cell { --cell-min: 54px; --cell-h: 68px; }
}

.legend .legend-item .selected-icon { display: none; }
.legend .legend-item.selected .selected-icon { display: inline-block; }

.cell .num {
  font-size: 0.75rem;
  opacity: 0.8;
}
.cell .sym {
  font-weight: 700;
}
.cell .name {
  font-size: 0.85rem;
}

/* Theme-specific cell visuals (placed after category colors to win specificity/order) */
body[data-theme="light"] .cell { background: #FAFBFD; border-color: #D7DFE7; }
body[data-theme="dark"] .cell { background: #121721; border-color: #2C3442; }

/* Hover accent border & background overrides */
body[data-theme="light"] .cell:hover,
body[data-theme="light"] .cell[data-category]:hover { background: #E9EEF5; border-color: var(--accent); }
body[data-theme="dark"] .cell:hover,
body[data-theme="dark"] .cell[data-category]:hover { background: #1E2530; border-color: var(--accent); }

/* Category background fills (light theme) - make colors more vivid */
body[data-theme="light"] .cell[data-category="alkali metal"] { background: color-mix(in oklab, var(--cat-alkali-metal), white 70%); }
body[data-theme="light"] .cell[data-category="alkaline earth metal"] { background: color-mix(in oklab, var(--cat-alkaline-earth-metal), white 70%); }
body[data-theme="light"] .cell[data-category="transition metal"] { background: color-mix(in oklab, var(--cat-transition-metal), white 70%); }
body[data-theme="light"] .cell[data-category="post-transition metal"] { background: color-mix(in oklab, var(--cat-post-transition-metal), white 70%); }
body[data-theme="light"] .cell[data-category="metalloid"] { background: color-mix(in oklab, var(--cat-metalloid), white 70%); }
body[data-theme="light"] .cell[data-category="diatomic nonmetal"] { background: color-mix(in oklab, var(--cat-diatomic-nonmetal), white 70%); }
body[data-theme="light"] .cell[data-category="polyatomic nonmetal"] { background: color-mix(in oklab, var(--cat-polyatomic-nonmetal), white 70%); }
body[data-theme="light"] .cell[data-category="noble gas"] { background: color-mix(in oklab, var(--cat-noble-gas), white 70%); }
body[data-theme="light"] .cell[data-category="lanthanide"] { background: color-mix(in oklab, var(--cat-lanthanide), white 70%); }
body[data-theme="light"] .cell[data-category="actinide"] { background: color-mix(in oklab, var(--cat-actinide), white 70%); }
body[data-theme="light"] .cell[data-category="halogen"] { background: color-mix(in oklab, var(--cat-halogen), white 70%); }
body[data-theme="light"] .cell[data-category="unknown"] { background: color-mix(in oklab, var(--cat-unknown), white 78%); }

/* Category background fills (dark theme) - make colors more vivid */
body[data-theme="dark"] .cell[data-category="alkali metal"] { background: color-mix(in oklab, var(--cat-alkali-metal), black 70%); }
body[data-theme="dark"] .cell[data-category="alkaline earth metal"] { background: color-mix(in oklab, var(--cat-alkaline-earth-metal), black 70%); }
body[data-theme="dark"] .cell[data-category="transition metal"] { background: color-mix(in oklab, var(--cat-transition-metal), black 70%); }
body[data-theme="dark"] .cell[data-category="post-transition metal"] { background: color-mix(in oklab, var(--cat-post-transition-metal), black 70%); }
body[data-theme="dark"] .cell[data-category="metalloid"] { background: color-mix(in oklab, var(--cat-metalloid), black 70%); }
body[data-theme="dark"] .cell[data-category="diatomic nonmetal"] { background: color-mix(in oklab, var(--cat-diatomic-nonmetal), black 70%); }
body[data-theme="dark"] .cell[data-category="polyatomic nonmetal"] { background: color-mix(in oklab, var(--cat-polyatomic-nonmetal), black 70%); }
body[data-theme="dark"] .cell[data-category="noble gas"] { background: color-mix(in oklab, var(--cat-noble-gas), black 70%); }
body[data-theme="dark"] .cell[data-category="lanthanide"] { background: color-mix(in oklab, var(--cat-lanthanide), black 70%); }
body[data-theme="dark"] .cell[data-category="actinide"] { background: color-mix(in oklab, var(--cat-actinide), black 70%); }
body[data-theme="dark"] .cell[data-category="halogen"] { background: color-mix(in oklab, var(--cat-halogen), black 70%); }
body[data-theme="dark"] .cell[data-category="unknown"] { background: color-mix(in oklab, var(--cat-unknown), black 78%); }

:root { --cat-alkali-metal: #ff6b6b; --cat-alkaline-earth-metal: #ffa94d; --cat-transition-metal: #ffd43b; --cat-post-transition-metal: #a5d8ff; --cat-metalloid: #66d9e8; --cat-polyatomic-nonmetal: #b2f2bb; --cat-diatomic-nonmetal: #8ce99a; --cat-noble-gas: #c0eb75; --cat-lanthanide: #faa2c1; --cat-actinide: #e599f7; --cat-halogen: #51cf66; --cat-unknown: #adb5bd; }
.cell[data-category] { border-color: color-mix(in oklab, var(--cat-unknown), transparent 10%); }
.cell[data-category="alkali metal"] { border-color: color-mix(in oklab, var(--cat-alkali-metal), white 10%); border-left-color: var(--cat-alkali-metal); border-left-width: 4px; }
.cell[data-category="alkaline earth metal"] { border-color: color-mix(in oklab, var(--cat-alkaline-earth-metal), white 10%); border-left-color: var(--cat-alkaline-earth-metal); border-left-width: 4px; }
.cell[data-category="transition metal"] { border-color: color-mix(in oklab, var(--cat-transition-metal), white 10%); border-left-color: var(--cat-transition-metal); border-left-width: 4px; }
.cell[data-category="post-transition metal"] { border-color: color-mix(in oklab, var(--cat-post-transition-metal), white 10%); border-left-color: var(--cat-post-transition-metal); border-left-width: 4px; }
.cell[data-category="metalloid"] { border-color: color-mix(in oklab, var(--cat-metalloid), white 10%); border-left-color: var(--cat-metalloid); border-left-width: 4px; }
.cell[data-category*="nonmetal"] { border-color: color-mix(in oklab, var(--cat-polyatomic-nonmetal), white 10%); border-left-color: var(--cat-polyatomic-nonmetal); border-left-width: 4px; }
.cell[data-category="noble gas"] { border-color: color-mix(in oklab, var(--cat-noble-gas), white 10%); border-left-color: var(--cat-noble-gas); border-left-width: 4px; }
.cell[data-category="lanthanide"] { border-color: color-mix(in oklab, var(--cat-lanthanide), white 10%); border-left-color: var(--cat-lanthanide); border-left-width: 4px; }
.cell[data-category="actinide"] { border-color: color-mix(in oklab, var(--cat-actinide), white 10%); border-left-color: var(--cat-actinide); border-left-width: 4px; }
.cell[data-category="halogen"] { border-color: color-mix(in oklab, var(--cat-halogen), white 10%); border-left-color: var(--cat-halogen); border-left-width: 4px; }

/* Responsive */
@media (max-width: 640px) {
  .controls { gap: 6px; }
  .cell { --cell-min: 54px; --cell-h: 68px; }
}

.legend .legend-item .selected-icon { display: none; }
.legend .legend-item.selected .selected-icon { display: inline-block; }

.cell .num {
  font-size: 0.75rem;
  opacity: 0.8;
}
.cell .sym {
  font-weight: 700;
}
.cell .name {
  font-size: 0.85rem;
}

/* Theme-specific cell visuals (placed after category colors to win specificity/order) */
body[data-theme="light"] .cell { background: #FAFBFD; border-color: #D7DFE7; }
body[data-theme="dark"] .cell { background: #121721; border-color: #2C3442; }

/* Hover accent border & background overrides */
body[data-theme="light"] .cell:hover,
body[data-theme="light"] .cell[data-category]:hover { background: #E9EEF5; border-color: var(--accent); }
body[data-theme="dark"] .cell:hover,
body[data-theme="dark"] .cell[data-category]:hover { background: #1E2530; border-color: var(--accent); }

#tooltip .t-stats { display: grid; grid-template-columns: 1fr 1fr; gap: 4px 12px; list-style: none; margin: 8px 0 0 0; padding: 0; }
#tooltip .t-stats li { list-style: none; margin: 0; }
#tooltip .t-stats strong { color: var(--muted); margin-right: 4px; }
