:root{--bg-page: #faf7f5;--bg-surface: #ffffff;--bg-surface-warm: #f3f3f3;--bg-sidebar: #3a3533;--bg-sidebar-hover: rgba(255, 255, 255, .07);--bg-sidebar-active: rgba(255, 255, 255, .11);--ink-primary: #2d2d2d;--ink-secondary: #6b6562;--ink-tertiary: #9a9490;--ink-inverse: #f5f2f0;--ink-inverse-muted: rgba(245, 242, 240, .55);--accent: #c9553d;--accent-light: rgba(201, 85, 61, .06);--accent-hover: #b5472f;--positive: #0a7b4d;--positive-bg: rgba(10, 123, 77, .05);--negative: #cc2936;--negative-bg: rgba(204, 41, 54, .05);--rule: #e5e0dc;--rule-light: #eeeae7;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .04);--shadow-md: 0 2px 8px rgba(0, 0, 0, .06);--shadow-lg: 0 4px 16px rgba(0, 0, 0, .08);--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--font-serif: "Playfair Display", Georgia, "Times New Roman", serif;--font-sans: "Libre Franklin", -apple-system, BlinkMacSystemFont, sans-serif;--sidebar-width: 240px}*{margin:0;padding:0;box-sizing:border-box}body{font-family:var(--font-sans);background:var(--bg-page);color:var(--ink-primary);line-height:1.6;font-size:14px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-width:320px}#root{min-height:100vh}.app-layout{display:flex;min-height:100vh}.loading{display:flex;justify-content:center;align-items:center;height:100vh;font-size:.9rem;color:var(--ink-secondary)}.error{color:var(--negative);font-size:.875rem;padding:.5rem .75rem;background:var(--negative-bg);border-radius:var(--radius-sm)}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg-page);position:relative}.login-page:before{content:"";position:absolute;top:0;left:0;right:0;height:45%;background:var(--bg-sidebar)}.login-card{position:relative;background:var(--bg-surface);border-radius:var(--radius-lg);padding:2.5rem;width:380px;box-shadow:var(--shadow-lg);text-align:center}.login-card h1{font-family:Bungee Shade,cursive;font-size:1.75rem;font-weight:400;color:var(--ink-primary);margin-bottom:.25rem}.login-card .login-sub{font-size:.8rem;color:var(--ink-secondary);margin-bottom:2rem}.login-card .form-field{text-align:left}.login-card .btn-primary{width:100%;padding:.7rem;font-size:.9rem;margin-top:.5rem}.login-form{display:flex;flex-direction:column;gap:1rem;width:100%}.sidebar{width:var(--sidebar-width);background:var(--bg-sidebar);color:var(--ink-inverse);display:flex;flex-direction:column;position:fixed;top:0;left:0;bottom:0;z-index:10}.sidebar-brand{padding:1.75rem 1.5rem 1.5rem;border-bottom:1px solid rgba(255,255,255,.1)}.sidebar-brand h1{font-family:Bungee Shade,cursive;font-size:2.5rem;font-weight:400;letter-spacing:.02em;color:var(--ink-inverse)}.sidebar-brand .brand-sub{font-size:.7rem;text-transform:uppercase;letter-spacing:.15em;color:var(--ink-inverse-muted);margin-top:.15rem;font-weight:500}.sidebar-nav{flex:1;padding:1rem 0;display:flex;flex-direction:column}.nav-item{display:flex;align-items:center;gap:.75rem;padding:.7rem 1.5rem;color:var(--ink-inverse-muted);text-decoration:none;font-size:.875rem;font-weight:400;font-family:var(--font-sans);transition:all .15s ease;border:none;border-left:3px solid transparent;background:none;cursor:pointer;width:100%;text-align:left}.nav-item:hover{color:var(--ink-inverse);background:var(--bg-sidebar-hover)}.nav-item.active{color:var(--ink-inverse);background:var(--bg-sidebar-active);border-left-color:var(--accent);font-weight:500}.nav-icon{width:18px;height:18px;opacity:.7;flex-shrink:0;display:flex;align-items:center;justify-content:center}.nav-icon svg{width:18px;height:18px}.nav-item.active .nav-icon{opacity:1}.nav-spacer{flex:1}.sidebar-footer{padding:1rem 1.5rem;border-top:1px solid rgba(255,255,255,.1)}.sidebar-user{font-size:.75rem;color:var(--ink-inverse-muted);margin-bottom:.5rem}.sidebar-user strong{color:var(--ink-inverse);font-weight:500;display:block}.btn-logout{background:none;border:1px solid rgba(255,255,255,.2);color:var(--ink-inverse-muted);padding:.4rem .75rem;border-radius:var(--radius-sm);font-size:.75rem;font-family:var(--font-sans);cursor:pointer;transition:all .15s}.btn-logout:hover{border-color:#fff6;color:var(--ink-inverse)}.main-content{margin-left:var(--sidebar-width);flex:1;padding:2rem 2.5rem;max-width:calc(var(--sidebar-width) + 960px)}.main-content.stress-pad-collapsed{padding-bottom:calc(2rem + 36px)}.main-content.stress-pad-expanded{padding-bottom:calc(2rem + 280px)}.page-header{margin-bottom:2rem;padding-bottom:1.25rem;border-bottom:1px solid var(--rule)}.page-title{font-family:var(--font-serif);font-size:1.75rem;font-weight:600;color:var(--ink-primary);letter-spacing:-.02em}.summary{background:var(--bg-surface);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);overflow:hidden}.summary h3{display:none}.summary-period-toggle{display:flex;gap:.25rem;margin-bottom:.75rem}.summary-period-toggle button{flex:1;padding:.35rem .75rem;font-size:.8rem;font-weight:500;border:1px solid var(--rule);border-radius:var(--radius-sm);background:transparent;color:var(--ink-tertiary);cursor:pointer;transition:all .15s ease}.summary-period-toggle button.active{background:var(--ink-primary);color:var(--bg-surface);border-color:var(--ink-primary)}.summary-hint{color:var(--ink-tertiary);font-size:.75rem;font-weight:400}.summary-grid{display:flex;flex-direction:column}.summary-row{display:flex;justify-content:space-between;align-items:center;padding:.8rem 1.25rem;border-bottom:1px solid var(--rule-light)}.summary-row:last-child{border-bottom:none}.summary-label{font-size:.875rem;color:var(--ink-secondary)}.summary-value{font-size:.9rem;font-weight:700;font-variant-numeric:tabular-nums;color:var(--ink-primary)}.summary-row.income .summary-value{color:var(--positive)}.summary-row.expense .summary-value{color:var(--negative)}.summary-row.subtotal{background:var(--bg-surface-warm);padding:.5rem 1.25rem}.summary-row.subtotal .summary-label{font-weight:600;font-size:.825rem;color:var(--ink-primary)}.summary-row.subtotal .summary-value{font-size:.85rem}.summary-divider{height:0;border-top:2px solid var(--rule);margin:0}.summary-row.net{background:var(--bg-surface-warm)}.summary-row.net .summary-label{font-weight:600;color:var(--ink-primary);font-family:var(--font-serif);font-size:.95rem}.summary-row.net .summary-value{font-size:1.1rem}.summary-row.net.positive .summary-value{color:var(--positive)}.summary-row.net.negative .summary-value{color:var(--negative)}.tab-panel{display:flex;flex-direction:column;gap:1.5rem}.table-section{background:var(--bg-surface);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);overflow:hidden}.section-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.25rem;border-bottom:1px solid var(--rule-light)}.section-header h3{font-family:var(--font-serif);font-size:1rem;font-weight:500;color:var(--ink-primary);margin:0}.btn-add-small{display:inline-flex;align-items:center;gap:.35rem;padding:.45rem .9rem;background:var(--accent);color:#fff;border:none;border-radius:var(--radius-sm);font-size:.8rem;font-weight:500;font-family:var(--font-sans);cursor:pointer;transition:background .15s}.btn-add-small:hover{background:var(--accent-hover)}.entry-table{width:100%;border-collapse:collapse}.entry-table th{padding:.6rem 1.25rem;text-align:left;font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-tertiary);background:var(--bg-surface-warm);border-bottom:1px solid var(--rule-light)}.entry-table td{padding:.75rem 1.25rem;font-size:.875rem;border-bottom:1px solid var(--rule-light);color:var(--ink-primary)}.entry-table tbody tr{cursor:pointer;transition:background .1s}.entry-table tbody tr:hover{background:var(--bg-surface-warm)}.entry-table tbody tr.disabled{opacity:.5}.entry-table tbody tr:last-child td{border-bottom:none}.entry-table .col-toggle{width:3rem;padding-right:0}.entry-table .col-amount{text-align:right}.amount-sub{display:block;font-size:.7rem;color:var(--ink-tertiary);font-weight:400}.family-member-tag{display:inline-block;font-size:.7rem;padding:.15rem .5rem;border-radius:10px;background:var(--accent-light);color:var(--accent);font-weight:500;margin-left:.5rem}.tax-sub-row td{padding-top:.25rem;padding-bottom:.25rem}.tax-sub-name{color:var(--ink-secondary);font-size:.85rem}.tax-add-row td{border-bottom:none;padding-top:0;padding-bottom:.5rem}.btn-add-tax{background:none;border:none;color:var(--accent);cursor:pointer;font-size:.75rem;padding:.1rem 0;opacity:.7}.btn-add-tax:hover{opacity:1}.empty-table{text-align:center;color:var(--ink-tertiary);padding:1.5rem}.empty-state{text-align:center;color:var(--ink-tertiary);padding:2rem}.toggle{position:relative;display:inline-block;width:36px;height:20px}.toggle input{opacity:0;width:0;height:0}.toggle-slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:var(--rule);transition:.2s;border-radius:20px}.toggle-slider:before{position:absolute;content:"";height:14px;width:14px;left:3px;bottom:3px;background-color:#fff;transition:.2s;border-radius:50%;box-shadow:0 1px 3px #00000026}.toggle input:checked+.toggle-slider{background-color:var(--positive)}.toggle input:checked+.toggle-slider:before{transform:translate(16px)}.form-field{display:flex;flex-direction:column;gap:.3rem}.form-field label{font-size:.7rem;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-tertiary);font-weight:600}.form-field input,.form-field select{padding:.6rem .75rem;border:1px solid var(--rule);border-radius:var(--radius-sm);font-size:.875rem;font-family:var(--font-sans);color:var(--ink-primary);background:var(--bg-surface);transition:border-color .15s}.form-field input:focus,.form-field select:focus{outline:none;border-color:var(--accent)}.checkbox-field label{display:flex;align-items:center;gap:.5rem;cursor:pointer;text-transform:none;font-size:.875rem;color:var(--ink-primary);font-weight:400;letter-spacing:0}.checkbox-field input[type=checkbox]{width:18px;height:18px;accent-color:var(--accent)}.field-error{color:var(--negative);font-size:.75rem}.entry-form{display:flex;flex-direction:column;gap:1rem}.entry-form .form-field select{padding:.6rem .75rem;border:1px solid var(--rule);border-radius:var(--radius-sm);font-size:.875rem;background:var(--bg-surface)}.entry-form .form-field select:focus{outline:none;border-color:var(--accent)}.form-actions{display:flex;justify-content:space-between;gap:.5rem;margin-top:.5rem;padding-top:1rem;border-top:1px solid var(--rule-light)}.form-actions-right{display:flex;gap:.5rem}.btn-cancel{padding:.55rem 1rem;background:transparent;border:1px solid var(--rule);border-radius:var(--radius-sm);font-size:.8rem;font-family:var(--font-sans);color:var(--ink-secondary);cursor:pointer;transition:all .15s}.btn-cancel:hover{border-color:var(--ink-tertiary)}.btn-submit{padding:.55rem 1.25rem;background:var(--accent);color:#fff;border:none;border-radius:var(--radius-sm);font-size:.8rem;font-weight:500;font-family:var(--font-sans);cursor:pointer;transition:background .15s}.btn-submit:hover{background:var(--accent-hover)}.btn-primary{padding:.55rem 1.25rem;background:var(--accent);border:none;border-radius:var(--radius-sm);font-size:.8rem;font-weight:500;font-family:var(--font-sans);color:#fff;cursor:pointer;transition:background .15s}.btn-primary:hover{background:var(--accent-hover)}.btn-primary:disabled{background:var(--ink-tertiary);cursor:not-allowed}.btn-delete{padding:.55rem 1rem;background:var(--negative);color:#fff;border:none;border-radius:var(--radius-sm);font-size:.8rem;font-family:var(--font-sans);cursor:pointer;transition:background .15s}.btn-delete:hover{background:#a8212d}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#33302e73;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);overflow-y:auto;z-index:100}.modal-content{background:var(--bg-surface);border-radius:var(--radius-lg);width:100%;max-width:420px;box-shadow:var(--shadow-lg);margin:2rem auto}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:1.25rem 1.5rem;border-bottom:1px solid var(--rule-light)}.modal-header h2{margin:0;font-family:var(--font-serif);font-size:1.15rem;font-weight:500}.modal-close{background:none;border:none;font-size:1.25rem;cursor:pointer;color:var(--ink-tertiary);padding:.25rem;line-height:1}.modal-close:hover{color:var(--ink-primary)}.modal-body{padding:1.5rem}.loan-section{background:var(--bg-surface);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);padding:1.5rem}.loan-section.disabled{opacity:.5}.loan-header{display:flex;justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:1.25rem;padding-bottom:.75rem;border-bottom:1px solid var(--rule-light)}.loan-name-input{font-family:var(--font-serif);font-size:1.1rem;font-weight:500;border:none;border-bottom:2px solid transparent;padding:.25rem 0;background:transparent;color:var(--ink-primary);flex:1;margin-right:1rem}.loan-name-input:focus{outline:none;border-bottom-color:var(--accent)}.btn-delete-loan{background:none;border:1px solid var(--rule);color:var(--ink-secondary);padding:.35rem .75rem;border-radius:var(--radius-sm);font-size:.75rem;font-family:var(--font-sans);cursor:pointer;transition:all .15s}.btn-delete-loan:hover{border-color:var(--negative);color:var(--negative)}.btn-delete-loan.confirm{background:var(--negative);border-color:var(--negative);color:#fff}.loan-fields{display:flex;flex-direction:column;gap:.75rem}.loan-field{display:flex;flex-direction:column;gap:.3rem}.loan-field label{font-size:.65rem;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-tertiary);font-weight:600}.loan-field input,.loan-field select{padding:.55rem .65rem;border:1px solid var(--rule);border-radius:var(--radius-sm);font-size:.875rem;font-family:var(--font-sans);color:var(--ink-primary);background:var(--bg-surface)}.loan-field input:focus,.loan-field select:focus{outline:none;border-color:var(--accent)}.loan-field-row{display:flex;gap:1rem}.loan-field-row .loan-field{flex:1}.input-with-prefix,.input-with-suffix{display:flex;align-items:stretch;border:1px solid var(--rule);border-radius:var(--radius-sm);overflow:hidden;transition:border-color .15s;background:var(--bg-surface)}.input-with-prefix input,.input-with-suffix input{border:none;flex:1;min-width:0;padding:.55rem .65rem;font-size:.875rem;font-family:var(--font-sans);color:var(--ink-primary);background:transparent}.input-with-prefix input:focus,.input-with-suffix input:focus{outline:none}.input-with-prefix:focus-within,.input-with-suffix:focus-within{border-color:var(--accent)}.input-prefix,.input-suffix{padding:.55rem .5rem;background:var(--bg-surface-warm);color:var(--ink-tertiary);font-size:.8rem;font-weight:500;display:flex;align-items:center}.input-prefix-select{border:none;cursor:pointer;-moz-appearance:none;appearance:none;-webkit-appearance:none;padding-right:1rem;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='5' viewBox='0 0 8 5'%3E%3Cpath d='M0 0l4 5 4-5z' fill='%239a9490'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .3rem center}.input-prefix-select:focus{outline:none}.loan-divider{height:1px;background:var(--rule-light);margin:1rem 0}.term-slider-row{display:flex;flex-direction:column;position:relative;padding-bottom:34px}.term-track-fixed-fill{position:absolute;top:0;left:0;height:100%;background:var(--positive);opacity:.3;border-radius:2px 0 0 2px;pointer-events:none}.term-track-variable-fill{position:absolute;top:0;height:100%;background:var(--accent);opacity:.2;pointer-events:none}.term-track{width:100%;height:16px;background:var(--rule);border-radius:2px;position:relative;z-index:1}.term-thumb{position:absolute;top:50%;transform:translate(-50%,-50%);width:14px;height:14px;border-radius:50%;background:var(--accent);border:2px solid var(--bg-surface);box-shadow:0 1px 3px #00000026;cursor:grab;z-index:2;touch-action:none}.term-thumb:active{cursor:grabbing}.term-slider-labels{position:relative;height:12px;font-size:.65rem;color:var(--ink-tertiary)}.term-slider-labels span{position:absolute;transform:translate(-50%)}.term-slider-labels span:first-child{transform:none}.term-slider-labels span:last-child{transform:translate(-100%)}.fixed-period-pill{position:absolute;top:35px;transform:translate(-50%);padding:.15rem .5rem;background:var(--positive);color:#fff;font-size:.65rem;font-weight:600;border-radius:10px;cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none;white-space:nowrap;z-index:3;transition:left .1s ease}.fixed-period-pill:before{content:"";position:absolute;top:-4px;left:50%;transform:translate(-50%);width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid var(--positive)}.fixed-period-pill:active{cursor:grabbing}.fixed-period-pill.at-zero{background:var(--rule);color:var(--ink-tertiary)}.fixed-period-pill.at-start{transform:none}.fixed-period-pill.at-start:before{left:7px;transform:none}.fixed-period-pill.at-end{transform:translate(-100%)}.fixed-period-pill.at-end:before{left:auto;right:7px;transform:none}.fixed-period-pill.at-zero:before{border-bottom-color:var(--rule)}.loan-result{display:flex;justify-content:space-between;align-items:center;padding:.85rem 1rem;background:var(--bg-surface-warm);border-radius:var(--radius-sm);border:1px solid var(--rule-light)}.loan-result-label{font-size:.875rem;font-weight:500;color:var(--ink-secondary)}.loan-result-value{font-size:1.15rem;font-weight:700;color:var(--ink-primary);font-variant-numeric:tabular-nums}button.loan-result.expandable{cursor:pointer;transition:background .15s;width:100%;font-family:var(--font-sans);text-align:left}.loan-result.expandable:hover{background:#ebe8e5}.loan-payment-nominal{font-size:.85rem;color:var(--ink-tertiary);text-decoration:line-through;display:block;font-weight:500;line-height:1.1}.loan-payment-stressed{color:var(--accent);display:block}.loan-result-chevron{display:inline-block;vertical-align:middle;color:var(--ink-tertiary);margin-right:.35rem;transition:transform .2s}.loan-result-chevron.expanded{transform:rotate(180deg)}.amortization-panel{margin-top:.75rem;padding:.85rem 1rem;background:var(--bg-surface-warm);border:1px solid var(--rule-light);border-radius:var(--radius-sm)}.amortization-chart{display:flex;align-items:flex-end;gap:1px;height:120px;cursor:crosshair}.amortization-bar{flex:1;min-width:0;display:flex;flex-direction:column;justify-content:flex-end;height:100%}.amortization-bar.selected{opacity:.5}.amortization-bar.boundary{border-right:2px solid var(--positive)}.amortization-bar-interest{background:var(--accent);opacity:.75}.amortization-bar-principal{background:var(--positive);opacity:.75}.amortization-chart-footer{display:flex;justify-content:space-between;align-items:center;margin-top:.5rem}.amortization-legend{display:flex;gap:1rem;font-size:.7rem;color:var(--ink-tertiary)}.amortization-legend-item{display:flex;align-items:center;gap:.3rem}.amortization-legend-swatch{width:10px;height:10px;border-radius:2px}.amortization-month-label{font-size:.75rem;color:var(--ink-secondary);font-variant-numeric:tabular-nums}.amortization-summary{display:flex;flex-direction:column;gap:.35rem;margin-top:.75rem}.amortization-progress-label{font-size:.65rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-tertiary);margin-top:.25rem}.amortization-progress-label:first-child{margin-top:0}.amortization-progress-month-amount{margin-left:.4rem;font-weight:700;text-transform:none;letter-spacing:0;color:var(--ink-secondary)}.amortization-progress{position:relative;display:flex;justify-content:space-between;align-items:center;height:28px;background:var(--rule-light);border-radius:var(--radius-sm);overflow:hidden}.amortization-progress-fill{position:absolute;top:0;left:0;height:100%;transition:width .15s ease}.amortization-progress-fill.interest{background:var(--accent);opacity:.2}.amortization-progress-fill.principal{background:var(--positive);opacity:.2}.amortization-progress-paid,.amortization-progress-remaining{position:relative;z-index:1;font-size:.75rem;font-weight:600;font-variant-numeric:tabular-nums;padding:0 .5rem}.amortization-progress-paid{color:var(--ink-primary)}.amortization-progress-remaining{color:var(--ink-tertiary)}.investment-section{background:var(--bg-surface);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);padding:1.5rem}.investment-section.disabled{opacity:.5}.investment-header{display:flex;justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:1.25rem;padding-bottom:.75rem;border-bottom:1px solid var(--rule-light)}.investment-name-input{font-family:var(--font-serif);font-size:1.1rem;font-weight:500;border:none;border-bottom:2px solid transparent;padding:.25rem 0;background:transparent;color:var(--ink-primary);flex:1;margin-right:1rem}.investment-name-input:focus{outline:none;border-bottom-color:var(--accent)}.btn-delete-investment{background:none;border:1px solid var(--rule);color:var(--ink-secondary);padding:.35rem .75rem;border-radius:var(--radius-sm);font-size:.75rem;font-family:var(--font-sans);cursor:pointer;transition:all .15s}.btn-delete-investment:hover{border-color:var(--negative);color:var(--negative)}.btn-delete-investment.confirm{background:var(--negative);border-color:var(--negative);color:#fff}.investment-type-selector{display:flex;gap:.5rem;margin-bottom:1rem}.type-btn{flex:1;padding:.5rem 1rem;background:var(--bg-surface-warm);border:1px solid var(--rule);border-radius:var(--radius-sm);cursor:pointer;font-size:.875rem;font-family:var(--font-sans);color:var(--ink-secondary);transition:all .15s}.type-btn:hover{background:var(--rule-light)}.type-btn.active{background:var(--accent);border-color:var(--accent);color:#fff}.investment-fields{display:flex;flex-direction:column;gap:.75rem}.investment-field{display:flex;flex-direction:column;gap:.3rem}.investment-field label{font-size:.65rem;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-tertiary);font-weight:600}.investment-field input,.investment-field select{padding:.55rem .65rem;border:1px solid var(--rule);border-radius:var(--radius-sm);font-size:.875rem;font-family:var(--font-sans);color:var(--ink-primary);background:var(--bg-surface)}.investment-field input:focus,.investment-field select:focus{outline:none;border-color:var(--accent)}.investment-field input:disabled{background:var(--bg-surface-warm);border-style:dashed;color:var(--ink-secondary);cursor:default}.investment-divider{height:1px;background:var(--rule-light);margin:1rem 0}.costs-section{margin-top:.5rem}.costs-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.costs-label{font-size:.65rem;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-tertiary);font-weight:600}.btn-add-cost{padding:.25rem .75rem;background:transparent;border:1px solid var(--accent);border-radius:var(--radius-sm);cursor:pointer;font-size:.75rem;font-family:var(--font-sans);color:var(--accent);transition:all .15s}.btn-add-cost:hover{background:var(--accent);color:#fff}.costs-list{display:flex;flex-direction:column;gap:.5rem}.no-costs{font-size:.875rem;color:var(--ink-tertiary);font-style:italic}.costs-total{font-size:.75rem;font-weight:600;color:var(--ink-secondary);text-align:right;padding:.25rem .5rem 0}.costs-total-pct{margin-left:.5rem;font-weight:400;color:var(--ink-tertiary)}.cost-input{background:var(--bg-surface-warm);border-radius:var(--radius-sm);padding:.5rem}.cost-input-row{display:flex;align-items:center;gap:.5rem}.cost-field{display:flex;align-items:center}.cost-name{flex:2}.cost-name input{width:100%;padding:.375rem .5rem;border:1px solid var(--rule);border-radius:var(--radius-sm);font-size:.875rem;font-family:var(--font-sans);color:var(--ink-primary);background:var(--bg-surface)}.cost-name input:focus{outline:none;border-color:var(--accent)}.cost-value{flex:1}.cost-value input{width:100%;padding:.375rem .5rem;border:1px solid var(--rule);border-radius:var(--radius-sm);font-size:.875rem;font-family:var(--font-sans);color:var(--ink-primary);background:var(--bg-surface);text-align:right}.cost-value input:focus{outline:none;border-color:var(--accent)}.cost-type{display:flex;gap:0}.type-toggle{padding:.375rem .5rem;border:1px solid var(--rule);background:var(--bg-surface);cursor:pointer;font-size:.75rem;font-family:var(--font-sans);color:var(--ink-secondary)}.type-toggle:first-child{border-radius:var(--radius-sm) 0 0 var(--radius-sm)}.type-toggle:not(:first-child){border-left:none}.type-toggle:last-child{border-radius:0 var(--radius-sm) var(--radius-sm) 0}.type-toggle.active{background:var(--accent);border-color:var(--accent);color:#fff}.cost-notes{width:100%;resize:none;overflow:hidden;font-size:.75rem;font-family:var(--font-sans);border:none;background:transparent;padding:.2rem 0;min-height:1.4em;line-height:1.4;color:var(--ink-secondary);outline:none}.cost-notes::placeholder{color:var(--ink-tertiary);opacity:.6}.cost-delete{padding:.25rem .5rem;border:none;background:none;cursor:pointer;font-size:1rem;color:var(--ink-tertiary)}.cost-delete:hover{color:var(--negative)}.cost-calculated{font-size:.75rem;color:var(--ink-secondary);text-align:right;margin-top:.25rem}.investment-metrics{display:flex;flex-direction:column;gap:.35rem}.metric-row{display:flex;justify-content:space-between;align-items:center;padding:.55rem .85rem;background:var(--bg-surface-warm);border-radius:var(--radius-sm)}.metric-row.highlight{background:var(--accent-light);border:1px solid rgba(201,85,61,.15)}.metric-row.info{background:transparent;border:1px dashed var(--rule)}.metric-label{font-size:.8rem;color:var(--ink-secondary)}.metric-value{font-size:.85rem;font-weight:700;font-variant-numeric:tabular-nums;color:var(--ink-primary)}.metric-value.positive{color:var(--positive)}.metric-value.negative{color:var(--negative)}.metric-divider{height:1px;background:var(--rule-light);margin:.25rem 0}.investments-list,.loans-list{display:flex;flex-direction:column;gap:1rem}.settings-tab{display:flex;flex-direction:column;gap:2rem}.settings-section h3{font-family:var(--font-serif);font-size:1.1rem;font-weight:600;margin-bottom:.5rem}.settings-hint{font-size:.8rem;color:var(--ink-tertiary);margin-bottom:1rem}.currency-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:.75rem}.currency-card{border:1px solid var(--rule-light);border-radius:var(--radius-md);padding:1rem;background:var(--bg-surface);transition:box-shadow .2s,border-color .2s;position:relative}.currency-card:hover{box-shadow:var(--shadow-md)}.currency-card.default{border-color:var(--accent)}.currency-card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.currency-symbol{font-size:1.2rem;font-weight:600;color:var(--ink-primary)}.currency-card-body{display:flex;flex-direction:column;gap:.15rem;margin-bottom:.5rem}.currency-code{font-size:.85rem;font-weight:600}.currency-name{font-size:.7rem;color:var(--ink-tertiary)}.btn-set-default{width:100%;padding:.3rem;font-size:.7rem;font-family:var(--font-sans);background:transparent;border:1px solid var(--rule-light);border-radius:var(--radius-sm);cursor:pointer;color:var(--ink-secondary);transition:all .15s}.btn-set-default:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.btn-set-default.active{background:var(--accent);border-color:var(--accent);color:#fff;cursor:default}.btn-remove-currency{position:absolute;top:1.2rem;right:1rem;display:flex;align-items:center;justify-content:center;background:none;border:none;padding:0;cursor:pointer;color:var(--negative);transition:opacity .15s}.btn-remove-currency:hover{opacity:.7}.currency-card-add{border:2px dashed var(--rule);border-radius:var(--radius-md);background:transparent;display:flex;align-items:center;justify-content:center;min-height:0;cursor:pointer;font-family:var(--font-sans);transition:all .2s}.currency-card-add:hover{border-color:var(--accent);background:var(--accent-light)}.currency-card-add.active{cursor:default;align-items:flex-start;border-color:var(--accent)}.currency-add-icon{font-size:1.6rem;font-weight:300;color:var(--ink-tertiary);line-height:1;transition:color .2s}.currency-card-add:hover .currency-add-icon{color:var(--accent)}.currency-add-select{width:100%;padding:.5rem;border:1px solid var(--rule);border-radius:var(--radius-sm);font-size:.8rem;font-family:var(--font-sans);color:var(--ink-primary);background:var(--bg-surface)}.currency-add-select:focus{outline:none;border-color:var(--accent)}.rates-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem}.rates-header h3{margin-bottom:0}.btn-sync{padding:.4rem 1rem;font-size:.8rem;font-family:var(--font-sans);background:var(--accent);border:none;border-radius:var(--radius-sm);color:#fff;cursor:pointer;transition:opacity .15s}.btn-sync:hover:not(:disabled){opacity:.85}.btn-sync:disabled{opacity:.5;cursor:not-allowed}.rates-table{width:100%;border-collapse:collapse}.rates-table th,.rates-table td{padding:.5rem .75rem;text-align:left;font-size:.85rem;border-bottom:1px solid var(--rule-light)}.rates-table th{font-size:.7rem;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-tertiary);font-weight:600}.rates-table td{background:var(--bg-surface)}.stress-panel{position:fixed;bottom:0;left:var(--sidebar-width);right:0;background:var(--bg-surface);box-shadow:0 -2px 12px #00000014;z-index:20;transition:max-height .25s ease;overflow:hidden;border-top:2px solid var(--rule-light)}.stress-panel.collapsed{max-height:36px}.stress-panel.expanded{max-height:280px}.stress-panel.active{border-top-color:#a68940}.stress-panel-handle{display:flex;justify-content:space-between;align-items:center;width:100%;padding:.5rem 1.25rem;background:var(--bg-surface-warm);border:none;cursor:pointer;font-family:var(--font-sans);font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-secondary)}.stress-panel.active .stress-panel-handle{color:#a68940}.stress-panel-handle:hover{background:var(--rule-light)}.stress-panel-label{display:flex;align-items:center;gap:.5rem}.stress-panel-badge{display:inline-block;width:7px;height:7px;border-radius:50%;background:#a68940}.stress-panel-chevron{font-size:.6rem;line-height:1}.stress-panel-content{padding:1rem 1.25rem;overflow-y:auto;max-height:230px;display:flex;flex-direction:column;gap:.75rem}.stress-panel-rates{display:flex;flex-direction:column;gap:.5rem}.stress-panel-row{display:flex;align-items:center;gap:1rem}.stress-panel-pair{font-size:.85rem;color:var(--ink-secondary);min-width:120px;font-variant-numeric:tabular-nums;flex-shrink:0}.slider-with-markers{flex:1;min-width:120px;position:relative}.slider-with-markers .stress-panel-slider{width:100%}.slider-markers{position:relative;height:16px}.slider-marker{position:absolute;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;background:none;border:none;padding:0;cursor:pointer;gap:1px}.slider-marker-tick{width:1px;height:5px;background:var(--ink-tertiary)}.slider-marker-label{font-size:.55rem;color:var(--ink-tertiary);white-space:nowrap;line-height:1}.slider-marker:hover .slider-marker-label{color:var(--ink-primary)}.stress-panel-row.with-markers{align-items:flex-start}.stress-panel-slider{flex:1;min-width:120px;height:4px;-moz-appearance:none;appearance:none;-webkit-appearance:none;background:var(--rule);border-radius:2px;outline:none;cursor:pointer}.stress-panel-slider::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;border-radius:50%;background:var(--ink-secondary);border:2px solid var(--bg-surface);box-shadow:0 1px 3px #00000026;cursor:pointer}.stress-panel-row.overridden .stress-panel-slider::-webkit-slider-thumb{background:#a68940}.stress-panel-value{font-size:.85rem;font-variant-numeric:tabular-nums;color:var(--ink-primary);min-width:65px;text-align:right;flex-shrink:0}.stress-panel-pct{font-size:.75rem;font-weight:600;font-variant-numeric:tabular-nums;min-width:50px;text-align:right;flex-shrink:0}.stress-panel-pct.positive{color:var(--positive)}.stress-panel-pct.negative{color:var(--negative)}.stress-panel-reset{align-self:flex-start}.stress-panel-section{display:flex;flex-direction:column;gap:.5rem}.stress-panel-section-label{font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-tertiary)}.stress-range-field{display:flex;align-items:center;gap:.35rem}.stress-range-field input{width:70px;padding:.5rem .65rem;border:1px solid var(--rule);border-radius:var(--radius-sm);font-size:.875rem;font-family:var(--font-sans);color:var(--ink-primary);background:var(--bg-surface)}.stress-range-field input:focus{outline:none;border-color:var(--accent)}.stress-range-unit{font-size:.85rem;color:var(--ink-secondary);font-weight:500}.reference-rates-grid{display:flex;flex-direction:column;gap:.5rem}.reference-rate-row{display:flex;align-items:center;gap:.75rem}.reference-rate-label{font-size:.85rem;font-weight:600;color:var(--ink-primary);min-width:40px}.benchmark-select{padding:.4rem .5rem;border:1px solid var(--rule);border-radius:var(--radius-sm);font-size:.8rem;font-family:var(--font-sans);color:var(--ink-primary);background:var(--bg-surface);min-width:120px}.benchmark-select:focus{outline:none;border-color:var(--accent)}.resale-panel{margin-top:.5rem;padding:.65rem .85rem;background:var(--bg-surface-warm);border-radius:var(--radius-sm);border:1px dashed var(--rule)}.resale-panel-toggle{display:flex;align-items:center;gap:.35rem;background:none;border:none;padding:0;margin-bottom:.5rem;cursor:pointer;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-tertiary)}.resale-panel-chevron{display:inline-block;transition:transform .15s ease;font-size:.7rem}.resale-panel-chevron.open{transform:rotate(90deg)}.resale-panel-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:.5rem;text-align:center}.resale-panel-col{display:flex;flex-direction:column;gap:.15rem}.resale-panel-header{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-tertiary)}.resale-panel-value{font-size:.85rem;font-weight:700;font-variant-numeric:tabular-nums}.resale-panel-value.positive{color:var(--positive)}.resale-panel-value.negative{color:var(--negative)}.resale-panel-pct{font-size:.7rem;font-weight:600}.resale-panel-pct.positive{color:var(--positive)}.resale-panel-pct.negative{color:var(--negative)}.resale-breakdown{display:flex;flex-direction:column;gap:.2rem;margin-top:.4rem;padding-top:.4rem;border-top:1px solid var(--rule-light);text-align:left}.resale-breakdown-row{display:flex;justify-content:space-between;font-size:.7rem;color:var(--ink-secondary);font-variant-numeric:tabular-nums}.resale-breakdown-row.subtract{color:var(--ink-tertiary)}.resale-breakdown-row.result{font-weight:700;color:var(--ink-primary);padding-top:.15rem;border-top:1px solid var(--rule-light)}.resale-breakdown-row.result.positive{color:var(--positive)}.resale-breakdown-row.result.negative{color:var(--negative)}.resale-breakdown-row.info{color:var(--ink-tertiary);font-style:italic;padding-top:.15rem}.loan-rate-decomposition{font-size:.75rem;color:var(--ink-tertiary);padding:.25rem 0}
