:root{--c-navy:#172554;--c-blue:#2563eb;--c-amber:#f59e0b;--c-amber-light:#fef3c7;--c-amber-strong:#c2410c;--c-coral:#dc2626;--c-coral-light:#fef2f2;--c-teal:#0f766e;--c-teal-light:#d1fae5;--c-paper:#fffdf7;--c-surface:#fff;--c-mist:#f1f5f9;--c-text:#1e293b;--c-text-soft:#475569;--c-muted:#64748b;--c-border:#e2e8f0;--c-border-soft:#f1f5f9;--s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-5:24px;--s-6:32px;--s-7:48px;--s-8:64px;--r-sm:10px;--r-md:18px;--r-lg:24px;--shadow-rest:0 1px 2px #0f172a0f;--shadow-raised:0 14px 36px #0f172a1a;--shadow-deep:0 24px 70px #0f172a2e;--ff-sans:-apple-system, BlinkMacSystemFont, "Noto Sans TC", "PingFang TC", "Microsoft JhengHei", "Segoe UI", Roboto, sans-serif}*,:before,:after{box-sizing:border-box}html,body{background:var(--c-paper);color:var(--c-text);font-family:var(--ff-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;padding:0;font-size:16px;line-height:1.65}#root{min-height:100vh}button{cursor:pointer;font-family:inherit}a{color:inherit}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.app{background:var(--c-paper);min-height:100vh;color:var(--c-text)}.mortgage-hero{border-bottom:1px solid var(--c-border);background:linear-gradient(#fffdf7 0%,#f5efe3 100%);padding:3rem 2rem}.mortgage-hero-inner{width:100%;margin:0 auto}.mortgage-kicker{letter-spacing:.08em;color:var(--c-navy);background:#1e3a8a14;border-radius:999px;margin-bottom:1rem;padding:.4rem .9rem;font-size:.8125rem;font-weight:600;display:inline-block}.mortgage-hero h1{color:var(--c-text);margin:0 0 1rem;font-size:2rem;font-weight:800;line-height:1.3}.mortgage-subtitle{color:var(--c-text-soft);margin:0;font-size:1.0625rem;line-height:1.7}@media (width<=768px){.mortgage-hero{padding:2rem 1.25rem}.mortgage-hero h1{font-size:1.5rem}.mortgage-subtitle{font-size:.95rem}}.section-nav{z-index:50;-webkit-backdrop-filter:blur(10px);border-bottom:1px solid var(--c-border);-webkit-overflow-scrolling:touch;background:#fffdf7f5;gap:8px;padding:14px 32px;display:flex;position:sticky;top:0;overflow-x:auto;box-shadow:0 1px #0f172a0a}.section-nav a{color:var(--c-text-soft);white-space:nowrap;letter-spacing:.02em;border-radius:999px;padding:8px 16px;font-size:14px;font-weight:600;text-decoration:none;transition:background .15s,color .15s}.section-nav a:hover{background:var(--c-mist);color:var(--c-navy)}.app-main{width:100%;max-width:none;margin:0 auto;padding:0}.component-placeholder{border-bottom:1px solid #e5e7eb;padding:3rem 2rem}.component-placeholder h2{color:#1e3a8a;margin:0 0 .75rem;font-size:1.625rem}.placeholder-note{color:#92400e;background:#fef3c7;border-radius:.25rem;margin-top:1rem;padding:.5rem 1rem;font-family:ui-monospace,SFMono-Regular,monospace;font-size:.875rem;display:inline-block}.app-footer{text-align:center;color:#6b7280;border-top:1px solid #e5e7eb;margin-top:4rem;padding:2rem;font-size:.875rem}.footer-meta{opacity:.7;margin-top:.5rem;font-size:.75rem}@media (width>=1024px) and (width<=1366px) and (orientation:landscape){.hero{padding:2.5rem 3rem 3rem}.section-nav{padding:1rem 3rem}}.calc{padding:var(--s-6);background:var(--c-surface);border-bottom:1px solid var(--c-border)}.calc>h2,.calc>.calc-hint,.calc-inputs,.calc-output,.dual-engine-hint,.alert,.future-compare,.calc-summary{width:100%;max-width:100%;margin-left:auto;margin-right:auto}.calc h2{margin:0 0 var(--s-2);color:var(--c-navy);font-size:1.875rem;line-height:1.2}.calc-hint{color:#6b7280;margin:0 0 1.4rem;font-size:.875rem}.calc-inputs{border:1px solid var(--c-border);border-radius:var(--r-lg);background:linear-gradient(#fff,#f8fafc);grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem 1.35rem;margin-bottom:1.5rem;padding:1.15rem;display:grid}.input-group{flex-direction:column;gap:.45rem;min-width:0;display:flex}.input-label{color:#374151;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.5rem;font-size:.9375rem;font-weight:500;display:flex}.input-label strong{color:#1e3a8a;font-size:1.125rem;font-weight:700}.input-detail{color:#9ca3af;font-size:.75rem;font-weight:400}.option-line{border-top:1px solid var(--c-border-soft);grid-column:1/-1;grid-template-columns:6.25rem minmax(0,1fr);align-items:center;gap:.65rem;min-height:40px;padding-top:.1rem;display:grid}.option-line .input-label{color:var(--c-muted);justify-content:flex-start;font-size:.82rem;font-weight:750}.input-slider{appearance:none;cursor:pointer;background:#e5e7eb;border-radius:9999px;width:100%;height:.5rem}.input-slider:focus-visible{outline-offset:4px;outline:3px solid #1e3a8a73}.btn:focus-visible{outline-offset:2px;outline:3px solid #1e3a8a73}.input-slider::-webkit-slider-thumb{appearance:none;cursor:pointer;background:#1e3a8a;border:3px solid #fff;border-radius:50%;width:1.75rem;height:1.75rem;transition:transform .1s;box-shadow:0 2px 6px #1e3a8a40}.input-slider::-webkit-slider-thumb:hover{transform:scale(1.1)}.input-slider::-moz-range-thumb{cursor:pointer;background:#1e3a8a;border:3px solid #fff;border-radius:50%;width:1.75rem;height:1.75rem;box-shadow:0 2px 6px #1e3a8a40}.btn-row{flex-wrap:wrap;gap:.35rem;display:flex}.option-line .btn-row{-webkit-overflow-scrolling:touch;scrollbar-width:thin;flex-wrap:nowrap;align-items:center;padding-bottom:.1rem;overflow-x:auto}.btn{color:#374151;cursor:pointer;white-space:nowrap;background:#f3f4f6;border:1.5px solid #e5e7eb;border-radius:999px;min-width:3.4rem;min-height:2.1rem;padding:.4rem .7rem;font-family:inherit;font-size:.84rem;font-weight:650;transition:all .15s}.btn:hover{background:#e5e7eb;border-color:#d1d5db}.btn.active{color:#fff;background:#1e3a8a;border-color:#1e3a8a;box-shadow:0 2px 4px #1e3a8a33}.btn.btn-stack{flex-direction:row;align-items:center;gap:.35rem;padding:.38rem .68rem;display:inline-flex}.btn-detail{opacity:.85;font-size:.68rem;font-weight:400}.calc-output{gap:var(--s-4);margin-bottom:var(--s-5);grid-template-columns:repeat(auto-fit,minmax(260px,1fr));display:grid}.card{background:var(--c-surface);border-radius:var(--r-md);border:1px solid var(--c-border);box-shadow:var(--shadow-rest);padding:1.25rem}.result-card{flex-direction:column;gap:1rem;min-height:230px;transition:transform .18s,box-shadow .18s,border-color .18s;display:flex;position:relative;overflow:hidden}.result-card:before{content:"";background:var(--c-blue);height:5px;position:absolute;inset:0 0 auto}.result-card:hover{box-shadow:var(--shadow-raised);border-color:#2563eb47;transform:translateY(-2px)}.card-burden.level-caution:before,.card-burden.level-warning:before{background:var(--c-amber)}.card-burden.level-danger:before{background:var(--c-coral)}.card-burden.level-healthy:before{background:var(--c-teal)}.grace-card:before{background:var(--c-amber)}.equity-card:before{background:var(--c-teal)}.result-head{align-items:flex-start;gap:.875rem;display:flex}.result-icon-wrap{width:46px;height:46px;color:var(--c-blue);background:#2563eb1a;border-radius:16px;flex:none;place-items:center;display:inline-grid}.result-icon-wrap.amber{color:var(--c-amber-strong);background:#f59e0b24}.result-icon-wrap.teal{color:var(--c-teal);background:#0f766e1f}.result-icon{fill:none;stroke:currentColor;stroke-width:1.75px;stroke-linecap:round;stroke-linejoin:round;width:24px;height:24px}.card-label{color:var(--c-muted);margin-bottom:.5rem;font-size:.875rem;font-weight:700}.card-value{color:var(--c-navy);font-variant-numeric:tabular-nums;margin-bottom:.25rem;font-size:clamp(1.5rem,3vw,2rem);font-weight:700;line-height:1.2}.card-value .positive{color:#059669}.card-value .negative{color:#dc2626}.card-value .muted{color:#9ca3af;font-size:1rem;font-weight:500}.card-meta{color:var(--c-text-soft);flex-wrap:wrap;align-items:center;gap:.5rem;margin-top:.25rem;font-size:.8125rem;display:flex}.result-meta{justify-content:space-between;margin-top:auto}.pressure-meter{margin-top:.125rem}.pressure-track{background:linear-gradient(90deg,#0f766e24 0 50%,#f59e0b2e 50% 60%,#dc262629 60% 100%);border-radius:999px;height:14px;position:relative;overflow:visible}.pressure-fill{border-radius:inherit;background:linear-gradient(90deg, var(--c-teal), var(--c-amber) 72%, var(--c-coral));position:absolute;inset:0 auto 0 0;box-shadow:0 8px 20px #f59e0b33}.pressure-mark{color:var(--c-muted);font-size:.72rem;font-weight:700;position:absolute;top:22px;transform:translate(-50%)}.mark-50{left:50%}.mark-60{left:60%}.pressure-mark:before{content:"";background:#0f172a3d;width:1px;height:18px;position:absolute;top:-21px;left:50%}.grace-timeline{background:var(--c-mist);border-radius:16px;gap:.65rem;padding:.875rem;display:grid}.timeline-row{color:var(--c-muted);grid-template-columns:4.5rem 1fr 4.5rem;align-items:center;gap:.625rem;font-size:.78rem;display:grid}.timeline-row strong{color:var(--c-text);text-align:right;font-variant-numeric:tabular-nums}.timeline-bar{background:#fff;border-radius:999px;height:10px;overflow:hidden}.timeline-bar span{border-radius:inherit;background:var(--c-amber);height:100%;display:block}.timeline-row.normal .timeline-bar span{background:var(--c-blue)}.equity-breakdown{color:var(--c-text-soft);background:linear-gradient(135deg,#0f766e1a,#2563eb14);border-radius:16px;grid-template-columns:1fr auto 1fr;align-items:center;gap:.55rem;padding:.875rem;font-size:.78rem;font-weight:700;display:grid}.equity-breakdown i{color:var(--c-muted);text-align:center;font-style:normal}.equity-breakdown span,.equity-breakdown strong{text-align:center;white-space:nowrap;min-width:0}.equity-breakdown strong{color:var(--c-teal);grid-column:1/-1;font-size:1rem}.dual-engine-hint{margin-bottom:var(--s-5);border-radius:var(--r-md);color:var(--c-text-soft);background:linear-gradient(135deg,#0f766e14,#f59e0b1a);border:1px solid #0f766e38;align-items:flex-start;gap:.75rem;padding:.95rem 1.1rem;display:flex}.dual-engine-hint p{margin:0;font-size:.92rem;line-height:1.7}.dual-engine-hint strong{color:var(--c-navy)}.hint-icon{fill:none;width:23px;height:23px;stroke:var(--c-teal);stroke-width:1.75px;stroke-linecap:round;stroke-linejoin:round;flex:none;margin-top:.15rem}.meta-item strong{color:#1e3a8a}.badge{border-radius:9999px;padding:.125rem .625rem;font-size:.75rem;font-weight:500;display:inline-block}.badge.level-healthy{color:#065f46;background:#d1fae5}.badge.level-caution{color:#92400e;background:#fef3c7}.badge.level-warning{color:#c2410c;background:#fed7aa}.badge.level-danger{color:#991b1b;background:#fecaca}.alert{margin-bottom:var(--s-5);border-radius:.5rem;padding:1rem 1.25rem;font-size:.9375rem;font-weight:500}.alert-warning{color:#c2410c;background:#fff7ed;border:1px solid #fed7aa}.alert-danger{color:#991b1b;background:#fef2f2;border:1px solid #fecaca}.future-compare{margin-bottom:var(--s-5);background:linear-gradient(135deg,#eff6ff 0%,#dbeafe 100%);border:1px solid #bfdbfe;border-radius:1rem;padding:1.75rem 1.5rem 2rem}.future-compare h3{color:#0c4a6e;text-align:center;margin:0 0 .375rem;font-size:1.375rem;font-weight:700}.future-explainer{color:#1e293b;text-align:left;background:#fff;border-left:3px solid #2563eb;border-radius:.5rem;max-width:none;margin:0 auto .75rem;padding:.875rem 1.25rem;font-size:.9375rem;line-height:1.75}.future-explainer strong{color:#172554}.equity-formula{color:#334155;border-top:1px dashed #bfdbfe;margin-top:.65rem;padding-top:.65rem;font-size:.875rem;line-height:1.7;display:block}.explain-buy{color:#16a34a;font-weight:700}.explain-rent{color:#dc2626;font-weight:600}.future-hint{color:#475569;text-align:center;margin:0 0 1.5rem;font-size:.8125rem;line-height:1.7}.future-caveat{color:#334155;text-align:center;background:#ffffffb8;border-radius:.625rem;max-width:none;margin:1rem auto 0;padding:.75rem 1rem;font-size:.8125rem;line-height:1.7}.diff-meta{color:#c2410c;letter-spacing:.05em;white-space:nowrap;margin-top:.5rem;font-size:.75rem;font-weight:600}.compare-grid{grid-template-columns:1fr auto 1fr;align-items:stretch;gap:1rem;display:grid}.compare-side{background:#fff;border-radius:.875rem;flex-direction:column;padding:1.5rem 1.25rem;transition:transform .15s,box-shadow .15s;display:flex;box-shadow:0 4px 12px #0f172a0f}.compare-side:hover{transform:translateY(-2px);box-shadow:0 8px 20px #0f172a1a}.compare-buy{border-top:5px solid #16a34a}.compare-rent{border-top:5px solid #94a3b8}.compare-icon{text-align:center;filter:drop-shadow(0 2px 3px #0000001a);margin-bottom:.5rem;font-size:2.75rem}.compare-title{color:#1f2937;text-align:center;border-bottom:1px dashed #e5e7eb;margin-bottom:1rem;padding-bottom:.75rem;font-size:1.125rem;font-weight:700}.compare-rows{flex-direction:column;gap:.625rem;margin:0;padding:0;list-style:none;display:flex}.compare-row{color:#4b5563;justify-content:space-between;align-items:baseline;gap:.5rem;font-size:.9375rem;display:flex}.compare-row>span{flex:1}.compare-row strong{color:#1f2937;font-variant-numeric:tabular-nums;white-space:nowrap}.compare-row-net{border-top:2px solid #f1f5f9;margin-top:.625rem;padding-top:.875rem;font-size:1rem}.net-buy{letter-spacing:-.01em;font-size:1.5rem;font-weight:700;color:#16a34a!important}.net-rent{letter-spacing:-.01em;font-size:1.5rem;font-weight:700;color:#475569!important}.rent-cost{font-weight:600;color:#dc2626!important}.compare-divider{flex-direction:column;justify-content:center;align-items:center;min-width:110px;padding:0 .25rem;display:flex}.diff-badge{color:#c2410c;letter-spacing:.05em;background:#fef3c7;border-radius:9999px;margin-bottom:.625rem;padding:.25rem .875rem;font-size:.8125rem;font-weight:600}.diff-value{color:#c2410c;font-variant-numeric:tabular-nums;letter-spacing:-.02em;font-size:2rem;font-weight:800;line-height:1}.diff-arrow{color:#c2410c;opacity:.6;margin-top:.5rem;font-size:1.5rem}@media (width<=768px){.compare-grid{grid-template-columns:1fr;gap:.75rem}.compare-divider{flex-direction:row;justify-content:center;gap:1rem;min-width:0;padding:1rem 0}.diff-arrow{transform:rotate(90deg)}.compare-side{padding:1.25rem 1rem}}.calc-summary{color:#4b5563;background:#f9fafb;border-left:4px solid #1e3a8a;border-radius:.5rem;padding:1rem 1.25rem;font-size:.875rem}.calc-summary p{margin:0}.calc-summary p+p{margin-top:.5rem}.calc-summary strong{color:#1e3a8a}.summary-meta{color:#9ca3af;font-size:.75rem}@media (width>=1024px){.calc{padding:var(--s-7) var(--s-6)}.calc-inputs{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=760px){.calc{padding:1.75rem 1rem}.calc-inputs{grid-template-columns:1fr;gap:.7rem;padding:.85rem}.option-line{grid-template-columns:4.8rem minmax(0,1fr);align-items:center;gap:.5rem;min-height:38px}.option-line .btn-row{padding-bottom:.15rem}.option-line .input-label{font-size:.78rem}.btn{min-width:3.05rem;min-height:2rem;padding:.34rem .62rem;font-size:.8rem}}
