:root{--bg-base:#0d1117;--bg-surface:#141920;--bg-elevated:#1c2333;--bg-hover:#1f2937;--border:#2d3748;--border-subtle:#1e2530;--text-primary:#e2e8f0;--text-secondary:#94a3b8;--text-muted:#64748b;--accent-blue:#60a5fa;--accent-green:#34d399;--accent-red:#f87171;--accent-yellow:#fbbf24;--radius:8px;--radius-lg:12px}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;max-width:100%;overflow-x:hidden}
body{font-family:Inter,"Noto Sans KR",-apple-system,BlinkMacSystemFont,"Malgun Gothic",sans-serif;background:var(--bg-base);color:var(--text-primary);font-size:14px;line-height:1.5;max-width:100%;overflow-x:hidden}
button,input,select{font:inherit}.container{width:100%;max-width:2400px;margin:0 auto;padding-left:2rem;padding-right:2rem}
.navbar{background:var(--bg-surface);border-bottom:1px solid var(--border);min-height:52px;padding:0 2rem;display:flex;align-items:center;position:relative;z-index:10}.nav-inner{display:flex;align-items:center;min-height:52px}.logo{font-size:15px;font-weight:700;color:var(--text-primary);text-decoration:none;white-space:nowrap}.nav-links{display:flex;list-style:none;gap:1.5rem;margin-left:3rem}.nav-links a{text-decoration:none;color:var(--text-muted);font-size:13px;font-weight:500;padding:15px 0 13px;display:block;border-bottom:2px solid transparent}.nav-links a:hover{color:var(--text-secondary)}.nav-links a.active{color:var(--text-primary);border-bottom-color:var(--accent-blue)}
.update-status-wrap{position:relative;margin-left:auto;padding-left:1rem}.update-status-badge{font-size:11px;color:var(--accent-green);background:transparent;cursor:pointer;padding:4px 10px;border:1px solid rgba(52,211,153,.45);border-radius:var(--radius);white-space:nowrap}.update-status-tooltip{display:none;position:absolute;top:calc(100% + 8px);right:0;width:310px;background:#1a1a2e;border:1px solid var(--border);border-radius:var(--radius);padding:12px 16px;box-shadow:0 8px 24px rgba(0,0,0,.6);font-size:12px;color:var(--text-secondary)}.update-status-tooltip.open{display:grid;gap:5px}.update-status-tooltip strong{color:var(--accent-green)}
main{padding-top:1.25rem;padding-bottom:2rem;min-height:calc(100vh - 120px)}.demo-banner{display:flex;align-items:center;gap:10px;padding:7px 12px;margin-bottom:1rem;border:1px solid rgba(96,165,250,.35);background:rgba(96,165,250,.08);border-radius:var(--radius);color:var(--text-secondary);font-size:12px}.demo-banner strong{color:var(--accent-blue);letter-spacing:.04em}.balance-header{margin-bottom:1.5rem}.balance-header h1{font-size:22px;font-weight:700;margin-bottom:4px}.balance-header p{font-size:13px;color:var(--text-muted)}
.filter-bar{display:flex;align-items:center;gap:1rem;margin-bottom:1.25rem;flex-wrap:wrap;padding:12px 16px;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius)}.filter-bar label{font-size:12px;color:var(--text-muted);font-weight:600;white-space:nowrap}.filter-bar input,.filter-bar select{background:var(--bg-base);border:1px solid var(--border);color:var(--text-primary);padding:6px 10px;border-radius:var(--radius);font-size:13px}.select-label{display:flex;align-items:center;gap:8px}.filter-sep{height:24px;width:1px;background:var(--border);margin:0 .25rem}.filter-actions{margin-left:auto;display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.market-badge{font-size:11px;padding:2px 8px;border-radius:4px;background:var(--bg-base);color:var(--text-muted);white-space:nowrap;border:1px solid var(--border)}.btn{padding:7px 16px;border-radius:6px;font-weight:600;font-size:13px;cursor:pointer;border:1px solid var(--border);background:var(--bg-surface);color:var(--text-primary)}.btn:hover{border-color:var(--accent-blue);color:var(--accent-blue)}.btn-primary,.btn-apply{background:var(--accent-blue);color:var(--bg-base);border-color:var(--accent-blue)}
.section-card{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:1.25rem;margin-bottom:1.25rem}.section-card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;padding-bottom:.75rem;border-bottom:1px solid var(--border);gap:1rem}.section-card-header h2{font-size:15px;font-weight:700}.stats-grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem}.stat-card{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);padding:1rem 1.25rem;min-width:0}.stat-card:hover{border-color:var(--accent-blue)}.stat-card h3{font-size:11px;font-weight:600;color:var(--text-muted);margin-bottom:6px}.stat-value{font-size:22px;font-weight:700;text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.stat-note{text-align:right;color:var(--text-muted);font-size:11px;margin-top:3px}.positive{color:var(--accent-green)!important}.negative{color:var(--accent-red)!important}
.currency-bar-title{font-size:11px;font-weight:700;color:var(--text-muted);letter-spacing:.06em;text-transform:uppercase;margin-bottom:12px}.currency-row{display:flex;align-items:center;gap:12px;font-size:13px;margin-top:10px}.currency-label{width:40px;font-weight:700;color:var(--text-secondary);flex-shrink:0}.currency-amount{min-width:160px;font-variant-numeric:tabular-nums}.currency-progress{flex:1;height:6px;background:var(--bg-base);border-radius:3px;overflow:hidden;min-width:60px}.currency-progress i{height:100%;display:block;background:var(--accent-blue);border-radius:3px}.currency-progress i.usd{background:var(--accent-green)}.currency-pct{font-size:12px;color:var(--text-muted);width:46px;text-align:right}
.charts-grid{display:grid;grid-template-columns:1fr 1fr;gap:1.25rem}.chart-container{height:240px;position:relative;max-width:100%}.chart-container canvas{width:100%;height:100%;display:block}.currency-toggle{display:flex;gap:5px}.mini-toggle{border:0;background:transparent;color:var(--text-muted);font-size:12px;font-weight:600;cursor:pointer;padding:3px 7px;border-radius:5px}.mini-toggle.active{color:var(--accent-blue);background:rgba(96,165,250,.12)}.chart-legend{display:flex;gap:16px;justify-content:center;margin-top:8px;color:var(--text-muted);font-size:11px}.chart-legend i{display:inline-block;width:9px;height:3px;margin-right:5px;vertical-align:middle}.legend-blue{background:var(--accent-blue)}.legend-green{background:var(--accent-green)}
.read-only-badge{font-size:10px;font-weight:700;letter-spacing:.05em;color:var(--accent-blue);border:1px solid rgba(96,165,250,.35);padding:2px 7px;border-radius:4px}.group-controls{display:flex;align-items:center;gap:10px;margin-bottom:1rem;flex-wrap:wrap}.group-label{font-size:12px;color:var(--text-muted);font-weight:600}.group-btn{background:var(--bg-elevated);border:1px solid var(--border);color:var(--text-secondary);padding:6px 14px;border-radius:var(--radius);font-size:12px;font-weight:600;cursor:pointer}.group-btn.active{background:var(--accent-blue);color:#000;border-color:var(--accent-blue)}.search-input{background:var(--bg-elevated);border:1px solid var(--border);color:var(--text-primary);padding:6px 12px;border-radius:var(--radius);font-size:12px;margin-left:auto;width:180px}.search-input:focus{outline:none;border-color:var(--accent-blue)}
.accordion-group{margin-bottom:.75rem}.accordion-header{width:100%;display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;color:var(--text-primary);text-align:left}.accordion-header.open{border-radius:var(--radius) var(--radius) 0 0}.acct-info{display:flex;align-items:center;gap:12px;min-width:0}.arrow{font-size:10px;color:var(--text-muted);transition:transform .2s}.accordion-header:not(.open) .arrow{transform:rotate(-90deg)}.acct-name{font-weight:700;font-size:14px}.acct-broker{font-size:11px;color:var(--text-muted);background:var(--bg-base);padding:2px 8px;border-radius:4px}.acct-right{display:flex;align-items:center;white-space:nowrap}.acct-value{font-weight:700;font-size:15px}.acct-change{font-size:12px;margin-left:12px}.accordion-body{border:1px solid var(--border);border-top:none;border-radius:0 0 var(--radius) var(--radius);overflow:hidden}.accordion-body.hidden{display:none}.sub-section{padding:8px 16px}.table-scroll{max-width:100%;overflow-x:auto}.holdings-table{width:100%;min-width:860px;border-collapse:collapse;font-size:13px;table-layout:fixed}.holdings-table th{padding:8px 12px;font-size:11px;font-weight:600;color:var(--text-muted);text-align:left;border-bottom:1px solid var(--border);white-space:nowrap}.holdings-table td{padding:9px 12px;border-bottom:1px solid var(--border-subtle);font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.holdings-table th:first-child,.holdings-table td:first-child{width:23%}.holdings-table th:nth-child(2),.holdings-table td:nth-child(2){width:7%}.holdings-table tr:hover td{background:var(--bg-hover)}.holdings-table small{font-size:10px;color:var(--text-muted);margin-left:6px}.num{text-align:right!important}.cash-item{display:flex;justify-content:space-between;align-items:center;padding:9px 28px;font-size:13px;border-top:1px solid var(--border-subtle)}.cash-item span{color:var(--text-secondary)}
.allocation-header{flex-wrap:wrap}.dim-switcher{display:flex;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.dim-switcher button{background:var(--bg-elevated);border:0;border-right:1px solid var(--border);color:var(--text-muted);padding:6px 14px;font-size:11px;font-weight:600;cursor:pointer}.dim-switcher button:last-child{border-right:0}.dim-switcher button.active{background:var(--accent-blue);color:#000}.donut-layout{display:flex;align-items:center;justify-content:center;gap:3rem;padding:1rem 0;flex-wrap:wrap}.donut{position:relative;width:220px;height:220px;border-radius:50%;background:conic-gradient(var(--accent-blue) 0 75%,var(--accent-green) 75% 100%)}.donut:after{content:"";position:absolute;inset:38px;background:var(--bg-surface);border-radius:50%}.donut-center{position:absolute;z-index:1;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}.donut-center strong{font-size:15px}.donut-center span{font-size:10px;color:var(--text-muted)}.donut-legend{min-width:220px}.donut-legend div{display:grid;grid-template-columns:14px 1fr auto;align-items:center;gap:8px;margin:12px 0}.donut-legend span{color:var(--text-secondary)}.dot{width:12px;height:12px;border-radius:2px}.dot.blue{background:var(--accent-blue)}.dot.green{background:var(--accent-green)}
.toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%,20px);opacity:0;background:#202939;border:1px solid var(--border);color:var(--text-primary);padding:9px 14px;border-radius:var(--radius);box-shadow:0 8px 20px rgba(0,0,0,.4);transition:.2s;pointer-events:none;z-index:20;white-space:nowrap;font-size:12px}.toast.show{opacity:1;transform:translate(-50%,0)}.footer{border-top:1px solid var(--border);padding:1rem 2rem;text-align:center;color:var(--text-muted);font-size:12px}
@media(max-width:1100px){.charts-grid{grid-template-columns:1fr}}
@media(max-width:920px){.container{padding-left:1.25rem;padding-right:1.25rem}.navbar{padding:.65rem 1.25rem}.nav-inner{flex-wrap:wrap;gap:.5rem 1rem}.nav-links{order:3;flex:1 1 100%;margin-left:0;gap:1rem}.nav-links a{padding:4px 0}.balance-header{margin-bottom:1rem}.filter-bar{gap:.75rem;padding:10px 12px}.filter-sep{display:none}.filter-actions{flex:1 1 100%;margin-left:0}.stats-grid-4{grid-template-columns:repeat(2,1fr)}.section-card{padding:1rem;margin-bottom:1rem}.accordion-header{padding:10px 12px}.acct-info,.acct-right{min-width:0;flex-wrap:wrap}.sub-section{padding:8px 10px}.search-input{flex:1 1 220px;margin-left:0;width:auto}}
@media(max-width:600px){.container{padding-left:1rem;padding-right:1rem}.navbar{padding:.65rem 1rem}.logo{font-size:14px}.update-status-tooltip{position:fixed;left:1rem;right:1rem;top:64px;width:auto}.demo-banner{align-items:flex-start;flex-direction:column;gap:2px}.stats-grid-4{grid-template-columns:1fr 1fr;gap:.65rem}.stat-card{padding:.8rem}.stat-value{font-size:16px}.currency-row{display:grid;grid-template-columns:38px 1fr 48px;gap:7px}.currency-amount{min-width:0;text-align:right}.currency-progress{grid-column:1/4;width:100%}.section-card-header{align-items:flex-start}.chart-container{height:200px}.accordion-header{align-items:flex-start;gap:8px}.acct-info{gap:6px}.acct-right{justify-content:flex-end}.acct-value{font-size:13px}.acct-change{margin-left:6px}.cash-item{padding:9px 12px}.donut-layout{gap:1.25rem}.toast{max-width:calc(100vw - 2rem);white-space:normal;text-align:center}}
