:root{--bg:#0f172a;--panel:#111827;--panel2:#1e293b;--text:#e2e8f0;--muted:#94a3b8;--line:#334155;--green:#86efac;--blue:#93c5fd;--yellow:#fbbf24;--red:#fca5a5;color-scheme:dark;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",system-ui,"Apple SD Gothic Neo","Noto Sans KR",sans-serif}*{box-sizing:border-box}html{max-width:100%;overflow-x:hidden;background:var(--bg)}body{margin:0;min-height:100vh;max-width:100%;overflow-x:hidden;color:var(--text);background:#0f172a}.strategy-current-shell{width:min(1560px,100%);margin:0 auto;padding:14px}.app-topbar{display:grid;grid-template-columns:auto 1fr auto auto auto;align-items:center;gap:12px;padding:10px 12px;margin-bottom:12px;background:#050b16;border:1px solid rgba(71,85,105,.46);color:var(--text)}.topbar-brand{display:inline-flex;align-items:center;gap:10px;font-weight:800}.brand-mark{color:#93c5fd;font-weight:900}.topbar-title{color:#d7deea;font-size:.95rem;font-weight:700}.topbar-clock{display:inline-flex;align-items:center;gap:8px;color:#e2e8f0;font-variant-numeric:tabular-nums}.clock-dot{width:9px;height:9px;border-radius:999px;background:#3ad47c;box-shadow:0 0 0 2px rgba(58,212,124,.14)}.topbar-mode{display:inline-flex;align-items:center;justify-content:center;padding:7px 12px;border-radius:999px;border:1px solid rgba(148,163,184,.22);background:#111827;color:#e5e7eb;font-size:.86rem;font-weight:700}.topbar-action{display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px;border-radius:14px;border:1px solid rgba(148,163,184,.18);background:#1e293b;color:var(--text);font-weight:800;cursor:pointer}.panel{background:#111827;border:1px solid var(--line);border-radius:12px;box-shadow:none}.current-hero{display:flex;background:linear-gradient(180deg,rgba(5,8,13,.998),rgba(4,6,10,.998));border-bottom:1px solid rgba(255,255,255,.02);justify-content:space-between;gap:14px;align-items:flex-start;padding:16px}.eyebrow{color:#cbd5e1;font-size:.78rem;font-weight:800;letter-spacing:.10em;margin:0 0 6px;text-transform:uppercase}h1{font-size:clamp(1.6rem,4.5vw,2.5rem);margin:0 0 8px;line-height:1.2}h2{font-size:1rem;margin:0}p{margin-top:0}.lede,.muted-copy,.footer-note{color:var(--muted);line-height:1.5}.nav-links,.inline-links{display:flex;gap:8px;flex-wrap:wrap}.nav-link{color:var(--text);text-decoration:none;border:1px solid var(--line);border-radius:999px;padding:8px 11px;background:linear-gradient(180deg,rgba(5,8,13,.994),rgba(4,6,10,.996));box-shadow:inset 0 1px 0 rgba(255,255,255,.01);font-weight:700;font-size:.88rem}.status-panel,.panel:not(.current-hero){margin-top:16px;padding:14px}.section-head,.card-top{display:flex;justify-content:space-between;gap:10px;align-items:center;margin-bottom:10px}.pill,.grade{display:inline-flex;align-items:center;border-radius:999px;padding:6px 10px;font-size:.77rem;font-weight:800;border:1px solid rgba(118,136,162,.11);background:#1e293b}.safe-pill,.grade-a{background:rgba(22,44,32,.78);color:#9bd8b1;border-color:rgba(118,170,136,.18)}.neutral-pill,.grade-b{background:rgba(9,14,21,.96);color:#d4deea;border-color:rgba(118,136,162,.12)}.muted-pill,.grade-c{background:rgba(148,163,184,.10);color:#cbd5e1;border-color:rgba(148,163,184,.18)}.grade-d{background:rgba(251,191,36,.14);color:#fcd34d;border-color:rgba(251,191,36,.24)}.danger-pill,.grade-blocked{background:rgba(252,165,165,.14);color:#fca5a5;border-color:rgba(252,165,165,.22)}.strategy-current-grid,.candidate-list,.current-heatmap{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(220px,100%),1fr));gap:12px;margin-top:16px}.market-card,.line-card,.candidate-card,.heat-cell{background:var(--panel);border:1px solid var(--line);border-radius:12px}.market-card,.heat-cell{padding:12px}.regime-label,.empty,.line-footnote,.candidate-meta,.heat-detail{color:var(--muted)}.metric-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:10px}.metric-grid dt{color:var(--muted);font-size:.76rem}.metric-grid dd{margin:0;font-weight:800}.candidate-card{display:grid;grid-template-columns:44px 1fr;gap:10px;padding:12px;background:#0f172a}.rank{display:flex;align-items:center;justify-content:center;border-radius:10px;background:var(--panel2);font-weight:800}.candidate-body{display:grid;gap:8px}.candidate-title{display:flex;flex-direction:column;gap:2px}.candidate-meta,.reason-row{display:flex;flex-wrap:wrap;gap:8px}.current-line-panel{margin-top:16px}.line-controls{margin:0 0 12px}.line-controls label{display:inline-flex;align-items:center;gap:8px;color:var(--muted);font-weight:700}.current-line-chart{display:grid;gap:12px}.line-card{padding:12px;background:#0f172a}.line-head{display:flex;justify-content:space-between;gap:10px;align-items:center;margin-bottom:8px}.current-heatmap{margin-top:12px}.heat-title{font-weight:800}.heat-family,.heat-detail{margin-top:4px}.heat-score{margin-top:8px;font-weight:800}.freshness-table table{width:100%;border-collapse:collapse;margin-top:8px;table-layout:fixed}.freshness-table th,.freshness-table td{border:1px solid var(--line);padding:8px;text-align:left;font-size:13px;vertical-align:top;overflow-wrap:anywhere;word-break:break-word}.freshness-table th{background:var(--panel2)}.freshness-table td{background:var(--panel)}code{color:var(--blue);white-space:normal;overflow-wrap:anywhere;word-break:break-all}@media (max-width:820px){.strategy-current-shell{padding:14px}.current-hero{flex-direction:column;padding:14px}.strategy-current-grid,.candidate-list,.current-heatmap{grid-template-columns:1fr;gap:10px}.freshness-table table{display:block;width:100%;background:transparent;border-collapse:separate;border-spacing:0;table-layout:auto}.freshness-table thead{display:none}.freshness-table tbody{display:block}.freshness-table tr{display:block;width:100%;margin:10px 0;padding:10px 12px;border:1px solid var(--line);border-radius:14px;background:var(--panel)}.freshness-table th,.freshness-table td{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;min-width:0;border:0;border-bottom:1px solid rgba(148,163,184,.22);padding:9px 0;font-size:14px;line-height:1.38;background:transparent}.freshness-table tr>:last-child{border-bottom:0}.freshness-table td[data-label]::before{content:attr(data-label);flex:0 0 42%;color:#f8fafc;font-weight:800;text-align:left}}