*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root,[data-theme=dark]{--bg:#0c0f0e;--card:#141817;--panel-2:#181d1b;--border:#262d2a;--text-1:#e8ece9;--text-2:#98a29c;--text-3:#89968e;--accent:#e3b341;--accent-light:#e3b34129;--accent-soft:#e3b34129;--green:#33c378;--green-bg:#33c37826;--red:#ef5a5a;--red-bg:#ef5a5a26;--amber:#e3b341;--amber-bg:#e3b34126;--grid:#1f2522;--shadow:0 1px 2px #0006;--topbar:#141817d9;--hover:#1b211f;--hairline:#1f2522}[data-theme=light]{--bg:#f4f6f5;--card:#fff;--panel-2:#fafbfa;--border:#e5e8e6;--text-1:#16201c;--text-2:#5d6964;--text-3:#65726a;--accent:#ca8a04;--accent-light:#ca8a041c;--accent-soft:#ca8a041c;--green:#1a9d54;--green-bg:#1a9d541a;--red:#d23f3f;--red-bg:#d23f3f1a;--amber:#b8860b;--amber-bg:#b8860b1f;--grid:#eef0ef;--shadow:0 1px 2px #14281e0a,0 2px 8px #14281e0d;--topbar:#ffffffd9;--hover:#f5f4f1;--hairline:#f0eeea}html,body{height:100%}body{background:var(--bg);color:var(--text-1);-webkit-font-smoothing:antialiased;font-family:IBM Plex Sans,system-ui,-apple-system,sans-serif;line-height:1.5}.recharts-tooltip-wrapper{outline:none}.recharts-default-tooltip{background:var(--card)!important;border:1px solid var(--border)!important;box-shadow:var(--shadow)!important;color:var(--text-1)!important;border-radius:8px!important}.recharts-default-tooltip .recharts-tooltip-label{font-weight:600;color:var(--text-1)!important}.recharts-default-tooltip .recharts-tooltip-item,.recharts-default-tooltip .recharts-tooltip-item-name,.recharts-default-tooltip .recharts-tooltip-item-separator,.recharts-default-tooltip .recharts-tooltip-item-value,.recharts-default-tooltip .recharts-tooltip-item-unit,.recharts-default-tooltip .recharts-tooltip-item-list{color:var(--text-1)!important}.heat-legend{color:var(--text-3);align-items:center;gap:6px;font-size:11px;display:flex}.heat-legend-bar{background:linear-gradient(90deg,#b02a34,#262d2a,#1b7a4a);border-radius:3px;width:120px;height:10px}.chart-tip{background:var(--card);border:1px solid var(--border);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);border-radius:10px;min-width:120px;padding:9px 11px;font-family:IBM Plex Sans,sans-serif;box-shadow:0 8px 24px #00000047}.chart-tip-label{color:var(--text-2);letter-spacing:.2px;margin-bottom:6px;font-size:11px;font-weight:600}.chart-tip-row{align-items:center;gap:7px;font-size:12px;line-height:1.7;display:flex}.chart-tip-dot{border-radius:3px;flex:none;width:9px;height:9px}.chart-tip-name{color:var(--text-3);margin-right:auto}.chart-tip-val{color:var(--text-1);padding-left:14px;font-family:IBM Plex Mono,monospace;font-weight:600}.recharts-cartesian-axis-tick text{fill:var(--text-3)}.recharts-active-dot{filter:drop-shadow(0 0 4px #00000059)}.recharts-rectangle.recharts-tooltip-cursor{fill:var(--text-1);fill-opacity:.04}.recharts-sector{transition:opacity .15s}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--border);background-clip:padding-box;border:3px solid #0000;border-radius:10px}::-webkit-scrollbar-thumb:hover{background:var(--text-3);background-clip:padding-box;border:3px solid #0000}::-webkit-scrollbar-track{background:0 0}.app-shell{height:100dvh;display:flex;overflow:hidden}.sidebar{background:var(--card);border-right:1px solid var(--border);flex-direction:column;flex:0 0 232px;width:232px;transition:width .2s,flex-basis .2s;display:flex;overflow:hidden}.sidebar-close{display:none}.brand{border-bottom:1px solid var(--border);flex:0 0 56px;align-items:center;gap:10px;height:56px;padding:0 16px;display:flex}.brand-text{min-width:0}.brand-name{letter-spacing:-.01em;white-space:nowrap;font-size:14px;font-weight:600}.brand-sub{color:var(--text-3);letter-spacing:.12em;white-space:nowrap;margin-top:2px;font-family:IBM Plex Mono,monospace;font-size:9px}.nav-label{letter-spacing:.1em;text-transform:uppercase;color:var(--text-3);font-family:IBM Plex Mono,monospace;font-size:10px;font-weight:600}.nav{flex-direction:column;flex-shrink:0;gap:2px;padding:16px 10px 14px;display:flex}.nav>.nav-label{padding:0 10px 8px}.nav-item{width:100%;min-height:38px;color:var(--text-2);text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:11px;padding:8px 10px;font-family:inherit;font-size:13.5px;font-weight:500;transition:background .15s,color .15s;display:flex;position:relative}.nav-item>svg{flex:none}.nav-item:hover:not(:disabled){background:var(--hover);color:var(--text-1)}.nav-item.active{background:var(--hover);color:var(--text-1);box-shadow:inset 2px 0 0 var(--accent)}.nav-item.active>svg{color:var(--accent)}.nav-item:disabled{opacity:.45;cursor:not-allowed}.nav-text{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.side-portfolios{border-top:1px solid var(--border);flex-direction:column;flex:auto;min-height:0;padding:12px 10px;display:flex}.side-portfolios-head{justify-content:space-between;align-items:center;gap:8px;padding:0 2px 6px 10px;display:flex}.side-add{width:30px;height:30px;color:var(--text-3);cursor:pointer;background:0 0;border:1px solid #0000;flex:none;place-items:center;transition:color .15s,border-color .15s,background .15s;display:grid;position:relative}.side-add:hover{color:var(--accent);border-color:var(--border);background:var(--hover)}.side-portfolio-list{overscroll-behavior:contain;min-height:0;margin:0;padding:0;list-style:none;overflow-y:auto}.side-portfolio{width:100%;min-height:34px;color:var(--text-2);text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:10px;padding:7px 10px;font-family:inherit;font-size:13px;transition:background .15s,color .15s;display:flex}.side-portfolio:hover:not(:disabled){background:var(--hover);color:var(--text-1)}.side-portfolio.active{color:var(--text-1);font-weight:500}.side-portfolio:disabled{cursor:progress}.side-portfolio-mark{background:var(--border);flex:none;width:6px;height:6px}.side-portfolio.active .side-portfolio-mark{background:var(--accent)}.side-portfolio-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.sidebar-foot{border-top:1px solid var(--border);flex-direction:column;flex-shrink:0;gap:2px;margin-top:auto;padding:10px;display:flex}.theme-switch{border:1px solid var(--border);background:var(--panel-2);flex:none;width:28px;height:14px;transition:border-color .15s;position:relative}.theme-switch>span{background:var(--text-3);width:8px;height:8px;transition:transform .15s,background .15s;position:absolute;top:2px;left:2px}.theme-switch.on{border-color:color-mix(in srgb,var(--accent) 55%,var(--border))}.theme-switch.on>span{background:var(--accent);transform:translate(14px)}.collapse-chevron{transform-box:fill-box;transform-origin:50%;transition:transform .2s}.main-col{background:var(--bg);flex-direction:column;flex:1;min-width:0;display:flex}.topbar{border-bottom:1px solid var(--border);background:var(--topbar);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:5;flex:0 0 56px;align-items:center;gap:12px;height:56px;padding:0 24px;display:flex;position:sticky;top:0}.topbar-menu,.topbar-brand{display:none}.topbar-crumb{min-width:0;color:var(--text-3);align-items:center;gap:8px;font-size:13px;display:flex}.topbar-crumb-portfolio{color:var(--text-1);text-overflow:ellipsis;white-space:nowrap;max-width:40ch;font-weight:500;overflow:hidden}.market-status{color:var(--text-2);white-space:nowrap;align-items:center;gap:14px;margin-left:auto;font-size:12.5px;display:flex}.market-state{font:inherit;color:inherit;background:0 0;border:0;align-items:center;gap:7px;padding:0;display:inline-flex}button.market-state{cursor:pointer;margin:-5px -8px;padding:5px 8px;transition:background .15s,color .15s}button.market-state:hover{background:var(--hover);color:var(--text-1)}.market-dot{background:var(--text-3);flex:none;width:6px;height:6px}.market-state.is-live .market-dot{background:var(--green);animation:1.8s ease-in-out infinite live-pulse}.market-state.is-waiting .market-dot{background:var(--amber)}.market-state.is-error .market-dot{background:var(--red)}.market-index{border-left:1px solid var(--border);align-items:baseline;gap:7px;padding-left:14px;display:inline-flex}.market-index-name{color:var(--text-3)}.market-index-value{font-variant-numeric:tabular-nums;color:var(--text-1);font-family:IBM Plex Mono,monospace}.market-index-change{font-variant-numeric:tabular-nums;font-family:IBM Plex Mono,monospace;font-size:11.5px}.icon-square{border:1px solid var(--border);background:var(--card);width:36px;height:36px;color:var(--text-2);cursor:pointer;flex:none;justify-content:center;align-items:center;transition:color .15s,border-color .15s;display:flex}.icon-square:hover{color:var(--accent);border-color:var(--accent)}.header-portfolio{display:contents}.content{-webkit-overflow-scrolling:touch;flex:1;overflow-y:auto}.container{max-width:1320px;margin:0 auto;padding:22px 26px 48px}@media (min-width:861px){.sidebar.collapsed{flex-basis:60px;width:60px;overflow:visible}.sidebar.collapsed .brand{justify-content:center;padding:0}.sidebar.collapsed .brand-text,.sidebar.collapsed .nav-label,.sidebar.collapsed .nav-text,.sidebar.collapsed .side-portfolio-list,.sidebar.collapsed .theme-switch{display:none}.sidebar.collapsed .nav{padding-top:12px}.sidebar.collapsed .nav-item{justify-content:center;padding:8px 0}.sidebar.collapsed .side-portfolios-head{justify-content:center;padding:0}.sidebar.collapsed .side-add{width:40px;height:38px;color:var(--text-2)}.sidebar.collapsed .collapse-chevron{transform:scaleX(-1)}.sidebar.collapsed :is(.nav-item,.side-add):is(:hover,:focus-visible):after{content:attr(aria-label);background:var(--card);border:1px solid var(--border);color:var(--text-1);white-space:nowrap;box-shadow:var(--shadow);z-index:70;pointer-events:none;padding:6px 10px;font-size:12px;font-weight:500;position:absolute;top:50%;left:calc(100% + 12px);transform:translateY(-50%)}.sidebar.collapsed .sidebar-collapse:is(:hover,:focus-visible):after{content:"Expand sidebar"}.sidebar:not(.collapsed)~.main-col .header-portfolio{display:none}}@media (max-width:860px){.topbar{flex:none;gap:6px;height:auto;min-height:56px;padding:6px 14px 6px 6px}.topbar-menu{width:44px;height:44px;color:var(--text-1);cursor:pointer;background:0 0;border:0;flex:none;place-items:center;display:grid}.topbar-menu:hover{background:var(--hover)}.topbar-brand{letter-spacing:-.01em;white-space:nowrap;align-items:center;gap:8px;font-size:14px;font-weight:600;display:flex}.topbar-crumb,.sidebar-collapse{display:none}.sidebar-close{width:44px;height:44px;color:var(--text-2);cursor:pointer;background:0 0;border:0;flex:none;place-items:center;margin-left:auto;display:grid}.sidebar-close:hover{background:var(--hover);color:var(--text-1)}.brand{padding:0 6px 0 16px}.nav-item,.side-portfolio{min-height:44px}.side-add{width:44px;height:44px}.container{padding:18px 14px 40px}}@media (max-width:480px){.topbar-brand span{display:none}}@media (max-width:359px){.market-index-change{display:none}.market-status{gap:12px}.market-index{padding-left:12px}}@media (prefers-reduced-motion:reduce){.sidebar,.collapse-chevron{transition:none}.market-state.is-live .market-dot{animation:none}}.header{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:14px;margin-bottom:18px;padding:2px 0 18px;display:flex}.header-left h1{letter-spacing:-.01em;color:var(--text-1);font-size:21px;font-weight:600}.header-left p{color:var(--text-3);margin-top:3px;font-size:12.5px}.header-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.kse-badge{background:var(--card);border:1px solid var(--border);color:var(--text-2);border-radius:0;align-items:center;gap:8px;padding:9px 14px;font-size:12.5px;display:inline-flex}.kse-badge .idx{color:var(--text-1);font-family:IBM Plex Mono,monospace;font-weight:500}.pulse{background:var(--green);border-radius:50%;width:8px;height:8px;animation:2s infinite pulse}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.btn{cursor:pointer;border:1px solid #0000;border-radius:0;align-items:center;gap:7px;padding:8px 14px;font-family:IBM Plex Sans,sans-serif;font-size:12.5px;font-weight:500;transition:all .15s;display:inline-flex}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{filter:brightness(1.08)}.btn-ghost{background:var(--card);color:var(--text-2);border:1px solid var(--border)}.btn-ghost:hover{color:var(--accent);border-color:var(--accent)}.btn-green{background:var(--green);color:#fff}.btn-green:hover{filter:brightness(1.08)}.btn-red{background:var(--red);color:#fff}.btn-red:hover{filter:brightness(1.08)}.btn:disabled{opacity:.5;cursor:not-allowed}.trade-input{background:var(--panel-2);border:1px solid var(--border);width:100%;color:var(--text-1);border-radius:0;padding:8px 11px;font-family:IBM Plex Sans,sans-serif;font-size:13px;transition:border-color .15s,background .15s}.trade-input:focus{border-color:var(--accent);background:var(--card);outline:none}.trade-input::placeholder{color:var(--text-3)}.portfolio-row{border:1px solid #0000;align-items:center;gap:8px;padding:8px 10px;transition:background .15s,border-color .15s;display:flex}.portfolio-row:hover{background:var(--hover)}.portfolio-row.editing{background:var(--panel-2);border-color:var(--accent)}.cards{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:14px;margin-bottom:24px;display:grid}.card{background:var(--card);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:0;padding:16px 18px;transition:border-color .15s}.card:hover{border-color:var(--text-3)}.card-label{text-transform:uppercase;letter-spacing:.06em;color:var(--text-3);font-family:IBM Plex Mono,monospace;font-size:10.5px;font-weight:600}.card-value{letter-spacing:-.5px;margin-top:6px;font-family:IBM Plex Mono,monospace;font-size:22px;font-weight:600}.card-sub{margin-top:4px;font-size:12px;font-weight:500}.cards>.card{min-width:0;container-type:inline-size}.cards .card-value{overflow-wrap:anywhere;font-size:clamp(15px,11.4cqi,22px)}.card-cur{letter-spacing:.02em;opacity:.8;vertical-align:.12em;margin-right:.3em;font-size:.6em;font-weight:500;display:inline-block}.table-wrap{background:var(--card);border:1px solid var(--border);border-radius:14px;margin-bottom:28px;overflow:hidden}.table-header{border-bottom:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;padding:16px 20px;display:flex}.table-header h2{font-size:16px;font-weight:600}.table-header-toggle{cursor:pointer;-webkit-user-select:none;user-select:none;border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.table-header-toggle h2{margin:0;font-size:16px;font-weight:600}.table-header-toggle .collapse-arrow{color:var(--text-3);font-size:12px;transition:transform .2s}.table-header-toggle .collapse-arrow.open{transform:rotate(180deg)}.dividends-section>summary{list-style:none}.dividends-section>summary::-webkit-details-marker{display:none}.dividends-section[open]>summary .collapse-arrow{transform:rotate(180deg)}.dividends-section>div:last-child>.table-wrap{margin-bottom:0!important}.table-header-right{align-items:center;gap:8px;display:flex}.view-toggle{background:var(--bg);border-radius:8px;gap:4px;padding:3px;display:flex}.view-btn{cursor:pointer;color:var(--text-2);background:0 0;border:none;border-radius:6px;padding:6px 14px;font-family:IBM Plex Sans,sans-serif;font-size:12px;font-weight:500;transition:all .2s}.view-btn.active{background:var(--card);color:var(--text-1);box-shadow:0 1px 3px #00000014}.table-scroll{overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:13px}thead th{text-align:left;text-transform:uppercase;letter-spacing:.6px;color:var(--text-3);cursor:pointer;border-bottom:1px solid var(--border);white-space:nowrap;-webkit-user-select:none;user-select:none;padding:12px 14px;font-size:11px;font-weight:500;transition:color .15s}thead th:hover{color:var(--text-1)}thead th.sorted{color:var(--accent)}tbody td{white-space:nowrap;vertical-align:middle;border-bottom:1px solid #f3f2ef;padding:12px 14px}tbody tr:last-child td{border-bottom:none}.ticker{color:var(--accent);letter-spacing:.3px;font-size:14px;font-weight:600}.sector-tag{background:var(--accent-light);color:var(--accent);border-radius:5px;margin-left:6px;padding:2px 7px;font-size:10px;font-weight:500}.mono{font-family:IBM Plex Mono,monospace;font-size:12px}.pos{color:var(--green)}.neg{color:var(--red)}.pos-bg{background:var(--green-bg);color:var(--green);border-radius:6px;padding:3px 8px;font-size:11px;font-weight:600}.neg-bg{background:var(--red-bg);color:var(--red);border-radius:6px;padding:3px 8px;font-size:11px;font-weight:600}.totals-row td{border-top:2px solid var(--border);background:#fafaf8;font-weight:600;border-bottom:none!important}.charts{grid-template-columns:1fr 1fr;gap:16px;margin-bottom:28px;display:grid}.chart-card{background:var(--card);border:1px solid var(--border);border-radius:14px;padding:20px}.chart-card h3{margin-bottom:16px;font-size:14px;font-weight:600}.donut-legend{flex-direction:column;gap:2px;display:flex}.donut-legend-row{cursor:default;border-radius:6px;align-items:center;gap:9px;padding:7px 4px;transition:background .12s;display:flex}.donut-legend-row.active{background:var(--hover)}.donut-legend-dot{border-radius:3px;flex:none;width:9px;height:9px}.donut-legend-name{color:var(--text-2);white-space:nowrap;text-overflow:ellipsis;font-size:12.5px;overflow:hidden}.donut-legend-pct{color:var(--text-1);margin-left:auto;padding-left:12px;font-family:IBM Plex Mono,monospace;font-size:12.5px;font-weight:600}.sector-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px;display:grid}.sector-card{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:16px 18px}.sector-name{color:var(--accent);margin-bottom:10px;font-size:13px;font-weight:600}.sector-row{color:var(--text-2);justify-content:space-between;align-items:center;padding:4px 0;font-size:12px;display:flex}.sector-row span:last-child{font-family:IBM Plex Mono,monospace;font-weight:500}.sector-bar{background:var(--bg);border-radius:2px;height:4px;margin-top:10px;overflow:hidden}.sector-bar-fill{border-radius:2px;height:100%;transition:width .6s}.footer{text-align:center;color:var(--text-3);border-top:1px solid var(--border);margin-top:12px;padding:20px 0;font-size:12px}.overlay{z-index:100;opacity:0;pointer-events:none;background:#0000004d;transition:opacity .25s;position:fixed;inset:0}.overlay.open{opacity:1;pointer-events:auto}.slide-panel{background:var(--card);z-index:101;flex-direction:column;width:420px;max-width:100vw;height:100dvh;transition:right .3s cubic-bezier(.4,0,.2,1);display:flex;position:fixed;top:0;right:-440px;overflow-y:auto;box-shadow:-4px 0 24px #0000001a}.slide-panel.open{right:0}.panel-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:20px 24px;display:flex}.panel-header h2{font-size:18px;font-weight:600}.panel-close{border:1px solid var(--border);cursor:pointer;width:32px;height:32px;color:var(--text-2);background:0 0;border-radius:8px;justify-content:center;align-items:center;font-size:18px;transition:all .15s;display:flex}.panel-close:hover{background:var(--bg);color:var(--text-1)}.panel-body{flex:1;padding:24px}.form-group{margin-bottom:20px}.form-label{color:var(--text-2);text-transform:uppercase;letter-spacing:.5px;margin-bottom:6px;font-size:12px;font-weight:600;display:block}.form-input{border:1px solid var(--border);background:var(--bg);border-radius:9px;outline:none;width:100%;padding:10px 14px;font-family:IBM Plex Sans,sans-serif;font-size:14px;transition:border-color .2s}.form-input:focus{border-color:var(--accent)}.form-select{border:1px solid var(--border);background:var(--bg);cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath d='M3 5l3 3 3-3' fill='none' stroke='%236B6B6B' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E");background-position:right 12px center;background-repeat:no-repeat;border-radius:9px;outline:none;width:100%;padding:10px 14px;font-family:IBM Plex Sans,sans-serif;font-size:14px}.form-select:focus{border-color:var(--accent)}.trade-toggle{background:var(--bg);border-radius:10px;gap:0;margin-bottom:24px;padding:4px;display:flex}.trade-toggle-btn{cursor:pointer;color:var(--text-3);background:0 0;border:none;border-radius:8px;flex:1;padding:10px;font-family:IBM Plex Sans,sans-serif;font-size:14px;font-weight:600;transition:all .2s}.trade-toggle-btn.active-buy{background:var(--green-bg);color:var(--green)}.trade-toggle-btn.active-sell{background:var(--red-bg);color:var(--red)}.preview-card{background:var(--bg);border-radius:10px;margin-bottom:20px;padding:16px}.preview-card h4{color:var(--text-3);text-transform:uppercase;letter-spacing:.5px;margin-bottom:10px;font-size:12px}.preview-row{justify-content:space-between;padding:4px 0;font-size:13px;display:flex}.preview-row span:first-child{color:var(--text-2)}.preview-row span:last-child{font-family:IBM Plex Mono,monospace;font-weight:500}.settings-card{background:var(--bg);border-radius:10px;margin-bottom:16px;padding:16px}.settings-card h4{margin-bottom:10px;font-size:13px;font-weight:600}.settings-hint{color:var(--text-3);margin-top:4px;font-size:11px;line-height:1.4}.error-box{background:var(--red-bg);color:var(--red);border:1px solid #c41e2a2e;border-radius:8px;margin-bottom:12px;padding:10px 12px;font-size:12px}.connected-badge{color:var(--green);background:var(--green-bg);border-radius:6px;align-items:center;gap:5px;margin-bottom:10px;padding:3px 10px;font-size:11px;font-weight:600;display:inline-flex}.toast{z-index:200;opacity:0;pointer-events:none;border-radius:10px;padding:12px 24px;font-size:13px;font-weight:500;transition:all .3s;position:fixed;bottom:24px;left:50%;transform:translate(-50%);box-shadow:0 4px 20px #00000026}.toast.show{opacity:1}.toast-success{background:var(--green);color:#fff}.toast-error{background:var(--red);color:#fff}.toast-stack{bottom:max(24px,env(safe-area-inset-bottom));z-index:200;pointer-events:none;flex-direction:column;gap:8px;width:min(560px,100vw - 24px);display:flex;position:fixed;left:50%;transform:translate(-50%)}.toast-stack .toast{pointer-events:auto;text-align:left;border-radius:4px;align-items:center;gap:12px;padding:12px 16px;display:flex;position:relative;inset:auto;transform:none}.toast-stack .toast>span{overflow-wrap:anywhere;flex:1;min-width:0}.toast-action,.toast-dismiss{color:inherit;cursor:pointer;background:0 0;border:1px solid;flex-shrink:0;padding:7px 10px;font:600 12px IBM Plex Sans,sans-serif}.toast-dismiss{border:0;padding:4px 8px;font-size:20px}.pagination{border-top:1px solid var(--border);color:var(--text-3);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;font-size:11px;display:flex}.pagination>div{align-items:center;gap:10px;display:flex}.pagination .btn{padding:7px 12px;font-size:11px}.trade-reversed{color:var(--text-3);font-size:10px;display:block}.trade-panel[open]{flex-direction:column;display:flex;overflow:hidden}.trade-form,.trade-form>.dialog-fields{flex-direction:column;flex:1;min-height:0;display:flex}.trade-form>.error-box{flex-shrink:0;margin:8px 20px}.trade-form-scroll{overscroll-behavior:contain;flex:1;min-height:0;padding:20px;overflow-y:auto}.trade-submit-footer{padding:14px 20px;padding-bottom:max(14px,env(safe-area-inset-bottom));border-top:1px solid var(--border);background:var(--card);flex-shrink:0}.trade-submit-footer>.btn{white-space:normal;overflow-wrap:anywhere;text-overflow:clip;width:100%;min-height:48px;padding:12px;font-size:14px}.trade-existing-lots{border:1px solid var(--border);margin-top:14px}.trade-lots-summary{cursor:pointer;color:var(--text-2);min-height:44px;padding:12px;font-size:12px}.trade-existing-lots .lots-list,.trade-delete-lots{overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#080b09 transparent;max-height:240px;overflow-y:auto}@media (max-width:640px){.trade-form-scroll{padding:14px}.trade-submit-footer{padding:12px 14px;padding-bottom:max(12px,env(safe-area-inset-bottom))}.toast-action,.toast-dismiss{min-height:44px}.toast-stack{bottom:max(12px,env(safe-area-inset-bottom))}.pagination .btn{min-height:44px}}.sort-arrow{opacity:.7;margin-left:3px;font-size:10px}.loading{height:60vh;color:var(--text-3);justify-content:center;align-items:center;font-size:16px;display:flex}.skel{background:var(--panel-2);border-radius:2px;position:relative;overflow:hidden}.skel:after{content:"";background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--text-3) 12%,transparent),transparent);animation:1.35s ease-in-out infinite skel-sweep;position:absolute;inset:0;transform:translate(-100%)}@keyframes skel-sweep{to{transform:translate(100%)}}.skel-line{height:11px}.skel-card{background:var(--card);border:1px solid var(--border);box-shadow:var(--shadow);padding:16px 18px}.skel-sidebar{background:var(--card);border-right:1px solid var(--border);flex-direction:column;flex:0 0 232px;width:232px;display:flex}@media (max-width:860px){.skel-sidebar{display:none}}@media (prefers-reduced-motion:reduce){.skel:after{animation:none}}.perf-controls{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.range-toggle{background:var(--bg);border-radius:8px;gap:2px;padding:3px;display:flex}.range-btn{cursor:pointer;color:var(--text-2);letter-spacing:.3px;background:0 0;border:none;border-radius:6px;padding:5px 12px;font-family:IBM Plex Sans,sans-serif;font-size:11px;font-weight:600;transition:all .2s}.range-btn.active{background:var(--card);color:var(--text-1);box-shadow:0 1px 3px #00000014}.bench-select{border:1px solid var(--border);background:var(--card);color:var(--text-1);cursor:pointer;border-radius:8px;outline:none;padding:7px 12px;font-family:IBM Plex Sans,sans-serif;font-size:12px;font-weight:500}.bench-select:focus{border-color:var(--accent)}.perf-stats{border-bottom:1px solid var(--border);flex-wrap:wrap;gap:28px;padding:16px 20px;display:flex}.perf-stat-label{text-transform:uppercase;letter-spacing:.8px;color:var(--text-3);font-size:11px;font-weight:500}.perf-stat-value{margin-top:4px;font-family:IBM Plex Mono,monospace;font-size:18px;font-weight:600}.empty-state{text-align:center;color:var(--text-3);padding:50px 24px;font-size:13px;line-height:1.6}.trade-type{letter-spacing:.5px;border-radius:5px;padding:3px 10px;font-size:10px;font-weight:700;display:inline-block}.trade-type-buy{background:var(--green-bg);color:var(--green)}.trade-type-sell{background:var(--red-bg);color:var(--red)}.trade-actions{justify-content:flex-end;gap:6px;display:flex}.trade-action-btn{border:1px solid var(--border);color:var(--text-2);cursor:pointer;background:0 0;border-radius:6px;padding:4px 8px;font-family:IBM Plex Sans,sans-serif;font-size:11px;font-weight:600;transition:all .15s}.trade-action-btn:hover{background:var(--bg);color:var(--accent);border-color:var(--accent)}.trade-action-btn.danger:hover{background:var(--red-bg);color:var(--red);border-color:var(--red)}.commit-link{color:var(--text-3);font-family:IBM Plex Mono,monospace;font-size:11px;text-decoration:none;transition:color .15s}.commit-link:hover{color:var(--accent)}.section-header-btn{border:1px solid var(--border);background:var(--card);color:var(--text-2);cursor:pointer;border-radius:8px;align-items:center;gap:5px;padding:6px 12px;font-family:IBM Plex Sans,sans-serif;font-size:12px;font-weight:600;transition:all .15s;display:inline-flex}.heatmap-tile{cursor:pointer;border:1px solid #ffffff4d;border-radius:4px;flex-direction:column;justify-content:center;align-items:center;padding:8px;transition:transform .15s;display:flex;overflow:hidden}.heatmap-tile:hover{z-index:2;transform:scale(1.02);box-shadow:0 4px 14px #0003}.heatmap-ticker{letter-spacing:.3px;text-shadow:0 1px 2px #00000026;font-size:14px;font-weight:700}.heatmap-pct{text-shadow:0 1px 2px #00000026;margin-top:2px;font-family:IBM Plex Mono,monospace;font-size:11px;font-weight:600}.list-row{border-bottom:1px solid #f3f2ef;justify-content:space-between;align-items:center;padding:12px 14px;font-size:13px;display:flex}.list-row:last-child{border-bottom:none}.list-row-left{flex:1;align-items:center;gap:10px;min-width:0;display:flex}.list-row-meta{color:var(--text-3);margin-top:2px;font-size:11px}.list-row-actions{align-items:center;gap:6px;display:flex}.icon-btn{border:1px solid var(--border);cursor:pointer;width:28px;height:28px;color:var(--text-2);background:0 0;border-radius:6px;justify-content:center;align-items:center;font-size:14px;transition:all .15s;display:flex}.icon-btn:hover{background:var(--bg);color:var(--red);border-color:var(--red)}.status-badge{letter-spacing:.3px;text-transform:uppercase;border-radius:5px;padding:2px 8px;font-size:10px;font-weight:700;display:inline-block}.status-active{background:var(--accent-light);color:var(--accent)}.month-group{background:var(--bg);color:var(--text-3);text-transform:uppercase;letter-spacing:.6px;border-bottom:1px solid var(--border);padding:12px 20px;font-size:11px;font-weight:600}.dividend-amount{color:var(--green);font-family:IBM Plex Mono,monospace;font-weight:600}.summary-stats-grid{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;padding:16px 20px;display:grid}.form-row{grid-template-columns:1fr 1fr;gap:12px;display:grid}.ticker-autocomplete{position:relative}.ticker-suggestions{background:var(--card);border:1px solid var(--border);z-index:100;border-radius:8px;max-height:260px;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow-y:auto;box-shadow:0 6px 18px #14141414}.ticker-suggestion{cursor:pointer;border-bottom:1px solid #f3f2ef;justify-content:space-between;align-items:center;gap:10px;padding:8px 12px;font-size:13px;display:flex}.ticker-suggestion:last-child{border-bottom:none}.ticker-suggestion:hover,.ticker-suggestion.active{background:var(--bg)}.ticker-suggestion .ticker{font-family:IBM Plex Mono,monospace;font-weight:600}.ticker-suggestion .ticker-sector-hint{color:var(--text-3);font-size:11px}.lots-list{border:1px solid var(--border);border-radius:8px;margin-top:8px;overflow:hidden}.lot-row{border-bottom:1px solid #f3f2ef;grid-template-columns:1fr auto auto auto;align-items:center;gap:10px;padding:8px 12px;font-size:12px;display:grid}.lot-row:last-child{border-bottom:none}.lot-row .lot-date{color:var(--text-2);font-family:IBM Plex Sans}.lot-row .mono{font-family:IBM Plex Mono,monospace}@keyframes live-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.8)}}.live-cell{align-items:center;gap:5px;font-family:IBM Plex Mono,monospace;display:inline-flex}.live-cell-on{color:#0d7c3e;font-weight:600}.live-cell-on .live-cell-dot{background:#0d7c3e;border-radius:50%;width:6px;height:6px;animation:1.4s ease-in-out infinite live-pulse}.live-cell-off{color:var(--text-3)}.summary-stat{background:var(--bg);border-radius:8px;padding:12px 14px}.summary-stat-label{text-transform:uppercase;letter-spacing:.6px;color:var(--text-3);font-size:10px;font-weight:500}.summary-stat-value{margin-top:4px;font-family:IBM Plex Mono,monospace;font-size:18px;font-weight:600}.expandable-row{cursor:pointer;transition:background .15s}.expand-arrow{width:16px;color:var(--text-3);margin-right:4px;font-size:10px;transition:transform .2s;display:inline-block}.expand-arrow.open{transform:rotate(90deg)}.lot-detail-row td{background:#fafaf8;font-size:12px;border-bottom:1px solid #f0eeea!important;padding:8px 14px!important}.lot-detail-inner{grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px;padding:4px 0 4px 20px;display:grid}.lot-chip{background:var(--card);border:1px solid var(--border);border-radius:8px;padding:8px 12px}.lot-chip-label{text-transform:uppercase;letter-spacing:.5px;color:var(--text-3);font-size:10px;font-weight:500}.lot-chip-value{margin-top:2px;font-family:IBM Plex Mono,monospace;font-size:12px;font-weight:500}.delete-holding-btn{border:1px solid var(--border);color:var(--text-3);cursor:pointer;background:0 0;border-radius:6px;padding:4px 10px;font-family:IBM Plex Sans,sans-serif;font-size:11px;transition:all .15s}.delete-holding-btn:hover{background:var(--red-bg);color:var(--red);border-color:var(--red)}.comm-toggle{border:1px solid var(--border);background:var(--bg);border-radius:0 9px 9px 0;display:flex;overflow:hidden}.comm-toggle-btn{cursor:pointer;color:var(--text-3);background:0 0;border:none;padding:10px 12px;font-family:IBM Plex Sans,sans-serif;font-size:12px;font-weight:600;transition:all .15s}.comm-toggle-btn.active{background:var(--accent-light);color:var(--accent)}.comm-input-wrap{display:flex}.comm-input-wrap .form-input{border-right:none;border-radius:9px 0 0 9px;flex:1;width:auto;min-width:0}.share-modal-bg{z-index:150;opacity:0;pointer-events:none;background:#00000080;justify-content:center;align-items:center;padding:20px;transition:opacity .25s;display:flex;position:fixed;inset:0}.share-modal-bg.open{opacity:1;pointer-events:auto}.share-modal{background:var(--card);border-radius:16px;width:100%;max-width:600px;max-height:90vh;overflow-y:auto;box-shadow:0 20px 60px #0003}.share-modal.prompt-modal{max-width:880px}.share-modal-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.share-modal-header h2{font-size:16px;font-weight:600}.share-modal-body{padding:20px}.share-modal-actions{border-top:1px solid var(--border);gap:10px;padding:16px 20px;display:flex}.prompt-textarea{resize:vertical;border:1px solid var(--border);background:var(--bg);width:100%;min-height:520px;color:var(--text-1);border-radius:10px;outline:none;padding:14px;font-family:IBM Plex Mono,monospace;font-size:12px;line-height:1.55}.prompt-textarea:focus{border-color:var(--accent)}.share-card{color:#fff;background:linear-gradient(135deg,#0f2027 0%,#1b3a4b 40%,#203a43 70%,#2c5364 100%);border-radius:16px;width:540px;margin:0 auto;padding:36px;font-family:IBM Plex Sans,sans-serif;position:relative;overflow:hidden}.share-card:before{content:"";background:#ffffff08;border-radius:50%;width:260px;height:260px;position:absolute;top:-80px;right:-80px}.share-card:after{content:"";background:#ffffff05;border-radius:50%;width:200px;height:200px;position:absolute;bottom:-60px;left:-60px}.share-card *{z-index:1;position:relative}.sc-header{justify-content:space-between;align-items:flex-start;margin-bottom:28px;display:flex}.sc-title{letter-spacing:-.5px;color:#fff;font-size:20px;font-weight:700}.sc-date{color:#ffffff80;margin-top:4px;font-size:11px}.sc-badge{color:#ffffffb3;background:#ffffff1f;border:1px solid #ffffff26;border-radius:8px;padding:6px 12px;font-size:11px}.sc-value-block{margin-bottom:28px}.sc-value{letter-spacing:-1px;font-family:IBM Plex Mono,monospace;font-size:36px;font-weight:700}.sc-pl{margin-top:4px;font-family:IBM Plex Mono,monospace;font-size:18px;font-weight:600}.sc-pl-green{color:#4ade80}.sc-pl-red{color:#fb7185}.sc-label{text-transform:uppercase;letter-spacing:1px;color:#fff6;margin-bottom:4px;font-size:10px;font-weight:500}.sc-row{grid-template-columns:1fr 1fr;gap:16px;margin-bottom:20px;display:grid}.sc-mover{background:#ffffff12;border:1px solid #ffffff14;border-radius:10px;padding:14px 16px}.sc-mover-ticker{letter-spacing:.5px;font-family:IBM Plex Mono,monospace;font-size:16px;font-weight:700}.sc-mover-pct{margin-top:2px;font-family:IBM Plex Mono,monospace;font-size:14px;font-weight:600}.sc-stats{grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:24px;display:grid}.sc-stat-val{margin-top:2px;font-family:IBM Plex Mono,monospace;font-size:15px;font-weight:600}.sc-footer{border-top:1px solid #ffffff1a;justify-content:space-between;align-items:center;padding-top:16px;display:flex}.sc-footer-brand{color:#fff6;font-size:11px;font-weight:500}.sc-footer-url{color:#ffffff4d;font-family:IBM Plex Mono,monospace;font-size:10px}.corr-grid{padding:16px;overflow-x:auto}.corr-table{border-collapse:collapse;width:auto;margin:0 auto;font-family:IBM Plex Mono,monospace;font-size:11px}.corr-table th{color:var(--text-2);text-align:center;white-space:nowrap;border-bottom:1px solid var(--border);padding:6px 8px;font-size:10px;font-weight:600}.corr-table td{text-align:center;cursor:default;border:1px solid #f3f2ef;min-width:44px;padding:6px 8px;font-weight:500;transition:transform .1s}.corr-table td:hover{z-index:2;border-radius:3px;transform:scale(1.15);box-shadow:0 2px 8px #0000001f}.corr-table .corr-label{text-align:right;color:var(--accent);border:none;padding-right:10px;font-weight:600}.corr-legend{color:var(--text-3);justify-content:center;align-items:center;gap:6px;margin-top:12px;font-size:10px;display:flex}.corr-legend-bar{background:linear-gradient(90deg,#2563eb,#e8e6e1,#c41e2a);border-radius:3px;width:120px;height:10px}.stock-chart-wrap{border:1px solid var(--border);background:var(--card);border-radius:10px;margin-top:16px;overflow:hidden}.stock-chart-header{border-bottom:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;padding:12px 14px;display:flex}.stock-chart-header h4{color:var(--accent);font-size:13px;font-weight:600}.stock-chart-stats{border-bottom:1px solid var(--border);flex-wrap:wrap;gap:20px;padding:10px 14px;display:flex}.stock-chart-stat{color:var(--text-3);font-size:11px}.stock-chart-stat span{color:var(--text-1);margin-left:4px;font-family:IBM Plex Mono,monospace;font-weight:600}.buy-marker{filter:drop-shadow(0 1px 2px #0003)}.import-panel{width:760px!important;right:-780px!important}.import-panel.open{right:0!important}.import-dropzone{border:2px dashed var(--border);text-align:center;background:var(--bg);cursor:pointer;border-radius:12px;padding:24px;transition:all .15s}.import-dropzone:hover,.import-dropzone.drag{border-color:var(--accent);background:var(--accent-light)}.import-dropzone-hint{color:var(--text-3);margin-top:6px;font-size:11px}.import-pdf-input{display:none}.import-summary{grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:8px;margin:16px 0 20px;display:grid}.import-summary .summary-stat{padding:10px 12px}.import-summary .summary-stat-value{font-size:15px}.import-toggle{background:var(--bg);color:var(--text-2);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:8px;align-items:center;gap:8px;margin-bottom:16px;padding:10px 12px;font-size:12px;display:flex}.import-toggle input{accent-color:var(--accent);cursor:pointer}.import-file-block{background:var(--card);border:1px solid var(--border);border-radius:10px;margin-bottom:12px;overflow:hidden}.import-file-header{background:var(--bg);border-bottom:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;padding:10px 14px;display:flex}.import-file-name{color:var(--text-1);word-break:break-all;font-family:IBM Plex Mono,monospace;font-size:12px;font-weight:600}.import-file-date{color:var(--text-3);margin-top:2px;font-size:11px}.import-file-error{color:var(--red);background:var(--red-bg);padding:12px 14px;font-size:12px}.import-rows-scroll{overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;min-width:0;max-width:100%;overflow-x:auto}.import-rows-table{width:100%;font-size:12px}.import-rows-table th{text-transform:uppercase;letter-spacing:.5px;color:var(--text-3);text-align:left;border-bottom:1px solid var(--border);white-space:nowrap;background:#fafaf8;padding:8px 10px;font-size:10px;font-weight:500}.import-rows-table td{white-space:nowrap;vertical-align:middle;border-bottom:1px solid #f3f2ef;padding:7px 10px}.import-rows-table tr:last-child td{border-bottom:none}.import-rows-table input[type=checkbox]{accent-color:var(--accent);cursor:pointer}.import-rows-table .ticker{font-size:12px}.import-row-off td{opacity:.45}.import-row-dup{background:var(--amber-bg)!important}.import-row-dup td{color:var(--text-2)}.import-dup-tag{letter-spacing:.5px;background:var(--amber);color:#fff;vertical-align:middle;border-radius:4px;margin-left:4px;padding:1px 6px;font-size:9px;font-weight:700;display:inline-block}.import-file-actions{gap:6px;display:flex}.import-mini-btn{border:1px solid var(--border);color:var(--text-2);cursor:pointer;text-transform:uppercase;letter-spacing:.4px;background:0 0;border-radius:5px;padding:3px 8px;font-family:IBM Plex Sans,sans-serif;font-size:10px;font-weight:600}.import-mini-btn:hover{background:var(--card);color:var(--text-1)}.import-files{max-height:none}.import-preview-section{border-top:1px solid var(--border);margin-top:20px;padding-top:20px}.import-preview-section h4{text-transform:uppercase;letter-spacing:.5px;color:var(--text-3);margin-bottom:10px;font-size:11px;font-weight:600}.import-final-list{background:var(--bg);border-radius:10px;max-height:200px;padding:10px 12px;overflow-y:auto}.import-final-row{grid-template-columns:auto 1fr auto auto auto;align-items:center;gap:10px;padding:4px 0;font-size:12px;display:grid}.import-final-row .pos,.import-final-row .neg{font-weight:600}.import-warn{background:var(--amber-bg);color:#7a5a1a;border:1px solid #f0d8a0;border-radius:8px;margin-top:10px;padding:10px 12px;font-size:12px}.import-step{text-transform:uppercase;letter-spacing:.6px;color:var(--accent);align-items:center;gap:6px;margin-bottom:8px;font-size:11px;font-weight:600;display:flex}.import-step-num{background:var(--accent);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:18px;height:18px;font-size:10px;font-weight:700;display:inline-flex}@media (max-width:900px){.container{padding:18px 14px}.header{align-items:stretch;gap:14px;margin-bottom:18px;padding:12px 0 18px}.header-left h1{font-size:22px}.header-left p{font-size:12px;line-height:1.4}.header-actions{grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;width:100%;display:grid}.header-actions>*,.header-portfolio>*{grid-column:span 2}.header-portfolio>.bench-select{grid-column:span 5}.header-portfolio>.icon-square{grid-column:span 1;width:100%;height:auto;min-height:40px}.header-actions>.btn-primary{grid-column:1/-1}.header-actions .bench-select,.header-actions .btn{justify-content:center;width:100%;min-height:40px}.header-actions .btn{text-align:center;padding:8px;font-size:12px;line-height:1.25}.kse-badge{padding:8px 10px;font-size:12px}.cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:18px}.card{padding:14px}.card-label{letter-spacing:.55px;font-size:10px}.card-value{letter-spacing:0;overflow-wrap:anywhere;font-size:18px}.card-sub{font-size:11px}.charts{grid-template-columns:1fr;gap:12px;margin-bottom:18px}.chart-card{border-radius:12px;padding:14px}.sector-grid{grid-template-columns:1fr}.summary-stats-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding:12px}.table-wrap{border-radius:12px;margin-bottom:18px}.table-header,.table-header-toggle{gap:8px;padding:13px 14px}.table-header{align-items:flex-start}.table-header-right{flex-wrap:wrap;justify-content:flex-start;width:100%}.table-header-toggle .table-header-right{width:auto}.view-toggle,.range-toggle{width:100%;overflow-x:auto}.view-btn,.range-btn{flex:1;min-width:max-content;padding:7px 10px}.table-scroll{-webkit-overflow-scrolling:touch;overflow-x:auto}.table-scroll:has(.holdings-table):after{content:none}.table-scroll:after{content:"Swipe table";color:var(--text-3);text-align:right;border-top:1px solid #f3f2ef;padding:8px 12px 10px;font-size:10px;display:block}table{min-width:720px;font-size:12px}thead th{padding:10px 11px;font-size:10px}tbody td{padding:10px 11px}.ticker{font-size:13px}.perf-stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding:12px;display:grid}.perf-stat-value{overflow-wrap:anywhere;font-size:16px}.form-row{grid-template-columns:1fr}.slide-panel{width:100vw;right:-100vw}.panel-header{padding:16px}.panel-body{padding:16px 14px 24px}.import-panel{width:100vw!important;right:-100vw!important}.import-dropzone{padding:18px 14px}.import-final-row{grid-template-columns:1fr auto;gap:6px 10px}.lot-row{grid-template-columns:1fr 1fr;gap:6px 10px}.lot-detail-inner{grid-template-columns:repeat(2,minmax(0,1fr));padding-left:0}.stock-chart-header,.stock-chart-stats{padding:10px 12px}.stock-chart-stats{gap:10px}.corr-grid{padding:12px;overflow-x:auto}.share-modal-bg{align-items:flex-end;padding:10px}.share-modal{border-radius:14px 14px 10px 10px;max-height:92vh}.share-modal-body{padding:14px;overflow-x:auto}.share-modal-actions{flex-wrap:wrap;padding:12px 14px}.share-modal-actions .btn{flex:1;justify-content:center;min-width:130px}.share-card{width:min(540px,100vw - 48px);padding:24px}.prompt-textarea{min-height:62vh;font-size:11px}.toast{text-align:center;bottom:14px;left:12px;right:12px;transform:none}.holdings-table{width:100%;min-width:0;display:block}.holdings-table thead{display:none}.holdings-table tbody{display:block}.holdings-table tbody tr.hold-row{border:1px solid var(--border);background:var(--card);grid-template-columns:1fr 1fr;gap:6px 10px;margin:0 0 8px;padding:12px 13px;display:grid;position:relative}.holdings-table tbody tr.hold-row td{white-space:normal;text-align:right;border:0;justify-content:space-between;align-items:baseline;gap:8px;padding:0;display:flex}.holdings-table tbody tr.hold-row td:first-child{text-align:left;border-bottom:1px solid var(--hairline);grid-column:1/-1;justify-content:flex-start;margin-bottom:2px;padding-bottom:8px}.holdings-table tbody tr.hold-row td:before{content:attr(data-label);letter-spacing:.5px;text-transform:uppercase;color:var(--text-3);white-space:nowrap;text-align:left;font-family:IBM Plex Mono,monospace;font-size:9.5px}.holdings-table tbody tr.hold-row td:first-child:before{content:none}.holdings-table tbody tr.hold-row td[data-label=Value]{grid-column:1/-1;font-size:14px}.holdings-table tbody tr.hold-row td[data-label=Return]{grid-column:1/-1}.holdings-table tbody tr.hold-row .hold-col-spark{display:none}.holdings-table tbody tr.hold-row td .hold-weight-cell{align-items:flex-end;min-width:0}.holdings-table tbody tr.hold-row:hover td:first-child,.holdings-table tbody tr.hold-row.is-expanded td:first-child{box-shadow:none}.holdings-table tbody tr.hold-row.is-expanded{border-color:var(--accent)}.holdings-table tbody tr.lot-detail-row{margin:-4px 0 10px;display:block}.holdings-table tbody tr.lot-detail-row>td{display:block;padding:0!important}.holdings-table tbody tr.lot-detail-row .lot-mini-table{min-width:420px}.holdings-table tbody tr.lot-detail-row .lot-panel{overflow-x:auto}.holdings-table tbody tr.totals-row{border:1px solid var(--border);background:var(--panel-2);grid-template-columns:1fr 1fr;gap:6px 10px;padding:12px 13px;display:grid}.holdings-table tbody tr.totals-row td{text-align:right;white-space:normal;border:0;justify-content:space-between;gap:8px;padding:0;display:flex}.holdings-table tbody tr.totals-row td:first-child{grid-column:1/-1;justify-content:flex-start}.holdings-table tbody tr.totals-row td:empty{display:none}}@media (max-width:520px){.container{padding:14px 10px}.header-actions .btn svg{display:none}.cards{grid-template-columns:1fr 1fr;gap:8px}.card{border-radius:10px;padding:12px 10px}.card-value{font-size:16px}.summary-stats-grid{grid-template-columns:1fr}.table-header,.table-header-toggle{padding:12px}.table-header h2,.table-header-toggle h2{font-size:15px}.section-header-btn{justify-content:center;width:100%;min-height:36px}.perf-stats{grid-template-columns:1fr 1fr}.form-input,.form-select{font-size:16px}.trade-toggle{margin-bottom:18px}.trade-toggle-btn{padding:9px 6px;font-size:13px}.list-row{align-items:flex-start;gap:8px}.list-row-actions{flex-wrap:wrap;justify-content:flex-end}.share-modal-bg{padding:0}.share-modal{border-radius:14px 14px 0 0;max-height:94vh}.share-modal-header{padding:14px 16px}.share-card{border-radius:14px;width:calc(100vw - 28px);padding:18px}.sc-header,.sc-footer{flex-direction:column;align-items:flex-start;gap:10px}.sc-value{font-size:28px}.sc-pl{font-size:15px}.sc-row{grid-template-columns:1fr;gap:10px}.sc-stats{grid-template-columns:repeat(2,1fr);gap:10px}.prompt-textarea{min-height:58vh}.footer{font-size:11px;line-height:1.5}}@media (max-width:380px){.cards,.perf-stats{grid-template-columns:1fr}}*,:before,:after{border-radius:0!important}::-webkit-scrollbar-thumb{border-radius:0!important}.icon-btn:hover{background:var(--panel-2)}.section-header-btn{background:var(--card)}.section-header-btn:hover{background:var(--panel-2);color:var(--accent);border-color:var(--accent)}.view-toggle,.range-toggle,.trade-toggle{background:var(--panel-2)}.view-btn.active,.range-btn.active{background:var(--card);color:var(--text-1);border:1px solid var(--border);box-shadow:none}.form-input,.form-select{background:var(--panel-2);color:var(--text-1)}.preview-card,.settings-card,.summary-stat,.import-toggle,.import-final-list{background:var(--panel-2)}.table-wrap,.chart-card,.sector-card{box-shadow:var(--shadow)}.sector-bar{background:var(--panel-2)}tbody td{border-bottom:1px solid var(--hairline)}tbody tr:hover{background:var(--hover)}.totals-row td{background:var(--panel-2)}.list-row{border-bottom:1px solid var(--hairline)}.list-row:hover{background:var(--hover)}.ticker-suggestion,.lot-row{border-bottom:1px solid var(--hairline)}.expandable-row:hover{background:var(--hover)!important}.lot-detail-row td{background:var(--panel-2);border-bottom:1px solid var(--hairline)!important}.corr-table td{border:1px solid var(--hairline)}.import-rows-table th{background:var(--panel-2)}.import-rows-table td{border-bottom:1px solid var(--hairline)}.table-scroll:after{border-top:1px solid var(--hairline)}.month-group,.import-file-header,.ticker-suggestion:hover,.ticker-suggestion.active,.import-dropzone{background:var(--panel-2)}.import-dropzone:hover,.import-dropzone.drag{background:var(--accent-soft)}.btn-ghost:hover{background:var(--card)}.holdings-table{font-variant-numeric:tabular-nums}.holdings-table thead th{z-index:2;background:var(--card);border-bottom:1px solid var(--border);box-shadow:inset 0 -1px 0 var(--border);padding:11px 14px;position:sticky;top:0}.holdings-table thead th.num,.holdings-table td.num{text-align:right}.holdings-table thead th.num .sort-arrow{margin-left:4px}.holdings-table tbody td{padding:11px 14px;transition:background .12s}.holdings-table tbody tr.hold-row{position:relative}.holdings-table tbody tr.hold-row:hover{background:var(--hover)}.hold-flash{pointer-events:none;border-radius:inherit;position:absolute;inset:0;overflow:hidden}.hold-flash-band{background:linear-gradient(90deg,transparent 0%,var(--flash-tint) 50%,transparent 100%);width:55%;animation:.85s ease-out forwards hold-flash-sweep;position:absolute;top:0;bottom:0;left:0}.hold-flash-up{--flash-tint:#16a34a33}.hold-flash-down{--flash-tint:#dc26262e}@keyframes hold-flash-sweep{0%{transform:translate(-100%)}to{transform:translate(282%)}}@media (prefers-reduced-motion:reduce){.hold-flash-band{width:100%;animation:.9s ease-out forwards hold-flash-fade}@keyframes hold-flash-fade{0%{opacity:.85}to{opacity:0}}}.holdings-table tbody tr.hold-row td:first-child{transition:box-shadow .12s;box-shadow:inset 3px 0 #0000}.holdings-table tbody tr.hold-row:hover td:first-child,.holdings-table tbody tr.hold-row.is-expanded td:first-child{box-shadow:inset 3px 0 0 var(--accent)}.holdings-table tbody tr.hold-row.is-expanded{background:var(--panel-2)}.hold-ticker-cell{align-items:center;gap:8px;display:flex}.hold-sector-dot{border-radius:2px;flex:none;width:8px;height:8px}.hold-ticker-name{color:var(--text-1);letter-spacing:.3px;font-family:IBM Plex Mono,monospace;font-size:14px;font-weight:600}.hold-lot-badge{color:var(--text-3);border:1px solid var(--border);padding:1px 5px;font-family:IBM Plex Mono,monospace;font-size:10px;line-height:1.4}.hold-sector-sub{color:var(--text-3);letter-spacing:.2px;margin-top:2px;font-size:10px}.hold-price-main{color:var(--text-1);font-family:IBM Plex Mono,monospace;font-size:13px}.hold-price-sub{color:var(--text-3);align-items:center;gap:4px;margin-top:1px;font-size:10px;line-height:1.2;display:flex}.hold-price-src{border-radius:50%;width:5px;height:5px;display:inline-block}.hold-pl-val{font-family:IBM Plex Mono,monospace;font-weight:600}.pill{letter-spacing:.2px;justify-content:flex-end;align-items:center;min-width:62px;padding:3px 8px;font-family:IBM Plex Mono,monospace;font-size:11px;font-weight:600;display:inline-flex}.pill-pos{background:var(--green-bg);color:var(--green)}.pill-neg{background:var(--red-bg);color:var(--red)}.hold-weight-cell{flex-direction:column;align-items:flex-end;gap:4px;min-width:70px;display:flex}.hold-weight-num{color:var(--text-1);font-family:IBM Plex Mono,monospace;font-size:12px}.hold-weight-track{background:var(--panel-2);width:100%;max-width:64px;height:3px;overflow:hidden}.hold-weight-fill{background:var(--accent);opacity:.75;height:100%}.hold-spark-cell{justify-content:flex-end;display:flex}.holdings-table tr.totals-row td{background:var(--panel-2);border-top:2px solid var(--border);text-transform:uppercase;letter-spacing:.4px;padding:13px 14px;font-size:12px;font-weight:700}.holdings-table tr.totals-row td .pill{text-transform:none;letter-spacing:.2px}.expand-chevron{color:var(--text-3);transition:transform .18s;display:inline-flex}.expand-chevron.open{color:var(--accent);transform:rotate(90deg)}.lot-panel{border:1px solid var(--border);background:var(--card);margin:2px 0 6px}.lot-panel-head{border-bottom:1px solid var(--border);text-transform:uppercase;letter-spacing:.5px;color:var(--text-3);justify-content:space-between;align-items:center;padding:9px 12px;font-size:11px;font-weight:600;display:flex}.lot-dropdown>.lot-panel-head{cursor:pointer;flex-wrap:wrap;gap:8px;min-height:44px;list-style:none}.lot-dropdown>.lot-panel-head::-webkit-details-marker{display:none}.lot-dropdown:not([open])>.lot-panel-head{border-bottom:0}.lot-dropdown-arrow{margin-right:8px;font-size:18px;line-height:1;transition:transform .15s;display:inline-block}.lot-dropdown[open] .lot-dropdown-arrow{transform:rotate(90deg)}.lot-dropdown-table{overscroll-behavior:contain;max-height:360px;overflow:auto}.lot-mini-table{width:100%;font-size:12px}.lot-mini-table th{color:var(--text-3);text-transform:uppercase;letter-spacing:.4px;border-bottom:1px solid var(--border);text-align:left;box-shadow:none;background:0 0;padding:7px 12px;font-size:10px;font-weight:600;position:static}.lot-mini-table th.num,.lot-mini-table td.num{text-align:right}.lot-mini-table td{border-bottom:1px solid var(--hairline);padding:8px 12px;font-family:IBM Plex Mono,monospace}.lot-mini-table tbody tr:last-child td{border-bottom:none}.container-analysis{width:100%;max-width:none;padding-inline:clamp(14px,2vw,40px)}.analysis-layout{grid-template-columns:250px minmax(0,1fr);align-items:start;gap:20px;display:grid}.analysis-stocks{padding:18px;position:sticky;top:20px}.analysis-lookup{border-top:1px solid var(--border);margin-top:18px;padding-top:16px}.analysis-lookup label{margin-bottom:10px;font-size:12px;font-weight:600;display:block}.analysis-lookup-error{color:var(--red);margin-top:10px;font-size:12px}.analysis-stocks .form-input{width:100%;margin-bottom:12px}.analysis-stock-list{max-height:65vh;overflow:auto}.analysis-stock{width:100%;color:var(--text-1);border:0;border-bottom:1px solid var(--border);cursor:pointer;text-align:left;font:inherit;background:0 0;justify-content:space-between;align-items:center;gap:12px;padding:13px 10px;font-size:12px;display:flex}.analysis-stock>span:last-child{text-align:right;font-family:IBM Plex Mono,monospace}.analysis-stock small{color:var(--text-3);margin-top:5px;font-size:10px;display:block}.analysis-stock:hover,.analysis-stock.selected{background:var(--accent-light)}.analysis-stock.selected{box-shadow:inset 3px 0 var(--accent)}.analysis-stock:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.analysis-detail{min-width:0;container-type:inline-size}.analysis-heading{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-bottom:20px;display:flex}.analysis-heading h2{margin:0;font-size:22px}.analysis-caption{color:var(--text-3);font-size:12px;font-weight:400;line-height:1.6}.analysis-metrics{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:20px;display:grid}.analysis-metrics .card{padding:16px}.analysis-metrics .card-value{margin-bottom:6px;font-size:21px}.analysis-charts{grid-template-columns:minmax(0,1fr);gap:20px;margin-bottom:20px;display:grid}.analysis-chart{flex-direction:column;min-width:0;margin-bottom:0;display:flex}.analysis-chart>.analysis-caption{min-height:38px;margin-bottom:8px}.analysis-plot{width:100%;min-width:0;height:clamp(260px,22vw,360px)}.analysis-chart .analysis-legend{margin-top:auto;padding-top:10px}@container (min-width:1040px){.analysis-charts{grid-template-columns:repeat(2,minmax(0,1fr))}}@container (min-width:1280px){.analysis-metrics{grid-template-columns:repeat(6,minmax(0,1fr))}}.analysis-chart h3{margin-bottom:4px}.analysis-legend{color:var(--text-2);flex-wrap:wrap;justify-content:center;gap:16px;margin-top:10px;font-size:11px;display:flex}.analysis-legend span{align-items:center;gap:6px;display:inline-flex}.analysis-legend i{width:12px;height:3px;display:inline-block}@media (max-width:1000px){.analysis-layout{grid-template-columns:1fr}.analysis-stocks{position:static}.analysis-stock-list{grid-template-columns:repeat(3,minmax(0,1fr));max-height:230px;display:grid}.analysis-stock{min-width:0}}@media (max-width:600px){.analysis-metrics,.analysis-stock-list{grid-template-columns:repeat(2,minmax(0,1fr))}.analysis-stock{padding:10px 6px}.analysis-metrics .card-value{font-size:18px}.container-analysis{padding-inline:10px}.analysis-layout,.analysis-charts{gap:14px}.analysis-chart{padding:14px 8px}.analysis-plot{height:250px}.analysis-heading h2{font-size:20px}.analysis-heading .range-btn{min-width:48px;min-height:40px}.analysis-stock>span:first-child{overflow-wrap:anywhere;min-width:0}.analysis-stock>span:last-child{white-space:nowrap;flex-shrink:0}.analysis-metrics .card{overflow-wrap:anywhere;min-width:0;padding:12px}}:root,[data-theme=dark]{--analysis-blue:#60a5fa;--analysis-orange:#fb923c;--analysis-purple:#a78bfa;--analysis-teal:#2dd4bf}[data-theme=light]{--analysis-blue:#2563eb;--analysis-orange:#c2410c;--analysis-purple:#7c3aed;--analysis-teal:#0f766e}.portfolio-setup-page{background:var(--bg);justify-content:center;align-items:center;min-height:100vh;padding:28px;display:flex}.portfolio-setup{max-width:760px}.portfolio-setup-page .portfolio-setup{max-height:none}.portfolio-setup-fields{border:0;flex-direction:column;gap:16px;min-width:0;margin:0;padding:0;display:flex}.portfolio-setup-fields h3{margin:0;font-size:14px}.setup-field{color:var(--text-2);flex-direction:column;gap:6px;font-size:12px;display:flex}.setup-grid,.setup-modes{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.setup-modes label{border:1px solid var(--border);background:var(--panel-2);cursor:pointer;padding:14px;font-size:13px}.setup-modes label:has(input:checked){border-color:var(--accent)}.setup-modes span{color:var(--text-3);margin-top:8px;font-size:12px;line-height:1.5;display:block}.setup-section-title,.setup-actions,.setup-add-stock{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.setup-section-title{color:var(--text-2);justify-content:space-between;font-size:12px}.setup-stock-row{border-bottom:1px solid var(--border);grid-template-columns:1fr 115px auto;align-items:center;gap:12px;padding:9px 0;font-size:13px;display:grid}.setup-stock-row span{color:var(--text-3);margin-top:3px;font-size:11px;display:block}.setup-stock-row label{align-items:center;gap:6px;display:flex}.setup-add-stock input{flex:1;min-width:160px}.setup-checkbox{align-items:center;gap:8px;font-size:13px;display:flex}.setup-summary{background:var(--panel-2);border:1px solid var(--border);padding:16px;font-size:13px;line-height:1.7}.setup-summary summary{cursor:pointer;color:var(--text-2)}.setup-schedule{max-height:200px;overflow:auto}.setup-schedule>div{justify-content:space-between;gap:12px;display:flex}@media (max-width:640px){.portfolio-setup-page{padding:12px}.setup-grid,.setup-modes{grid-template-columns:1fr}.setup-stock-row{grid-template-columns:1fr 90px auto;gap:6px}.setup-stock-row .btn{padding:6px;font-size:11px}.portfolio-setup .setup-actions .btn{font-size:11px}}.app-dialog{border:1px solid var(--border);color:var(--text-1);overscroll-behavior:contain;max-width:calc(100vw - 32px);max-height:calc(100dvh - 32px);padding:0}.app-dialog:not([open]){display:none!important}.app-dialog::backdrop{background:#0000008c}.app-dialog.share-modal{margin:auto;position:fixed;inset:0}.app-dialog.slide-panel{height:100dvh;max-height:100dvh;margin:0;transition:none;position:fixed;inset:0 0 0 auto;right:0!important}.app-dialog .panel-header,.app-dialog .share-modal-header{z-index:3;background:var(--card);flex-shrink:0;gap:12px;position:sticky;top:0}.app-dialog .panel-body,.app-dialog .share-modal-body{overflow-wrap:anywhere;min-width:0;padding-bottom:max(24px,env(safe-area-inset-bottom))}.app-dialog .panel-body{flex:1 0 auto}.app-dialog .panel-close{flex-shrink:0;min-width:44px;min-height:44px}.app-dialog h2{overflow-wrap:anywhere;min-width:0}.app-dialog h2:focus{outline:none}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible,summary:focus-visible{outline:2px solid var(--accent);outline-offset:3px}[aria-invalid=true]{border-color:var(--red)!important}.error-box{overflow-wrap:anywhere;scroll-margin-block:90px;line-height:1.5}.form-group,.setup-field{min-width:0}.dialog-fields{border:0;min-width:0;margin:0;padding:0}.form-input,.form-select,.trade-input{scroll-margin-block:90px}@media (max-width:640px){.app-dialog{width:100%;max-width:100vw;max-height:100dvh}.app-dialog.share-modal{max-height:100dvh;margin:0;inset:auto 0 0}.app-dialog.slide-panel{width:100vw;max-width:100vw}.app-dialog .panel-header,.app-dialog .share-modal-header{padding:8px 12px;padding-top:max(8px,env(safe-area-inset-top))}.app-dialog input:not([type=checkbox]):not([type=radio]),.app-dialog select,.app-dialog textarea,.portfolio-setup-page input:not([type=checkbox]):not([type=radio]){min-height:44px;font-size:16px}.app-dialog button,.portfolio-setup-page button{min-height:44px}.app-dialog .icon-btn{min-width:44px}.app-dialog .trade-toggle,.app-dialog .setup-actions{flex-wrap:wrap;gap:6px}.app-dialog .list-row{flex-wrap:wrap;gap:10px}.app-dialog .list-row-actions{margin-left:auto}.setup-stock-row{grid-template-columns:minmax(0,1fr) 100px!important}.setup-stock-row>button{grid-column:1/-1;justify-content:center}.setup-add-stock{flex-wrap:wrap}.setup-add-stock input{flex:160px;min-width:0}.app-dialog .share-modal-actions{padding-bottom:max(16px,env(safe-area-inset-bottom))}}.app-dialog{--dialog-visible-height:100dvh;--dialog-visible-top:0px;max-height:calc(var(--dialog-visible-height) - 24px)}.app-dialog.share-modal{top:var(--dialog-visible-top);bottom:calc(100dvh - var(--dialog-visible-height) - var(--dialog-visible-top))}.app-dialog.slide-panel,.app-dialog.sidebar{top:var(--dialog-visible-top);height:var(--dialog-visible-height);max-height:var(--dialog-visible-height);bottom:auto}.app-dialog.sidebar{width:min(300px,86vw);max-width:86vw;padding:0;padding-bottom:env(safe-area-inset-bottom);visibility:visible;border-width:0 1px 0 0;margin:0;inset-inline:0 auto;overflow-y:auto;transform:none}@media (max-width:860px){.icon-square,.nav-item,.sidebar-close,.theme-toggle{min-height:44px}.icon-square,.sidebar-close{min-width:44px}}@media (max-width:640px){.app-dialog.share-modal{max-height:var(--dialog-visible-height);top:auto}}.section-toggle{font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;min-height:44px;padding:8px 0}@media (max-width:640px){.header-actions .btn,.section-header-btn,.trade-action-btn,.view-btn,.range-btn,.bench-select{min-height:44px}}.holdings-table tbody tr.hold-row>td.mobile-holding-cell{display:none}@media (max-width:900px){.stock-holdings-table tbody tr.hold-row{border:0;border-bottom:1px solid var(--border);margin:0;padding:12px 8px;display:block;cursor:default!important}.stock-holdings-table tbody tr.hold-row>td:not(.mobile-holding-cell){display:none}.stock-holdings-table tbody tr.hold-row>td.mobile-holding-cell{text-align:left;white-space:normal;padding:0;display:block}.stock-holdings-table tbody tr.hold-row>td.mobile-holding-cell:before{content:none}.mobile-holding{font-variant-numeric:tabular-nums;grid-template-columns:minmax(42px,.75fr) minmax(60px,1fr) minmax(0,1.9fr) 44px;align-items:center;gap:6px;font-family:IBM Plex Sans,sans-serif;display:grid}.mobile-holding dl,.mobile-holding dd{min-width:0;margin:0}.mobile-holding dt,.mobile-holding-label{text-transform:uppercase;letter-spacing:0;color:var(--text-3);white-space:nowrap;font-size:9px;line-height:1.4;display:block}.mobile-holding dd{overflow-wrap:anywhere;font-size:12px;line-height:1.45}.mobile-holding-stock{min-width:0}.mobile-holding-ticker{min-height:44px;color:var(--text-1);text-align:left;cursor:pointer;overflow-wrap:anywhere;background:0 0;border:0;max-width:100%;padding:0;font:600 18px IBM Plex Sans,sans-serif;display:block}.mobile-holding-price{overflow-wrap:anywhere;font-size:13px;line-height:1.5}.mobile-holding-cost{gap:5px;display:grid}.mobile-holding-value dd{color:var(--text-1);font-size:16px;font-weight:600;line-height:1.4}.mobile-holding-value dd>span{font-size:11px;font-weight:400}.mobile-holding-gains{grid-template-columns:1fr 1fr;gap:6px;margin-top:9px;display:grid}.mobile-holding-gains dd{font-size:12px;font-weight:600}.mobile-holding-gains dd>span{margin-top:3px;display:block}.mobile-holding-chart{width:44px;height:44px;color:var(--accent);cursor:pointer;background:0 0;border:0;justify-content:center;align-self:start;align-items:center;padding:0;display:flex}.stock-holdings-table tbody tr.lot-detail-row{border-bottom:1px solid var(--border);margin:0}}@media (max-width:360px){.mobile-holding{grid-template-columns:minmax(40px,.7fr) minmax(56px,.95fr) minmax(0,1.9fr) 44px;gap:4px}.mobile-holding dt,.mobile-holding-label{font-size:8px}.mobile-holding dd,.mobile-holding-gains dd{font-size:10.5px}.mobile-holding-ticker{font-size:16px}.mobile-holding-price{font-size:12px}.mobile-holding-value dd{font-size:14px}.mobile-holding-gains{gap:4px}}.header-left,.header-actions,.header-portfolio,.perf-controls,.chart-card,.table-header>*,.analysis-heading>*{min-width:0}.header-left p,.analysis-caption,.chart-tip,.card-sub{overflow-wrap:anywhere}.charts>*{min-width:0}.perf-controls select,.header-portfolio select{min-width:0;max-width:100%}.analysis-stock>span{overflow-wrap:anywhere;min-width:0}.analysis-metrics .card-value{overflow-wrap:anywhere;font-variant-numeric:tabular-nums}.analysis-lookup .btn{min-height:44px}::selection{background:var(--accent);color:var(--bg)}input,textarea{caret-color:var(--accent)}@media (max-width:900px){.content,.container,.analysis-layout{min-width:0}.table-header,.table-header-toggle{flex-wrap:wrap}.view-toggle,.range-toggle{flex-wrap:wrap;min-width:0;max-width:100%;overflow-x:visible}.view-btn,.range-btn{flex:1 0 auto;min-width:0}.content{padding-bottom:env(safe-area-inset-bottom)}}@media (max-width:640px){.header-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.header-actions>.header-portfolio{order:0;grid-column:1/-1}.header-actions .btn{min-height:44px;font-size:13px}.header-actions .btn svg{flex-shrink:0;display:block}.header-portfolio{min-width:0}.header-portfolio .bench-select{text-overflow:ellipsis;width:100%}.chart-card h3{overflow-wrap:anywhere;line-height:1.5}.analysis-stock-list{grid-template-columns:minmax(0,1fr);max-height:220px}.analysis-stock{padding:12px;font-size:14px}.analysis-stock small{font-size:12px}.analysis-caption{color:var(--text-2);font-size:13px}.analysis-legend{justify-content:flex-start;gap:10px 14px;font-size:12px}.analysis-plot{height:260px}.perf-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.perf-stat-value{overflow-wrap:anywhere}.header-actions>.header-portfolio{grid-template-columns:minmax(0,1fr) 44px;gap:10px;display:grid}.header-portfolio>.bench-select,.header-portfolio>.icon-square{grid-column:auto}}@media (max-width:900px){.sector-holdings-table tbody tr.hold-row{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 16px}.sector-holdings-table tbody tr.hold-row td{text-align:left;overflow-wrap:anywhere;flex-direction:column;justify-content:flex-start;align-items:flex-start;gap:4px;min-width:0;display:flex}.sector-holdings-table tbody tr.hold-row td[data-label=Stocks]{grid-column:1/-1;max-width:none!important}.sector-holdings-table tbody tr.hold-row td[data-label=Value],.sector-holdings-table tbody tr.hold-row td[data-label=Return]{grid-column:auto}.sector-holdings-table tbody tr.hold-row td .hold-weight-cell{align-items:flex-start}.sector-holdings-table .totals-row td[data-label]:before{content:attr(data-label);color:var(--text-2);font-size:11px}.sector-holdings-table .totals-row td:first-child:before,.sector-holdings-table .totals-row td:empty:before{content:none}.mobile-holding-chart{min-height:44px;color:var(--accent);background:0 0;border:0;justify-content:center;align-items:center;display:flex}.mobile-holding-chart:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.summary-stats-grid,.perf-stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.summary-stats-grid>div,.perf-stats>div{border:1px solid var(--border);background:var(--panel-2);text-align:left;min-width:0;padding:12px 10px}.summary-stats-grid .card-value,.perf-stats .perf-stat-value{overflow-wrap:anywhere;line-height:1.4;font-size:clamp(14px,3.8vw,18px)!important}.summary-stats-grid .card-label,.perf-stats .perf-stat-label{white-space:normal;line-height:1.5}}@media (max-width:640px){.header-actions{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.header-actions>.btn{order:0;grid-area:auto;min-height:48px;padding:9px 6px;font-size:13px}.header-actions>.header-portfolio{order:0;grid-column:1/-1}.header-actions>.btn-primary{grid-column:1/-1}.header-actions>.btn svg,.cards>.card-broker-cash{display:none}.cards{grid-template-columns:repeat(2,minmax(0,1fr))}.cards>.card-fees{grid-column:auto}}.chart-controls{flex-wrap:wrap;align-items:center;gap:8px;min-width:0;max-width:100%;display:flex}.chart-controls .chart-ranges{flex-wrap:nowrap;grid-template-columns:repeat(9,minmax(0,1fr));min-width:0;max-width:100%;display:grid;overflow:visible}.chart-ranges .range-btn{white-space:nowrap;min-width:0;padding:5px 9px}.chart-indicators{flex-wrap:nowrap;flex-shrink:0;align-items:center;gap:6px;display:flex}.chart-indicators .range-btn{flex:none;min-width:44px;min-height:36px}.chart-ma-control input{flex-shrink:0}.mobile-holding-chart svg{transform-origin:50%;transition:transform .2s}.mobile-holding-chart[aria-expanded=true] svg{transform:rotate(90deg)}.dividend-due-header h2{overflow-wrap:anywhere;flex:1;min-width:0}.period-returns{border:1px solid var(--border);background:var(--panel-2);min-width:0}.period-returns>summary{cursor:pointer;justify-content:space-between;align-items:center;gap:12px;min-height:44px;padding:12px;list-style:none;display:flex}.period-returns>summary::-webkit-details-marker{display:none}.period-returns>summary h3{margin:0;font-size:13px;font-weight:600}.period-returns>summary svg{flex-shrink:0;transition:transform .2s}.period-returns[open]>summary{border-bottom:1px solid var(--border)}.period-returns[open]>summary svg{transform:rotate(180deg)}.period-returns .settings-hint{margin:0;padding:10px 12px!important}.donut-layout{grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);align-items:center;gap:12px;display:grid;container-type:inline-size}.donut-plot{width:100%;min-width:0;max-width:var(--donut-size);aspect-ratio:1;justify-self:center;position:relative}.donut-center{text-align:center;pointer-events:none;width:47%;line-height:1.3;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.donut-center-value{color:var(--text-1);overflow-wrap:anywhere;font-family:IBM Plex Mono,monospace;font-size:clamp(9px,3cqi,16px);font-weight:700}.donut-center-caption{color:var(--text-3);text-overflow:ellipsis;white-space:nowrap;margin-top:3px;font-size:10px;overflow:hidden}.donut-value-compact{display:none}.donut-layout .donut-legend{overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#050706 transparent;min-width:0;max-height:clamp(140px,52cqi,300px);padding-right:4px;overflow-y:auto}.donut-layout .donut-legend-row{width:100%;min-width:0;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;gap:6px;padding:7px 6px}.donut-layout .donut-legend-row.active{background:var(--accent-soft);box-shadow:inset 2px 0 0 var(--accent)}.donut-layout .donut-legend-row.active .donut-legend-name{color:var(--text-1)}@supports selector(::-webkit-scrollbar){.donut-layout .donut-legend{scrollbar-width:auto;scrollbar-color:auto}.donut-layout .donut-legend::-webkit-scrollbar{width:3px;height:3px}.donut-layout .donut-legend::-webkit-scrollbar-track{background:0 0}.donut-layout .donut-legend::-webkit-scrollbar-thumb{background:#050706;border:0;border-radius:0}.donut-layout .donut-legend::-webkit-scrollbar-thumb:hover{background:#000}.donut-layout .donut-legend::-webkit-scrollbar-button{width:0;height:0;display:none}}.donut-layout .donut-legend-name{white-space:normal;overflow-wrap:anywhere;min-width:0;line-height:1.4}.donut-layout .donut-legend-pct{flex-shrink:0;padding-left:0;font-size:12px}@container (max-width:480px){.donut-value-full{display:none}.donut-value-compact{display:inline}.donut-layout .donut-legend-name{font-size:11px}}@media (max-width:900px){.chart-controls{flex-direction:column;align-items:stretch;gap:6px;width:100%}.chart-controls .chart-ranges{flex:none;width:100%}.chart-ranges .range-btn{letter-spacing:0;min-height:44px;padding:6px 0;font-size:10px}.chart-indicators{align-self:flex-start}.chart-indicators .range-btn{min-height:44px}.chart-ma-control input{min-height:36px;font-size:16px!important}.perf-controls>.chart-controls{flex:100%}.perf-stats>.perf-stat-cash-recovered{text-align:center;grid-column:1/-1}}@media (max-width:640px){.dividend-due-header{flex-wrap:nowrap;align-items:center}}@media (prefers-reduced-motion:reduce){.mobile-holding-chart svg,.period-returns>summary svg{transition:none}}.header-left h1{overflow-wrap:anywhere;line-height:1.35}.compact-table{table-layout:fixed;min-width:0}.compact-table th,.compact-table td{white-space:normal;overflow-wrap:anywhere;padding:9px 10px}.period-col-label{width:24%}.period-col-window{width:42%}.period-col-return{width:34%}.period-chart-cell svg{width:100%;max-width:112px;height:32px;margin-left:auto}.period-tables{align-items:start}.period-name{white-space:nowrap}.period-table .sector-tag{white-space:nowrap;width:fit-content;margin:3px 0 0;display:block}@media (min-width:901px){.period-col-label{width:18%}.period-col-window{width:34%}.period-col-return{width:22%}.period-col-chart{width:26%}}@media (min-width:901px) and (max-width:1199px){.period-tables{grid-template-columns:minmax(0,1fr)}}.table-scroll:has(>.compact-table):after{content:none}.index-chart-controls{border-bottom:1px solid var(--border);padding:12px 20px}.index-chart-controls .chart-controls{flex-direction:column;align-items:stretch;width:100%}.index-chart-controls .chart-ranges{width:100%}.index-chart-controls .chart-indicators{align-self:flex-start}.corr-grid{overflow:hidden;container-type:inline-size}.corr-options{justify-content:flex-end;margin-bottom:8px;display:flex}.corr-options label{min-height:44px;color:var(--text-2);cursor:pointer;align-items:center;gap:8px;font-size:12px;display:inline-flex}.corr-options input{accent-color:var(--accent);width:16px;height:16px}.corr-matrix-scroll{max-width:100%;padding:2px;overflow-x:auto}.corr-table-fit{table-layout:fixed;width:100%;min-width:0}.corr-table-fit th,.corr-table-fit td{letter-spacing:0;min-width:0;padding:3px 1px;overflow:hidden}.corr-table-fit td:hover{box-shadow:none;transform:none}.corr-table-fit .corr-label{text-overflow:ellipsis;padding-right:5px;font-size:9px}.corr-table-fit th{writing-mode:vertical-rl;text-align:left;vertical-align:middle;height:64px;font-size:9px}.corr-table-fit th:first-child{writing-mode:horizontal-tb}@media (max-width:900px){.holdings-table tbody tr.totals-row{grid-template-columns:minmax(0,1fr);gap:2px;padding:14px}.holdings-table tbody tr.totals-row td{text-transform:none;letter-spacing:0;text-align:right;overflow-wrap:anywhere;border:0;grid-template-columns:130px minmax(0,1fr);align-items:center;gap:8px;min-width:0;padding:4px 0;display:grid}.holdings-table tbody tr.totals-row td[data-label]:before{content:attr(data-label) " :";color:var(--text-2);text-align:left;font:500 12px IBM Plex Sans,sans-serif}.holdings-table tbody tr.totals-row td:first-child{text-align:left;text-transform:uppercase;padding-bottom:8px;display:block}.holdings-table tbody tr.totals-row td:first-child:before{content:none}.holdings-table tbody tr.totals-row td:empty{display:none}.holdings-table tbody tr.totals-row td>.pill{justify-self:end}.compact-table th,.compact-table td{letter-spacing:0;padding:8px 4px;font-size:11px;line-height:1.45}.compact-table th{overflow-wrap:normal;font-size:10px}.compact-table .mono{font-size:10px}.compact-table .ticker{letter-spacing:0;font-size:12px}.compact-table .pos-bg,.compact-table .neg-bg{overflow-wrap:anywhere;max-width:100%;padding:3px 4px;font-size:10px;display:inline-block}.performance-ranking-table .mono{font-size:clamp(9px,2.5vw,11px)}.performance-ranking-table .ticker{font-size:11px}.perf-stats>.perf-stat-snapshots{text-align:center;grid-column:1/-1}.index-chart-controls{padding:12px}.corr-table-fit .corr-value{display:none}.corr-table-fit td:not(.corr-label){height:14px;padding:0}.corr-legend{flex-wrap:wrap}}@media (max-width:480px){.performance-ranking-table .pos-bg,.performance-ranking-table .neg-bg{padding:3px 2px;font-size:9px}}.hibernate-badge{border:1px solid var(--border);background:var(--panel-2);max-width:100%;color:var(--text-3);vertical-align:middle;white-space:nowrap;margin-left:6px;padding:2px 5px;font-size:9px;line-height:1.4;display:inline-block}.is-hibernated{background:var(--panel-2)!important}.is-hibernated,.is-hibernated :is(span,strong,small,dt,dd,td,button,div){color:var(--text-3)!important}.is-hibernated :is(.hold-sector-dot,.hold-price-src,.hold-spark-cell,.hold-weight-track){filter:grayscale();opacity:.5}.is-hibernated :is(.pill,.pos-bg,.neg-bg){background:var(--hover)!important;color:var(--text-3)!important}.holding-detail-actions{flex-wrap:wrap;align-items:center;gap:8px;margin-top:12px;display:flex}.holding-hibernate-caption{color:var(--text-3);font-size:11px}.hibernated-count{margin-top:3px;font-size:10px;display:block}.hibernate-ticker-link{color:var(--text-2);cursor:pointer;text-underline-offset:3px;background:0 0;border:0;padding:4px;font-family:IBM Plex Mono,monospace;font-size:12px;font-weight:600;text-decoration:underline}.hibernate-dialog .share-modal-body p{color:var(--text-2);margin-bottom:12px;font-size:13px;line-height:1.6}.hibernate-dialog .share-modal-actions{justify-content:flex-end}.cards>.card{position:relative}.cards>.card:has(.hibernate-status)>.card-label{padding-right:24px}.hibernate-status{position:absolute;top:7px;right:7px}.hibernate-status-button{width:28px;height:28px;color:var(--red);cursor:pointer;background:0 0;border:0;place-items:center;padding:0;font:700 17px IBM Plex Mono,monospace;display:grid}.hibernate-status-button:hover,.hibernate-status-button:focus-visible{background:var(--red-bg);outline:1px solid var(--red)}.hibernate-status-tooltip{border:1px solid var(--border);background:var(--panel-2);color:var(--text-2);overflow-wrap:anywhere;margin:0;padding:10px 12px;font:400 12px/1.6 IBM Plex Sans,sans-serif;position:fixed;inset:auto;box-shadow:0 8px 24px #00000040}.holdings-actions-trigger{border:1px solid var(--border);width:36px;height:36px;color:var(--text-2);cursor:pointer;background:0 0;place-items:center;padding:0;display:grid}.holdings-actions-trigger:hover,.holdings-actions-trigger:focus-visible{background:var(--hover);color:var(--text-1)}.holdings-actions-trigger:disabled{opacity:.45;cursor:default}.holdings-actions-menu{border:1px solid var(--border);background:var(--panel-2);color:var(--text-1);margin:0;padding:4px;position:fixed;inset:auto;box-shadow:0 8px 24px #00000040}.holdings-actions-menu:popover-open{flex-direction:column;display:flex}.holdings-actions-menu button{text-align:left;color:var(--text-2);cursor:pointer;background:0 0;border:0;min-height:44px;padding:12px;font:500 13px/1.4 IBM Plex Sans,sans-serif}.holdings-actions-menu button:hover,.holdings-actions-menu button:focus-visible{background:var(--hover);color:var(--text-1);outline:none}.hibernated-holdings{border-top:1px solid var(--border);background:var(--panel-2)}.hibernated-holdings>summary{cursor:pointer;color:var(--text-2);justify-content:space-between;align-items:center;gap:12px;padding:10px 20px;font-size:13px;font-weight:600;list-style:none;display:flex}.hibernated-holdings>summary::-webkit-details-marker{display:none}.hibernated-holdings-controls{flex-shrink:0;align-items:center;gap:12px;display:flex}.hibernated-holdings-controls>svg{flex-shrink:0;transition:transform .2s}.hibernated-holdings[open]>summary .hibernated-holdings-controls>svg{transform:rotate(180deg)}.hibernated-holdings-count{border:1px solid var(--border);color:var(--text-3);margin-left:6px;padding:1px 6px;font:500 11px IBM Plex Mono,monospace;display:inline-block}.hibernated-holdings[open]>summary{border-bottom:1px solid var(--border)}.bulk-hibernate-fields{grid-template-columns:100px minmax(0,1fr);gap:12px;display:grid}.bulk-hibernate-preview{border:1px solid var(--border);background:var(--panel-2);margin:16px 0;padding:12px;font-size:12px}.bulk-hibernate-preview ul{scrollbar-width:thin;scrollbar-color:#080b09 transparent;max-height:180px;margin:10px 0 0;padding:0;list-style:none;overflow-y:auto}.bulk-hibernate-preview li{border-top:1px solid var(--border);justify-content:space-between;gap:12px;padding:7px 4px;display:flex}.bulk-hibernate-dialog .share-modal-actions{flex-wrap:wrap}.bulk-hibernate-dialog .share-modal-actions .btn{white-space:normal}.bulk-wake-option{cursor:pointer;min-height:48px;color:var(--text-1);align-items:center;gap:12px;padding:10px 12px;font-size:13px;display:flex}.bulk-wake-option:hover{background:var(--hover)}.bulk-wake-option input{width:18px;height:18px;accent-color:var(--accent);flex-shrink:0;margin:0}.bulk-wake-option:has(input:disabled){cursor:default;opacity:.6}.bulk-wake-option span{overflow-wrap:anywhere;min-width:0}.bulk-wake-select-all{padding-inline:0;font-weight:600}.bulk-wake-list{overscroll-behavior:contain;border:1px solid var(--border);scrollbar-width:thin;scrollbar-color:#080b09 transparent;max-height:min(300px,35dvh);overflow-y:auto}.bulk-wake-list .bulk-wake-option+.bulk-wake-option{border-top:1px solid var(--border)}.bulk-wake-dialog .share-modal-body .bulk-wake-count{color:var(--text-3);margin:12px 0 0;font-size:12px}.bulk-wake-dialog .share-modal-actions{z-index:2;background:var(--card);flex-wrap:wrap;position:sticky;bottom:0}.bulk-wake-dialog .share-modal-actions .btn{white-space:normal}.closed-hibernate-row details{white-space:normal;padding:12px}.closed-hibernate-row summary{cursor:pointer;font-weight:600}.closed-hibernate-row summary span{color:var(--text-3);margin-left:8px;font-size:11px}.closed-hibernate-row p{color:var(--text-3);margin:12px 0;font-size:12px}@media (max-width:640px){.holdings-header .table-header-right{width:auto;margin-left:auto}.holdings-header .view-btn{padding-inline:9px}.holdings-actions-trigger{min-width:44px;min-height:44px}.hibernated-holdings>summary{padding:10px 12px}.hibernate-status{top:4px;right:4px}.hibernate-status-button{width:32px;height:32px}.cards>.card:has(.hibernate-status)>.card-label{padding-right:22px}}@media (min-width:641px){.app-dialog.hibernate-dialog{width:min(480px,100vw - 32px);max-width:480px}}@media (max-width:640px){.mobile-holding-stock>.hibernate-badge{margin:0;padding:2px 3px;font-size:8px}.holding-detail-actions .btn{flex:140px;justify-content:center;min-height:44px}.holding-hibernate-caption{flex-basis:100%;line-height:1.5}}
