:root{--color-bg:#fafaf8;--color-bg-results:#f5f4f0;--color-text-primary:#1a1a1a;--color-text-secondary:#6b6b6b;--color-border:#e0ddd8;--color-border-focus:#2a7f8f;--color-accent:#2a7f8f;--color-accent-hover:#237080;--color-accent-light:#2a7f8f1f;--color-accent-medium:#2a7f8f40;--border-accent-left:inset 3px 0 0 var(--color-accent);--color-positive:#2d8a4e;--color-caution:#c27d2a;--color-danger:#c44536;--color-surface:#fff;--color-on-accent:#fff;--color-warning-bg:#fef3cd;--color-warning-border:#f0d68a;--color-backdrop:#0006;--color-tooltip-bg:#1a1a1a;--color-tooltip-text:#fff;--color-crosshair-shadow:#00000026;--font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;--font-size-body:14px;--font-size-section:18px;--font-size-headline:28px;--font-weight-regular:400;--font-weight-semibold:600;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-7:28px;--space-8:32px;--space-10:40px;--radius-card:4px;--radius-input:4px;--transition-fast:.15s ease;--z-sticky:5;--z-tooltip:10;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}[data-theme=dark]{--color-bg:#1a1a1c;--color-bg-results:#242426;--color-text-primary:#e8e6e1;--color-text-secondary:#9b9b9b;--color-border:#3a3a3c;--color-border-focus:#3aa0b2;--color-accent:#3aa0b2;--color-accent-hover:#4bb5c7;--color-accent-light:#3aa0b226;--color-accent-medium:#3aa0b24d;--color-positive:#3daa62;--color-caution:#d4923e;--color-danger:#d65a4b;--color-surface:#2a2a2e;--color-on-accent:#fff;--color-warning-bg:#3d3520;--color-warning-border:#5c4f2a;--color-tooltip-bg:#e8e6e1;--color-tooltip-text:#1a1a1a;--color-backdrop:#0009;--color-crosshair-shadow:#0006;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}@media (prefers-color-scheme:dark){:root:not([data-theme]){--color-bg:#1a1a1c;--color-bg-results:#242426;--color-text-primary:#e8e6e1;--color-text-secondary:#9b9b9b;--color-border:#3a3a3c;--color-border-focus:#3aa0b2;--color-accent:#3aa0b2;--color-accent-hover:#4bb5c7;--color-accent-light:#3aa0b226;--color-accent-medium:#3aa0b24d;--color-positive:#3daa62;--color-caution:#d4923e;--color-danger:#d65a4b;--color-surface:#2a2a2e;--color-on-accent:#fff;--color-warning-bg:#3d3520;--color-warning-border:#5c4f2a;--color-tooltip-bg:#e8e6e1;--color-tooltip-text:#1a1a1a;--color-backdrop:#0009;--color-crosshair-shadow:#0006;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*,:before,:after{box-sizing:border-box}body{font-family:var(--font-family);font-size:var(--font-size-body);font-weight:var(--font-weight-regular);color:var(--color-text-primary);background:var(--color-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;line-height:1.5}.tabular-nums{font-variant-numeric:tabular-nums}h1,h2,h3,h4,h5,h6{font-weight:var(--font-weight-semibold);margin:0}p{margin:0}button{font-family:inherit;font-size:inherit;cursor:pointer}input,select{font-family:inherit;font-size:inherit}#root{min-height:100vh}.app{max-width:1200px;padding:0 var(--space-4);flex-direction:column;min-height:100vh;margin:0 auto;display:flex}.app-header{padding:var(--space-6) 0 var(--space-4);justify-content:space-between;align-items:flex-start;gap:var(--space-4);display:flex}.app-header-text{flex:1;min-width:0}.app-header h1{font-size:var(--font-size-headline);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);margin:0}.app-subtitle{font-size:var(--font-size-body);color:var(--color-text-secondary);margin:var(--space-1) 0 0}.app-tabs{gap:var(--space-1);border-bottom:1px solid var(--color-border);display:flex}.app-tab{padding:var(--space-2) var(--space-4);font-size:var(--font-size-body);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);transition:color var(--transition-fast), border-color var(--transition-fast);border-bottom:2px solid #0000;margin-bottom:-1px;text-decoration:none}.app-tab:hover{color:var(--color-text-primary)}.app-tab.active{color:var(--color-accent);border-bottom-color:var(--color-accent)}.simulation-page{gap:var(--space-8);padding:var(--space-6) 0;flex:1;grid-template-columns:1fr 1fr;display:grid}.portfolio-page{gap:var(--space-6);padding:var(--space-6) 0;flex-direction:column;flex:1;display:flex}.accounts-section{gap:var(--space-3);flex-direction:column;display:flex}.input-panel{gap:var(--space-6);flex-direction:column;display:flex}.results-panel{background:var(--color-bg-results);border-radius:var(--radius-card);padding:var(--space-6)}.results-placeholder{min-height:200px;color:var(--color-text-secondary);justify-content:center;align-items:center;display:flex}.results-running{justify-content:center;align-items:center;gap:var(--space-3);min-height:200px;color:var(--color-text-secondary);flex-direction:column;display:flex}.results-running .progress-bar{max-width:300px}.sync-status{border-top:1px solid var(--color-border);padding:var(--space-2) 0}.sync-status-toggle{width:100%;padding:var(--space-1) 0;color:var(--color-text-secondary);cursor:pointer;background:0 0;border:none;justify-content:space-between;align-items:center;font-size:12px;line-height:1.5;display:flex}.sync-status-chevron{margin-left:var(--space-2);font-size:10px}.sync-status-detail{padding:var(--space-1) 0 0 var(--space-3)}.sync-status-row{color:var(--color-text-secondary);padding:var(--space-1) 0;justify-content:space-between;font-size:12px;display:flex}.sync-status-store-name{font-weight:var(--font-weight-semibold)}.dialog-base{border:1px solid var(--color-border);border-radius:var(--radius-card);max-width:480px;width:calc(100% - var(--space-8));background:var(--color-bg);color:var(--color-text-primary);font-family:var(--font-family);font-size:var(--font-size-body);margin:auto;padding:0}.dialog-base::backdrop{background:var(--color-backdrop)}.dialog-header{padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;display:flex}.dialog-header h2{font-size:var(--font-size-section);margin:0}.dialog-close{color:var(--color-text-secondary);cursor:pointer;padding:var(--space-1);background:0 0;border:none;font-size:20px;line-height:1}.dialog-close:hover{color:var(--color-text-primary)}.dialog-body{padding:var(--space-5)}.dialog-body .form-group{margin-bottom:var(--space-4)}.dialog-body .form-group label{font-weight:var(--font-weight-semibold);margin-bottom:var(--space-1);font-size:var(--font-size-body);display:block}.dialog-body .form-group input[type=password],.dialog-body .form-group input[type=text],.dialog-body .form-group textarea{width:100%;padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-input);font-size:var(--font-size-body);font-family:var(--font-family);background:var(--color-bg);color:var(--color-text-primary)}.dialog-body .form-group input[type=password]:focus,.dialog-body .form-group input[type=text]:focus,.dialog-body .form-group textarea:focus{border-color:var(--color-border-focus);outline:none}.passphrase-input-row input[type=password],.passphrase-input-row input[type=text]{background:0 0;border:none;border-radius:0}.passphrase-input-row input[type=password]:focus,.passphrase-input-row input[type=text]:focus{border-color:#0000}.field-hint{color:var(--color-text-secondary);margin-top:var(--space-1);font-size:12px;line-height:1.4}.dialog-body .code-input{resize:vertical;font-family:monospace;font-size:12px}.sync-role-choice{text-align:center}.sync-role-choice>p:first-child{margin-bottom:var(--space-4);line-height:1.5}.sync-role-buttons{gap:var(--space-3);margin-bottom:var(--space-3);justify-content:center;display:flex}.qr-code-display{text-align:center;margin:var(--space-3) 0}.qr-svg-container{width:100%;max-width:240px;margin-bottom:var(--space-3);display:inline-block}.qr-svg-container img{width:100%;height:auto}.qr-actions{margin-top:var(--space-2)}.connection-status{color:var(--color-text-secondary);margin-top:var(--space-3);font-size:12px}.sync-success{text-align:center;padding:var(--space-4) 0}.sync-success>p:first-child{font-weight:var(--font-weight-semibold);color:var(--color-positive)}.sync-error{text-align:center;padding:var(--space-4) 0}.sync-error>p:first-child{color:var(--color-danger);margin-bottom:var(--space-4)}.sync-offer-show hr{border:none;border-top:1px solid var(--color-border);margin:var(--space-4) 0}.sync-offer-show>p,.sync-accept-setup>p,.sync-answer-show>p,.sync-accepting>p,.sync-server-offer>p,.sync-server-join>p,.sync-server-accepting>p{margin-bottom:var(--space-3)}.sync-server-offer{text-align:center}.pin-row{justify-content:center;align-items:center;gap:var(--space-2);margin:var(--space-5) auto;display:flex}.pin-display{text-align:center;padding:var(--space-3) var(--space-4);font-size:var(--font-size-section);font-weight:var(--font-weight-semibold);border:1px solid var(--color-border);border-radius:var(--radius-input);background:var(--color-bg);color:var(--color-text-primary);word-break:break-word;min-width:0;display:block}.pin-copy-btn{color:var(--color-text-secondary);cursor:pointer;border-radius:var(--radius-input);width:32px;height:32px;transition:color var(--transition-fast);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;line-height:1;display:inline-flex}.pin-copy-btn:hover{color:var(--color-accent)}.pin-copy-btn:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.sync-server-join{text-align:center}.pin-input{text-align:center;font-size:var(--font-size-section);padding:var(--space-3);width:100%;max-width:360px;margin:0 auto}.server-state-indicator{text-align:center;margin-top:var(--space-3)}.sync-server-accepting{text-align:center;padding:var(--space-4) 0}.passphrase-input-row{border:1px solid var(--color-border);border-radius:var(--radius-input);background:var(--color-bg);align-items:center;display:flex}.passphrase-input-row:focus-within{border-color:var(--color-border-focus)}.passphrase-input-row input{min-width:0;padding:var(--space-2) var(--space-3);font-size:var(--font-size-body);font-family:var(--font-family);color:var(--color-text-primary);background:0 0;border:none;outline:none;flex:1}.passphrase-toggle{margin:var(--space-3) 0}.passphrase-toggle .form-group{margin-top:var(--space-3)}.toggle-label{align-items:center;gap:var(--space-2);cursor:pointer;font-size:var(--font-size-body);color:var(--color-text-primary);display:flex}.toggle-label input[type=checkbox]{width:16px;height:16px;accent-color:var(--color-accent)}.sas-verification{margin:var(--space-3) 0;text-align:center}.sas-code{font-size:var(--font-size-headline);font-weight:var(--font-weight-semibold);font-variant-numeric:tabular-nums;letter-spacing:2px;color:var(--color-text-primary);margin-bottom:var(--space-2)}.join-page{max-width:480px;padding:var(--space-6) var(--space-4);margin:0 auto}.join-page h2{font-size:var(--font-size-section);font-weight:var(--font-weight-semibold);margin-bottom:var(--space-4)}.connectivity-banner{background:var(--color-warning-bg);border:1px solid var(--color-warning-border);border-radius:var(--radius-card);padding:var(--space-2) var(--space-3);margin-bottom:var(--space-4);font-size:var(--font-size-body);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);text-align:center}.bonds-hedged-reclassify-banner{background:var(--color-bg-results);border:1px solid var(--color-border);border-radius:var(--radius-card);padding:var(--space-3);margin-top:var(--space-4);margin-bottom:var(--space-4);font-size:var(--font-size-body);color:var(--color-text-primary);gap:var(--space-3);flex-direction:column;display:flex}.bonds-hedged-reclassify-banner-heading{font-size:var(--font-size-body);font-weight:var(--font-weight-semibold);margin:0}.bonds-hedged-reclassify-banner-text{margin:0;line-height:1.5}.bonds-hedged-reclassify-banner-actions{gap:var(--space-2);flex-wrap:wrap;display:flex}.bonds-hedged-reclassify-banner-details{padding-left:var(--space-4);font-size:var(--font-size-body);color:var(--color-text-secondary,var(--color-text-primary));margin:0}.bonds-hedged-reclassify-banner-details li{margin-bottom:var(--space-1)}.bonds-hedged-reclassify-banner-disclosure{font-size:var(--font-size-body);color:var(--color-accent,var(--color-text-primary));cursor:pointer;text-align:left;background:0 0;border:none;padding:0;text-decoration:underline}.generating-indicator{text-align:center;padding:var(--space-4) 0}.generating-indicator p{margin-bottom:var(--space-2)}.app-footer{border-top:1px solid var(--color-border);padding:var(--space-4) 0}.app-footer p{color:var(--color-text-secondary);margin:0;font-size:12px;line-height:1.5}.section-header{font-size:var(--font-size-section);font-weight:var(--font-weight-semibold);margin:0 0 var(--space-3)}.portfolio-total{font-weight:var(--font-weight-regular);color:var(--color-text-secondary)}.input-row{gap:var(--space-1);margin-bottom:var(--space-3);flex-direction:column;display:flex}.input-row label{font-size:var(--font-size-body);color:var(--color-text-primary);align-items:center;gap:var(--space-1);display:flex}input[type=text],input[type=number],input[type=search],select{padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-input);font-size:var(--font-size-body);color:var(--color-text-primary);background:var(--color-surface);transition:border-color var(--transition-fast);min-height:36px}input[type=text]:focus,input[type=number]:focus,input[type=search]:focus,select:focus{border-color:var(--color-border-focus);outline:none}.text-input-container{min-width:0;container-type:inline-size}.text-input-container>input{appearance:none;width:100%}.text-input-container>input::-webkit-search-cancel-button{appearance:none;display:none}.text-input-container>input::-webkit-search-decoration{appearance:none;display:none}.text-input-container>input::-webkit-search-results-button{appearance:none;display:none}.text-input-container>input::-webkit-search-results-decoration{appearance:none;display:none}.text-input-container>input::placeholder{font-size:clamp(10px, 11cqi, var(--font-size-body))}.input-with-prefix,.input-with-suffix{align-items:center;display:flex}.input-prefix,.input-suffix{padding:var(--space-2) var(--space-2);color:var(--color-text-secondary);font-size:var(--font-size-body)}.input-with-prefix input,.input-with-suffix input{flex:1;min-width:0}.account-group{border:1px solid var(--color-border);border-radius:var(--radius-card);overflow:hidden}.account-header{align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-3);cursor:pointer;-webkit-user-select:none;user-select:none;background:var(--color-bg-results);grid-template-columns:auto 1fr auto auto auto;display:grid;position:relative}.account-header:before{content:"";background:var(--color-accent-medium);border-radius:var(--radius-card) 0 0 0;width:3px;position:absolute;top:0;bottom:0;left:0}.account-collapse-toggle{color:var(--color-text-secondary);cursor:pointer;background:0 0;border:none;grid-column:1;width:20px;padding:0;font-size:16px}.account-header-name{align-items:center;gap:var(--space-1);grid-column:2;min-width:0;display:flex}.account-name{flex:1;min-width:0}.account-name>input{font-weight:var(--font-weight-semibold);padding:var(--space-1) var(--space-2);text-overflow:ellipsis;white-space:nowrap;background:0 0;border:none;overflow:hidden}.account-name>input:focus{background:var(--color-surface);border:1px solid var(--color-border-focus);border-radius:var(--radius-input);outline:none}.account-type{grid-column:3;max-width:160px}.account-total{color:var(--color-text-secondary);font-size:var(--font-size-body);white-space:nowrap;grid-column:4}.account-remove{color:var(--color-text-secondary);padding:0 var(--space-1);cursor:pointer;background:0 0;border:none;grid-column:5;font-size:18px;line-height:1}.account-remove:hover{color:var(--color-danger)}.inherited-ira-settings{padding:var(--space-2) var(--space-3);border-top:1px solid var(--color-border);background:var(--color-bg-results);gap:var(--space-2);flex-direction:column;display:flex}.inherited-ira-row{align-items:flex-end;gap:var(--space-4);flex-wrap:wrap;display:flex}.inherited-field-label{gap:var(--space-1);font-size:var(--font-size-body);color:var(--color-text-primary);flex-direction:column;display:flex}.inherited-year-input,.inherited-numeric-input{width:80px}.inherited-beneficiary-select{font-size:var(--font-size-body);padding:var(--space-1) var(--space-2);border:1px solid var(--color-border);background:var(--color-bg);color:var(--color-text-primary);border-radius:4px}.inherited-hint{color:var(--color-text-secondary);font-size:12px;line-height:1.4}.inherited-hint-spouse{font-style:italic}.source-allocation-settings{padding:var(--space-2) var(--space-3);border-top:1px solid var(--color-border);background:var(--color-bg-results)}.source-allocation-hint{margin:0 0 var(--space-2) 0;color:var(--color-text-secondary);font-size:12px;line-height:1.4}.source-allocation-fields{gap:var(--space-3);flex-wrap:wrap;display:flex}.source-allocation-label{align-items:center;gap:var(--space-1);color:var(--color-text-primary);font-size:14px;display:flex}.source-allocation-input{width:60px}.source-allocation-unit{color:var(--color-text-secondary);font-size:14px}.source-allocation-total{margin-top:var(--space-1);color:var(--color-text-secondary);font-size:12px;display:block}.source-allocation-total--invalid{color:var(--color-danger)}.account-holdings{padding:var(--space-2) var(--space-3) var(--space-3);row-gap:var(--space-2);column-gap:var(--space-2);border-top:1px solid var(--color-border);grid-template-columns:130px minmax(110px,180px) auto 1fr auto;display:grid}.holding-row{grid-template-columns:subgrid;grid-column:1/-1;align-items:start;display:grid}.holding-ticker>input{text-transform:uppercase}.holding-ticker>input::placeholder{text-transform:none}.holding-amount{gap:var(--space-1);flex-direction:column;min-width:0;display:flex}.holding-value,.holding-shares{font-variant-numeric:tabular-nums;width:100%;min-width:0}.holding-amount-secondary{align-items:center;gap:var(--space-1);min-height:16px;display:flex}.holding-resolved-value{color:var(--color-text-secondary);white-space:nowrap;font-size:11px}.holding-price-status{font-size:11px;font-weight:var(--font-weight-semibold)}.holding-price-status.loading{color:var(--color-text-secondary)}.holding-price-status.error{color:var(--color-danger)}.holding-api-hint{color:var(--color-text-secondary);white-space:nowrap;font-size:10px;font-style:italic}.holding-mode-toggle{border:1px solid var(--color-border);border-radius:var(--radius-card);color:var(--color-text-secondary);font-size:12px;font-weight:var(--font-weight-semibold);cursor:pointer;background:0 0;justify-content:center;align-items:center;width:22px;height:22px;padding:0;transition:border-color .15s,color .15s;display:flex}.holding-mode-toggle:hover{border-color:var(--color-accent);color:var(--color-accent)}.holding-asset-class{grid-column:4;min-width:0}.holding-asset-class.loading{opacity:.6}.holding-remove{color:var(--color-text-secondary);padding:0 var(--space-1);cursor:pointer;background:0 0;border:none;grid-column:5;font-size:16px;line-height:1}.holding-remove:hover{color:var(--color-danger)}.add-holding-btn{grid-column:1/-1}.sim-count-selector{align-items:center;gap:var(--space-2);margin-bottom:var(--space-3);display:flex}.sim-count-label{color:var(--color-text-secondary);font-size:var(--font-size-body)}.sim-count-option{padding:var(--space-1) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-input);background:var(--color-surface);color:var(--color-text-primary);cursor:pointer;font-size:var(--font-size-body);transition:all var(--transition-fast)}.sim-count-option.active{background:var(--color-accent);color:var(--color-on-accent);border-color:var(--color-accent)}.sim-count-option:hover:not(.active):not(:disabled){border-color:var(--color-accent)}.sim-running{gap:var(--space-2);flex-direction:column;display:flex}.btn{font-family:inherit;font-weight:var(--font-weight-semibold);cursor:pointer;border-radius:var(--radius-input);transition:background var(--transition-fast), color var(--transition-fast), border-color var(--transition-fast)}.btn:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.btn--primary{padding:var(--space-3) var(--space-4);background:var(--color-accent);color:var(--color-on-accent);font-size:var(--font-size-body);border:none}.btn--primary:hover:not(:disabled):not([aria-disabled=true]){background:var(--color-accent-hover)}.btn--primary:disabled,.btn--primary[aria-disabled=true]{background:var(--color-border);color:var(--color-text-primary);cursor:not-allowed;opacity:.7}.btn--secondary{padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);color:var(--color-text-secondary);font-size:var(--font-size-body);background:0 0}.btn--secondary:hover:not(:disabled):not([aria-disabled=true]){border-color:var(--color-accent);color:var(--color-text-primary)}.btn--secondary:disabled,.btn--secondary[aria-disabled=true]{cursor:not-allowed;opacity:.5}.btn--link{color:var(--color-accent);font-size:var(--font-size-body);font-weight:var(--font-weight-regular);background:0 0;border:none;padding:0;-webkit-text-decoration:underline #0000;text-decoration:underline #0000}.btn--link:hover:not(:disabled):not([aria-disabled=true]){-webkit-text-decoration-color:var(--color-accent);text-decoration-color:var(--color-accent)}.btn--link:disabled,.btn--link[aria-disabled=true]{cursor:not-allowed;opacity:.5}.btn--add{border:1px dashed var(--color-border);color:var(--color-accent);padding:var(--space-2) var(--space-3);font-size:var(--font-size-body);background:0 0}.btn--add:hover:not(:disabled):not([aria-disabled=true]){border-color:var(--color-accent);background:var(--color-accent-light)}.btn--add:disabled,.btn--add[aria-disabled=true]{cursor:not-allowed;opacity:.5}.btn--sm{padding:var(--space-1) var(--space-2);font-size:12px}.btn--sm.btn--primary{padding:var(--space-1) var(--space-3)}.btn--sm.btn--secondary,.btn--sm.btn--add{padding:var(--space-1) var(--space-2)}.btn--sm.btn--link{padding:var(--space-2);font-weight:var(--font-weight-semibold)}.btn--full-width{width:100%}.sim-timing{color:var(--color-text-secondary);margin-top:var(--space-1);font-size:12px}.sim-error{margin-top:var(--space-2);padding:var(--space-1) var(--space-3);border-left:2px solid var(--color-danger);color:var(--color-text-primary);font-size:var(--font-size-body)}.sim-error--validation{padding:var(--space-2) var(--space-3);background:var(--color-bg-results)}.sim-error-header{margin:0 0 var(--space-1) 0;font-weight:var(--font-weight-semibold)}.sim-error-list{padding-left:var(--space-3);margin:0;list-style:outside}.sim-error-item{margin-top:var(--space-1);line-height:1.4}.sim-error-item:first-child{margin-top:0}.progress-bar{background:var(--color-border);border-radius:3px;width:100%;height:6px;overflow:hidden}.progress-bar-fill{background:var(--color-accent);border-radius:3px;height:100%;transition:width .2s}.refresh-holdings-progress{gap:var(--space-1);max-width:320px;margin:0 0 var(--space-3);flex-direction:column;display:flex}.refresh-holdings-progress-label{font-size:var(--font-size-body);color:var(--color-text-secondary)}.info-tooltip-wrapper{align-items:center;display:inline-flex;position:relative}.info-tooltip-trigger{color:var(--color-text-secondary);cursor:pointer;background:0 0;border:none;padding:0;font-size:14px;line-height:1}.info-tooltip-content{background:var(--color-tooltip-bg);color:var(--color-tooltip-text);padding:var(--space-2) var(--space-3);border-radius:var(--radius-card);width:max-content;max-width:280px;z-index:var(--z-tooltip);pointer-events:none;font-size:12px;line-height:1.4;position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%)}.survival-summary{text-align:center;padding:var(--space-4) 0 var(--space-6)}.survival-rate{font-size:var(--font-size-headline);font-weight:var(--font-weight-semibold);display:block}.survival-description{font-size:var(--font-size-body);color:var(--color-text-secondary);margin-top:var(--space-1)}.survival-positive .survival-rate{color:var(--color-positive)}.survival-caution .survival-rate{color:var(--color-caution)}.survival-danger .survival-rate{color:var(--color-danger)}.fan-chart-container{margin:var(--space-4) 0}.fan-chart-header,.results-table-header{margin-bottom:var(--space-2);justify-content:space-between;align-items:center;display:flex}.fan-chart-header h3,.results-table-header h3{font-size:var(--font-size-body);font-weight:var(--font-weight-semibold);margin:0}.dollar-mode-toggle{border:1px solid var(--color-border);border-radius:var(--radius-input);display:flex;overflow:hidden}.dollar-mode-btn{padding:var(--space-1) var(--space-2);background:var(--color-surface);color:var(--color-text-secondary);cursor:pointer;transition:background var(--transition-fast), color var(--transition-fast);border:none;font-size:12px}.dollar-mode-btn:not(:last-child){border-right:1px solid var(--color-border)}.dollar-mode-btn.active{background:var(--color-accent-light);color:var(--color-accent)}.theme-toggle{border:1px solid var(--color-border);border-radius:var(--radius-input);margin-top:var(--space-1);flex-shrink:0;display:flex;overflow:hidden}.theme-toggle-btn{padding:var(--space-1) var(--space-2);background:var(--color-surface);color:var(--color-text-secondary);cursor:pointer;transition:background var(--transition-fast), color var(--transition-fast);border:none;font-size:12px}.theme-toggle-btn:not(:last-child){border-right:1px solid var(--color-border)}.theme-toggle-btn:focus-visible{outline:2px solid var(--color-border-focus);outline-offset:-2px}.theme-toggle-btn.active{background:var(--color-accent-light);color:var(--color-accent)}.fan-chart-legend{gap:var(--space-4);color:var(--color-text-secondary);margin-bottom:var(--space-2);font-size:12px;display:flex}.legend-item{align-items:center;gap:var(--space-1);display:flex}.legend-swatch{border-radius:2px;width:12px;height:12px;display:inline-block}.legend-outer{background:var(--color-accent-light)}.legend-inner{background:var(--color-accent-medium)}.legend-line{background:var(--color-accent);width:12px;height:2px;display:inline-block}.crosshair-line{opacity:.5}.crosshair-dot{filter:drop-shadow(0 1px 2px var(--color-crosshair-shadow))}.chart-tooltip-container{opacity:1;transition:opacity .18s ease-in-out;overflow:visible}.chart-tooltip{background:var(--color-tooltip-bg);color:var(--color-tooltip-text);padding:var(--space-1) var(--space-2);font-size:12px;font-weight:var(--font-weight-semibold);white-space:nowrap;border-radius:4px;line-height:1.4;display:inline-block}.chart-tooltip-label{opacity:.75}.chart-tooltip-value{font-variant-numeric:tabular-nums}.chart-tooltip-year{opacity:.6;font-weight:400}.results-table-scroll{overflow-x:auto}.results-table{border-collapse:collapse;width:100%;font-size:var(--font-size-body)}.results-table th{text-align:right;padding:var(--space-2) var(--space-3);border-bottom:2px solid var(--color-border);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);white-space:nowrap;font-size:12px}.results-table th:first-child{text-align:left}.results-table td{text-align:right;padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--color-border)}.results-table td:first-child{text-align:left;font-weight:var(--font-weight-semibold)}.results-dashboard{gap:var(--space-4);flex-direction:column;transition:opacity .3s;display:flex;position:relative}.results-stale{opacity:.55}.stale-banner{z-index:var(--z-sticky);background:var(--color-warning-bg);color:var(--color-caution);padding:var(--space-2) var(--space-3);border:1px solid var(--color-warning-border);border-radius:var(--radius-card);font-size:var(--font-size-body);font-weight:var(--font-weight-semibold);text-align:center;position:sticky;top:0}.error-boundary-fallback{padding:var(--space-6);text-align:center;color:var(--color-text-secondary)}.error-boundary-detail{color:var(--color-danger);margin:var(--space-2) 0;font-size:12px}.error-boundary-fallback button{margin-top:var(--space-3);padding:var(--space-2) var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-input);background:var(--color-surface);cursor:pointer}.owner-advanced-toggle{color:var(--color-text-secondary);cursor:pointer;padding:var(--space-1) 0;align-items:center;gap:var(--space-1);background:0 0;border:none;font-size:12px;display:flex}.owner-advanced-toggle:hover{color:var(--color-text-primary)}.owner-advanced-toggle-icon{font-size:10px}.api-key-settings{border-top:1px solid var(--color-border);padding-top:var(--space-3)}.api-key-toggle{color:var(--color-text-secondary);cursor:pointer;padding:var(--space-1) 0;align-items:center;gap:var(--space-1);background:0 0;border:none;font-size:12px;display:flex}.api-key-toggle:hover{color:var(--color-text-primary)}.api-key-toggle-icon{font-size:10px}.api-key-badge{background:var(--color-positive);color:var(--color-on-accent);margin-left:var(--space-1);border-radius:8px;padding:1px 6px;font-size:10px}.api-key-panel{padding:var(--space-2) 0}.api-key-description{color:var(--color-text-secondary);margin:0 0 var(--space-2);font-size:12px;line-height:1.4}.api-key-description a{color:var(--color-accent)}.api-key-input-row{gap:var(--space-2);align-items:center;display:flex}.api-key-input{flex:1;font-size:12px}.api-key-clear:hover:not(:disabled):not([aria-disabled=true]){border-color:var(--color-danger);color:var(--color-danger)}.api-key-refresh-section{margin-top:var(--space-3);gap:var(--space-2);flex-direction:column;display:flex}.api-key-refresh-toggle{align-items:center;gap:var(--space-2);color:var(--color-text-primary);cursor:pointer;font-size:12px;display:flex}.api-key-refresh-toggle input[type=checkbox]{accent-color:var(--color-accent)}.api-key-refresh-disclosure{color:var(--color-text-secondary);margin:0;font-size:12px;line-height:1.4}.api-key-refresh-action{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.api-key-refresh-status{color:var(--color-text-secondary);font-size:12px}.staleness-indicator{color:var(--color-text-secondary);cursor:help;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;font-size:11px;line-height:1;display:inline-flex}.account-header-name .staleness-indicator{min-width:24px;min-height:24px;padding:var(--space-1);font-size:var(--font-size-body)}.staleness-indicator:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px;border-radius:var(--radius-input)}.encryption-settings{border-top:1px solid var(--color-border);padding-top:var(--space-3)}.encryption-toggle{color:var(--color-text-secondary);cursor:pointer;padding:var(--space-1) 0;align-items:center;gap:var(--space-1);background:0 0;border:none;font-size:12px;display:flex}.encryption-toggle:hover{color:var(--color-text-primary)}.encryption-toggle-icon{font-size:10px}.encryption-badge{background:var(--color-accent);color:var(--color-on-accent);margin-left:var(--space-1);border-radius:8px;padding:1px 6px;font-size:10px}.encryption-panel{padding:var(--space-2) 0}.encryption-description{color:var(--color-text-secondary);margin:0 0 var(--space-2);font-size:12px;line-height:1.4}.encryption-warning{color:var(--color-text-secondary);font-size:12px;font-weight:var(--font-weight-semibold);margin:0 0 var(--space-2);line-height:1.4}.encryption-form{gap:var(--space-2);flex-direction:column;display:flex}.encryption-input{max-width:300px;font-size:12px}.encryption-error{color:var(--color-text-secondary);font-size:12px;font-weight:var(--font-weight-semibold);margin:0}.encryption-buttons{gap:var(--space-2);display:flex}.unlock-screen{max-width:400px;margin:var(--space-8) auto;text-align:center}.unlock-title{font-size:var(--font-size-section);font-weight:var(--font-weight-semibold);margin:0 0 var(--space-2)}.unlock-description{font-size:var(--font-size-body);color:var(--color-text-secondary);margin:0 0 var(--space-4)}.unlock-form{gap:var(--space-3);flex-direction:column;align-items:center;display:flex}.unlock-input{width:100%;max-width:300px;font-size:var(--font-size-body);text-align:center}.unlock-error{color:var(--color-text-secondary);font-size:12px;font-weight:var(--font-weight-semibold);margin:0}.unlock-button{padding:var(--space-2) var(--space-6)}.import-export-buttons{gap:var(--space-2);border-top:1px solid var(--color-border);padding-top:var(--space-3);display:flex}.portfolio-empty-state{gap:var(--space-2);margin-bottom:var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--radius-input);background:var(--color-surface);box-shadow:var(--border-accent-left);flex-direction:column;display:flex}.portfolio-empty-state-text{color:var(--color-text-secondary);font-size:var(--font-size-body);margin:0}.portfolio-empty-state-cta{align-self:flex-start}.import-export-btn{flex:1}@media (width<=768px){.import-export-buttons{grid-template-columns:1fr 1fr;grid-template-areas:"save restore""bank bank";display:grid}.import-export-buttons--two-up{grid-template-areas:"save restore"}.import-export-buttons>.import-export-btn--save{grid-area:save}.import-export-buttons>.import-export-btn--restore{grid-area:restore}.import-export-buttons>.import-export-btn--bank{grid-area:bank}.import-export-buttons>dialog{grid-area:3/1/auto/-1}}.dialog-content{padding:var(--space-6);gap:var(--space-4);flex-direction:column;display:flex}.dialog-title{font-size:var(--font-size-section);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);margin:0}.dialog-body{font-size:var(--font-size-body);color:var(--color-text-secondary);margin:0;line-height:1.5}.dialog-hint{font-size:var(--font-size-body);color:var(--color-text-secondary);margin:0;font-style:italic}.dialog-field-error{color:var(--color-danger);margin-top:2px;font-size:12px}.dialog-error{font-size:var(--font-size-body);color:var(--color-danger);margin:0}.dialog-checkbox-label{align-items:center;gap:var(--space-2);font-size:var(--font-size-body);cursor:pointer;display:flex}.dialog-overwrite-warning{background:var(--color-warning-bg);color:var(--color-caution);border:1px solid var(--color-warning-border);border-radius:var(--radius-card);padding:var(--space-2) var(--space-3);font-size:var(--font-size-body);font-weight:var(--font-weight-semibold)}.dialog-actions{gap:var(--space-2);margin-top:var(--space-2);flex-direction:column;display:flex}.dialog-actions>.btn--secondary{align-self:flex-end}.confirm-dialog .dialog-actions{justify-content:flex-end;gap:var(--space-2);flex-direction:row}.confirm-dialog .dialog-actions>.btn{flex:1 1 0;align-self:auto}.confirm-dialog-body{font-size:var(--font-size-body);color:var(--color-text-secondary);margin:0;line-height:1.5}@media (width<=768px){.confirm-dialog .dialog-actions>.btn,.staleness-indicator{min-width:44px;min-height:44px}}.dialog-file-input{font-size:var(--font-size-body);color:var(--color-text-primary)}.import-preview-headline{align-items:baseline;gap:var(--space-3);display:flex}.import-preview-total{font-size:var(--font-size-section);font-weight:var(--font-weight-semibold);color:var(--color-text-primary)}.import-preview-count{font-size:var(--font-size-body);color:var(--color-text-secondary)}.import-preview-table th,.import-preview-table td{padding:var(--space-1) var(--space-2)}.import-preview-settings{gap:var(--space-1);flex-direction:column;margin:0;display:flex}.import-preview-setting{font-size:var(--font-size-body);justify-content:space-between;display:flex}.import-preview-setting dt{color:var(--color-text-secondary)}.import-preview-setting dd{color:var(--color-text-primary);font-weight:var(--font-weight-semibold);margin:0}@media (width<=768px){.app-tab{text-align:center;flex:1}.simulation-page{grid-template-columns:1fr}.account-header{gap:var(--space-1) var(--space-2);grid-template-rows:auto auto;grid-template-columns:auto 1fr auto;align-items:center;display:grid}.account-collapse-toggle{grid-area:1/1;justify-content:center;align-items:center;width:auto;min-width:44px;min-height:44px;font-size:18px;display:flex}.account-header-name{grid-area:1/2}.account-remove{grid-area:1/3;justify-content:center;justify-self:end;align-items:center;min-width:44px;min-height:44px;display:flex}.account-type{grid-area:2/1/auto/3;max-width:none}.account-total{text-align:right;grid-area:2/3;justify-self:end;font-size:12px}.account-holdings{column-gap:var(--space-2);row-gap:var(--space-1);grid-template-columns:minmax(80px,max-content) minmax(0,1fr) auto auto}.holding-asset-class{grid-column:1/-1}.holding-mode-toggle{min-width:44px;min-height:44px}.holding-remove{grid-area:1/4;justify-content:center;align-items:center;min-width:44px;min-height:44px;display:flex}.results-table-scroll{background-image:linear-gradient(to right, transparent, var(--color-bg-results));background-position:100% 0;background-repeat:no-repeat;background-size:var(--space-8) 100%}input[type=text],input[type=number],input[type=search],input[type=password],input[type=date],select,textarea{font-size:16px}input[type=text],input[type=number],input[type=search],input[type=password],input[type=date],select,.btn--primary,.btn--secondary,.btn--add,.btn--sm.btn--primary,.btn--sm.btn--secondary,.btn--sm.btn--add{min-height:44px}.btn--sm.btn--link{justify-content:center;align-items:center;min-width:44px;min-height:44px;display:inline-flex}.theme-toggle-btn{min-width:44px;min-height:44px}.btn--link{padding:var(--space-2);align-items:center;min-height:44px;display:inline-flex}.toggle-label{min-height:44px;padding-top:var(--space-2);padding-bottom:var(--space-2)}.pin-copy-btn{min-width:44px;min-height:44px}}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.bank-import-dialog-header{justify-content:space-between;align-items:flex-start;gap:var(--space-2);display:flex}.bank-import-dialog-header .dialog-title{flex:1;margin:0}.bank-import-actions{flex-direction:column-reverse}.bank-import-preview .bank-import-actions{z-index:var(--z-sticky);padding-top:var(--space-2);background:var(--color-bg);border-top:1px solid var(--color-border);margin-top:0;position:sticky;bottom:0}.bank-import-preview{flex-direction:column;max-height:75vh;scroll-padding-bottom:8rem;display:flex;overflow-y:auto}.bank-import-preview-headline{justify-content:space-between;align-items:baseline;gap:var(--space-2);padding:var(--space-2) 0;border-bottom:1px solid var(--color-border);flex-wrap:wrap;display:flex}.bank-import-preview-headline-total{font-size:var(--font-size-section);font-weight:var(--font-weight-semibold);font-variant-numeric:tabular-nums}.bank-import-preview-headline-meta{color:var(--color-text-secondary);font-variant-numeric:tabular-nums}.bank-import-blocker{color:var(--color-text-secondary);font-size:var(--font-size-body);margin:var(--space-2) 0 0 0}.bank-import-skip-link{width:1px;height:1px;position:absolute;top:auto;left:-10000px;overflow:hidden}.bank-import-skip-link:focus,.bank-import-skip-link:focus-visible{width:auto;height:auto;padding:var(--space-1) var(--space-2);margin:var(--space-2) 0;color:var(--color-accent);font-size:var(--font-size-body);outline:2px solid var(--color-accent);outline-offset:2px;text-decoration:underline;display:inline-block;position:static}.bank-import-bulk{align-items:center;gap:var(--space-2);padding:var(--space-3) 0;border-top:1px solid var(--color-border);margin-top:var(--space-3);flex-wrap:wrap;display:flex}.bank-import-bulk-label{font-size:var(--font-size-body);font-weight:var(--font-weight-semibold);flex-basis:100%}.bank-import-bulk-hint{font-size:var(--font-size-body);color:var(--color-text-secondary);flex-basis:100%;margin:0}.bank-import-bulk--resolved{justify-content:flex-end}.bank-import-resolved-counter{font-size:var(--font-size-body);color:var(--color-text-secondary);font-variant-numeric:tabular-nums;margin-left:auto}.bank-import-card-meta-unresolved{color:var(--color-accent);font-weight:var(--font-weight-semibold)}.bank-import-cards{gap:var(--space-2);flex-direction:column;display:flex}.bank-import-card{border:1px solid var(--color-border);border-radius:var(--radius-card);background:var(--color-surface)}.bank-import-card--needs-attention{background:var(--color-warning-bg);border-color:var(--color-warning-border);color:var(--color-text-primary)}.bank-import-card-summary{justify-content:space-between;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);cursor:pointer;font-size:var(--font-size-body);display:flex}.bank-import-card-summary::-webkit-details-marker{display:none}.bank-import-card-summary:before{content:"▸";width:16px;color:var(--color-text-secondary);font-size:var(--font-size-body);flex-shrink:0;display:inline-block}.bank-import-card[open]>.bank-import-card-summary:before{content:"▾"}.bank-import-card-summary:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.bank-import-card-name{font-weight:var(--font-weight-semibold)}.bank-import-card-meta{color:var(--color-text-secondary);font-variant-numeric:tabular-nums}.bank-import-card-body{padding:0 var(--space-3) var(--space-3) var(--space-3);gap:var(--space-3);flex-direction:column;display:flex}.bank-import-include-label{align-items:center;gap:var(--space-2);font-size:var(--font-size-body);display:flex}.bank-import-field-row{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.bank-import-field-label{font-size:var(--font-size-body);font-weight:var(--font-weight-semibold)}.bank-import-confirm-btn{padding:var(--space-2) var(--space-3);flex-shrink:0}.bank-import-confirmed-marker{font-size:var(--font-size-body);color:var(--color-text-secondary)}.bank-import-confirm-hint{padding:var(--space-2) 0 0 0;color:var(--color-text-secondary);font-size:var(--font-size-body);margin:0}.bank-import-snapshot-field{gap:var(--space-2);flex-direction:column;display:flex}.bank-import-snapshot-input{padding:var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-input);background:var(--color-surface);color:var(--color-text-primary);font-size:var(--font-size-body);max-width:200px}.bank-import-snapshot-input:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.bank-import-context-hint{padding:var(--space-2);border-radius:var(--radius-input);background:var(--color-surface);color:var(--color-text-primary);font-size:var(--font-size-body);box-shadow:var(--border-accent-left);margin:0}.bank-import-reimport-banner{padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-card);background:var(--color-surface);color:var(--color-text-primary);font-size:var(--font-size-body)}.bank-import-reimport-banner+.bank-import-reimport-banner{margin-top:var(--space-2)}.bank-import-duplicate-banner{padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-input);background:var(--color-surface);box-shadow:var(--border-accent-left)}.bank-import-duplicate-banner-text{margin:0 0 var(--space-2) 0;font-size:var(--font-size-body)}.bank-import-duplicate-options{gap:var(--space-2);flex-direction:column;display:flex}.bank-import-duplicate-option{align-items:flex-start;gap:var(--space-2);font-size:var(--font-size-body);cursor:pointer;display:flex}.bank-import-duplicate-option-recommended{color:var(--color-text-secondary);font-weight:var(--font-weight-normal)}.bank-import-duplicate-option-helper{color:var(--color-text-secondary);font-size:var(--font-size-body)}.bank-import-finnhub-opt-in{padding:var(--space-2) 0;border-bottom:1px solid var(--color-border)}.bank-import-finnhub-label{align-items:flex-start;gap:var(--space-2);font-size:var(--font-size-body);cursor:pointer;display:flex}.bank-import-finnhub-status{margin:var(--space-1) 0 var(--space-1) 0;padding-left:calc(var(--space-2) + 16px);color:var(--color-text-secondary);font-size:var(--font-size-body)}.bank-import-finnhub-error{color:var(--color-text-primary)}.bank-import-holding-unresolved{box-shadow:var(--border-accent-left)}.bank-import-holdings{width:100%}.bank-import-holdings th,.bank-import-holdings td{padding:var(--space-2);font-size:var(--font-size-body)}.bank-import-holdings select{width:100%;min-width:0}@media (width<=768px){.bank-import-holdings,.bank-import-holdings thead,.bank-import-holdings tbody,.bank-import-holdings tr,.bank-import-holdings td,.bank-import-holdings th{display:block}.bank-import-holdings thead{display:none}.bank-import-holdings tr{gap:var(--space-2);padding:var(--space-2) 0;border-bottom:1px solid var(--color-border);grid-template-columns:1fr 1fr;display:grid}.bank-import-holdings td{padding:var(--space-1)}.bank-import-holdings td:before{content:attr(data-label);font-size:var(--font-size-body);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);display:block}.bank-import-holdings td:last-child{grid-column:1/-1}.bank-import-dialog-header .dialog-close{justify-content:center;align-items:center;min-width:44px;min-height:44px;display:inline-flex}.bank-import-card-summary{min-height:44px}.bank-import-holdings td:first-child{min-width:44px;min-height:44px;padding:var(--space-2)}.bank-import-include-label,.bank-import-duplicate-option,.bank-import-finnhub-label{align-items:center;min-height:44px}.bank-import-confirm-btn{min-width:44px;min-height:44px}}@media (prefers-reduced-motion:reduce){.bank-import-preview *,.bank-import-card,.bank-import-card-summary,.progress-bar-fill,.btn{transition:none!important;animation:none!important}}
