: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:#f1efe9;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:min(100%,430px);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{background:0 0;border-radius:0;flex-shrink:0;justify-content:center;align-items:center;width:30px;height:30px;display:inline-flex}.app-header .brand-mark .logo-img{object-fit:contain;border-radius:0;width:24px;height:24px}.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}.accounts-page-head{flex-wrap:wrap}.accounts-head-title{flex-wrap:wrap;align-items:center;gap:10px;min-width:0;display:flex}.toggle-switch{color:var(--muted);letter-spacing:0;cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:6px;font-size:12px;font-weight:750;display:inline-flex}.toggle-switch input{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute}.toggle-track{border:1px solid var(--line);background:var(--paper-deep);border-radius:999px;flex:none;width:38px;height:22px;transition:background .16s,border-color .16s;position:relative}.toggle-thumb{background:var(--paper);width:16px;height:16px;box-shadow:var(--shadow-xs);border-radius:50%;transition:transform .16s;position:absolute;top:2px;left:2px}.toggle-switch input:checked+.toggle-track{border-color:var(--brand-700);background:var(--brand-700)}.toggle-switch input:checked+.toggle-track .toggle-thumb{transform:translate(16px)}.toggle-switch input:focus-visible+.toggle-track{outline:2px solid var(--brand-500);outline-offset:2px}.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}.calendar-tab-group{border:1px solid #0000;border-radius:9px;flex:1;align-items:center;gap:2px;min-width:0;display:flex}.month-view-tabs .calendar-tab-group.active{border-color:var(--line);background:var(--paper);box-shadow:var(--shadow-sm)}.month-view-tabs .calendar-tab-button{min-width:0;min-height:38px;color:var(--muted);background:0 0;border:0;border-radius:8px;flex:1;font-weight:800}.month-view-tabs .calendar-tab-group.active .calendar-tab-button{color:var(--brand-900)}.month-view-tabs .month-calculator-toggle{width:34px;height:30px;color:var(--muted);background:0 0;border:1px solid #0000;border-radius:6px;flex:0 0 34px;justify-content:center;align-items:center;margin-right:3px;padding:0;transition:color .15s,background .15s,border-color .15s;display:inline-flex}.month-view-tabs .month-calculator-toggle:hover,.month-view-tabs .month-calculator-toggle.active{border-color:var(--warning);background:var(--warning-soft);color:var(--warning)}.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}.app-version{color:var(--muted);white-space:nowrap;flex-shrink:0;font-size:12px}.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:13px;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}.repay-row-card{display:block}.repay-row-head{justify-content:space-between;align-items:flex-start;gap:8px;width:100%;display:flex}.repay-row-head .row-title{flex:auto;justify-content:flex-start;min-width:0}.repay-row-head .row-title>span:first-child{overflow-wrap:anywhere;min-width:0}.repay-row-head .row-actions{flex:none}.repay-row-card .entry-editor{width:100%}.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}.status-pill.pending{background:var(--warning-soft);color:var(--warning);border-color:#d98e0459}.expense-filters{gap:8px;margin:10px 0;display:flex}.expense-filters select{flex:1;min-width:0}.row-amount{color:var(--ink);white-space:nowrap;flex-shrink:0;margin-left:8px;font-weight:800}.reimburser-add{gap:8px;margin-top:8px;display:flex}.reimburser-add input{flex:1;min-width:0}.reimburser-tag{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--paper-deep);align-items:center;gap:6px;padding:5px 8px;font-size:13px;display:inline-flex}.reimburser-tag input{border:1px solid var(--line-strong);border-radius:var(--radius-sm);width:120px;padding:4px 6px;font-size:13px}.expense-form-card .form-grid,.expense-form-card .expense-field-full{margin-top:10px}.expense-form-card .expense-field-row{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:10px;display:grid}.expense-card{z-index:1;display:block;position:relative}.expense-card.menu-open{z-index:8}.expense-row-top{justify-content:space-between;align-items:center;gap:10px;display:flex}.expense-row-info{align-items:center;gap:8px;min-width:0;display:flex}.expense-date,.expense-type,.expense-amount{color:var(--ink);white-space:nowrap;font-size:16px;font-weight:850}.expense-row-right{flex-shrink:0;align-items:center;gap:8px;padding-right:62px;display:flex;position:relative}.expense-reimburser{color:var(--ink-soft);text-overflow:ellipsis;white-space:nowrap;margin-top:8px;font-size:13px;overflow:hidden}.expense-note{-webkit-line-clamp:2;color:var(--ink-soft);-webkit-box-orient:vertical;margin-top:6px;font-size:13px;display:-webkit-box;overflow:hidden}.expense-popover{z-index:6;border:1px solid var(--line);background:var(--paper);box-shadow:var(--shadow-md);border-radius:10px;flex-direction:column;gap:6px;padding:6px;display:flex;position:absolute;top:0;right:0}.expense-menu{flex-direction:column;gap:6px;width:32px;display:flex}.ocr-loading-mask{z-index:80;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#1420216b;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.ocr-loading-box{border:1px solid var(--line);background:var(--paper);box-shadow:var(--shadow-lg);color:var(--ink);border-radius:10px;padding:14px 18px;font-size:14px;font-weight:700}.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-card.member-husband{border-left:1mm solid var(--info)}.row-card.member-wife{border-left:1mm solid #d06a8c}.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-grid-row{grid-column:1/-1;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.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:430px;max-height:calc(100dvh - 28px);box-shadow:var(--shadow-lg);overflow-y:auto}.modal-backdrop>.panel{width:100%;max-width:430px;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:430px;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}.admin-head{justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px;display:flex}.admin-head h2{margin:0}.admin-head-actions{flex-shrink:0;align-items:center;gap:8px;display:flex}.admin-sms-test{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px;display:flex}.admin-sms-test input{width:180px}.admin-table-head,.admin-table-row{grid-template-columns:.4fr 1.5fr 1fr .8fr 1.2fr 1.2fr .8fr}.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.calculator-selected{box-shadow:inset 0 0 0 1px #b8791852, var(--shadow-sm);background:#f4c54280;border-color:#d3a51d}.calendar-cell.calculator-selected:hover{box-shadow:inset 0 0 0 1px #b879186b, var(--shadow-sm);border-color:#c79510}.calendar-cell.calculator-disabled{cursor:default;opacity:.55}.calendar-cell.calculator-disabled:hover{border-color:var(--line);box-shadow:var(--shadow-xs);transform:none}.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}.calendar-calculator-bar{border-radius:var(--radius);box-shadow:var(--shadow-xs);background:#f4c54229;border:1px solid #b8791861;justify-content:space-between;align-items:center;gap:12px;margin:-3px 0 12px;padding:10px 11px;display:flex}.calendar-calculator-days{flex-wrap:wrap;flex:1;align-items:center;gap:5px;min-width:0;display:flex}.calendar-calculator-term{color:#8b5c0a;align-items:center;gap:5px;font-size:12px;font-weight:850;display:inline-flex}.calendar-calculator-plus{color:var(--muted);font-weight:700}.calendar-calculator-empty{color:var(--muted);font-size:12px;font-weight:700}.calendar-calculator-total{color:var(--muted);white-space:nowrap;flex:none;align-items:baseline;gap:6px;font-size:11px;display:flex}.calendar-calculator-total strong{color:var(--warning);font-size:15px}.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-register-email{color:var(--muted);margin:0 0 10px;font-size:13px}.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(6,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){.calendar-calculator-bar{flex-direction:column;align-items:stretch;gap:8px}.calendar-calculator-total{justify-content:flex-end}.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-head .brand-mark .logo-img{object-fit:contain;width:44px;height:44px}.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-card .auth-remember{color:var(--ink-soft);cursor:pointer;flex-direction:row;align-items:center;gap:8px;font-size:13px;display:flex}.auth-card .auth-remember input[type=checkbox]{width:16px;height:16px;accent-color:var(--brand-900);cursor:pointer;border-radius:4px;margin:0;padding:0}.auth-card .password-label-row{justify-content:flex-start;align-items:center;gap:6px;display:flex}.auth-notice{border:1px solid var(--brand-300);border-radius:var(--radius-sm);background:var(--brand-50);color:var(--brand-800);margin-top:10px;padding:9px 11px;font-size:13px}.forgot-code-row{align-items:center;gap:8px;display:flex}.forgot-code-row input{flex:1;min-width:0}.forgot-code-row .button{white-space:nowrap;flex:none}.forgot-message{color:var(--brand-800);margin:4px 0 0;font-size:12px}.forgot-card input:disabled{opacity:.55;cursor:not-allowed}.auth-loading{min-height:100vh;color:var(--muted);justify-content:center;align-items:center;font-size:14px;display:flex}.stats-view-tabs{margin-top:4px}.stats-chart-tabs{margin-bottom:14px}.chart-box{width:100%;height:280px;margin-top:10px}.chart-total{color:var(--muted);margin:8px 0 0;font-size:12px}.history-actions{flex-wrap:wrap;gap:8px;margin-bottom:8px;display:flex}.logout-button{width:min(100%,360px);min-height:46px;margin:12px auto 0;padding:12px 18px;font-size:16px;display:flex}.settings-save-button{width:min(100%,360px);margin:0 auto;display:flex}.auth-switch-links{justify-content:center;align-items:center;gap:10px;margin-top:4px;display:flex}.auth-switch-links a,.link-button{color:var(--ink);cursor:pointer;background:0 0;border:0;padding:0;font-size:13px;font-weight:400;text-decoration:none}.repay-detail-list{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--paper-deep);margin-top:10px;padding:10px 12px}.repay-detail-list h3{margin:0 0 8px;font-size:13px}.repay-detail-row{justify-content:space-between;align-items:center;gap:10px;padding:5px 0;font-size:13px;display:flex}.repay-detail-row+.repay-detail-row{border-top:1px solid var(--line)}.merged-card .row-title span:first-child{overflow-wrap:anywhere}
