/* Editorial market journal. Radius: 12px surfaces, 6px controls.
   Green is the brand accent; red/blue are reserved for market direction.
   Layer order: base 0, chart tooltips 1, skip link 3. */
:root {
  color-scheme: light;
  --page: #fafbf9; --bg: #ffffff; --fill: #f0f3ef; --fill-2: #e1e7df;
  --fill-soft: #f5f7f4; --line: #e1e6e0; --ink: #1c2924; --ink-2: #3c4741;
  --ink-3: #5d6b63; --ink-4: #626f66; --ink-5: #8c9690;
  --accent: #32634c; --accent-soft: #eaf0e9; --mark: rgba(250,204,21,.38); --hl-ink: var(--ink);
  --up: #ba3c42; --up-soft: #fbefef; --down: #3768b2; --down-soft: #eef3fb;
  --danger: #ba3c42; --col: 1184px; --gutter: 32px; --gap: 36px; --pad: 28px; --radius: 12px;
  --font: -apple-system, BlinkMacSystemFont, "Apple SD Gothic Neo", "Noto Sans KR", "Malgun Gothic", sans-serif;
}
:root[data-theme="dark"] {
  color-scheme: dark;
  --page: #151c18; --bg: #1c2420; --fill: #27312b; --fill-2: #39473e;
  --fill-soft: #202a24; --line: #344138; --ink: #e9eee8; --ink-2: #cbd4cd;
  --ink-3: #a9b6ac; --ink-4: #9aab9e; --ink-5: #738579;
  --accent: #a1c5aa; --accent-soft: #273c2e; --mark: rgba(250,204,21,.30); --hl-ink: #ffe9a8;
  --up: #f58c91; --up-soft: #38272a; --down: #91b7f3; --down-soft: #253245;
  --danger: #f58c91;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    color-scheme: dark;
    --page: #151c18; --bg: #1c2420; --fill: #27312b; --fill-2: #39473e;
    --fill-soft: #202a24; --line: #344138; --ink: #e9eee8; --ink-2: #cbd4cd;
    --ink-3: #a9b6ac; --ink-4: #9aab9e; --ink-5: #738579;
    --accent: #a1c5aa; --accent-soft: #273c2e; --mark: rgba(250,204,21,.30); --hl-ink: #ffe9a8;
    --up: #f58c91; --up-soft: #38272a; --down: #91b7f3; --down-soft: #253245;
    --danger: #f58c91;
  }
}
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; scroll-padding-top: 24px; }
body { margin: 0; background: var(--page); color: var(--ink-2); font: 16px/1.75 var(--font); letter-spacing: -.025em; word-break: keep-all; overflow-wrap: anywhere; -webkit-font-smoothing: antialiased; }
h1,h2,h3,h4,p,dl,dd,ul,ol,figure { margin: 0; }
ul,ol { padding: 0; list-style: none; }
a { color: inherit; text-decoration: none; }
a:hover { color: var(--accent); }
button,input,select,textarea { font: inherit; letter-spacing: inherit; }
button,a,input,select { -webkit-tap-highlight-color: transparent; }
button { cursor: pointer; }
button:disabled { cursor: default; }
:focus-visible { outline: 2px solid var(--accent); outline-offset: 5px; }
[hidden] { display: none !important; }
::selection { background: var(--accent-soft); color: var(--ink); }
.num,.tnum { font-variant-numeric: tabular-nums; font-feature-settings: "tnum"; letter-spacing: -.025em; }
.up { color: var(--up); } .down { color: var(--down); } .flat { color: var(--ink-3); }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
.skip { position: absolute; top: -80px; left: 16px; z-index: 3; padding: 12px 20px; background: var(--ink); color: var(--bg); border-radius: 6px; }
.skip:focus { top: 12px; }
.wrap { width: 100%; max-width: calc(var(--col) + var(--gutter)*2); margin-inline: auto; padding-inline: var(--gutter); }
.site-head { background: var(--page); border-bottom: 1px solid var(--line); }
.site-head-in { display: flex; align-items: center; gap: 40px; min-height: 88px; }
.brand { display: inline-flex; align-items: baseline; gap: 12px; color: var(--ink); font-size: 23px; font-weight: 800; letter-spacing: -.065em; white-space: nowrap; }
.brand small { font-size: 12px; font-weight: 500; letter-spacing: -.025em; color: var(--ink-3); }
.nav { display: flex; gap: 28px; margin-left: auto; align-self: stretch; }
.nav a { display: flex; align-items: center; position: relative; font-size: 14px; color: var(--ink-3); white-space: nowrap; }
.nav a:hover,.nav a[aria-current] { color: var(--ink); }
.nav a[aria-current] { font-weight: 700; }
.nav a[aria-current]::after { content: ""; position: absolute; bottom: -1px; height: 2px; inset-inline: 0; background: var(--accent); }
.theme-toggle { display: inline-flex; gap: 7px; align-items: center; justify-content: center; min-height: 44px; padding: 0 10px; border: 1px solid var(--line); border-radius: 6px; background: transparent; color: var(--ink-3); font-size: 12px; }
.theme-symbol { font-size: 20px; line-height: 1; }
.theme-toggle:hover { background: var(--fill); }
#main { padding-top: 44px; padding-bottom: 72px; min-height: 60dvh; }
#main:focus { outline: none; }
.site-foot { padding: 40px 0; border-top: 1px solid var(--line); color: var(--ink-4); font-size: 12px; line-height: 1.8; }
.foot-brand { display: flex; justify-content: space-between; align-items: baseline; gap: 24px; margin-bottom: 28px; }
.foot-brand .brand { font-size: 19px; }
.foot-brand p { font-size: 14px; color: var(--ink-3); }
.site-foot .notice { max-width: 860px; margin-bottom: 16px; }
.foot-links { display: flex; flex-wrap: wrap; gap: 10px 24px; margin-bottom: 12px; color: var(--ink-2); }
.foot-links a:hover { text-decoration: underline; text-underline-offset: 4px; }
/* Page headings are open on the page; cards only enclose actual data groups. */
.panel { min-width: 0; }
.page-title { color: var(--ink); font-size: clamp(28px, 3vw, 40px); line-height: 1.4; letter-spacing: -.055em; font-weight: 750; text-wrap: pretty; }
.page-meta { color: var(--ink-3); font-size: 13px; display: flex; flex-wrap: wrap; gap: 4px 8px; align-items: baseline; }
.page-meta .updated { color: var(--ink-4); }
.page-lead { margin-top: 14px; font-size: 16px; line-height: 1.8; color: var(--ink-3); max-width: 740px; }
.page-intro { margin: 8px 0 36px; }
.eyebrow { color: var(--accent); font-size: 12px; font-weight: 750; letter-spacing: .025em; }
.page-intro .eyebrow { margin-bottom: 12px; }
.section-head { display: flex; align-items: baseline; flex-wrap: wrap; justify-content: space-between; gap: 6px 16px; margin-bottom: 24px; }
.section-title { font-size: 22px; line-height: 1.4; letter-spacing: -.045em; color: var(--ink); font-weight: 750; }
.section-aside { font-size: 12px; color: var(--ink-4); }
a.section-aside { color: var(--accent); }
.text-link { display: inline-flex; align-items: center; gap: 14px; font-size: 13px; color: var(--ink-3); }
.text-link:hover,a.section-aside:hover { text-decoration: underline; text-underline-offset: 4px; }
.prose p + p { margin-top: 14px; }
.src { font-size: 11px; color: var(--ink-4); white-space: nowrap; }
a.src { text-decoration: underline; text-underline-offset: 3px; text-decoration-color: var(--line); }
a.src:hover { color: var(--accent); text-decoration-color: currentColor; }
.muted { color: var(--ink-4); }
.empty { background: var(--fill-soft); padding: 40px 28px; border-radius: var(--radius); color: var(--ink-3); font-size: 15px; }
.report { display: grid; gap: 36px; }
.edition { display: flex; justify-content: space-between; align-items: center; gap: 20px; margin-bottom: 25px; }
.hero-head { padding-bottom: 30px; }
.hero-title { max-width: 930px; margin-top: 14px; }
.hero-text { min-width: 0; margin-top: 34px; padding: 28px 32px 26px; background: var(--fill-soft); border: 1px solid var(--line); border-radius: var(--radius); }
.hero-text:not(:has(*)) { display: none; }
.hero-text .summary p { max-width: 880px; }
.summary { font-size: 16px; line-height: 1.95; color: var(--ink-3); }
.hl { font-weight: 650; color: var(--hl-ink); background: linear-gradient(var(--mark), var(--mark)) no-repeat 0 88% / 100% .42em; padding: 0 .08em; -webkit-box-decoration-break: clone; box-decoration-break: clone; }
.summary-lead { font-size: clamp(20px, 2vw, 24px); line-height: 1.6; letter-spacing: -.045em; color: var(--ink); font-weight: 650; max-width: 880px; }
.summary-lead + p { margin-top: 16px; }
.summary-lead .hl { font-weight: 750; }
.teasers { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 24px; padding-top: 22px; border-top: 1px solid var(--line); }
.teasers a { display: inline-flex; align-items: center; min-height: 36px; padding: 0 14px; border: 1px solid var(--line); border-radius: 999px; background: var(--bg); color: var(--ink-2); font-size: 13px; font-weight: 550; transition: border-color .15s, color .15s; }
.teasers a:hover { border-color: var(--accent); color: var(--accent); }
.teasers .teaser-vote { border-color: var(--accent); color: var(--accent); font-weight: 650; }
.note { display: flex; gap: 14px; margin-top: 18px; font-size: 14px; color: var(--ink-2); }
.note-by { color: var(--accent); font-weight: 700; white-space: nowrap; }
.hero-body { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 20px; }
.index { border: 1px solid var(--line); border-radius: var(--radius); background: var(--bg); padding: 24px 28px 20px; min-width: 0; }
.index-top { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; }
.index-name { color: var(--ink); font-size: 15px; font-weight: 700; letter-spacing: -.025em; }
.index-ticker { margin-left: 7px; font-size: 10px; color: var(--ink-4); font-weight: 500; letter-spacing: .035em; }
.index-close { font-size: clamp(32px, 3.5vw, 44px); font-weight: 650; line-height: 1.2; letter-spacing: -.055em; color: var(--ink); margin-top: 14px; }
.index-change { display: flex; align-items: baseline; gap: 10px; font-size: 14px; font-weight: 650; margin-top: 6px; }
.index-change .pt { font-size: 12px; font-weight: 400; }
.index-change .pt::after { content: " pt"; }
.index-stats { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 6px 14px; padding-top: 14px; margin-top: 16px; border-top: 1px solid var(--line); font-size: 11px; }
.index-stats div { display: flex; gap: 8px; }
.index-stats dt { color: var(--ink-4); }
.index-stats dd { color: var(--ink-2); font-weight: 600; }
.chart-empty { display: flex; align-items: center; min-height: 130px; color: var(--ink-4); font-size: 13px; }
/* Charts show only real historical closes. Labels remain HTML and never stretch. */
.lc { margin-top: 20px; }
.lc-plot { position: relative; height: 122px; margin-left: 40px; }
.lc-plot svg { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; }
.lc-plot svg * { vector-effect: non-scaling-stroke; }
.lc-grid { stroke: var(--line); stroke-width: 1; stroke-dasharray: 2 4; }
.lc-area { fill: currentColor; opacity: .045; }
.lc-prev { stroke: var(--ink-5); stroke-width: 1; stroke-dasharray: 4 5; opacity: .6; }
.lc-line { fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linejoin: round; stroke-linecap: round; }
.lc-tick { position: absolute; left: -40px; width: 32px; transform: translateY(-50%); text-align: right; font-size: 10px; line-height: 1; color: var(--ink-4); }
.lc-dot { position: absolute; width: 16px; height: 16px; margin: -8px 0 0 -8px; border-radius: 50%; }
.lc-dot:hover::before { content: ""; position: absolute; inset: 4px; border-radius: 50%; background: currentColor; box-shadow: 0 0 0 2px var(--bg); }
.lc-dot:hover::after { content: attr(data-tip); position: absolute; right: 0; bottom: 22px; padding: 5px 9px; border-radius: 6px; background: var(--ink); color: var(--bg); font-size: 11px; white-space: pre; z-index: 1; }
.lc-last { position: absolute; width: 7px; height: 7px; margin: -3.5px 0 0 -3.5px; background: currentColor; border-radius: 50%; box-shadow: 0 0 0 3px var(--bg); }
.lc-today { position: absolute; white-space: nowrap; font-size: 10px; line-height: 1.4; padding: 2px 5px; border-radius: 4px; color: var(--ink-3); background: var(--bg); }
.lc-today b { font-weight: 600; }
.lc-today.above { transform: translateY(calc(-100% - 7px)); }
.lc-today.below { transform: translateY(7px); }
.lc-x { display: flex; justify-content: space-between; margin: 8px 0 0 40px; color: var(--ink-4); font-size: 10px; }
.report-nav { display: flex; gap: 30px; padding: 0 0 17px; border-bottom: 1px solid var(--line); }
.report-nav a { font-size: 13px; color: var(--ink-3); white-space: nowrap; }
.report-nav a:hover { color: var(--accent); }
.report-nav a:last-child { margin-left: auto; }
.board { display: grid; grid-template-columns: minmax(0,2.15fr) minmax(0,1fr); gap: 56px; align-items: start; }
.col-main,.col-side { min-width: 0; display: grid; gap: 44px; }
.col-main > .panel + .panel { border-top: 1px solid var(--line); padding-top: 34px; }
.col-side { gap: 26px; }
.col-side > .panel { padding: 23px; background: var(--fill-soft); border-radius: var(--radius); }
.col-side .section-title { font-size: 17px; line-height: 1.5; }
.col-side .section-head { margin-bottom: 20px; }
/* Long-form issues use typography and spacing, never a vertical accent rule. */
.issue { padding: 26px 0; }
.issue:first-child { padding-top: 0; }
.issue:last-child { padding-bottom: 0; }
.issue + .issue { border-top: 1px solid var(--line); }
.issue-title { font-size: 20px; line-height: 1.55; letter-spacing: -.04em; color: var(--ink); font-weight: 700; }
.issue dl { display: grid; grid-template-columns: 95px minmax(0,1fr); gap: 10px 18px; margin-top: 18px; }
.issue dt { font-size: 12px; color: var(--ink-4); padding-top: 3px; }
.issue dd { font-size: 15px; line-height: 1.85; color: var(--ink-2); }
.issue dd.watch { color: var(--accent); }
.issue .src { display: inline-block; margin-top: 13px; margin-left: 113px; }
.stocks-cols,.stocks li { display: grid; grid-template-columns: 112px 80px minmax(0,1fr); gap: 12px; align-items: baseline; }
.stocks-cols { color: var(--ink-4); font-size: 11px; padding-bottom: 10px; }
.stocks-cols span:nth-child(2) { text-align: right; }
.stocks li { padding: 16px 0; border-top: 1px solid var(--line); }
.stocks li:last-child { padding-bottom: 0; }
.stock-name { color: var(--ink); font-size: 14px; font-weight: 650; }
.stock-chg { font-size: 14px; text-align: right; font-weight: 650; }
.stock-reason { font-size: 13px; color: var(--ink-3); padding-left: 8px; line-height: 1.7; }
.stock-reason .src { margin-left: 6px; }
.flows { display: grid; gap: 18px; }
.flow { display: grid; grid-template-columns: 52px minmax(0,1fr) 88px; align-items: center; gap: 16px; }
.flow-who { font-size: 13px; font-weight: 600; }
.flow-val { font-size: 16px; text-align: right; font-weight: 600; }
.flow-track { position: relative; height: 24px; }
.flow-track::before { content: ""; position: absolute; left: 50%; top: -8px; bottom: -8px; width: 1px; background: var(--line); }
.flow-bar { position: absolute; top: 5px; height: 14px; border-radius: 3px; }
.flow-bar.buy { left: calc(50% + 2px); background: var(--up); opacity: .8; }
.flow-bar.sell { right: calc(50% + 2px); background: var(--down); opacity: .8; }
.flow-scale { display: grid; grid-template-columns: 52px minmax(0,1fr) 88px; gap: 16px; margin-top: 10px; color: var(--ink-4); font-size: 11px; }
.flow-scale > span { display: flex; justify-content: space-between; }
.flow-picks { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; margin-top: 26px; padding: 20px; background: var(--fill-soft); border-radius: 8px; }
.flow-picks h3 { color: var(--ink-4); font-size: 12px; font-weight: 500; margin-bottom: 8px; }
.flow-picks li { font-size: 14px; line-height: 2; color: var(--ink); }
.flow-picks li span { color: var(--ink-4); font-size: 11px; margin-left: 10px; }
.flows-foot { margin-top: 14px; }
.rows li { display: grid; grid-template-columns: minmax(0,1fr) auto 65px; align-items: baseline; column-gap: 10px; padding: 12px 0; }
.rows li + li { border-top: 1px solid var(--line); }
.rows li:first-child { padding-top: 0; }
.rows li:last-child { padding-bottom: 0; }
.row-label { color: var(--ink-2); font-size: 12px; }
.row-val { color: var(--ink); font-size: 13px; text-align: right; font-weight: 600; }
.row-chg { font-size: 12px; text-align: right; }
.row-note { grid-column: 1/-1; color: var(--ink-4); font-size: 11px; margin-top: 3px; }
.upcoming li { display: grid; grid-template-columns: 60px minmax(0,1fr); gap: 14px; padding: 15px 0; }
.upcoming li + li { border-top: 1px solid var(--line); }
.upcoming li:first-child { padding-top: 0; }
.upcoming li:last-child { padding-bottom: 0; }
.up-date { font-size: 13px; font-weight: 650; line-height: 1.5; color: var(--ink); }
.up-date small { display: block; font-size: 11px; font-weight: 400; margin-top: 4px; color: var(--ink-4); }
.up-title { font-size: 13px; line-height: 1.65; color: var(--ink-2); font-weight: 550; }
.up-cat { display: block; margin-top: 4px; font-size: 11px; color: var(--ink-4); font-weight: 400; }
.shorts { width: 100%; max-width: 320px; aspect-ratio: 9/16; overflow: hidden; border-radius: 8px; background: var(--fill); }
.shorts iframe { width: 100%; height: 100%; display: block; border: 0; }
/* Outlook and voting are downstream of the reporting. */
.p-forecast { margin-top: 6px; padding: 32px; border: 1px solid var(--line); background: var(--bg); border-radius: var(--radius); }
.p-forecast .section-head { margin-bottom: 28px; }
.fc { display: grid; grid-template-columns: minmax(0,1.2fr) minmax(0,1fr); gap: 40px; }
.fc-title { color: var(--ink); font-size: 16px; line-height: 1.5; font-weight: 700; }
.fc-read .fc-title { margin-bottom: 20px; }
.fc-why,.fc-when { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 24px; }
.fc-read h4 { font-size: 13px; font-weight: 650; margin-bottom: 9px; }
.why.up h4::before { content: "↗ "; }
.why.down h4::before { content: "↘ "; }
.fc-read ul { display: grid; gap: 10px; }
.fc-read li { font-size: 13px; line-height: 1.8; color: var(--ink-3); }
.fc-when { margin-top: 24px; padding-top: 20px; border-top: 1px solid var(--line); }
.when h4 { color: var(--ink); }
.fc-vote { background: var(--fill-soft); padding: 24px; border-radius: 8px; min-width: 0; }
.fc-vote-head { margin-bottom: 20px; }
.fc-when-note { display: block; margin-top: 4px; font-size: 11px; color: var(--ink-4); }
.polls { display: grid; gap: 26px; }
.poll-q { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 6px; margin-bottom: 10px; }
.poll-market { font-size: 13px; color: var(--ink); font-weight: 650; }
.poll-status { font-size: 11px; color: var(--ink-3); }
.poll-status.up { color: var(--up); } .poll-status.down { color: var(--down); }
.poll-btns { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.vbtn { height: 46px; font-size: 13px; font-weight: 650; border: 1px solid var(--line); border-radius: 6px; background: var(--bg); transition: transform .15s, background-color .15s; }
.vbtn[data-choice="up"] { color: var(--up); } .vbtn[data-choice="down"] { color: var(--down); }
.vbtn[data-choice="up"]:not(:disabled):hover { background: var(--up-soft); border-color: var(--up); }
.vbtn[data-choice="down"]:not(:disabled):hover { background: var(--down-soft); border-color: var(--down); }
.vbtn:active:not(:disabled) { transform: translateY(1px); }
.vbtn:disabled { color: var(--ink-4); }
.vbtn.is-mine[data-choice="up"] { color: var(--up); background: var(--up-soft); border-color: var(--up); }
.vbtn.is-mine[data-choice="down"] { color: var(--down); background: var(--down-soft); border-color: var(--down); }
.vbtn.is-mine::after { content: " ✓"; }
.poll[data-closed="true"]:not(:has(.is-mine)) .poll-btns { display: none; }
.ratio { margin-top: 14px; }
.ratio-bar { display: flex; gap: 3px; height: 5px; }
.ratio-bar span { display: block; min-width: 0; border-radius: 2px; }
.r-up { background: var(--up); } .r-down { background: var(--down); }
.ratio-bar.is-empty span { background: var(--fill-2); }
.ratio-legend { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 4px 8px; margin-top: 8px; font-size: 11px; }
.ratio-legend b { font-weight: 650; }
.r-total { color: var(--ink-4); }
.record { border-top: 1px solid var(--line); padding-top: 16px; margin-top: 22px; font-size: 12px; color: var(--ink-3); }
.vote-help { margin-top: 7px; font-size: 11px; color: var(--ink-4); }
.vote-only .fc,.read-only .fc { grid-template-columns: 1fr; }
.vote-only .polls { grid-template-columns: repeat(2,minmax(0,1fr)); gap: 32px; }
.daynav { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; padding-top: 24px; border-top: 1px solid var(--line); }
.daynav a { padding: 14px 0; font-size: 15px; font-weight: 650; color: var(--ink); }
.daynav a:hover { color: var(--accent); }
.daynav small { display: block; color: var(--ink-4); font-weight: 400; font-size: 11px; margin-bottom: 5px; }
.daynav .next { text-align: right; }
.ad { padding: 16px; border: 1px solid var(--line); border-radius: 8px; }
.ad-label { display: block; font-size: 10px; color: var(--ink-4); margin-bottom: 5px; }
.ad-box { min-height: 100px; display: flex; justify-content: center; }
.ad-box.adsense { min-height: 280px; display: block; }
/* Search and filters progressively enhance server-rendered content. */
.archive-tools { display: flex; align-items: end; gap: 16px; padding: 22px; background: var(--fill-soft); border-radius: 8px; margin-bottom: 36px; }
.archive-tools label { display: grid; gap: 6px; color: var(--ink-3); font-size: 11px; }
.search-field { min-width: 0; width: min(100%,420px); }
.archive-tools input,.archive-tools select { min-height: 44px; width: 100%; min-width: 0; border: 1px solid var(--line); border-radius: 6px; background: var(--bg); color: var(--ink); padding: 10px 14px; font-size: 13px; }
.archive-tools input::placeholder { color: var(--ink-4); }
.month-field { min-width: 130px; }
.search-count { margin-left: auto; padding-bottom: 10px; font-size: 12px; white-space: nowrap; color: var(--ink-4); }
.arch-wrap { display: grid; gap: 40px; }
.arch-month-title,.arch-wrap .section-title { color: var(--ink); font-size: 19px; font-weight: 700; margin-bottom: 18px; }
.arch-cols,.arch li a { display: grid; grid-template-columns: 90px minmax(0,1fr) 100px 100px; gap: 24px; align-items: baseline; }
.arch-cols { padding-bottom: 12px; color: var(--ink-4); font-size: 11px; }
.arch-cols span:nth-child(n+3) { text-align: right; }
.arch li a { padding: 22px 0; border-top: 1px solid var(--line); }
.arch li a:hover .arch-title { color: var(--accent); text-decoration: underline; text-underline-offset: 4px; }
.arch-day { font-size: 14px; color: var(--ink); font-weight: 650; }
.arch-day small { margin-left: 6px; font-weight: 400; font-size: 11px; color: var(--ink-4); }
.arch-title { font-size: 15px; color: var(--ink-2); line-height: 1.65; }
.arch-chg { display: contents; }
.arch-chg span { text-align: right; font-size: 14px; }
.calendar-filters { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 32px; }
.filter-button { min-height: 42px; border: 1px solid var(--line); background: transparent; border-radius: 6px; padding: 8px 17px; font-size: 13px; color: var(--ink-3); }
.filter-button:hover { background: var(--fill); }
.filter-button[aria-pressed="true"] { background: var(--accent); color: var(--bg); border-color: var(--accent); }
.cal { display: grid; gap: 24px; }
.cal-week { border: 1px solid var(--line); border-radius: var(--radius); background: var(--bg); padding: 0 28px; }
.cal-day { display: grid; grid-template-columns: 155px minmax(0,1fr); gap: 28px; padding: 28px 0; }
.cal-day:not([hidden]) ~ .cal-day { border-top: 1px solid var(--line); }
.cal-date { display: flex; flex-direction: column; align-items: start; }
.cal-md { color: var(--ink); font-size: 23px; font-weight: 650; letter-spacing: -.045em; line-height: 1.4; }
.cal-wd { color: var(--ink-4); font-size: 12px; margin-top: 3px; }
.cal-dd { font-size: 11px; color: var(--ink-3); margin-top: 9px; }
.cal-dd.soon { color: var(--accent); background: var(--accent-soft); border-radius: 4px; padding: 2px 9px; }
.cal-evs { display: grid; gap: 26px; }
.cal-title { color: var(--ink); font-size: 17px; line-height: 1.6; font-weight: 650; }
.cal-cat { display: inline-block; font-size: 10px; font-weight: 500; padding: 2px 7px; margin-left: 8px; background: var(--fill); border-radius: 4px; color: var(--ink-3); vertical-align: middle; }
.cal-watch { font-size: 14px; color: var(--ink-3); line-height: 1.9; margin-top: 9px; max-width: 750px; }
.cal-ev .src { display: inline-block; margin-top: 8px; }
.weekly-report .hero { border-bottom: 1px solid var(--line); padding-bottom: 34px; }
.weekly-report .hero-body { align-items: center; gap: 48px; margin-top: 28px; }
.weekly-report .hero-text { margin: 0; }
.wk-moves { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 20px; }
.wk-moves > div { background: var(--bg); padding: 24px; border: 1px solid var(--line); border-radius: var(--radius); }
.wk-moves .index-close { font-size: 36px; }
.highlights article { padding: 24px 0; }
.highlights article:first-child { padding-top: 0; }
.highlights article + article { border-top: 1px solid var(--line); }
.hl-title { color: var(--ink); font-size: 20px; line-height: 1.6; }
.hl-body { margin-top: 12px; color: var(--ink-3); font-size: 15px; }
.dailies li a { display: grid; grid-template-columns: 48px minmax(0,1fr); gap: 12px; padding: 13px 0; }
.dailies li + li { border-top: 1px solid var(--line); }
.dailies .arch-title { font-size: 13px; }
.doc { max-width: 800px; padding: 22px 0 32px; margin-inline: auto; }
.doc .page-title { font-size: 34px; }
.doc h2 { color: var(--ink); font-size: 19px; font-weight: 650; margin: 36px 0 12px; }
.doc h2:first-of-type { margin-top: 40px; padding-top: 30px; border-top: 1px solid var(--line); }
.doc p,.doc li { font-size: 15px; line-height: 1.95; }
.doc .page-lead { font-size: 17px; }
.doc p + p { margin-top: 14px; }
.doc ul { display: grid; gap: 8px; padding-left: 18px; list-style: disc; }
.doc a { color: var(--accent); text-decoration: underline; text-underline-offset: 4px; }
.doc .pending { color: var(--danger); }
.lost { padding: 64px 0; max-width: 740px; margin: 0 auto; }
.lost .big { font-size: 96px; font-weight: 650; letter-spacing: -.075em; color: var(--accent); line-height: 1; }
.lost .page-title { margin-top: 24px; }
.lost-links { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 30px; }
.btn { display: inline-flex; align-items: center; justify-content: center; min-height: 46px; padding: 10px 20px; border: 1px solid var(--line); border-radius: 6px; background: var(--bg); color: var(--ink); font-size: 14px; font-weight: 600; }
.btn:hover { background: var(--fill); }
.btn.primary { color: var(--bg); background: var(--accent); border-color: var(--accent); }
.btn.primary:hover { opacity: .9; }
@media (min-width: 1280px) { .col-side { position: sticky; top: 28px; } }
@media (max-width: 1023px) {
  :root { --gutter: 28px; }
  .site-head-in { gap: 24px; }
  .brand small { display: none; }
  .nav { gap: 22px; }
  .board { grid-template-columns: minmax(0,1.8fr) minmax(0,1fr); gap: 28px; }
  .col-side > .panel { padding: 18px; }
  .rows li { grid-template-columns: minmax(0,1fr) auto; gap: 2px 8px; }
  .row-chg { grid-column: 2; }
  .stocks-cols { display: none; }
  .stocks li { grid-template-columns: 1fr auto; }
  .stock-reason { grid-column: 1/-1; padding-left: 0; }
  .fc { grid-template-columns: minmax(0,1fr) minmax(0,1fr); gap: 28px; }
  .fc-why,.fc-when { grid-template-columns: 1fr; gap: 18px; }
  .weekly-report .hero-body { grid-template-columns: 1fr; gap: 24px; }
}
@media (max-width: 767px) {
  :root { --gutter: 22px; }
  #main { padding-top: 28px; padding-bottom: 48px; }
  .site-head-in { min-height: 74px; gap: 16px; flex-wrap: wrap; padding-top: 18px; }
  .brand { font-size: 22px; }
  .brand small { display: inline; font-size: 11px; }
  .theme-toggle { margin-left: auto; min-height: 40px; }
  .nav { order: 3; width: 100%; margin-left: 0; gap: 30px; }
  .nav a { padding: 7px 0 15px; font-size: 13px; }
  .edition { margin-bottom: 19px; }
  .page-meta { font-size: 11px; gap: 2px 6px; }
  .hero-text { margin-top: 24px; padding: 20px 18px; }
  .hero .page-meta { display: block; }
  .page-title { font-size: 29px; line-height: 1.5; }
  .hero-title { margin-top: 12px; }
  .hero-head { padding-bottom: 24px; }
  .hero-text { margin-top: 14px; }
  .summary { font-size: 14px; line-height: 1.95; }
  .hero-body { gap: 14px; }
  .index { padding: 18px; }
  .index-ticker { display: none; }
  .index-close { font-size: 32px; }
  .index-stats { gap: 5px; font-size: 10px; }
  .index-stats div { gap: 4px; }
  .report { gap: 28px; }
  .report-nav { gap: 20px; overflow-x: auto; padding-bottom: 14px; }
  .report-nav a { font-size: 12px; min-height: 30px; display: flex; align-items: center; gap: 4px; }
  .report-nav a:last-child { margin-left: 0; }
  .board { grid-template-columns: 1fr; gap: 32px; }
  .col-main { gap: 32px; }
  .col-side { grid-template-columns: repeat(2,minmax(0,1fr)); gap: 18px; }
  .col-side > .panel { padding: 22px; }
  .col-side .p-shorts { grid-column: 1/-1; }
  .section-title { font-size: 21px; }
  .section-head { margin-bottom: 21px; }
  .issue-title { font-size: 19px; }
  .issue dl { grid-template-columns: 86px minmax(0,1fr); gap: 10px 14px; }
  .issue dd { font-size: 14px; }
  .issue .src { margin-left: 100px; }
  .stocks-cols,.stocks li { display: grid; grid-template-columns: 110px 75px minmax(0,1fr); }
  .stock-reason { grid-column: auto; padding-left: 8px; }
  .p-forecast { padding: 24px; }
  .fc { grid-template-columns: 1fr; }
  .fc-why,.fc-when { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .fc-vote { padding: 22px; }
  .polls { grid-template-columns: repeat(2,minmax(0,1fr)); gap: 24px; }
  .ratio-legend .r-total { order: 3; flex-basis: 100%; }
  .arch-cols,.arch li a { grid-template-columns: 60px minmax(0,1fr) 80px; gap: 16px; }
  .arch-cols span:nth-child(3) { display: none; }
  .arch-cols span:last-child { font-size: 0; }
  .arch-cols span:last-child::after { content: "코스피 / 코스닥"; font-size: 10px; }
  .arch-chg { display: block; text-align: right; }
  .arch-chg span { display: block; font-size: 12px; line-height: 1.8; }
  .arch-title { font-size: 14px; }
  .archive-tools { flex-wrap: wrap; padding: 18px; gap: 12px; }
  .search-field { flex: 1; width: auto; }
  .search-count { flex-basis: 100%; padding: 0; }
  .archive-tools input,.archive-tools select { font-size: 16px; }
  .cal-week { padding: 0 22px; }
  .cal-day { grid-template-columns: 100px minmax(0,1fr); gap: 22px; }
  .cal-md { font-size: 19px; }
  .cal-title { font-size: 16px; }
  .cal-watch { font-size: 13px; }
  .doc { padding-top: 10px; }
  .doc .page-title { font-size: 29px; }
  .foot-brand { align-items: start; flex-direction: column; gap: 8px; }
}
@media (max-width: 520px) {
  :root { --gutter: 20px; }
  .hero-body { grid-template-columns: 1fr; }
  .index { padding: 20px; }
  .index-ticker { display: inline; }
  .index-close { font-size: 38px; }
  .lc-plot { height: 112px; }
  .index-stats { font-size: 11px; gap: 6px 12px; }
  .hero-head .updated { flex-basis: 100%; }
  .hero-head .updated::first-letter { color: transparent; }
  .edition .text-link { font-size: 11px; gap: 8px; }
  .note { flex-direction: column; gap: 4px; }
  .issue dl { grid-template-columns: 1fr; gap: 5px; }
  .issue dt:not(:first-child) { margin-top: 7px; }
  .issue .src { margin-left: 0; }
  .stocks-cols { display: none; }
  .stocks li { grid-template-columns: 1fr auto; gap: 5px 16px; }
  .stock-reason { grid-column: 1/-1; padding: 0; }
  .col-side { grid-template-columns: 1fr; }
  .col-side > .panel { padding: 24px; }
  .rows li { grid-template-columns: minmax(0,1fr) auto 68px; gap: 8px; }
  .row-chg { grid-column: auto; }
  .row-label,.row-val { font-size: 13px; }
  .flow { grid-template-columns: 42px minmax(0,1fr) 76px; gap: 10px; }
  .flow-scale { grid-template-columns: 42px minmax(0,1fr) 76px; gap: 10px; }
  .flow-picks { padding: 16px; gap: 16px; }
  .flow-picks li span { display: block; margin: 0; line-height: 1.4; }
  .flow-picks li + li { margin-top: 6px; }
  .p-forecast { padding: 22px 18px; }
  .fc-why,.fc-when { grid-template-columns: 1fr; }
  .fc-vote { padding: 20px 16px; }
  .polls,.vote-only .polls { grid-template-columns: 1fr; }
  .ratio-legend .r-total { order: 0; flex-basis: auto; }
  .cal-week { padding: 0 20px; }
  .cal-day { grid-template-columns: 1fr; gap: 18px; }
  .cal-date { flex-direction: row; gap: 10px; align-items: center; }
  .cal-wd,.cal-dd { margin: 0; }
  .cal-dd { margin-left: auto; }
  .cal-cat { margin-left: 4px; }
  .arch li a { grid-template-columns: 44px minmax(0,1fr) 65px; gap: 10px; padding: 18px 0; }
  .arch-cols { grid-template-columns: 44px minmax(0,1fr) 85px; gap: 10px; }
  .arch-day small { display: block; margin: 0; }
  .month-field { min-width: 132px; }
  .archive-tools input,.archive-tools select { padding: 10px; font-size: 16px; }
  .search-field { flex-basis: 100%; }
  .search-count { flex-basis: auto; }
  .page-lead { font-size: 14px; }
  .wk-moves { gap: 12px; }
  .wk-moves > div { padding: 18px; }
  .wk-moves .index-close { font-size: 28px; }
  .lost { padding: 32px 0; }
}
/* Motion: quiet, one-time. html.motion is set by theme.js only when motion is allowed. */
.motion :is(.panel:not(.hero), .cal-week, .arch-month) { opacity: 0; transform: translateY(12px); transition: opacity .55s ease, transform .55s cubic-bezier(.2,.7,.2,1); }
.motion :is(.panel:not(.hero), .cal-week, .arch-month).is-in { opacity: 1; transform: none; }
.motion .hero .index { opacity: 0; transform: translateY(10px); transition: opacity .6s ease .12s, transform .6s cubic-bezier(.2,.7,.2,1) .12s; }
.motion .hero .index + .index { transition-delay: .22s; }
.motion .hero.is-in .index { opacity: 1; transform: none; }
.motion .hl { background-size: 0 .42em; transition: background-size .9s cubic-bezier(.3,.6,.2,1) .4s; }
.motion .is-in .hl { background-size: 100% .42em; }
.motion .lc-plot svg { clip-path: inset(-8px 100% -8px -8px); transition: clip-path 1.1s cubic-bezier(.3,.6,.2,1) .35s; }
.motion .is-in .lc-plot svg { clip-path: inset(-8px -8px -8px -8px); }
.motion :is(.lc-last, .lc-today) { opacity: 0; transition: opacity .4s ease 1.35s; }
.motion .is-in :is(.lc-last, .lc-today) { opacity: 1; }
.motion .flow-bar { transform: scaleX(0); transition: transform .8s cubic-bezier(.2,.7,.2,1) .2s; }
.motion .flow-bar.buy { transform-origin: left; }
.motion .flow-bar.sell { transform-origin: right; }
.motion .is-in .flow-bar { transform: none; }
.ratio-bar span { transition: flex-grow .6s cubic-bezier(.2,.7,.2,1); }
a, .nav a, .report-nav a { transition: color .15s ease; }
@media print { .motion :is(.panel, .page-intro, .cal-week, .arch-month, .index, .lc-last, .lc-today, .flow-bar, .lc-plot svg) { opacity: 1 !important; transform: none !important; clip-path: none !important; } .motion .hl { background-size: 100% .42em !important; } }
@media (prefers-reduced-motion: reduce) { *,*::before,*::after { transition: none !important; animation: none !important; scroll-behavior: auto !important; } }
@media print {
  :root { --page: white; --bg: white; --ink: #1c2924; --ink-2: #3c4741; --ink-3: #5d6b63; --ink-4: #626f66; }
  .site-head,.theme-toggle,.report-nav,.ad,.p-forecast,.daynav,.site-foot,.archive-tools,.calendar-filters { display: none; }
  #main { padding: 0; }
  .board { grid-template-columns: 1fr; }
  .col-side { position: static; }
  .issue,.index,.cal-day { break-inside: avoid; }
}
/* Operator views share typography and color tokens. */

.admin { background: var(--bg); border-radius: var(--radius); padding: 40px; }
@media (max-width: 639px) { .admin { border-radius: 0; padding: 28px var(--gutter); } }
.a-sec { margin-top: 48px; padding-top: 40px; border-top: 1px solid var(--line); }
.a-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.a-h { font-size: 19px; font-weight: 700; color: var(--ink); margin-bottom: 12px; }
.a-head .a-h { margin: 0; }
.a-status { font-size: 14px; font-weight: 600; color: var(--ink-3); margin-left: 8px; }
.bad { color: var(--danger); }
.ok { color: var(--accent); }
.small { font-size: 13px; }
.a-table { width: 100%; border-collapse: collapse; font-size: 14px; }
.a-table th { text-align: left; font-weight: 600; color: var(--ink-4); padding: 6px 8px; }
.a-table td { padding: 8px; vertical-align: top; }
.a-table tbody tr + tr td { border-top: 1px solid var(--line); }
.a-table .r { text-align: right; }
.a-problems { margin: 16px 0; padding: 14px 18px; background: var(--up-soft); border-radius: 12px; color: var(--danger); font-size: 15px; }
.a-problems ul { margin-top: 6px; list-style: disc; padding-left: 20px; }
.a-form fieldset { border: 0; padding: 0; margin: 28px 0 0; }
.a-form legend { font-size: 16px; font-weight: 700; color: var(--ink); padding: 0; margin-bottom: 10px; }
.f-row { display: grid; grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); gap: 10px; }
.f-row + .f-row { margin-top: 18px; }
.f { display: flex; flex-direction: column; gap: 4px; }
.f.wide { grid-column: 1 / -1; }
.f span { font-size: 13px; color: var(--ink-3); }
.f input, .f textarea, .f select, .a-pick select, .a-json textarea {
  width: 100%; font: inherit; font-size: 15px; color: var(--ink);
  padding: 10px 12px; border: 1px solid var(--line); border-radius: 6px; background: var(--bg);
}
.f input:focus, .f textarea:focus, .a-json textarea:focus { outline: 2px solid var(--ink); outline-offset: 0; border-color: transparent; }
.a-json textarea { font-family: ui-monospace, Menlo, monospace; font-size: 13px; line-height: 1.5; }
.a-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 16px; }
.a-json { margin-top: 24px; }
.a-json summary { cursor: pointer; font-weight: 600; color: var(--ink-3); }
.a-json ul { margin-top: 8px; word-break: break-all; }
.a-judge { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; padding: 8px 0; }
.a-judge .btn { height: 40px; padding: 0 14px; font-size: 15px; }
.a-cal { padding: 20px 0; }
.a-cal + .a-cal { border-top: 1px solid var(--line); }
.btn.up { color: var(--up); }
.btn.down { color: var(--down); }
.btn.danger { color: var(--danger); }
.btn:disabled { opacity: .4; cursor: not-allowed; }
.index-close.up { color: var(--up); }
.index-close.down { color: var(--down); }

.page-meta .updated { color: var(--ink-4); font-weight: 400; }

/* Sourced market context: compact numeric comparisons, no decorative side rules. */
.section-intro { color: var(--ink-3); font-size: 14px; line-height: 1.8; margin: -10px 0 20px; }
.data-empty { color: var(--ink-3); background: var(--fill-soft); padding: 22px; border-radius: 8px; font-size: 14px; line-height: 1.85; }
.data-caption { font-size: 11px; color: var(--ink-4); margin-top: 18px; }
.data-caption .src { margin-left: 8px; }
.investor-filters { display: flex; gap: 8px; margin-bottom: 22px; }
.investor-title { font-size: 15px; font-weight: 650; color: var(--ink); margin-bottom: 14px; }
.investor-panel + .investor-panel { margin-top: 26px; }
.investor-filters:not([hidden]) ~ .investor-panel { margin-top: 0; }
.streak-table { width: 100%; border-collapse: collapse; table-layout: fixed; }
.streak-table th,.streak-table td { text-align: left; padding: 13px 6px; vertical-align: middle; border-bottom: 1px solid var(--line); }
.streak-table thead th { font-size: 11px; font-weight: 500; color: var(--ink-4); padding-top: 0; }
.streak-table th:first-child { width: 8%; padding-left: 0; }
.streak-table th:nth-child(2) { width: 42%; }
.streak-table th:nth-child(3) { width: 24%; }
.streak-table th:last-child,.streak-table td:last-child { text-align: right; padding-right: 0; }
.streak-table tbody th { color: var(--ink); font-size: 14px; font-weight: 650; }
.streak-table small { display: block; color: var(--ink-4); font-size: 10px; font-weight: 400; margin-top: 3px; }
.streak-table .rank { color: var(--ink-4); font-size: 12px; padding-left: 0; }
.streak-days { color: var(--accent); font-size: 14px; font-weight: 650; }
.streak-amount { color: var(--ink); font-size: 14px; font-weight: 550; }
.data-method { margin-top: 18px; color: var(--ink-4); font-size: 12px; }
.data-method summary { cursor: pointer; min-height: 36px; padding-block: 6px; }
.data-method p { margin-top: 8px; line-height: 1.9; }
.data-method .src { display: inline-block; margin-top: 10px; }
.event-data { margin: 14px 0; padding: 16px 18px; border-radius: 8px; background: var(--fill-soft); }
.event-basis { color: var(--ink-3); font-size: 11px; margin-bottom: 12px; }
.event-basis > span { margin-left: 8px; color: var(--ink-4); }
.event-values { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 12px; }
.event-values dt { font-size: 11px; color: var(--ink-4); margin-bottom: 4px; }
.event-values dd { color: var(--ink-2); font-size: 19px; line-height: 1.5; font-weight: 550; }
.event-values a { text-decoration: underline; text-decoration-color: var(--line); text-underline-offset: 4px; }
.event-values a:hover { text-decoration-color: var(--accent); }
.event-values .is-actual dd { color: var(--ink); font-weight: 750; }
.event-values .value-missing { font-size: 13px; color: var(--ink-4); font-weight: 400; }
.event-pending,.release-time { color: var(--ink-4); font-size: 11px; margin-top: 10px; }
.up-event { min-width: 0; }
.up-event .event-data { padding: 12px 0 0; margin-bottom: 0; }
.up-event .event-values { gap: 6px; }
.up-event .event-values dd { font-size: 13px; }
.up-event .event-values .value-missing { font-size: 11px; }
.up-event .event-basis { font-size: 10px; }
.up-event .event-pending { display: none; }
.disclosures li { padding: 22px 0; }
.disclosures li:first-child { padding-top: 0; }
.disclosures li + li { border-top: 1px solid var(--line); }
.disclosure-meta { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; color: var(--ink-3); font-size: 12px; }
.disclosure-code { margin-left: 6px; color: var(--ink-4); font-size: 10px; }
.disclosure-meta time { font-size: 11px; white-space: nowrap; }
.disclosure-title { color: var(--ink); font-weight: 650; font-size: 17px; margin-top: 9px; line-height: 1.6; }
.disclosures li > p { color: var(--ink-3); font-size: 14px; line-height: 1.85; margin-top: 9px; }
.disclosure-foot { display: flex; align-items: center; gap: 12px; margin-top: 12px; }
.disclosure-foot .cal-cat { margin: 0; }
@media (max-width: 520px) {
  .streak-table tbody th,.streak-days,.streak-amount { font-size: 12px; }
  .streak-table th,.streak-table td { padding: 12px 4px; }
  .streak-table thead th { font-size: 10px; }
  .streak-table th:nth-child(2) { width: 38%; }
  .streak-table th:nth-child(3) { width: 25%; }
  .streak-table small { font-size: 9px; }
  .event-data { padding: 15px; }
  .event-values { gap: 8px; }
  .event-values dd { font-size: 17px; }
  .data-empty { padding: 18px; font-size: 13px; }
}
