/* hidden 속성은 항상 숨김 (display 를 지정한 클래스가 있어도). USER 화면에 MASTER 표시·로그아웃 버튼이 보이던 문제 */
[hidden] { display: none !important; }

/* =====================================================================
   장중 시황 대시보드 스타일
   - 기준 폭: 모바일(~760px) / 태블릿(~1080px) / PC(1080px~)
   - 터치 대상은 최소 40px 이상, 표는 모바일에서 행 단위 카드로 바뀐다
   - 라이트/다크는 기기 설정을 따른다
   ===================================================================== */

/* ───────── 색상 · 크기 토큰 ───────── */
:root {
  /* 2026-10-06 홈 개편: 회색 바탕 + 흰 카드. 빨강/파랑은 시장 방향에만, 진한 자주색은 탭·선택 표시에만 쓴다 */
  --bg: #f2f4f6;
  --card: #ffffff;
  --card-sub: #f7f8fa;
  --line: #e5e8eb;
  --ink: #191f28;
  --mute: #8b95a1;
  --up: #e8384f;
  --up-bg: #fdeef0;
  --up-line: #f6c3ca;
  --down: #2f6feb;
  --down-bg: #ecf2fe;
  --down-line: #bcd0fa;
  --warn: #b7791f;
  --warn-bg: #fdf4e3;
  --band: #e9ecef;
  --track: #e5e8eb;
  --accent: #6e1a2c;
  --accent-bg: #f6ecee;
  --radius-lg: 16px;
  --radius-md: 12px;
  --pad: 22px;
  --gap: 14px;
}
@media (prefers-color-scheme: dark) {
  :root {
    --bg: #121418;
    --card: #1c1f25;
    --card-sub: #252931;
    --line: #2e333c;
    --ink: #eceef1;
    --mute: #959ca8;
    --up: #ff6678;
    --up-bg: #3a2228;
    --up-line: #6b3a41;
    --down: #6ea0ff;
    --down-bg: #1f2a40;
    --down-line: #35508a;
    --warn: #e0b04a;
    --warn-bg: #3a321d;
    --band: #2a2e36;
    --track: #333842;
    --accent: #e7a3b0;
    --accent-bg: #3a2329;
  }
}

/* ───────── 기본 ───────── */
* { box-sizing: border-box; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
body {
  margin: 0; background: var(--bg); color: var(--ink);
  font-family: "Pretendard Variable", "Pretendard", "Noto Sans KR", "Malgun Gothic", "Apple SD Gothic Neo", sans-serif;
  font-size: 14px; line-height: 1.5; -webkit-font-smoothing: antialiased;
  padding: 0 14px calc(48px + env(safe-area-inset-bottom));
  padding-left: max(14px, env(safe-area-inset-left));
  padding-right: max(14px, env(safe-area-inset-right));
}
.wrap { max-width: 1440px; margin: 0 auto; }
button { font: inherit; color: inherit; touch-action: manipulation; }
a { -webkit-tap-highlight-color: transparent; }
.chip, .refresh { touch-action: manipulation; }
:focus-visible { outline: 2px solid var(--down); outline-offset: 2px; }

/* ───────── 색상 유틸 ───────── */
.t-up { color: var(--up); }
.t-down { color: var(--down); }
.t-warn { color: var(--warn); }
.t-flat { color: var(--ink); }
.mute { color: var(--mute); }

/* ───────── 상단 칩 메뉴 (고정) ───────── */
.chips {
  position: sticky; top: 0; z-index: 20;
  display: flex; gap: 8px; overflow-x: auto; scrollbar-width: none;
  padding: calc(10px + env(safe-area-inset-top)) 2px 10px;
  margin: 0 -14px; padding-left: 14px; padding-right: 14px;
  background: var(--bg);
}
.chips::-webkit-scrollbar { display: none; }
.chip {
  flex: none; display: inline-flex; align-items: center; min-height: 38px;
  padding: 0 15px; border-radius: 999px; cursor: pointer;
  background: var(--card); border: 1px solid var(--line);
  color: var(--ink); font-size: 13px; white-space: nowrap; text-decoration: none;
}
.chip:hover { border-color: var(--mute); }
.chip.active { background: var(--accent); color: #fff; border-color: var(--accent); }
.chip.top { margin-left: auto; color: var(--mute); }

/* ───────── 공통 블록 ───────── */
.notice {
  margin: 0 0 12px; padding: 10px 14px; border-radius: var(--radius-md);
  background: var(--warn-bg); color: var(--warn); font-size: 13px;
}
.block { margin-top: 28px; scroll-margin-top: calc(64px + env(safe-area-inset-top)); }
#app > .block:first-child, #app > .top-grid:first-child { margin-top: 0; }
.top-grid > .block { margin-top: 0; }
.block-title { display: flex; align-items: baseline; gap: 4px 10px; margin: 0 0 10px 4px; flex-wrap: wrap; }
.block-title h2 { margin: 0; padding-left: 10px; font-size: 17px; font-weight: 700; border-left: 4px solid var(--accent); }
.tgl {
  display: inline-flex; align-items: center; gap: 8px; min-height: 40px; padding: 0;
  background: none; border: 0; cursor: pointer; text-align: left;
  font: inherit; color: inherit; touch-action: manipulation;
}
.chev {
  flex: none; width: 8px; height: 8px; margin-top: -3px;
  border-right: 2px solid var(--mute); border-bottom: 2px solid var(--mute);
  transform: rotate(45deg); transition: transform .15s;
}
.collapsed .chev { transform: rotate(-45deg); margin-top: 0; }
.collapsed .block-body { display: none; }
.collapsed .block-title { margin-bottom: 0; }
.stale .block-body { opacity: .55; }
.src { color: var(--mute); font-size: 12px; }
.tagx { padding: 1px 8px; border-radius: 999px; font-size: 11px; font-weight: 700; }
.tagx.warn { background: var(--warn-bg); color: var(--warn); }
.block-title .meta { color: var(--mute); font-size: 12px; }
.panel { background: var(--card); border-radius: var(--radius-lg); padding: var(--pad); border: 1px solid var(--line); }
.sub-title { color: var(--mute); font-size: 12px; margin: 0 0 10px; }

/* ───────── 레이아웃 (PC 다단) ───────── */
.top-grid, .market-grid { display: grid; gap: var(--gap); grid-template-columns: 1fr; }
.pair { display: grid; gap: 28px var(--gap); grid-template-columns: 1fr; margin-top: 28px; }
.idx-grid { display: grid; gap: var(--gap); grid-template-columns: 1fr; }
.cards { display: grid; gap: 12px; grid-template-columns: repeat(2, 1fr); }
.pair > .block { margin-top: 0; }
.theme-grid { display: grid; gap: var(--gap); grid-template-columns: 1fr; }
.stat-grid { display: grid; gap: 12px; grid-template-columns: repeat(2, 1fr); margin-top: 16px; }

@media (min-width: 761px) {
  .idx-grid { grid-template-columns: repeat(2, 1fr); }
  .theme-grid { grid-template-columns: repeat(2, 1fr); }
  .stat-grid { grid-template-columns: repeat(4, 1fr); }
}
@media (min-width: 1080px) {
  body { padding-left: max(24px, env(safe-area-inset-left)); padding-right: max(24px, env(safe-area-inset-right)); }
  .chips { margin: 0 -24px; padding-left: 24px; padding-right: 24px; }
  .top-grid { grid-template-columns: 1.3fr 1fr; align-items: stretch; }
  .market-grid { grid-template-columns: 1fr 330px; align-items: start; }
  .theme-grid { grid-template-columns: repeat(3, 1fr); }
  .pair { grid-template-columns: 1.15fr 1fr; align-items: start; }
  .pair table { min-width: 0; }
  .pair th, .pair td { padding-left: 8px; padding-right: 8px; }
}

/* ───────── 요약 · 지표 카드 ───────── */
.summary-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 12px; }
.summary-list li { display: flex; gap: 12px; font-size: 17px; font-weight: 700; line-height: 1.45; }
.summary-list .no {
  flex: none; width: 24px; height: 24px; border-radius: 7px; margin-top: 2px;
  background: var(--card-sub); color: var(--mute); font-size: 12px; font-weight: 600; display: grid; place-items: center;
}
.card { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius-lg); padding: 16px 18px; min-width: 0; }
.card.up { border-color: var(--up-line); background: var(--up-bg); }
.card.down { border-color: var(--down-line); background: var(--down-bg); }
.card .label { color: var(--mute); font-size: 12px; }
.card .value { font-size: 26px; font-weight: 800; margin: 4px 0 2px; letter-spacing: -.5px; overflow-wrap: anywhere; }
.card .sub { color: var(--mute); font-size: 12px; }

/* ───────── 표 (PC) ───────── */
.table-wrap { overflow-x: auto; border-radius: var(--radius-md); background: var(--card-sub); }
table { width: 100%; border-collapse: collapse; min-width: 620px; }
th, td { padding: 11px 12px; text-align: right; white-space: nowrap; }
th:first-child, td:first-child { text-align: left; }
th { font-size: 12px; font-weight: 500; color: var(--mute); }
tbody tr { border-top: 1px solid var(--line); }
td.name { font-weight: 700; }
td.left, th.left { text-align: left; }
tr.sep td { color: var(--mute); font-size: 12px; text-align: left; }
.us-lines { margin: 0 0 14px; display: grid; gap: 6px; }
.us-lines p { margin: 0; font-weight: 600; }
.stocks-line { display: block; font-weight: 400; font-size: 12px; color: var(--mute); white-space: normal; margin-top: 2px; }

/* 막대 (1.0배 = 가운데) */
.bar { position: relative; height: 8px; min-width: 120px; border-radius: 4px; background: var(--track); }
.bar .tick { position: absolute; left: 50%; top: -3px; width: 2px; height: 14px; background: var(--mute); }
.bar .fill { position: absolute; top: 0; height: 100%; border-radius: 4px; }
.bar .fill.up { background: var(--up); }
.bar .fill.down { background: var(--down); }
.bar-head { display: flex; justify-content: space-between; font-size: 11px; font-weight: 400; color: var(--mute); }

/* ───────── 일정 ───────── */
.sched-row { display: grid; grid-template-columns: 56px 1fr; gap: 12px; padding: 14px 0; border-top: 1px solid var(--line); }
.sched-row:first-child { border-top: 0; padding-top: 0; }
.sched-row:last-child { padding-bottom: 0; }
.sched-row .dday { font-size: 12px; font-weight: 700; padding-top: 2px; }
.sched-row .title { font-weight: 700; font-size: 15px; }
.sched-row .when { color: var(--mute); font-weight: 500; font-size: 12px; margin-left: 6px; }
.sched-row .note { color: var(--mute); font-size: 12.5px; margin-top: 2px; }

/* ───────── 장중 지수 카드 ───────── */
.idx { min-width: 0; }
.idx-head { display: flex; justify-content: space-between; align-items: baseline; gap: 8px; }
.idx-head .code { font-size: 13px; font-weight: 700; }
.idx-price { font-size: 28px; font-weight: 800; letter-spacing: -.5px; }
.idx-chg { font-size: 14px; font-weight: 700; margin-left: 6px; }
.chart { display: block; width: 100%; height: auto; margin: 8px 0 12px; overflow: visible; }
.chart .line { fill: none; stroke-width: 2; vector-effect: non-scaling-stroke; stroke-linejoin: round; }
.chart .line.up { stroke: var(--up); }
.chart .line.down { stroke: var(--down); }
.chart .line.flat { stroke: var(--ink); }          /* 보합(0%)·비교 기준 없음: 중립색. 정의가 없으면 선이 투명해진다 */
.chart .line.ghost { stroke: var(--mute); stroke-width: 1.5; stroke-dasharray: 4 3; opacity: .8; }
.chart .area.up { fill: var(--up); opacity: .12; }
.chart .area.down { fill: var(--down); opacity: .12; }
.chart .area.flat { fill: var(--mute); opacity: .12; }
.chart .band { fill: var(--band); }
.chart .base { stroke: var(--mute); stroke-width: 1; stroke-dasharray: 3 3; vector-effect: non-scaling-stroke; opacity: .6; }
.chart .dot.up { fill: var(--up); }
.chart .dot.down { fill: var(--down); }
.chart .dot.flat { fill: var(--ink); }
.inv { display: grid; grid-template-columns: 44px 1fr 74px; gap: 10px; align-items: center; padding: 5px 0; font-size: 13px; }
.inv .v { text-align: right; font-weight: 700; font-variant-numeric: tabular-nums; }
.badges { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.badge { padding: 5px 12px; border-radius: 999px; background: var(--card-sub); border: 1px solid var(--line); font-size: 12px; }
.oneliner { margin-top: 12px; font-size: 13px; line-height: 1.55; }
.oneliner b { margin-right: 6px; }

/* 우측 "지금 센 것" */
.side-title { font-size: 14px; font-weight: 700; margin: 0 0 10px; }
.hot-row { display: grid; grid-template-columns: 22px 1fr auto; gap: 10px; padding: 10px 0; border-top: 1px solid var(--line); align-items: start; }
.side-title + .hot-row { border-top: 0; }
.hot-row .rk { color: var(--mute); font-size: 12px; padding-top: 2px; }
.hot-row .nm { font-weight: 700; }
.hot-row .ex { color: var(--mute); font-size: 12px; margin-top: 1px; }
.hot-row .pc { font-weight: 800; text-align: right; }
.side-sep { margin: 14px 0 6px; padding-top: 14px; border-top: 1px solid var(--line); }

/* ───────── 강한 테마 카드 ───────── */
.theme-card { min-width: 0; border: 1px solid var(--up-line); }
.theme-head { display: grid; grid-template-columns: auto 1fr auto; gap: 10px; align-items: center; }
.theme-head .rk { width: 26px; height: 26px; border-radius: 8px; background: var(--up-bg); color: var(--up); font-size: 12px; font-weight: 700; display: grid; place-items: center; }
.theme-head .nm { font-weight: 800; font-size: 16px; }
.theme-head .pc { font-weight: 800; font-size: 20px; }
.theme-meta { color: var(--mute); font-size: 12px; margin: 4px 0 8px 36px; }
.stk { display: grid; grid-template-columns: 1fr auto auto; gap: 4px 12px; padding: 9px 0; border-top: 1px solid var(--line); align-items: baseline; }
.stk .nm { font-weight: 600; min-width: 0; overflow-wrap: anywhere; }
.stk .pc { font-weight: 800; text-align: right; font-variant-numeric: tabular-nums; }
.stk .am { color: var(--mute); font-size: 12px; text-align: right; min-width: 64px; }
.stk .tag { grid-column: 1 / -1; color: var(--mute); font-size: 11.5px; }

/* ───────── 신규주 ───────── */
.listing-today { display: grid; gap: 4px; }
.listing-today .nm { font-size: 20px; font-weight: 800; }
.kv { display: flex; flex-wrap: wrap; gap: 6px 16px; color: var(--mute); font-size: 12.5px; }
.kv b { color: var(--ink); font-weight: 700; }
.pill { display: inline-block; padding: 2px 9px; border-radius: 999px; background: var(--card-sub); border: 1px solid var(--line); font-size: 12px; color: var(--ink); }

/* ───────── 선물 수급 차트 ───────── */
.fut-row { display: grid; grid-template-columns: 1fr; gap: 12px; padding: 18px 0; border-top: 1px solid var(--line); }
.fut-row:first-child { border-top: 0; padding-top: 0; }
.fut-row:last-child { padding-bottom: 0; }
.fut-row .ttl { font-weight: 700; }
.fut-row .big { font-size: 30px; font-weight: 800; letter-spacing: -.5px; margin: 2px 0 6px; }
.fut-row .cmp { font-size: 12.5px; }
.fut-row .rng { color: var(--mute); font-size: 12px; margin-top: 2px; }
.fut-row .tag { display: inline-block; margin-top: 8px; padding: 3px 10px; border-radius: 8px; font-size: 12px; font-weight: 700; }
.tag.up { background: var(--up-bg); color: var(--up); }
.tag.down { background: var(--down-bg); color: var(--down); }
.tag.flat { background: var(--card-sub); color: var(--mute); }
.legend { display: flex; flex-wrap: wrap; gap: 4px 14px; color: var(--mute); font-size: 11.5px; margin-top: 4px; }
@media (min-width: 761px) { .fut-row { grid-template-columns: 280px 1fr; gap: 24px; align-items: center; } }

/* ───────── 일일 보고 ───────── */
.rep-head { font-size: 16px; font-weight: 800; line-height: 1.5; }
.rep-lines { list-style: none; margin: 12px 0 0; padding: 0; display: grid; }
.rep-lines li { padding: 10px 0; border-top: 1px solid var(--line); font-size: 13.5px; }
.rep-lines li:first-child { border-top: 0; }

/* ───────── 하단 ───────── */
.foot { margin-top: 28px; color: var(--mute); font-size: 12px; display: flex; flex-wrap: wrap; gap: 8px 14px; justify-content: center; align-items: center; }
.refresh { min-height: 36px; padding: 0 14px; border-radius: 999px; background: var(--card); border: 1px solid var(--line); cursor: pointer; }
.refresh:hover { border-color: var(--mute); }

/* =====================================================================
   모바일 (~760px)
   - 표를 가로 스크롤 대신 "행 카드"로 바꿔서 한 화면에서 다 읽히게 한다
   - 각 행: 첫 줄에 이름(왼쪽)과 핵심 값(오른쪽), 아래에 나머지 항목을 라벨과 함께 나열
   ===================================================================== */
@media (max-width: 760px) {
  :root { --pad: 16px; --gap: 12px; }
  body { padding-left: max(10px, env(safe-area-inset-left)); padding-right: max(10px, env(safe-area-inset-right)); }
  .chips { margin: 0 -10px; padding-left: 10px; padding-right: 10px; }
  .summary-list li { font-size: 15px; }
  .card { padding: 14px; }
  .card .value { font-size: 21px; }
  .idx-price { font-size: 24px; }
  .fut-row .big { font-size: 26px; }
  .block-title h2 { font-size: 16px; }

  .table-wrap { overflow: visible; background: transparent; }
  .rt { min-width: 0; }
  .rt thead { display: none; }
  .rt, .rt tbody { display: block; }
  .rt tr { display: grid; grid-template-columns: 1fr auto; gap: 3px 12px; padding: 12px 0; border-top: 1px solid var(--line); }
  .rt tbody tr:first-child { border-top: 0; padding-top: 2px; }
  .rt td { display: block; padding: 0; text-align: left; white-space: normal; }
  .rt td.m-title { grid-column: 1; grid-row: 1; font-size: 15px; font-weight: 700; }
  .rt td.m-value { grid-column: 2; grid-row: 1; text-align: right; font-size: 15px; font-weight: 800; }
  .rt td.m-hide { display: none; }
  .rt td.m-bar { grid-column: 1 / -1; order: -1; padding: 6px 0 4px; }
  .rt td.m-detail { grid-column: 1 / -1; display: flex; justify-content: space-between; gap: 12px; font-size: 12.5px; text-align: right; }
  .rt td.m-detail::before { content: attr(data-label); color: var(--mute); text-align: left; flex: none; }
  .rt tr.sep { display: block; padding: 16px 0 6px; border-top: 1px solid var(--line); }
  .rt tr.sep td { color: var(--mute); font-size: 12px; }
  .stocks-line { font-size: 12px; }
}
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } .chev { transition: none; } }


