:root{--bg:#0f1117;--bg-card:#1a1d27;--bg-card-alt:#1e2130;--border:#2a2e3f;--border-light:#353a50;--text:#e8eaf0;--text-muted:#7a80a0;--text-dim:#4a5070;--accent:#4f8ef7;--accent-glow:#4f8ef726;--gain:#2ecc71;--gain-bg:#2ecc711a;--loss:#e74c3c;--loss-bg:#e74c3c1a;--vanguard:#c41e3a;--fidelity:#007a3d;--schwab:#00a0b0;--radius:10px;--radius-sm:6px;--shadow:0 4px 24px #0006;--shadow-sm:0 2px 8px #0000004d;--font:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif;--font-mono:"SF Mono","Fira Code","Cascadia Code",Consolas,monospace;--s401-ee:#c8f060;--s401-er:#60c8f0;--s401-at:#f0a060;--s401-hsa:#b088f0;--s401-tax:#f06080;--s401-grand:#ffd97a}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;font-size:16px}body{font-family:var(--font);background:var(--bg);color:var(--text);min-height:100vh;line-height:1.5}.site-header{background:var(--bg-card);border-bottom:1px solid var(--border);z-index:100;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding:20px 32px;display:flex;position:sticky;top:0}.site-header h1{letter-spacing:-.02em;color:var(--text);font-size:1.4rem;font-weight:700}.header-sub{color:var(--text-muted);margin-top:2px;font-size:.75rem}.header-right{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.last-updated{color:var(--text-muted);white-space:nowrap;font-size:.75rem}.btn{border-radius:var(--radius-sm);cursor:pointer;white-space:nowrap;border:none;align-items:center;gap:6px;padding:8px 16px;font-size:.85rem;font-weight:600;transition:opacity .15s,transform .1s;display:inline-flex}.btn:hover{opacity:.85}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.4;cursor:not-allowed}.btn-primary{background:var(--accent);color:#fff}.btn-secondary{background:var(--bg-card-alt);color:var(--text);border:1px solid var(--border-light)}.btn-ghost{color:var(--text-muted);border:1px solid var(--border);background:0 0}.btn-ghost:hover{color:var(--text);border-color:var(--border-light);opacity:1}.btn-danger{background:var(--loss);color:#fff}.btn-sm{padding:4px 10px;font-size:.78rem}.btn-icon{border:1px solid var(--border);color:var(--text-muted);background:0 0;padding:4px 8px;font-size:.8rem}.btn-icon:hover{color:var(--text);border-color:var(--border-light);opacity:1}.refresh-icon{display:inline-block}.fetching .refresh-icon{animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.cors-note{color:#ffd54f;text-align:center;background:#ffc1071a;border-bottom:1px solid #ffc10740;padding:10px 32px;font-size:.82rem}.error-banner{background:var(--loss-bg);color:#ff8a80;border-bottom:1px solid #e74c3c4d;justify-content:space-between;align-items:center;padding:10px 32px;font-size:.85rem;display:flex}.error-banner button{color:inherit;cursor:pointer;opacity:.7;background:0 0;border:none;padding:0 4px;font-size:1rem}.error-banner button:hover{opacity:1}.summary-section{padding:24px 32px 0}.summary-cards{grid-template-columns:repeat(4,1fr);gap:16px;display:grid}.summary-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:20px 24px;transition:border-color .2s}.summary-card:hover{border-color:var(--border-light)}.card-label{text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:8px;font-size:.72rem;font-weight:600}.card-value{letter-spacing:-.03em;font-variant-numeric:tabular-nums;font-size:1.65rem;font-weight:700;line-height:1.1}.card-sub{color:var(--text-muted);margin-top:4px;font-size:.75rem}.gain{color:var(--gain)}.loss{color:var(--loss)}.neutral{color:var(--text-muted)}.gain-badge{background:var(--gain-bg);color:var(--gain)}.loss-badge{background:var(--loss-bg);color:var(--loss)}.accounts-section,.projection-section{padding:32px 32px 0}.section-header{margin-bottom:20px}.section-header h2{color:var(--text);letter-spacing:-.01em;font-size:1.1rem;font-weight:700}.section-sub{color:var(--text-muted);margin-top:4px;font-size:.78rem}.accounts-grid{grid-template-columns:repeat(2,1fr);gap:20px;display:grid}.account-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);transition:border-color .2s,box-shadow .2s;overflow:hidden}.account-card:hover{border-color:var(--border-light);box-shadow:var(--shadow-sm)}.account-card-accent{width:100%;height:3px}.account-card-header{justify-content:space-between;align-items:flex-start;gap:12px;padding:18px 20px 12px;display:flex}.account-card-title{flex:1}.account-name{color:var(--text);margin-bottom:4px;font-size:.95rem;font-weight:700;line-height:1.3}.account-meta{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.badge{letter-spacing:.04em;text-transform:uppercase;border-radius:20px;padding:2px 7px;font-size:.68rem;font-weight:700;display:inline-block}.badge-vanguard{color:#e74c3c;background:#c41e3a26}.badge-fidelity{color:#2ecc71;background:#007a3d26}.badge-schwab{color:#1abc9c;background:#00a0b026}.badge-other{color:var(--accent);background:#4f8ef726}.badge-type{background:var(--bg-card-alt);color:var(--text-muted);border:1px solid var(--border)}.badge-placeholder{background:var(--bg-card-alt);color:var(--text-dim)}.account-card-actions{flex-shrink:0;gap:6px;display:flex}.account-total{padding:0 20px 16px}.account-total-value{letter-spacing:-.03em;font-variant-numeric:tabular-nums;font-size:1.5rem;font-weight:700}.account-total-sub{color:var(--text-muted);margin-top:2px;font-size:.75rem}.sub-account-row{background:var(--bg-card-alt);border-top:1px solid var(--border);color:var(--text-muted);justify-content:space-between;align-items:center;padding:6px 20px;font-size:.78rem;display:flex}.sub-account-row .sub-label{align-items:center;gap:6px;display:flex}.sub-tag{color:var(--accent);text-transform:uppercase;letter-spacing:.04em;background:#4f8ef726;border-radius:3px;padding:1px 6px;font-size:.68rem;font-weight:600}.sub-account-value{font-variant-numeric:tabular-nums;color:var(--text);font-weight:600}.holdings-section{border-top:1px solid var(--border)}.holdings-table{border-collapse:collapse;width:100%;font-size:.82rem}.holdings-table th{text-align:left;text-transform:uppercase;letter-spacing:.06em;color:var(--text-dim);background:var(--bg-card-alt);border-bottom:1px solid var(--border);padding:8px 20px;font-size:.68rem;font-weight:700}.holdings-table th:last-child,.holdings-table td:last-child{text-align:center}.holdings-table th:nth-child(3),.holdings-table td:nth-child(3),.holdings-table th:nth-child(4),.holdings-table td:nth-child(4),.holdings-table th:nth-child(5),.holdings-table td:nth-child(5){text-align:right}.holdings-table td{border-bottom:1px solid var(--border);font-variant-numeric:tabular-nums;vertical-align:middle;padding:9px 20px}.holdings-table tr:last-child td{border-bottom:none}.holdings-table tr:hover td{background:#ffffff05}.ticker-cell{font-family:var(--font-mono);color:var(--accent);font-size:.85rem;font-weight:700}.holding-name{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;max-width:120px;margin-top:1px;font-size:.76rem;overflow:hidden}.shares-input{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);width:90px;color:var(--text);font-variant-numeric:tabular-nums;text-align:right;font-size:.82rem;font-family:var(--font-mono);padding:4px 8px;transition:border-color .15s}.shares-input:focus{border-color:var(--accent);background:#4f8ef70d;outline:none}.price-cell{font-family:var(--font-mono)}.price-arrow{margin-left:3px;font-size:.7rem}.value-cell{font-weight:600;font-family:var(--font-mono)}.holding-tag{color:var(--accent);text-transform:uppercase;letter-spacing:.04em;text-overflow:ellipsis;white-space:nowrap;background:#4f8ef71f;border-radius:3px;max-width:100px;padding:1px 5px;font-size:.65rem;font-weight:700;display:inline-block;overflow:hidden}.placeholder-message{text-align:center;color:var(--text-dim);border-top:1px solid var(--border);padding:24px 20px;font-size:.82rem;font-style:italic}.account-card-footer{border-top:1px solid var(--border);background:var(--bg-card-alt);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:12px 20px;display:flex}.return-rate-label{color:var(--text-muted);align-items:center;gap:6px;font-size:.75rem;display:flex}.return-rate-input{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);width:58px;color:var(--text);font-variant-numeric:tabular-nums;text-align:right;padding:3px 6px;font-size:.82rem}.return-rate-input:focus{border-color:var(--accent);outline:none}.return-rate-unit{color:var(--text-muted);font-size:.75rem}.chart-wrapper{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:0;padding:24px}.chart-container{height:350px;position:relative}.chart-empty{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);text-align:center;color:var(--text-dim);padding:48px 24px;font-size:.9rem;font-style:italic}.chart-callouts{grid-template-columns:repeat(5,1fr);gap:12px;margin-top:20px;display:grid}.callout-box{background:var(--bg-card-alt);border:1px solid var(--border);border-radius:var(--radius-sm);text-align:center;padding:12px 14px;transition:border-color .2s}.callout-box:hover{border-color:var(--border-light)}.callout-year{text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:4px;font-size:.7rem;font-weight:700}.callout-value{letter-spacing:-.02em;font-variant-numeric:tabular-nums;color:var(--text);font-size:1rem;font-weight:700}.site-footer{border-top:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-top:40px;padding:20px 32px;display:flex}.site-footer p{color:var(--text-dim);font-size:.75rem}.footer-actions{gap:8px;display:flex}.modal-overlay{z-index:500;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#000000b3;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal{background:var(--bg-card);border:1px solid var(--border-light);border-radius:var(--radius);box-shadow:var(--shadow);width:100%;max-width:440px;overflow:hidden}.modal-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:18px 20px;display:flex}.modal-header h3{font-size:1rem;font-weight:700}.modal-close{color:var(--text-muted);cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:none;padding:2px 6px;font-size:1.1rem;transition:color .15s,background .15s}.modal-close:hover{color:var(--text);background:var(--bg-card-alt)}.modal-body{flex-direction:column;gap:14px;padding:20px;display:flex}.modal-body label{color:var(--text-muted);flex-direction:column;gap:6px;font-size:.82rem;font-weight:600;display:flex}.modal-body input[type=text],.modal-body input[type=number],.modal-body select{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);width:100%;padding:8px 12px;font-size:.9rem;transition:border-color .15s}.modal-body input:focus,.modal-body select:focus{border-color:var(--accent);background:#4f8ef70d;outline:none}.modal-body input[type=color]{cursor:pointer;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);height:38px;padding:3px}.modal-body .required{color:var(--loss);margin-left:2px}.modal-body .optional{color:var(--text-dim);font-weight:400}.modal-account-name{color:var(--text-muted);background:var(--bg-card-alt);border-radius:var(--radius-sm);border:1px solid var(--border);margin-bottom:4px;padding:8px 12px;font-size:.82rem}.modal-footer{border-top:1px solid var(--border);justify-content:space-between;align-items:center;gap:8px;padding:16px 20px;display:flex}.modal-footer-right{gap:8px;margin-left:auto;display:flex}@media (max-width:1100px){.summary-cards{grid-template-columns:repeat(2,1fr)}}@media (max-width:860px){.accounts-grid{grid-template-columns:1fr}.chart-callouts{grid-template-columns:repeat(3,1fr)}}@media (max-width:640px){.site-header{padding:16px 20px}.summary-section,.accounts-section,.projection-section{padding-left:20px;padding-right:20px}.summary-cards{grid-template-columns:1fr 1fr;gap:12px}.card-value{font-size:1.3rem}.chart-callouts{grid-template-columns:1fr 1fr}.site-footer{flex-direction:column;align-items:flex-start;padding:16px 20px}}@media (max-width:400px){.summary-cards{grid-template-columns:1fr}}.visually-hidden{clip:rect(0,0,0,0);width:1px;height:1px;position:absolute;overflow:hidden}select option{background:var(--bg-card);color:var(--text)}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border-light);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--text-dim)}.login-screen{background:var(--bg);z-index:1000;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.login-card{background:var(--bg-card);border:1px solid var(--border-light);text-align:center;border-radius:16px;width:100%;max-width:400px;padding:48px 40px;box-shadow:0 20px 60px #0009}.login-logo{justify-content:center;margin-bottom:20px;display:flex}.login-title{letter-spacing:-.02em;color:var(--text);margin-bottom:6px;font-size:1.5rem;font-weight:700}.login-sub{color:var(--text-muted);margin-bottom:32px;font-size:.8rem}.login-form{text-align:left;flex-direction:column;gap:12px;display:flex}.login-label{color:var(--text-muted);letter-spacing:.04em;text-transform:uppercase;margin-bottom:4px;font-size:.8rem;font-weight:600;display:block}.login-input-wrap{position:relative}.login-input{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);width:100%;color:var(--text);letter-spacing:.08em;padding:12px 44px 12px 16px;font-size:1rem;transition:border-color .15s}.login-input:focus{border-color:var(--accent);background:#4f8ef70a;outline:none}.login-eye{cursor:pointer;opacity:.5;background:0 0;border:none;padding:4px;font-size:1rem;transition:opacity .15s;position:absolute;top:50%;right:12px;transform:translateY(-50%)}.login-eye:hover{opacity:1}.login-error{background:var(--loss-bg);color:#ff8a80;border-radius:var(--radius-sm);text-align:center;border:1px solid #e74c3c4d;padding:8px 12px;font-size:.8rem}.login-btn{justify-content:center;width:100%;margin-top:4px;padding:12px;font-size:.95rem}@keyframes loginShake{0%,to{transform:translate(0)}20%{transform:translate(-8px)}40%{transform:translate(8px)}60%{transform:translate(-6px)}80%{transform:translate(6px)}}.login-card.shake{animation:.4s loginShake}.login-mfa-prompt{color:var(--text-muted);text-align:center;margin-bottom:4px;font-size:.85rem;line-height:1.5}.login-mfa-hint{color:var(--text-muted);text-align:center;margin-top:4px;font-size:.8rem}.login-input-code{text-align:center;letter-spacing:.3em;padding:12px 16px;font-size:1.6rem;font-weight:600}.login-btn-back{color:var(--text-muted);justify-content:center;margin-top:-4px;padding:6px;font-size:.8rem}.login-qr-wrap{justify-content:center;padding:8px 0;display:flex}.login-qr-img{border:1px solid var(--border-light);background:#fff;border-radius:8px;width:180px;height:180px}.login-qr-wrap svg{border:1px solid var(--border-light);background:#fff;border-radius:8px;display:block}.login-mfa-lost{margin-top:8px;font-size:.75rem}.login-mfa-lost a{color:var(--text-muted);text-decoration:underline}.login-secret-wrap{text-align:center}.login-secret-code{letter-spacing:.08em;background:var(--bg-card);border:1px solid var(--border-light);word-break:break-all;-webkit-user-select:all;user-select:all;border-radius:6px;padding:6px 12px;font-family:monospace;font-size:.85rem;display:inline-block}.chat-toggle-btn{z-index:450;background:var(--accent);cursor:pointer;border:none;border-radius:50%;justify-content:center;align-items:center;width:56px;height:56px;transition:transform .2s,box-shadow .2s;display:flex;position:fixed;bottom:28px;right:28px;box-shadow:0 4px 20px #4f8ef773}.chat-toggle-btn:hover{transform:scale(1.08);box-shadow:0 6px 28px #4f8ef799}.chat-toggle-icon{font-size:1.4rem;line-height:1}.chat-panel{z-index:450;background:var(--bg-card);border:1px solid var(--border-light);border-radius:16px;flex-direction:column;width:380px;height:520px;animation:.25s chatSlideUp;display:flex;position:fixed;bottom:96px;right:28px;overflow:hidden;box-shadow:0 12px 48px #00000080}@keyframes chatSlideUp{0%{opacity:0;transform:translateY(20px)scale(.97)}to{opacity:1;transform:translateY(0)scale(1)}}.chat-panel-header{border-bottom:1px solid var(--border);flex-shrink:0;justify-content:space-between;align-items:center;padding:16px 18px 12px;display:flex}.chat-panel-title{color:var(--text);align-items:center;gap:8px;font-size:.9rem;font-weight:700;display:flex}.chat-panel-icon{color:var(--accent);font-size:1rem}.chat-panel-close{color:var(--text-muted);cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:none;padding:4px 8px;font-size:1rem;transition:color .15s,background .15s}.chat-panel-close:hover{color:var(--text);background:var(--bg-card-alt)}.chat-panel-sub{color:var(--text-dim);border-bottom:1px solid var(--border);flex-shrink:0;padding:6px 18px 10px;font-size:.7rem}.chat-messages{flex-direction:column;flex:1;gap:12px;padding:16px;display:flex;overflow-y:auto}.chat-msg{flex-direction:column;display:flex}.chat-msg-user{align-items:flex-end}.chat-msg-assistant{align-items:flex-start}.chat-bubble{border-radius:12px;max-width:88%;padding:10px 14px;font-size:.83rem;line-height:1.55}.chat-msg-user .chat-bubble{background:var(--accent);color:#fff;border-bottom-right-radius:3px}.chat-msg-assistant .chat-bubble{background:var(--bg-card-alt);color:var(--text);border:1px solid var(--border);border-bottom-left-radius:3px}.chat-bubble em{color:var(--text-muted);font-style:italic}.chat-bubble.success{background:var(--gain-bg);color:var(--gain);border-color:#2ecc7140}.chat-bubble.error-bubble{background:var(--loss-bg);color:#ff8a80;border-color:#e74c3c40}.chat-thinking{background:var(--bg-card-alt);border:1px solid var(--border);border-radius:12px 12px 12px 3px;align-items:center;gap:5px;width:fit-content;padding:10px 14px;display:flex}.chat-thinking span{background:var(--text-dim);border-radius:50%;width:6px;height:6px;animation:1.2s ease-in-out infinite thinkingDot}.chat-thinking span:nth-child(2){animation-delay:.2s}.chat-thinking span:nth-child(3){animation-delay:.4s}@keyframes thinkingDot{0%,80%,to{opacity:.4;transform:scale(.8)}40%{opacity:1;transform:scale(1.2)}}.chat-input-area{border-top:1px solid var(--border);flex-shrink:0;align-items:flex-end;gap:8px;padding:12px;display:flex}.chat-input{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);resize:none;font-size:.85rem;line-height:1.4;font-family:var(--font);flex:1;max-height:80px;padding:8px 12px;transition:border-color .15s}.chat-input:focus{border-color:var(--accent);outline:none}.chat-send-btn{flex-shrink:0;align-self:flex-end;padding:8px 16px}.chat-panel-footer{color:var(--text-dim);text-align:center;flex-shrink:0;padding:6px 12px 10px;font-size:.67rem}@media (max-width:480px){.chat-panel{border-radius:16px 16px 0 0;width:100%;bottom:80px;right:0}.chat-toggle-btn{bottom:16px;right:16px}}.breakdown-section{padding:32px 32px 0}.breakdown-subsection{margin-bottom:40px}.breakdown-table-wrap{border-radius:var(--radius);border:1px solid var(--border);overflow-x:auto}.breakdown-table{border-collapse:collapse;width:100%;font-size:.82rem}.breakdown-table thead{background:var(--bg-card);border-bottom:1px solid var(--border)}.breakdown-table th{text-align:left;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);white-space:nowrap;padding:10px 14px;font-size:.72rem;font-weight:600}.breakdown-table td{border-bottom:1px solid var(--border);color:var(--text);vertical-align:middle;padding:10px 14px}.breakdown-table tbody tr:last-child td{border-bottom:none}.breakdown-table tbody tr:hover{background:var(--bg-hover,#ffffff08)}.breakdown-table .num-col{text-align:right;font-variant-numeric:tabular-nums}.breakdown-table .holding-name-col{color:var(--text-muted);max-width:220px}.breakdown-table .pct-col{color:var(--accent);font-weight:600}.geo-pct{color:var(--text-muted);font-size:.75rem}.geo-detail-table .ticker-cell{font-size:.8rem}.geo-cards{flex-wrap:wrap;gap:16px;margin-bottom:20px;display:flex}.geo-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);flex:1;min-width:180px;padding:20px 24px}.geo-card-domestic{border-top:3px solid var(--accent)}.geo-card-intl{border-top:3px solid #2eb87e}.geo-card-flag{margin-bottom:8px;font-size:1.4rem}.geo-bar-track{background:var(--border);border-radius:99px;height:10px;margin-bottom:24px;display:flex;overflow:hidden}.geo-bar-fill-domestic{background:var(--accent);height:100%;transition:width .4s}.geo-bar-fill-intl{background:#2eb87e;height:100%;transition:width .4s}.geo-row-excluded td{opacity:.45;font-style:italic}.geo-excluded-label{color:var(--text-muted);font-size:.75rem}@media (max-width:600px){.breakdown-section{padding:24px 16px 0}.geo-card{min-width:140px}}.savings-section{padding:32px 32px 0}.savings-pool-bar{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);flex-wrap:wrap;align-items:center;gap:24px;margin-bottom:20px;padding:14px 20px;display:flex}.savings-pool-stat{flex-direction:column;gap:3px;display:flex}.savings-pool-label{text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);font-size:.68rem;font-weight:700}.savings-pool-value{font-variant-numeric:tabular-nums;color:var(--text);font-size:1.05rem;font-weight:700}.savings-pool-warning{color:#e67e22}.savings-pool-divider{color:var(--border-light);align-self:center;font-size:1.3rem}.goal-grid{grid-template-columns:repeat(2,1fr);gap:16px;margin-bottom:16px;display:grid}.goal-card{background:var(--bg-card);border:1px solid var(--border);border-left:4px solid var(--accent);border-radius:var(--radius);padding:20px;transition:box-shadow .2s}.goal-card:hover{box-shadow:var(--shadow-sm)}.goal-card-emergency{background:#ef44440a}.goal-header{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:14px;display:flex}.goal-title-group{flex:1;align-items:center;gap:8px;min-width:0;display:flex}.goal-shield{flex-shrink:0;font-size:1rem}.goal-label{color:var(--text);text-overflow:ellipsis;white-space:nowrap;font-size:.95rem;font-weight:700;overflow:hidden}.goal-header-right{flex-shrink:0;align-items:center;gap:8px;display:flex}.goal-amount-label{color:var(--text-muted);white-space:nowrap;font-size:.78rem}.goal-amount-value{font-variant-numeric:tabular-nums;color:var(--text);font-weight:600}.goal-progress-track{background:var(--bg-card-alt);border:1px solid var(--border);border-radius:99px;height:8px;margin-bottom:8px;overflow:hidden}.goal-progress-fill{border-radius:99px;height:100%;transition:width .4s}.goal-progress-text{color:var(--text-muted);font-variant-numeric:tabular-nums;margin-bottom:12px;font-size:.78rem}.goal-progress-text strong{color:var(--text)}.goal-planner-section{border-top:1px solid var(--border);padding-top:10px}.goal-planner-toggle{color:var(--text-muted);cursor:pointer;background:0 0;border:none;align-items:center;gap:5px;padding:2px 0;font-size:.78rem;transition:color .15s;display:flex}.goal-planner-toggle:hover{color:var(--text)}.goal-planner-chevron{font-size:.65rem}.goal-planner-body{padding-top:12px}.goal-planner-input-row{align-items:center;gap:10px;margin-bottom:10px;display:flex}.goal-planner-input-label{color:var(--text-muted);white-space:nowrap;font-size:.78rem}.goal-monthly-input{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);width:110px;color:var(--text);text-align:right;font-variant-numeric:tabular-nums;padding:5px 8px;font-size:.85rem;transition:border-color .15s}.goal-monthly-input:focus{border-color:var(--accent);background:#4f8ef70d;outline:none}.goal-planner-result{font-size:.82rem;line-height:1.5}.goal-funded-text{color:var(--gain);font-weight:600}.goal-planner-projection{color:var(--text)}.goal-planner-date{color:var(--text-muted)}.goal-planner-hint{color:var(--text-dim);font-style:italic}.goal-add-row{justify-content:flex-end;padding-top:4px;display:flex}.goal-color-swatches{flex-wrap:wrap;gap:10px;padding:4px 0;display:flex}.goal-color-swatch{cursor:pointer;border:2px solid #0000;border-radius:50%;width:28px;height:28px;transition:transform .15s,border-color .15s}.goal-color-swatch:hover{transform:scale(1.15)}.goal-color-swatch.selected{border-color:var(--text);transform:scale(1.1)}@media (max-width:860px){.goal-grid{grid-template-columns:1fr}}@media (max-width:640px){.savings-section{padding:24px 16px 0}}.holdings-table-wrap{-webkit-overflow-scrolling:touch;overflow-x:auto}.schedule-section{padding:48px 40px 0}.schedule-legend{flex-wrap:wrap;gap:20px;margin-bottom:28px;display:flex}.schedule-legend-item{text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);align-items:center;gap:8px;font-size:.72rem;display:flex}.s-dot{border-radius:50%;flex-shrink:0;width:10px;height:10px}.s-dot-ee{background:var(--s401-ee)}.s-dot-er{background:var(--s401-er)}.s-dot-at{background:var(--s401-at)}.s-dot-hsa{background:var(--s401-hsa)}.s-dot-tax{background:var(--s401-tax)}.s-dot-grand{background:var(--s401-grand)}.schedule-table-wrap{-webkit-overflow-scrolling:touch;overflow-x:auto}.schedule-table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:.82rem}.schedule-table thead th{text-align:left;text-transform:uppercase;letter-spacing:.12em;color:var(--text-dim);border-bottom:1px solid var(--border);white-space:nowrap;padding:12px 16px;font-size:.68rem}.schedule-table thead th.s-tax-col{color:#a04060;background:#f060800d;border-left:1px solid #3a2535}.schedule-table thead th.s-grand-col{color:#a09030;background:#ffd97a0a;border-left:2px solid #3a3010}.schedule-table tbody tr{border-bottom:1px solid var(--border);transition:background .15s}.schedule-table tbody tr:hover{background:var(--bg-card)}.schedule-table tbody td{vertical-align:top;padding:18px 16px}.schedule-table td.s-tax-col{background:#f0608008;border-left:1px solid #3a2535}.schedule-table td.s-grand-col{background:#ffd97a08;border-left:2px solid #3a3010}.schedule-table tbody tr.s-dec-row{background:#f0a0600d}.schedule-table tbody tr.s-dec-row td.s-tax-col{background:#f060800a}.schedule-table tbody tr.s-dec-row td.s-grand-col{background:#ffd97a0a}.schedule-table tr.s-total-row td{background:var(--bg-card);border-top:2px solid var(--border-light)}.schedule-table tr.s-total-row td.s-tax-col{background:#f060800f}.schedule-table tr.s-total-row td.s-grand-col{background:#ffd97a0f}.s-qtr-label{color:var(--text);white-space:nowrap;font-size:1.05rem;font-weight:500}.s-qtr-date{color:var(--text-muted);letter-spacing:.04em;margin-top:3px;font-size:.68rem}.s-amount{font-size:.95rem;font-weight:500;font-family:var(--font-mono)}.s-grand-total{font-size:1.05rem}.s-ee{color:var(--s401-ee)}.s-er{color:var(--s401-er)}.s-at{color:var(--s401-at)}.s-hsa{color:var(--s401-hsa)}.s-tax{color:var(--s401-tax)}.s-grand{color:var(--s401-grand)}.s-amt-label{color:var(--text-muted);letter-spacing:.04em;text-transform:uppercase;margin-top:3px;font-size:.65rem}.s-source-tag{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-dim);text-transform:uppercase;letter-spacing:.07em;margin-top:5px;padding:2px 7px;font-size:.64rem;display:inline-block}.s-row-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.1em;font-size:.75rem}.s-bar-cell{padding-top:20px;padding-bottom:20px}.s-bar-wrap{align-items:flex-end;gap:3px;height:32px;margin-top:6px;display:flex}.s-bar{opacity:.85;border-radius:2px 2px 0 0;width:20px}.s-note{background:var(--bg-card);border-left:3px solid var(--s401-at);border-radius:var(--radius-sm);color:var(--text-muted);margin-top:40px;margin-bottom:48px;padding:20px 24px;font-size:.75rem;line-height:1.8}.s-note strong{color:var(--text)}@media (max-width:700px){.schedule-section{padding:32px 16px 0}.schedule-table{font-size:.72rem}.s-bar-cell{display:none}}@media (max-width:600px){.schedule-legend{gap:14px}}.hyp-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);border-left:3px solid var(--gain);margin-top:16px;padding:24px 28px}.hyp-card-header{margin-bottom:20px}.hyp-card-header h3{color:var(--text);margin-bottom:4px;font-size:.95rem;font-weight:700}.hyp-card-header p{color:var(--text-muted);font-size:.78rem}.hyp-inputs{flex-wrap:wrap;align-items:flex-end;gap:32px;display:flex}.hyp-input-group label{text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:8px;font-size:.72rem;font-weight:600;display:block}.hyp-input-row{align-items:center;gap:8px;display:flex}.hyp-currency-symbol{color:var(--text-muted);font-size:.95rem;font-family:var(--font-mono)}.hyp-amount-input{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);width:148px;color:var(--text);font-family:var(--font-mono);font-variant-numeric:tabular-nums;padding:8px 12px;font-size:1rem;transition:border-color .15s,background .15s}.hyp-amount-input:focus{border-color:var(--accent);background:#4f8ef70d;outline:none}.hyp-amount-input::-webkit-outer-spin-button{-webkit-appearance:none}.hyp-amount-input::-webkit-inner-spin-button{-webkit-appearance:none}.hyp-freq-toggle{border:1px solid var(--border);border-radius:var(--radius-sm);display:flex;overflow:hidden}.hyp-freq-toggle button{color:var(--text-muted);cursor:pointer;background:0 0;border:none;padding:8px 14px;font-size:.82rem;font-weight:500;transition:background .15s,color .15s}.hyp-freq-toggle button:hover:not(.active){background:var(--bg-card-alt);color:var(--text)}.hyp-freq-toggle button.active{background:var(--accent);color:#fff}.hyp-input-hint{flex-direction:column;gap:4px;padding-bottom:2px;display:flex}.hyp-hint-line{color:var(--text-muted);font-size:.78rem;font-family:var(--font-mono)}.hyp-hint-note{color:var(--text-dim);font-size:.72rem;font-family:var(--font)}.callout-box-expanded{gap:2px}.callout-value-dim{text-decoration:line-through;-webkit-text-decoration-color:var(--border-light);text-decoration-color:var(--border-light);color:var(--text-muted)!important;font-size:.78rem!important}.callout-contrib-delta{color:var(--gain);font-size:.78rem;font-family:var(--font-mono);font-variant-numeric:tabular-nums}.callout-total{color:var(--text);font-size:1rem;font-weight:700;font-family:var(--font-mono);font-variant-numeric:tabular-nums;margin-top:1px}@media (max-width:600px){.hyp-card{padding:20px 16px}.hyp-inputs{gap:20px}.hyp-amount-input{width:120px}}
