:root{
  --bg:#f4f8f7; --surface:#ffffff; --ink:#101828; --muted:#667085; --line:#e3ebe8;
  --green:#08755f; --green2:#0b8d73; --greenDark:#045445; --greenSoft:#e9f7f2;
  --amber:#e87922; --amberSoft:#fff3e8; --red:#e64e43; --redSoft:#fff0ee;
  --purple:#7d5bd8; --purpleSoft:#f2edff; --blueSoft:#eef5ff;
  --pie-needs:#0aa77f; --pie-wants:#249fd8; --pie-savings:#906fe8; --pie-empty:#dbe5e1;
  --shadow:0 18px 45px rgba(25,74,63,.09);
  font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
}
*{box-sizing:border-box}html{width:100%;max-width:100%;overflow-x:hidden;-webkit-text-size-adjust:100%;text-size-adjust:100%}html,body{margin:0;min-height:100%;background:linear-gradient(180deg,#f7fbfa 0%,#f2f7f6 100%);color:var(--ink)}
body{width:100%;max-width:100%;overflow-x:hidden;padding:env(safe-area-inset-top) 0 env(safe-area-inset-bottom)}button,input,select,textarea{font:inherit}button{cursor:pointer}.hidden{display:none!important}.muted{color:var(--muted)}.small{font-size:13px}.tiny{font-size:11px}.eyebrow{margin:0 0 5px;font-size:10px;font-weight:850;letter-spacing:.11em;color:#7b8b86}.money{font-variant-numeric:tabular-nums}.amount-hidden{filter:blur(7px);user-select:none}.field-title{display:block;margin-bottom:8px}

.login-shell{min-height:100vh;display:grid;place-items:center;padding:26px}.login-card{width:min(100%,420px);background:#fff;border:1px solid var(--line);border-radius:30px;padding:30px;box-shadow:var(--shadow)}.brand-row{display:flex;gap:12px;align-items:center}.brand-mark{width:50px;height:50px;display:grid;place-items:center;border-radius:17px;background:linear-gradient(145deg,var(--green),var(--greenDark));color:#fff;font-weight:900;font-size:22px}.brand-name{font-size:23px;font-weight:900;color:#075d4d;letter-spacing:-.025em}.login-card h1{font-size:31px;margin:31px 0 8px}.stack-form{display:grid;gap:14px;margin:24px 0 10px}label{display:grid;gap:7px;font-size:13px;font-weight:750;color:#344054}input,select,textarea{width:100%;font-size:16px;border:1px solid #d9e3df;background:#fff;border-radius:13px;padding:13px 14px;outline:none;color:var(--ink)}textarea{resize:vertical;min-height:90px}input:focus,select:focus,textarea:focus{border-color:#76b9aa;box-shadow:0 0 0 3px rgba(8,117,95,.10)}.primary-btn,.secondary-btn,.danger-ghost{border:0;border-radius:14px;padding:13px 16px;font-weight:850}.primary-btn{width:100%;background:var(--green);color:#fff}.secondary-btn{width:100%;background:#edf3f1;color:#16372f}.link-btn{width:100%;border:0;background:transparent;color:var(--green);font-weight:800;padding:14px}.login-hint{text-align:center;margin-bottom:0}

.app-shell{width:min(100%,780px);margin:0 auto;padding:16px 16px 104px}.app-header{display:flex;justify-content:space-between;align-items:flex-start;padding:9px 1px 16px;position:sticky;top:0;z-index:5;background:linear-gradient(var(--bg) 82%,rgba(244,248,247,0));backdrop-filter:blur(8px)}.header-cycle{font-size:10px;color:var(--muted);margin:5px 0 1px}.cycle-button{border:0;background:transparent;padding:0;font-size:13px;font-weight:850;color:#26312f}.icon-btn{width:42px;height:42px;border:1px solid var(--line);background:#fff;border-radius:13px;color:#17201e;font-size:17px}.page{display:none}.active-page{display:block}

.balance-card{position:relative;overflow:hidden;background:linear-gradient(145deg,#07584b 0%,#08755f 62%,#066652 100%);color:#fff;border-radius:23px;padding:18px 18px 16px;box-shadow:0 19px 39px rgba(5,84,69,.23)}.balance-card:after{content:"";position:absolute;inset:auto -40px -65px auto;width:170px;height:170px;border-radius:50%;background:rgba(255,255,255,.035)}.balance-card-head{display:flex;justify-content:space-between;align-items:flex-start}.soft-label{font-size:12px;color:#d0e9e2}.safe-spend-label{font-size:10px;font-weight:800;letter-spacing:.02em}.safe-spend-note{display:block;font-size:8px;color:#b9d8d0;margin-top:3px}.balance-money{font-size:36px;line-height:1.1;font-weight:900;letter-spacing:-.045em;margin-top:5px}.mini-chart-icon{width:36px;height:36px;border-radius:12px;background:rgba(255,255,255,.12);display:grid;place-items:center}.balance-wave{height:42px;margin:2px -18px 0;position:relative;overflow:hidden;opacity:.52}.balance-wave span{position:absolute;width:105%;height:55px;border-radius:50%;border:2px solid rgba(82,236,199,.55);left:-5%;top:15px;transform:rotate(-2deg)}.balance-wave span+span{top:29px;left:11%;width:90%;opacity:.35}.balance-bottom{display:grid;grid-template-columns:1fr 1px 1fr;gap:15px;align-items:center;position:relative;z-index:1}.balance-bottom i{height:34px;background:rgba(255,255,255,.32)}.balance-bottom span{display:block;font-size:10px;color:#cae0db;margin-bottom:3px}.balance-bottom strong{font-size:16px}

.stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin:13px 0}.stat-card{position:relative;background:#fff;border:1px solid var(--line);border-radius:18px;padding:12px 12px 11px;min-height:115px;box-shadow:0 5px 15px rgba(32,80,68,.035)}.stat-card>span{display:block;font-size:11px;color:#5e6b67;margin-top:3px}.stat-card>strong{display:block;font-size:23px;line-height:1;margin-top:5px}.stat-card>small{display:block;color:#7c8a86;font-size:10px;margin-top:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stat-icon{width:29px;height:29px;border-radius:10px;display:grid;place-items:center;font-weight:900}.stat-paid .stat-icon{background:var(--greenSoft);color:var(--green)}.stat-paid{border-color:#d7eee7}.stat-unpaid .stat-icon{background:var(--amberSoft);color:var(--amber)}.stat-unpaid{border-color:#f5dfca}.stat-progress{border-color:#e6defa}.progress-ring{width:31px;height:31px;border-radius:50%;background:conic-gradient(var(--purple) calc(var(--p,0)*1%),#eee9fa 0);display:grid;place-items:center}.progress-ring:after{content:"";width:20px;height:20px;border-radius:50%;background:white}.progress-ring b{display:none}

.today-spend-card{width:100%;border:1px solid #cae9df;background:linear-gradient(90deg,#f0fbf7,#f7fcfa);border-radius:15px;padding:11px 13px;display:grid;grid-template-columns:auto 1fr auto;align-items:center;text-align:left;gap:11px;color:inherit}.spend-icon{width:35px;height:35px;border-radius:11px;background:#dff5ed;color:var(--green);display:grid;place-items:center;font-weight:900}.spend-copy span{display:block;font-size:10px;color:#6a7874}.spend-copy strong{font-size:15px}.spend-copy small{font-size:9px;color:#6e817c;margin-left:6px}.chev{font-size:25px;color:#65817a}.spend-primary{width:100%;border:0;border-radius:13px;background:linear-gradient(90deg,#08755f,#09896e);color:#fff;padding:11px 15px;font-weight:850;margin-top:9px;box-shadow:0 8px 20px rgba(8,117,95,.12)}

.section-block{margin-top:21px}.section-title-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.section-title-row h2{margin:0;font-size:19px}.section-title-row h3{margin:0;font-size:16px}.sort-icon{color:#647771;font-weight:800}.group-label{font-size:9px;font-weight:900;letter-spacing:.08em;margin:15px 1px 6px}.unpaid-label{color:#e5731c}.paid-label{color:#08755f}.commitment-list{display:grid;gap:7px}.commitment-card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:10px;display:grid;grid-template-columns:auto 1fr auto;gap:9px;align-items:center}.commitment-icon{width:35px;height:35px;border-radius:11px;background:#fff1df;display:grid;place-items:center;font-size:18px}.commitment-card.paid .commitment-icon{background:#e7f7f1}.commitment-card.paid{background:#fbfdfc}.commitment-main{min-width:0}.commitment-name{font-size:12px;font-weight:850;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.commitment-sub{font-size:9px;color:#6b7874;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.commitment-side{text-align:right;min-width:92px}.commitment-amount{font-size:11px;font-weight:850}.status-btn{border:0;border-radius:999px;font-size:9px;padding:4px 7px;margin-top:4px;font-weight:800}.status-btn.unpaid{background:var(--amberSoft);color:#dd701e}.status-btn.paid{background:var(--greenSoft);color:var(--green)}.compact-list .commitment-card{min-height:55px}.empty-card{background:#fff;border:1px dashed #cfdcd8;border-radius:15px;padding:20px;text-align:center;color:var(--muted);font-size:12px}.text-btn{border:0;background:transparent;color:var(--green);font-weight:850;padding:5px}.primary-mini{border:0;border-radius:11px;background:var(--green);color:white;padding:9px 12px;font-weight:850}.page-heading{margin:7px 1px 16px}.segmented{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;background:#e8efed;border-radius:13px;padding:4px}.segmented button{border:0;background:transparent;padding:8px;border-radius:10px;font-size:11px;font-weight:800;color:#66746f}.segmented button.active{background:#fff;color:#174239;box-shadow:0 2px 7px rgba(14,79,65,.06)}.roomy{margin-top:13px}.roomy .commitment-card{padding:13px}.roomy .commitment-name{font-size:13px}.roomy .commitment-sub{font-size:10px}

.privacy-note{background:#edf6f3;border:1px solid #dcece7;border-radius:14px;padding:11px 13px;color:#51645e;font-size:11px;margin-bottom:11px}.income-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:9px}.income-card{background:#fff;border:1px solid var(--line);border-radius:15px;padding:13px}.income-card span{font-size:10px;color:#6e7b77}.income-card strong{display:block;font-size:18px;margin-top:4px}.income-card small{color:#8b9794;font-size:9px}.spend-summary{display:flex;justify-content:space-between;align-items:center;background:#fff;border:1px solid var(--line);border-radius:15px;padding:14px;margin-top:10px}.spend-summary span{font-size:11px;color:#687772}.spend-summary strong{font-size:18px}.history-list,.master-list{display:grid;gap:8px;margin-top:10px}.history-row{background:#fff;border:1px solid var(--line);border-radius:14px;display:flex;justify-content:space-between;gap:15px;padding:12px}.history-row span{color:var(--muted);font-size:9px}

.database-head{align-items:flex-start}.square-plus{width:39px;height:39px;border:1px solid var(--line);background:#fff;border-radius:12px;font-size:22px;color:#24342f}.database-card-wrap{background:#fff;border:1px solid var(--line);border-radius:18px;padding:14px;margin-top:0}.database-master-list{gap:7px}.master-row{border:1px solid #e4ebe9;border-radius:13px;padding:10px;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:9px}.master-icon{width:38px;height:38px;border-radius:11px;background:#fff1df;display:grid;place-items:center;font-size:20px}.master-copy{min-width:0}.master-top{display:flex;justify-content:space-between;gap:8px;align-items:center}.master-top strong{font-size:12px}.master-top b{font-size:11px}.master-fields{display:flex;gap:5px;flex-wrap:wrap;margin-top:5px}.mini-field{font-size:8px;color:#667570;background:#f5f8f7;border:1px solid #e1e9e6;border-radius:7px;padding:3px 5px}.master-edit{border:0;background:transparent;font-size:21px;color:#647771;padding:5px}.manage-lists-card{width:100%;border:1px solid #cfe9e1;background:#eef9f5;border-radius:15px;margin-top:13px;padding:11px;display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center;text-align:left;color:inherit}.manage-icon{width:35px;height:35px;border-radius:10px;background:#dff3ec;color:#08755f;display:grid;place-items:center}.manage-lists-card strong{display:block;font-size:11px}.manage-lists-card small{display:block;color:#687a74;font-size:9px;margin-top:2px}.manage-lists-card>span{font-size:22px}.income-setup-section h3{margin:0;font-size:15px}.income-setup-card{background:#eef9f5;border:1px solid #cfe9e1;border-radius:15px;margin-top:9px;overflow:hidden}.income-setup-row{display:grid;grid-template-columns:auto 1fr auto;gap:9px;align-items:center;padding:10px 11px;border-bottom:1px solid #d8ece6}.income-setup-row:last-child{border-bottom:0}.income-setup-icon{width:29px;height:29px;border-radius:9px;background:#ddf3eb;display:grid;place-items:center}.income-setup-row strong{font-size:10px}.income-setup-row small{display:block;color:#74837e;font-size:8px}.income-setup-row b{font-size:10px}.settings-card{background:#fff;border:1px solid var(--line);border-radius:15px;padding:3px 13px;margin-top:15px}.settings-card div{display:flex;justify-content:space-between;gap:18px;padding:11px 0;border-bottom:1px solid var(--line);font-size:10px}.settings-card div:last-child{border:0}.settings-card span{color:var(--muted)}.danger-ghost{width:100%;background:#fff0ee;color:#c9372c;margin-top:14px}

.bottom-nav{position:fixed;bottom:max(9px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);width:min(calc(100% - 24px),620px);display:grid;grid-template-columns:repeat(4,1fr);padding:6px;background:rgba(255,255,255,.94);backdrop-filter:blur(18px);border:1px solid rgba(213,225,221,.95);border-radius:22px;box-shadow:0 13px 32px rgba(19,65,55,.14);z-index:8}.nav-item{border:0;background:transparent;padding:7px;border-radius:15px;color:#72827d}.nav-item span{display:block;font-size:17px;line-height:17px}.nav-item small{display:block;font-size:9px;font-weight:850;margin-top:4px}.nav-item.active{background:#eff7f4;color:var(--green)}

.modal-card{width:min(calc(100% - 24px),490px);max-height:min(90vh,820px);border:0;border-radius:24px;padding:0;box-shadow:0 30px 80px rgba(15,54,45,.28)}.modal-card::backdrop{background:rgba(17,41,35,.45);backdrop-filter:blur(3px)}.modal-card form,.modal-static,.compact-modal{padding:20px}.modal-card form{display:grid;gap:12px}.modal-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.modal-head h3{margin:0;font-size:20px}.close-btn,.back-close{border:0;width:33px;height:33px;border-radius:10px;background:#eff4f2;font-size:19px}.back-close{font-size:29px;line-height:25px}.head-spacer{width:33px}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:9px}.toggle-row{display:flex;justify-content:space-between;align-items:center;background:#f6f9f8;padding:11px;border-radius:12px}.toggle-row input{width:auto}.input-note{margin:-7px 0 2px}.amount-input{display:flex;align-items:center;border:1px solid #d9e3df;border-radius:13px;overflow:hidden}.amount-input span{padding-left:13px;font-size:13px;color:#4d5e59}.amount-input input{border:0;box-shadow:none;font-weight:850;font-size:18px}.category-chips{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.category-chip{border:1px solid #dde6e3;background:#fff;border-radius:11px;padding:9px 6px;font-size:10px;font-weight:750;color:#4f5f5a}.category-chip.active{border-color:#38a88e;background:#f0faf7;color:#08755f;box-shadow:0 0 0 2px rgba(8,117,95,.06)}.modal-save{margin-top:2px}.detail-body{display:grid;gap:0;margin:16px 0}.detail-line{display:flex;justify-content:space-between;gap:15px;padding:10px 0;border-bottom:1px solid var(--line)}.detail-line span{color:var(--muted);font-size:10px}.detail-line strong{text-align:right;font-size:11px}

.spend-history-list{display:grid;gap:8px;margin:15px 0;max-height:58vh;overflow:auto}.spend-row{background:#f8fbfa;border:1px solid var(--line);border-radius:13px;padding:11px;display:grid;grid-template-columns:1fr auto;gap:9px}.spend-row strong{font-size:11px}.spend-row small{display:block;color:#73827d;font-size:9px;margin-top:3px}.spend-row b{font-size:11px}.spend-delete{border:0;background:#fff0ee;color:#c73f34;border-radius:8px;padding:5px 7px;font-size:9px;font-weight:800;margin-left:4px}

.manage-modal{max-height:84vh;overflow:auto}.manage-tabs{margin:14px 0}.lookup-form{background:#f7faf9;border:1px solid var(--line);border-radius:15px;padding:12px!important;margin-bottom:12px}.lookup-list{display:grid;gap:7px}.lookup-row{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center;border:1px solid var(--line);border-radius:12px;padding:10px}.lookup-row strong{font-size:11px}.lookup-row small{color:#788680;font-size:9px}.lookup-actions{display:flex;gap:5px}.lookup-actions button{border:0;border-radius:8px;padding:6px 8px;font-size:9px;font-weight:800}.lookup-edit{background:#edf5f2;color:#285c50}.lookup-delete{background:#fff0ee;color:#c73f34}

.toast{position:fixed;left:50%;bottom:104px;transform:translate(-50%,18px);background:#153f35;color:white;padding:10px 14px;border-radius:12px;font-size:11px;font-weight:750;opacity:0;pointer-events:none;transition:.2s;z-index:20;max-width:calc(100% - 30px);text-align:center}.toast.show{opacity:1;transform:translate(-50%,0)}

@media(max-width:460px){.app-shell{padding-left:12px;padding-right:12px}.balance-money{font-size:32px}.stats-grid{gap:7px}.stat-card{padding:10px;min-height:108px}.spend-copy small{display:block;margin-left:0}.two-col{grid-template-columns:1fr}.income-grid{grid-template-columns:1fr 1fr}.category-chips{grid-template-columns:repeat(3,1fr)}}
.income-setup-row{width:100%;border:0;background:transparent;text-align:left;color:inherit}.income-setup-row b{text-align:right}.income-setup-row:hover{background:rgba(255,255,255,.45)}

.setting-action{width:100%;border:0;border-top:1px solid var(--line);background:transparent;display:flex;justify-content:space-between;align-items:center;gap:16px;padding:11px 0;text-align:left;color:inherit}.setting-action span{display:block}.setting-action b{display:block;font-size:10px}.setting-action small{display:block;font-size:8px;color:var(--muted);margin-top:2px}.setting-action strong{font-size:10px;color:var(--green)}.reminder-note{margin:8px 4px 0;line-height:1.45}

/* v0.4 iOS PWA sizing guard: prevents Safari text autosizing/focus zoom and accidental horizontal viewport growth. */
@supports (-webkit-touch-callout:none){.app-shell,.login-shell{max-width:100vw}.modal-card{max-width:calc(100vw - 24px)}input,select,textarea{font-size:16px!important}}

/* v0.5 additions */
.brand-mark{font-size:24px}
.database-head-actions{display:flex;gap:8px;align-items:center}.secondary-mini{border:1px solid var(--line);background:#fff;color:var(--green);border-radius:11px;padding:9px 12px;font-weight:850}.history-shortcut{margin-top:10px;background:#f4f9ff;border-color:#d8e7fb}.master-cycle-btn{margin-top:8px;border:0;background:#eef7f4;color:var(--green);border-radius:9px;padding:7px 9px;font-size:10px;font-weight:850}.history-modal .modal-static{max-height:84vh;overflow:auto}.history-summary-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-top:12px}.history-stat{background:#f8fbfa;border:1px solid var(--line);border-radius:14px;padding:12px}.history-stat span{display:block;font-size:10px;color:#72827d}.history-stat strong{display:block;margin-top:5px;font-size:16px}.commitment-card .status-btn{pointer-events:none}.detailDialog .secondary-btn{margin-bottom:10px}
@media(max-width:460px){.database-head-actions{gap:6px}.secondary-mini{padding:8px 10px;font-size:11px}}

/* v0.6 privacy, responsiveness, history and icon library */
.privacy-eye{display:grid;place-items:center;background:transparent;border:0;border-radius:10px;padding:8px}.privacy-eye svg{width:25px;height:25px;fill:none;stroke:#23473f;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.privacy-eye:active{background:#eaf3f0}
.amount-hidden{filter:blur(8px);user-select:none;-webkit-user-select:none}
button:disabled{cursor:default;opacity:.72}.is-busy{display:flex!important;align-items:center;justify-content:center;gap:8px}.btn-spinner{width:14px;height:14px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;display:inline-block;animation:mycommit-spin .7s linear infinite}@keyframes mycommit-spin{to{transform:rotate(360deg)}}

.icon-library-wrap{background:#f7faf9;border:1px solid var(--line);border-radius:15px;padding:11px;margin:0 0 12px}.icon-library-head{display:flex;justify-content:space-between;gap:10px;align-items:end;margin-bottom:9px}.icon-library-head strong{font-size:11px}.icon-library-head small{font-size:8px;color:var(--muted);text-align:right}.icon-library{display:grid;grid-template-columns:repeat(8,1fr);gap:6px;max-height:150px;overflow:auto;padding:2px}.icon-pick{aspect-ratio:1;border:1px solid #dde8e4;background:#fff;border-radius:10px;font-size:19px;display:grid;place-items:center;padding:0}.icon-pick:active{transform:scale(.94);background:#edf8f4;border-color:#7dc2b2}

.paid-dialog-summary{background:#f6faf8;border:1px solid var(--line);border-radius:14px;padding:12px}.paid-dialog-summary>div{display:flex;align-items:center;gap:10px}.paid-dialog-summary span{width:38px;height:38px;border-radius:11px;background:#e8f6f1;display:grid;place-items:center;font-size:20px}.paid-dialog-summary strong{display:block;font-size:12px}.paid-dialog-summary small{display:block;color:var(--muted);font-size:9px;margin-top:3px}

.history-chart-section{background:#fbfdfc;border:1px solid var(--line);border-radius:16px;padding:12px}.chart-legend{display:flex;gap:12px;flex-wrap:wrap;margin:10px 0 4px;font-size:8px;color:var(--muted)}.chart-legend span{display:flex;align-items:center;gap:4px}.chart-legend i{width:8px;height:8px;border-radius:3px;display:inline-block}.legend-income,.bar-income{background:#08755f}.legend-commitment,.bar-commitment{background:#7d5bd8}.legend-spend,.bar-spend{background:#e87922}.history-bar-chart{height:150px;display:flex;align-items:stretch;justify-content:space-around;gap:8px;padding:8px 3px 0;border-bottom:1px solid #e3ebe8}.chart-group{flex:1;min-width:34px;display:grid;grid-template-rows:1fr auto;gap:5px;text-align:center}.chart-bars{height:120px;display:flex;align-items:flex-end;justify-content:center;gap:3px}.chart-bars i{display:block;width:min(9px,22%);min-height:0;border-radius:5px 5px 2px 2px;opacity:.9}.chart-group small{font-size:8px;color:#75847f}
.history-table-wrap{overflow:auto;border:1px solid var(--line);border-radius:14px;background:#fff}.history-table{width:100%;border-collapse:collapse;min-width:520px}.history-table th,.history-table td{padding:10px 11px;text-align:left;border-bottom:1px solid #edf1f0;font-size:9px;white-space:nowrap}.history-table th{font-size:8px;text-transform:uppercase;letter-spacing:.05em;color:#71807b;background:#f7faf9}.history-table td:last-child,.history-table th:last-child{text-align:right}.history-table tr:last-child td{border-bottom:0}.table-empty{text-align:center!important;color:var(--muted)!important;padding:18px!important}

@media(max-width:460px){.icon-library{grid-template-columns:repeat(7,1fr)}.history-bar-chart{height:140px}.chart-bars{height:110px}.history-table th,.history-table td{padding:9px 10px}}

/* v0.7 touch reliability hardening for iOS/Android PWAs */
button,[role="button"],.commitment-card,.today-spend-card,.manage-lists-card{
  touch-action:manipulation;
  -webkit-tap-highlight-color:transparent;
}
button{-webkit-user-select:none;user-select:none}
button:active,.tap-pressed{transform:scale(.985)}
.tap-pressed{opacity:.9}

/* Native dialog hit-testing/keyboard stability */
dialog.modal-card[open]{
  pointer-events:auto;
  overflow:hidden;
  transform:translateZ(0);
  -webkit-transform:translateZ(0);
}
.modal-card form,.modal-static,.compact-modal{
  max-height:min(88vh,820px);
  max-height:min(88dvh,820px);
  overflow-y:auto;
  -webkit-overflow-scrolling:touch;
  overscroll-behavior:contain;
  padding-bottom:calc(20px + env(safe-area-inset-bottom));
  pointer-events:auto;
}
.modal-card button,.modal-card input,.modal-card select,.modal-card textarea{pointer-events:auto}
.critical-action{
  min-height:48px;
  position:relative;
  z-index:3;
  touch-action:manipulation;
}
.critical-action.is-busy{transform:none!important}

/* Helps iOS when the software keyboard changes the visual viewport */
@supports (-webkit-touch-callout:none){
  dialog.modal-card[open]{
    max-height:calc(100dvh - max(18px, env(safe-area-inset-top)) - max(18px, env(safe-area-inset-bottom)));
  }
  .modal-card form,.modal-static,.compact-modal{
    max-height:calc(100dvh - 32px);
  }
}
@supports (-webkit-touch-callout:none){
  .modal-card::backdrop{-webkit-backdrop-filter:none;backdrop-filter:none;background:rgba(17,41,35,.48)}
}

/* v0.8 salary planner, custom income and configurable cycle */
.income-head-actions{display:flex;gap:7px;align-items:center}.custom-income-card{border:1px solid #dbe8e4;text-align:left;color:inherit;cursor:pointer}.custom-income-card:active{transform:scale(.99)}
.salary-planner-card{background:#fff;border:1px solid var(--line);border-radius:20px;padding:15px;box-shadow:0 7px 20px rgba(25,74,63,.04)}.salary-planner-card h2{font-size:18px}.planner-badge{font-size:9px;font-weight:850;background:#edf6f3;color:var(--green);border-radius:999px;padding:5px 8px}.salary-planner-body{display:grid;grid-template-columns:145px 1fr;gap:16px;align-items:center;margin-top:14px}.salary-pie{width:140px;height:140px;border-radius:50%;background:conic-gradient(var(--pie-needs) 0 50%,var(--pie-wants) 50% 80%,var(--pie-savings) 80% 100%);display:grid;place-items:center;box-shadow:inset 0 0 0 1px rgba(255,255,255,.6),0 12px 25px rgba(26,86,72,.12)}.salary-pie-center{width:76px;height:76px;background:#fff;border-radius:50%;display:grid;place-content:center;text-align:center;box-shadow:0 5px 16px rgba(23,65,56,.12)}.salary-pie-center strong{font-size:14px;color:#163d34}.salary-pie-center small{font-size:8px;color:var(--muted);margin-top:2px}.salary-planner-list{display:grid;gap:9px}.salary-planner-list>div{display:grid;grid-template-columns:auto 1fr auto;gap:8px;align-items:center;border-bottom:1px solid #edf2f0;padding-bottom:8px}.salary-planner-list>div:last-child{border-bottom:0;padding-bottom:0}.planner-dot{width:10px;height:10px;border-radius:3px}.planner-dot.needs{background:var(--pie-needs)}.planner-dot.wants{background:var(--pie-wants)}.planner-dot.savings{background:var(--pie-savings)}.salary-planner-list b{font-size:10px}.salary-planner-list small{display:block;font-size:8px;color:var(--muted);margin-top:2px}.salary-planner-list strong{font-size:10px;text-align:right}.cycle-reset-preview{background:#f3f8f6;border:1px solid #dce9e5;border-radius:13px;padding:12px;display:grid;gap:4px}.cycle-reset-preview strong{font-size:12px;color:#16463b}.cycle-reset-preview small{font-size:9px;line-height:1.45;color:var(--muted)}
.settings-card>.setting-action:first-child{border-top:0}.settings-card>.setting-action{border-bottom:1px solid var(--line)}.settings-card>.setting-action:last-child{border-bottom:0}.income-setup-section .section-title-row{align-items:flex-start}
@media(max-width:520px){.salary-planner-body{grid-template-columns:1fr}.salary-pie{margin:0 auto}.salary-planner-list{margin-top:2px}}

/* v0.9 live budget intelligence + lightweight dashboard */
.balance-formula{display:block!important;margin-top:2px;font-size:7px!important;color:#bcd7d0!important}
.due-soon-card{width:100%;border:1px solid #f1dfc9;background:linear-gradient(90deg,#fff9f1,#fffdf9);border-radius:15px;padding:11px 13px;display:grid;grid-template-columns:auto 1fr auto;gap:11px;align-items:center;text-align:left;color:inherit;margin:3px 0 9px}.due-soon-card.has-due{border-color:#f0c997;background:linear-gradient(90deg,#fff5e8,#fffbf4)}.due-soon-icon{width:35px;height:35px;border-radius:11px;background:#fff0dd;color:var(--amber);display:grid;place-items:center;font-size:20px;font-weight:900}.due-soon-copy span{display:block;font-size:9px;color:#7d6b58}.due-soon-copy strong{display:block;font-size:12px;margin-top:2px}.due-soon-copy strong b{font-size:15px}.due-soon-copy small{display:block;color:#8a7a69;font-size:8px;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dashboard-insight{background:#fff;border:1px solid var(--line);border-radius:18px;padding:13px}.dashboard-insight .section-title-row{margin-bottom:9px}
.budget-watch-list,.goal-list{display:grid;gap:8px}.budget-limit-card{border:1px solid #dfeae6;background:#fbfdfc;border-radius:13px;padding:10px}.budget-limit-card.near{border-color:#f1d2a9;background:#fffbf5}.budget-limit-card.over{border-color:#f0bcb7;background:#fff7f6}.budget-limit-head,.budget-limit-foot{display:flex;justify-content:space-between;gap:10px;align-items:center}.budget-limit-head strong{display:block;font-size:11px}.budget-limit-head small{display:block;font-size:8px;color:var(--muted);margin-top:2px}.budget-limit-head b{font-size:10px}.budget-progress,.goal-progress{height:7px;background:#edf2f0;border-radius:999px;overflow:hidden;margin:8px 0}.budget-progress i,.goal-progress i{display:block;height:100%;background:var(--green);border-radius:999px}.budget-limit-card.near .budget-progress i{background:var(--amber)}.budget-limit-card.over .budget-progress i{background:var(--red)}.budget-limit-foot{font-size:8px;color:var(--muted)}
.goal-card{width:100%;border:1px solid #dfeae6;background:#fbfdfc;border-radius:14px;padding:11px;text-align:left;color:inherit}.goal-top{display:grid;grid-template-columns:auto 1fr auto;gap:9px;align-items:center}.goal-icon{width:35px;height:35px;border-radius:11px;background:#e9f7f2;display:grid;place-items:center;font-size:19px}.goal-top strong{display:block;font-size:11px}.goal-top small{display:block;color:var(--muted);font-size:8px;margin-top:2px}.goal-top b{font-size:11px}.goal-bottom{display:flex;justify-content:space-between;gap:10px;font-size:8px;color:var(--muted)}.compact-goals .goal-card:nth-child(n+3){display:none}.goals-wrap{margin-top:15px}

/* Target vs Actual stays side by side even on phone. No chart animation = lower battery use. */
.planner-compare{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:14px}.planner-side{border:1px solid var(--line);border-radius:16px;padding:11px;background:#fbfdfc;min-width:0}.planner-side-head{display:flex;justify-content:space-between;gap:6px;align-items:end;margin-bottom:9px}.planner-side-head strong{font-size:12px}.planner-side-head small{font-size:8px;color:var(--muted)}.planner-side .salary-pie{width:118px;height:118px;margin:0 auto;box-shadow:none}.planner-side .salary-pie-center{width:66px;height:66px;box-shadow:none}.planner-side .salary-pie-center strong{font-size:12px}.planner-side .salary-pie-center small{font-size:7px}.mini-allocation-list{display:grid;gap:6px;margin-top:10px}.mini-allocation-list span{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:5px;font-size:8px;color:#596963}.mini-allocation-list b{font-size:8px;color:var(--ink);white-space:nowrap}.allocation-comparison{display:grid;gap:7px;margin-top:11px}.allocation-row{display:flex;justify-content:space-between;gap:12px;align-items:center;border:1px solid #e3ebe8;border-radius:12px;padding:9px 10px}.allocation-row.over{border-color:#efc0bc;background:#fff8f7}.allocation-row strong{display:block;font-size:10px}.allocation-row small{display:block;font-size:8px;color:var(--muted);margin-top:2px}.allocation-row-values{text-align:right}.allocation-row-values b{font-size:10px}.allocation-row.over .allocation-row-values small{color:#c54940}.target-pie{background:conic-gradient(var(--pie-needs) 0 50%,var(--pie-wants) 50% 80%,var(--pie-savings) 80% 100%)}

.category-budget-fields{display:grid;gap:10px;background:#f4f9f7;border:1px solid #dfeae6;border-radius:13px;padding:11px}.quick-spend-note{margin:-3px 1px 0}.category-chips{max-height:178px;overflow:auto;overscroll-behavior:contain}.category-chip{min-height:40px}

.history-filter-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-top:12px}.history-filter-grid label:first-child,.history-filter-grid label:nth-child(2){grid-column:auto}.history-filter-grid label:last-child{grid-column:1/-1}.legend-after,.bar-after{background:#2f6f9f}.bar-after.negative{background:#d84d44}.history-bar-chart{overflow-x:auto;justify-content:flex-start}.chart-group{min-width:52px;grid-template-rows:1fr auto auto}.chart-group em{font-size:7px;font-style:normal;color:#6f7f79;white-space:nowrap}.chart-bars i{width:min(8px,19%)}

@media(max-width:460px){
  .planner-compare{gap:7px}.planner-side{padding:9px}.planner-side .salary-pie{width:106px;height:106px}.planner-side .salary-pie-center{width:60px;height:60px}.planner-side .salary-pie-center strong{font-size:11px}.mini-allocation-list b{font-size:7px}.mini-allocation-list span{font-size:7px}.history-filter-grid{grid-template-columns:1fr 1fr}.due-soon-copy strong{font-size:11px}.goal-top b{font-size:10px}
}

/* v0.10 — flexible schedules, account transfer planner and spending budgets */
.status-btn.neutral{background:#eef2f1;color:#62736e}
.transfer-summary-card{width:100%;border:1px solid #d7e6f2;background:linear-gradient(90deg,#f5f9ff,#f8fcfb);border-radius:15px;padding:11px 13px;display:grid;grid-template-columns:auto 1fr auto;align-items:center;text-align:left;gap:11px;color:inherit;margin-top:9px}.transfer-summary-card:not(.hidden)+.today-spend-card{margin-top:14px}.transfer-summary-icon{width:35px;height:35px;border-radius:11px;background:#e7f1fb;color:#286b91;display:grid;place-items:center;font-size:18px;font-weight:900}.transfer-summary-copy span{display:block;font-size:10px;color:#6a7874}.transfer-summary-copy strong{font-size:15px}.transfer-summary-copy small{display:block;font-size:9px;color:#6e817c;margin-top:2px}
.budget-database-wrap,.accounts-wrap{margin-top:13px}.database-budget-list{margin-top:10px}.budget-db-row{width:100%;border:1px solid #e2ebe8;background:#fff;border-radius:13px;padding:10px;display:grid;grid-template-columns:auto 1fr auto auto;gap:9px;align-items:center;text-align:left;color:inherit;margin-top:7px}.budget-db-row.over{border-color:#f2c8c3;background:#fff9f8}.budget-db-icon{width:36px;height:36px;border-radius:10px;background:#eef8f5;display:grid;place-items:center;font-size:18px}.budget-db-row strong{display:block;font-size:11px}.budget-db-row small{display:block;color:#73817d;font-size:8px;margin-top:2px}.budget-db-row b{font-size:10px}.budget-db-row em{font-style:normal;font-size:20px;color:#72817c}
.transfer-planner-summary{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}.transfer-planner-summary>div{background:#f4f9f7;border:1px solid #dceae5;border-radius:13px;padding:10px}.transfer-planner-summary span{display:block;color:#74827e;font-size:8px}.transfer-planner-summary strong{display:block;font-size:11px;margin-top:3px}.transfer-planner-list{display:grid;gap:7px;margin-top:9px}.transfer-row{border:1px solid #e2eae7;border-radius:12px;padding:10px;display:flex;justify-content:space-between;gap:12px;align-items:center}.transfer-row.legacy{background:#fffaf2;border-color:#f2dfbd}.transfer-row strong{font-size:10px}.transfer-row small{display:block;color:#74817d;font-size:8px;margin-top:2px;line-height:1.35}.transfer-row>b{font-size:10px;text-align:right;color:var(--green);white-space:nowrap}.transfer-row.legacy>b{color:#a36c16}.financial-account-list{display:grid;gap:7px;margin-top:13px;padding-top:12px;border-top:1px solid var(--line)}.account-row{width:100%;border:1px solid #e3ebe8;background:#fff;border-radius:12px;padding:9px;display:grid;grid-template-columns:auto 1fr auto;gap:9px;align-items:center;text-align:left;color:inherit}.account-type-icon{width:33px;height:33px;border-radius:9px;background:#edf5f2;display:grid;place-items:center}.account-row strong{font-size:10px}.account-row small{display:block;font-size:8px;color:#74817d;margin-top:2px}.account-row em{font-style:normal;font-size:19px;color:#74817d}
.income-source-block{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:8px;align-items:end}.income-source-block>label{min-width:0}.income-source-block select{font-size:13px}
.input-suffix{font-size:10px;color:var(--muted);margin-top:-4px}.master-cycle-btn+ .master-cycle-btn{margin-left:5px}
#commitmentCustomIntervalWrap label{position:relative}.account-dialog-help{font-size:9px;color:var(--muted)}
@media(max-width:520px){.transfer-planner-summary{grid-template-columns:1fr}.income-source-block{grid-template-columns:1fr}.budget-db-row{grid-template-columns:auto 1fr auto}.budget-db-row em{display:none}.transfer-row{align-items:flex-start;flex-direction:column}.transfer-row>b{text-align:left}}
.transfer-suggestion-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;margin-bottom:8px}.transfer-suggestion{border:1px solid #cfe5dc;background:#f2faf7;border-radius:12px;padding:9px}.transfer-suggestion span{display:block;font-size:8px;color:#71817b}.transfer-suggestion strong{display:block;font-size:13px;color:var(--green);margin-top:2px}.transfer-suggestion small{display:block;font-size:8px;color:#61736d;margin-top:3px;line-height:1.35}.transfer-suggestion.shortfall{background:#fff7f5;border-color:#f0d0c9}.transfer-suggestion.shortfall strong{color:#c64b40}
@media(max-width:520px){.transfer-suggestion-grid{grid-template-columns:1fr}}

/* v0.11 — cleaner information architecture + Payment Account-only transfer planner */
.bottom-nav{grid-template-columns:repeat(5,1fr)}
.bottom-nav .nav-item{min-width:0;padding:7px 4px}.bottom-nav .nav-item small{font-size:8px}
.page-head-actions{display:flex;gap:7px;align-items:center}

.planner-rule-card{border:1px solid #cfe5dc;background:#f2faf7;border-radius:15px;padding:12px 13px;margin-bottom:12px}.planner-rule-card strong{display:block;font-size:11px}.planner-rule-card small{display:block;font-size:9px;color:#687a74;line-height:1.45;margin-top:4px}.planner-rule-card small b{color:#36564e}.compact-rule{margin:10px 0 12px}
.planner-main-card{background:#fff;border:1px solid var(--line);border-radius:18px;padding:14px;margin-top:12px}.planner-main-card .transfer-planner-summary{margin-top:0}.planner-subhead{margin:14px 1px 8px}.planner-subhead h3{margin:0;font-size:14px}.planner-accounts-card{margin-top:12px}.planner-account-list{border-top:0;padding-top:0;margin-top:11px}
.compact-empty{padding:14px}
.planner-warning{width:100%;margin-top:9px;border:1px solid #efd8ae;background:#fffaf1;border-radius:13px;padding:10px;display:grid;grid-template-columns:auto 1fr auto;gap:9px;align-items:center;text-align:left;color:inherit}.planner-warning>span:first-child{width:30px;height:30px;border-radius:9px;background:#fff0d4;display:grid;place-items:center}.planner-warning strong{display:block;font-size:10px}.planner-warning small{display:block;font-size:8px;color:#806f55;line-height:1.4;margin-top:2px}.planner-warning em{font-style:normal;font-size:9px;font-weight:850;color:#9d6818;white-space:nowrap}

.planner-account-row{grid-template-columns:auto minmax(0,1fr) auto}.planner-account-row small{line-height:1.35}.account-funding-status{font-size:9px;font-weight:850;text-align:right;white-space:nowrap}.account-funding-status em{display:block;font-style:normal;font-size:17px;line-height:12px;color:#74817d}.account-funding-status.need{color:#c64b40}.account-funding-status.neutral{color:#6f7c78}.primary-chip{font-style:normal;display:inline-block;margin-left:4px;background:#e8f7f1;color:var(--green);border-radius:999px;padding:2px 5px;font-size:7px;vertical-align:1px}

.back-strip{width:100%;border:1px solid var(--line);background:#fff;color:#46645c;border-radius:12px;padding:9px 11px;text-align:left;font-size:10px;font-weight:800;margin:-5px 0 4px}.setup-list,.setup-master-list{margin-top:12px}.setup-master-list .master-row{background:#fff}.mini-field.warning{background:#fff5e8;border-color:#efcf9d;color:#a96613}

.database-hub{display:grid;gap:9px}.database-hub-card{width:100%;border:1px solid var(--line);background:#fff;border-radius:15px;padding:12px;display:grid;grid-template-columns:auto 1fr auto;gap:11px;align-items:center;text-align:left;color:inherit}.database-hub-icon{width:38px;height:38px;border-radius:11px;background:#edf7f4;display:grid;place-items:center;font-size:19px}.database-hub-card strong{display:block;font-size:11px}.database-hub-card small{display:block;font-size:8px;color:#74817d;line-height:1.35;margin-top:3px}.database-hub-card em{font-style:normal;font-size:21px;color:#74817d}.database-settings{margin-top:14px}

@media(max-width:460px){
  .bottom-nav{width:min(calc(100% - 14px),620px);padding:5px}.bottom-nav .nav-item{padding:7px 2px}.bottom-nav .nav-item span{font-size:16px}.bottom-nav .nav-item small{font-size:7.5px}
  .planner-account-row{grid-template-columns:auto minmax(0,1fr)}.account-funding-status{grid-column:2;text-align:left;white-space:normal}.account-funding-status em{display:inline;margin-left:5px}
  .page-head-actions{gap:5px}.page-head-actions .secondary-mini,.page-head-actions .primary-mini{padding:8px 9px;font-size:10px}
}


/* v0.12 — Safe to Spend, clearer planner wording and high-contrast allocation charts */
@media (prefers-color-scheme: dark){
  :root{--pie-needs:#35e0b5;--pie-wants:#58c7ff;--pie-savings:#c29cff;--pie-empty:#53615c}
  .salary-pie{box-shadow:inset 0 0 0 1px rgba(255,255,255,.28),0 0 0 1px rgba(0,0,0,.22)}
  .salary-pie-center{background:#18231f;box-shadow:0 0 0 2px rgba(255,255,255,.13)}
  .salary-pie-center strong{color:#f3fbf8}.salary-pie-center small{color:#b7c9c3}
  .planner-side .salary-pie-center{background:#18231f}
  .planner-dot{box-shadow:0 0 0 1px rgba(255,255,255,.22)}
}