/* =====================================================================
   확장 섹션: AI 시황 · 테마 제어 · 뉴스 · 기록
   ===================================================================== */
.theme-bar { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 0 0 var(--gap); }
.theme-bar .grow { margin-left: auto; font-size: 12px; }
.seg, .mini { border: 1px solid var(--line); background: var(--card-sub); border-radius: 999px; padding: 6px 14px; font-size: 12.5px; cursor: pointer; min-height: 34px; }
.seg.on, .mini.on { background: var(--ink); color: var(--bg); border-color: var(--ink); }
.mini { padding: 3px 10px; min-height: 28px; font-size: 11.5px; }
.mini:disabled { opacity: .4; cursor: default; }
.theme-card.pinned { box-shadow: 0 0 0 2px var(--warn) inset; }
.theme-head { display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; }
.theme-head .ctl { margin-left: auto; display: flex; gap: 6px; }
.rk-d { font-size: 11px; font-weight: 800; margin-left: 4px; }
.mine { color: var(--warn); font-weight: 800; }
.stk2 { display: grid; grid-template-columns: minmax(0, 1fr) 62px 92px 48px; gap: 2px 8px; padding: 8px 0; border-top: 1px solid var(--line); align-items: baseline; }
.stk2.head { color: var(--mute); font-size: 11px; padding: 6px 0 4px; border-top: 0; }
.stk2.head span:not(:first-child) { text-align: right; }
.stk2 .nm { font-weight: 600; overflow-wrap: anywhere; }
.stk2 .pc { text-align: right; font-weight: 800; font-variant-numeric: tabular-nums; }
.stk2 .am { text-align: right; color: var(--mute); font-size: 12px; }
.stk2 .am em { font-style: normal; color: var(--ink); }
.stk2 .pg { text-align: right; font-size: 12px; font-variant-numeric: tabular-nums; }
.stk2 .tags { grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: 4px; }
.lead { display: inline-block; font-size: 10px; font-weight: 800; padding: 0 5px; margin-right: 5px; border-radius: 4px; background: var(--warn-bg); color: var(--warn); }
.nbadge { display: inline-block; font-size: 10px; font-weight: 800; padding: 0 5px; margin-left: 5px; border-radius: 4px; background: var(--down-bg); color: var(--down); }
.stag { font-size: 11px; padding: 1px 8px; border-radius: 999px; background: var(--card-sub); border: 1px solid var(--line); color: var(--mute); }
.stag.cool { background: var(--down-bg); border-color: var(--down-line); color: var(--down); }
.stag.new { background: var(--warn-bg); border-color: transparent; color: var(--warn); }
@media (max-width: 760px) { .stk2 { grid-template-columns: minmax(0, 1fr) 56px 84px 40px; font-size: 13px; } }

.top30 { margin-top: 14px; }
.top30 summary, .ai-news summary { cursor: pointer; color: var(--mute); font-size: 12.5px; padding: 6px 0; }

.ai-grid { display: grid; gap: var(--gap); grid-template-columns: 1fr; }
@media (min-width: 1080px) { .ai-grid { grid-template-columns: repeat(3, 1fr); align-items: start; } }
.ai-head { display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; }
.ai-title { font-weight: 800; font-size: 16px; }
.aib { font-size: 11px; font-weight: 700; padding: 1px 8px; border-radius: 999px; background: var(--card-sub); border: 1px solid var(--line); color: var(--mute); }
.aib.on { background: var(--down-bg); border-color: var(--down-line); color: var(--down); }
.ai-note { font-size: 12px; margin: 6px 0 0; }
.ai-headline { font-weight: 700; font-size: 15px; margin: 10px 0 6px; line-height: 1.5; }
.ai-sec h3 { font-size: 12.5px; color: var(--mute); margin: 14px 0 4px; font-weight: 700; }
.ai-sec ul { margin: 0; padding-left: 18px; }
.ai-sec li { margin: 4px 0; overflow-wrap: anywhere; }
a.ext { color: var(--down); text-decoration: none; }
a.ext:hover { text-decoration: underline; }
a.ref { font-size: 11px; margin-left: 3px; font-weight: 700; }
.ai-news ol { margin: 4px 0 0; padding-left: 18px; font-size: 12.5px; }
.ai-news li { margin: 3px 0; overflow-wrap: anywhere; }

.news-grid { display: grid; gap: 18px 28px; grid-template-columns: 1fr; }
@media (min-width: 900px) { .news-grid { grid-template-columns: repeat(2, 1fr); } }
.news-h { font-weight: 800; margin-bottom: 4px; }
.news-group ul { margin: 0; padding-left: 18px; }
.news-group li { margin: 4px 0; overflow-wrap: anywhere; }

.hcell { display: inline-block; margin: 2px 14px 2px 0; font-variant-numeric: tabular-nums; white-space: nowrap; }
.hcell i { font-style: normal; color: var(--mute); margin-right: 4px; }
.pager { display: flex; gap: 8px; justify-content: flex-end; margin-bottom: 8px; }

/* 표 칸 안의 긴 내용은 한 덩어리로 감싸 줄바꿈되게 한다 (모바일에서 칸이 가로 flex 로 바뀌므로) */
.hwrap { display: flex; flex-wrap: wrap; gap: 2px 14px; min-width: 0; flex: 1 1 auto; }
.hcell { margin: 0; }
@media (max-width: 760px) { .hwrap { justify-content: flex-end; } .rt.hist td.m-detail { flex-direction: column; gap: 4px; } .rt.hist .hwrap { justify-content: flex-start; } }

.stk2.head span { white-space: nowrap; }
@media (max-width: 760px) { .stk2 { grid-template-columns: minmax(0, 1fr) 56px 82px 56px; } .stk2.head { font-size: 10.5px; } }

tr.goto { cursor: pointer; }
tr.goto:hover td { background: var(--card-sub); }
.strong { font-weight: 800; }
.more { grid-column: 1 / -1; width: 100%; border: 0; background: transparent; color: var(--mute); padding: 8px 0 2px; font-size: 12.5px; cursor: pointer; border-top: 1px solid var(--line); margin-top: 4px; }
.theme-card.flash { animation: flash 1.2s ease; }
@keyframes flash { 0% { box-shadow: 0 0 0 4px var(--warn); } 100% { box-shadow: 0 0 0 0 transparent; } }
.stk2 .nm .rk-d { margin-left: 4px; }

.chart text.axis { font-size: 10.5px; fill: var(--mute); font-variant-numeric: tabular-nums; }
.chart text.axis.end { font-size: 11.5px; font-weight: 800; }
.chart text.axis.end.up { fill: var(--up); }
.chart text.axis.end.down { fill: var(--down); }
.chart line.grid { stroke: var(--line); stroke-width: 1; }

.chart text.axis.end { paint-order: stroke; stroke: var(--card); stroke-width: 3.5px; stroke-linejoin: round; }

.issue-list { margin: 0; padding-left: 18px; }
.issue-list li { margin: 6px 0; overflow-wrap: anywhere; }
#sec-today .theme-card .rt th, #sec-today .theme-card .rt td { padding-left: 6px; padding-right: 6px; }

/* 카드 안에 들어가는 작은 표는 전역 최소 너비(620px)를 풀고 글자를 약간 줄여 열이 잘리지 않게 한다 */
#sec-today .theme-card table { min-width: 0; table-layout: fixed; }
#sec-today .theme-card .rt th, #sec-today .theme-card .rt td { padding: 9px 4px; font-size: 13px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
#sec-today .theme-card .rt th:first-child, #sec-today .theme-card .rt td:first-child { width: 34%; }

