:root{--bg:#e8f0ee;--bg-2:#d5e4df;--ink:#14221f;--muted:#5a6e68;--panel:#ffffffdb;--line:#c9d9d3;--accent:#0c7a62;--accent-soft:#0c7a621f;--accent-2:#1a6bb5;--warn:#c0392b;--ok:#0c7a62;--pos:#0a8f6c;--pos-bg:#0a8f6c1a;--pos-border:#0a8f6c47;--neg:#c0392b;--neg-bg:#c0392b17;--neg-border:#c0392b42;--warn-bg:#c0392b14;--net-bg:#1a6bb517;--net-border:#1a6bb540;--shadow:0 12px 36px #14322a12;color:var(--ink);background:var(--bg);font-family:Vazirmatn,sans-serif;line-height:1.6}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{padding:env(safe-area-inset-top,0) env(safe-area-inset-right,0) 0 env(safe-area-inset-left,0);background:radial-gradient(70% 50% at 0 0,#0c7a622e,#0000 55%),radial-gradient(55% 45% at 100% 5%,#1a6bb524,#0000 50%),radial-gradient(40% 35% at 80% 100%,#c0392b0f,#0000 45%),linear-gradient(165deg,#f2f8f6 0%,#e4eeeb 48%,#dfe8f0 100%)}.mobile-tabbar,.more-sheet,.more-backdrop{display:none}a{color:var(--accent);text-decoration:none}h1,h2{letter-spacing:-.03em;margin:0 0 .35rem;font-weight:800}.page-head h1{color:var(--ink);font-size:1.75rem}.muted{color:var(--muted)}.center{text-align:center}.brand{color:var(--accent);letter-spacing:-.03em;margin:0;font-size:1.75rem;font-weight:800}.app-shell{grid-template-columns:248px 1fr;min-height:100dvh;display:grid}.sidebar{z-index:40;border-left:1px solid var(--line);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:linear-gradient(#ffffffeb 0%,#ecf6f2e0 100%);flex-direction:column;align-self:start;gap:1.5rem;height:100vh;padding:1.5rem 1rem;display:flex;position:sticky;top:0;overflow-y:auto;box-shadow:inset -1px 0 #0c7a620f}.sidebar-brand{color:var(--accent);letter-spacing:-.03em;gap:.25rem;padding:.35rem .65rem;font-size:1.55rem;font-weight:800;display:grid}.today-date{color:var(--muted);letter-spacing:0;background:var(--accent-soft);border-radius:8px;width:fit-content;padding:.2rem .45rem;font-size:.78rem;font-weight:500;display:block}.sidebar nav{flex-direction:column;gap:.3rem;display:flex}.sidebar a{color:var(--ink);border-radius:12px;padding:.72rem .9rem;font-weight:500;transition:background .15s,color .15s,transform .15s}.sidebar a:hover{color:var(--accent);background:#0c7a6214}.sidebar a.active{color:var(--accent);box-shadow:inset 3px 0 0 var(--accent);background:linear-gradient(90deg,#0c7a6229,#0c7a620f);font-weight:700}.sidebar-foot{gap:.5rem;margin-top:auto;display:grid}.user-chip{color:var(--muted);border:1px solid var(--line);background:#ffffffa6;border-radius:10px;padding:.45rem .65rem;font-size:.88rem}a.user-chip-link{color:var(--ink);font-weight:600;text-decoration:none;transition:border-color .15s,color .15s}a.user-chip-link:hover{border-color:var(--accent);color:var(--accent)}.alert.ok{background:var(--pos-bg);color:var(--pos);border:1px solid var(--pos-border)}.member-list li{padding-inline:.25rem}.main{padding:1.5rem}.page{gap:1.25rem;max-width:1100px;margin:0 auto;display:grid}.page-head{justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.stats{grid-template-columns:repeat(4,1fr);gap:.85rem;display:grid}.stats.stats-2{grid-template-columns:repeat(2,1fr)}.stats.stats-3{grid-template-columns:repeat(3,1fr)}.stats.stats-4{grid-template-columns:repeat(4,1fr)}.market-strip{margin-top:1rem}.market-strip-head{justify-content:space-between;align-items:baseline;gap:.75rem;margin-bottom:.75rem;display:flex}.market-strip-head h2,.market-prices{margin:0}.market-prices .stat-card{box-shadow:none;padding:.85rem .95rem}.stats article,.stat-card{background:var(--panel);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:18px;gap:.4rem;padding:1.05rem 1.1rem;transition:transform .15s,box-shadow .15s;display:grid}.stat-card:hover{transform:translateY(-2px);box-shadow:0 16px 40px #14322a1a}.stats article span,.stat-card span{color:var(--muted);font-size:.86rem;font-weight:500}.stats article strong,.stat-card strong{letter-spacing:-.02em;text-align:right;direction:ltr;font-size:1.2rem;font-weight:800}.stat-card.stat-pos{background:linear-gradient(145deg, #fffffff2, var(--pos-bg));border-color:var(--pos-border)}.stat-card.stat-neg{background:linear-gradient(145deg, #fffffff2, var(--neg-bg));border-color:var(--neg-border)}.stat-card.stat-net{background:linear-gradient(145deg, #fffffff2, var(--net-bg));border-color:var(--net-border)}.stat-card.stat-warn{background:linear-gradient(145deg, #fffffff2, var(--warn-bg));border-color:var(--neg-border)}.stat-card.stat-muted{background:linear-gradient(145deg,#ffffffeb,#5a6e680f)}.money-pos{color:var(--pos)!important}.money-neg{color:var(--neg)!important}.stats article.warn strong{color:var(--warn)}.panel{background:var(--panel);border:1px solid var(--line);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-radius:20px;padding:1.15rem}.grid-2{grid-template-columns:1fr 1fr;gap:1rem;display:grid}.grid-3{grid-template-columns:repeat(3,1fr);gap:1rem;display:grid}.year-switch{flex-wrap:wrap;gap:.4rem;display:flex}.year-switch button{border:1px solid var(--line);font:inherit;cursor:pointer;color:var(--muted);background:#ffffffb3;border-radius:10px;padding:.3rem .75rem;font-size:.85rem;transition:background .15s,color .15s,border-color .15s}.year-switch button.active{background:var(--accent-soft);border-color:var(--accent);color:var(--accent);font-weight:700}.overview{border:1px solid var(--line);box-shadow:var(--shadow);background:#ffffffe6;border-radius:22px;margin-top:1rem;padding:1.25rem 1.35rem 1.5rem}.overview-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1.1rem;display:flex}.overview-head h2{margin:0;font-size:1.35rem}.overview-head .muted{margin:.2rem 0 0;font-size:.9rem}.overview-controls{flex-wrap:wrap;align-items:center;gap:.65rem;display:flex}.period-toggle{border:1px solid var(--line);background:#0c7a6214;border-radius:14px;padding:.22rem;display:inline-flex}.period-toggle button{font:inherit;cursor:pointer;color:var(--muted);background:0 0;border:none;border-radius:11px;padding:.4rem .95rem;font-size:.88rem;transition:background .15s,color .15s}.period-toggle button.active{color:var(--accent);background:#fff;font-weight:700;box-shadow:0 2px 10px #0c7a621f}.overview-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;display:grid}.donut-card{border:1px solid var(--line);background:linear-gradient(#fff 0%,#f4faf8 100%);border-radius:18px;min-height:460px;padding:1rem .35rem 1.15rem;overflow:visible}.income-compare{border:1px solid var(--line);background:#ffffffb8;border-radius:16px;gap:.45rem;margin:.35rem .65rem .25rem;padding:.65rem .75rem;display:grid}.overview-income-card{margin:0 0 1rem}.income-compare>div{border-radius:10px;justify-content:space-between;align-items:baseline;gap:.75rem;padding:.45rem .55rem;display:flex}.income-compare>div.row-neg{background:var(--neg-bg)}.income-compare>div.row-pos{background:var(--pos-bg)}.income-compare>div.diff-ok,.income-compare>div.diff-warn{background:#1a6bb50f}.income-compare span{color:var(--muted);font-size:.8rem}.income-compare span em{font-size:.75rem;font-style:normal}.income-compare strong{text-align:left;direction:ltr;font-size:.92rem;font-weight:800}.income-compare .diff-ok strong,td.diff-ok strong,.diff-ok{color:var(--ok)}.income-compare .diff-warn strong,td.diff-warn strong,.diff-warn{color:var(--warn)}.donut-card h3{margin:0;padding:0 .5rem;font-size:1rem;font-weight:700}.donut-unit{margin:.15rem 0 .25rem;padding:0 .5rem;font-size:.8rem}.donut-wrap{width:100%;height:380px;position:relative;overflow:visible}.donut-wrap .donut-label text{paint-order:stroke;stroke:#ffffffeb;stroke-width:3px;stroke-linejoin:round}.donut-wrap.compact{flex:1;min-width:0;height:220px}.donut-wrap .recharts-wrapper,.donut-wrap .recharts-surface{overflow:visible!important}.donut-center{pointer-events:none;text-align:center;flex-direction:column;justify-content:center;align-items:center;padding-top:.2rem;display:flex;position:absolute;inset:0}.donut-center span{color:var(--muted);font-size:.72rem}.donut-center strong{color:var(--ink);font-size:1.35rem;font-weight:800;line-height:1.2}.donut-center em{color:var(--muted);font-size:.72rem;font-style:normal}.donut-label{font-family:inherit}.center-empty{text-align:center;padding:4rem 1rem}.portfolio-chart{margin-bottom:1rem}.portfolio-chart .creditor-layout{max-width:520px}.creditor-layout{align-items:center;gap:.5rem;min-height:240px;display:flex}.creditor-legend{gap:.55rem;min-width:7.5rem;margin:0;padding:0;list-style:none;display:grid}.creditor-legend li{border:none;align-items:flex-start;gap:.45rem;padding:0;display:flex}.creditor-legend i{border-radius:50%;flex-shrink:0;width:.55rem;height:.55rem;margin-top:.35rem}.creditor-legend strong{font-size:.82rem;line-height:1.25;display:block}.creditor-legend span{color:var(--muted);font-size:.75rem}.list{gap:.65rem;margin:0;padding:0;list-style:none;display:grid}.list li{border-bottom:1px solid var(--line);border-radius:10px;justify-content:space-between;align-items:center;gap:1rem;margin:0 -.55rem;padding:.8rem .55rem;transition:background .15s;display:flex}.list li:hover{background:#0c7a620d}.list li>div{display:grid}.upcoming-panel{margin-top:1rem;padding-bottom:.85rem}.upcoming-panel-head{justify-content:space-between;align-items:baseline;gap:.75rem;margin-bottom:.65rem;display:flex}.upcoming-panel-head h2{margin:0;font-size:1.05rem}.upcoming-cards{grid-template-columns:repeat(auto-fill,minmax(148px,1fr));gap:.5rem;display:grid}.upcoming-card{border:1px solid var(--line);color:inherit;background:linear-gradient(160deg,#fff 0%,#f7f4ec 100%);border-radius:12px;gap:.22rem;min-width:0;padding:.55rem .6rem;text-decoration:none;transition:border-color .15s,transform .15s;display:grid}.upcoming-card:hover{border-color:var(--accent);transform:translateY(-1px)}.upcoming-card.status-overdue{background:linear-gradient(160deg,#fff 0%,#fff1eb 100%);border-color:#9a341259}.upcoming-card-top{align-items:center;gap:.3rem;min-width:0;display:flex}.upcoming-card-title{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:.78rem;font-weight:700;overflow:hidden}.upcoming-card .badge{flex-shrink:0;padding:.08rem .35rem;font-size:.64rem}.upcoming-card .badge.small{text-overflow:ellipsis;width:fit-content;max-width:100%;overflow:hidden}.upcoming-card-amount{letter-spacing:-.02em;font-size:.82rem;font-weight:800}.upcoming-card-date{font-size:.68rem;line-height:1.3}@media (width>=900px){.upcoming-cards{grid-template-columns:repeat(5,minmax(0,1fr))}}@media (width>=1200px){.upcoming-cards{grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}}.loan-category-block{margin-top:1.35rem}.loan-category-block+.loan-category-block{border-top:1px solid var(--line);margin-top:1.75rem;padding-top:1.35rem}.loan-category-head{border-bottom:2px solid var(--ink);justify-content:space-between;align-items:baseline;gap:.75rem;margin-bottom:.75rem;padding-bottom:.45rem;display:flex}.loan-category-head h2{letter-spacing:-.02em;margin:0;font-size:1.15rem;font-weight:800}.loan-cards{gap:.75rem;display:grid}.loan-cards.wide{grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}.loan-card{border:1px solid var(--line);color:inherit;background:linear-gradient(160deg,#fff 0%,#f5faf8 100%);border-radius:16px;gap:.25rem;padding:1.05rem;transition:border-color .15s,transform .15s,box-shadow .15s;display:grid}.loan-card-title{align-items:center;gap:.45rem;min-width:0;display:inline-flex}.bank-logo{flex-shrink:0;align-items:center;gap:.4rem;display:inline-flex}.bank-logo svg,.bank-logo .platform-mark-img,.bank-pick .platform-mark-img{object-fit:cover;background:#fff;border-radius:8px;display:block;box-shadow:0 0 0 1px #1c1a160f}.bank-logo-name{font-size:.9rem;font-weight:600}.bank-picker{grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:.5rem;margin-top:.45rem;display:grid}.bank-pick{border:1px solid var(--line);color:var(--ink);cursor:pointer;font:inherit;background:#fff;border-radius:12px;justify-items:center;gap:.3rem;padding:.55rem .35rem;font-size:.78rem;transition:border-color .15s,box-shadow .15s,background .15s;display:grid}.bank-pick svg{border-radius:6px;display:block}.bank-pick-empty{width:28px;height:28px;color:var(--muted);background:#5a6e681a;border-radius:6px;place-items:center;font-weight:700;display:grid}.bank-pick:hover{border-color:var(--accent)}.bank-pick.active{border-color:var(--accent);background:#0f6e5614;box-shadow:0 0 0 2px #0f6e561f}.loan-edit-form{gap:.85rem!important}.loan-edit-grid{grid-template-columns:1fr 1fr;align-items:start;gap:.75rem 1rem;display:grid}.loan-edit-grid label,.loan-edit-bank{margin:0}.loan-edit-bank .bank-picker{grid-template-columns:repeat(auto-fill,minmax(88px,1fr));max-height:168px;padding:.15rem;overflow-y:auto}.loan-edit-actions{flex-wrap:wrap;align-items:center}@media (width<=720px){.loan-edit-grid{grid-template-columns:1fr}}.card-pay{border:1px dashed var(--line);background:#0f6e560a;border-radius:12px;gap:.35rem;margin:.55rem 0 .15rem;padding:.65rem .75rem;display:grid}.card-pay.compact{margin:.35rem 0 0;padding:.45rem .55rem}.card-pay-holder{color:var(--muted);font-size:.88rem}.card-pay-holder strong{color:var(--ink);font-weight:700}.card-pay-num{border:1px solid var(--line);width:100%;color:inherit;font:inherit;cursor:pointer;text-align:start;background:#fff;border-radius:10px;justify-content:space-between;align-items:center;gap:.75rem;padding:.35rem .5rem;display:inline-flex}.card-pay-num:hover{border-color:var(--accent)}.card-pay-digits{font-variant-numeric:tabular-nums;letter-spacing:.04em;font-size:.95rem;font-weight:700}.card-pay-copy{color:var(--accent);flex-shrink:0;font-size:.78rem;font-weight:600}.loan-card:hover{border-color:var(--accent);transform:translateY(-2px);box-shadow:0 10px 28px #0c7a621a}.badge{color:var(--muted);background:#5a6e681f;border-radius:10px;align-items:center;padding:.18rem .6rem;font-size:.78rem;font-weight:600;display:inline-flex}.badge.paid{background:var(--pos-bg);color:var(--pos)}.badge.overdue{background:var(--neg-bg);color:var(--neg)}.badge.pending{color:#1a6bb5;background:#1a6bb51f}.badge.cat-bank{color:#0b5c47;background:#0f6e5624}.badge.cat-platform{color:#9a3412;background:#c45c2624}.badge.cat-rent{color:#1e3a5f;background:#2b4c7e24}.badge.cat-none{color:#5a5a52;background:#6b6b631f}.badge.cat-teal{color:#0f766e;background:#0d948824}.badge.cat-amber{color:#92400e;background:#b4781429}.badge.cat-slate{color:#334155;background:#47556924}.badge.cat-rose{color:#9f1853;background:#9f30501f}.badge.cat-olive{color:#3f6212;background:#657b3229}.badge.cat-coral{color:#b91c1c;background:#c2413c1f}.badge.cat-indigo{color:#312e81;background:#374b8c24}.badge.cat-brown{color:#7c4a1e;background:#8b5a2b24}.btn{font:inherit;cursor:pointer;border:1px solid #0000;border-radius:12px;justify-content:center;align-items:center;gap:.35rem;padding:.7rem 1.05rem;font-weight:600;transition:background .15s,transform .12s,box-shadow .15s;display:inline-flex}.btn.primary{background:linear-gradient(180deg, #119978 0%, var(--accent) 100%);color:#fff;box-shadow:0 6px 16px #0c7a6247}.btn.primary:hover{transform:translateY(-1px);box-shadow:0 8px 20px #0c7a6257}.btn.ghost{border-color:var(--line);color:var(--ink);background:#ffffffb3}.btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.btn.small{padding:.35rem .65rem;font-size:.85rem}.btn:disabled{opacity:.6;cursor:not-allowed;box-shadow:none;transform:none}.input,textarea.input,select.input{border:1px solid var(--line);width:100%;font:inherit;color:var(--ink);background:#fff;border-radius:12px;padding:.7rem .85rem;transition:border-color .15s,box-shadow .15s}.input:focus,textarea.input:focus,select.input:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px #0c7a6226}label{gap:.35rem;font-size:.95rem;display:grid}.form{gap:.9rem;display:grid}.row{justify-content:space-between;align-items:center;display:flex}.row.gap{justify-content:flex-start;gap:.75rem}.mode-tabs{grid-template-columns:1fr 1fr;gap:.5rem;display:grid}.mode-tabs button{border:1px solid var(--line);font:inherit;cursor:pointer;background:#fff;border-radius:12px;padding:.7rem}.mode-tabs button.active{background:var(--accent-soft);border-color:var(--accent);color:var(--accent);font-weight:700}.preview{background:var(--accent-soft);border:1px solid var(--pos-border);border-radius:14px;padding:.85rem 1rem}.table-wrap{overflow:auto}table{border-collapse:collapse;width:100%}th,td{text-align:right;border-bottom:1px solid var(--line);white-space:nowrap;padding:.65rem .4rem}tr.overdue{background:var(--neg-bg)}tr.paid{opacity:.72}.check{border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:10px;width:2rem;height:2rem;font-size:1rem;transition:background .15s,border-color .15s}.check.on{background:var(--accent);color:#fff;border-color:var(--accent)}.auth-page{place-items:center;min-height:100vh;padding:1.5rem;display:grid}.auth-card{border:1px solid var(--line);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffffeb;border-radius:24px;gap:.85rem;width:min(420px,100%);padding:1.65rem;display:grid;box-shadow:0 20px 50px #14322a1f}.alert{background:var(--neg-bg);color:var(--neg);border:1px solid var(--neg-border);border-radius:12px;padding:.75rem 1rem}.chart-box{direction:ltr;width:100%}.year-block{margin-top:.25rem}.month-table-wrap{overflow:auto}.month-detail-row td{background:#0f6e560a;padding-top:.25rem;padding-bottom:.75rem}.month-detail-row .list{margin-top:.25rem}.inst-add-row td{border-bottom:1px dashed var(--line);text-align:center;padding:.15rem .4rem .55rem}.inst-row-open td{background:#0c7a620f}.inst-accordion-row td{border-bottom:1px solid var(--line);background:#0c7a620a;padding:.75rem .85rem 1rem}.inst-accordion{gap:.75rem;max-width:420px;display:grid}.inst-accordion strong{font-size:.95rem}.add-inst-btn{min-width:2.2rem;color:var(--accent);border-color:#0f6e5659;font-size:1.1rem;font-weight:700}.date-picker{width:100%;display:block}.date-picker .rmdp-container,.date-picker .rmdp-input{width:100%!important}.rmdp-wrapper,.rmdp-calendar-container-mobile,.rmdp-container{z-index:50!important}.jalali-field{gap:.35rem;display:grid}.small-hint{font-size:.8rem}@media (width<=900px){.app-shell{grid-template-columns:1fr}.desktop-nav{display:none}.main{padding:1rem 1rem calc(5.75rem + env(safe-area-inset-bottom,0));min-height:100dvh}.mobile-tabbar{inset-inline:0;z-index:50;padding:.35rem .35rem calc(.35rem + env(safe-area-inset-bottom,0));-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#ffffffeb;border-top:1px solid #c9d9d3e6;grid-template-columns:repeat(5,1fr);display:grid;position:fixed;bottom:0;box-shadow:0 -10px 30px #14322a14}.tab-item{appearance:none;color:var(--muted);min-height:3.15rem;font:inherit;background:0 0;border:0;border-radius:14px;flex-direction:column;justify-content:center;align-items:center;gap:.15rem;padding:.25rem .15rem;font-size:.68rem;font-weight:600;text-decoration:none;transition:color .18s,background .18s,transform .18s;display:flex}.tab-item span{line-height:1.1}.tab-icon{opacity:.72;width:1.35rem;height:1.35rem;transition:opacity .18s,transform .18s}.tab-icon.on,.tab-item.active .tab-icon,.tab-item[aria-current=page] .tab-icon{opacity:1;transform:translateY(-1px)}.tab-item.active,.tab-item[aria-current=page],.tab-more.active{color:var(--accent);background:var(--accent-soft)}.more-backdrop{z-index:60;background:#14221f61;border:0;animation:.18s fadeIn;display:block;position:fixed;inset:0}.more-sheet{inset-inline:0;z-index:70;max-height:min(78dvh,560px);padding:.55rem 1rem calc(1.1rem + env(safe-area-inset-bottom,0));background:linear-gradient(#fff 0%,#f3f8f6 100%);border-radius:22px 22px 0 0;flex-direction:column;gap:.85rem;transition:transform .28s cubic-bezier(.22,1,.36,1);display:flex;position:fixed;bottom:0;transform:translateY(110%);box-shadow:0 -18px 48px #14322a2e}.more-sheet.open{transform:translateY(0)}.more-sheet-handle{background:#5a6e6847;border-radius:99px;width:42px;height:4px;margin:.15rem auto .35rem}.more-sheet-head{justify-content:space-between;align-items:center;gap:.75rem;display:flex}.more-sheet-head h2{margin:0;font-size:1.15rem}.more-sheet-head .muted{margin:.15rem 0 0;font-size:.82rem}.more-sheet-nav{gap:.35rem;display:grid;overflow:auto}.more-sheet-nav a{color:var(--ink);border:1px solid var(--line);background:#fffc;border-radius:14px;padding:.85rem .95rem;font-weight:600;transition:background .15s,border-color .15s,color .15s}.more-sheet-nav a:hover,.more-sheet-nav a.active{color:var(--accent);background:var(--accent-soft);border-color:#0c7a6259}.more-logout{width:100%}.stats,.stats.stats-2,.stats.stats-3,.stats.stats-4,.grid-2,.grid-3,.overview-grid{grid-template-columns:1fr}.market-prices.stats.stats-4{grid-template-columns:1fr 1fr}.creditor-layout{flex-direction:column}.creditor-legend{grid-template-columns:1fr 1fr;width:100%}.pay-matrix .col-title{width:112px;min-width:112px;max-width:112px}.pay-matrix .col-amt{width:52px;min-width:52px;right:112px}.pay-matrix .col-day{width:36px;min-width:36px;right:164px}.install-banner{margin-bottom:.85rem}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.install-banner{box-shadow:var(--shadow);background:linear-gradient(135deg,#0c7a621f,#1a6bb514),#ffffffc7;border:1px solid #0c7a6238;border-radius:16px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;padding:.9rem 1rem;display:flex}.install-banner-copy{flex:1;gap:.2rem;min-width:min(100%,220px);display:grid}.install-banner-copy strong{font-size:.98rem}.install-banner-copy span{color:var(--muted);font-size:.86rem}.install-banner-actions{flex-wrap:wrap;align-items:center;gap:.45rem;display:flex}.install-banner.ios ol{color:var(--muted);margin:.35rem 0 0;padding-inline-start:1.2rem;font-size:.86rem}.install-banner.panel-compact{margin-top:.75rem}.matrix-wrap{border:1px solid var(--line);max-height:calc(100vh - 220px);box-shadow:var(--shadow);background:#fff;border-radius:16px;overflow:auto}.pay-matrix{border-collapse:separate;border-spacing:0;table-layout:fixed;width:100%;font-size:.78rem}.pay-matrix th,.pay-matrix td{border-bottom:1px solid var(--line);text-align:center;white-space:nowrap;vertical-align:middle;border-left:1px solid #d6cfbfb3;padding:.28rem .25rem}.pay-matrix thead th{z-index:3;color:var(--muted);box-shadow:0 1px 0 var(--line);background:#f3efe6;font-weight:700;position:sticky;top:0}.pay-matrix thead th.is-current{color:var(--accent);background:#e7f3ef}.pay-matrix .sticky-col{z-index:2;background:#fffcf6;position:sticky}.pay-matrix thead .sticky-col{z-index:4;background:#f3efe6}.pay-matrix .col-title{text-align:right;white-space:normal;width:128px;min-width:128px;max-width:128px;right:0;box-shadow:-6px 0 10px #1c1a160a}.pay-matrix .col-amt{font-variant-numeric:tabular-nums;width:56px;min-width:56px;right:128px}.pay-matrix .col-day{width:36px;min-width:36px;color:var(--muted);font-weight:700;right:184px}.pay-matrix tbody tr:hover .sticky-col,.pay-matrix tbody tr:hover td{background:#faf7f0}.matrix-title{align-items:center;gap:.25rem;min-width:0;display:flex}.matrix-title a{text-overflow:ellipsis;white-space:nowrap;color:inherit;flex:1;min-width:0;font-size:.72rem;font-weight:600;overflow:hidden}.matrix-card-toggle{border:1px solid var(--line);font:inherit;color:var(--accent);cursor:pointer;background:#fff;border-radius:6px;flex-shrink:0;padding:.05rem .25rem;font-size:.62rem}.matrix-empty,.matrix-paid,.matrix-due,.matrix-overdue{width:auto;min-width:0}.matrix-empty{background:#eceae4!important}.matrix-paid{background:#b7e4c7!important}.matrix-due{background:#fff!important}.matrix-overdue{background:#ffe0c2!important}.matrix-cell-btn{font:inherit;font-variant-numeric:tabular-nums;color:inherit;cursor:pointer;background:0 0;border:0;border-radius:6px;width:100%;min-height:1.8rem;padding:.15rem;font-weight:600}.matrix-cell-btn:hover:not(:disabled){outline-offset:-2px;outline:2px solid #0f6e5659}.matrix-cell-btn:disabled{opacity:.6;cursor:wait}.matrix-sum td{color:#9a3412;z-index:2;box-shadow:0 -1px 0 var(--line);font-weight:800;position:sticky;bottom:0;background:#fff1f0!important}.matrix-sum .sticky-col{text-align:right;z-index:3;background:#fff1f0!important}.matrix-legend{margin-top:.85rem;font-size:.85rem}.matrix-legend .lg-paid{color:#1b7a45;font-weight:700}.matrix-legend .lg-due{color:var(--ink);font-weight:700}.matrix-legend .lg-overdue{color:#c2410c;font-weight:700}.matrix-legend .lg-empty{color:#8a8478;font-weight:700}.density-panel{margin-top:1.25rem}.density-peaks{border:1px solid var(--line);background:#0c7a620f;border-radius:14px;gap:.35rem;margin:0 0 1rem;padding:.75rem .9rem;display:grid}.density-peaks p{color:var(--ink);margin:0;font-size:.92rem}.density-block{margin-top:1rem}.density-block-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.5rem;margin-bottom:.65rem;display:flex}.density-block-head h3{margin:0;font-size:1.05rem}.heat-grid{gap:.45rem;display:grid}.heat-grid.heat-month{grid-template-columns:repeat(6,minmax(0,1fr))}.heat-grid.heat-day{grid-template-columns:repeat(auto-fill,minmax(52px,1fr))}.heat-cell{text-align:center;min-height:78px;font:inherit;color:var(--ink);cursor:default;border:1px solid #14282314;border-radius:12px;flex-direction:column;justify-content:flex-end;align-items:stretch;gap:.15rem;padding:.45rem .4rem .4rem;display:flex;position:relative;overflow:hidden}button.heat-cell{cursor:pointer;transition:transform .12s,box-shadow .12s,border-color .12s}button.heat-cell:hover{transform:translateY(-1px);box-shadow:0 6px 16px #14282314}.heat-cell.active{border-color:var(--accent);box-shadow:0 0 0 2px #0c7a6238}.heat-cell.empty{color:var(--muted)}.heat-bar{pointer-events:none;background:#00000014;border-radius:8px 8px 0 0;position:absolute;bottom:0;left:18%;right:18%}.heat-label,.heat-value{z-index:1;position:relative}.heat-label{font-size:.78rem;font-weight:700;line-height:1.2}.heat-value{font-variant-numeric:tabular-nums;direction:ltr;font-size:.92rem;font-style:normal;font-weight:800}.heat-legend{color:var(--muted);align-items:center;gap:.45rem;margin-top:.55rem;font-size:.78rem;display:flex}.heat-legend i,.heat-legend.count i{background:linear-gradient(90deg,#e8f6ee,#b7e4c7,#f2e8a0,#f0a06a,#d64545);border-radius:999px;flex:1;height:8px}@media (width<=900px){.heat-grid.heat-month{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (width<=640px){.heat-grid.heat-month{grid-template-columns:repeat(3,minmax(0,1fr))}.heat-cell{min-height:68px}}.reminders-layout{grid-template-columns:minmax(0,1.4fr) minmax(280px,.9fr);align-items:start;gap:1rem;display:grid}.reminders-side{gap:1rem;display:grid}.reminder-calendar .cal-nav{justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.85rem;display:flex}.reminder-calendar .cal-nav strong{font-size:1.1rem}.cal-weekdays{text-align:center;color:var(--muted);grid-template-columns:repeat(7,minmax(0,1fr));gap:.35rem;margin-bottom:.35rem;font-size:.82rem;font-weight:700;display:grid}.cal-grid{grid-template-columns:repeat(7,minmax(0,1fr));gap:.35rem;display:grid}.cal-day{border:1px solid var(--line);min-height:72px;font:inherit;cursor:pointer;background:#fff;border-radius:12px;flex-direction:column;align-items:flex-start;gap:.25rem;padding:.4rem .35rem .35rem;transition:border-color .12s,box-shadow .12s,background .12s;display:flex;position:relative}.cal-day.empty{pointer-events:none;background:0 0;border:none;min-height:72px}.cal-day:hover{border-color:#0c7a6259}.cal-day.today{background:#0c7a620f}.cal-day.selected{border-color:var(--accent);box-shadow:0 0 0 2px #0c7a622e}.cal-day.has-items{background:linear-gradient(#fff 0%,#f3faf7 100%)}.cal-day-num{font-size:.95rem;font-weight:800}.cal-dots{flex-wrap:wrap;gap:3px;display:flex}.cal-dots i{background:#d64545;border-radius:50%;width:7px;height:7px}.cal-dots i.done{background:#1b7a45}.cal-count{color:var(--accent);margin-top:auto;font-size:.75rem;font-style:normal;font-weight:700}.reminder-list{gap:.55rem;margin:0;padding:0;list-style:none;display:grid}.reminder-list li{border:1px solid var(--line);background:#fffc;border-radius:12px;align-items:flex-start;gap:.55rem;padding:.55rem .6rem;display:flex}.reminder-list li.done strong{color:var(--muted);text-decoration:line-through}.reminder-list li>div{flex:1;gap:.15rem;min-width:0;display:grid}.reminder-list li>div strong{font-size:.95rem}.reminder-check{cursor:pointer;background:#fff;border:1.5px solid #0c7a6273;border-radius:6px;flex-shrink:0;width:1.15rem;height:1.15rem;margin-top:.15rem}.reminder-check.on{background:var(--accent);border-color:var(--accent);box-shadow:inset 0 0 0 2px #fff}.reminder-link{width:100%;font:inherit;text-align:right;cursor:pointer;color:inherit;background:0 0;border:none;justify-content:space-between;align-items:baseline;gap:.75rem;padding:0;display:flex}.reminder-list.upcoming li{padding:.45rem .55rem}@media (width<=960px){.reminders-layout{grid-template-columns:1fr}.cal-day{min-height:58px}}.reminder-dash-head-actions{align-items:center;gap:.75rem;display:flex}.reminder-dash-card{cursor:default}.reminder-dash-card .upcoming-card-top{align-items:center}.reminder-dash-notes{-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:.82rem;line-height:1.35;display:-webkit-box;overflow:hidden}.saved-card-picker{gap:.55rem;margin-bottom:.35rem;display:grid}.saved-card-actions{flex-wrap:wrap;align-items:center;gap:.55rem;display:flex}.loan-edit-card-block{grid-column:1/-1;gap:.75rem;display:grid}.saved-cards-list li{align-items:center}.saved-cards-list li>div{gap:.15rem;display:grid}
