:root{color-scheme:light;font-family:Avenir Next,PingFang SC,Microsoft YaHei,Trebuchet MS,sans-serif;line-height:1.5;font-weight:400;--sky: #9bd7ff;--sky-soft: #eaf7ff;--paper: rgba(255, 255, 255, .9);--paper-solid: #ffffff;--panel: rgba(255, 255, 255, .78);--panel-strong: rgba(255, 255, 255, .96);--line: #dce5ee;--line-strong: #c7d4df;--ink: #172235;--muted: #687386;--green: #2fa15d;--green-deep: #187242;--green-soft: #e8f7ed;--blue: #3c7dd9;--blue-soft: #eaf3ff;--coin: #f3ba2f;--coin-soft: #fff6d8;--danger: #b62f2f;--danger-soft: #ffe6e3;--warning: #fff1bf;--readonly: #fff4cf;--admin: #def5e5;--shadow: rgba(45, 75, 105, .16);background:var(--sky-soft);color:var(--ink)}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;background:linear-gradient(180deg,#8dd2ff,#d9f1ff 44%,#eef8ff 70%,#c7e894)}button,input,select{font:inherit}button{cursor:pointer}button:disabled,input:disabled{cursor:not-allowed;opacity:.58}input{width:100%;min-height:46px;padding:.72rem .8rem;border:1px solid var(--line-strong);border-radius:8px;background:#ffffffeb;color:var(--ink);box-shadow:inset 0 1px #ffffffb3}input:focus{outline:3px solid rgba(47,161,93,.18);border-color:var(--green)}label span,.toggle-label,.field-grid span,.record-grid span,.readonly-tile span,.mini-summary-card span,.settings-tile span,.impact-stat span,.metric-card span,.login-feature-card span{display:block;margin-bottom:.35rem;font-size:.76rem;font-weight:600;color:var(--muted);letter-spacing:0;text-transform:uppercase}.app-shell{position:relative;min-height:100vh;overflow-x:hidden}.panel,.login-brand-panel,.login-card,.dashboard-frame,.connection-card,.metric-card{border:1px solid var(--line);border-radius:8px;background:var(--panel);box-shadow:0 18px 50px var(--shadow);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.eyebrow{display:block;margin-bottom:.3rem;font-size:.78rem;font-weight:650;color:var(--green-deep);letter-spacing:0;text-transform:uppercase}.section-header{margin-bottom:1rem}.section-header h2,.dashboard-topbar h1,.login-card h2{margin:0;color:var(--ink);font-weight:650}.section-header p,.login-summary,.login-role-hint,.status-message p,.readonly-banner p,.empty-state,.record-hint,.record-list p{margin:0;color:var(--muted)}.brand-lockup,.sidebar-brand,.connection-heading,.topbar-actions,.role-switcher,.pixel-toggle,.tools-actions{display:flex;align-items:center}.brand-lockup,.sidebar-brand{gap:.8rem}.brand-lockup img,.sidebar-brand img{width:58px;height:58px;object-fit:contain}.brand-lockup span,.sidebar-brand span{display:block;color:var(--muted);font-size:.78rem;font-weight:600;text-transform:uppercase}.brand-lockup strong,.sidebar-brand strong{display:block;font-size:1.05rem;font-weight:650}.pixel-button{min-height:44px;padding:.72rem 1rem;border:1px solid rgba(20,106,61,.4);border-radius:8px;background:linear-gradient(180deg,#3abf72 0%,var(--green) 100%);color:#fff;font-weight:650;box-shadow:0 8px 18px #2fa15d3d;transition:transform .14s ease,box-shadow .14s ease,border-color .14s ease}.pixel-button:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 11px 22px #2fa15d47}.pixel-button.is-secondary{border-color:#2667b042;background:var(--blue-soft);color:#23486f;box-shadow:none}.pixel-button.is-compact{min-height:38px;padding:.55rem .82rem;box-shadow:none}.status-pill{display:inline-flex;align-items:center;min-height:34px;padding:.36rem .65rem;border:1px solid var(--line);border-radius:999px;background:var(--paper-solid);color:var(--ink);font-size:.82rem;font-weight:600}.status-pill.is-admin,.status-pill.is-saved,.status-pill.is-connected{background:var(--admin);color:var(--green-deep)}.status-pill.is-readonly,.status-pill.is-demo{background:var(--readonly);color:#7d5c0d}.status-pill.is-saving,.status-pill.is-syncing,.status-pill.is-idle{background:var(--blue-soft);color:#24588f}.status-pill.is-error{background:var(--danger-soft);color:var(--danger)}.login-shell{display:flex;align-items:center;padding:1.2rem}.login-layout{position:relative;z-index:1;display:grid;grid-template-columns:minmax(0,1.08fr) minmax(360px,.92fr);gap:1rem;width:min(1180px,100%);margin:0 auto}.login-brand-panel,.login-card{min-height:620px;padding:1.35rem;background:var(--panel-strong)}.login-brand-panel{position:relative;overflow:hidden;display:flex;flex-direction:column}.login-brand-panel h1{max-width:9em;margin:1.35rem 0 0;font-size:3rem;font-weight:650;line-height:1.04}.login-summary{max-width:39rem;margin-top:.9rem;font-size:1rem}.login-feature-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.85rem;margin-top:1.2rem}.login-feature-card{padding:.95rem;border:1px solid var(--line);border-radius:8px;background:#f7fbff}.login-feature-card.is-admin{background:var(--green-soft)}.login-feature-card strong{display:block;font-size:1.05rem;font-weight:650}.login-feature-card p{margin:.45rem 0 0;color:var(--muted)}.login-showcase{position:relative;flex:1;min-height:220px;margin-top:1.2rem}.showcase-card{position:absolute;top:.3rem;right:.8rem;z-index:2;width:180px;padding:.85rem;border:1px solid var(--line);border-radius:8px;background:#ffffffe6;box-shadow:0 16px 34px var(--shadow)}.showcase-card img{width:72px;height:72px;object-fit:contain}.showcase-card span{display:block;color:var(--muted);font-size:.78rem;font-weight:600;text-transform:uppercase}.showcase-card strong{display:block;font-size:2rem;font-weight:650;color:var(--green)}.login-landscape{position:absolute;left:-.7rem;bottom:-1.2rem;width:min(530px,88%);max-height:260px;object-fit:contain}.login-card-panel{display:flex;align-items:stretch}.login-card{width:100%;display:flex;flex-direction:column;justify-content:center}.role-switcher,.pixel-toggle{gap:.45rem;flex-wrap:wrap}.role-switcher{margin:.9rem 0;padding:.3rem;border:1px solid var(--line);border-radius:8px;background:#f3f7fb}.role-switcher button,.pixel-toggle button{min-height:38px;padding:.55rem .82rem;border:1px solid transparent;border-radius:7px;background:transparent;color:var(--muted);font-weight:600}.role-switcher .is-active,.pixel-toggle .is-active{border-color:#2fa15d3d;background:#fff;color:var(--green-deep);box-shadow:0 6px 18px #1d52371a}.login-form{display:grid;gap:.85rem;margin-top:1rem}.login-submit{width:100%;margin-top:.2rem}.login-status-stack{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1rem}.dashboard-shell{padding:1.2rem}.dashboard-frame{position:relative;z-index:1;display:grid;grid-template-columns:230px minmax(0,1fr);gap:1rem;width:min(1460px,100%);min-height:calc(100vh - 2.4rem);margin:0 auto;padding:1rem;background:#ffffffc2}.dashboard-sidebar{display:flex;min-width:0;flex-direction:column;gap:1rem;padding:.4rem;border-right:1px solid rgba(199,212,223,.7)}.side-nav{display:grid;gap:.35rem}.side-nav button{display:grid;grid-template-columns:28px minmax(0,1fr);gap:.7rem;align-items:center;min-height:52px;padding:.7rem .75rem;border:1px solid transparent;border-radius:8px;background:transparent;color:#4d5a6c;font-weight:650;text-align:left}.side-nav button:hover,.side-nav button.is-active{border-color:#c7d4dfcc;background:#ffffffd1;color:var(--ink);box-shadow:0 10px 25px #3654731a}.nav-glyph{position:relative;display:inline-block;width:24px;height:24px;color:var(--green)}.nav-glyph:before,.nav-glyph:after{content:"";position:absolute;display:block}.glyph-home:before{left:4px;top:9px;width:14px;height:11px;border:2px solid currentColor;border-top:0}.glyph-home:after{left:4px;top:2px;width:14px;height:14px;border-left:2px solid currentColor;border-top:2px solid currentColor;transform:rotate(45deg)}.glyph-calendar:before{top:4px;right:3px;bottom:3px;left:3px;border:2px solid currentColor;border-radius:4px}.glyph-calendar:after{left:6px;right:6px;top:10px;height:2px;background:currentColor}.glyph-pie:before{top:4px;right:4px;bottom:4px;left:4px;border:2px solid currentColor;border-radius:50%}.glyph-pie:after{left:12px;top:4px;width:8px;height:10px;border-left:2px solid currentColor;border-bottom:2px solid currentColor}.glyph-trend:before{left:3px;bottom:5px;width:18px;height:14px;border-left:2px solid currentColor;border-bottom:2px solid currentColor}.glyph-trend:after{left:7px;top:6px;width:12px;height:9px;border-right:3px solid currentColor;border-top:3px solid currentColor;transform:skewY(-28deg)}.glyph-gear:before{top:5px;right:5px;bottom:5px;left:5px;border:2px solid currentColor;border-radius:50%;box-shadow:0 -6px 0 -3px currentColor,0 6px 0 -3px currentColor,6px 0 0 -3px currentColor,-6px 0 0 -3px currentColor}.glyph-gear:after{left:10px;top:10px;width:4px;height:4px;border-radius:50%;background:currentColor}.connection-card{margin-top:auto;padding:.85rem;background:#ffffffd1}.connection-heading{gap:.45rem;color:var(--muted);font-weight:600}.connection-dot{width:10px;height:10px;border-radius:50%;background:var(--green)}.connection-card strong{display:block;margin-top:.45rem;font-size:1.05rem;font-weight:650}.connection-card p{margin:.15rem 0 0;color:var(--muted)}.connection-card img{display:block;width:76px;height:76px;margin:.75rem auto 0;object-fit:contain}.connection-card.is-error .connection-dot{background:var(--danger)}.connection-card.is-demo .connection-dot{background:var(--coin)}.dashboard-main{min-width:0}.dashboard-topbar{display:flex;justify-content:space-between;gap:1rem;align-items:center;margin-bottom:1rem;padding:.25rem .25rem .8rem}.dashboard-topbar h1{font-size:1.85rem}.topbar-actions{justify-content:flex-end;gap:.5rem;flex-wrap:wrap}.dashboard-section{min-width:0}.overview-section{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(320px,.98fr);gap:1rem}.overview-column{display:grid;gap:1rem;align-content:start;min-width:0}.overview-main-column{grid-template-rows:auto 1fr}.metric-grid{display:grid;grid-column:1 / -1;grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem}.metric-card{position:relative;display:block;min-height:132px;padding:1rem;overflow:hidden}.metric-card strong{display:block;margin-top:.4rem;font-size:1.42rem;font-weight:650;line-height:1.12;font-variant-numeric:tabular-nums}.metric-card.is-progress strong{color:var(--green)}.metric-card.is-split{min-height:156px;padding-right:4.9rem}.metric-breakdown{display:grid;gap:.34rem;margin-top:.72rem;max-width:15rem}.metric-breakdown p{display:flex;justify-content:space-between;gap:.7rem;align-items:center;margin:0;font-variant-numeric:tabular-nums}.metric-breakdown small{color:var(--muted);font-size:.76rem;font-weight:650}.metric-breakdown b{color:var(--ink);font-size:.86rem;font-weight:650;white-space:nowrap}.metric-card img{position:absolute;right:.72rem;bottom:.68rem;width:58px;height:58px;object-fit:contain;opacity:.88}.metric-progress{grid-column:1 / -1;align-self:end;height:13px;overflow:hidden;border-radius:999px;background:#e5e9ee}.metric-progress span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--green) 0%,#45b979 100%)}.chart-panel{align-self:start;padding:1rem}.trend-header{display:flex;justify-content:space-between;gap:.85rem;align-items:flex-start}.trend-controls{display:inline-grid;grid-template-columns:34px minmax(96px,auto) 34px;align-items:center;overflow:hidden;border:1px solid var(--line);border-radius:999px;background:#ffffffe0}.trend-controls button,.trend-controls select{min-height:36px;border:0;background:transparent;color:var(--ink);font-weight:650}.trend-controls button{padding:0 .55rem}.trend-controls button:not(:disabled):hover{background:#2fa15d1a;color:var(--green-deep)}.trend-controls select{min-width:98px;padding:0 .4rem;text-align:center;-webkit-appearance:none;-moz-appearance:none;appearance:none}.principal-chart{display:grid;gap:.25rem}.chart-canvas{position:relative;overflow:visible}.chart-legend{display:flex;gap:.4rem;flex-wrap:wrap;margin-bottom:.45rem}.chart-legend span{display:inline-flex;align-items:center;min-height:26px;padding:.22rem .46rem;border:1px solid var(--line);border-radius:999px;background:#ffffffd1;color:var(--ink);font-size:.76rem;font-weight:650}.chart-legend span:before{content:"";width:9px;height:9px;margin-right:.38rem;border-radius:50%}.chart-legend .is-principal:before{background:var(--green)}.chart-legend .is-interest:before{background:var(--coin)}.chart-legend .is-down-payment:before{background:#99cde9}.chart-legend .is-extra:before{width:10px;height:10px;border-radius:3px;background:var(--danger);transform:rotate(45deg)}.chart-legend .is-settled:before{background:var(--green-deep)}.chart-legend .is-pending:before{background:var(--blue)}.principal-chart svg{width:100%;height:auto;display:block}.chart-grid-line{stroke:#e6edf4;stroke-width:2;stroke-dasharray:4 6}.chart-axis-label{fill:var(--muted);font-size:13px;font-weight:600}.chart-area{fill:#2fa15d21}.chart-down-payment-band{fill:#9bd7ff2e}.chart-loan-baseline{stroke:#24588f66;stroke-width:2;stroke-dasharray:5 5}.chart-band-label{fill:#24588f;font-size:12px;font-weight:650}.chart-line{fill:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round}.chart-line.is-principal{stroke:var(--green)}.chart-line.is-interest{stroke:var(--coin);stroke-width:3}.chart-dot{fill:var(--paper-solid);stroke-width:4}.chart-dot.is-principal{stroke:var(--green)}.chart-dot.is-interest{stroke:var(--coin);stroke-width:3}.chart-extra-marker{fill:var(--danger);stroke:#fff;stroke-width:2}.chart-month-target{cursor:crosshair;outline:none;pointer-events:all}.chart-month-target rect{fill:transparent;pointer-events:all}.chart-month-target.is-settled rect{fill:#2fa15d21;stroke:#1872422e;stroke-width:1}.chart-month-target.is-pending rect{fill:#3c7dd924;stroke:#3c7dd938;stroke-width:1}.chart-month-target.is-empty rect{fill:#68738609}.chart-month-target.is-current rect{stroke:var(--coin);stroke-width:2;fill:#f3ba2f1f}.chart-month-target:focus-visible .chart-dot,.chart-month-target:hover .chart-dot{stroke-width:5}.chart-hover-guide{stroke:#17223533;stroke-width:2;stroke-dasharray:4 6}.chart-hover-layer{pointer-events:none}.chart-hover-layer circle{fill:var(--paper-solid);stroke-width:4}.chart-hover-layer circle.is-principal{stroke:var(--green)}.chart-hover-layer circle.is-interest{stroke:var(--coin)}.chart-callout line{stroke:var(--green);stroke-width:3;stroke-dasharray:4 6}.chart-callout circle{fill:var(--paper-solid);stroke:var(--green);stroke-width:4}.chart-tooltip{display:inline-flex;align-items:center;height:40px;padding:0 .8rem;border:1px solid rgba(47,161,93,.35);border-radius:8px;background:var(--green-soft);color:var(--green-deep);font-weight:650}.chart-tooltip.is-rich{position:absolute;z-index:3;display:grid;gap:.16rem;width:min(240px,calc(100% - 1rem));height:auto;padding:.64rem .72rem;border-color:#c7d4dff2;background:#fffffff5;color:var(--ink);box-shadow:0 14px 30px #2d4b6933;pointer-events:none}.chart-tooltip.is-rich.is-center{transform:translate(-50%)}.chart-tooltip.is-rich.is-left{transform:translate(-100%)}.chart-tooltip.is-rich.is-right{transform:translate(0)}.chart-tooltip.is-rich strong,.chart-tooltip.is-rich span{display:block;line-height:1.28}.chart-tooltip.is-rich span{color:var(--muted);font-size:.74rem;font-weight:600}.chart-tooltip.is-rich strong{display:flex;justify-content:space-between;gap:.45rem;align-items:center}.chart-status{display:inline-flex;align-items:center;min-height:18px;padding:0 .34rem;border-radius:999px;font-size:.66rem;font-style:normal;font-weight:650}.chart-status.is-settled{background:var(--green-soft);color:var(--green-deep)}.chart-status.is-pending{background:var(--blue-soft);color:#24588f}.chart-status.is-empty{background:#eef4fa;color:var(--muted)}.calendar-panel,.recent-panel,.impact-panel{padding:1rem}.calendar-header{display:flex;flex-direction:column;justify-content:space-between;gap:.75rem;align-items:flex-start}.calendar-header strong{color:var(--ink)}.calendar-controls{display:grid;grid-template-columns:1fr auto;align-items:center;gap:.5rem;width:100%}.calendar-month-switch{display:grid;grid-template-columns:34px minmax(0,1fr) 34px;align-items:center;width:100%;min-height:38px;overflow:hidden;border:1px solid var(--line);border-radius:999px;background:#ffffffdb}.calendar-controls button{min-width:34px;min-height:36px;border:0;border-radius:999px;background:transparent;color:var(--ink);font-weight:650}.calendar-controls button:hover{background:#2fa15d1a;color:var(--green-deep)}.calendar-controls strong{text-align:center;white-space:nowrap;font-weight:650}.calendar-controls .calendar-today-button{min-width:56px;padding:0 .75rem;border:1px solid rgba(47,161,93,.24);background:var(--green-soft);color:var(--green-deep)}.calendar-legend{display:flex;gap:.65rem;flex-wrap:wrap;margin:.7rem 0 .55rem;color:var(--muted);font-size:.78rem}.calendar-legend span{display:inline-flex;align-items:center;gap:.35rem}.calendar-legend span:before{content:"";width:8px;height:8px;border-radius:50%}.calendar-legend .legend-paid:before{background:var(--green)}.calendar-legend .legend-unpaid:before{background:var(--blue)}.calendar-legend .legend-extra:before{background:var(--coin)}.calendar-weekdays,.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));text-align:center}.calendar-weekdays{margin:.4rem 0 .3rem;color:var(--muted);font-size:.78rem;font-weight:600}.calendar-grid{gap:.28rem}.calendar-grid button{position:relative;display:inline-grid;grid-template-rows:1fr 8px;place-items:center;min-height:39px;padding:.16rem .1rem;border:1px solid transparent;border-radius:999px;background:transparent;color:var(--ink);font-weight:650}.calendar-grid button:hover{border-color:var(--line-strong);background:#ffffffb8}.calendar-grid button.is-muted{color:#9aa5b2}.calendar-grid button.is-paid{background:var(--green-soft);color:var(--green-deep)}.calendar-grid button.is-unpaid{background:var(--blue-soft);color:#24588f}.calendar-grid button.is-extra{box-shadow:inset 0 0 0 1px #f3ba2f47}.calendar-grid button.is-today:after{content:"";position:absolute;top:4px;right:4px;width:5px;height:5px;border-radius:50%;background:var(--danger)}.calendar-grid button.is-selected{background:var(--green);color:#fff;border-color:#18724259;box-shadow:0 8px 18px #2fa15d47}.calendar-grid button i{display:flex;gap:2px;min-height:8px;align-items:center}.calendar-grid button b{width:5px;height:5px;border-radius:50%}.marker-paid{background:var(--green)}.marker-unpaid{background:var(--blue)}.marker-extra{background:var(--coin)}.calendar-grid button.is-selected b{background:#fffffff2}.calendar-detail{display:grid;gap:.55rem;margin-top:.85rem;padding:.8rem;border:1px solid var(--line);border-radius:8px;background:#ffffffb8}.calendar-detail>div span{display:block;color:var(--muted);font-size:.76rem}.calendar-detail>div strong{display:block;color:var(--ink)}.calendar-detail p,.calendar-detail ul{margin:0}.calendar-detail ul{display:grid;gap:.45rem;padding:0;list-style:none}.calendar-detail li{display:flex;justify-content:space-between;gap:.75rem;align-items:center;padding-left:.65rem;border-left:3px solid var(--line-strong)}.calendar-detail li.is-paid{border-color:var(--green)}.calendar-detail li.is-unpaid{border-color:var(--blue)}.calendar-detail li.is-extra{border-color:var(--coin)}.recent-panel{display:grid;grid-template-rows:auto 1fr;min-height:200px}.recent-list,.record-list ul{display:grid;align-content:start;gap:.65rem;margin:0;padding:0;list-style:none}.recent-list li{display:grid;grid-template-columns:28px minmax(0,auto) minmax(0,1fr) auto;gap:.65rem;align-items:center}.recent-list small{color:var(--muted)}.check-icon{position:relative;display:inline-grid;place-items:center;width:24px;height:24px;border:2px solid var(--green);border-radius:6px}.check-icon:after{content:"";width:10px;height:6px;border-left:3px solid var(--green);border-bottom:3px solid var(--green);transform:rotate(-45deg) translate(1px,-1px)}.impact-panel{display:grid;grid-template-columns:64px minmax(116px,1.2fr) minmax(78px,.8fr) 58px;gap:.55rem;align-items:center}.impact-panel.is-wide{grid-template-columns:72px repeat(3,minmax(0,1fr))}.impact-panel .section-header{grid-column:1 / -1;margin-bottom:0}.impact-panel img{width:64px;height:64px;object-fit:contain}.impact-stat{min-width:0}.impact-stat span{line-height:1.15}.impact-stat strong{display:block;color:var(--green);font-size:1.05rem;line-height:1.08;white-space:nowrap}.impact-divider{display:none}.section-stack{display:grid;gap:1rem}.panel{min-width:0;padding:1rem}.edit-scope{min-width:0;margin:0;padding:0;border:0}.field-grid,.record-grid,.toggle-row,.loan-split-grid,.stats-panel-grid,.settings-grid{display:grid;gap:.85rem}.field-grid,.record-grid,.toggle-row,.loan-split-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.stats-panel-grid,.settings-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.stats-panel-grid{grid-template-columns:repeat(auto-fit,minmax(170px,1fr))}.pixel-toggle{padding:.28rem;border:1px solid var(--line);border-radius:8px;background:#f3f7fb}.readonly-tile,.mini-summary-card,.settings-tile{min-height:74px;padding:.85rem;border:1px solid var(--line);border-radius:8px;background:#ffffffb8}.readonly-tile{display:flex;flex-direction:column;justify-content:center}.readonly-tile strong,.mini-summary-card strong,.settings-tile strong{display:block;font-size:1.08rem}.readonly-tile.compact,.tracking-row,.solo-field,.loan-split-grid,.record-form{margin-top:1rem}.split-panel,.record-form{padding:.95rem;border:1px solid var(--line);border-radius:8px;background:#f7fbffb8}.split-panel h3,.record-form h3,.record-list h3{margin:0 0 .75rem}.split-panel label+label,.record-form label+button{margin-top:.85rem}.compact-toggle-row{margin-top:0}.record-list li{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:.75rem;align-items:center}.record-list button{min-height:34px;padding:.42rem .6rem;border:1px solid var(--line-strong);border-radius:7px;background:#fff;color:var(--ink);font-weight:600}.error-banner,.warning-banner,.readonly-banner,.status-message{margin:.85rem 0 0;padding:.8rem;border:1px solid var(--line);border-radius:8px}.error-banner{background:var(--danger-soft);color:var(--danger)}.warning-banner,.readonly-banner{background:var(--warning)}.status-message{background:var(--blue-soft)}.status-message strong,.readonly-banner strong{display:block;margin-bottom:.2rem}.tools-actions{justify-content:flex-end;gap:.7rem;flex-wrap:wrap;margin-top:1rem}.table-scroll{width:100%;max-width:100%;overflow-x:auto;border:1px solid var(--line);border-radius:8px;background:#ffffffe0;-webkit-overflow-scrolling:touch}.table-zone{overflow:hidden}table{width:100%;min-width:1120px;border-collapse:separate;border-spacing:0;background:var(--paper-solid);overflow:hidden}.schedule-table{table-layout:fixed}.period-column{width:96px}.date-column{width:112px}.money-column{width:118px}.money-column.is-wide{width:130px}.breakdown-column{width:250px}th,td{padding:.72rem .78rem;text-align:left;border-bottom:1px solid #edf1f5;vertical-align:top;white-space:nowrap}th{background:#f7fafc;color:var(--muted);font-size:.78rem;font-weight:650;text-transform:uppercase}.schedule-table tbody tr{background:#fffffff0}.schedule-table tbody tr:hover{background:#f8fbff}tbody tr.is-settled{background:#e8f7ed9e}tbody tr.is-next{background:#fff6d8d1}.period-cell strong,.period-cell span{display:block}.period-cell strong{color:var(--ink);font-weight:650}.period-cell span{width:fit-content;margin-top:.22rem;padding:.1rem .36rem;border-radius:999px;background:#eef4fa;color:var(--muted);font-size:.72rem;font-weight:650}.is-settled .period-cell span{background:var(--green-soft);color:var(--green-deep)}.is-next .period-cell span{background:var(--coin-soft);color:#8a5f00}.amount-cell{font-weight:650;font-variant-numeric:tabular-nums}.amount-cell.is-principal{color:var(--green-deep)}.amount-cell.is-interest{color:#8a5f00}.breakdown-stack{display:grid;gap:.34rem;min-width:0}.breakdown-item{display:grid;grid-template-columns:42px repeat(2,minmax(0,1fr));gap:.18rem .42rem;align-items:center;padding:.2rem 0;border-bottom:1px solid rgba(220,229,238,.78)}.breakdown-item:last-child{border-bottom:0}.breakdown-item strong{color:var(--green-deep);font-size:.86rem;font-weight:650}.breakdown-item span{color:var(--muted);font-size:.78rem;line-height:1.25;white-space:nowrap}.breakdown-item span:last-child:nth-child(4){grid-column:2 / -1}.empty-table,.empty-chart{padding:1rem;border:1px dashed var(--line-strong);border-radius:8px;background:#ffffffb3;color:var(--muted)}@media(max-width:1180px){.overview-section{grid-template-columns:1fr}.metric-grid,.stats-panel-grid,.settings-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:920px){.login-layout,.dashboard-frame{grid-template-columns:1fr}.login-brand-panel,.login-card{min-height:auto}.dashboard-sidebar{border-right:0;border-bottom:1px solid rgba(199,212,223,.7)}.side-nav{display:flex;gap:.5rem;overflow-x:auto;padding-bottom:.2rem}.side-nav button{flex:0 0 auto;min-width:160px}.connection-card{margin-top:0}.dashboard-topbar{align-items:flex-start;flex-direction:column}.topbar-actions{justify-content:flex-start}}@media(max-width:720px){.login-shell,.dashboard-shell{padding:.6rem}.login-brand-panel h1{font-size:2.25rem}.login-feature-grid,.metric-grid,.field-grid,.record-grid,.toggle-row,.loan-split-grid,.stats-panel-grid,.settings-grid{grid-template-columns:1fr}.metric-card{grid-template-columns:minmax(0,1fr) 72px;min-height:136px}.metric-card strong{font-size:1.6rem}.metric-card img{width:72px;height:72px}.impact-panel,.impact-panel.is-wide{grid-template-columns:72px minmax(0,1fr)}.impact-panel .section-header,.impact-divider,.impact-panel img:last-child{grid-column:1 / -1}.impact-divider{width:100%;min-height:1px}.recent-list li,.record-list li{grid-template-columns:1fr}}
