:root{--bg:#f1f3f6;--panel:#fff;--ink:#152032;--muted:#5e6b7e;--rule:#d8dee6;--soft:#e8ecf1;--up:#d12f2a;--down:#1e57c4;--ma5:#e0463c;--ma20:#d99a10;--ma60:#23965c;--ma120:#6750c4;--focus:#1e57c4;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root{--bg:#10151c;--panel:#171e27;--ink:#e6ebf1;--muted:#8d99aa;--rule:#2a3440;--soft:#202935;--up:#ff5a52;--down:#5b8cff;--ma5:#ff6a5f;--ma20:#f0b53a;--ma60:#3fc184;--ma120:#9a87ff;--focus:#7aa4ff;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}html,body{margin:0}body{background:var(--bg);color:var(--ink);font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased;font-family:IBM Plex Sans KR,Apple SD Gothic Neo,Malgun Gothic,system-ui,sans-serif;font-size:15px;line-height:1.55}button,input,select{font:inherit;color:inherit}a{color:inherit}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.shell{max-width:1320px;margin:0 auto;padding:28px 24px 40px}.masthead{border-bottom:1px solid var(--rule);grid-template-columns:minmax(0,1fr) minmax(220px,340px);align-items:end;gap:24px;padding-bottom:20px;display:grid}h1{letter-spacing:-.03em;margin:0;font-size:clamp(30px,4.4vw,46px);font-weight:700;line-height:1.1}.lede{max-width:60ch;color:var(--muted);margin:10px 0 0}.lede strong{color:var(--up);font-weight:600}.fan{height:104px;margin:0;position:relative}.fan svg{width:100%;height:100%;overflow:visible}.fan-line{fill:none;stroke-width:3px;stroke-linecap:round}.fan-line.ma5{stroke:var(--ma5)}.fan-line.ma20{stroke:var(--ma20)}.fan-line.ma60{stroke:var(--ma60)}.fan-line.ma120{stroke:var(--ma120)}.fan-label{font-size:12px;font-weight:600;position:absolute;left:calc(82.3% + 8px);transform:translateY(-50%)}.fan-label.ma5{color:var(--ma5)}.fan-label.ma20{color:var(--ma20)}.fan-label.ma60{color:var(--ma60)}.fan-label.ma120{color:var(--ma120)}@media (prefers-reduced-motion:no-preference){.fan-line{stroke-dasharray:320;stroke-dashoffset:320px;animation:.9s ease-out forwards draw}.fan-line.ma20{animation-delay:80ms}.fan-line.ma60{animation-delay:.16s}.fan-line.ma120{animation-delay:.24s}@keyframes draw{to{stroke-dashoffset:0}}}.notice{border-left:3px solid var(--ma20);background:var(--panel);color:var(--ink);margin:16px 0 0;padding:10px 14px;font-size:14px}.controls{flex-wrap:wrap;align-items:center;gap:10px;margin-top:20px;display:flex}.segmented{background:var(--soft);border-radius:999px;padding:3px;display:inline-flex}.segmented button{cursor:pointer;color:var(--muted);white-space:nowrap;background:0 0;border:0;border-radius:999px;padding:6px 14px;font-weight:500}.segmented button[aria-checked=true]{background:var(--panel);color:var(--ink);box-shadow:0 0 0 1px var(--rule)}.field select,.field input{border:1px solid var(--rule);background:var(--panel);border-radius:8px;height:36px;padding:0 12px}.field.grow{flex:180px}.field.grow input{width:100%}.mode-hint{color:var(--muted);margin:8px 2px 0;font-size:13px}.board{grid-template-columns:300px minmax(0,1fr);align-items:start;gap:20px;margin-top:18px;display:grid}.sectors,.stocks{background:var(--panel);border:1px solid var(--rule);border-radius:12px}.sectors-head,.stocks-head{border-bottom:1px solid var(--rule);justify-content:space-between;align-items:baseline;padding:14px 16px 10px;display:flex}h2{letter-spacing:-.01em;margin:0;font-size:17px;font-weight:600}.sectors-head span,.stocks-head span{color:var(--muted);font-size:13px}.sectors{flex-direction:column;max-height:calc(100vh - 32px);display:flex;position:sticky;top:16px}.sectors ul{margin:0;padding:6px;list-style:none;overflow-y:auto}.sector-row{text-align:left;cursor:pointer;background:0 0;border:0;border-radius:8px;grid-template-columns:minmax(0,1fr) auto;gap:2px 10px;width:100%;padding:8px 10px;display:grid}.sector-row:hover:not(:disabled){background:var(--soft)}.sector-row[aria-pressed=true]{background:var(--soft);box-shadow:inset 3px 0 0 var(--up)}.sector-row:disabled{cursor:default;opacity:.45}.sector-name{text-overflow:ellipsis;white-space:nowrap;font-size:14px;overflow:hidden}.sector-count{color:var(--muted);font-size:13px}.bar{background:var(--soft);border-radius:2px;grid-column:1/-1;height:4px;overflow:hidden}.sector-row[aria-pressed=true] .bar{background:var(--panel)}.bar span{background:var(--up);border-radius:2px;height:100%;display:block}.table-wrap{overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:14px}th,td{text-align:right;white-space:nowrap;border-bottom:1px solid var(--soft);padding:9px 12px}th{background:var(--panel);border-bottom-color:var(--rule);font-weight:500;position:sticky;top:0}.left{text-align:left}tbody tr:hover{background:var(--soft)}.sort,.th-static{cursor:pointer;color:var(--muted);background:0 0;border:0;padding:0;font-size:13px;font-weight:500}.th-static{cursor:help}.sort[aria-sort=ascending],.sort[aria-sort=descending]{color:var(--ink)}.caret{width:1em;margin-left:2px;font-size:9px;display:inline-block}.stock-name{font-weight:600;text-decoration:none}.stock-name:hover{text-decoration:underline}.stock-meta{color:var(--muted);align-items:center;gap:6px;margin-top:1px;font-size:12px;display:flex}.mk{border:1px solid var(--rule);border-radius:4px;padding:0 5px;font-size:11px;font-style:normal}.stock-sector{text-overflow:ellipsis;max-width:14em;overflow:hidden}.up{color:var(--up)}.down{color:var(--down)}.hot{color:var(--ma20);font-weight:600}.chart-col{width:120px}.spark{display:block}.spark-line{stroke:var(--ink);stroke-width:1.3px;opacity:.75;stroke-linejoin:round}.tick{stroke-width:2.5px;stroke-linecap:round}.tick.ma5{stroke:var(--ma5)}.tick.ma20{stroke:var(--ma20)}.tick.ma60{stroke:var(--ma60)}.tick.ma120{stroke:var(--ma120)}.empty{color:var(--muted);text-align:center;margin:0;padding:28px 16px}.foot{color:var(--muted);margin-top:24px;font-size:12px}@media (max-width:860px){.shell{padding:20px 14px 32px}.masthead{grid-template-columns:1fr}.fan{max-width:300px;height:64px}.board{grid-template-columns:minmax(0,1fr)}.sectors{max-height:300px;position:static}.segmented button{padding:6px 11px}}
