:root{--ink:#07151c;--ink-soft:#0e2430;--panel:#0e2430b8;--line:#b4d2c824;--mist:#c5d8cf;--fog:#8aa39a;--sage:#6fbf9a;--sage-deep:#3d8f6e;--amber:#e6b35a;--coral:#e07a5f;--text:#eef4f1;--muted:#9bb0a8;--radius:18px;--font-display:"Fraunces", Georgia, serif;--font-body:"Manrope", system-ui, sans-serif;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font-family:var(--font-body);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased}*,:before,:after{box-sizing:border-box}html,body,#root{min-height:100%}body{color:var(--text);background-color:#0000;background-image:radial-gradient(1200px 700px at 10% -10%,#6fbf9a2e,#0000 55%),radial-gradient(900px 600px at 95% 15%,#e6b35a1a,#0000 50%),radial-gradient(800px 500px at 50% 110%,#3d8f6e26,#0000 55%),linear-gradient(165deg,#051018 0%,#0a1c26 45%,#07151c 100%);background-position:0 0,0 0,0 0,0 0;background-repeat:repeat,repeat,repeat,repeat;background-size:auto,auto,auto,auto;background-attachment:fixed;background-origin:padding-box,padding-box,padding-box,padding-box;background-clip:border-box,border-box,border-box,border-box;margin:0}body:before{content:"";pointer-events:none;opacity:.045;z-index:0;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");position:fixed;inset:0}button,input,select{font:inherit}a{color:var(--sage)}.app{z-index:1;width:min(1120px,100% - 2rem);margin:0 auto;padding:2.5rem 0 4rem;position:relative}.brand{flex-direction:column;gap:.55rem;margin-bottom:2rem;animation:.7s ease-out both rise;display:flex}.brand h1{font-family:var(--font-display);letter-spacing:-.03em;margin:0;font-size:clamp(2.4rem,6vw,3.6rem);font-weight:700;line-height:.95}.brand p{max-width:36rem;color:var(--muted);margin:0;font-size:1.05rem;line-height:1.5}.mode-tabs{flex-wrap:wrap;gap:.55rem;margin-bottom:1.35rem;animation:.75s ease-out 40ms both rise;display:flex}.mode-tabs button{border:1px solid var(--line);color:var(--mist);cursor:pointer;background:#0a1c268c;border-radius:999px;padding:.55rem 1.1rem;font-size:.92rem;font-weight:600;transition:background .2s,color .2s,border-color .2s,transform .2s}.mode-tabs button.active,.mode-tabs button:hover{color:var(--text);background:#6fbf9a2e;border-color:#6fbf9a73}.mode-tabs button.active{transform:translateY(-1px)}.rates-panel{margin-bottom:1.35rem;animation:.75s ease-out 20ms both rise}.rates-head h2{margin-bottom:.35rem}.rates-sub{color:var(--muted);margin:0 0 1rem;font-size:.9rem}.boe-strip{background:linear-gradient(135deg,#e6b35a1f,#0a1c268c);border:1px solid #e6b35a47;border-radius:14px;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:1rem 1.5rem;margin-bottom:1rem;padding:1rem 1.1rem;display:flex}.boe-label{letter-spacing:.1em;text-transform:uppercase;color:var(--fog);margin-bottom:.25rem;font-size:.72rem;display:block}.boe-rate{font-family:var(--font-display);letter-spacing:-.03em;font-size:clamp(1.8rem,4vw,2.4rem)}.boe-meta{color:var(--mist);flex-wrap:wrap;gap:.55rem 1rem;font-size:.82rem;display:flex}.outlook-card{border:1px solid var(--line);background:#05101873;border-radius:14px;margin-bottom:1rem;padding:1rem 1.1rem}.outlook-badges{flex-wrap:wrap;gap:.45rem;margin-bottom:.65rem;display:flex}.outlook-badge{letter-spacing:.02em;border-radius:999px;align-items:center;padding:.28rem .7rem;font-size:.75rem;font-weight:700;display:inline-flex}.outlook-badge.hold{color:#f0d29a;background:#e6b35a2e;border:1px solid #e6b35a59}.outlook-badge.fall{color:#b7e4cd;background:#6fbf9a29;border:1px solid #6fbf9a59}.outlook-badge.rise{color:#f0b4a4;background:#e07a5f29;border:1px solid #e07a5f59}.outlook-card h3{font-family:var(--font-display);letter-spacing:-.02em;text-transform:none;color:var(--text);margin:0 0 .45rem;font-size:1.15rem}.outlook-headline{color:var(--mist);margin:0 0 .55rem;font-size:.95rem;line-height:1.45}.outlook-detail{color:var(--fog);margin:0 0 .75rem;font-size:.84rem;line-height:1.5}.outlook-odds{grid-template-columns:repeat(3,minmax(0,1fr));gap:.5rem;margin:0 0 .75rem;padding:0;list-style:none;display:grid}@media (width<=700px){.outlook-odds{grid-template-columns:1fr}}.outlook-odds li{border:1px solid var(--line);color:var(--mist);background:#0e24308c;border-radius:10px;justify-content:space-between;gap:.5rem;padding:.55rem .7rem;font-size:.82rem;display:flex}.outlook-odds strong{color:var(--text);font-variant-numeric:tabular-nums}.outlook-mortgage{color:var(--mist);margin:0 0 .55rem;font-size:.86rem;line-height:1.45}.suggest-line{color:var(--mist);margin:0 0 1rem;font-size:.92rem}.rates-grid{grid-template-columns:1fr 1fr;gap:1rem;margin-bottom:1rem;display:grid}@media (width<=860px){.rates-grid{grid-template-columns:1fr}}.rates-panel h3{letter-spacing:.08em;text-transform:uppercase;color:var(--fog);margin:0 0 .55rem;font-size:.78rem;font-weight:600}.rate-table-wrap{border:1px solid var(--line);border-radius:12px;overflow:auto}.rate-table-wrap table{margin:0}.rate-table-wrap tbody tr.row-active{background:#6fbf9a1a}.rate-chip{color:var(--text);cursor:pointer;font-variant-numeric:tabular-nums;background:#6fbf9a1f;border:1px solid #6fbf9a59;border-radius:999px;padding:.2rem .65rem;font-weight:700;transition:background .2s,border-color .2s}.rate-chip:hover{background:#6fbf9a47;border-color:#6fbf9a8c}.btl-rates{margin-bottom:.35rem}.rate-chips{flex-wrap:wrap;gap:.55rem;display:flex}.rate-pill{border:1px solid var(--line);color:var(--mist);cursor:pointer;text-align:left;background:#0510188c;border-radius:12px;flex-direction:column;align-items:flex-start;gap:.2rem;padding:.55rem .8rem;transition:border-color .2s,transform .2s;display:flex}.rate-pill strong{color:var(--text);font-variant-numeric:tabular-nums}.rate-pill:hover{border-color:#6fbf9a73;transform:translateY(-1px)}.hero{grid-template-columns:1.15fr .85fr;align-items:stretch;gap:1.25rem;margin-bottom:1.5rem;animation:.8s ease-out 80ms both rise;display:grid}@media (width<=860px){.hero{grid-template-columns:1fr}}.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);padding:1.35rem 1.4rem}.panel h2{letter-spacing:.12em;text-transform:uppercase;color:var(--fog);margin:0 0 1rem;font-size:.78rem;font-weight:600}.fields{grid-template-columns:1fr 1fr;gap:.9rem 1rem;display:grid}.fields .full{grid-column:1/-1}@media (width<=560px){.fields{grid-template-columns:1fr}}label{color:var(--mist);flex-direction:column;gap:.4rem;font-size:.82rem;display:flex}input[type=number],select{border:1px solid var(--line);width:100%;color:var(--text);background:#051018a6;border-radius:12px;outline:none;padding:.72rem .85rem;transition:border-color .2s,box-shadow .2s}input[type=number]:focus,select:focus{border-color:#6fbf9a8c;box-shadow:0 0 0 3px #6fbf9a26}.ltv-stage{flex-direction:column;justify-content:space-between;gap:1.25rem;min-height:100%;display:flex}.gauge-wrap{place-items:center;padding:.5rem 0 .25rem;display:grid}.gauge{aspect-ratio:1;width:min(240px,70vw);position:relative}.gauge svg{width:100%;height:100%;transform:rotate(-90deg)}.gauge .track{fill:none;stroke:#b4d2c81f;stroke-width:12px}.gauge .progress{fill:none;stroke:var(--sage);stroke-width:12px;stroke-linecap:round;transition:stroke-dashoffset .55s cubic-bezier(.22,1,.36,1),stroke .35s}.gauge.high .progress{stroke:var(--amber)}.gauge.critical .progress{stroke:var(--coral)}.gauge-centre{text-align:center;place-content:center;gap:.15rem;display:grid;position:absolute;inset:0}.gauge-centre .value{font-family:var(--font-display);letter-spacing:-.03em;font-size:clamp(2.4rem,7vw,3.1rem);font-weight:700;line-height:1;animation:2.8s ease-in-out infinite pulse-soft}.gauge-centre .label{letter-spacing:.14em;text-transform:uppercase;color:var(--fog);font-size:.75rem}.ltv-note{text-align:center;color:var(--mist);margin:0;font-size:.95rem;line-height:1.4}.metrics{grid-template-columns:repeat(4,1fr);gap:.9rem;margin-bottom:1.5rem;animation:.85s ease-out .14s both rise;display:grid}@media (width<=900px){.metrics{grid-template-columns:1fr 1fr}}.metric{border-radius:var(--radius);border:1px solid var(--line);background:#0a1c26b3;padding:1.1rem 1.15rem;transition:transform .25s,border-color .25s}.metric:hover{border-color:#6fbf9a59;transform:translateY(-2px)}.metric span{letter-spacing:.1em;text-transform:uppercase;color:var(--fog);margin-bottom:.45rem;font-size:.72rem;display:block}.metric strong{font-family:var(--font-display);letter-spacing:-.02em;font-size:1.45rem;font-weight:700}.metric.highlight{background:linear-gradient(160deg,#6fbf9a24,#0a1c26bf);border-color:#6fbf9a59}.sections{grid-template-columns:1fr 1fr;gap:1.1rem;animation:.9s ease-out .2s both rise;display:grid}@media (width<=860px){.sections{grid-template-columns:1fr}}.result-list{flex-direction:column;gap:.75rem;margin:0;padding:0;list-style:none;display:flex}.result-list li{border-bottom:1px solid var(--line);justify-content:space-between;align-items:baseline;gap:1rem;padding-bottom:.75rem;display:flex}.result-list li:last-child{border-bottom:0;padding-bottom:0}.result-list .k{color:var(--muted);font-size:.92rem}.result-list .v{font-variant-numeric:tabular-nums;font-weight:700}.hint{color:var(--fog);margin:.9rem 0 0;font-size:.8rem;line-height:1.45}.table-wrap{border:1px solid var(--line);border-radius:12px;max-height:280px;overflow:auto}table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:.82rem}th,td{text-align:right;border-bottom:1px solid var(--line);padding:.55rem .7rem}th:first-child,td:first-child{text-align:left}th{color:var(--fog);letter-spacing:.04em;text-transform:uppercase;background:#0e2430;font-size:.68rem;font-weight:600;position:sticky;top:0}.tabs{flex-wrap:wrap;gap:.5rem;margin-bottom:.9rem;display:flex}.tabs button{border:1px solid var(--line);color:var(--mist);cursor:pointer;background:0 0;border-radius:999px;padding:.4rem .85rem;transition:background .2s,color .2s,border-color .2s}.tabs button.active,.tabs button:hover{color:var(--text);background:#6fbf9a26;border-color:#6fbf9a66}.footer-note{color:var(--fog);margin-top:1.75rem;font-size:.78rem;line-height:1.45;animation:1s ease-out .25s both rise}@keyframes rise{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse-soft{0%,to{opacity:1}50%{opacity:.88}}
