:root{--ink: #0f1219;--surface: #171b24;--surface-2: #1f2430;--line: #2a3040;--line-soft: #222735;--text: #e7eaf0;--muted: #8b93a6;--muted-dim: #5f6678;--gain: #43b581;--loss: #e26d7e;--focus: #5b8def;--sans: "IBM Plex Sans", system-ui, -apple-system, Segoe UI, Roboto, sans-serif;--mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--maxw: 1040px;--radius: 10px}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--ink);color:var(--text);font-family:var(--sans);font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}.mono{font-family:var(--mono);font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}button{font-family:inherit;cursor:pointer}:focus-visible{outline:2px solid var(--focus);outline-offset:2px;border-radius:4px}.gain{color:var(--gain)}.loss{color:var(--loss)}.flat,.muted{color:var(--muted)}.strong{font-weight:600}.app{max-width:var(--maxw);margin:0 auto;padding:0 20px;min-height:100vh;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;justify-content:space-between;padding:20px 0 18px;border-bottom:1px solid var(--line-soft)}.brand{display:flex;align-items:center;gap:10px}.brand-mark{width:10px;height:22px;background:linear-gradient(var(--gain),var(--gain));border-radius:2px;box-shadow:3px 0 0 var(--surface-2),6px 0 0 var(--loss)}.brand-name{font-weight:600;letter-spacing:.01em}.refresh{display:inline-flex;align-items:center;gap:8px;background:var(--surface);color:var(--muted);border:1px solid var(--line);border-radius:999px;padding:7px 14px;font-size:13px}.refresh:hover:not(:disabled){color:var(--text);border-color:var(--muted-dim)}.refresh:disabled{opacity:.55;cursor:default}.refresh-dot{width:7px;height:7px;border-radius:50%;background:var(--muted-dim)}.refresh-dot.ready{background:var(--gain)}.refresh-dot.error{background:var(--loss)}.refresh-dot.loading{background:var(--focus);animation:pulse 1s ease-in-out infinite}@keyframes pulse{0%,to{opacity:.4}50%{opacity:1}}.content{flex:1;padding:12px 0 40px}.summary{padding:30px 0 26px;border-bottom:1px solid var(--line-soft)}.summary-main{display:flex;align-items:baseline;flex-wrap:wrap;gap:6px 22px}.summary-value{font-size:clamp(38px,7vw,60px);font-weight:600;letter-spacing:-.02em;line-height:1}.summary-day{display:inline-flex;align-items:baseline;gap:8px;font-size:17px;font-weight:500}.summary-day .arrow{font-size:13px}.summary-day-pct{opacity:.85}.summary-day-label{color:var(--muted);font-size:13px;font-weight:400}.summary-stats{margin-top:14px;color:var(--muted);font-size:13.5px;display:flex;flex-wrap:wrap;align-items:center;gap:8px}.summary-stats .dot{color:var(--muted-dim)}.holdings-section{padding-top:24px}.section-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.section-title{margin:0;font-size:15px;font-weight:600;color:var(--text)}.btn{border-radius:8px;padding:8px 14px;font-size:13.5px;font-weight:500;border:1px solid transparent;transition:background .12s ease,border-color .12s ease}.btn-primary{background:var(--surface-2);color:var(--text);border-color:var(--line)}.btn-primary:hover{border-color:var(--gain);color:#fff}.btn-ghost{background:transparent;color:var(--muted)}.btn-ghost:hover{color:var(--text)}@media (prefers-reduced-motion: reduce){*{animation:none!important;transition:none!important}}.add-panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px;margin-bottom:16px}.add-row{display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px}.field{display:flex;flex-direction:column;gap:6px;flex:1 1 220px}.field-narrow{flex:0 1 130px}.field-label{font-size:12px;color:var(--muted)}.text-input,.picker-input{background:var(--surface-2);border:1px solid var(--line);border-radius:8px;color:var(--text);padding:9px 11px;font-size:14px;width:100%}.text-input:focus,.picker-input:focus{outline:none;border-color:var(--focus)}.add-actions{display:flex;gap:8px}.add-error{margin-top:10px;color:var(--loss);font-size:13px}.picker{position:relative}.picker-current{position:absolute;right:11px;top:50%;transform:translateY(-50%);color:var(--muted);font-size:13px;pointer-events:none}.picker-menu{position:absolute;z-index:20;top:calc(100% + 6px);left:0;right:0;max-height:320px;overflow-y:auto;background:var(--surface-2);border:1px solid var(--line);border-radius:8px;box-shadow:0 12px 30px #00000073;padding:6px}.picker-empty{padding:12px;color:var(--muted);font-size:13px}.picker-add{display:block;width:100%;text-align:left;background:transparent;border:1px dashed var(--line);color:var(--text);padding:9px 10px;border-radius:6px;font-size:13.5px;margin-bottom:6px}.picker-add:hover{border-color:var(--gain);border-style:solid}.picker-add .mono{color:var(--gain)}.picker-error{padding:8px 10px 4px;color:var(--loss);font-size:12.5px}.picker-sector-label{padding:10px 10px 2px;font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}.picker-industry-label{padding:6px 10px 3px 18px;font-size:11px;color:var(--muted-dim)}.picker-sector+.picker-sector{border-top:1px solid var(--line);margin-top:4px}.picker-option-row{display:flex;align-items:center;gap:4px}.picker-option{display:flex;align-items:baseline;gap:10px;flex:1;text-align:left;background:transparent;border:none;color:var(--text);padding:7px 10px;border-radius:6px;font-size:14px}.picker-option:hover{background:var(--line)}.picker-option-sym{min-width:56px;color:var(--text)}.picker-option-name{color:var(--muted);font-size:13px}.picker-remove{flex:none;background:transparent;border:none;color:var(--muted-dim);font-size:16px;line-height:1;padding:4px 8px;border-radius:5px}.picker-remove:hover{color:var(--loss);background:var(--line)}.table-wrap{overflow-x:auto;border:1px solid var(--line-soft);border-radius:var(--radius)}.holdings{width:100%;border-collapse:collapse;font-size:14px}.holdings thead th{text-align:left;font-weight:500;font-size:11.5px;color:var(--muted);padding:12px 14px;border-bottom:1px solid var(--line);background:var(--surface);position:sticky;top:0}.holdings thead th.num{text-align:right}.holdings tbody td{padding:12px 14px;border-bottom:1px solid var(--line-soft);vertical-align:middle}.holdings tbody tr:last-child td{border-bottom:none}.holdings tbody tr:hover td{background:#ffffff04}.col-sym{min-width:150px}.row-sym{display:block;font-size:14px;color:var(--text)}.row-name{display:block;font-size:12px;color:var(--muted);margin-top:2px}.holdings .sub{font-size:12px;opacity:.8;margin-top:1px}.remove-btn{background:transparent;border:none;color:var(--muted-dim);font-size:18px;line-height:1;padding:2px 6px;border-radius:5px}.remove-btn:hover{color:var(--loss);background:var(--line)}.empty{padding:44px 20px;text-align:center}.empty-title{margin:0 0 4px;font-weight:600}.empty-body{margin:0;color:var(--muted);font-size:13.5px}.banner{margin-top:16px;background:#e26d7e1a;border:1px solid rgba(226,109,126,.35);color:var(--loss);border-radius:8px;padding:11px 14px;font-size:13.5px}.foot{padding:20px 0 28px;color:var(--muted-dim);font-size:12px;border-top:1px solid var(--line-soft)}@media (max-width: 620px){.col-weight{display:none}.holdings thead th,.holdings tbody td{padding:10px}.summary{padding-top:22px}.add-actions{width:100%}.add-actions .btn{flex:1}}.topbar-actions{display:flex;align-items:center;gap:14px}.sync-state{font-size:12px;color:var(--muted-dim);white-space:nowrap}.sync-state.offline{color:var(--loss)}.history-section{margin-top:28px}.range-tabs{display:flex;gap:2px;background:var(--surface);border:1px solid var(--line-soft);border-radius:8px;padding:2px}.range-tab{background:none;border:0;color:var(--muted);font-size:12px;font-family:var(--mono);padding:4px 9px;border-radius:6px}.range-tab:hover{color:var(--text)}.range-tab[aria-pressed=true]{background:var(--surface-2);color:var(--text)}.history-readout{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px;margin:6px 0 10px}.history-value{font-size:22px;font-weight:500;letter-spacing:-.01em}.history-gain{font-size:14px}.history-date{font-size:12.5px;color:var(--muted)}.history-chart{background:var(--surface);border:1px solid var(--line-soft);border-radius:var(--radius);padding:10px 0;touch-action:pan-y}.history-chart svg{display:block;width:100%;height:160px;cursor:crosshair}.line-value{fill:none;stroke:var(--muted);stroke-width:2;stroke-linejoin:round}.line-value.gain{stroke:var(--gain)}.line-value.loss{stroke:var(--loss)}.line-cost{fill:none;stroke:var(--muted-dim);stroke-width:1;stroke-dasharray:4 4}.scrub-line{stroke:var(--line);stroke-width:1}.history-axis{display:flex;justify-content:space-between;gap:10px;margin-top:6px;font-size:11.5px;color:var(--muted-dim);font-family:var(--mono)}.history-legend{display:flex;align-items:center;gap:6px;font-family:var(--sans);text-align:center}.legend-cost{display:inline-block;width:14px;border-top:1px dashed var(--muted-dim)}.history-empty .btn{margin-top:12px}.history-error{margin-top:10px;font-size:12.5px;color:var(--loss)}@media (max-width: 620px){.history-legend,.sync-state{display:none}.sync-state.offline{display:inline}}
