:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--brand-950:#0a3d39;--brand-900:#0e504a;--brand-800:#13635c;--brand-700:#17786e;--brand-600:#1d8c80;--brand-500:#2aa396;--brand-300:#79c9bd;--brand-100:#d9efea;--brand-50:#eaf7f3;--ink:#1f2a2b;--ink-soft:#334244;--muted:#6b7775;--paper:#fffdf8;--paper-deep:#fbf7ef;--cream:#f5efe3;--cream-2:#ece4d3;--line:#e5ded0;--line-strong:#d3c9b6;--danger:#c2493f;--danger-soft:#fdeae6;--warning:#b87918;--warning-soft:#fbf0d9;--good:#2d7d5b;--good-soft:#e3f2e9;--info:#416e93;--info-soft:#e7f0f6;--credit:#c46a2c;--credit-soft:#fbeee2;--installment:#2f6f9f;--installment-soft:#e7f0f7;--fixed:#557a34;--fixed-soft:#eef4e5;--legacy:#7a6a86;--legacy-soft:#f1edf4;--shadow-xs:0 1px 3px #1f2a2b0f;--shadow-sm:0 4px 14px #1f2a2b12;--shadow-md:0 14px 34px #1f2a2b21;--shadow-lg:0 24px 60px #1f2a2b33;--radius:10px;--radius-sm:8px;--radius-pill:999px;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{color:var(--ink);-webkit-font-smoothing:antialiased;background:radial-gradient(circle at 12% 4%,#2aa39617,#0000 30%),radial-gradient(circle at 88% 16%,#c46a2c12,#0000 28%),linear-gradient(#f7f2e9 0%,#f3ede1 48%,#f8f4ec 100%);font-size:15px;line-height:1.45}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}a{color:inherit;text-decoration:none}::selection{background:var(--brand-100);color:var(--brand-950)}.app-shell{background:var(--paper);flex-direction:column;width:100%;max-width:640px;min-height:100dvh;margin:0 auto;display:flex;position:relative;box-shadow:0 0 0 1px #1f2a2b0d,0 18px 60px #1f2a2b29}.app-header{z-index:40;border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#fffdf8e0;justify-content:space-between;align-items:center;gap:10px;min-height:54px;padding:8px 14px;display:flex;position:sticky;top:0}.app-header>div{align-items:center;gap:9px;min-width:0;display:flex}.app-header strong{letter-spacing:.02em;white-space:nowrap;font-size:16px}.app-header .brand-mark{color:#fff;background:linear-gradient(145deg,#d9483f,#a82620);border-radius:9px;flex-shrink:0;justify-content:center;align-items:center;width:30px;height:30px;font-size:17px;font-weight:850;line-height:1;display:inline-flex;box-shadow:0 6px 14px #a8262047}.profile-badge{border:1px solid var(--line-strong);border-radius:var(--radius-pill);background:var(--paper-deep);max-width:130px;min-height:24px;color:var(--ink-soft);text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:5px;padding:3px 9px;font-size:12px;font-weight:700;display:inline-flex;overflow:hidden}.app-main{flex:1;padding:12px 14px 96px}.page h1{letter-spacing:-.01em;margin:0 0 10px;font-size:22px;line-height:1.25}.page-title{margin:0 0 6px!important;font-size:22px!important}.page-head{justify-content:space-between;align-items:center;gap:10px;margin:2px 0 14px;display:flex}.page-head h1{margin:0}.page-subtitle{color:var(--muted);margin:-4px 0 14px;font-size:13px}.panel{border:1px solid var(--line);border-radius:var(--radius);background:var(--paper);box-shadow:var(--shadow-sm);margin-bottom:12px;padding:12px}.panel h2{letter-spacing:-.01em;margin:0 0 8px;font-size:15px}.panel h3{font-size:13px}.muted{color:var(--muted);font-size:13px}.month-switcher{justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px;display:flex}.month-title{border:1px solid var(--line);border-radius:var(--radius);background:var(--paper);min-width:0;min-height:38px;box-shadow:var(--shadow-xs);color:var(--brand-950);letter-spacing:.02em;justify-content:center;align-items:center;gap:8px;padding:6px 14px;font-weight:800;display:inline-flex}.icon-button{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--paper);width:32px;height:32px;color:var(--ink-soft);box-shadow:var(--shadow-xs);justify-content:center;align-items:center;padding:0;transition:transform .15s,background .15s,border-color .15s;display:inline-flex}.icon-button:hover{border-color:var(--brand-300);background:var(--brand-50);transform:translateY(-1px)}.icon-button.danger{color:var(--danger)}.icon-button.danger:hover{border-color:var(--danger);background:var(--danger-soft)}.stats-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:12px;display:grid}.stats-year-head{align-items:center;gap:10px;margin-bottom:12px;display:flex}.year-title{border:1px solid var(--line);border-radius:var(--radius);background:var(--paper);min-height:38px;box-shadow:var(--shadow-xs);flex:1;font-weight:800}.month-calendar{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:14px;display:grid}.month-cell{border:1px solid var(--line);border-radius:var(--radius);background:var(--paper);min-height:88px;box-shadow:var(--shadow-xs);text-align:left;flex-direction:column;gap:4px;padding:9px;transition:transform .16s,border-color .16s,box-shadow .16s;display:flex}.month-cell:hover{border-color:var(--brand-300);box-shadow:var(--shadow-sm);transform:translateY(-1px)}.month-cell.current{border:1px solid var(--brand-500);box-shadow:inset 0 0 0 1px var(--brand-500), var(--shadow-sm)}.month-cell.selected{border-color:var(--brand-900);background:linear-gradient(145deg, var(--brand-800), var(--brand-950));color:#fff;box-shadow:var(--shadow-md)}.month-cell.empty{opacity:.58}.month-cell-head{justify-content:space-between;align-items:center;gap:4px;font-size:12px;display:flex}.month-cell-head strong{font-size:15px}.month-cell-head em{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:10px;font-style:normal;overflow:hidden}.month-cell-head em.overdue{color:var(--danger);font-weight:800}.month-cell.selected .month-cell-head em,.month-cell.selected .month-cell-line{color:#ffffffb8}.month-cell.selected .month-cell-head em.overdue,.month-cell.selected .month-cell-line strong{color:#fff}.month-cell-line{color:var(--muted);justify-content:space-between;align-items:center;gap:4px;font-size:11px;display:flex}.month-cell-line strong{color:var(--ink)}.month-cell-line strong.bad{color:var(--danger)}.stat-card{border:1px solid var(--line);border-radius:var(--radius);background:var(--paper);min-height:76px;box-shadow:var(--shadow-sm);padding:11px 12px;position:relative;overflow:hidden}.stat-card:after{background:var(--brand-50);content:"";opacity:.9;border-radius:50%;width:76px;height:76px;position:absolute;bottom:-20px;right:-16px}.stat-icon{background:var(--brand-100);width:28px;height:28px;color:var(--brand-800);border-radius:9px;justify-content:center;align-items:center;display:inline-flex;position:absolute;top:10px;right:10px}.stat-label{color:var(--muted);font-size:12px}.stat-value{letter-spacing:-.01em;overflow-wrap:anywhere;margin-top:4px;font-size:19px;font-weight:850}.stat-sub{color:var(--muted);margin-top:5px;font-size:12px}.stat-good .stat-icon{background:var(--good-soft);color:var(--good)}.stat-good .stat-value{color:var(--good)}.stat-bad .stat-icon{background:var(--danger-soft);color:var(--danger)}.stat-bad .stat-value{color:var(--danger)}.alert-line{border:1px solid var(--danger);border-radius:var(--radius);background:var(--danger-soft);color:var(--danger);margin-bottom:10px;padding:9px 12px;font-weight:800}.home-focus{background:radial-gradient(circle at 88% 12%, #79c9bd47, transparent 34%), linear-gradient(140deg, var(--brand-800), var(--brand-950));box-shadow:var(--shadow-md);color:#fff;border:1px solid #ffffff2e;border-radius:14px;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:14px;padding:16px;display:grid;position:relative;overflow:hidden}.home-focus:before{content:"";border:1px solid #ffffff21;border-radius:50%;width:150px;height:150px;position:absolute;bottom:-46px;right:-36px}.home-focus:after{content:"";border:1px solid #ffffff1f;border-radius:50%;width:84px;height:84px;position:absolute;bottom:-22px;right:8px}.home-focus div{z-index:1;text-align:center;background:0 0;border:0;flex-direction:column;justify-content:center;align-items:center;min-width:0;padding:0;display:flex;position:relative}.home-focus span{color:#ffffffb3;font-size:12px;display:block}.home-focus strong{letter-spacing:-.01em;overflow-wrap:anywhere;margin-top:4px;font-size:22px;font-weight:850;display:block}.home-focus strong.bad{color:#ffd8a8}.insight-list{gap:8px;margin:0;padding:0;list-style:none;display:grid}.insight-list li{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--paper-deep);padding:8px 10px;font-size:13px}.reminder-section{margin-top:12px}.repay-class-section{margin-bottom:16px}.repay-class-title{border-bottom:1px solid var(--line);letter-spacing:.01em;align-items:center;gap:8px;margin:0 0 8px;padding:0 0 8px;font-size:14px;font-weight:800;display:flex}.repay-class-title:before{background:var(--brand-500);content:"";border-radius:999px;width:4px;height:14px}.pending-statement-line{border:1px dashed var(--line-strong);border-radius:var(--radius-sm);background:var(--brand-50);color:var(--brand-800);margin-bottom:8px;padding:8px 10px;font-size:12px}.reminder-section h3{border-bottom:1px solid var(--line);align-items:center;gap:7px;margin:0 0 7px;padding:0 0 7px;font-size:14px;display:flex}.reminder-section h3:before{background:var(--brand-500);content:"";border-radius:50%;width:7px;height:7px}.reminder-section h3.overdue{color:var(--danger)}.reminder-section h3.overdue:before{background:var(--danger)}.row-card{border:1px solid var(--line);border-radius:var(--radius);background:var(--paper);box-shadow:var(--shadow-sm);align-items:flex-start;gap:10px;margin-bottom:9px;padding:11px;transition:transform .15s,box-shadow .15s,border-color .15s;display:flex}.row-card:hover{border-color:var(--line-strong);box-shadow:var(--shadow-md);transform:translateY(-1px)}.category-icon{color:#fff;border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;display:inline-flex;box-shadow:0 6px 14px #1f2a2b24}.category-icon.bank{background:linear-gradient(145deg,#2f6f9f,#24537a)}.category-icon.credit{background:linear-gradient(145deg,#d97b35,#b95720)}.category-icon.netloan{background:linear-gradient(145deg,#b64e46,#8e3731)}.category-icon.car{background:linear-gradient(145deg,#5a6470,#414a54)}.category-icon.mortgage{background:linear-gradient(145deg,#66803c,#4a5f2b)}.category-icon.other{background:linear-gradient(145deg,#8b7c95,#675b70)}.category-icon.fixed-monthly{background:linear-gradient(145deg,#4e8a5d,#376643)}.institution-row{border:1px solid var(--line);border-radius:var(--radius);background:var(--paper);width:100%;box-shadow:var(--shadow-sm);text-align:left;grid-template-columns:minmax(0,1fr) auto 18px;align-items:center;gap:8px;margin-bottom:8px;padding:11px;display:grid}.institution-name,.institution-amount{flex-direction:column;gap:3px;min-width:0;display:flex}.institution-amount{text-align:right;align-items:flex-end}.detail-sheet{z-index:60;background:radial-gradient(circle at 10% 2%, #2aa39614, transparent 28%), var(--paper-deep);position:fixed;inset:0;overflow-y:auto}.detail-header{z-index:1;border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#fffdf8e6;align-items:center;gap:12px;padding:10px 14px;display:flex;position:sticky;top:0}.detail-header h1{margin:0;font-size:20px}.detail-header p{margin:2px 0 0}.detail-body{padding:14px}.loan-item{border:1px solid var(--line);border-radius:var(--radius);background:var(--paper);box-shadow:var(--shadow-sm);margin-bottom:10px;overflow:hidden}.loan-summary{background:var(--paper);text-align:left;border:0;border-radius:0;grid-template-columns:minmax(0,1fr) auto 18px;align-items:center;gap:8px;width:100%;padding:11px;display:grid}.loan-summary-main{flex-direction:column;gap:4px;min-width:0;display:flex}.loan-summary .chevron{transition:transform .15s}.loan-summary.expanded .chevron{transform:rotate(180deg)}.loan-detail{border-top:1px solid var(--line);background:var(--paper-deep);padding:11px}.loan-info-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.loan-info-grid div{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--paper);min-width:0;padding:8px}.loan-info-grid span{color:var(--muted);font-size:12px;display:block}.loan-info-grid strong{overflow-wrap:anywhere;margin-top:4px;font-size:13px;display:block}.loan-history,.loan-plan{margin-top:12px}.loan-plan h3,.loan-history h3{margin:0 0 6px;font-size:13px}.history-list{font-size:12px;display:grid}.history-row{border-bottom:1px solid var(--line);grid-template-columns:1fr 1fr .7fr 1.5fr;align-items:center;gap:8px;min-width:0;padding:7px 4px;display:grid}.history-row span{overflow-wrap:anywhere;min-width:0}.history-row.history-head{color:var(--muted);font-weight:700}.history-row.paid{color:var(--muted)}.history-row.unpaid{color:var(--ink)}.history-row:last-child{border-bottom:0}.row-card.paid{background:var(--paper-deep);box-shadow:none;opacity:.78}.row-main{flex:1;min-width:0}.row-title{letter-spacing:-.01em;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;font-weight:800;display:flex}.row-title-main{flex-wrap:wrap;align-items:center;gap:7px;min-width:0;display:inline-flex}.account-name{overflow-wrap:anywhere}.status-pill{border:1px solid var(--line);border-radius:var(--radius-pill);background:var(--paper-deep);color:var(--muted);white-space:nowrap;align-items:center;gap:5px;padding:3px 8px;font-size:11px;font-weight:800;display:inline-flex}.status-pill:before{content:"";background:currentColor;border-radius:50%;width:6px;height:6px}.status-pill.active{background:var(--good-soft);color:var(--good);border-color:#2d7d5b59}.status-pill.paidOff{border-color:var(--line);background:var(--cream);color:var(--muted)}.status-pill.paused{background:var(--danger-soft);color:var(--danger);border-color:#c2493f59}.row-meta{color:var(--muted);margin-top:5px;font-size:13px}.badge{border:1px solid var(--line);border-radius:var(--radius-pill);background:var(--paper-deep);flex-shrink:0;padding:2px 8px;font-size:11px;font-weight:800;display:inline-flex}.badge.paid{background:var(--good-soft);color:var(--good);border-color:#2d7d5b59}.row-actions{z-index:2;flex-wrap:wrap;justify-content:flex-end;gap:6px;display:flex;position:relative}.row-check{width:18px;height:18px;accent-color:var(--brand-700);margin-top:2px}.entry-editor{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;width:calc(100% + 142px);margin-top:8px;display:grid}.entry-editor label,.form label,.form-grid label{flex-direction:column;gap:5px;min-width:0;display:flex}.entry-editor span,.form span,.form-grid span{color:var(--muted);font-size:12px}input,select,textarea{border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--paper);width:100%;min-height:36px;color:var(--ink);padding:7px 10px;transition:border-color .15s,box-shadow .15s,background .15s}input:focus,select:focus,textarea:focus{border-color:var(--brand-500);outline:0;box-shadow:0 0 0 3px #2aa39624}input:disabled,select:disabled,textarea:disabled{background:var(--cream);color:var(--muted)}.rate-field,.unit-field{border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--paper);align-items:stretch;display:flex;overflow:hidden}.rate-field:focus-within,.unit-field:focus-within{border-color:var(--brand-500);box-shadow:0 0 0 3px #2aa39624}.rate-field input,.unit-field input{width:auto;min-width:0;box-shadow:none;border:0;border-radius:0;flex:1}.rate-field span,.unit-field span{border-left:1px solid var(--line);background:var(--paper-deep);color:var(--muted);align-items:center;padding:0 10px;font-weight:800;display:flex}textarea{resize:vertical}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:10px;display:grid}.form-grid.compact{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.form .actions{justify-content:flex-end;gap:8px;margin-top:14px;display:flex}.button{border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--paper);min-height:36px;color:var(--ink-soft);box-shadow:var(--shadow-xs);justify-content:center;align-items:center;gap:6px;padding:7px 12px;font-weight:800;transition:transform .14s,box-shadow .14s,background .14s,border-color .14s;display:inline-flex}.button:hover{border-color:var(--brand-300);box-shadow:var(--shadow-sm);transform:translateY(-1px)}.button.primary{border-color:var(--brand-800);background:linear-gradient(145deg, var(--brand-700), var(--brand-900));color:#fff;box-shadow:0 8px 18px #0e504a3d}.button.ghost{box-shadow:none;background:0 0}.button.small{min-height:30px;padding:4px 9px;font-size:13px}.button.danger{color:var(--danger);border-color:#c2493f66}.button.danger:hover{border-color:var(--danger);background:var(--danger-soft)}.button:disabled{opacity:.45;cursor:not-allowed;box-shadow:none;transform:none}.batch-bar{border:1px solid var(--line);border-radius:var(--radius);background:var(--cream);box-shadow:var(--shadow-xs);justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px;padding:10px;display:flex}.list{margin-top:8px}.modal-backdrop{z-index:70;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#1420216b;justify-content:center;align-items:center;padding:14px;display:flex;position:fixed;inset:0}.modal-backdrop .form{border-color:var(--line);width:100%;max-width:560px;max-height:calc(100dvh - 28px);box-shadow:var(--shadow-lg);overflow-y:auto}.modal-backdrop>.panel{width:100%;max-width:560px;max-height:calc(100dvh - 28px);box-shadow:var(--shadow-lg);overflow-y:auto}.modal-head{justify-content:space-between;align-items:flex-start;gap:8px;margin-bottom:8px;display:flex}.modal-head h2{margin:0}.confirm-card{border:1px solid var(--line);background:var(--paper);width:100%;max-width:480px;box-shadow:var(--shadow-lg);border-radius:14px;padding:14px}.confirm-card h2{margin:0 0 6px}.confirm-summary{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:10px 0;display:grid}.confirm-summary div{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--paper-deep);min-width:0;padding:8px}.confirm-summary span{color:var(--muted);font-size:12px;display:block}.confirm-summary strong{overflow-wrap:anywhere;margin-top:4px;font-size:13px;display:block}.confirm-card label{flex-direction:column;gap:5px;margin-top:8px;display:flex}.confirm-card label span{color:var(--muted);font-size:12px}.balance-tip{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--brand-50);color:var(--brand-800);margin-top:10px;padding:8px 10px;font-size:13px}.confirm-card .actions{justify-content:flex-end;gap:8px;margin-top:12px;display:flex}.onboarding{background:var(--paper-deep);justify-content:center;align-items:center;min-height:100dvh;padding:18px;display:flex}.onboarding-card{border:1px solid var(--line);background:var(--paper);width:100%;max-width:520px;box-shadow:var(--shadow-md);border-radius:14px;padding:18px}.onboarding-card.wide{max-width:640px}.onboarding-card h1{margin:0 0 6px;font-size:22px}.profile-options{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:18px;display:grid}.profile-option{border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--paper);min-height:64px;box-shadow:var(--shadow-sm);font-size:20px;font-weight:850}.profile-option:hover{border-color:var(--brand-300);background:var(--brand-50);transform:translateY(-1px)}.file-drop{border:1px dashed var(--line-strong);border-radius:var(--radius);background:var(--paper-deep);cursor:pointer;flex-direction:column;justify-content:center;align-items:center;gap:8px;min-height:96px;margin-top:12px;display:flex}.file-drop input{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute}.error-box{border:1px solid var(--danger);border-radius:var(--radius-sm);background:var(--danger-soft);color:var(--danger);margin-top:10px;padding:9px 11px;font-size:13px}.segmented{border:1px solid var(--line);background:var(--cream);border-radius:12px;gap:8px;margin-bottom:12px;padding:4px;display:flex}.segmented button{min-height:38px;color:var(--muted);background:0 0;border:1px solid #0000;border-radius:9px;flex:1;font-weight:800;transition:background .15s,color .15s,box-shadow .15s}.segmented button.active{border-color:var(--line);background:var(--paper);color:var(--brand-900);box-shadow:var(--shadow-sm)}.preview-note{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--paper-deep);color:var(--muted);margin-bottom:10px;padding:9px 11px}.mapping-panel{border:1px solid var(--line);border-radius:var(--radius);background:var(--paper);box-shadow:var(--shadow-xs);margin:10px 0;padding:10px}.mapping-panel h3{margin:0 0 6px;font-size:14px}.mapping-panel label{flex-direction:column;gap:4px;margin-bottom:8px;display:flex}.mapping-panel span{color:var(--muted);font-size:12px}.import-list{gap:8px;display:grid}.import-item{border:1px solid var(--line);border-radius:var(--radius);background:var(--paper);box-shadow:var(--shadow-xs);overflow:hidden}.import-item summary{cursor:pointer;justify-content:space-between;align-items:center;gap:10px;padding:10px;font-weight:800;display:flex}.import-item[open] summary{border-bottom:1px solid var(--line)}.import-item .form-grid{margin-bottom:0;padding:10px}.note-line{overflow-wrap:anywhere;padding:0 10px 10px}.sticky-actions{margin-top:12px}.progress-head{justify-content:space-between;align-items:center;margin-bottom:9px;font-weight:800;display:flex}.progress-track{border:1px solid var(--line);border-radius:var(--radius-pill);background:var(--cream);height:12px;overflow:hidden}.progress-fill{border-radius:inherit;background:linear-gradient(90deg, var(--brand-600), #42b6a8);height:100%}.table{gap:0;font-size:13px;display:grid}.table-head,.table-row{border-bottom:1px solid var(--line);grid-template-columns:1.2fr .5fr 1fr 1fr 1fr;align-items:center;gap:8px;padding:9px 2px;display:grid}.table-head{color:var(--muted);font-weight:800}.table-row:last-child{border-bottom:0}.table span{overflow-wrap:anywhere;min-width:0}.settings-actions{gap:8px;margin-bottom:8px;display:grid}.sync-message{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--brand-50);color:var(--brand-800);margin-top:8px;padding:9px 11px;font-size:13px}.plan-editor{border:1px solid var(--line);border-radius:var(--radius);background:var(--paper-deep);box-shadow:var(--shadow-xs);margin:12px 0;padding:11px}.plan-toggle{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--paper);width:100%;box-shadow:var(--shadow-xs);align-items:center;gap:6px;padding:8px 10px;font-weight:800;display:flex}.plan-toggle svg{transition:transform .15s}.plan-toggle svg.expanded{transform:rotate(180deg)}.plan-editor h3{margin:0 0 6px;font-size:14px}.reminder-compact{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--paper);grid-template-columns:minmax(0,1fr);gap:8px;margin-bottom:8px;padding:9px;display:grid}.reminder-compact label{grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:5px;min-width:0;display:grid}.reminder-compact label span,.reminder-compact label em{color:var(--muted);white-space:nowrap;font-size:12px;font-style:normal}.plan-row{border-bottom:1px solid var(--line);grid-template-columns:.6fr 1fr 1fr;align-items:center;gap:8px;padding:7px 0;display:grid}.plan-default-row{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;padding:7px 0;display:grid}.plan-default-row span{color:var(--muted);font-size:12px}.plan-default-row .unit-field{width:150px}.plan-row:last-child{border-bottom:0}.plan-row.plan-head{color:var(--muted);font-weight:800}.plan-row.two-col{grid-template-columns:1fr 1fr}.plan-row input{min-height:32px}.monthly-amount-editor{border:1px solid var(--line);border-radius:var(--radius);background:var(--paper-deep);margin:12px 0;padding:11px}.monthly-amount-editor h3{margin:0 0 6px;font-size:14px}.monthly-amount-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr) 36px;align-items:center;gap:8px;margin-bottom:7px;display:grid}.institution-manage-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:center;gap:8px;margin-bottom:8px;display:grid}.institution-manage-row>span{overflow-wrap:anywhere;min-width:0;font-weight:800}.preset-group{margin-bottom:12px}.preset-group h3{margin:0 0 7px;font-size:13px;font-weight:800}.preset-tags{flex-wrap:wrap;gap:7px;display:flex}.preset-tags span{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--paper-deep);box-shadow:var(--shadow-xs);padding:5px 9px;font-size:12px}.preset-tag-empty{color:var(--muted);border-style:dashed!important}.custom-add-row{gap:8px;margin-bottom:8px;display:flex}.custom-add-row>*{flex:1;min-width:0}.custom-add-row button{flex:none}.custom-manage-row{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:8px;padding:8px 0;display:flex}.row-icon-actions{gap:7px;display:flex}.custom-product-group{margin-top:12px}.custom-product-group h4{color:var(--brand-800);margin:0 0 5px;font-size:12px}.member-context{border:1px solid var(--line);border-radius:var(--radius);background:var(--brand-50);box-shadow:var(--shadow-xs);color:var(--brand-900);margin-bottom:10px;padding:9px 11px;font-weight:800}.month-count{color:var(--muted);margin-bottom:12px;font-size:13px}.month-view-tabs{margin-bottom:12px}.calendar-weekdays{grid-template-columns:repeat(7,minmax(0,1fr));gap:5px;margin-bottom:6px;display:grid}.calendar-weekdays span{color:var(--muted);text-align:center;font-size:11px;font-weight:800}.repay-calendar{grid-template-columns:repeat(7,minmax(0,1fr));gap:5px;margin-bottom:12px;display:grid}.calendar-cell{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--paper);min-height:68px;box-shadow:var(--shadow-xs);text-align:left;flex-direction:column;align-items:stretch;gap:3px;padding:5px;transition:transform .14s,border-color .14s,box-shadow .14s;display:flex;position:relative;overflow:visible}.calendar-cell:hover{border-color:var(--brand-300);box-shadow:var(--shadow-sm);transform:translateY(-1px)}.calendar-cell.empty{box-shadow:none;background:0 0;border-style:dashed}.calendar-cell.today{border-color:var(--brand-500);box-shadow:inset 0 0 0 1px var(--brand-500), var(--shadow-sm)}.calendar-cell.has-unpaid{background:linear-gradient(#fffdf8,#f3faf7)}.calendar-cell-day{border-radius:50%;justify-content:center;align-items:center;width:22px;height:22px;font-size:12px;font-weight:850;display:inline-flex}.calendar-cell.today .calendar-cell-day{background:var(--brand-700);color:#fff}.calendar-cell-count{color:var(--muted);font-size:10px;font-weight:800}.calendar-item{text-overflow:ellipsis;white-space:nowrap;font-size:10px;font-weight:700;overflow:hidden}.calendar-item.paid{color:var(--muted);text-decoration:line-through}.calendar-more{color:var(--muted);font-size:10px;font-weight:800}.calendar-tooltip{z-index:40;border:1px solid var(--line);border-radius:var(--radius);background:var(--paper);width:max-content;max-width:250px;box-shadow:var(--shadow-md);white-space:pre-line;padding:10px;font-size:12px;line-height:1.55;display:none;position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%)}.calendar-cell.tooltip-left .calendar-tooltip{left:0;transform:none}.calendar-cell.tooltip-right .calendar-tooltip{left:auto;right:0;transform:none}.calendar-cell:hover .calendar-tooltip,.calendar-cell:focus-visible .calendar-tooltip{display:block}.calendar-cell-empty{color:var(--muted);font-size:10px}.day-filter-bar{border:1px solid var(--line);border-radius:var(--radius);background:var(--brand-50);box-shadow:var(--shadow-xs);color:var(--brand-900);justify-content:space-between;align-items:center;margin-bottom:10px;padding:9px 11px;font-weight:800;display:flex}.member-switch{gap:8px;margin:10px 0 0;display:flex}.member-switch button{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--paper);flex:1;min-height:36px;font-weight:800}.member-switch button.active{border-color:var(--brand-700);background:var(--brand-700);color:#fff}.family-name-field{flex-direction:column;gap:5px;margin-bottom:12px;display:flex}.family-name-field span{color:var(--muted);font-size:12px}.member-edit-card{border:1px solid var(--line);border-radius:var(--radius);background:var(--paper-deep);box-shadow:var(--shadow-xs);margin-bottom:9px;padding:10px}.member-edit-top{align-items:flex-start;gap:8px;display:flex}.member-edit-top label{flex-direction:column;flex:1;gap:5px;min-width:0;display:flex}.member-edit-top label span{color:var(--muted);font-size:12px}.member-current-badge{border-radius:var(--radius-pill);background:var(--good-soft);color:var(--good);white-space:nowrap;border:1px solid #2d7d5b59;align-items:center;gap:4px;margin-top:22px;padding:4px 8px;font-size:11px;font-weight:800;display:inline-flex}.member-actions{gap:7px;margin-top:9px;display:flex}.member-actions .button{flex:1}.demo-banner{background:radial-gradient(circle at 90% 8%, #2aa39624, transparent 34%), var(--paper)}.demo-banner .button{margin-top:10px}.create-family-card .actions{justify-content:flex-end;margin-top:12px}.create-actions{gap:10px;margin-top:14px;display:grid}.create-family-card>label{flex-direction:column;gap:5px;margin-bottom:12px;display:flex}.create-family-card>label span{color:var(--muted);font-size:12px}.member-count-select{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:14px;display:grid}.member-count-option{border:1px solid var(--line);border-radius:var(--radius);background:var(--paper);min-height:58px;box-shadow:var(--shadow-xs);text-align:left;flex-direction:column;align-items:flex-start;gap:3px;padding:10px 12px;font-weight:850;display:flex}.member-count-option span{color:var(--muted);font-size:12px;font-weight:500}.member-count-option.active{border-color:var(--brand-700);background:linear-gradient(145deg, var(--brand-700), var(--brand-900));color:#fff;box-shadow:var(--shadow-md)}.member-count-option.active span{color:#ffffffbf}.create-actions .button.primary{width:100%}.create-secondary{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.hidden-input{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute}.toast{z-index:90;border-radius:var(--radius-pill);background:var(--brand-950);max-width:calc(100vw - 32px);box-shadow:var(--shadow-md);color:#fff;white-space:nowrap;border:1px solid #fff3;align-items:center;gap:8px;padding:10px 14px;font-size:13px;font-weight:800;display:inline-flex;position:fixed;bottom:88px;left:50%;transform:translate(-50%)}.bottom-nav{z-index:45;border:1px solid var(--line);box-shadow:var(--shadow-md);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#fffdf8eb;border-radius:16px;grid-template-columns:repeat(5,1fr);gap:4px;margin:0 12px 10px;padding:5px;display:grid;position:sticky;bottom:0}.bottom-nav button{min-width:0;height:52px;color:var(--muted);background:0 0;border:0;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:3px;font-size:11px;font-weight:700;transition:background .15s,color .15s,transform .15s;display:flex}.bottom-nav button svg{stroke-width:1.8px}.bottom-nav button.active{background:var(--brand-50);color:var(--brand-800);font-weight:850}.bottom-nav button.active svg{stroke-width:2.3px}.bottom-nav button:hover{color:var(--brand-700)}@media (width>=700px){body{padding:22px 0}.app-shell{border-radius:18px;min-height:calc(100dvh - 44px);overflow:hidden}.app-header{border-radius:18px 18px 0 0}.bottom-nav{margin-bottom:14px}}.backup-group{margin-bottom:14px}.backup-group h3{color:var(--muted);margin:0 0 8px;font-size:13px;font-weight:800}.backup-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.backup-actions .button,.backup-actions a.button{justify-content:flex-start;width:100%;min-height:44px}@media (width<=360px){.backup-actions{grid-template-columns:1fr}}.type-summary-list{gap:8px;display:grid}.type-summary-row{border:1px solid var(--line);border-radius:var(--radius);background:var(--paper-deep);box-shadow:var(--shadow-xs);grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px;display:grid}.type-summary-main{align-items:center;gap:9px;min-width:0;display:flex}.type-summary-main>div{min-width:0}.type-summary-main strong{font-size:14px;display:block}.type-summary-main span{color:var(--muted);margin-top:2px;font-size:12px;display:block}.type-summary-metrics{grid-template-columns:repeat(3,minmax(0,auto));gap:12px;display:grid}.type-summary-metrics div{text-align:right;min-width:0}.type-summary-metrics span{color:var(--muted);font-size:11px;display:block}.type-summary-metrics strong{white-space:nowrap;margin-top:2px;font-size:13px;display:block}@media (width<=480px){.type-summary-row{grid-template-columns:1fr;gap:8px}.type-summary-metrics{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.type-summary-metrics div{text-align:left}}.auth-shell{background:var(--paper-deep);justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.auth-card{background:var(--paper);border:1px solid var(--line);width:100%;max-width:380px;box-shadow:var(--shadow-md);border-radius:8px;flex-direction:column;gap:14px;padding:24px;display:flex}.auth-head{text-align:center;flex-direction:column;align-items:center;gap:6px;display:flex}.auth-head h1{margin:0;font-size:20px}.auth-tabs{grid-template-columns:1fr 1fr;gap:6px;display:grid}.auth-tabs button{border:1px solid var(--line);background:var(--paper);color:var(--ink-soft);cursor:pointer;border-radius:8px;padding:9px 0;font-size:14px}.auth-tabs button.active{background:var(--brand-900);border-color:var(--brand-900);color:var(--paper)}.auth-card label{color:var(--ink-soft);flex-direction:column;gap:6px;font-size:13px;display:flex}.auth-card input{border:1px solid var(--line-strong);background:var(--paper);color:var(--ink);border-radius:8px;padding:10px 12px;font-size:15px}.auth-loading{min-height:100vh;color:var(--muted);justify-content:center;align-items:center;font-size:14px;display:flex}.migrate-banner{background:var(--info-soft);border-bottom:1px solid var(--line);color:var(--ink);flex-wrap:wrap;align-items:center;gap:10px;padding:10px 16px;font-size:13px;display:flex}
