:root{--bg: #0f1115;--surface: #181b22;--surface-2: #1f242d;--border: #2a313c;--text: #e6e9ef;--muted: #8b94a3;--accent: #4f8cff;--pos: #2fbf71;--neg: #ff5d5d;color-scheme:dark;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}:root[data-theme=light]{--bg: #f5f7fa;--surface: #ffffff;--surface-2: #eef1f6;--border: #d8dee8;--text: #1a1f29;--muted: #5b6675;--accent: #2f6fe0;--pos: #1a9e57;--neg: #e23b3b;color-scheme:light}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text)}a{color:var(--accent);text-decoration:none}h1{font-size:1.6rem}h2{font-size:1.15rem}.muted{color:var(--muted)}.error{color:var(--neg)}.pos{color:var(--pos)}.neg{color:var(--neg)}.flat{color:var(--muted)}button{background:var(--accent);color:#fff;border:none;border-radius:8px;padding:.55rem .9rem;font-size:.9rem;cursor:pointer}button:disabled{opacity:.6;cursor:default}button.link{background:none;color:var(--accent);padding:0}button.secondary{background:var(--surface-2);border:1px solid var(--border);color:var(--text)}button.link.danger{color:var(--neg)}button.danger:not(.icon-btn){background:var(--neg);color:#fff}.icon-btn{background:none;border:none;color:var(--muted);padding:.25rem;border-radius:6px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.icon-btn:hover{color:var(--text);background:var(--surface-2)}.icon-btn.danger{color:var(--neg)}.icon-btn.danger:hover{color:var(--neg);background:var(--surface-2)}input,select{background:var(--surface-2);border:1px solid var(--border);border-radius:8px;color:var(--text);padding:.55rem .7rem;font-size:.9rem}input:focus-visible,select:focus-visible{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 25%,transparent)}.password-input{position:relative;display:block;width:100%}.password-input input{width:100%;padding-right:2.4rem}.password-input .reveal{position:absolute;right:.35rem;top:50%;transform:translateY(-50%);display:inline-flex;align-items:center;justify-content:center;padding:.3rem;background:none;border:none;border-radius:6px;color:var(--muted);cursor:pointer}.password-input .reveal:hover{color:var(--text)}.card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:1rem 1.1rem}.auth-screen{min-height:100vh;display:grid;place-items:center;padding:1rem}.auth-card{width:100%;max-width:360px;display:flex;flex-direction:column;gap:.75rem}.auth-card h1{margin:0}.auth-card label{display:flex;flex-direction:column;gap:.3rem;font-size:.85rem;color:var(--muted)}.auth-card .switch,.auth-card .hint{font-size:.85rem;margin:0}.app-header{display:flex;align-items:center;justify-content:space-between;padding:.9rem 1.5rem;border-bottom:1px solid var(--border);background:var(--surface)}.header-left{display:flex;align-items:center;gap:1.5rem}.app-header .brand{font-weight:600;color:var(--text)}.app-nav{display:flex;gap:1rem}.app-nav a{color:var(--muted);font-size:.9rem}.app-nav a.active{color:var(--text)}.nav-toggle{display:none}.header-right{display:flex;align-items:center;gap:1rem}.username{color:var(--muted);font-size:.9rem}button.username{background:none;border:none;padding:0;cursor:pointer}button.username:hover{color:var(--text);text-decoration:underline}.verify-banner{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;padding:.55rem 1.5rem;font-size:.85rem;color:#5a4500;background:#ffe9a8;border-bottom:1px solid #e6c65c}:root[data-theme=dark] .verify-banner{color:#ffe9a8;background:color-mix(in srgb,#e6c65c 18%,var(--surface));border-bottom-color:color-mix(in srgb,#e6c65c 40%,var(--border))}.verify-banner .link{font-weight:600;color:inherit;text-decoration:underline}.verify-banner-note{font-style:italic;opacity:.85}.container{max-width:1040px;margin:0 auto;padding:1.5rem}.back{display:inline-block;margin-bottom:.5rem;font-size:.9rem}.page-title{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;min-height:2.4rem;margin:.25rem 0 1.25rem}.page-title h1{margin:0}.title-actions{display:flex;align-items:center;gap:.9rem;font-size:.9rem}.view-toggle{display:inline-flex;border:1px solid var(--border);border-radius:8px;overflow:hidden}.view-toggle .icon-btn{border-radius:0;padding:.4rem .6rem;color:var(--muted)}.view-toggle .icon-btn+.icon-btn{border-left:1px solid var(--border)}.view-toggle .icon-btn.active,.view-toggle .icon-btn.active:hover{background:var(--accent);color:#fff}.totals{display:grid;grid-template-columns:repeat(auto-fit,minmax(165px,1fr));gap:.9rem;margin-bottom:1.5rem}.stat{display:flex;flex-direction:column;gap:.35rem}.stat .label{color:var(--muted);font-size:.8rem}.stat .value{font-size:1.25rem;font-weight:600;white-space:nowrap;font-variant-numeric:tabular-nums}.stat-pct{font-size:.8rem;font-weight:500}.movers{display:grid;grid-template-columns:1fr 1fr;gap:.9rem;margin-bottom:1.5rem}@media(max-width:640px){.movers,.totals{grid-template-columns:1fr}.app-header{flex-direction:column;align-items:stretch;gap:0;padding:.75rem 1rem}.header-left{flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.5rem;width:100%}.nav-toggle{display:inline-flex}.app-nav,.header-right{display:none;width:100%}.app-header.menu-open .app-nav{display:flex;flex-direction:column;gap:.1rem;margin-top:.6rem;padding-top:.5rem;border-top:1px solid var(--border)}.app-nav a{padding:.6rem .25rem}.app-header.menu-open .header-right{align-items:center;gap:1rem;margin-top:.5rem;padding-top:.5rem;border-top:1px solid var(--border)}.header-right .username{margin-right:auto}.container{padding:1rem}.txn-filters .page-size{margin-left:0}}.mover-list{list-style:none;margin:.5rem 0 0;padding:0}.mover-list li{display:grid;grid-template-columns:1fr auto auto;gap:.75rem;padding:.45rem 0;border-top:1px solid var(--border)}.mover-list .pct{min-width:72px;text-align:right}.ptag{display:inline-block;margin-left:.35rem;padding:.05rem .4rem;font-size:.7rem;color:var(--muted);background:var(--surface-2);border:1px solid var(--border);border-radius:999px;vertical-align:.05em}.section-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin:1.5rem 0 .8rem}.inline-form{display:flex;gap:.5rem}.cards-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:.9rem}.portfolio-card{color:var(--text);transition:border-color .15s}.portfolio-card:hover{border-color:var(--accent)}.portfolio-card h3{margin:0 0 .6rem}.mood{margin-right:.45rem;font-size:1.5em;line-height:1;vertical-align:-.12em}.portfolio-card .row{display:flex;justify-content:space-between;padding:.2rem 0;font-size:.9rem}.holding-form{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.6rem}.holding-form input{flex:1 1 140px}.holding-form .combobox{flex:1 1 220px}.combobox{position:relative}.combobox input{width:100%}.combobox-list{position:absolute;z-index:30;top:calc(100% + 4px);left:0;right:0;margin:0;padding:.25rem;list-style:none;background:var(--surface-2);border:1px solid var(--border);border-radius:8px;max-height:280px;overflow-y:auto;box-shadow:0 8px 24px #0006}.combobox-list li{display:grid;grid-template-columns:auto auto 1fr;align-items:baseline;gap:.5rem;padding:.4rem .55rem;border-radius:6px;cursor:pointer;font-size:.9rem}.combobox-list li.active{background:var(--accent);color:#fff}.opt-symbol{font-weight:600}.opt-exchange{font-size:.7rem;color:var(--muted);border:1px solid var(--border);border-radius:4px;padding:0 .3rem}.combobox-list li.active .opt-exchange{color:#fff;border-color:#ffffff80}.opt-name{color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.combobox-list li.active .opt-name{color:#ffffffd9}table.holdings{width:100%;border-collapse:collapse;margin-top:1rem;font-size:.9rem}table.holdings th,table.holdings td{padding:.55rem .6rem;border-bottom:1px solid var(--border);text-align:left}table.holdings th.num,table.holdings td.num{text-align:right}table.holdings th.sortable{padding:0}.sort-btn{width:100%;display:inline-flex;align-items:center;gap:.3rem;padding:.55rem .6rem;background:none;border:none;color:inherit;font:inherit;font-weight:600;cursor:pointer}table.holdings th.num .sort-btn{justify-content:flex-end}.sort-btn:hover{color:var(--accent)}.sort-caret{font-size:.7em;color:var(--muted)}.cell-input{width:90px;padding:.3rem .4rem;text-align:right;font-size:.85rem}.cell-input.date{width:150px;text-align:left}.row-actions{display:inline-flex;gap:.25rem;justify-content:flex-end}.tabs{display:flex;gap:.25rem;margin:1.25rem 0 .5rem;border-bottom:1px solid var(--border)}.tab{display:inline-flex;align-items:center;gap:.4rem;background:none;border:none;border-bottom:2px solid transparent;border-radius:0;color:var(--muted);padding:.5rem .9rem;font-size:.9rem;cursor:pointer}.tab svg{width:15px;height:15px}.tab:hover{color:var(--text)}.tab.active{color:var(--text);border-bottom-color:var(--accent);font-weight:600}.tab-count{display:inline-flex;align-items:center;justify-content:center;min-width:1.1rem;padding:0 .35rem;border-radius:999px;background:var(--surface-2);color:var(--muted);font-size:.72rem;font-weight:600;line-height:1.4}.tab.active .tab-count{background:var(--accent);color:#fff}.tab-add{margin-left:auto;display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;align-self:center;padding:0;border:1px solid var(--border);border-radius:50%;background:var(--accent);color:#fff;cursor:pointer}.tab-add:hover{filter:brightness(1.08)}.tab-add svg{width:16px;height:16px}.txn-badge{display:inline-block;padding:.05rem .45rem;border-radius:999px;font-size:.7rem;font-weight:600;letter-spacing:.03em}.txn-badge.buy{color:var(--pos);background:color-mix(in srgb,var(--pos) 16%,transparent)}.txn-badge.sell{color:var(--neg);background:color-mix(in srgb,var(--neg) 16%,transparent)}.txns tr.editing-row{background:color-mix(in srgb,var(--accent) 10%,transparent)}.txn-filters{display:flex;flex-wrap:wrap;align-items:flex-end;gap:.75rem;margin:.25rem 0 .75rem;font-size:.85rem}.txn-filters label{display:flex;flex-direction:column;gap:.2rem;color:var(--muted)}.txn-filters input,.txn-filters select{width:auto}.txn-filters .page-size{margin-left:auto}.pagination{display:flex;align-items:center;justify-content:center;gap:1rem;margin-top:.9rem;font-size:.85rem}.pagination button{padding:.35rem .8rem;font-size:.85rem}.note{margin-top:1rem;font-size:.85rem}code{background:var(--surface-2);padding:.05rem .35rem;border-radius:4px;font-size:.85em}.file-input input{color:var(--muted);border:none;padding-left:0}.fy-badges{display:flex;flex-wrap:wrap;gap:.5rem;margin:.5rem 0 1rem}.fy-badge{background:var(--surface-2);color:var(--text);border:1px solid var(--border);border-radius:999px;padding:.4rem .95rem;font-size:.9rem}.fy-badge.active{background:var(--accent);border-color:var(--accent);color:#fff}.fy-detail{margin-top:.25rem}.chart-card{margin-bottom:1.5rem}.line-chart,.bar-chart{width:100%;height:auto;display:block;margin-top:.5rem}.line-chart .grid,.bar-chart .grid{stroke:var(--border);stroke-width:1}.line-chart .axis,.bar-chart .axis{fill:var(--muted);font-size:11px}.bar-chart .bar{fill:var(--accent)}.bar-chart .value-label{fill:var(--text);font-size:11px;font-weight:600}.bar-chart .growth-label{font-size:10px;font-weight:600}.bar-chart .growth-up{fill:var(--pos)}.bar-chart .growth-down{fill:var(--neg)}.bar-chart .growth-flat{fill:var(--muted)}.line-chart .line{fill:none;stroke:var(--accent);stroke-width:2.5}.line-chart .dot{fill:var(--accent)}.line-chart .value-label{fill:var(--text);font-size:11px;font-weight:600}.history-panel{margin-top:.25rem}.range-toggle{display:inline-flex;border:1px solid var(--border);border-radius:8px;overflow:hidden;margin-bottom:.5rem}.range-toggle button{background:none;border:none;border-radius:0;color:var(--muted);padding:.35rem .7rem;font-size:.8rem;cursor:pointer}.range-toggle button+button{border-left:1px solid var(--border)}.range-toggle button.active{background:var(--accent);color:#fff}.chart-legend{display:flex;flex-wrap:wrap;gap:1rem;font-size:.85rem;color:var(--muted)}.legend-item{display:inline-flex;align-items:center;gap:.35rem}.legend-item strong{color:var(--text)}.legend-swatch{width:14px;height:3px;border-radius:2px;background:currentColor}.series{fill:none;stroke-width:2}.s-value{color:var(--accent)}.s-value.series{stroke:var(--accent)}.s-invested{color:var(--muted)}.s-invested.series{stroke:var(--muted)}.s-pnl{color:var(--pos)}.s-pnl.series{stroke:var(--pos)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:grid;place-items:center;padding:1rem;z-index:50}.modal{width:100%;max-width:560px;max-height:90vh;overflow:auto}.modal.modal-sm{max-width:420px}.modal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem}.modal-head h2{margin:0}.modal-form{display:flex;flex-direction:column;gap:1rem}.modal-form label{display:flex;flex-direction:column;gap:.35rem;font-size:.85rem;color:var(--muted)}.modal-form input{width:100%}.modal-actions{display:flex;justify-content:flex-end;gap:.6rem;margin-top:.25rem}.table-wrap{overflow-x:auto}.watch-add{margin:.75rem 0 1rem}.holdings .sub{font-size:.8rem}.event-badge{display:inline-block;font-size:.78rem;padding:.1rem .45rem;border-radius:999px;white-space:nowrap;background:color-mix(in srgb,var(--accent) 16%,transparent);color:var(--accent)}.event-badge.ev-dividend{background:color-mix(in srgb,var(--pos) 16%,transparent);color:var(--pos)}.note-cell{background:none;border:none;padding:0;color:var(--text);cursor:pointer;text-align:left;font:inherit}.inline-edit{display:inline-flex;align-items:center;gap:.3rem}.calendar-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:1rem}.event-list{list-style:none;margin:.5rem 0 0;padding:0}.event-row{display:flex;gap:1rem;padding:.6rem 0;border-top:1px solid var(--border)}.event-row:first-child{border-top:none}.event-when{display:flex;flex-direction:column;min-width:8.5rem}.event-date{font-weight:600;font-variant-numeric:tabular-nums}.event-rel{font-size:.8rem;color:var(--muted)}.event-what{display:flex;flex-direction:column}.event-title{font-weight:500}.event-sub{font-size:.85rem;color:var(--muted)}
