#mortgage-rate-visualizer{--principal-series: var(--viz-series-1);--interest-series: var(--viz-series-2);--balance-series: var(--viz-series-5);display:grid;gap:24px}.mortgage-shell{max-width:1380px}#mortgage-rate-visualizer h2{margin:0;font-size:clamp(18px,2vw,22px);font-weight:var(--font-weight-medium);letter-spacing:-.015em}.mortgage-topbar{display:grid;grid-template-columns:1fr auto 1fr}.mortgage-topbar .artifact-title{text-align:center}.language-switch{display:inline-flex;justify-self:end;padding:3px;border:1px solid var(--input);border-radius:999px;background:var(--card)}.language-switch button{min-width:38px;min-height:30px;padding:4px 8px;border:0;border-radius:999px;color:var(--muted-foreground);background:transparent;font:inherit;font-weight:var(--font-weight-medium);cursor:pointer}.language-switch button[aria-pressed=true]{color:var(--primary-foreground);background:var(--primary)}.language-switch button:focus-visible{outline:3px solid color-mix(in srgb,var(--ring) 42%,transparent);outline-offset:2px}.section-heading{display:flex;align-items:end;justify-content:space-between;gap:22px}.mode-switch,.button-row{display:flex;flex-wrap:wrap;gap:6px}.mode-switch{flex:0 0 auto;padding:4px;border:1px solid var(--input);border-radius:999px;background:var(--card)}.mode-switch button,.button-row button{min-height:34px;padding:6px 12px;border:1px solid var(--input);border-radius:999px;color:var(--foreground);background:transparent;font:inherit;cursor:pointer}.mode-switch button{border-color:transparent}.mode-switch button[aria-pressed=true],.button-row button:hover{color:var(--primary-foreground);background:var(--primary)}.mode-switch button:focus-visible,.button-row button:focus-visible,.overview-bank:focus-visible{outline:3px solid color-mix(in srgb,var(--ring) 42%,transparent);outline-offset:2px}.mortgage-controls{display:grid;gap:12px;padding:0 0 18px;border-bottom:1px solid var(--border)}.controls-top{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px 20px}.preset-row{display:flex;flex-wrap:wrap;align-items:center;gap:10px}.mortgage-input-grid,.rate-input-grid{display:grid;grid-template-columns:repeat(4,minmax(145px,1fr));gap:12px}.rate-input-grid{grid-template-columns:repeat(auto-fit,minmax(190px,1fr))}#mortgage-rate-visualizer .form-label{display:grid;align-content:start;gap:6px;font-weight:var(--font-weight-medium)}#mortgage-rate-visualizer [hidden]{display:none!important}.input-with-unit{position:relative;display:block}.input-prefix,.input-suffix{position:absolute;z-index:1;top:50%;color:var(--muted-foreground);transform:translateY(-50%);pointer-events:none}.input-prefix{left:11px}.input-suffix{right:11px}.input-prefix+.form-control{padding-left:27px}.input-with-unit .form-control:has(+.input-suffix){padding-right:32px}.sync-note,.rate-path-note,.benchmark-data-status{margin:0}.benchmark-data-status{color:var(--muted-foreground)}.benchmark-data-status[data-status=live]{color:var(--foreground)}.sync-note{color:var(--primary)}.sync-note:empty{display:none}.rate-details{border-top:1px solid var(--border)}.rate-details summary{padding:11px 0 0;color:var(--muted-foreground);cursor:pointer}.rate-details summary:focus-visible,.secondary-details summary:focus-visible{outline:3px solid color-mix(in srgb,var(--ring) 42%,transparent);outline-offset:3px}.rate-details-content{display:grid;gap:10px;padding-top:13px}.rate-arithmetic{display:inline-flex;flex-wrap:wrap;align-items:baseline;gap:5px 12px;margin-left:8px;color:var(--foreground)}.rate-arithmetic strong{font-weight:var(--font-weight-medium)}.rate-arithmetic span{color:var(--muted-foreground)}.benchmark-history{display:grid;gap:8px;padding-top:12px;border-top:1px solid var(--border)}.benchmark-history-header,.benchmark-history-footer{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:6px 16px}#mortgage-rate-visualizer .benchmark-history h2{display:inline;margin-right:8px;font-size:inherit;letter-spacing:normal}.history-range-switch{display:inline-flex;gap:2px;padding:2px;border:1px solid var(--input);border-radius:999px}.history-range-switch button{min-width:39px;min-height:28px;padding:3px 8px;border:0;border-radius:999px;color:var(--muted-foreground);background:transparent;font:inherit;cursor:pointer}.history-range-switch button[aria-pressed=true]{color:var(--primary-foreground);background:var(--primary)}.history-range-switch button:focus-visible{outline:3px solid color-mix(in srgb,var(--ring) 42%,transparent);outline-offset:2px}.benchmark-history-chart-wrap{position:relative;min-width:0}.benchmark-history-chart{display:block;width:100%;height:auto;overflow:visible}.benchmark-history-chart .history-grid-line{stroke:var(--border);stroke-width:1}.benchmark-history-chart .history-axis-label{fill:var(--muted-foreground);font-size:11px}.benchmark-history-chart .history-line{fill:none;stroke:var(--viz-series-1);stroke-width:2.5;vector-effect:non-scaling-stroke}.benchmark-history-chart .history-point{fill:var(--background);stroke:var(--viz-series-1);stroke-width:2;vector-effect:non-scaling-stroke}.benchmark-history-chart .history-selection-line{stroke:var(--foreground);stroke-width:1;stroke-dasharray:2 4;opacity:.5}.benchmark-history-chart .history-latest-label{fill:var(--foreground);font-weight:var(--font-weight-medium)}.benchmark-history-chart .interaction-layer{fill:transparent;cursor:crosshair}.benchmark-history-footer{color:var(--muted-foreground)}.benchmark-history-footer p{margin:0}.benchmark-history-footer a{color:inherit;text-underline-offset:2px}.mortgage-section{display:grid;gap:13px;align-content:start}.analysis-grid{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:30px;align-items:start}.analysis-grid .section-heading{align-items:start;flex-direction:column;gap:6px}.analysis-grid :is(.bar-legend,.line-legend){justify-content:start}.ltv-matrix-shell{position:relative;min-width:0;border:1px solid var(--border);border-radius:var(--radius-lg)}.ltv-matrix-wrap{overflow-x:auto;border-radius:inherit;overscroll-behavior-inline:contain}.ltv-scroll-hint{margin-left:auto;visibility:hidden;white-space:nowrap}.ltv-scroll-edge{position:absolute;top:1px;right:1px;bottom:1px;width:34px;border-radius:0 calc(var(--radius-lg) - 1px) calc(var(--radius-lg) - 1px) 0;background:linear-gradient(to right,transparent,var(--background));opacity:0;pointer-events:none;transition:opacity .14s ease}.ltv-section.has-scroll-more .ltv-scroll-hint{visibility:visible}.ltv-section.has-scroll-more .ltv-scroll-edge{opacity:.92}.ltv-matrix{width:100%;border-collapse:collapse;table-layout:fixed}.ltv-matrix.is-wide{min-width:840px}.ltv-matrix :is(th,td){padding:11px 10px;border-right:1px solid var(--border);border-bottom:1px solid var(--border);text-align:left;vertical-align:top}.ltv-matrix :is(th,td):last-child{border-right:0}.ltv-matrix tbody tr:last-child :is(th,td){border-bottom:0}.ltv-matrix thead th{color:var(--muted-foreground);background:color-mix(in srgb,var(--muted) 62%,transparent);font-weight:var(--font-weight-medium)}.ltv-matrix thead th:first-child{width:14%}.ltv-matrix thead th strong,.ltv-matrix thead th a,.ltv-matrix tbody th strong,.ltv-matrix tbody th span,.ltv-matrix td strong,.ltv-matrix td span,.ltv-matrix td small{display:block}.ltv-matrix thead th a,.ltv-matrix tbody th span,.ltv-matrix td small{margin-top:2px;color:var(--muted-foreground);font-size:var(--font-size-small);font-weight:400}.matrix-bank-name{display:block;color:var(--foreground);font-weight:var(--font-weight-medium)}.matrix-source-link{display:block;margin-top:2px;color:var(--muted-foreground);font-size:var(--font-size-small);font-weight:400;text-decoration-thickness:1px;text-underline-offset:3px}.matrix-metrics{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"rate spread" "payment spread";gap:2px 8px;align-items:baseline}.matrix-metrics.is-finished{grid-template-columns:1fr;grid-template-areas:"rate" "payment"}.ltv-matrix .matrix-spread{grid-area:spread;justify-self:end;color:var(--foreground);font-size:clamp(15px,1.35vw,18px);font-weight:var(--font-weight-medium);letter-spacing:-.015em;white-space:nowrap}.ltv-matrix .matrix-rate{grid-area:rate;display:inline-flex;align-items:baseline;justify-content:start;gap:3px;color:var(--foreground);font-weight:var(--font-weight-medium);white-space:nowrap}.ltv-matrix .matrix-rate strong,.ltv-matrix .matrix-rate small{display:inline;margin:0}.ltv-matrix .matrix-payment{grid-area:payment;margin-top:0;color:var(--muted-foreground);white-space:nowrap}.ltv-matrix tr.is-current{background:color-mix(in srgb,var(--primary) 7%,transparent)}.ltv-matrix tr.is-current th strong{color:var(--primary)}.ltv-matrix .matrix-unavailable{color:var(--muted-foreground);vertical-align:middle}.bar-legend,.line-legend{display:flex;flex-wrap:wrap;justify-content:end;gap:7px 14px;color:var(--muted-foreground)}.bar-legend span,.line-legend span{display:inline-flex;align-items:center;gap:5px}.bar-legend i{width:18px;height:9px;border-radius:2px}.legend-principal{background:var(--principal-series)}.legend-interest{border:1px solid var(--interest-series);background:repeating-linear-gradient(135deg,color-mix(in srgb,var(--interest-series) 78%,transparent) 0 3px,transparent 3px 6px)}.overview-chart{display:grid;gap:9px}.overview-bank{display:grid;grid-template-columns:minmax(120px,.65fr) minmax(220px,2fr) minmax(92px,auto);align-items:center;gap:12px;width:100%;padding:8px;border:1px solid transparent;border-radius:var(--radius-lg);color:var(--foreground);background:transparent;text-align:left;font:inherit;cursor:pointer}.overview-bank:hover,.overview-bank[aria-pressed=true]{border-color:var(--border);background:color-mix(in srgb,var(--card) 72%,transparent)}.overview-bank.projected .overview-bar{outline:1px dashed var(--muted-foreground);outline-offset:3px}.overview-label{display:grid;gap:2px}.overview-bar-track{height:25px}.overview-bar{display:flex;height:100%;min-width:2px;overflow:hidden;border-radius:5px}.overview-principal{background:var(--principal-series)}.overview-interest{background:repeating-linear-gradient(135deg,color-mix(in srgb,var(--interest-series) 84%,transparent) 0 5px,color-mix(in srgb,var(--interest-series) 40%,transparent) 5px 9px)}.overview-total{text-align:right;white-space:nowrap}.comparison-table-wrap{min-width:0}.comparison-sort-controls{display:none}.comparison-table{width:100%;border-collapse:collapse;font-size:12px}.comparison-table th,.comparison-table td{padding:10px 8px;border-bottom:1px solid var(--border);text-align:right;vertical-align:middle}.comparison-table th{color:var(--muted-foreground);font-weight:var(--font-weight-medium);white-space:nowrap}.comparison-sort-button{display:inline-flex;width:100%;align-items:center;justify-content:flex-end;gap:5px;padding:0;border:0;color:inherit;background:transparent;font:inherit;cursor:pointer}.comparison-table th:first-child .comparison-sort-button,.comparison-table th:last-child .comparison-sort-button{justify-content:flex-start}.comparison-sort-button:hover{color:var(--foreground)}.comparison-sort-button:focus-visible{border-radius:3px;outline:2px solid var(--ring);outline-offset:3px}.sort-indicator{min-width:1ch;color:var(--primary)}.comparison-table :is(th,td):first-child,.comparison-table :is(th,td):last-child{text-align:left}.comparison-table tr.is-selected{background:color-mix(in srgb,var(--primary) 7%,transparent)}.profile-label{display:inline-grid;gap:1px;min-width:112px;text-align:left}.profile-label small{color:var(--muted-foreground)}.profile-select{justify-self:start;padding:0;border:0;color:var(--foreground);background:transparent;font:inherit;font-weight:var(--font-weight-medium);text-align:left;cursor:pointer}.profile-select:hover{text-decoration:underline;text-underline-offset:2px}.profile-select:focus-visible{outline:2px solid var(--ring);outline-offset:2px}.profile-label a{color:var(--muted-foreground);text-underline-offset:2px}.spread-editor{display:inline-flex;align-items:center;gap:4px;white-space:nowrap}.spread-input{width:62px;min-height:32px;padding:0 6px;border:1px solid var(--input);border-radius:8px;color:var(--foreground);background:var(--secondary);font:inherit;text-align:right}.spread-input:focus-visible{outline:2px solid var(--ring);outline-offset:1px}.qualification{max-width:210px;color:var(--muted-foreground);line-height:1.35}.unavailable-row td:not(:first-child){color:var(--muted-foreground)}.detail-chart-wrap{position:relative;min-width:0}.detail-chart{display:block;width:100%;height:auto;overflow:visible}.detail-chart .grid-line,.detail-chart .axis-line{stroke:var(--border);stroke-width:1}.detail-chart .axis-label{fill:var(--muted-foreground);font-size:11px}.detail-chart .principal-line,.detail-chart .interest-line,.detail-chart .balance-line{fill:none;stroke-width:2.5;vector-effect:non-scaling-stroke}.detail-chart .principal-line{stroke:var(--principal-series)}.detail-chart .interest-line{stroke:var(--interest-series);stroke-dasharray:7 5}.detail-chart .balance-line{stroke:var(--balance-series);stroke-dasharray:2 4}.detail-chart .selection-line{stroke:var(--foreground);stroke-width:1;stroke-dasharray:2 4;opacity:.55}.detail-chart .interaction-layer{fill:transparent;cursor:crosshair}.chart-tooltip{position:absolute;transform:translate(-50%,calc(-100% - 12px))}.selected-year-detail{min-height:21px;margin:0;color:var(--muted-foreground)}.line-legend i{display:inline-block;width:18px;height:0;border-top:2px solid}.line-principal{color:var(--principal-series)}.line-interest{color:var(--interest-series);border-top-style:dashed!important}.line-balance{color:var(--balance-series);border-top-style:dotted!important}.secondary-details{border-top:1px solid var(--border)}.secondary-details summary{padding:14px 0;font-weight:var(--font-weight-medium);cursor:pointer}.secondary-details[open] summary{margin-bottom:10px;border-bottom:1px solid var(--border)}.methodology-content{max-width:860px;padding:0 0 8px;color:var(--muted-foreground);line-height:1.55}.methodology-content a{color:var(--primary)}.bank-sources{margin:16px 0}.bank-sources h3{margin:0 0 6px;color:var(--foreground);font-size:inherit;font-weight:var(--font-weight-medium)}.bank-sources ul{display:grid;gap:6px;margin:0;padding-left:20px}@media(max-width:920px){.analysis-grid{grid-template-columns:1fr;gap:24px}.mortgage-input-grid{grid-template-columns:repeat(2,minmax(150px,1fr))}.rate-input-grid{grid-template-columns:repeat(2,minmax(180px,1fr))}.comparison-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.comparison-sort-controls{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:8px;align-items:center;margin-bottom:10px;color:var(--muted-foreground);font-size:12px}.comparison-sort-controls :is(select,button){min-height:34px;padding:6px 9px;border:1px solid var(--input);border-radius:var(--radius-md);color:var(--foreground);background:var(--card);font:inherit}.comparison-sort-controls button{display:inline-flex;align-items:center;gap:5px;cursor:pointer}.comparison-sort-controls button:disabled{cursor:default;opacity:.5}.comparison-table,.comparison-table tbody,.comparison-table tr,.comparison-table td{display:block;width:100%}.comparison-table tbody{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));gap:10px}.comparison-table tr{overflow:hidden;border:1px solid var(--border);border-radius:var(--radius-lg)}.comparison-table th,.comparison-table td,.comparison-table :is(th,td):first-child,.comparison-table :is(th,td):last-child{display:grid;grid-template-columns:minmax(105px,.8fr) minmax(0,1.2fr);gap:10px;align-items:center;padding:7px 10px;text-align:right}.comparison-table td:before{content:attr(data-label);color:var(--muted-foreground);text-align:left}.comparison-table td:first-child{background:color-mix(in srgb,var(--muted) 70%,transparent)}.comparison-table .qualification{max-width:none}.profile-label{justify-self:end;min-width:0}}@media(max-width:680px){.section-heading{align-items:stretch;flex-direction:column}.ltv-heading{align-items:baseline;flex-direction:row}.mode-switch{display:inline-flex;align-self:start;width:max-content;max-width:100%}.mortgage-input-grid,.rate-input-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}#mortgage-rate-visualizer .form-label{gap:4px}.overview-bank{grid-template-columns:minmax(0,1fr) auto}.overview-bar-track{grid-column:1 / -1;grid-row:2}.overview-total{grid-column:2;grid-row:1}.bar-legend,.line-legend{justify-content:start}}@media(max-width:620px){.mortgage-topbar{grid-template-columns:auto minmax(0,1fr) auto;gap:10px;margin-bottom:10px}.mortgage-topbar .back-link{grid-column:1;grid-row:1}.mortgage-topbar .language-switch{grid-column:3;grid-row:1}.mortgage-topbar .artifact-title{grid-column:2;grid-row:1;overflow:hidden;text-align:center;text-overflow:ellipsis;white-space:nowrap}.controls-top{align-items:center;flex-wrap:nowrap;gap:8px}.preset-row{flex:1 1 auto;min-width:0;overflow-x:auto;scrollbar-width:none}.preset-row::-webkit-scrollbar{display:none}.preset-row .button-row{flex-wrap:nowrap}.preset-row button{flex:0 0 auto}.ltv-matrix :is(th,td){padding:9px 6px;font-size:11px}.ltv-matrix:not(.is-wide) .matrix-metrics{grid-template-columns:1fr;grid-template-areas:"rate" "spread" "payment";gap:1px}.ltv-matrix:not(.is-wide) .matrix-spread{justify-self:start;font-size:inherit}.ltv-matrix thead th:first-child{width:105px}.ltv-matrix :is(thead,tbody) :is(th,td):first-child{position:sticky;left:0;z-index:1;background:var(--background)}.ltv-matrix thead th:first-child{z-index:2;background:color-mix(in srgb,var(--muted) 62%,var(--background))}}@media(max-width:390px){.mortgage-topbar{grid-template-columns:1fr auto}.mortgage-topbar .artifact-title{grid-column:1 / -1;grid-row:2;text-align:left}.mortgage-topbar .language-switch{grid-column:2}}
