:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f2f2f1;--paper:#fff;--paper-2:#fafafa;--ink:#101010;--muted:#606060;--muted-2:#8a8a8a;--line:#d8d8d8;--line-dark:#171717;--soft:#eee;--warn-bg:#f1f1f1;--danger:#292929;--radius:2px;font-family:Pretendard,-apple-system,BlinkMacSystemFont,Segoe UI,Noto Sans KR,sans-serif}*{box-sizing:border-box}html{background:var(--bg);min-height:100%;color:var(--ink)}body{background:var(--bg);min-width:320px;min-height:100vh;color:var(--ink);margin:0;font-family:Pretendard,-apple-system,BlinkMacSystemFont,Segoe UI,Noto Sans KR,sans-serif}button,input,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.48}.app-shell{width:min(1760px,100%);margin:0 auto;padding:14px}.console-grid{grid-template-columns:minmax(420px,.95fr) minmax(440px,1.1fr) minmax(360px,.85fr);align-items:stretch;gap:12px;min-height:calc(100vh - 28px);display:grid}.panel{border:1px solid var(--line-dark);background:var(--paper);flex-direction:column;min-width:0;height:calc(100vh - 28px);min-height:0;padding:12px;display:flex;overflow:hidden}.panel-head{border-bottom:1px solid var(--line-dark);flex:none;justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:10px;padding-bottom:10px;display:flex}.panel h2,.panel h3{color:var(--ink);letter-spacing:-.045em;margin:0}.panel h2{font-size:20px;line-height:1.08}.panel h3{font-size:15px;line-height:1.15}.panel-head p,.dist-head span,.stock-head span,.stock-head p{color:var(--muted);margin:4px 0 0;font-size:11px;font-weight:760;line-height:1.35}.button-row{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:6px;display:flex}.btn{border:1px solid var(--line-dark);border-radius:var(--radius);background:var(--paper);min-height:36px;color:var(--ink);white-space:nowrap;padding:0 11px;font-size:12px;font-weight:900}.btn.primary{background:var(--ink);color:#fff}.btn.secondary{background:var(--soft);color:var(--ink)}.btn.danger{color:var(--danger);background:#fff}.btn.reset{background:#f8f8f8}.btn:hover:not(:disabled){background:var(--ink);color:#fff}.filter-grid{flex:none;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-bottom:8px;display:grid}.control{flex-direction:column;gap:4px;min-width:0;display:flex}.control span{color:var(--muted);letter-spacing:.08em;text-transform:uppercase;font-size:9px;font-weight:950}.control input,.control select,.weight-box input{border:1px solid var(--line-dark);border-radius:var(--radius);width:100%;min-height:38px;color:var(--ink);background:#fff;outline:none;padding:0 9px;font-size:12px;font-weight:760}.control input:focus,.control select:focus,.weight-box input:focus{box-shadow:inset 0 0 0 1px var(--line-dark)}.control.wide{grid-column:1/-1}.result-line{border-block:1px solid var(--line);color:var(--muted);flex:none;justify-content:space-between;align-items:baseline;gap:8px;margin:0 0 8px;padding:7px 0;font-size:11px;font-weight:800;display:flex}.result-line b{color:var(--ink);letter-spacing:-.04em;font-size:18px}.scroll-panel{overscroll-behavior:contain;min-height:0;overflow-y:auto}.scroll-panel::-webkit-scrollbar{width:8px;height:8px}.portfolio-scroll::-webkit-scrollbar{width:8px;height:8px}.scroll-panel::-webkit-scrollbar-thumb{background:#c5c5c5;border:2px solid #fff}.portfolio-scroll::-webkit-scrollbar-thumb{background:#c5c5c5;border:2px solid #fff}.etf-list{flex:auto;gap:8px;min-height:260px;max-height:calc(100vh - 312px);padding-right:2px;display:grid}.etf-card{border:1px solid var(--line);background:var(--paper-2);outline:none;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px 10px;padding:9px;display:grid}.etf-card:hover,.etf-card:focus,.etf-card.selected{border-color:var(--line-dark);background:#fff}.etf-card.selected{box-shadow:inset 3px 0 0 var(--ink)}.etf-primary{grid-template-columns:72px minmax(0,1fr);gap:8px;min-width:0;display:grid}.code-block{border:1px solid var(--line-dark);background:#fff;flex-direction:column;justify-content:center;min-height:56px;padding:7px;display:flex}.code-block b{letter-spacing:-.04em;font-size:16px}.code-block span{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;margin-top:4px;font-size:10px;font-weight:900;overflow:hidden}.etf-title{min-width:0}.etf-title h3{color:var(--ink);letter-spacing:-.025em;word-break:keep-all;margin:0;font-size:13px;line-height:1.25}.etf-title p,.etf-title small,.source-line{color:var(--muted);word-break:break-word;margin:4px 0 0;font-size:10px;font-weight:720;line-height:1.3;display:block}.alert-line{color:#383838;font-weight:900}.etf-meta{grid-column:1/-1;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px;display:grid}.meta{border-left:1px solid var(--line);min-width:0;padding-left:7px}.meta small{color:var(--muted-2);letter-spacing:.08em;text-transform:uppercase;font-size:8px;font-weight:950;display:block}.meta b{color:var(--ink);text-overflow:ellipsis;white-space:nowrap;margin-top:3px;font-size:11px;font-weight:900;display:block;overflow:hidden}.etf-actions{justify-content:flex-end;align-items:center;gap:6px;display:flex}.badge{border:1px solid var(--line-dark);min-height:27px;color:var(--ink);white-space:nowrap;background:#fff;justify-content:center;align-items:center;padding:0 8px;font-size:10px;font-weight:950;display:inline-flex}.status-missing,.status-failed,.status-parse-failed,.status-market-unavailable{background:#e4e4e4}.status-partial,.status-stale,.status-seeded,.status-weight-warning{background:#f0f0f0}.selected-panel{gap:0}.selected-title{min-width:0}.selected-title h2{word-break:keep-all;margin-top:3px;font-size:19px;line-height:1.16}.detail-meta-grid{border-bottom:1px solid var(--line);flex:none;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:8px;padding-bottom:8px;display:grid}.detail-source{flex:none;margin-bottom:5px}.price-card,.holdings-detail,.dist-card,.stock-panel{border:1px solid var(--line-dark);background:#fff;padding:10px}.price-card{flex:none;margin-bottom:10px}.dist-head,.stock-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;gap:8px;margin-bottom:8px;padding-bottom:8px;display:flex}.chart-head h3,.compact-stock-head h3{margin:0}.chart-canvas{width:100%;min-width:0;height:170px}.fallback-chart{border:1px solid var(--line);background:#fbfbfb;width:100%;height:150px}.holdings-detail{flex-direction:column;flex:auto;min-height:0;display:flex}.holding-list{flex:auto;gap:7px;min-height:160px;max-height:calc(100vh - 560px);padding-right:2px;display:grid}.holding-row{border:1px solid var(--line);background:var(--paper-2);grid-template-columns:34px minmax(0,1fr) minmax(106px,.42fr);align-items:center;gap:8px;padding:8px;display:grid}.holding-main{min-width:0}.holding-values{text-align:right;font-variant-numeric:tabular-nums;gap:3px;display:grid}.holding-values b{letter-spacing:-.03em;font-size:14px}.holding-values span{color:var(--muted);font-size:10px;font-weight:760}.portfolio-scroll{flex:auto;min-height:0;padding-right:2px;overflow-y:auto}.portfolio-editor{gap:7px;max-height:190px;margin-bottom:9px;display:grid;overflow-y:auto}.position-row{border:1px solid var(--line);background:var(--paper-2);grid-template-columns:minmax(0,1fr) 92px 34px;align-items:center;gap:7px;padding:8px;display:grid}.position-row:hover,.position-row.selected{border-color:var(--line-dark);background:#fff}.position-main{min-width:0}.position-main b{letter-spacing:-.035em;margin-right:6px;font-size:13px;display:inline-block}.position-main span{color:var(--ink);word-break:keep-all;font-size:12px;font-weight:820}.position-main small{color:var(--muted);margin-top:3px;font-size:10px;font-weight:720;display:block}.weight-box{grid-template-columns:minmax(0,1fr) 16px;align-items:center;gap:3px;display:grid}.weight-box input{text-align:right;font-variant-numeric:tabular-nums;min-height:34px}.weight-box span{color:var(--muted);font-size:11px;font-weight:900}.icon-btn{border:1px solid var(--line-dark);border-radius:var(--radius);width:34px;height:34px;color:var(--ink);background:#fff;font-size:18px;line-height:1}.icon-btn:hover{background:var(--ink);color:#fff}.metric-strip{grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;margin-bottom:9px;display:grid}.metric{border:1px solid var(--line-dark);background:#fff;min-height:58px;padding:9px}.metric span{color:var(--muted);letter-spacing:.08em;text-transform:uppercase;font-size:9px;font-weight:950}.metric b{color:var(--ink);letter-spacing:-.06em;margin-top:9px;font-size:20px;font-weight:950;display:block}.metric.warn{background:var(--warn-bg)}.warning-box{border:1px solid var(--line-dark);background:#f4f4f4;margin-bottom:9px;padding:8px 10px}.warning-box p{color:var(--ink);margin:3px 0;font-size:11px;font-weight:780;line-height:1.35}.analysis-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-bottom:9px;display:grid}.bar-list{gap:7px;display:grid}.bar-row{min-width:0}.bar-label{justify-content:space-between;gap:8px;margin-bottom:4px;font-size:11px;font-weight:850;display:flex}.bar-label span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.bar-label b{font-variant-numeric:tabular-nums}.bar-track{border:1px solid var(--line-dark);background:#fff;width:100%;height:8px;overflow:hidden}.bar-track i{background:#1a1a1a;height:100%;display:block}.stock-list{gap:7px;display:grid}.compact-stock-list{max-height:250px;padding-right:2px;overflow-y:auto}.stock-row{border:1px solid var(--line);background:var(--paper-2);grid-template-columns:34px minmax(0,1fr) 62px;align-items:center;gap:8px;padding:8px;display:grid}.rank{border:1px solid var(--line-dark);width:34px;height:34px;color:var(--muted);background:#fff;place-items:center;font-size:11px;font-weight:950;display:grid}.small-rank{width:30px;height:30px;font-size:10px}.stock-main{min-width:0}.stock-title{align-items:baseline;gap:6px;min-width:0;display:flex}.stock-title b{text-overflow:ellipsis;white-space:nowrap;letter-spacing:-.02em;min-width:0;font-size:12px;overflow:hidden}.stock-title span{color:var(--muted);flex:none;font-size:10px;font-weight:850}.stock-tags{flex-wrap:wrap;gap:5px;margin:5px 0 7px;display:flex}.stock-tags span{border:1px solid var(--line);max-width:100%;color:var(--muted);text-overflow:ellipsis;white-space:nowrap;background:#fff;padding:2px 5px;font-size:9px;font-weight:820;overflow:hidden}.stock-value{text-align:right;letter-spacing:-.04em;font-variant-numeric:tabular-nums;font-size:14px;font-weight:950}.mono{color:var(--muted);word-break:break-all;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:10px;font-weight:800}.empty-state{border:1px dashed var(--line-dark);color:var(--muted);background:#f8f8f8;padding:15px;font-size:12px;font-weight:750;line-height:1.45}.empty-state.compact{padding:10px;font-size:11px}@media (width<=1380px){.console-grid{grid-template-columns:minmax(380px,.95fr) minmax(420px,1.08fr) minmax(330px,.82fr)}.detail-meta-grid,.etf-meta{grid-template-columns:repeat(2,minmax(0,1fr))}.analysis-grid{grid-template-columns:1fr}}@media (width<=1180px){.app-shell{padding:12px}.console-grid{grid-template-columns:1fr;min-height:auto}.panel{height:auto;min-height:auto;max-height:none;overflow:visible}.etf-list{min-height:240px;max-height:min(62vh,540px)}.holding-list{min-height:220px;max-height:min(56vh,480px)}.portfolio-scroll{overflow:visible}.portfolio-editor{max-height:min(45vh,360px)}.compact-stock-list{max-height:min(48vh,420px)}}@media (width<=760px){.app-shell{padding:8px}.panel{padding:10px}.panel-head,.dist-head,.stock-head{flex-direction:column;align-items:stretch}.button-row{justify-content:stretch}.button-row .btn,.button-row .badge{flex:auto}.btn,.badge,.control input,.control select{min-height:44px}.filter-grid,.detail-meta-grid,.metric-strip,.analysis-grid{grid-template-columns:1fr}.etf-card{grid-template-columns:1fr;align-items:stretch}.etf-primary{grid-template-columns:1fr}.code-block{min-height:auto}.etf-actions{justify-content:space-between}.etf-meta{grid-template-columns:repeat(2,minmax(0,1fr))}.result-line{flex-direction:column;align-items:flex-start;gap:2px}.chart-canvas{height:150px}.holding-row,.stock-row{grid-template-columns:34px minmax(0,1fr);align-items:start}.holding-values,.stock-value{text-align:left;grid-column:2}.position-row{grid-template-columns:1fr}.weight-box{grid-template-columns:minmax(0,1fr) 22px}.icon-btn{width:100%;min-height:42px}.stock-title{flex-direction:column;align-items:flex-start;gap:2px}}