/* 밤사이 미국 테마 표: '잘 따라간 종목' 칸은 줄바꿈을 허용하고, 태블릿 폭에서는 여백을 줄여 열이 잘리지 않게 한다 */
#sec-us td.left { white-space: normal; min-width: 150px; }
@media (min-width: 761px) and (max-width: 1100px) { #sec-us .rt th, #sec-us .rt td { padding-left: 8px; padding-right: 8px; font-size: 13px; } }

/* 2단 배치(거래 강도 | 수급)의 칸이 표의 최소 폭 때문에 부모보다 커져 페이지를 옆으로 밀지 않게 한다 */
.pair > * { min-width: 0; }
.pair .table-wrap { max-width: 100%; }

/* 작은 태블릿(761~900px): 표 여백을 줄이고 전역 최소 폭을 풀어 열이 잘리지 않게 한다 */
@media (min-width: 761px) and (max-width: 900px) {
  .rt { min-width: 0; }
  .rt th, .rt td { padding-left: 6px; padding-right: 6px; font-size: 12.5px; }
  #sec-us td.left { min-width: 110px; }
}

/* 2단 배치는 균등 분할, 표 글자·여백을 줄이고 마지막 열(한마디)은 줄바꿈 허용 */
@media (min-width: 1080px) {
  .pair { grid-template-columns: 1fr 1fr; }
  .pair .rt th, .pair .rt td { padding-left: 6px; padding-right: 6px; font-size: 14px; }       /* 두 표가 나란히 들어가는 좁은 영역: 15px 는 잘릴 수 있어 한 단계만 */
  .pair .rt th:last-child, .pair .rt td:last-child { white-space: normal; }
}
/* 작은 태블릿(761~900px): 셀 줄바꿈을 허용해 어떤 표도 잘리지 않게 한다 */
@media (min-width: 761px) and (max-width: 900px) { .rt th, .rt td { white-space: normal; } }
@media (min-width: 1080px) and (max-width: 1180px) { .pair .bar { min-width: 64px; } .pair .rt th, .pair .rt td { padding-left: 4px; padding-right: 4px; } }

/* 급등락 종목 뉴스 */
.mnews { margin: 0; padding: 0; list-style: none; min-width: 0; }
.mnews li { margin: 3px 0; overflow-wrap: anywhere; }
.tagc { display: inline-block; font-size: 10.5px; font-weight: 700; padding: 0 6px; border-radius: 4px; background: var(--card-sub); border: 1px solid var(--line); color: var(--mute); white-space: nowrap; }
#sec-mnews td.left { white-space: normal; }
@media (min-width: 761px) { #sec-mnews .rt td:last-child { min-width: 320px; } }
@media (max-width: 760px) { .rt td.m-news { grid-column: 1 / -1; font-size: 13px; } }

/* 강한 테마 종목 행의 현재가: 이름 옆에 작게 */
.stk2 .px { font-size: 11px; font-weight: 400; color: var(--mute); margin-left: 4px; font-variant-numeric: tabular-nums; }

/* NXT 애프터마켓 표: 이슈 칸은 줄바꿈 허용 */
#sec-nxt td.left, #sec-nxtpre td.left { white-space: normal; }
@media (min-width: 761px) { #sec-nxt .rt td:last-child, #sec-nxtpre .rt td:last-child { min-width: 300px; } }

/* ───────── PC 가독성: 글자를 한 단계 키우고, 열이 적은 표는 값을 크게 ───────── */
@media (min-width: 761px) {
  body { font-size: 15px; }
  th { font-size: 13px; }
  th, td { padding: 13px 14px; }
  table.night { min-width: 0; table-layout: fixed; }                 /* 열을 같은 폭으로 나눈다 (내용 길이에 따라 간격이 들쭉날쭉하지 않게) */
  table.night td, table.night th { text-align: center; }
  table.night td.night-v { white-space: normal; overflow-wrap: anywhere; }
  table.night td.night-v { font-size: 20px; font-weight: 800; letter-spacing: -.3px; }
  table.night th { font-size: 13px; }
  .block-title h2 { font-size: 18px; }
  .block-title .meta, .src { font-size: 13px; }
  .sub-title, .bar-head { font-size: 13px; }
  .inv { font-size: 14px; }
  .oneliner { font-size: 14px; }
  .mute[style*="font-size:12px"] { font-size: 13px !important; }
}

/* 야간선물(모바일): 칸마다 '라벨 ... 값' 한 줄. 값은 크게 */
@media (max-width: 760px) {
  .rt.night tr { display: block; padding: 4px 0; }
  .rt.night td.night-v { font-size: 17px; font-weight: 800; padding: 9px 0; border-top: 1px solid var(--line); align-items: baseline; }
  .rt.night td.night-v:first-child { border-top: 0; }
}

/* =====================================================================
   글자 크기 최소선 (실제 화면 측정 기반: PC 글자의 38%, 모바일의 66%가 작았다)
   판단에 쓰는 숫자(현재가·거래대금·배수·순위 변동)는 14px, 보조 문구는 13.5px, 작은 칩·뱃지는 12.5px.
   모바일은 한 단계 작게 (13 / 12.5 / 11.5). 위쪽 규칙보다 뒤에 와야 이긴다.
   ===================================================================== */
:root { --fs-num: 14px; --fs-sub: 13.5px; --fs-chip: 12.5px; }
@media (max-width: 760px) { :root { --fs-num: 13px; --fs-sub: 12.5px; --fs-chip: 11.5px; } }

/* 판단에 쓰는 숫자 */
span.px, span.am, td em, .stk2 em, span.pg, .rk-d, .hot-row .pg, .stk2 .am { font-size: var(--fs-num); }
.card .sub, .card .label, .theme-meta, .hot-row .ex, .stocks-line, .sched-row .note, .sched-row .when, .sched-row .dday { font-size: var(--fs-sub); }
.hot-row .rk, .stk2 .no, span.rk, span.when, span.mute.grow, .ai-note, .src, .block-title .meta, .sub-title, .bar-head { font-size: var(--fs-sub); }
.theme-bar .grow { font-size: var(--fs-sub); }

/* 칩 · 뱃지 · 태그 */
.badge, span.pill, .tagx, .stag, .aib, span.tagc, .tagc { font-size: var(--fs-chip); }
button.mini, .seg { font-size: var(--fs-chip); }
.lead, .nbadge { font-size: 11px; }                    /* 이름 옆 '대장'·'N' 표식은 글자보다 작게 둔다 */
a.ext.ref { font-size: var(--fs-chip); }

/* 카드(KOSPI·KOSDAQ) 안 투자자 막대와 한 줄 요약 */
.inv { font-size: calc(var(--fs-num) + 1px); }
.oneliner { font-size: calc(var(--fs-num) + 1px); line-height: 1.6; }
.idx-head .code { font-size: 15px; }
.idx-chg { font-size: 16px; }
.side-title { font-size: 16px; }
@media (min-width: 761px) {
  .inv { grid-template-columns: 52px 1fr 84px; }          /* 글자가 커진 만큼 이름·값 칸을 넓힌다 */
  .card .label { font-size: var(--fs-sub); }
}
tr.sep td { font-size: var(--fs-sub); }

/* 위 최소선 규칙보다 구체적인 기존 규칙(.stk2 .px 등)이 이기던 요소들을 같은 선택자로 다시 지정 */
.stk2 .px { font-size: var(--fs-num); }
.stk2 .pg, .stk2 .am { font-size: var(--fs-num); }
.hot-row .rk, .stk2 .no { font-size: var(--fs-sub); }
.rk-d { font-size: var(--fs-chip); }
button.refresh { font-size: var(--fs-sub); }
.stk2.head, .stk2.head span { font-size: var(--fs-chip); }
.stk2 .nbadge, .stk2 .lead { font-size: 11px; }
span.t-warn, .note.t-warn { font-size: var(--fs-sub); }

.nw { white-space: nowrap; }
.hot-row .ex { word-break: keep-all; }

/* ───────── 업종 표: 코스피 | 코스닥 좌우 2단, 행 압축 ───────── */
.sect-grid { display: grid; gap: 18px; grid-template-columns: 1fr; }
@media (min-width: 1240px) {
  .sect-grid { grid-template-columns: 1fr 1fr; align-items: start; gap: 22px; }
  .rt.sect { min-width: 0; table-layout: auto; }
  .rt.sect th, .rt.sect td { padding: 8px 10px; }                         /* 행 높이 50px -> 약 38px (글자는 그대로) */
  .rt.sect td:first-child { width: 118px; white-space: nowrap; }
  .rt.sect th:nth-child(n+3), .rt.sect td:nth-child(n+3) { width: 52px; }
  .rt.sect td:nth-child(2), .rt.sect th:nth-child(2) { width: 72px; }
  .rt.sect td:nth-child(6), .rt.sect th:nth-child(6) { width: 60px; }
  .rt.sect td:last-child { width: 110px; padding-right: 12px; }
  .rt.sect .bar { min-width: 80px; }
@media (min-width: 761px) and (max-width: 1239px) {
  .rt.sect th, .rt.sect td { padding: 8px 10px; }
}
}

.rt.sect tr.fold td { padding: 4px 8px; text-align: center; background: transparent; }
.rt.sect tr.fold .more { width: 100%; }
@media (max-width: 760px) { .rt.sect tr.fold { display: block; padding: 6px 0; } .rt.sect tr.fold td { display: block; } }

.cnt { white-space: nowrap; }                   /* 숫자와 (상한 N) 을 한 덩어리로: 모바일에서 값이 가운데로 갈라지지 않게 */

/* ───────── 강한 테마 한눈에 표: 열 간격을 모으고 행을 압축 ───────── */
@media (min-width: 761px) {
  .rt.glance { min-width: 0; }
  .rt.glance th, .rt.glance td { padding: 8px 12px; }
  .rt.glance th:first-child, .rt.glance td:first-child { width: 36px; text-align: center; }
  .rt.glance th:nth-child(2), .rt.glance td:nth-child(2) { width: 24%; }
  .rt.glance th:nth-child(3), .rt.glance td:nth-child(3) { width: 90px; }
  .rt.glance th:nth-child(4), .rt.glance td:nth-child(4) { width: 170px; }
  .rt.glance th:nth-child(5), .rt.glance td:nth-child(5) { width: 110px; }
  .rt.glance th:nth-child(6), .rt.glance td:nth-child(6) { width: 110px; }
}

@media (min-width: 1080px) {
  .rt.glance { max-width: 980px; }                       /* 표를 좁혀 열 사이가 벌어지지 않게 (오른쪽은 비워 둔다) */
  .rt.glance th:nth-child(7), .rt.glance td:nth-child(7) { width: 190px; }
}

/* NXT 애프터/프리 표: 업종마다 표가 따로 나뉘므로 열 폭을 고정해 숫자 위치를 맞춘다 */
@media (min-width: 761px) {
  .rt.nxt { table-layout: fixed; min-width: 0; }
  .rt.nxt th:nth-child(1) { width: 17%; }
  .rt.nxt th:nth-child(2) { width: 13%; }
  .rt.nxt th:nth-child(3), .rt.nxt th:nth-child(4) { width: 11%; }
  .rt.nxt th:last-child { width: auto; }
  .rt.nxt td { overflow-wrap: anywhere; }
}

/* 상장일 미정 공모주 표: 열이 5개라 폭을 제한해 간격이 벌어지지 않게 */
@media (min-width: 1080px) { .rt.pending { max-width: 880px; } .rt.pending th, .rt.pending td { padding: 8px 12px; } }

/* 요약 언급 기사: 제목 연결 기사와 구분되는 작은 표시와 이유 문장 */
.viaS { display: inline-block; font-size: var(--fs-chip); padding: 0 6px; border-radius: 6px; background: #efe4c9; color: #7a5b12; font-weight: 700; vertical-align: 1px; }
.mnews .snip { margin: 2px 0 6px 2px; font-size: var(--fs-sub); color: var(--mute); line-height: 1.5; }

/* 미국 분위기: 판정 한 줄 + 근거 표 + 값 표 */
.mood-head { margin: 0 0 12px; font-size: 16px; line-height: 1.6; }
.mood-tag { display: inline-block; padding: 1px 10px; margin-right: 6px; border-radius: 8px; font-weight: 800; background: rgba(0,0,0,.06); }
.mood-tag.t-down { background: var(--down-bg, #e3ecf9); } .mood-tag.t-up { background: var(--up-bg, #fbe5e5); }
@media (min-width: 1080px) { .rt.mood-sig, .rt.mood-val { max-width: 920px; } .rt.mood-val { max-width: 640px; } }

/* 뉴스 신선도: 신규 = 새로 나온 재료, 진행 = 같은 이슈 후속, 기존 = 이미 알려진 재료 */
.fresh { font-weight: 800; font-size: var(--fs-chip); margin-right: 2px; }
.fresh.f-new { color: #1f9d55; } .fresh.f-follow { color: #b7791f; } .fresh.f-old { color: #c0392b; }
.fage { font-size: var(--fs-chip); }

@media (min-width: 1080px) { .rt.mood-news { max-width: 1100px; } }

.rt.mood-news td, .rt.mood-news th { text-align: left; }
.rt.mood-news td:first-child { white-space: nowrap; }

/* 텔레그램 여론·공시 표 */
.unv { display: inline-block; font-size: var(--fs-chip); padding: 0 6px; border-radius: 6px; background: #f3e1c4; color: #8a4b08; font-weight: 700; }
.stale-note { margin: 0 0 10px; padding: 6px 10px; border-radius: 8px; background: #f8e3e3; color: #a12828; font-size: var(--fs-sub); }
.rt.tg td.m-news .snip { margin: 0; }
@media (min-width: 1080px) { .rt.tg { max-width: 1180px; } .rt.tg td:last-child { min-width: 360px; } .rt.dart { max-width: 1100px; } }

/* 텔레그램 여론·공시: 원문·공시 제목 열은 줄바꿈하고 나머지 열은 한 줄 */
.rt.tg td, .rt.dart td { white-space: nowrap; }
.rt.tg td.m-news, .rt.dart td.m-news { white-space: normal; word-break: keep-all; overflow-wrap: anywhere; line-height: 1.5; }
@media (min-width: 1080px) { .rt.tg td:last-child { min-width: 0; width: 44%; } .rt.dart td.m-news { width: 52%; } }


/* =====================================================================
   홈 화면 (2026-10-06 개편)
   - 순서: 머리(국내/해외) → 지수 띠 → 요약+이슈 → 강한 테마 → 순위 카드 6개 → 자세히 보기(기존 섹션)
   - 숫자는 고정폭 숫자(tabular-nums)로 오른쪽 정렬해 위아래 자릿수가 맞게 한다
   ===================================================================== */
body { font-variant-numeric: tabular-nums; letter-spacing: -0.01em; }

/* ── 머리 ── */
.head { display: flex; align-items: center; gap: 10px 16px; flex-wrap: wrap; padding: calc(18px + env(safe-area-inset-top)) 2px 6px; }
.head h1 { margin: 0; font-size: 23px; font-weight: 800; letter-spacing: -0.03em; }
.head-meta { color: var(--mute); font-size: 13px; }
.head .refresh { margin-left: auto; }
.tabs { display: inline-flex; padding: 3px; border-radius: 10px; background: var(--card); border: 1px solid var(--line); }
.tab { min-height: 34px; min-width: 56px; padding: 0 14px; border: 0; border-radius: 7px; background: none; color: var(--mute); font-weight: 600; cursor: pointer; }
.tab.on { background: var(--accent); color: #fff; }
@media (prefers-color-scheme: dark) { .tab.on { color: #1c1f25; } .chip.active { color: #1c1f25; } }
.chips { background: var(--bg); }

/* ── 공통 카드 ── */
.hc { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius-lg); padding: 20px 22px; min-width: 0; scroll-margin-top: calc(64px + env(safe-area-inset-top)); }
.hc-head { display: flex; align-items: center; gap: 8px; margin: 0 0 12px; min-height: 32px; }
.hc-head h3 { margin: 0; font-size: 17px; font-weight: 700; letter-spacing: -0.02em; white-space: nowrap; flex: none; }   /* 제목은 한 줄 (모바일에서 '오늘 강 / 한 테마'로 끊기던 것), 설명이 대신 줄바꿈 */
.hc-head .hc-meta { min-width: 0; }
.hc-meta { color: var(--mute); font-size: 12.5px; }
.hc-go { margin-left: auto; min-height: 30px; padding: 0 12px; border-radius: 8px; border: 1px solid var(--line); background: var(--card-sub); color: var(--mute); font-size: 12.5px; cursor: pointer; }
.hc-go:hover { color: var(--ink); border-color: var(--mute); }
.hc-empty { margin: 4px 0; color: var(--mute); font-size: 13.5px; line-height: 1.6; }
.xb { padding: 1px 7px; border-radius: 6px; font-size: 11.5px; font-weight: 700; }
.xb-KRX { background: var(--down-bg); color: var(--down); }
.xb-NXT { background: var(--accent-bg); color: var(--accent); }
.xb-통합 { background: #f1ecfb; color: #7a4fd0; }
@media (prefers-color-scheme: dark) { .xb-통합 { background: #2b2540; color: #b9a2f2; } }

/* ── 지수 띠 ── */
.strip { display: grid; gap: var(--gap); grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); margin-top: 10px; scroll-margin-top: 80px; }
@media (min-width: 1080px) { .strip.us { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.sc { display: flex; align-items: center; gap: 10px; background: var(--card); border: 1px solid var(--line); border-radius: var(--radius-lg); padding: 16px 18px; min-width: 0; }
.sc-txt { display: flex; flex-direction: column; flex: 1 1 auto; min-width: min-content; }   /* 숫자(줄바꿈 없음) 폭만큼은 지키고 나머지 글은 줄바꿈 */
.sc-lb { color: var(--mute); font-size: 13px; }
.sc-val { font-size: 21px; font-weight: 700; letter-spacing: -0.02em; line-height: 1.3; white-space: nowrap; }   /* 지수 숫자가 '2,642.5 / 6' 처럼 끊기지 않게: 좁으면 추이선이 줄어든다 */
.sc-chg { font-size: 13.5px; font-weight: 600; }
.sc-ex { color: var(--mute); font-size: 12px; margin-top: 2px; }
.sc-chg .mute { font-weight: 400; font-size: 12.5px; }
.spark { flex: none; width: 112px; height: 44px; }
.sp-base { stroke: var(--mute); stroke-width: 1; stroke-dasharray: 3 3; opacity: .6; }
.sp-gap { fill: var(--card-sub); }                 /* 수집 전 구간: 비워 두고 옅은 바탕만 */
.sp-line { fill: none; stroke-width: 2; stroke-linejoin: round; stroke-linecap: round; }
.sp-line.t-up { stroke: var(--up); } .sp-line.t-down { stroke: var(--down); } .sp-line.t-flat { stroke: var(--mute); }

/* ── 요약 + 이슈 보드 ── */
.board { display: grid; gap: 20px 28px; grid-template-columns: minmax(0, 1fr); margin-top: var(--gap); }   /* minmax(0): 긴 줄이 카드를 화면 밖으로 밀지 않게 (340~380px 넘침) */
@media (min-width: 1080px) { .board { grid-template-columns: minmax(0, 6fr) minmax(0, 7fr); } }
.sum-one { margin: 0 0 10px; font-size: 15px; line-height: 1.65; font-weight: 600; }
.sum-lines { margin: 0 0 10px; padding-left: 18px; line-height: 1.7; font-size: 14px; }
.sum-lines li::marker { color: var(--mute); }
.sum-mood { margin: 8px 0; font-size: 14px; line-height: 1.6; }
.sum-mood.big { font-size: 15px; }
.sum-brief { margin: 8px 0; font-size: 13.5px; line-height: 1.6; color: var(--ink); padding: 10px 12px; border-radius: 10px; background: var(--card-sub); }
.sum-chips { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; }
.sum-chips span { padding: 3px 10px; border-radius: 999px; background: var(--card-sub); border: 1px solid var(--line); font-size: 12.5px; }
.mood-tag { font-weight: 700; padding: 2px 8px; border-radius: 6px; background: var(--card-sub); }
.iss-grid { display: grid; gap: 18px 24px; grid-template-columns: 1fr; align-content: start; }
@media (min-width: 761px) { .iss-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.iss .hc-head { margin-bottom: 6px; }
.iss .hc-head h3 { font-size: 15px; }
.iss-list { list-style: none; margin: 0; padding: 0; }
.iss-list li { display: grid; gap: 2px; padding: 8px 0; border-top: 1px solid var(--line); font-size: 13.5px; line-height: 1.5; }
.iss-list li:first-child { border-top: 0; }
.iss-h { font-size: 12.5px; color: var(--mute); }
.iss-h b { color: var(--ink); font-size: 13.5px; }
.iss-t a { color: var(--ink); text-decoration: none; }
.iss-t a:hover { text-decoration: underline; }
.iss-m { color: var(--mute); font-size: 12px; }

/* ── 종목 한 줄 (레퍼런스: 원형 아이콘 · 이름 / 오른쪽 위 값, 아래 등락) ── */
.li-list, .li-grid { list-style: none; margin: 0; padding: 0; }
.li { display: flex; align-items: center; gap: 12px; padding: 9px 0; min-width: 0; }
.av { flex: none; width: 34px; height: 34px; border-radius: 50%; display: grid; place-items: center; font-size: 13px; font-weight: 700;
  color: hsl(var(--h) 45% 32%); background: hsl(var(--h) 60% 92%); }
@media (prefers-color-scheme: dark) { .av { color: hsl(var(--h) 60% 80%); background: hsl(var(--h) 25% 24%); } }
.li-rk { flex: none; width: 24px; text-align: center; color: var(--mute); font-weight: 700; }
.li-main { display: flex; flex-direction: column; min-width: 0; flex: 1; }
.li-nm { font-size: 14.5px; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.li-sub { color: var(--mute); font-size: 12px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.li-val { display: flex; flex-direction: column; align-items: flex-end; flex: none; text-align: right; }
.li-top { font-size: 14px; font-weight: 600; }
.li-bot { font-size: 12.5px; }

/* ── 강한 테마 보드 ── */
.tb { display: grid; gap: 14px 20px; grid-template-columns: 1fr; }
@media (min-width: 1080px) { .tb { grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); } }
.tb-list { list-style: none; margin: 0; padding: 0; }
.tb-item { display: grid; grid-template-columns: 24px minmax(0, 1fr) auto 72px; align-items: center; gap: 10px; width: 100%; min-height: 40px; padding: 0 10px;
  border: 0; border-radius: 10px; background: none; text-align: left; cursor: pointer; }
.tb-item:hover { background: var(--card-sub); }
.tb-item.on { background: var(--accent-bg); }
.tb-item.on .tb-nm { color: var(--accent); font-weight: 700; }
.tb-nm { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 600; }
.tb-amt { color: var(--mute); font-size: 12.5px; }
.tb-chg { text-align: right; font-weight: 600; font-size: 13.5px; }
.tb-detail { border: 1.5px solid var(--accent); border-radius: 14px; padding: 16px 20px; min-width: 0; }
.tb-dh { display: flex; align-items: center; flex-wrap: wrap; gap: 8px 10px; margin-bottom: 6px; font-size: 17px; }
.tb-dh .mute { font-size: 12.5px; }
.tb-rank { display: inline-grid; place-items: center; width: 26px; height: 26px; border-radius: 50%; background: var(--accent); color: #fff; font-size: 13px; font-weight: 700; }
.tb-dh .pill.t-up { background: var(--up-bg); border-color: var(--up-line); color: var(--up); }
.tb-dh .pill.t-down { background: var(--down-bg); border-color: var(--down-line); color: var(--down); }
.li-grid { display: grid; grid-template-columns: 1fr; column-gap: 32px; }
@media (min-width: 761px) { .li-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* ── NXT 종목 표 ── */
#sec-nxtboard { margin-top: var(--gap); }
#sec-nxtboard .hc-head { flex-wrap: wrap; gap: 8px 12px; }
.nxt-sec { font-size: 12px; font-weight: 400; }
.nxt-est { margin: 0 0 8px; font-size: 13px; }
.rt.nxtb td.m-news { min-width: 150px; white-space: normal; }
.nxt-ref { font-size: 12.5px; color: var(--mute); }
.nxt-hint { color: var(--warn, #b45309); font-weight: 700; }
.nxt-ctx { display: block; margin-top: 2px; font-size: 12.5px; color: var(--mute); line-height: 1.5; }
.nxt-ref a { color: var(--mute); }
.nxt-rank { display: none; margin-right: 6px; font-size: 12px; }
@media (max-width: 760px) { .rt td.m-skip { display: none; } .nxt-rank { display: inline; } }

/* ── 미국 프리장 ── */
#sec-uspre, #sec-pick { margin-top: var(--gap); }
.pre-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.pre-chip { display: inline-flex; gap: 5px; align-items: baseline; padding: 3px 8px; border-radius: 7px; background: var(--card-sub); border: 1px solid var(--line); font-size: 12.5px; color: var(--ink); }   /* 2026-10-07 한눈에 보이게 작게 */
.pre-chip b { font-weight: 800; }
.pre-chip.t-up b { color: var(--up); } .pre-chip.t-down b { color: var(--down); }

/* ── NXT 종가매매 보드 (MASTER) ── */
.pk { border: 2px solid var(--accent); }
.pk-top { display: grid; gap: 16px 28px; grid-template-columns: 1fr; margin-bottom: 14px; }
@media (min-width: 1080px) { .pk-top { grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); } .pk-top.solo { grid-template-columns: minmax(0, 1fr); max-width: 760px; } }
.pk-wait { margin: 8px 0 0; }
.pk-verdict { padding: 12px 14px; border-radius: 12px; background: var(--card-sub); margin-bottom: 10px; }
.pk-verdict > div { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px; }
.pk-regime { font-size: 20px; font-weight: 800; }
.pk-stance { padding: 3px 10px; border-radius: 999px; font-size: 13px; font-weight: 800; color: #fff; background: var(--mute); }
.pk-stance.st-go { background: #1f8a4c; } .pk-stance.st-warn { background: #c77700; } .pk-stance.st-hold { background: var(--down); }
.pk-note { margin: 6px 0 0; font-size: 14px; line-height: 1.55; }
.pk-sub { margin: 14px 0 6px; font-size: 14px; font-weight: 800; }
.pk-ai .pk-sub { margin-top: 0; }
.pk-cands .hc-head { flex-wrap: wrap; gap: 6px 12px; margin-bottom: 6px; }
.pk-cands .pk-sub { margin: 0; }
.pk-tag { display: inline-block; margin: 1px 4px 1px 0; padding: 1px 7px; border-radius: 6px; font-size: 12px; background: var(--card-sub); border: 1px solid var(--line); color: var(--ink); }
.pk-tag.t-up { color: var(--up); border-color: var(--up-line); background: var(--up-bg); }
.pk-tag.t-down { color: var(--down); border-color: var(--down-line); background: var(--down-bg); }
.rt.pk-cand td.m-news { min-width: 130px; white-space: normal; }
.rt.pk-trade td.m-news { min-width: 100px; white-space: normal; }
.rt.pk-cand th, .rt.pk-trade th { white-space: nowrap; }
.m-only { display: none; font-size: 12px; font-weight: 400; }
@media (max-width: 760px) { .m-only { display: inline; } }
.pk-sig { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: max-content minmax(0, 1fr) auto; column-gap: 10px; }   /* 이름 칸 = 가장 긴 이름 폭 (한 줄) */
.pk-sig li { grid-column: 1 / -1; display: grid; grid-template-columns: subgrid; gap: 8px 10px; align-items: baseline; padding: 7px 4px; border-top: 1px solid var(--line); font-size: 14px; }
.pk-sig li:first-child { border-top: 0; }
.sg-n { font-weight: 700; white-space: nowrap; } .sg-v { color: var(--ink); } .sg-p { text-align: right; font-weight: 800; }
.sg-p.t-flat { color: var(--mute); }
@media (min-width: 1080px) { .pk-sig li { font-size: 15.5px; } }
.trade-form { display: grid; gap: 8px 10px; grid-template-columns: repeat(2, minmax(0, 1fr)); padding: 12px; border-radius: 12px; background: var(--card-sub); margin-bottom: 10px; }
@media (min-width: 1080px) { .trade-form { grid-template-columns: repeat(6, minmax(0, 1fr)); } }
.trade-form label { display: flex; flex-direction: column; gap: 3px; font-size: 12.5px; color: var(--mute); }
.trade-form label.wide { grid-column: 1 / -1; }
.trade-form input { font: inherit; font-size: 15px; color: var(--ink); padding: 8px 10px; border: 1px solid var(--line); border-radius: 8px; background: var(--card); min-width: 0; }
.tf-code { margin-left: 6px; font-size: 11.5px; font-variant-numeric: tabular-nums; }
.tf-btns { grid-column: 1 / -1; display: flex; gap: 8px; align-items: center; }
button.lnk { border: 0; background: none; color: var(--accent); cursor: pointer; font: inherit; font-size: 13px; padding: 2px 4px; }
@media (min-width: 1080px) { .pk-note { font-size: 15.5px; } .pk-sub { font-size: 15.5px; } .pk-tag { font-size: 13px; } .pre-chip { font-size: 13px; } }

/* ── 변수 분석 ── */
.pk-learn { margin-top: 18px; padding-top: 14px; border-top: 1px solid var(--line); }
.pk-learn .hc-head { flex-wrap: wrap; gap: 8px 12px; }
.lr-prog { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; margin: 4px 0 10px; font-size: 13px; color: var(--mute); }
.lr-snap { padding: 2px 9px; border-radius: 999px; border: 1px solid var(--line); background: var(--card-sub); }
.lr-snap.on { color: var(--up); border-color: var(--up-line); background: var(--up-bg); font-weight: 700; }
.lr-base { margin: 0 0 8px; font-size: 14.5px; }
.lr-best { margin: 0 0 10px; padding-left: 18px; font-size: 14px; line-height: 1.7; }
.rt tr.lr-thin td { opacity: .55; }
.rt.lr-t tr.lr-head td { background: var(--card-sub); font-weight: 700; color: var(--ink); text-align: left; }
@media (max-width: 760px) { .rt.lr-t tr.lr-head { display: block; padding: 8px 4px 2px; } .rt.lr-t tr.lr-head td { display: block; background: none; } }
@media (min-width: 1080px) { .lr-prog { font-size: 14px; } .lr-base { font-size: 16px; } .lr-best { font-size: 15.5px; } }

/* ── 지표 띠 실시간 갱신 표시 ── */
.sc.flash { animation: scflash 1.2s ease-out; }
@keyframes scflash { 0% { box-shadow: 0 0 0 2px var(--accent-bg) inset, 0 0 0 1px var(--accent); } 100% { box-shadow: none; } }
#live-at { font-size: 12px; color: var(--mute); margin-left: 6px; }
@media (prefers-reduced-motion: reduce) { .sc.flash { animation: none; } }

/* ── 미국 프리장: 섹터 → 종목 → 한국 테마 ── */
.pre-sum { margin: 0 0 8px; font-size: 14px; }
.pre-sub { margin: 4px 0 6px; font-size: 13px; font-weight: 700; color: var(--mute); }
.pre-macro { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 8px; margin-bottom: 14px; }
.mac { display: grid; grid-template-columns: 1fr auto; align-items: baseline; gap: 0 6px; padding: 8px 10px; border-radius: 10px; border: 1px solid var(--line); background: var(--card-sub); }
.mac-l { font-size: 12.5px; color: var(--mute); }
.mac-t { justify-self: end; font-size: 11px; font-weight: 800; padding: 0 6px; border-radius: 5px; }
.mac-v { font-size: 17px; font-weight: 800; }
.mac-c { justify-self: end; font-size: 13px; font-weight: 700; }
.mac.burden { border-color: #f1d9a8; background: var(--warn-bg); } .mac.burden .mac-t { color: var(--warn); background: #fff3dd; } .mac.burden .mac-c { color: var(--warn); }
.mac.ease .mac-t { color: #0f8a4b; background: #ecfbf2; } .mac.ease .mac-c { color: #0f8a4b; }
@media (min-width: 1080px) { .pre-sub { font-size: 14px; } .mac-l { font-size: 13.5px; } .mac-v { font-size: 19px; } .mac-c { font-size: 14px; } }
.pre-table { border-top: 1px solid var(--line); }
.pre-row { display: grid; grid-template-columns: 180px minmax(0, 1fr) minmax(0, 260px); gap: 6px 14px; align-items: center; padding: 6px 2px; border-bottom: 1px solid var(--line); }
.pre-row.pre-h { font-size: 12px; color: var(--mute); padding: 6px 2px; }
.pre-row.idx { background: var(--card-sub); }
.pre-name { display: grid; grid-template-columns: auto auto; justify-content: start; align-items: baseline; gap: 2px 8px; }
.pre-name b { font-size: 14px; }
.pre-avg { font-size: 14px; font-weight: 800; }
.pre-bar { grid-column: 1 / -1; display: block; height: 5px; border-radius: 3px; background: var(--track); overflow: hidden; width: 160px; }
.pre-bar span { display: block; height: 100%; }
.pre-bar .t-up { background: var(--up); } .pre-bar .t-down { background: var(--down); }
.pre-items { display: flex; flex-wrap: wrap; gap: 5px; }
.pre-chip.etf { border-width: 2px; }
.pre-reg { font-style: normal; font-size: 11px; font-weight: 600; opacity: .8; }
@media (min-width: 1080px) { .pre-reg { font-size: 11.5px; } }
.pre-kr { display: flex; flex-wrap: wrap; gap: 3px 10px; font-size: 12.5px; }
.pre-kr-t { white-space: nowrap; }
@media (max-width: 900px) {
  .pre-row { grid-template-columns: 1fr; }
  .pre-row.pre-h { display: none; }
  .pre-bar { width: 100%; }
  .pre-kr::before { content: "한국 테마"; color: var(--mute); font-size: 12px; }          /* 머리글이 없는 좁은 화면에서만 */
  .pre-kr:empty, .pre-kr > .mute:only-child { display: none; }
}
@media (min-width: 1080px) { .pre-sum { font-size: 15px; } .pre-name b, .pre-avg { font-size: 15px; } .pre-kr { font-size: 13px; } }

.pk-sig li.sg-flat .sg-v { font-size: 13px; line-height: 1.5; white-space: normal; }

.bt { font-size: 11px; font-weight: 800; padding: 0 5px; border-radius: 4px; }
.bt-b { color: var(--warn); background: var(--warn-bg); } .bt-e { color: #0f8a4b; background: #ecfbf2; }

.fold { border-top: 1px solid var(--line); margin-top: 10px; }
.fold-h { width: 100%; display: flex; align-items: center; gap: 8px; background: none; border: 0; padding: 12px 2px; font-size: 15px; cursor: pointer; color: var(--ink); text-align: left; }
.fold-h .chev-s { margin-left: auto; color: var(--mute); font-size: 12px; }
.fold-b { padding-bottom: 6px; }
.fold-b .pk-learn { margin-top: 0; padding-top: 0; border-top: 0; }

/* ── 장전 매도 점검 ── */
#sec-morning { margin-top: var(--gap); }
.mc-tip { font-size: 13px; color: var(--ink); white-space: normal; }
.rt.tight td.m-news .mc-tip { display: block; min-width: 220px; }
#sec-morning td.m-news { white-space: normal; }
#sec-morning .pk-tags { flex-wrap: wrap; }
#sec-morning .pk-tag { max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
@media (min-width: 1080px) { .mc-tip { font-size: 14px; } }

/* ── MASTER 표시 ── */
.mode-badge { display: inline-block; vertical-align: middle; margin-left: 6px; padding: 2px 8px; border-radius: 6px; background: var(--accent); color: #fff; font-size: 12px; font-weight: 700; letter-spacing: .02em; }
a.refresh { text-decoration: none; display: inline-flex; align-items: center; color: inherit; }
.head .refresh ~ .refresh { margin-left: 0; }      /* 새로고침 · 전체 시황 · 로그아웃을 오른쪽에 붙여 한 묶음으로 (여러 개가 margin-left:auto 면 빈 공간을 나눠 가져 새로고침이 가운데 떠 보였다, 2026-10-07) */
a.refresh { font-size: var(--fs-sub); }
@media (min-width: 1080px) { a.refresh { font-size: 14.5px; min-height: 40px; } }

/* ── 일정: 결과별 시장 영향 ── */
.sched-row .impact { list-style: none; margin: 6px 0 2px; padding: 0; font-size: 13px; line-height: 1.6; }
.sched-row .impact li { padding: 1px 0; }
.imp-if { font-weight: 700; }
.imp-if.t-flat { color: var(--mute); }
@media (min-width: 1080px) { .sched-row .impact { font-size: 14.5px; } }

/* ── 계기판 + 시황 (2단) ── */
.duo { display: grid; gap: var(--gap); grid-template-columns: 1fr; margin-top: var(--gap); align-items: start; }
@media (min-width: 1080px) { .duo { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); } }
.duo > .hc { margin-top: 0; }
@media (max-width: 1079px) { .duo > .phase { order: -1; } }      /* 좁은 화면에서는 AI 시황을 먼저, 계기판은 그 아래 */
.hc-go { white-space: nowrap; flex: none; }
.issues { margin-top: var(--gap); }

/* 시장 계기판: 막대 */
.g-mk { padding: 4px 0 12px; border-bottom: 1px solid var(--line); margin-bottom: 10px; }
.g-mk:last-of-type { border-bottom: 0; }
.g-h { margin: 0 0 8px; display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 10px; font-size: 16px; }
.g-h b { font-size: 17px; }
.g-v { flex-basis: 100%; font-size: 13.5px; font-weight: 700; color: var(--ink); }
.g-row { display: grid; grid-template-columns: 40px minmax(0, 1fr); gap: 10px; align-items: start; padding: 5px 0; }
.g-lb { white-space: nowrap; }                     /* 라벨은 두 글자(주도·종목·수급·업종): 줄바꿈되지 않게 */
.g-lb { font-size: 12.5px; color: var(--mute); font-weight: 700; padding-top: 2px; }
.g-body { min-width: 0; }
.g-bar { position: relative; height: 10px; border-radius: 6px; background: var(--track); overflow: hidden; }
.g-bar .g-fill { position: absolute; left: 0; top: 0; bottom: 0; border-radius: 6px; }
.g-fill.t-up { background: var(--up); } .g-fill.t-down { background: var(--down); } .g-fill.t-flat { background: var(--mute); }
.g-bar.split { display: flex; }
.g-up { background: var(--up); opacity: .85; } .g-down { background: var(--down); opacity: .85; }
.g-txt { display: block; margin-top: 4px; font-size: 13px; }
.g-txt.g-sub { margin-top: 1px; }
.g-flow { display: grid; grid-template-columns: 52px minmax(0, 1fr) 76px 38px; gap: 8px; align-items: center; padding: 2px 0; }   /* 마지막 칸: 거래대금 대비 % */
.g-fn { font-size: 13px; }
.g-dbar { position: relative; height: 10px; border-radius: 6px; background: var(--track); }
.g-dbar .g-fill { position: absolute; top: 0; bottom: 0; border-radius: 6px; }
.g-mid { position: absolute; left: 50%; top: -2px; bottom: -2px; width: 1px; background: var(--mute); opacity: .6; }
.g-fv { text-align: right; font-size: 13px; font-weight: 700; }
.g-chips { display: flex; flex-wrap: wrap; gap: 5px; }
.g-chip { padding: 3px 9px; border-radius: 7px; font-size: 12.5px; color: var(--ink); }
.g-mood { margin: 6px 0 4px; font-size: 13.5px; line-height: 1.6; }

/* 시황 카드: 헤드라인 · 핵심 3줄 · 의견 · 접힌 상세 */
.phase .ph-tabs { margin: 0 0 12px; }
.ph-key { margin: 0 0 12px; padding: 0; list-style: none; }
.ph-key li { position: relative; padding: 7px 0 7px 16px; border-top: 1px solid var(--line); font-size: 15px; line-height: 1.55; }
.ph-key li:first-child { border-top: 0; }
.ph-key li::before { content: ""; position: absolute; left: 2px; top: 15px; width: 6px; height: 6px; border-radius: 50%; background: var(--accent); }
.ph-op { padding: 12px 16px; border-radius: 12px; background: var(--accent-bg); margin-bottom: 12px; }
.ph-op h4 { margin: 0 0 6px; font-size: 15px; font-weight: 800; color: var(--accent); }
.ph-ul { margin: 0; padding-left: 18px; line-height: 1.6; font-size: 14.5px; }
.ph-details { border-top: 1px solid var(--line); }
.ph-more { border-bottom: 1px solid var(--line); }
.ph-more summary { cursor: pointer; padding: 9px 2px; font-size: 14px; font-weight: 700; list-style: none; }
.ph-more summary::-webkit-details-marker { display: none; }
.ph-more summary::after { content: "▾"; float: right; color: var(--mute); }
.ph-more[open] summary::after { content: "▴"; }
.ph-more .ph-ul { padding-bottom: 10px; }
.phase .ph-meta { margin: 10px 0 0; }

/* ── 촘촘한 표: 숫자 칸은 내용만큼만, 기사 칸이 남는 폭을 모두 쓰고 한 줄로 자른다 ── */
@media (min-width: 761px) {
  .rt.tight { table-layout: auto !important; width: 100%; }
  .rt.tight th:not(.left), .rt.tight td:not(.left) { width: 1%; white-space: nowrap; }
  .rt.tight td.name, .rt.tight th:first-child { width: 1%; white-space: nowrap !important; word-break: keep-all; }
  .rt.tight td.m-news { width: auto; max-width: 0; }               /* max-width 0 + 표 고정 계산: 남는 폭 안에서 말줄임 */
  .rt.tight td { padding-top: 7px; padding-bottom: 7px; }
}
/* 업종 구분 줄: 표 안에서 크게, 색 띠로 */
.rt.grouped tr.grp td { padding: 14px 12px 8px; background: var(--accent-bg); border-left: 4px solid var(--accent); text-align: left; white-space: normal; }
.rt.grouped tbody tr.grp:first-child td { padding-top: 10px; }
.grp-n { font-size: 16px; font-weight: 800; color: var(--accent); margin-right: 10px; }
.grp-m { font-size: 13px; color: var(--mute); margin-right: 10px; }
.grp-a { font-size: 13px; font-weight: 700; }
.grp-tag { display: none; }                         /* PC: 구분 줄이 있으니 숨김 */
.rt.grouped td { font-size: 14.5px; }
.rt.grouped td.name b { font-size: 15px; }
@media (min-width: 1080px) { .grp-n { font-size: 18px; } .grp-m, .grp-a { font-size: 14px; } .rt.grouped td { font-size: 15.5px; } .rt.grouped td.name b { font-size: 16px; } }
@media (max-width: 760px) {
  .rt.grouped tr.grp { display: block; padding: 10px 10px 6px; margin-top: 8px; background: var(--accent-bg); border-left: 4px solid var(--accent); border-radius: 8px; }
  .rt.grouped tr.grp td { display: block; background: none; border: 0; padding: 0; }
  .grp-tag { display: inline-block; margin-left: 6px; font-size: 11px; font-weight: 600; color: var(--accent); }
  .rt.tight.grouped tr:not(.grp) { grid-template-columns: repeat(4, minmax(0, 1fr)); }          /* 숫자 4개를 한 줄에 */
  .rt.tight.grouped td.m-title { grid-column: 1 / 4; grid-row: 1; }
  .rt.tight.grouped td.m-value { grid-column: 4; grid-row: 1; }
  .rt.tight.grouped td.m-detail { font-size: 12px; }
  .grp-a { white-space: nowrap; }
}
.mnews.c { list-style: none; margin: 0; padding: 0; }
.nl1, .rs1 { display: flex; align-items: center; gap: 6px; min-width: 0; white-space: nowrap; }
.nl1 + .nl1 { margin-top: 3px; }
.nl1 .tagc, .rs1 .tagc, .nl1 .fresh { flex: none; }
.nl1-t { min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.rs-sum { margin-top: 2px; font-size: 12.5px; color: var(--mute); line-height: 1.5; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 100%; }
.rs-det { font-size: 12px; color: var(--mute); }
.rs-det a { color: var(--mute); }
@media (max-width: 760px) { .rs-sum { white-space: normal; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; } }
@media (min-width: 1080px) { .rs-sum { font-size: 13.5px; } }
.nl1-w { flex: none; font-size: 12px; color: var(--mute); font-variant-numeric: tabular-nums; }
@media (max-width: 760px) {
  /* 모바일 카드도 촘촘하게: 숫자 항목을 한 줄에 3개씩 (라벨 위, 값 아래) */
  .rt.tight tr { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .rt.tight td.m-title { grid-column: 1 / 3; }
  .rt.tight td.m-value { grid-column: 3; }
  .rt.tight td.m-detail { grid-column: auto; flex-direction: column; justify-content: flex-start; align-items: flex-start; gap: 0; text-align: left; font-size: 12.5px; }
  .rt.tight td.m-detail::before { font-size: 11px; }
  .rt.tight td.m-news { grid-column: 1 / -1; }
  .nl1, .rs1 { flex-wrap: wrap; white-space: normal; }
  .nl1-t { flex-basis: 100%; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
}

/* ── 이슈 목록 (표 모양 한 줄) ── */
.ir-list { list-style: none; margin: 0; padding: 0; }
.ir { display: grid; grid-template-columns: 42px minmax(0, 1fr) auto; gap: 10px; align-items: center; padding: 9px 2px; border-top: 1px solid var(--line); }
.ir:first-child { border-top: 0; }
.ir.no-t { grid-template-columns: minmax(0, 1fr) auto; }
.ir.no-t .ir-t { display: none; }
.ir-t { font-size: 12px; color: var(--mute); font-variant-numeric: tabular-nums; }
.ir-b { min-width: 0; }
.ir-1 { display: flex; align-items: center; gap: 6px; min-width: 0; white-space: nowrap; }
.ir-1 b { flex: none; }
.ir-1 .imp, .ir-1 .fr, .ir-1 .tagc { flex: none; }
.ir-x { min-width: 0; overflow: hidden; text-overflow: ellipsis; font-size: 14px; }
.ir-x a { color: inherit; }
.ir-2 { font-size: 12px; margin-top: 1px; }
.ir-r { font-size: 13px; white-space: nowrap; text-align: right; }
.ir-fix { flex: none; font-size: 11px; color: var(--mute); border: 1px dashed var(--line); border-radius: 5px; padding: 0 5px; }
.ir-filter { display: flex; flex-wrap: wrap; gap: 6px; margin: 2px 0 6px; }
.ir-f { border: 1px solid var(--line); background: var(--card); border-radius: 999px; padding: 3px 11px; font-size: 12.5px; font-weight: 700; color: var(--mute); cursor: pointer; }
.ir-f.on { box-shadow: 0 0 0 2px var(--accent) inset; color: var(--ink); }
.ir-f.imp-up { color: var(--up); } .ir-f.imp-down { color: var(--down); }
@media (max-width: 760px) {
  .ir { grid-template-columns: minmax(0, 1fr) auto; }
  .ir-t { display: none; }
  .ir-1 { flex-wrap: wrap; white-space: normal; }
  .ir-x { flex-basis: 100%; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; white-space: normal; }
}
@media (min-width: 1080px) { .ir-x { font-size: 15px; } .ir-t { font-size: 13px; } .ir-r { font-size: 14px; } .ir-f { font-size: 13.5px; } }

.ph-at.ph-wait { opacity: .6; font-style: normal; }

/* ── 시황 항목: 시각·신선도·영향 + 출처 링크 ── */
.it-meta { display: inline-flex; flex-wrap: wrap; gap: 4px; margin-right: 6px; vertical-align: 1px; }
.it-when { font-size: 12px; font-weight: 700; color: var(--mute); font-variant-numeric: tabular-nums; }
.fr, .imp { font-size: 11.5px; font-weight: 700; padding: 1px 7px; border-radius: 6px; border: 1px solid var(--line); background: var(--card-sub); color: var(--mute); }
.fr-new { color: #0f8a4b; border-color: #b7e4c7; background: #ecfbf2; }
.fr-follow { color: var(--warn); border-color: #f1d9a8; background: var(--warn-bg); }
.imp-up { color: var(--up); border-color: var(--up-line); background: var(--up-bg); }
.imp-down { color: var(--down); border-color: var(--down-line); background: var(--down-bg); }
.imp-mix { color: var(--warn); border-color: #f1d9a8; background: var(--warn-bg); }
a.ref.src { font-size: 11.5px; margin-left: 4px; padding: 0 5px; border-radius: 5px; border: 1px solid var(--line); color: var(--mute); text-decoration: none; white-space: nowrap; }
a.ref.src:hover { color: var(--accent); border-color: var(--accent); }
@media (min-width: 1080px) { .it-when { font-size: 13px; } .fr, .imp, a.ref.src { font-size: 12.5px; } }

/* ── 오늘의 시황 (4단계 탭) ── */
.phase { margin-top: var(--gap); }
.phase .hc-head { flex-wrap: wrap; }
.ph-tabs, .iss-tabs { display: inline-flex; flex-wrap: wrap; gap: 4px; padding: 3px; border-radius: 10px; background: var(--card-sub); border: 1px solid var(--line); }
.ph-tabs { margin-left: 12px; }
.ph-tab, .iss-tab { display: inline-flex; align-items: baseline; gap: 6px; min-height: 32px; padding: 0 12px; border: 0; border-radius: 7px; background: none; color: var(--mute); font-weight: 600; cursor: pointer; }
.ph-tab.on, .iss-tab.on { background: var(--card); color: var(--ink); box-shadow: 0 0 0 1px var(--line); }
.ph-tab.on { color: var(--accent); }
.ph-at, .iss-n { font-size: 11.5px; font-weight: 500; color: var(--mute); }
.iss-tab.on .iss-n { color: var(--accent); font-weight: 700; }
.ph-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; margin-bottom: 6px; font-size: 12.5px; }
.ph-head { margin: 0 0 12px; font-size: 18px; font-weight: 700; line-height: 1.5; letter-spacing: -0.02em; }
.ph-grid { display: grid; gap: 14px 28px; grid-template-columns: 1fr; }
@media (min-width: 1080px) { .ph-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.ph-sec h4 { margin: 0 0 4px; font-size: 14px; font-weight: 700; color: var(--mute); }
.ph-sec ul { margin: 0; padding-left: 18px; line-height: 1.65; font-size: 14.5px; }
.ph-sec.opinion { grid-column: 1 / -1; padding: 12px 16px; border-radius: 12px; background: var(--accent-bg); }
.ph-sec.opinion h4 { color: var(--accent); }
.board .iss .hc-head { margin-bottom: 4px; }

/* ── 시장 해석 (규칙 기반) ── */
.mv { margin-bottom: 6px; }
.mv-m { padding: 12px 0; border-bottom: 1px solid var(--line); }
.mv-m:first-child { padding-top: 0; }
.mv-h { margin: 0 0 8px; display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 10px; font-size: 16px; }
.mv-h b { font-size: 17px; }
.mv-v { flex-basis: 100%; font-weight: 700; font-size: 15px; }
.mv-list { list-style: none; margin: 0; padding: 0; }
.mv-r { display: grid; grid-template-columns: 58px minmax(0, 1fr); gap: 10px; padding: 6px 0; }
.mv-k { align-self: start; text-align: center; padding: 2px 0; border-radius: 6px; background: var(--card-sub); border: 1px solid var(--line); font-size: 12px; font-weight: 700; color: var(--mute); }
.mv-k.t-up { color: var(--up); background: var(--up-bg); border-color: var(--up-line); }
.mv-k.t-down { color: var(--down); background: var(--down-bg); border-color: var(--down-line); }
.mv-t { margin: 0; font-size: 14.5px; font-weight: 600; line-height: 1.5; }
.mv-w { margin: 2px 0 0; font-size: 13.5px; color: var(--mute); line-height: 1.55; }
.mv-sub { margin: 10px 0 4px; font-size: 13px; font-weight: 700; color: var(--mute); }
.mv-watch { margin: 0; padding-left: 18px; font-size: 14px; line-height: 1.6; }
.mv-watch li::marker { color: var(--accent); }
.mv-note { margin: 10px 0 0; font-size: 12px; color: var(--mute); }
.sum-lines.one li { margin-bottom: 2px; }

/* ── 테마 '왜 오르나' ── */
.tb-nm { display: flex; flex-direction: column; }
.tb-hint { font-size: 11.5px; font-weight: 500; color: var(--mute); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.tb-item.on .tb-hint { color: var(--accent); opacity: .8; }
.why { margin-top: 14px; padding-top: 14px; border-top: 1px dashed var(--line); }
.why-h { display: flex; align-items: center; flex-wrap: wrap; gap: 6px 10px; margin-bottom: 4px; }
.why-h h4 { margin: 0; font-size: 15.5px; font-weight: 700; }
.why-h .mute { font-size: 12.5px; margin-left: auto; }
.why-x { margin: 8px 0 0; font-size: 13.5px; line-height: 1.6; }
.why-k { display: inline-block; margin-right: 8px; padding: 0 7px; border-radius: 6px; background: var(--card-sub); border: 1px solid var(--line); color: var(--mute); font-size: 12px; font-weight: 700; }
.why-note { margin: 8px 0 0; color: var(--mute); font-size: 12px; }

/* ── 순위 카드 ── */
.rank-grid { display: grid; gap: var(--gap); grid-template-columns: 1fr; margin-top: var(--gap); scroll-margin-top: 80px; }
@media (min-width: 761px) { .rank-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } .rank-grid .hc-wide { grid-column: 1 / -1; } }
@media (min-width: 1080px) { .rank-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
/* 카드 4개(2026-10-07: 빠르게 오르는 종목 제거): 넓은 화면은 수급·거래대금·강한 업종 한 줄 + 신규 상장은 아래 한 줄 전체(목록 3칸) */
@media (min-width: 1080px) {
  .rank-grid .hc-wide { grid-column: 1 / -1; }
  .rank-grid .hc-wide .li-list { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); column-gap: 40px; }
}
.li-note { margin: 6px 0 0; font-size: 12px; color: var(--mute); text-align: center; }
.li-grp { margin: 10px 0 2px; font-size: 12.5px; font-weight: 700; color: var(--mute); }
.li-grp:first-of-type { margin-top: 2px; }
#sec-tboard { margin-top: var(--gap); }

/* ── 자세히 보기 ── */
.detail-title { margin: 40px 4px 0; font-size: 19px; font-weight: 800; letter-spacing: -0.02em; }
.detail-title .mute { font-size: 13px; font-weight: 400; margin-left: 6px; }
.detail-title + .block { margin-top: 14px; }
/* 접힌 상세 섹션은 흰 줄 하나로: 목차처럼 훑고 필요한 것만 펼친다 */
#app > .block.collapsed, .pair > .block.collapsed { margin-top: 8px; background: var(--card); border: 1px solid var(--line); border-radius: var(--radius-md); padding: 2px 16px; }
#app > .block.collapsed .block-title h2, .pair > .block.collapsed .block-title h2 { border-left: 0; padding-left: 0; font-size: 15.5px; }
.pair:has(> .block.collapsed) { margin-top: 8px; gap: 8px var(--gap); }

@media (max-width: 760px) {
  .head h1 { font-size: 20px; }
  .head-meta { order: 4; width: 100%; }
  .hc { padding: 16px; }
  .strip { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
  .sc { flex-direction: column; align-items: stretch; gap: 4px; padding: 12px 14px; }
  .sc-val { font-size: 18px; }
  .spark { width: 100%; height: 34px; }
  .tb-item { grid-template-columns: 22px minmax(0, 1fr) 64px; }
  .tb-amt { display: none; }
}
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }

/* =====================================================================
   PC 글자 크기 (2026-10-06: PC 에서 글자가 작다는 의견 → 1080px 이상에서 한 단계씩 키운다)
   모바일·태블릿은 그대로. 표(자세히 보기)는 body 글자 크기와 --fs-* 를 따라 같이 커진다
   ===================================================================== */
@media (min-width: 1080px) {
  body { font-size: 15.5px; }
  :root { --fs-num: 15.5px; --fs-sub: 14.5px; --fs-chip: 13.5px; }
  .head h1 { font-size: 27px; }
  .head-meta { font-size: 15px; }
  .tab { font-size: 15.5px; min-height: 38px; min-width: 64px; }
  .chip { font-size: 14.5px; }
  button.refresh { font-size: 14.5px; min-height: 40px; }

  .hc { padding: 24px 26px; }
  .hc-head h3 { font-size: 20px; }
  .hc-meta, .hc-go { font-size: 14px; }
  .hc-go { min-height: 34px; }
  .hc-empty { font-size: 15px; }
  .xb { font-size: 13px; }

  .sc { padding: 18px 20px; }
  .sc-lb { font-size: 15px; }
  .sc-val { font-size: clamp(21px, 1.85vw, 27px); }        /* 좁은 PC 창에서는 조금 줄여 카드 밖으로 넘치지 않게 */
  .sc-chg { font-size: 16px; }
  .sc-chg .mute { font-size: 14px; }
  .sc-ex { font-size: 13.5px; }
  .spark { flex: 0 1 120px; width: auto; min-width: 56px; height: 50px; }

  .sum-one { font-size: 17.5px; }
  .sum-lines, .sum-mood { font-size: 16px; }
  .sum-mood.big { font-size: 17px; }
  .sum-brief { font-size: 15.5px; }
  .sum-chips span { font-size: 14px; padding: 4px 12px; }
  .iss .hc-head h3 { font-size: 17.5px; }
  .iss-list li { font-size: 15.5px; padding: 10px 0; }
  .iss-h { font-size: 14px; }
  .iss-h b { font-size: 15.5px; }
  .iss-m { font-size: 13.5px; }

  .li { gap: 14px; padding: 10px 0; }
  .av { width: 38px; height: 38px; font-size: 14.5px; }
  .li-rk { width: 26px; }
  .li-nm { font-size: 16.5px; }
  .li-sub { font-size: 13.5px; }
  .li-top { font-size: 16px; }
  .li-bot { font-size: 14px; }

  .tb-item { min-height: 48px; grid-template-columns: 28px minmax(0, 1fr) auto 84px; }
  .tb-nm { font-size: 16.5px; }
  .tb-amt { font-size: 14px; }
  .tb-chg { font-size: 15.5px; }
  .tb-dh { font-size: 20px; }
  .tb-dh .mute { font-size: 14px; }
  .tb-hint { font-size: 13px; }
  .mv-h { font-size: 17px; } .mv-h b { font-size: 19px; } .mv-v { font-size: 16.5px; }
  .mv-r { grid-template-columns: 64px minmax(0, 1fr); }
  .mv-k { font-size: 13px; }
  .mv-t { font-size: 16px; } .mv-w { font-size: 14.5px; }
  .mv-sub { font-size: 14px; } .mv-watch { font-size: 15.5px; } .mv-note { font-size: 13px; }
  .ph-tab, .iss-tab { font-size: 15px; min-height: 36px; } .ph-at, .iss-n { font-size: 12.5px; }
  .ph-head { font-size: 20px; } .ph-sec h4 { font-size: 15px; } .ph-sec ul { font-size: 16px; } .ph-meta { font-size: 13.5px; }
  .ph-key li { font-size: 16.5px; } .ph-ul { font-size: 15.5px; } .ph-op h4 { font-size: 16.5px; } .ph-more summary { font-size: 15px; }
  .g-h { font-size: 17px; } .g-h b { font-size: 19px; } .g-v { font-size: 15px; } .g-lb { font-size: 13.5px; }
  .g-txt, .g-fn, .g-fv { font-size: 14px; } .g-chip { font-size: 13.5px; } .g-mood { font-size: 15px; }
  .g-flow { grid-template-columns: 58px minmax(0, 1fr) 86px 42px; }
  .why-h h4 { font-size: 18px; }
  .why-h .mute, .why-note { font-size: 13.5px; }
  .why-x { font-size: 15px; }
  .why-k { font-size: 13px; }
  .tb-rank { width: 30px; height: 30px; font-size: 14.5px; }

  .detail-title { font-size: 22px; }
  .detail-title .mute { font-size: 14.5px; }
  .block-title h2 { font-size: 19px; }
  #app > .block.collapsed .block-title h2, .pair > .block.collapsed .block-title h2 { font-size: 17px; }
  .block-title .meta, .src { font-size: 14px; }
  .foot { font-size: 13.5px; }
}

/* 시황 분석 단락: 본문 */
.ph-analysis { font-size: 15px; line-height: 1.75; margin: 6px 0 12px; padding: 12px 14px; background: var(--card2, rgba(0,0,0,.03)); border-left: 3px solid var(--accent, #7a1f2b); border-radius: 6px; word-break: keep-all; }
/* 시황 안의 소제목(핵심 근거·매크로 이슈·볼 것 …): 2026-10-07 '잘 안 보인다' → 본문보다 크고 진하게, 왼쪽 색 막대로 구역을 나눈다 */
.ph-sub { font-size: 15px; color: var(--ink); margin: 18px 0 6px; font-weight: 800; padding-left: 9px; border-left: 3px solid var(--accent); line-height: 1.3; }
@media (min-width: 1080px) { .ph-sub { font-size: 16.5px; } }
.ph-ref > summary { cursor: pointer; font-size: 13px; color: var(--mute, #777); margin: 8px 0 4px; }
/* 장전 매도 점검: 재료·볼 것 칸은 줄바꿈해서 좁은 화면에서도 표 안에 */
#sec-morning .rt.tight td.m-news { white-space: normal !important; }
#sec-morning .rt.tight td.m-news .mc-tip { min-width: 0; }
#sec-morning .pk-tag { white-space: normal; }
/* NXT 표: 이유 칸은 남는 폭 안에서 (긴 이유가 표를 밀어내지 않게) */
.rt.nxtb { width: 100%; }
.rt.nxtb td.m-news { max-width: 0; width: 100%; overflow-wrap: anywhere; }

.pk-pts { font-size: 11px; opacity: .8; margin-left: 2px; }
.pk-lvl { font-size: 11px; }

.mc-why { font-size: 11px; line-height: 1.35; white-space: normal; max-width: 150px; }

/* 분석 단락 속 근거 기사 칩: 출처 이름, 누르면 기사 */
.an-refs .ext.ref { font-size: 11px; padding: 0 5px; margin: 0 1px; vertical-align: 1px; }

/* 지수 카드 개·외·기 순매수: 좁으면 줄바꿈 */
.sc-inv { display: inline-flex; flex-wrap: wrap; gap: 0 4px; }
.sc-inv { gap: 0 8px; font-size: 12px; }

/* 분석 단락 아래 관련 뉴스: 한 줄씩 (시각 · 매체 · 제목 링크) */
.ph-analysis p { margin: 0; }
.ph-analysis .an-h { margin-top: 10px; font-size: 12px; font-weight: 600; color: var(--mute, #777); }
.an-news { list-style: none; margin: 4px 0 0; padding: 0; font-size: 13px; line-height: 1.6; }
.an-news li { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.an-news .an-when { margin-right: 6px; font-size: 12px; }
.an-news .an-src { margin-right: 6px; font-size: 12px; padding: 0 5px; border-radius: 4px; background: rgba(0,0,0,.05); }
/* 목록 시각: 'MM-DD HH:MM'·'어제 HH:MM' 도 들어가게 폭은 내용만큼, 모바일에서도 보이게 (2026-10-07) */
.ir { grid-template-columns: auto minmax(0, 1fr) auto; }
.ir-t { white-space: nowrap; min-width: 38px; }
@media (max-width: 760px) {
  .ir { grid-template-columns: auto minmax(0, 1fr) auto; gap: 8px; }
  .ir-t { display: block; align-self: start; padding-top: 2px; font-size: 11.5px; min-width: 34px; }
}
.iss-note { margin: 2px 0 6px; font-size: 12.5px; }      /* 이슈 탭 설명 한 줄 (텔레그램: 급증 없을 때 언급 상위로 대신 보여준다는 안내) */
/* 신규 상장 카드: 종목을 누르면 아래에 상세 (2026-10-07) */
.li-wrap { list-style: none; min-width: 0; }
.li-btn { width: 100%; background: none; border: 0; font: inherit; color: inherit; text-align: left; cursor: pointer; border-radius: 10px; }
.li-btn:hover { background: var(--card-sub); }
.li-btn .chev-s { flex: none; margin-left: 4px; color: var(--mute); font-size: 11px; }
.lst-det { display: flex; flex-wrap: wrap; gap: 6px 14px; margin: 2px 0 10px 46px; padding: 10px 12px; border-radius: 10px; background: var(--card-sub); font-size: 13px; }
.lst-kv b { font-weight: 700; }
.lst-note { margin: -4px 0 10px 46px; font-size: 12px; }
.sched-card { margin-top: var(--gap); }                /* KRX 홈 일정 카드 (신규 상장 아래) */
#sec-morning .mc-sell { display: inline-block; margin-left: 4px; font-size: 12.5px; white-space: nowrap; }   /* 장전 매도 점검: 종목 이름 옆 '매도 기록' */
/* 계기판 '거래': 최근 5거래일 마감 + 오늘(진행 중) 거래대금 막대 (2026-10-07) */
.g-tv { display: flex; align-items: flex-end; gap: 8px; height: 64px; margin-top: 6px; max-width: 300px; }   /* 위: 값 · 가운데: 막대 · 아래: 날짜 */
.g-tvb { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: flex-end; height: 100%; min-width: 0; }
.g-tvbar { flex: 1; width: 100%; display: flex; align-items: flex-end; justify-content: center; min-height: 0; }   /* 막대 칸 (날짜 글자와 따로 두어야 높이 % 가 맞는다) */
.g-tvb i { display: block; width: 100%; max-width: 30px; background: var(--line); border-radius: 3px 3px 0 0; }
.g-tvb.today i { background: var(--accent); }
.g-tvb em { font-style: normal; font-size: 10.5px; color: var(--mute); margin-top: 2px; white-space: nowrap; }
.g-fs { text-align: right; font-size: 11.5px; font-variant-numeric: tabular-nums; }
.g-note { margin: 4px 0 0; font-size: 11.5px; }
.g-money .g-fill { background: var(--mute); opacity: .55; }      /* 쏠림 막대: 방향 없는 값이라 회색 */
/* 추천 기록 (MASTER, 2026-10-07) */
.rec-line { margin: 10px 0 4px; font-size: 14px; }
.rec-sig { margin: 0 0 4px; font-size: 14.5px; }
.rec-sigs { margin: 0 0 10px; font-size: 12.5px; }
.rec-card { border: 1px solid var(--line); border-radius: 12px; padding: 12px 14px; margin: 10px 0; }
.rec-name { margin: 0 0 6px; font-size: 16px; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.rec-rk { display: inline-flex; align-items: center; justify-content: center; width: 22px; height: 22px; border-radius: 50%; background: var(--accent); color: #fff; font-size: 12px; font-weight: 800; }
.rec-det { margin: 4px 0; }
.rec-h { margin: 10px 0 4px; font-size: 13px; font-weight: 800; }
.rec-why, .rec-crit { margin: 0; padding-left: 20px; font-size: 13.5px; line-height: 1.6; }
.rec-bd { margin: 4px 0 0; font-size: 12px; }
.rec-ai { margin: 0; font-size: 13.5px; }
.rec-none { font-size: 14.5px; }
.rec-sum { margin: 0 0 10px; font-size: 14.5px; }
.rec-rules { margin-top: 10px; font-size: 13px; }
.rec-rules ul { margin: 6px 0 0; padding-left: 20px; }
.rec-open-row td { background: var(--card-sub); white-space: normal !important; }
#sec-rechist, #sec-rectoday + section { margin-top: var(--gap); }
.rec-day { margin: 0 0 4px; font-size: 12.5px; }
.rec-t td.m-news { white-space: normal; }
/* 추천 기록 표: 모바일(카드 모양)에서 펼친 이유 줄이 첫 칸에만 들어가 좁아지던 것 → 한 줄 전체 */
@media (max-width: 760px) {
  .rt tr.rec-open-row { display: block; padding: 8px 0 12px; }
  .rt tr.rec-open-row td { display: block; grid-column: 1 / -1; width: auto; }
  .rt tr.rec-row td[colspan] { grid-column: 1 / -1; }
}
/* 미국 선물·매크로 작은 카드 (KRX 아래 · NXT 띠) 와 국채 금리 한 줄 (2026-10-07) */
.strip.compact { grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); }
@media (min-width: 1080px) { .strip.compact { grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); } }
.strip.compact .sc { padding: 12px 14px; }
.strip.compact .sc-val { font-size: 18px; }
.strip.compact .sc-lb, .strip.compact .sc-ex { font-size: 12px; }
@media (min-width: 1080px) { .strip.compact .sc-val { font-size: 20px; } }
.bond-line { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 14px; margin: 8px 2px 0; font-size: 13px; }
.bond-line + .bond-line { margin-top: 4px; }                /* 국채 금리 줄 · 돈의 흐름 줄 */
.bond-line .bd-h { font-weight: 800; min-width: 72px; }   /* 두 줄의 제목 폭을 맞춰 숫자가 가지런하게 */
.bond-line .bd b { font-weight: 700; }
.bond-line .bd-n { font-size: 12px; }
.strip.compact .sc[data-live="night"] { grid-column: span 2; }     /* 야간선물은 외·기·개 줄이 있어 두 칸 */
@media (max-width: 760px) {                     /* 모바일: KRX 화면이 길어지지 않게 작은 카드 3칸 */
  .strip.compact { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
  .strip.compact .sc { padding: 9px 10px; }
  .strip.compact .sc-val { font-size: 15px; }
  .strip.compact .sc-lb { font-size: 11px; }
  .strip.compact .sc-chg { font-size: 12.5px; }
  .strip.compact .sc-ex { font-size: 10.5px; }
  .strip.compact .sc[data-live="night"] { grid-column: 1 / -1; }
  .bond-line { gap: 3px 10px; font-size: 12.5px; }
}
.usn-sum { margin: 0 0 8px; font-size: 13.5px; line-height: 1.7; }       /* 미국·매크로 뉴스 주제 요약 한 줄 */
.bond-line .mood-tag { font-size: 12px; }
@media (max-width: 760px) { .hc-head { flex-wrap: wrap; } .hc-head > span:not(.hc-meta) { flex: none; white-space: nowrap; } }   /* 모바일: 긴 제목 옆의 배지('야후')가 세로로 쪼개지지 않게 설명은 다음 줄로 */
.ph-basis { margin-top: 12px; }                         /* 시황: '분석에 쓴 근거' 펼치기 */
.ph-basis-body { margin-top: 4px; }
/* 거래·수급 카드 (2026-10-07) */
#sec-sectorcard, #sec-flowcard { margin-top: var(--gap); }
.fc-grid { display: grid; gap: 14px 24px; grid-template-columns: minmax(0, 1fr); }
@media (min-width: 1300px) { .fc-grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); } }   /* 1300px 보다 좁으면 위아래로 (반 폭이면 표가 잘림) */
.fc-h { margin: 0 0 6px; font-size: 14px; font-weight: 800; }
.fc-sub { font-size: 11px; font-weight: 400; }
/* 업종 표: PC 는 표 그대로, 모바일은 업종마다 한 줄 (이름 · 등락률 / 상승·하락) */
.rt td.sect-m, .rt th.sect-m { display: none; }
@media (max-width: 760px) {
  .rt.sect tr { grid-template-columns: minmax(0, 1fr) auto; padding: 7px 0; gap: 1px 10px; }
  .rt.sect td.m-detail, .rt.sect td.m-bar { display: none; }
  .rt.sect td.sect-m { display: block; grid-column: 1 / -1; font-size: 12px; }
  .rt.sect td.m-title { font-size: 14px; }
  .rt.sect td.m-value { font-size: 14px; }
}
.rt.fc-t { min-width: 0; }                                 /* 거래·수급 카드: 반 폭 칸 안에서 표가 잘리지 않게 */
.rt.fc-t td.m-bar { min-width: 90px; }
.an-news .an-more { list-style: none; margin-top: 2px; }
/* 발표된 미국 지표 (맨 위, 2026-10-07) */
.rel-bar { display: grid; gap: 6px; margin-top: 10px; scroll-margin-top: 80px; }
.rel-item { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 8px; width: 100%; text-align: left; font: inherit; color: inherit; cursor: pointer;
  background: var(--warn-bg); border: 1px solid #f1d9a8; border-radius: 12px; padding: 10px 14px; font-size: 14px; }
.rel-item:hover { filter: brightness(0.98); }
.rel-tag { background: var(--warn); color: #fff; border-radius: 6px; padding: 1px 7px; font-size: 12px; font-weight: 800; }
.rel-v { font-weight: 800; }
.rel-h { flex-basis: 100%; font-size: 13px; color: var(--ink); opacity: .85; }
.rel-go { margin-left: auto; font-size: 12.5px; color: var(--accent); white-space: nowrap; }
.sched-row.released .dday { color: var(--warn); }
.sched-row.hl { animation: schedHl 2.4s ease; border-radius: 10px; }
@keyframes schedHl { 0%, 60% { background: var(--warn-bg); } 100% { background: transparent; } }
.impact li.hit { background: var(--warn-bg); border-radius: 6px; padding: 1px 4px; margin-left: -4px; }
.hit-tag { font-size: 11.5px; color: var(--warn); margin-left: 4px; }
/* 종목 이름 링크 · 종목 상세 창 (2026-10-08) */
.stk { background: none; border: 0; padding: 0; font: inherit; color: inherit; cursor: pointer; text-align: left; }
.stk:hover { color: var(--accent); text-decoration: underline; text-underline-offset: 3px; }
body.modal-open { overflow: hidden; }
.sm-wrap { position: fixed; inset: 0; z-index: 1000; }
.sm-back { position: absolute; inset: 0; background: rgba(0, 0, 0, .35); }
.sm { position: absolute; top: 0; right: 0; bottom: 0; width: min(520px, 100%); background: var(--card); overflow-y: auto; box-shadow: -8px 0 24px rgba(0, 0, 0, .15);
  padding: calc(16px + env(safe-area-inset-top, 0px)) 18px calc(24px + env(safe-area-inset-bottom, 0px)); }
.sm-top { display: flex; justify-content: space-between; align-items: flex-start; gap: 10px; margin-bottom: 8px; }
.sm-name { margin: 0; font-size: 20px; font-weight: 800; }
.sm-top p { margin: 2px 0 0; }
.sm-x { flex: none; }
.sm-h { margin: 16px 0 6px; font-size: 14px; font-weight: 800; padding-left: 8px; border-left: 3px solid var(--accent); }
.sm-q { font-size: 15px; margin: 3px 0; }
.sm-chart { width: 100%; height: 110px; display: block; }
.sm-chart .sm-zero { stroke: var(--line); stroke-width: 1; }
.sm-chart .sm-krx { stroke-width: 2; }
.sm-chart .sm-krx.up { stroke: var(--up); } .sm-chart .sm-krx.dn { stroke: var(--down); }
.sm-chart .sm-nxt { stroke: var(--accent); stroke-width: 1.6; stroke-dasharray: 4 3; }
.sm-gap { stroke: var(--mute, #9aa0a6); stroke-width: 1; stroke-dasharray: 2 3; opacity: .55; }
.sm-dot { stroke: none; fill: var(--accent); }
.sm-chart .sm-krx.up.sm-dot { fill: var(--up); } .sm-chart .sm-krx.dn.sm-dot { fill: var(--down); }
.sm-leg { margin: 2px 0 0; font-size: 11.5px; }
.sm-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.sm-chips .chip { font-size: 12.5px; padding: 3px 9px; }
.sm-ul { margin: 0; padding-left: 18px; font-size: 13.5px; line-height: 1.6; }
@media (max-width: 760px) {                     /* 모바일: 아래에서 올라오는 창 */
  .sm { top: 8vh; width: 100%; border-radius: 16px 16px 0 0; box-shadow: 0 -8px 24px rgba(0, 0, 0, .15); }
}
.sm .rt { min-width: 0; }                                  /* 상세 창 안의 표: 창 폭에 맞춘다 (오른쪽 열이 가려지던 것) */
.g-tvv { font-size: 10.5px; font-weight: 700; color: var(--mute); white-space: nowrap; line-height: 1.2; }
.g-tvb.today .g-tvv { color: var(--accent); }
.sched-res { margin: 6px 0 2px; padding: 8px 10px; border-radius: 10px; background: var(--card-sub); font-size: 13.5px; }
.sched-res p { margin: 2px 0; }
.lead.thin { background: var(--card-sub); color: var(--mute); }      /* 거래가 적은 상한가 */
/* 지금 움직이는 값 불빛 (카드 오른쪽 위) · 시가 갭 한 줄 (2026-10-08) */
.sc { position: relative; }
.ld { position: absolute; top: 10px; right: 10px; width: 8px; height: 8px; border-radius: 50%; }
.ld-on { background: #16a34a; box-shadow: 0 0 0 3px rgba(22, 163, 74, .18); }
.ld-off { background: #dc2626; opacity: .75; }
.ld-late { background: #f59e0b; box-shadow: 0 0 0 3px rgba(245, 158, 11, .22); }     /* 거래 중인데 시세가 안 들어옴 = 수집 지연 */
.bond-line .ld { position: static; display: inline-block; margin-right: 5px; vertical-align: 1px; }
.gap-line { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 8px; margin: 10px 2px 8px; font-size: 13px; }
.gap-line .bd-h { font-weight: 800; }
@media (min-width: 1080px) { .strip.kr3 { grid-template-columns: repeat(3, minmax(0, 1fr)); } }   /* KRX: 코스피·코스닥·미국 마감 3칸 (시가 갭은 위 한 줄, 외인 판별은 계기판 숫자로) */
@media (max-width: 1079px) { .strip.kr3 > .sc:nth-child(3) { grid-column: 1 / -1; } }   /* 두 칸 화면: 미국 마감은 아래 한 줄 전체 */
/* 모바일 설명 말풍선: 터치 기기에서 title 달린 글자·불빛을 누르면 뜬다 (2026-10-08) */
.tap-tip { position: absolute; z-index: 1100; max-width: min(320px, calc(100vw - 16px)); padding: 8px 10px; border-radius: 10px;
  background: rgba(25, 31, 40, .94); color: #fff; font-size: 12.5px; line-height: 1.45; word-break: keep-all; overflow-wrap: anywhere;
  box-shadow: 0 6px 18px rgba(0, 0, 0, .18); pointer-events: none; }
@media (hover: none) {
  /* 8px 불빛은 손가락으로 누르기 어려워 보이지 않는 누름 영역을 넓힌다 */
  .ld::after { content: ""; position: absolute; inset: -12px; }
  .bond-line .ld { position: relative; }
  /* 누르면 설명이 있다는 표시: 점선 밑줄 (불빛·버튼 제외) */
  #app span[title]:not(.ld), #app th[title] { text-decoration: underline dotted rgba(127, 127, 127, .55); text-underline-offset: 3px; }
}

/* 장중 흐름 알림 (2026-10-08): 시간 | 꼬리표 + 한 줄 설명 + 이유 */
.tn-list { list-style: none; margin: 0; padding: 0; }
.tn-row { display: grid; grid-template-columns: 48px minmax(0, 1fr); gap: 10px; padding: 10px 2px; border-top: 1px solid var(--line); }
.tn-row:first-child { border-top: 0; padding-top: 4px; }
.tn-at { font-weight: 800; font-variant-numeric: tabular-nums; font-size: 14px; padding-top: 1px; }
.tn-new .tn-at { color: var(--accent, #8b1e2d); }
.tn-tag { font-weight: 800; margin-right: 4px; }
.tn-line { margin: 0 0 3px; font-size: 13.5px; line-height: 1.5; overflow-wrap: anywhere; }
.tn-why { margin: 4px 0 0; font-size: 13px; line-height: 1.5; color: var(--ink); overflow-wrap: anywhere; }
.tn-why b { font-weight: 800; margin-right: 2px; }
.tn-why a { color: inherit; text-decoration: underline; text-decoration-color: rgba(127, 127, 127, .45); text-underline-offset: 3px; }
.tn-src { font-size: 12px; color: var(--mute) !important; }
@media (min-width: 1080px) { .tn-line { font-size: 14.5px; } .tn-why { font-size: 14px; } .tn-at { font-size: 15px; } }
@media (max-width: 520px) { .tn-row { grid-template-columns: 42px minmax(0, 1fr); gap: 8px; } .tn-line { font-size: 13px; } }
.lead.sub { background: var(--card-sub); color: var(--ink); }     /* 2위·3위: 대장보다 옅게 (2026-10-08) */
/* 테마 종목 두 줄: 거래대금 순 | 등락률 순 (2026-10-08). 좁은 화면은 위아래로 */
.tb-cols { display: grid; grid-template-columns: 1fr; gap: 6px 32px; }
@media (min-width: 761px) { .tb-cols { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.tb-colh { margin: 4px 0 2px; font-size: 13px; font-weight: 800; color: var(--mute); }
@media (min-width: 1080px) { .tb-colh { font-size: 14px; } }
.tb-col { min-width: 0; }                      /* 긴 설명 줄이 칸을 밀어내지 않게 */
/* 일정 '자세히' · 실적 발표 카드 (2026-10-09) */
.sched-more { font-size: 12px; font-weight: 600; margin-left: 6px; padding: 1px 8px; border: 1px solid var(--line); border-radius: 999px; color: var(--mute); background: transparent; vertical-align: 1px; }
.sched-det { margin-top: 4px; }
.ea-box { margin-top: 6px; padding: 8px 10px; border-radius: 10px; background: var(--card-sub); }
.ea-kv { display: grid; grid-template-columns: 76px minmax(0, 1fr); gap: 6px; margin: 2px 0; font-size: 13.5px; line-height: 1.5; overflow-wrap: anywhere; }
.ea-kv .mute { font-size: 12.5px; }
.ea-src { margin: 4px 0 0; font-size: 12.5px; overflow-wrap: anywhere; }
.ea-row .title .stk { display: inline; font-weight: 800; font-size: inherit; padding: 0; border: 0; }
.ea-row:not(.major) { padding: 10px 0; }
@media (min-width: 1080px) { .ea-kv { font-size: 14.5px; } }
/* 장중 흐름 풍선 (2026-10-09): 코스피·코스닥 지수 카드에 붙는다. PC 는 마우스 올림, 모바일은 누름 */
.strip.kr3, .strip.us2 { position: relative; }
.tn-chip { display: inline-block; margin-left: 6px; padding: 0 7px; border-radius: 999px; font-size: 11px; font-weight: 800; line-height: 18px;
  background: var(--accent-bg); color: var(--accent); vertical-align: 1px; cursor: pointer; }
.sc[data-live^="kr:"] { cursor: default; }
.sc.pop-on { border-color: var(--accent); }
.tn-pop { position: absolute; z-index: 60; width: min(480px, 100%); max-height: min(70vh, 560px); overflow: auto; padding: 12px 14px;
  background: var(--card); border: 1px solid var(--line); border-radius: 14px; box-shadow: 0 12px 32px rgba(0, 0, 0, .16); }
.tn-pop[hidden] { display: none; }
.tn-pop-h { margin: 0 0 6px; font-size: 14px; }
.tn-pop .tn-row { padding: 8px 0; }
.tn-pop .tn-row:first-child { padding-top: 2px; }
@media (max-width: 760px) { .tn-pop { width: 100%; } }
/* 2026-10-09: 미국 선물·지표 목록 (작은 카드 대신 한 줄씩) · 해외 탭 메인 지수 2칸 · 머리 날짜/휴장 */
.ul-box { margin-top: 10px; background: var(--card); border: 1px solid var(--line); border-radius: var(--radius-lg); padding: 10px 16px 6px; }
.ul-h { margin: 0 0 4px; font-size: 13px; font-weight: 800; color: var(--mute); }
.ul-grid { display: grid; grid-template-columns: 1fr; column-gap: 28px; }
@media (min-width: 761px) { .ul-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1300px) { .ul-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
/* 2026-10-09 사용자 의견: 이름과 값 사이가 너무 멀어 한눈에 안 들어옴 → 이름 칸을 고정 폭으로 좁히고 값·등락을 바로 옆에, 부담/완화·시각은 오른쪽 끝 */
.ul-row { display: grid; grid-template-columns: 12px 96px 92px 80px minmax(0, 1fr); align-items: center; gap: 8px; padding: 7px 0; border-top: 1px solid var(--line); font-size: 14px; }
.ul-grid .ul-row:first-child { border-top: 0; }
@media (min-width: 761px) { .ul-grid .ul-row:nth-child(2) { border-top: 0; } }
@media (min-width: 1300px) { .ul-grid .ul-row:nth-child(3) { border-top: 0; } }
.ul-row .ld { position: relative; top: auto; right: auto; }      /* static 이면 터치 영역(::after, inset -12px)이 화면 전체를 덮어 위쪽 탭을 못 누름 (2026-10-10 점검에서 발견) */
.ul-nm { color: var(--mute); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ul-row .sc-val { font-weight: 800; font-size: 15px; font-variant-numeric: tabular-nums; text-align: right; }
.ul-row .sc-chg { font-weight: 700; font-size: 13.5px; text-align: right; white-space: nowrap; }
.ul-ex { display: inline-flex; align-items: center; gap: 4px; font-size: 11.5px; color: var(--mute); white-space: nowrap; justify-self: end; }
.ul-row.flash { animation: flash 1s ease; }
.strip.us2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.strip.nx1 { grid-template-columns: minmax(0, 1fr); }
@media (min-width: 1080px) { .strip.nx1 { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); } }
.hd-date { font-weight: 800; color: var(--ink); margin-right: 4px; }
.hd-off { display: inline-block; padding: 1px 9px; border-radius: 999px; background: #dc2626; color: #fff; font-weight: 800; font-size: 12.5px; margin-right: 4px; }
.hd-asof { color: var(--mute); }
@media (max-width: 520px) {
  /* 한 줄: 불빛 · 이름 · 부담/완화 · 값 · 등락 (시각은 불빛을 누르면 말풍선으로) */
  .ul-row { grid-template-columns: 10px 86px 84px 72px minmax(0, 1fr); gap: 6px; padding: 8px 0; font-size: 13.5px; }
  .ul-ex { order: 5; }
  .ul-ex .sc-at { display: none; }
  .ul-row .sc-val { order: 3; font-size: 14.5px; }
  .ul-row .sc-chg { order: 4; font-size: 13px; }
  .ul-nm { order: 1; }
  .ul-row .ld { order: 0; }
}
.us-det-btn { margin: 8px 0 4px; }

/* ── 키움 추가 데이터 (2026-10-09) ── */
/* 거래·수급 카드: 외국인·기관 종목별 순매수 상위 네 칸 (모바일·태블릿 2열 · 넓은 PC 4열) */
.fi-h { margin-top: 14px; }
.fi-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px 24px; }
@media (min-width: 1080px) { .fi-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.fi-col { min-width: 0; }
.fi-list { list-style: none; margin: 0; padding: 0; }
.fi-li { display: flex; align-items: baseline; gap: 6px; padding: 4px 0; border-top: 1px solid var(--line); font-size: 13px; }
.fi-li:first-child { border-top: 0; }
.fi-rk { flex: none; width: 14px; color: var(--mute); font-size: 11px; }
.fi-nm { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fi-li b { flex: none; font-size: 12.5px; }
/* VI 발동 카드 */
.vi-sum { margin: 2px 0 8px; font-size: 13px; }
.vi-sub { display: none; margin-top: 2px; font-size: 12px; font-weight: 400; }
@media (max-width: 760px) {
  .vi-sub { display: block; }
  .rt.vi-t tr, .rt.us-sect-t tr { padding: 8px 0; }
  .fi-li { font-size: 12.5px; }
  .fi-nm { white-space: normal; word-break: break-all; line-height: 1.3; }   /* 반 폭 칸: 긴 종목명은 두 줄로 (잘리지 않게) */
  .fi-li b { font-size: 12px; }
}
.rt.vi-t, .rt.us-sect-t { min-width: 0; }

/* ── 휴장 탭 (2026-10-09) ── */
.tab-off[hidden] { display: none; }
.tab-off { color: #dc2626; }
.tab-off.on { background: #dc2626; color: #fff; }
.off-note { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 6px 12px; margin: 0 0 12px; padding: 9px 14px;
  border: 1px solid #fecaca; border-radius: 10px; background: #fef2f2; font-size: 13.5px; }
.off-go { flex: none; padding: 4px 12px; border: 0; border-radius: 999px; background: #dc2626; color: #fff; font-weight: 700; font-size: 13px; cursor: pointer; }
.off-st { margin: 2px 0 12px; font-size: 13.5px; color: var(--mute); }
.off-st b { color: var(--ink); }
.off-h { margin-top: 16px; }
.off-news { list-style: none; margin: 4px 0 0; padding: 0; font-size: 14px; line-height: 1.55; }
.off-news li { padding: 7px 0; border-top: 1px solid var(--line); overflow-wrap: anywhere; }
.off-news li:first-child { border-top: 0; }
.off-news .off-when { margin-right: 6px; font-size: 12px; white-space: nowrap; }
.off-news .fr { margin-right: 6px; }
.off-news .an-src { margin-right: 6px; font-size: 12px; padding: 0 5px; border-radius: 4px; background: rgba(0,0,0,.05); white-space: nowrap; }
.off-empty { font-size: 13px; }
@media (max-width: 760px) {
  .off-note { font-size: 13px; padding: 8px 12px; }
  .off-go { width: 100%; padding: 7px 12px; }
  .off-news { font-size: 14.5px; }
  .off-news .off-when, .off-news .an-src { font-size: 11.5px; }
}
@media (prefers-color-scheme: dark) {
  .off-note { background: #3a1d1f; border-color: #6b2a2e; }
  .off-news .an-src { background: rgba(255,255,255,.08); }
}

/* ── 이슈 묶음 · 이슈 레이더 · 업종 영향 · 실적 두 칸 (2026-10-09) ── */
.ig-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 4px 28px; }
@media (min-width: 1080px) { .ig-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.ig { min-width: 0; margin-top: 6px; }
.ig-h { margin: 8px 0 4px; font-size: 14px; font-weight: 800; }
.ig-h .mute { font-weight: 500; font-size: 12px; }
.ig-list, .rd-list, .sx-list { list-style: none; margin: 0; padding: 0; }
.ig-it, .rd-p, .sx { padding: 8px 0; border-top: 1px solid var(--line); }
.ig-it:first-child, .rd-p:first-child, .sx:first-child { border-top: 0; }
.ig-t { font-size: 14.5px; line-height: 1.5; overflow-wrap: anywhere; }
.ig-t b { font-weight: 700; }
.ig-src { font-size: 12px; white-space: nowrap; }
.ig-why { margin: 3px 0 0; font-size: 13.5px; line-height: 1.55; color: var(--mute); }
.ig-n { margin-left: 4px; padding: 1px 8px; border: 1px solid var(--line); border-radius: 999px; background: transparent; color: var(--accent); font-size: 12px; font-weight: 700; cursor: pointer; white-space: nowrap; }
.ig-arts { margin: 6px 0 0 4px; padding-left: 10px; border-left: 2px solid var(--line); font-size: 13.5px; }
.ig-more { margin: 4px 0 0; font-size: 12.5px; }
.ig-imp, .ig-st, .ig-cat { display: inline-block; margin-right: 6px; padding: 0 7px; border-radius: 6px; font-size: 11.5px; font-weight: 700; line-height: 20px; vertical-align: 1px; white-space: nowrap; }
.ig-imp { background: var(--card-sub); color: var(--mute); }
.ig-imp.imp-up { background: var(--up-bg); color: var(--up); }
.ig-imp.imp-down { background: var(--down-bg); color: var(--down); }
.ig-imp.imp-mix { background: #fff4e5; color: #b45309; }
.ig-cat { background: var(--card-sub); color: var(--mute); }
.ig-st { background: var(--card-sub); color: var(--ink); }
.ig-st.st-new { background: #ecfbf2; color: #0f8a4b; }
.ig-st.st-up { background: var(--up-bg); color: var(--up); }
.ig-st.st-keep { background: #eef2ff; color: #4338ca; }
.ig-st.st-down { background: var(--down-bg); color: var(--down); }
.ig-st.st-rot { background: #fff4e5; color: #b45309; }
.off-kp li .ig-imp { margin-right: 6px; }
.rd-watch { margin: 3px 0 0; font-size: 13.5px; }
.rd-rel { margin: 4px 0 0; display: flex; flex-wrap: wrap; gap: 4px; }
.rd-tag { padding: 0 8px; border-radius: 999px; background: var(--card-sub); font-size: 12px; line-height: 20px; }
.rd-cols { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 4px 20px; }
.rd-col { min-width: 0; }
.rd-rot { list-style: none; margin: 0; padding: 0; font-size: 13.5px; line-height: 1.7; }
.rd-rot li { overflow-wrap: anywhere; }
.rd-none { font-size: 12.5px; margin: 2px 0; }
.rd-btns { margin-top: 6px; }
.rd-hh { margin: 10px 0 2px; font-size: 12.5px; font-weight: 700; color: var(--mute); }
.sx-t { display: flex; align-items: baseline; gap: 8px; font-size: 14.5px; }
.sx-tag { flex: none; padding: 0 7px; border-radius: 6px; background: var(--card-sub); font-size: 12px; font-weight: 800; line-height: 20px; }
.sx-tag.t-up { background: var(--up-bg); }
.sx-tag.t-down { background: var(--down-bg); }
.sx-why { margin: 3px 0 0; font-size: 13.5px; color: var(--mute); line-height: 1.5; }
.sx-st { margin: 3px 0 0; font-size: 13.5px; }
.ea-cols { display: grid; grid-template-columns: minmax(0, 1fr); gap: 4px 28px; }
@media (min-width: 1000px) { .ea-cols { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); } }
.ea-col { min-width: 0; }
.ea-none { font-size: 13px; }
.ea-n { margin: 6px 0 0; }
@media (max-width: 760px) {
  .rd-cols { grid-template-columns: minmax(0, 1fr); }
  .rd-col { display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px 10px; }
  .rd-col .tb-colh { flex: none; margin: 2px 0; }
  .rd-rot { display: flex; flex-wrap: wrap; gap: 0 10px; }
  .ig-t { font-size: 14.5px; }
}
@media (prefers-color-scheme: dark) {
  .ig-imp.imp-mix, .ig-st.st-rot { background: #3b2a12; color: #f5b55a; }
  .ig-st.st-new { background: #12301f; color: #6ee7a8; }
  .ig-st.st-keep { background: #1e2346; color: #a5b4fc; }
}
.sx-st .stk, .sx-t .stk, .ig-t .stk { display: inline; padding: 0; border: 0; font-weight: inherit; }
.rd-quiet { margin: 2px 0 0; font-size: 13px; }
.ig-hot { display: inline-block; margin-right: 6px; padding: 0 6px; border-radius: 6px; background: var(--up-bg); color: var(--up); font-size: 11px; font-weight: 800; line-height: 18px; vertical-align: 1px; }
.rd-hotl { margin: 0 0 6px; display: flex; flex-wrap: wrap; align-items: center; gap: 4px 6px; font-size: 13px; }
.rd-tag.rd-hot { background: var(--up-bg); color: var(--up); font-weight: 700; }
.rd-auto { font-size: 12px; }
.rd-tag.rd-rise { background: #fff4e5; color: #b45309; font-weight: 700; }
.rd-sub { font-style: normal; font-weight: 500; font-size: 11px; opacity: .85; }
.ig-chain { display: inline-block; margin-right: 6px; padding: 0 6px; border-radius: 5px; background: var(--card-sub); color: var(--ink); font-size: 11px; font-weight: 700; line-height: 18px; vertical-align: 1px; }
@media (prefers-color-scheme: dark) { .rd-tag.rd-rise { background: #3b2a12; color: #f5b55a; } }
/* 반박·해명 (2026-10-10): 앞선 보도를 뒤집는 후속 */
.ig-st.st-rebut, .fr-rebut { background: #f3e8ff; color: #7e22ce; border-color: #e9d5ff; }
@media (prefers-color-scheme: dark) { .ig-st.st-rebut, .fr-rebut { background: #2e1a47; color: #d8b4fe; } }
/* ── 이슈 표 (2026-10-10) ── */
.rt.ix-t { min-width: 0; width: 100%; }
.ix-t td { vertical-align: top; padding-top: 9px; padding-bottom: 9px; }
.ix-t .ix-c1 { width: 52px; white-space: nowrap; }
.ix-t .ix-c3 { width: 84px; text-align: right; white-space: nowrap; }
.ix-t tr.ix-head td { padding: 14px 0 6px; border-top: 2px solid var(--line); background: transparent; color: var(--ink); font-size: 14px; }
.ix-t tr.ix-head:first-child td { border-top: 0; padding-top: 4px; }
.ix-cat { font-weight: 800; font-size: 15px; margin-right: 8px; }
.ix-cnt { margin-right: 8px; font-size: 12.5px; color: var(--mute); font-weight: 600; }
.ix-n { display: inline-block; margin-right: 4px; padding: 0 6px; border-radius: 5px; font-size: 11.5px; font-weight: 700; line-height: 19px; background: var(--card-sub); }
.ix-n.imp-up, .ix-imp.imp-up { background: var(--up-bg); color: var(--up); }
.ix-n.imp-down, .ix-imp.imp-down { background: var(--down-bg); color: var(--down); }
.ix-n.imp-mix, .ix-imp.imp-mix { background: #fff4e5; color: #b45309; }
.ix-desc { margin-left: 6px; font-size: 12px; font-weight: 400; }
.ix-legend { margin: 0 0 6px; font-size: 12.5px; line-height: 1.6; } .ix-legend b { color: var(--ink); font-weight: 700; }
.ix-imp { display: inline-block; padding: 0 8px; border-radius: 6px; font-size: 12px; font-weight: 800; line-height: 22px; background: var(--card-sub); color: var(--mute); }
.ix-imp-m { display: none; }
.ix-t { font-size: 14.5px; }
.ix-t .ix-t, b.ix-t { font-weight: 700; line-height: 1.5; }
.ix-sub { margin-top: 3px; font-size: 13px; line-height: 1.5; color: var(--mute); font-weight: 400; }
.ix-why { margin-right: 6px; }
.ix-tg { display: inline-block; margin-right: 6px; padding: 0 6px; border-radius: 5px; background: var(--card-sub); font-size: 11.5px; line-height: 19px; white-space: nowrap; }
.ix-t tr.ix-arts td { padding-top: 0; }
@media (max-width: 760px) {
  .ix-imp-m { display: inline; margin-right: 6px; }
  .ix-imp-m .ix-imp { line-height: 20px; vertical-align: 1px; }
  .rt.ix-t tr { padding: 9px 0; }
  .rt.ix-t tr.ix-head { padding: 14px 0 4px; border-top: 2px solid var(--line); }
  .rt.ix-t tr.ix-head td { padding: 0; border-top: 0; }
  .rt.ix-t td.ix-c2 { font-size: 14.5px; font-weight: 400; }
  .rt.ix-t td.ix-c3 { align-self: start; }
  .rt.ix-t tr.ix-arts { display: block; padding-top: 0; border-top: 0; }
  .ix-desc { display: block; margin: 2px 0 0; }
}
@media (prefers-color-scheme: dark) { .ix-n.imp-mix, .ix-imp.imp-mix { background: #3b2a12; color: #f5b55a; } }
/* ── 지난 판단 점검 (2026-10-10) ── */
.upd-box { margin: 10px 0 4px; }
.rt.upd-t { min-width: 0; width: 100%; }
.upd-t td { vertical-align: top; padding-top: 8px; padding-bottom: 8px; }
.upd-t .upd-c1 { width: 66px; white-space: nowrap; }
.upd { display: inline-block; padding: 0 8px; border-radius: 6px; font-size: 12px; font-weight: 800; line-height: 22px; background: var(--card-sub); color: var(--mute); white-space: nowrap; }
.upd.upd-flip { background: #f3e8ff; color: #7e22ce; }
.upd.upd-weak { background: #fff4e5; color: #b45309; }
.upd.upd-strong { background: var(--up-bg); color: var(--up); }
.upd-prev { font-weight: 700; font-size: 14px; line-height: 1.5; }
.upd-new, .upd-now { margin-top: 3px; font-size: 13.5px; line-height: 1.55; font-weight: 400; }
.upd-now b { font-weight: 700; }
.upd-m { display: none; }
/* v168: 결론 먼저 (개수 칩 · AI 정리 2~3문장 · 근거는 눌러서) */
.upd-tally { display: inline-flex; flex-wrap: wrap; gap: 4px; margin-left: 6px; vertical-align: middle; }
.upd-tally .upd { font-size: 11.5px; line-height: 20px; }
.upd-review { margin: 4px 0 6px; padding: 8px 12px; border-radius: 8px; background: var(--card-sub); font-size: 14px; line-height: 1.6; }
.upd-short { list-style: none; margin: 4px 0 6px; padding: 0; }
.upd-short li { padding: 4px 0; font-size: 13.5px; line-height: 1.55; }
.upd-short .upd { margin-right: 6px; }
.upd-btn { margin: 0 0 4px; }
@media (max-width: 760px) {
  .upd-m { display: inline; margin-right: 6px; }
  .rt.upd-t tr { padding: 8px 0; }
}
@media (prefers-color-scheme: dark) { .upd.upd-flip { background: #2e1a47; color: #d8b4fe; } .upd.upd-weak { background: #3b2a12; color: #f5b55a; } }
/* ── v168 이슈 레이더 간결화 · 이번 주 돈이 몰린 곳 ── */
.rd-line { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; }
.rd-line .rd-title { font-size: 14.5px; line-height: 1.5; flex: 1 1 260px; min-width: 0; overflow-wrap: anywhere; }
.rd-det { margin: 6px 0 2px; padding: 8px 12px; border-radius: 8px; background: var(--card-sub); }
.rd-det .ig-why, .rd-det .rd-watch { margin: 0 0 4px; font-size: 13.5px; line-height: 1.6; }
.mn-cols { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); gap: 4px 24px; }
.mn-col { min-width: 0; }
.rt.mn-t { min-width: 0; width: 100%; }
.mn-t .mn-rk { width: 22px; }
.mn-new { display: inline-block; margin-left: 4px; padding: 0 6px; border-radius: 6px; font-size: 11px; font-weight: 800; line-height: 18px; background: var(--up-bg); color: var(--up); }
.mn-ld { display: block; font-size: 12px; font-weight: 400; }
@media (max-width: 760px) {
  .mn-cols { grid-template-columns: minmax(0, 1fr); }
  .mn-ld { display: inline; margin-left: 6px; }
}
/* v168 다음 거래일 볼 것: 한 줄씩 */
.wt-list { margin: 2px 0 8px; padding-left: 18px; }
.wt-list li { padding: 3px 0; font-size: 14px; line-height: 1.55; }
.sx-compact .sx { padding: 6px 0; }
.sx-compact .sx-t { flex-wrap: wrap; gap: 4px 8px; }
.sx-compact .sx-st { margin: 0; font-size: 13px; color: var(--mute); }
.ph-sub .ig-n { margin-left: 8px; vertical-align: middle; }
/* v168 실적: 판정 칩 · 자세히 */
.ea-vd { display: inline-block; margin-left: 6px; padding: 0 8px; border-radius: 6px; font-size: 12.5px; font-weight: 800; line-height: 22px; background: var(--card-sub); }
.ea-row .ea-n { margin: 2px 0 4px; }
.ea-line { margin: 4px 0; font-size: 14px; line-height: 1.55; overflow-wrap: anywhere; }
/* v201: 실적 영향 한 줄 (접지 않고 바로) */
.ea-imp { margin: 2px 0 6px; font-size: 13.5px; line-height: 1.55; overflow-wrap: anywhere; }
.ea-basis { font-size: 12px; margin: 2px 0 0; line-height: 1.45; }
.ea-imp-k { display: inline-block; margin-right: 6px; padding: 0 6px; border-radius: 5px; font-size: 12px; font-weight: 700; line-height: 20px; color: var(--mute, #6b7280); background: var(--card-sub); }
@media (max-width: 600px) { .ea-imp { font-size: 13px; } }
.ea-line .aib { margin-left: 4px; }
/* 이번 주 돈이 몰린 곳: 모바일에서도 표 그대로 (한 줄씩) */
table.mn-t { width: 100%; min-width: 0; border-collapse: collapse; font-size: 14px; }
table.mn-t th { font-size: 12px; font-weight: 600; color: var(--mute); padding: 6px 6px; border-bottom: 1px solid var(--line); text-align: left; }
table.mn-t td { padding: 7px 6px; border-bottom: 1px solid var(--line); vertical-align: top; }
table.mn-t .num { text-align: right; white-space: nowrap; }
table.mn-t .mn-name { overflow-wrap: anywhere; font-weight: 700; }
table.mn-t .mn-rk { width: 18px; padding-left: 0; }
@media (max-width: 760px) {
  table.mn-t { font-size: 13.5px; }
  table.mn-t td, table.mn-t th { padding: 6px 4px; }
  .mn-ld, .mn-sh { display: none; }
}
/* v170 상태 칩 뜻 한 줄 */
.st-legend { margin: -2px 0 6px; font-size: 12px; line-height: 1.6; }
.ig-st { white-space: nowrap; }
/* v171 영향 업종 한 줄 · 체크 한 줄 (휴장 탭 요약 안) */
.sx-line { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin: 10px 0 4px; }
.sx-lh { flex: none; margin-right: 4px; font-size: 12.5px; font-weight: 800; color: var(--mute); }
.sx-chip { display: inline-flex; align-items: center; gap: 5px; padding: 2px 10px 2px 4px; border-radius: 999px; background: var(--card-sub); font-size: 13.5px; font-weight: 700; color: var(--ink); }
.sx-chip i { font-style: normal; font-size: 11.5px; font-weight: 800; padding: 0 6px; border-radius: 999px; line-height: 20px; background: var(--card); }
.sx-chip.t-up i { color: var(--up); } .sx-chip.t-down i { color: var(--down); } .sx-chip.t-warn i { color: var(--warn); }
.wt-line { margin: 2px 0 6px; font-size: 13.5px; line-height: 1.6; }
/* v171 연결고리 단계 칩 · 대상 칩 */
.ch { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 3px 2px; }
.ch-s { display: inline-block; padding: 1px 8px; border-radius: 6px; background: var(--card); border: 1px solid var(--line); font-size: 12.5px; line-height: 20px; color: var(--ink); }
.ch-s.ch-end { font-weight: 700; }
.ch-s.ch-end.t-up { border-color: var(--up-line); background: var(--up-bg); color: var(--up); }
.ch-s.ch-end.t-down { border-color: var(--down-line); background: var(--down-bg); color: var(--down); }
.ch-s.ch-end.t-warn { border-color: #f3d6a4; background: var(--warn-bg); color: var(--warn); }
.ch-ar { font-style: normal; color: var(--mute); font-size: 12px; margin: 0 1px; }
.ix-tgs { display: inline-flex; flex-wrap: wrap; gap: 3px; margin-left: 8px; vertical-align: middle; }
.ix-tgc { padding: 0 6px; border-radius: 4px; font-size: 11.5px; line-height: 18px; background: var(--band); color: var(--mute); font-weight: 600; }
.ix-sub { margin-top: 4px; }
@media (max-width: 760px) { .ix-tgs { display: flex; margin: 4px 0 0; } }
@media (prefers-color-scheme: dark) { .ch-s.ch-end.t-warn { border-color: #5a4320; } }
/* v171 레이더 방향별 세 칸 */
.rd-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; align-items: start; }
.rd-col2 { min-width: 0; padding: 10px 12px; border-radius: 10px; background: var(--card-sub); border-top: 3px solid var(--line); }
.rd-col2.rd-up { border-top-color: var(--up); } .rd-col2.rd-down { border-top-color: var(--down); } .rd-col2.rd-keep { border-top-color: var(--warn); }
.rd-ch { margin: 0; font-size: 14px; font-weight: 800; }
.rd-cd { margin: 2px 0 6px; font-size: 12px; }
.rd-col2 .rd-line { gap: 4px 6px; }
.rd-col2 .rd-line .rd-title { flex-basis: 100%; font-size: 14px; }
.rd-col2 .rd-p { padding: 8px 0; }
@media (max-width: 900px) { .rd-grid { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 900px) { .rd-col2.rd-empty { padding: 6px 12px; } .rd-col2.rd-empty .rd-cd, .rd-col2.rd-empty .rd-none { display: none; } }
.rd-col2 .rd-det { background: var(--card); }
/* v175 다음 거래일 예상: 한 줄씩 (지표·값 → 예상) */
.ck-h { margin-top: 12px; }
.ck-list { list-style: none; margin: 0 0 6px; padding: 4px 14px; border-radius: 10px; background: var(--card-sub); }
.ck-list li { display: grid; grid-template-columns: 210px minmax(0, 1fr); gap: 2px 14px; padding: 7px 0; border-top: 1px solid var(--line); font-size: 14px; line-height: 1.55; }
.ck-list li:first-child { border-top: 0; }
.ck-k { font-weight: 700; }
.ck-now { color: var(--accent); font-weight: 800; white-space: nowrap; }
@media (max-width: 760px) { .ck-list li { grid-template-columns: minmax(0, 1fr); } .ck-list { padding: 2px 12px; } }
/* ── v174 이슈 정리: 분류별 테두리 상자 (넓으면 세 칸) ── */
.ixb-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 12px; }
@media (min-width: 1100px) { .ixb-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); align-items: start; } }
.ixb { border: 1px solid var(--line); border-top: 4px solid var(--mute); border-radius: 12px; background: var(--card); overflow: hidden; }
.ixb-macro { border-top-color: #7c5cff; } .ixb-lead { border-top-color: var(--accent); } .ixb-etc { border-top-color: #14a38b; }
.ixb-h { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; padding: 10px 14px 8px; background: var(--card-sub); border-bottom: 1px solid var(--line); }
.ixb-h b { font-size: 15px; }
.ixb-cnt { font-size: 12.5px; color: var(--mute); font-weight: 700; }
.ixb-d { flex-basis: 100%; margin: 0; font-size: 12px; color: var(--mute); }
.ixb-list { list-style: none; margin: 0; padding: 0 14px; }
.ixb-it { padding: 10px 0; border-top: 1px solid var(--line); }
.ixb-it:first-child { border-top: 0; }
.ixb-top { display: flex; align-items: flex-start; gap: 8px; }
.ixb-top .ix-imp, .ixb-top .ig-st { flex: none; margin-top: 1px; }
.ixb-t { flex: 1 1 auto; min-width: 0; font-size: 14.5px; line-height: 1.45; overflow-wrap: anywhere; }
.ixb-top .ig-n { flex: none; }
.ixb-cat { flex: none; font-size: 11px; padding: 0 6px; border-radius: 4px; background: var(--band); color: var(--mute); line-height: 18px; margin-top: 2px; }
.ixb-ch { margin: 6px 0 0; }
.ixb-tg { display: flex; flex-wrap: wrap; gap: 3px; margin-top: 5px; }
.ixb-src { margin-top: 3px; font-size: 12px; }
/* 모바일: 연결고리는 상자 대신 글자 흐름 (A → B → C), 마지막 단계만 굵게·영향 색 */
@media (max-width: 760px) {
  .ixb-list { padding: 0 12px; }
  .ixb-ch .ch { display: block; font-size: 13px; line-height: 1.6; color: var(--mute); }
  .ixb-ch .ch-s { display: inline; padding: 0; border: 0; background: none; font-size: 13px; color: var(--mute); }
  .ixb-ch .ch-s.ch-end { background: none; border: 0; font-weight: 800; }
  .ixb-ch .ch-s.ch-end.t-up { color: var(--up); } .ixb-ch .ch-s.ch-end.t-down { color: var(--down); } .ixb-ch .ch-s.ch-end.t-warn { color: var(--warn); }
  .ixb-ch .ch-ar { margin: 0 3px; }
}
/* ── v174 레이더: 줄 전체를 눌러 펼침 (모바일 줄마다 1~2줄) ── */
.rd-btn { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; width: 100%; padding: 0; border: 0; background: none; text-align: left; font: inherit; color: inherit; cursor: pointer; }
.rd-col2 .rd-line .rd-title { flex: 1 1 auto; flex-basis: auto; min-width: 0; }
.rd-meta { flex: none; font-size: 11.5px; color: var(--mute); }
.rd-col2 .rd-p { padding: 7px 0; }
@media (max-width: 900px) {
  .rd-col2 { padding: 8px 12px; }
  .rd-col2 .rd-line .rd-title { flex-basis: calc(100% - 80px); font-size: 14px; }
  .rd-meta { flex-basis: 100%; padding-left: 0; }
}
@media (max-width: 760px) {
  .rd-det .ch { display: block; font-size: 13px; line-height: 1.6; }
  .rd-det .ch-s { display: inline; padding: 0; border: 0; background: none; font-size: 13px; color: var(--mute); }
  .rd-det .ch-s.ch-end { color: var(--ink); font-weight: 800; }
  .rd-det .ch-ar { margin: 0 3px; }
}
/* v176 다음 거래일 예상 (종합 한두 문장) */
.ol-line { margin: 10px 0 4px; padding: 10px 14px; border-radius: 10px; background: var(--accent-bg); font-size: 14.5px; line-height: 1.6; font-weight: 600; color: var(--ink); }
.ol-h { display: inline-block; margin-right: 8px; padding: 0 8px; border-radius: 6px; background: var(--accent); color: #fff; font-size: 12px; font-weight: 800; line-height: 22px; vertical-align: 1px; }
/* v179 종목 창 시가 갭 */
.sm-note { margin: 4px 0 0; font-size: 12px; }
.sm-hist th { line-height: 1.25; }
table.sm-ht { width: 100%; min-width: 0; border-collapse: collapse; font-size: 14px; }
table.sm-ht th { font-size: 12px; font-weight: 600; color: var(--mute); text-align: right; padding: 6px 6px; border-bottom: 1px solid var(--line); line-height: 1.25; }
table.sm-ht td { text-align: right; padding: 7px 6px; border-bottom: 1px solid var(--line); white-space: nowrap; }
table.sm-ht .left { text-align: left; }

/* v207: 장 시작 전 직전 거래일 카드 (접힘) */
.stale-card { padding-bottom: 12px; }
.stale-card .hc-head { margin-bottom: 6px; }
.stale-old { opacity: .78; }

/* v217 미국 실시간 (토스) */
.lv-chips { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 6px; margin: 6px 0; }
.lv-chip { display: flex; align-items: baseline; gap: 6px; padding: 6px 8px; border: 1px solid var(--line, #e5e8eb); border-radius: 8px; font-size: 13px; min-width: 0; }
.lv-chip .lv-k { color: var(--mute); font-size: 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; flex: 1 1 auto; min-width: 0; }
.lv-big .lv-chip { padding: 4px 8px; }
.lv-sec { font-size: 13px; margin: 6px 0 0; line-height: 1.6; }
.lv-cols { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; margin-top: 10px; }
.lv-col { min-width: 0; }
.lv-tb { width: 100%; min-width: 0; border-collapse: collapse; font-size: 13px; }
.lv-tb td { padding: 4px 4px; border-top: 1px solid var(--line, #eef0f2); white-space: nowrap; }
.lv-tb td.lv-n { white-space: normal; word-break: keep-all; }
.lv-tb td.lv-r { color: var(--mute); width: 18px; }
@media (max-width: 760px) { .lv-cols { grid-template-columns: minmax(0, 1fr); gap: 8px; } .lv-tb td { white-space: normal; } .lv-chips { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* v218 토스 산업 표 · 지표 이유 칩 */
.ts-src { margin: 4px 0 6px; }
.ts-wrap { overflow-x: auto; }
.ts-tb th { text-align: left; font-weight: 600; color: var(--mute); font-size: 12px; padding: 4px; white-space: nowrap; }
.lv-tb td, .lv-tb th { text-align: left; vertical-align: top; }
.ts-tb td.ts-num, .ts-tb th.ts-num { text-align: right; }
.lv-tb .stk, .lv-sec .stk, .fi-sec .stk { display: inline; padding: 0; border: 0; background: none; font: inherit; color: inherit; cursor: pointer; text-decoration: underline dotted; text-underline-offset: 3px; }
.ts-tb td.ts-rep { white-space: nowrap; }
.ts-tb td.ts-wy { white-space: normal; min-width: 220px; }
.ts-tb .ts-why a { color: inherit; }
.ts-tb tr.ts-sub td { border-top: 0; padding-top: 0; font-size: 12px; white-space: normal; }
.why-tag { display: inline-block; font-size: 11px; line-height: 1.5; padding: 0 6px; border-radius: 6px; background: var(--chip, rgba(127,127,127,.12)); color: var(--mute); margin-right: 4px; white-space: nowrap; }
.why-tag.t-up { color: var(--up); } .why-tag.t-down { color: var(--down); }
.us-day { margin-top: 4px; }
@media (max-width: 760px) {
  .ts-tb thead { display: none; }
  .ts-tb tr { display: grid; grid-template-columns: 22px 1fr auto; column-gap: 6px; padding: 6px 0; border-top: 1px solid var(--line); }
  .ts-tb td { border-top: 0; padding: 1px 0; }
  .ts-tb td.ts-num { display: none; }
  .ts-tb td.ts-rep, .ts-tb td.ts-wy { grid-column: 2 / 4; white-space: normal; min-width: 0; }
  .ts-tb tr.ts-sub { padding-top: 0; border-top: 0; }
  .ts-tb tr.ts-sub td:first-child { display: none; }
  .ts-tb tr.ts-sub td { grid-column: 1 / 4; }
}

/* v219 교차 확인 · 산업 줄 */
.both-tag { display: inline-block; font-size: 11px; line-height: 1.5; padding: 0 5px; border-radius: 6px; background: rgba(229, 72, 77, .1); color: var(--up); margin-left: 4px; white-space: nowrap; font-weight: 600; }
.fi-sec { font-size: 13px; margin: 2px 0 8px; line-height: 1.7; }
.sm-ind td { padding: 6px 0; }

/* v220 테마에 없는 강한 산업 */
.tb-extra { font-size: 13px; margin: 10px 0 0; line-height: 1.7; padding-top: 8px; border-top: 1px dashed var(--line); }
.tb-extra .stk { display: inline; padding: 0; border: 0; background: none; font: inherit; color: inherit; cursor: pointer; text-decoration: underline dotted; text-underline-offset: 3px; }

/* v224 미국 지표 줄: 이유 칩이 길면 숫자 칸으로 넘치던 문제 → 칸 안에서 줄임표 */
.ul-ex { display: flex; justify-self: stretch; justify-content: flex-end; align-items: center; gap: 4px; min-width: 0; overflow: hidden; white-space: nowrap; }
.ul-ex .why-tag { flex: 0 1 auto; min-width: 0; max-width: 100%; overflow: hidden; text-overflow: ellipsis; margin-right: 0; }
.ul-ex .bt, .ul-ex .sc-at { flex: 0 0 auto; }
