.tpl-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:16px}.tpl-grid button{display:flex;flex-direction:column;gap:3px;align-items:flex-start;text-align:left;min-height:64px;min-width:0;padding:12px 13px;border:1px solid var(--line);border-radius:12px;background:var(--card-2);color:inherit;transition:background-color .15s,border-color .15s,box-shadow .15s}.tpl-grid button:not(.on):hover{border-color:var(--gold-soft);background:var(--card)}.tpl-grid button.on{border-color:var(--gold);background:var(--gold-tint);box-shadow:0 0 0 1px var(--gold)}.tpl-grid button strong{font-size:14px;line-height:1.25;overflow-wrap:anywhere}.tpl-grid button span{font-size:12px;line-height:1.35;color:var(--ink-3)}@media (max-width: 380px){.tpl-grid{grid-template-columns:1fr}.tpl-grid button{min-height:52px}}.bill-intro{margin:0 0 14px;line-height:1.5}.bill-group{border:1px solid var(--line);border-radius:12px;background:var(--card-2);padding:4px 12px 10px;margin:0 0 12px;min-width:0}.bill-group legend{padding:0 6px;font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-3)}.bill-row{border-bottom:1px solid var(--line);padding:2px 0}.bill-row:last-of-type{border-bottom:0}.bill-main{display:flex;align-items:center;gap:8px;min-width:0}.bill-check{flex:1;min-width:0;min-height:44px;align-items:center;padding:6px 0}.bill-check span{min-width:0;overflow-wrap:anywhere}.bill-check small{display:inline-block;margin:0 0 0 6px;padding:1px 7px;border-radius:999px;background:var(--gold-tint);color:var(--gold-strong);font-size:11px;font-weight:600;white-space:nowrap}.bill-row.off .bill-check span{color:var(--ink-3)}.bill-row input:not([type=checkbox]),.bill-yearly select{border:1px solid var(--line);background:var(--card);border-radius:10px;padding:9px 12px;font-size:16px;min-height:40px;min-width:0;color:inherit}.bill-row input:not([type=checkbox]):focus-visible,.bill-yearly select:focus-visible{outline:2px solid transparent;border-color:var(--gold-soft);box-shadow:0 0 0 3px var(--gold-tint)}.bill-row input:disabled{opacity:.45}.bill-row .amount-wrap{width:100px}.bill-row .amount-wrap input{padding-right:26px}.bill-name{flex:1;width:0;margin:4px 0}.bill-row .row-del{width:40px;height:40px}.bill-yearly{display:flex;align-items:center;gap:8px;padding:0 0 8px 28px;font-size:12.5px;color:var(--ink-3)}.bill-yearly select{padding:6px 10px;font-size:14px}.bill-add{margin-top:8px;min-height:40px;padding:0 14px}.bill-more{font-size:12.5px;margin:0 0 12px}.bill-summary{position:sticky;bottom:8px;z-index:1;background:var(--card);border:1px solid var(--gold);border-radius:12px;padding:10px 14px;font-size:13px;color:var(--ink-2);box-shadow:0 6px 18px #00000014}.bill-sum-line{display:flex;flex-wrap:wrap;gap:2px 6px;align-items:baseline;font-variant-numeric:tabular-nums}.bill-sum-line b{color:var(--ink);font-weight:700;white-space:nowrap}.bill-sum-left b{font-size:15px;color:var(--gold-strong)}.bill-summary.neg{border-color:var(--terra)}.bill-summary.neg .bill-sum-left b{color:var(--terra)}.bill-summary small{display:block;margin-top:4px;font-size:12px;line-height:1.4;color:var(--ink-3)}.pa-sub{display:flex;align-items:center;flex-wrap:wrap;gap:3px 6px;padding:0 6px 2px;font-size:11px;line-height:1.3;color:var(--ink-3);min-width:0}.pa-sub-desk{flex-wrap:nowrap;font-size:10.5px;padding-bottom:1px}.pa-sub-desk>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pa-dot{width:6px;height:6px;border-radius:50%;flex:none;background:var(--ink-3);opacity:.55}.pa-dot.pa-dot-alert{background:var(--terra);opacity:1}.pa-badge{flex:none;display:inline-flex;align-items:center;font-size:9.5px;font-weight:700;letter-spacing:.02em;line-height:1;padding:3px 6px;border-radius:999px;white-space:nowrap;background:var(--paper-2);color:var(--ink-2)}.toggle-badge.pa-auto{color:var(--ink-3);font-weight:600;letter-spacing:.02em}.pa-yearly-jump{flex:none;width:76px;min-height:40px;padding:4px;display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border:1px dashed var(--line-strong);border-radius:10px;background:transparent;color:var(--ink-3);font-size:10px;font-weight:600;line-height:1.15;text-align:center;transition:background-color .15s,color .15s,border-color .15s;touch-action:manipulation}.pa-yearly-jump strong{font-size:11px;font-weight:700;color:var(--ink-2);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pa-yearly-jump:hover,.pa-yearly-jump:focus-visible{background:var(--card-2);color:var(--ink-2)}.pa-yearly-jump:focus-visible{outline:2px solid var(--gold);outline-offset:2px}.pa-slot-empty{flex:none;width:76px}.pay-cell.pa-muted .cell-edit::placeholder{color:var(--ink-3);opacity:.45}.pay-cell.pa-muted .cell-edit:focus-visible::placeholder{opacity:0}.pa-spend{display:flex;align-items:center;gap:10px;padding:0 0 0 6px;min-width:0}.pa-spend-text{flex:none;font-size:12px;font-weight:600;color:var(--ink-2);white-space:nowrap}.pa-spend-text.over{color:var(--terra-text)}.pa-spend-track{flex:1 1 auto;min-width:24px;height:4px;border-radius:999px;background:var(--line);overflow:hidden;display:block}.pa-spend-fill{display:block;width:100%;height:100%;border-radius:999px;background:var(--gold);transform-origin:left center;transition:transform .3s ease,background-color .2s}.pa-spend-fill.over{background:var(--terra-text)}.pa-spend-add{flex:none;width:44px;height:40px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--line);background:var(--card);color:var(--gold-strong);font-size:20px;font-weight:600;line-height:1;transition:background-color .15s,border-color .15s;touch-action:manipulation}.pa-spend-add:hover{border-color:var(--line-strong);background:var(--card-2)}.pa-spend-add:focus-visible{outline:2px solid var(--gold);outline-offset:2px}.pa-pop-links{display:flex;flex-direction:column;align-items:flex-start;gap:2px;margin-top:8px}.pa-link{min-height:40px;padding:6px 4px;border:0;background:transparent;border-radius:8px;color:var(--gold-strong);font-size:13px;font-weight:600;text-align:left;transition:color .15s,background-color .15s}.pa-link:hover{background:var(--paper-2)}.pa-link:focus-visible{outline:2px solid var(--gold);outline-offset:1px}.pa-month-actions{display:flex;flex-wrap:wrap;gap:8px;margin:-4px 0 14px}.pa-action{flex:1 1 auto;min-height:40px;min-width:0;padding:8px 12px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid var(--line);background:var(--card);color:var(--gold-strong);font-size:13px;font-weight:600;line-height:1.2;text-align:center;transition:background-color .15s,border-color .15s,opacity .15s;touch-action:manipulation}.pa-action:hover{border-color:var(--line-strong);background:var(--card-2)}.pa-action:focus-visible{outline:2px solid var(--gold);outline-offset:2px}.pa-action:disabled{opacity:.55}.pa-add-open{display:flex;align-items:center;gap:7px;width:100%;color:var(--gold-strong);font-weight:600}.pa-add-form{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:10px 13px;border-top:1px solid var(--line);background:var(--card-2);white-space:normal}.pa-add-form.desk{border-top:0;padding:6px 2px;background:transparent;max-width:640px}.pa-input{min-width:0;min-height:40px;padding:8px 11px;font-size:14.5px;border:1px solid var(--line);border-radius:10px;background:var(--card);color:var(--ink);transition:border-color .15s,box-shadow .15s}.pa-add-form.desk .pa-input{min-height:32px;padding:5px 9px;font-size:13px;border-radius:8px}.pa-input:focus-visible{outline:2px solid transparent;border-color:var(--gold-soft);box-shadow:0 0 0 3px var(--gold-tint)}.pa-input.name{flex:1 1 150px}.pa-input.amount{flex:0 1 96px;width:96px;font-family:var(--font-num);font-variant-numeric:tabular-nums}.pa-add-every{display:inline-flex;align-items:center;gap:8px;min-height:40px;font-size:13px;color:var(--ink-2);cursor:pointer;flex:1 1 auto}.pa-add-form.desk .pa-add-every{min-height:32px;flex:0 0 auto}.pa-add-every input{width:18px;height:18px;flex:none;accent-color:var(--gold-strong)}.pa-add-form .btn{min-height:40px;padding:8px 14px;font-size:13.5px}.pa-add-form.desk .btn{min-height:32px;padding:5px 12px;font-size:12.5px}.pa-add-hint{flex:1 1 100%;font-size:11.5px;color:var(--ink-3);line-height:1.35}@media (prefers-reduced-motion: reduce){.pa-spend-fill,.pa-yearly-jump,.pa-spend-add,.pa-link,.pa-action,.pa-input{transition:none}}.as-layout{display:grid;gap:14px;grid-template-columns:minmax(0,1fr)}.as-col{display:flex;flex-direction:column;gap:14px;min-width:0}@media (min-width: 960px){.as-layout{grid-template-columns:minmax(0,1.45fr) minmax(0,1fr);align-items:start}}.as-title{font-size:17px}.as-h-reset{margin:0;font:inherit}.as-strong{font-weight:700;color:var(--ink)}.as-strong.pos{color:var(--sage-text)}.as-strong.neg{color:var(--terra-text)}.as-dot{width:8px;height:8px;border-radius:50%;flex:none;display:inline-block;background:var(--ink-3)}.as-dot.terra{background:var(--terra)}.as-dot.gold{background:var(--gold)}.as-dot.sage{background:var(--sage)}.as-bar{display:block;height:8px;border-radius:99px;background:#a8854b29;overflow:hidden}.as-bar.thin{height:5px;margin-top:7px}.as-bar-fill{display:block;width:100%;height:100%;border-radius:99px;background:linear-gradient(90deg,var(--gold-soft),var(--gold));transform-origin:left;transition:transform .4s}.as-bar-fill.over{background:var(--terra)}.as-hero{background:linear-gradient(135deg,#fffdf7,#f6f0e2)}.as-hero-date{font-size:18px;font-weight:600;margin-top:2px}.as-hero-date:first-letter{text-transform:uppercase}.as-hero-label{gap:6px;margin:16px 0 0}.as-hero-num{font-size:clamp(40px,12vw,52px);font-weight:600;line-height:1.05;margin-top:6px;color:var(--ink)}.as-hero-num.neg{color:var(--terra-text)}.as-hero-line{margin:8px 0 0;font-size:14px;color:var(--ink-2);line-height:1.45}.as-hero-forecast{margin-top:4px;font-size:13.5px}.as-hero-bills{margin-top:16px}.as-hero-bills-top{font-size:13px;color:var(--ink-2);margin-bottom:7px;gap:6px 12px;flex-wrap:wrap}.as-hero-outbox{display:flex;align-items:center;gap:7px;margin-top:12px;font-size:12.5px;color:var(--ink-2)}.as-quick{padding:10px 12px}.as-quick-form{display:flex;align-items:center;gap:8px}.as-quick-input{flex:1;min-width:0;height:46px;padding:0 12px;font-size:16px;border:1px solid var(--line);border-radius:10px;background:var(--card-2);color:var(--ink);transition:border-color .15s,box-shadow .15s,background-color .15s}.as-quick-input::placeholder{color:var(--ink-3);opacity:1}.as-quick-input:focus-visible{outline:2px solid transparent;border-color:var(--gold-soft);background:#fff;box-shadow:0 0 0 3px var(--gold-tint)}.as-quick-go{flex:none;width:46px;height:46px;border-radius:10px;display:inline-grid;place-items:center;background:var(--gold-strong);color:#fff;transition:background-color .15s,opacity .15s}.as-quick-go:hover:not(:disabled){background:var(--gold-strong-hover)}.as-quick-go:disabled{opacity:.4;cursor:default}.as-quick-go svg{width:18px;height:18px}.as-quick-preview{font-size:13.5px;line-height:1.4;color:var(--ink);padding:0 2px}.as-quick-preview:not(:empty){margin-top:8px}.as-quick-alts{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}@media (hover: none){.as-quick-enter{display:none}}.as-pill{display:inline-flex;align-items:center;justify-content:center;min-height:40px;max-width:100%;min-width:0;padding:0 14px;border-radius:999px;border:1px solid var(--line-strong);background:var(--card);font-size:13.5px;font-weight:600;color:var(--ink);transition:background-color .15s,border-color .15s}.as-pill:hover:not(:disabled){background:var(--gold-tint);border-color:var(--gold-soft)}.as-pill:disabled{opacity:.55;cursor:default}.as-head{gap:6px 12px;flex-wrap:wrap;margin-bottom:4px}.as-link{min-height:40px;padding:0 4px;font-size:13px;font-weight:600;color:var(--gold-strong);text-decoration:underline;text-decoration-color:transparent;text-underline-offset:3px;transition:text-decoration-color .15s}.as-link:hover{text-decoration-color:currentColor}.as-group{margin-top:12px}.as-group-title{display:flex;align-items:center;gap:7px;margin:0 0 2px}.as-group-count{font-size:11px;font-weight:600;color:var(--ink-3);letter-spacing:0}.as-list{list-style:none;margin:0;padding:0}.as-list[hidden]{display:none}.as-row{display:flex;align-items:stretch;gap:2px;border-top:1px solid var(--line);min-width:0}.as-list>.as-row:first-child{border-top:none}.as-check{flex:none;width:44px;min-height:48px;display:grid;place-items:center;margin-left:-8px;border-radius:10px}.as-check-box{width:24px;height:24px;border-radius:8px;border:2px solid var(--line-strong);background:var(--card);display:grid;place-items:center;transition:background-color .15s,border-color .15s,transform .15s}.as-check:hover .as-check-box{border-color:var(--sage)}.as-check:active .as-check-box{transform:scale(.92)}.as-check[aria-checked=true] .as-check-box{background:var(--sage);border-color:var(--sage)}.as-row-body{flex:1;min-width:0;display:flex;align-items:center;gap:10px;padding:8px 6px;border-radius:10px;text-align:left;min-height:48px}.as-row-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}.as-row-name{display:flex;align-items:center;gap:7px;min-width:0;font-size:14.5px;font-weight:600}.as-row-meta{display:flex;align-items:center;flex-wrap:wrap;gap:3px 7px;font-size:12px;min-width:0}.as-meta-late{color:var(--terra-text)}.as-row-amount{flex:none;font-size:14.5px;font-weight:700}.as-row.is-paid .as-row-name,.as-row.is-paid .as-row-amount{color:var(--ink-2);font-weight:500}.as-badge{display:inline-flex;align-items:center;padding:1px 7px;border-radius:999px;font-size:10.5px;font-weight:700;letter-spacing:.03em;color:var(--ink-2);background:var(--paper-2);border:1px solid var(--line)}.as-env{align-items:center;gap:8px}.as-env .as-row-body{margin-left:-6px}.as-env-add{flex:none;padding:0 12px;font-size:13px;color:var(--gold-strong)}.as-fold{width:100%;min-height:44px;display:flex;align-items:center;gap:10px;text-align:left;border-radius:10px;padding:0 6px}.as-paid{border-top:1px solid var(--line);padding-top:4px}.as-paid .as-fold{margin:0 -6px;width:calc(100% + 12px)}.as-fold-sum{margin-left:auto;font-size:12.5px}.as-chevron{display:inline-flex;flex:none;color:var(--ink-3);transition:transform .2s}.as-chevron.open{transform:rotate(90deg)}.as-empty{padding:8px 0 4px}.as-empty p{margin:0 0 12px;font-size:14px;line-height:1.5;color:var(--ink-2);max-width:46ch}.as-cheer{display:flex;align-items:center;gap:9px;margin:10px 0 0;font-size:14.5px;font-weight:600;color:var(--sage-text)}.as-cheer-mark{flex:none;width:24px;height:24px;border-radius:50%;background:var(--sage);display:grid;place-items:center}.as-insight-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.as-insight{display:flex;align-items:flex-start;gap:10px;padding:10px 6px 10px 14px;border:1px solid var(--line);border-radius:var(--radius);background:var(--card-2)}.as-insight .as-dot{margin-top:7px}.as-insight p{flex:1;min-width:0;margin:0;padding:3px 0;font-size:13.5px;line-height:1.45;color:var(--ink)}.as-x{flex:none;width:40px;height:40px;margin:-4px 0;border-radius:50%;display:grid;place-items:center;font-size:20px;line-height:1;color:var(--ink-2)}.as-x:hover{background:var(--paper-2)}.as-recap{overflow:hidden}.as-recap-head{padding:12px 16px;min-height:56px;border-radius:0}.as-recap-titles{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.as-recap-short{font-size:12.5px}.as-recap-body{padding:0 16px 16px}.as-recap-body[hidden]{display:none}.as-recap-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:7px;font-size:14px;line-height:1.45;color:var(--ink)}.as-recap-list li{padding-left:14px;position:relative}.as-recap-list li:before{content:"";position:absolute;left:0;top:.62em;width:5px;height:5px;border-radius:50%;background:var(--gold-soft)}.as-recap-action{margin-top:14px;max-width:100%}.as-activity-list{list-style:none;margin:10px 0 0;padding:0}.as-activity-list li{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:8px 0;border-top:1px solid var(--line);font-size:13.5px;line-height:1.4}.as-activity-list li:first-child{border-top:none}.as-activity-text{min-width:0}.as-activity-time{flex:none;font-size:12px;white-space:nowrap}.as-mini{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px}.as-mini .kpi{min-width:0;padding:13px 14px}.as-mini .as-mini-val{font-size:clamp(21px,6vw,26px)}@media (prefers-reduced-motion: reduce){.as-bar-fill,.as-chevron,.as-check-box{transition:none}.as-check:active .as-check-box{transform:none}}:root{--paper: #f3f1ea;--paper-2: #efece3;--card: #fffdf7;--card-2: #faf7ef;--line: #e4e0d4;--line-strong: #d6d1c2;--ink: #2c2823;--ink-2: #6f685c;--ink-3: #736c5f;--gold: #a8854b;--gold-strong: #8a6b38;--gold-strong-hover: #7f6232;--gold-soft: #cbb07a;--gold-tint: #f1e9d8;--sage: #6f8c6a;--sage-tint: #e5ecde;--terra: #b56550;--terra-tint: #f3e3dc;--sage-text: #4f6b4a;--terra-text: #9c4f3b;--cell-highlight: #fbf6e7;--p-m: #5b7a99;--p-m-tint: #e8eef4;--p-e: #b06b7a;--p-e-tint: #f4e9ec;--p-k: #a8854b;--p-k-tint: #f1e9d8;--radius: 14px;--radius-sm: 9px;--shadow: 0 1px 2px rgba(44,40,35,.04), 0 6px 18px rgba(44,40,35,.05);--shadow-lg: 0 2px 6px rgba(44,40,35,.06), 0 16px 40px rgba(44,40,35,.09);--font-display: "Spectral", Georgia, "Times New Roman", serif;--font-ui: "Hanken Grotesk", system-ui, -apple-system, sans-serif;--font-num: "JetBrains Mono", ui-monospace, "SFMono-Regular", monospace}*{box-sizing:border-box}html,body{margin:0;padding:0}html{overflow-x:hidden;-webkit-text-size-adjust:100%}body{font-family:var(--font-ui);background:var(--paper);color:var(--ink);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:hidden;overflow-wrap:anywhere;-webkit-overflow-scrolling:touch}img,svg,video{max-width:100%}input,select,textarea,button{max-width:100%}#root{min-height:100vh}button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}input,select,textarea{font-family:inherit;color:inherit}a{color:var(--gold-strong);text-decoration:none}:where(button,a,input,select,textarea,[role=button],[role=switch],[role=checkbox]){touch-action:manipulation;-webkit-tap-highlight-color:transparent}:where(button,a,[role=button],[role=switch],[role=checkbox],[tabindex]):focus-visible{outline:2px solid var(--gold);outline-offset:2px}main :is(h1,h2,h3,[id]){scroll-margin-top:80px}a:hover{text-decoration:underline}.num{font-family:var(--font-num);font-variant-numeric:tabular-nums;letter-spacing:-.01em;white-space:nowrap}.serif{font-family:var(--font-display)}.pos{color:var(--sage-text)}.neg{color:var(--terra-text)}.muted{color:var(--ink-2)}.faint{color:var(--ink-3)}.app{min-height:100vh}.topbar{position:sticky;top:0;z-index:40;background:linear-gradient(var(--paper),rgba(243,241,234,.86));-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);transform:translateZ(0)}.topbar-inner{display:flex;align-items:center;gap:16px;flex-wrap:nowrap;padding:14px max(20px,env(safe-area-inset-right)) 14px max(20px,env(safe-area-inset-left));max-width:1200px;margin:0 auto}.topbar-inner.wide{max-width:1600px}.topbar-inner>*{min-width:0}.topbar-subrow{border-top:1px solid var(--line);background:#f3f1ea99;padding:8px max(20px,env(safe-area-inset-right)) 8px max(20px,env(safe-area-inset-left));display:flex;justify-content:flex-end;max-width:1200px;margin:0 auto}.topbar-subrow.wide{max-width:1600px}.brand{display:flex;align-items:center;gap:11px;min-width:0}.brand>div{min-width:0}.brand>.brand-mark{flex:none}.brand-mark{width:34px;height:34px;border-radius:9px;background:var(--gold);color:#fff;display:grid;place-items:center;font-family:var(--font-display);font-weight:600;font-size:19px;box-shadow:inset 0 -2px #0000001f}.brand-name{font-family:var(--font-display);font-size:18px;font-weight:600;line-height:1.1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.brand-sub{font-size:11.5px;color:var(--ink-3);letter-spacing:.02em}.year-switcher{display:inline-flex;align-items:center;gap:4px;font-size:11.5px;color:var(--ink-3);letter-spacing:.02em;background:transparent;border:none;padding:1px 6px;margin-left:-6px;border-radius:5px;cursor:pointer;transition:color .15s,background-color .15s}.year-switcher:hover,.year-switcher.open{color:var(--ink);background:var(--paper-2)}.year-pop{background:var(--card);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow-lg);padding:4px;z-index:60}.year-pop-head{font-size:10.5px;font-weight:700;letter-spacing:.06em;color:var(--ink-3);text-transform:uppercase;padding:6px 10px 4px}.year-pop-item{display:flex;width:100%;align-items:center;gap:8px;padding:8px 10px;border-radius:7px;font-size:13px;color:var(--ink);font-weight:500;text-align:left;background:transparent}.year-pop-item:hover{background:var(--paper-2)}.year-pop-item.on{background:var(--gold-tint);color:var(--gold-strong);font-weight:600}.year-pop-meta{color:var(--ink-3);font-size:11px;margin-left:auto}.year-pop-item.on .year-pop-meta{color:var(--gold-strong)}.year-pop-check{color:var(--gold);font-weight:700}.seg{display:inline-flex;background:var(--paper-2);border:1px solid var(--line);border-radius:999px;padding:3px;gap:2px;flex-shrink:0}.seg button{border-radius:999px;padding:7px 15px;font-size:13.5px;font-weight:600;color:var(--ink-2);display:inline-flex;align-items:center;gap:7px;transition:background-color .15s,color .15s,box-shadow .15s;white-space:nowrap;flex-shrink:0}.seg button:not(.on):hover{color:var(--ink);background:#fffdf799}.seg button .dot{width:9px;height:9px;border-radius:50%;flex-shrink:0}.seg button.on{background:var(--card);color:var(--ink);box-shadow:var(--shadow)}.nav{display:flex;gap:4px}.nav button,.nav a{text-decoration:none;padding:9px 14px;font-size:14px;font-weight:600;color:var(--ink-2);border-radius:9px;display:inline-flex;align-items:center;gap:8px}.nav button:hover,.nav a:hover{background:var(--paper-2);color:var(--ink)}.nav button.on,.nav a.on{background:var(--gold-tint);color:var(--gold-strong)}.nav button.on svg,.nav a.on svg{stroke:var(--gold-strong)}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.card-pad{padding:18px}.section-title{font-family:var(--font-display);font-size:20px;font-weight:600;margin:0}.section-title,.auth-title,.cookie-title,.install-title,.modal-card h2{text-wrap:balance}.eyebrow{font-size:11px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-3)}.kpi-grid{display:grid;gap:12px}.kpi{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:15px 16px;box-shadow:var(--shadow);position:relative}.kpi .kpi-label{font-size:12.5px;color:var(--ink-2);font-weight:600;display:flex;align-items:center;gap:7px}.kpi .kpi-val{font-family:var(--font-display);font-size:30px;font-weight:600;margin-top:6px;line-height:1;letter-spacing:-.01em}.kpi .kpi-sub{font-size:12px;color:var(--ink-3);margin-top:7px}.infotip{position:relative;display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;color:var(--ink-3);cursor:help;vertical-align:middle;border:0;background:none;padding:0;font:inherit;transition:color .15s}.infotip:hover,.infotip:focus-visible{color:var(--gold-strong, #8a6b38)}.infotip:focus-visible{outline:2px solid var(--gold);outline-offset:2px}.infotip svg{display:block}.infotip-bubble{position:absolute;z-index:50;pointer-events:none;opacity:0;transform:translateY(2px);transition:opacity .15s,transform .15s;background:#2a241c;color:#f6f0e2;font-size:12px;font-weight:500;line-height:1.45;padding:8px 11px;border-radius:8px;width:max-content;max-width:260px;box-shadow:0 6px 20px #0000002e;white-space:normal;text-align:left;font-family:var(--font-sans, system-ui);letter-spacing:0;text-transform:none}.infotip-top .infotip-bubble{bottom:calc(100% + 8px);left:50%;transform:translate(-50%,2px)}.infotip-top:hover .infotip-bubble,.infotip-top:focus-visible .infotip-bubble{transform:translate(-50%)}.infotip-bottom .infotip-bubble{top:calc(100% + 8px);left:50%;transform:translate(-50%,-2px)}.infotip-bottom:hover .infotip-bubble,.infotip-bottom:focus-visible .infotip-bubble{transform:translate(-50%)}.infotip:hover .infotip-bubble,.infotip:focus-visible .infotip-bubble{opacity:1}.infotip.dismissed .infotip-bubble{opacity:0}.chip{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:700;padding:3px 9px;border-radius:999px}.chip-m{background:var(--p-m-tint);color:var(--p-m)}.chip-e{background:var(--p-e-tint);color:var(--p-e)}.chip-k{background:var(--p-k-tint);color:var(--gold-strong)}.pill{display:inline-flex;align-items:center;gap:7px;padding:8px 13px;border-radius:999px;font-size:13px;font-weight:600;border:1px solid var(--line);background:var(--card);color:var(--ink);transition:background-color .15s,border-color .15s,box-shadow .15s}.pill:hover{border-color:var(--line-strong);box-shadow:var(--shadow)}.pill.primary{background:var(--gold-strong);color:#fff;border-color:var(--gold-strong)}.pill.primary:hover{background:var(--gold-strong-hover);border-color:var(--gold-strong-hover)}.botnav{display:none}.ledger{width:100%;border-collapse:collapse;font-size:13px;table-layout:fixed}.ledger th,.ledger td{text-align:left;padding:4px 8px;white-space:nowrap}.ledger td{overflow:hidden;text-overflow:ellipsis}.ledger thead th{font-size:10.5px;font-weight:700;letter-spacing:.04em;color:var(--ink-3);text-transform:uppercase;border-bottom:1px solid var(--line-strong);position:sticky;top:0;background:var(--card);z-index:2;padding-right:14px}.ledger .grp-row td{background:var(--gold-tint);font-family:var(--font-display);font-weight:600;font-size:14px;color:var(--ink);border-top:1px solid var(--line);padding:6px}.ledger .grp-row.income td{background:var(--sage-tint)}.ledger tbody tr.item-row:hover td{background:var(--card-2)}.ledger .item-row td{border-bottom:1px solid var(--line)}.ledger .tot-row td{font-weight:700;border-bottom:2px solid var(--line-strong);padding:6px}.cell-edit{width:100%;min-width:0;text-align:left;border:1px solid transparent;background:transparent;border-radius:5px;padding:3px 5px;font-family:var(--font-num);font-variant-numeric:tabular-nums;font-size:12.5px}.cell-edit:hover{border-color:var(--line);background:var(--card-2)}.cell-edit:focus-visible{outline:2px solid transparent;border-color:var(--gold-soft);background:#fff;box-shadow:0 0 0 3px var(--gold-tint)}.name-edit{border:1px solid transparent;background:transparent;border-radius:5px;padding:3px 6px;font-size:13px;font-weight:500;width:100%;min-width:0}.name-edit:hover{border-color:var(--line)}.name-edit:focus-visible{outline:2px solid transparent;border-color:var(--gold-soft);background:#fff;box-shadow:0 0 0 3px var(--gold-tint)}.ledger thead th.col-resizable{position:relative}.col-grip{position:absolute;top:0;bottom:0;right:-6px;width:12px;z-index:3;cursor:col-resize;-webkit-user-select:none;user-select:none;touch-action:none;display:block}.col-grip:after{content:"";position:absolute;top:4px;bottom:4px;left:5px;width:2px;border-radius:2px;background:transparent;transition:background .15s}.col-grip:hover:after,.col-grip.dragging:after{background:var(--gold)}body.col-resizing,body.col-resizing *{cursor:col-resize!important;-webkit-user-select:none!important;user-select:none!important}.ledger tr.item-row .row-trash{opacity:0;transition:opacity .15s}.ledger tr.item-row:hover .row-trash,.ledger tr.item-row:focus-within .row-trash{opacity:.55}.goal-trash:hover{opacity:1!important;color:var(--terra)!important}.pay-cell{position:relative;padding:2px 4px;transition:background .2s;min-height:26px}.pay-cell .cell-edit{padding-right:14px}.pay-dot{position:absolute;top:4px;right:4px;width:9px;height:9px;border-radius:50%;background:var(--line-strong);opacity:0;border:none;padding:0;cursor:pointer;transition:opacity .15s,transform .15s,background-color .15s,box-shadow .15s}.pay-dot:before{content:"";position:absolute;top:-8px;right:-8px;bottom:-8px;left:-8px;border-radius:50%}.pay-dot:focus-visible{opacity:1;outline:2px solid var(--gold);outline-offset:2px}.pay-cell:hover .pay-dot{opacity:.35}.pay-cell:hover .pay-dot:hover{opacity:1;transform:scale(1.5);box-shadow:0 0 0 3px #0000000f}.pay-dot.paid{background:var(--sage);opacity:1}.pay-dot.partial{background:var(--gold);opacity:1}.pay-dot.late{background:var(--terra);opacity:1}.pay-dot.paid:hover,.pay-dot.partial:hover,.pay-dot.late:hover{transform:scale(1.5)}.pay-partial-tag{position:absolute;bottom:0;right:4px;font-size:9px;color:var(--gold-strong);font-weight:700;pointer-events:none;letter-spacing:-.02em;line-height:1}.mobile-only .pay-dot{width:16px;height:16px;opacity:.35}.mobile-only .pay-dot.paid,.mobile-only .pay-dot.partial,.mobile-only .pay-dot.late{opacity:1}.touch-toggle{width:48px;height:28px;border-radius:999px;background:var(--line-strong);position:relative;cursor:pointer;flex:none;padding:0;border:1.5px solid transparent;transition:background .25s ease,border-color .25s ease,box-shadow .25s ease;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;touch-action:manipulation}.touch-toggle .toggle-knob{position:absolute;top:2px;left:2px;width:21px;height:21px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #0000002e,0 2px 6px #0000000f;transition:transform .25s cubic-bezier(.5,.05,.5,1.4),background .2s;display:block}.touch-toggle.on{background:var(--sage)}.touch-toggle.on .toggle-knob{transform:translate(20px)}.touch-toggle.on.partial{background:var(--gold)}.touch-toggle.late{background:var(--paper-2);border-color:var(--terra)}.touch-toggle.late .toggle-knob{background:var(--terra)}.touch-toggle.long-pressing{box-shadow:0 0 0 6px #a8854b2e}.touch-toggle:active .toggle-knob{width:23px}.toggle-badge{font-size:9.5px;font-weight:700;color:var(--gold-strong);white-space:nowrap;letter-spacing:-.01em;line-height:1;pointer-events:none}.toggle-badge.late{color:var(--terra-text)}.pay-pop{background:var(--card);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow-lg);padding:14px;z-index:60}.pay-pop-status{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:10px}.pay-pop-btn{display:flex;align-items:center;gap:8px;padding:9px 10px;border-radius:9px;border:1px solid var(--line);background:var(--card-2);font-size:13px;font-weight:600;color:var(--ink-2);text-align:left;transition:background-color .15s,border-color .15s,color .15s}.pay-pop-btn:hover{border-color:var(--line-strong);background:var(--card)}.pay-pop-icon{width:18px;height:18px;border-radius:50%;color:#fff;font-size:11px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;flex:none}.pay-pop-btn.on{border-color:var(--line-strong);background:var(--card)}.pay-pop-btn.on.paid{background:var(--sage-tint);color:var(--sage-text);border-color:var(--sage)}.pay-pop-btn.on.partial{background:var(--gold-tint);color:var(--gold-strong);border-color:var(--gold)}.pay-pop-btn.on.late{background:var(--terra-tint);color:var(--terra-text);border-color:var(--terra)}.pay-pop-btn.on.none{background:var(--paper-2);color:var(--ink);border-color:var(--line-strong)}.row-menu{position:relative;display:inline-flex}.row-menu-btn{padding:3px;border-radius:5px;color:var(--ink-3);opacity:.55;transition:opacity .15s,background .15s,color .15s;display:inline-flex;align-items:center;justify-content:center}.ledger tr.item-row .row-menu-btn{opacity:0}.ledger tr.item-row:hover .row-menu-btn,.ledger tr.item-row:focus-within .row-menu-btn{opacity:.65}.row-menu-btn.open{opacity:1!important}.row-menu-btn:hover{background:var(--paper-2);color:var(--ink);opacity:1!important}.row-menu-pop{position:absolute;top:100%;right:0;margin-top:4px;background:var(--card);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow-lg);min-width:180px;padding:4px;z-index:30}.row-menu-pop button{display:flex;width:100%;align-items:center;gap:8px;padding:8px 10px;border-radius:7px;font-size:13px;color:var(--ink);text-align:left;background:transparent}.row-menu-pop button:hover{background:var(--paper-2)}.row-menu-pop button.danger{color:var(--terra-text)}.row-menu-pop button.danger:hover{background:var(--terra-tint)}.person-pick{padding:2px 3px;border-radius:7px;background:transparent;border:1px solid transparent;transition:background .15s,border-color .15s;cursor:pointer}.person-pick:hover{background:var(--paper-2);border-color:var(--line)}.person-pick.open{background:var(--paper-2);border-color:var(--line-strong)}.person-pop{background:var(--card);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow-lg);padding:4px;z-index:60}.person-pop-item{display:flex;width:100%;align-items:center;gap:8px;padding:8px 10px;border-radius:7px;font-size:13px;color:var(--ink);text-align:left;background:transparent}.person-pop-item:hover{background:var(--paper-2)}.person-pop-item.on{background:var(--gold-tint);color:var(--gold-strong);font-weight:600}.year-pop,.person-pop,.pay-pop,.row-menu-pop{overscroll-behavior:contain}.person-pop-dot{width:8px;height:8px;border-radius:50%;flex:none}.month-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.month-nav-btn{width:40px;height:40px;border-radius:50%;border:1px solid var(--line);background:var(--card);display:grid;place-items:center;box-shadow:var(--shadow);transition:background-color .15s,border-color .15s}.month-nav-btn:not(:disabled):hover{background:var(--card-2);border-color:var(--line-strong)}.month-nav-btn:disabled{opacity:.35;cursor:default}.month-title{font-family:var(--font-display);font-size:24px;font-weight:600;text-align:center}.month-strip{display:flex;gap:6px;overflow-x:auto;padding:4px 2px 12px;margin-bottom:4px;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch}.month-strip::-webkit-scrollbar{display:none}.month-pill{flex:none;min-width:50px;padding:7px 12px;border-radius:999px;border:1px solid var(--line);background:var(--card);color:var(--ink-2);font-size:12.5px;font-weight:600;letter-spacing:.04em;scroll-snap-align:center;transition:background-color .15s,border-color .15s,color .15s,box-shadow .15s}.month-pill:hover{border-color:var(--line-strong)}.month-pill.on{background:var(--gold-strong);color:#fff;border-color:var(--gold-strong);box-shadow:var(--shadow)}.bar-track{background:var(--paper-2);border-radius:999px;overflow:hidden;height:10px}.bar-fill{width:100%;height:100%;border-radius:999px;transform-origin:left;transition:transform .4s}.gift-row{display:grid;align-items:center;gap:10px;padding:11px 14px;border-bottom:1px solid var(--line)}.checkbox{width:22px;height:22px;border-radius:7px;border:1.5px solid var(--line-strong);background:var(--card);display:inline-flex;align-items:center;justify-content:center;flex:none;padding:0;transition:background-color .15s,border-color .15s,box-shadow .15s}.checkbox:not(.on):not(.bought):hover{border-color:var(--gold-soft);background:var(--card-2)}.checkbox.on{background:var(--sage);border-color:var(--sage)}.checkbox.bought{background:var(--gold);border-color:var(--gold)}.checkbox-tick{color:#fff;font-size:14px;font-weight:700;line-height:1;display:block;transform:translateY(-.5px)}.gift-view-toggle{display:flex;gap:6px;background:var(--paper-2);border:1px solid var(--line);border-radius:999px;padding:3px;margin-bottom:14px}.gift-view-toggle button{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 14px;border-radius:999px;font-size:13px;font-weight:600;color:var(--ink-2);background:transparent;transition:background-color .15s,color .15s,box-shadow .15s}.gift-view-toggle button:not(.on):hover{color:var(--ink);background:#fffdf799}.gift-view-toggle button.on{background:var(--card);color:var(--ink);box-shadow:var(--shadow)}.gift-list-row{display:flex;align-items:center;gap:10px;padding:10px 12px;background:var(--card);border:1px solid var(--line);border-radius:11px}.gift-list-status{display:flex;flex-direction:column;gap:4px;flex:none}.status-dot{width:12px;height:12px;border-radius:50%;border:1.5px solid var(--line-strong);background:transparent;padding:0;cursor:pointer;position:relative;transition:transform .15s,background-color .15s,border-color .15s}.status-dot:before{content:"";position:absolute;top:-10px;right:-10px;bottom:-10px;left:-10px}.gift-list-status .status-dot:not(:last-child):before{bottom:-2px}.gift-list-status .status-dot:not(:first-child):before{top:-2px}.status-dot:hover{transform:scale(1.15)}.status-dot.bought.on{background:var(--gold);border-color:var(--gold)}.status-dot.received.on{background:var(--sage);border-color:var(--sage)}.gift-list-content{flex:1;min-width:0}.gift-list-name{font-weight:600;font-size:14px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gift-list-idea{font-size:11.5px;color:var(--ink-3);margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gift-list-money{text-align:right;flex:none}.gift-list-amount{font-weight:600;font-size:14px;line-height:1.2;color:var(--ink)}.gift-list-saved{font-size:11px;font-weight:600;margin-top:1px}.gift-list-delete{flex:none;padding:4px;border-radius:6px;color:var(--ink-3);opacity:.4;transition:background-color .15s,color .15s,opacity .15s}.gift-list-delete:hover{background:var(--terra-tint);color:var(--terra);opacity:1}.gift-mobile-card{background:var(--card);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);padding:14px;transition:background .2s,border-color .2s}.gift-mobile-card.is-received{background:linear-gradient(180deg,rgba(111,140,106,.06),var(--card));border-color:#6f8c6a59}.gift-header{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:12px}.gift-name-block{flex:1;min-width:0}.gift-name{font-family:var(--font-display);font-size:17px;font-weight:600;width:100%;background:transparent;border:1px solid transparent;border-radius:7px;padding:3px 6px;color:var(--ink)}.gift-name::placeholder{color:var(--ink-3);font-weight:500;font-style:italic}.gift-name:hover{border-color:var(--line)}.gift-name:focus-visible{outline:2px solid transparent;border-color:var(--gold-soft);background:#fff;box-shadow:0 0 0 3px var(--gold-tint)}.gift-idea-row{display:flex;align-items:center;gap:4px;margin-top:2px}.gift-idea{font-size:12.5px;color:var(--ink-2);width:100%;background:transparent;border:1px solid transparent;border-radius:6px;padding:2px 6px}.gift-idea::placeholder{color:var(--gold-strong);font-weight:500}.gift-idea:hover{border-color:var(--line)}.gift-idea:focus-visible{outline:2px solid transparent;border-color:var(--gold-soft);background:#fff;box-shadow:0 0 0 3px var(--gold-tint)}.gift-delete{padding:6px;border-radius:8px;color:var(--ink-3);opacity:.5;flex:none;transition:background-color .15s,color .15s,opacity .15s}.gift-delete:hover{background:var(--terra-tint);color:var(--terra);opacity:1}.gift-money-grid{display:grid;grid-template-columns:1fr 1fr 1fr;background:var(--card-2);border-radius:10px;padding:10px 4px;margin-bottom:12px}.gift-money-cell{display:flex;flex-direction:column;gap:4px;padding:0 8px;border-left:1px solid var(--line);min-width:0}.gift-money-cell:first-child{border-left:none}.gift-money-label{font-size:10px;font-weight:700;letter-spacing:.06em;color:var(--ink-3);text-transform:uppercase}.gift-money-input{display:flex;align-items:center;gap:1px}.gift-money-prefix{color:var(--ink-3);font-family:var(--font-num);font-size:14px;font-weight:600;line-height:1}.gift-money-input .cell-edit{font-size:15px;font-weight:600;padding:2px 0;color:var(--ink);flex:1;min-width:0}.gift-money-input .cell-edit::placeholder{color:var(--ink-3)}.gift-money-result{font-size:15px;font-weight:700;padding:2px 0;line-height:1.4}.gift-toggles{display:flex;gap:8px}.gift-toggle{flex:1;display:flex;align-items:center;justify-content:center;gap:8px;padding:10px 12px;border-radius:10px;border:1.5px solid var(--line);background:var(--card);font-size:13px;font-weight:600;color:var(--ink-2);transition:background-color .15s,border-color .15s,color .15s,transform .15s}.gift-toggle:not(.on):hover{border-color:var(--line-strong);background:var(--card-2);color:var(--ink)}.gift-toggle:active{transform:scale(.97)}.gift-toggle-check{width:18px;height:18px;border-radius:50%;border:1.5px solid var(--line-strong);background:transparent;display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:transparent;flex:none;transition:background-color .2s,border-color .2s,color .2s}.gift-toggle.bought.on{background:var(--gold-tint);border-color:var(--gold);color:var(--gold-strong)}.gift-toggle.bought.on .gift-toggle-check{background:var(--gold);border-color:var(--gold);color:#fff}.gift-toggle.received.on{background:var(--sage-tint);border-color:var(--sage);color:var(--sage-text)}.gift-toggle.received.on .gift-toggle-check{background:var(--sage);border-color:var(--sage);color:#fff}.row{display:flex;align-items:center}.between{justify-content:space-between}.wrap{padding:20px;max-width:1200px;margin:0 auto}.wrap.wide{max-width:1600px}.wrap.full{max-width:none}.stack{display:flex;flex-direction:column}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:10px}.scroll-x{overflow-x:auto}.divider{height:1px;background:var(--line)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);clip-path:inset(50%);white-space:nowrap;border:0}.skip-link{position:fixed;top:8px;left:8px;z-index:2000;padding:10px 14px;border-radius:10px;background:var(--card);color:var(--ink);font-size:14px;font-weight:600;box-shadow:var(--shadow-lg);transform:translateY(-200%)}.skip-link:focus,.skip-link:focus-visible{transform:none;outline:2px solid var(--gold);outline-offset:2px;text-decoration:none}.truncate{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hover-lift{transition:transform .15s,box-shadow .15s}.hover-lift:hover,.hover-lift:focus-visible{transform:translateY(-2px);box-shadow:var(--shadow-lg)}.hover-bg{transition:background-color .15s,color .15s}.hover-bg:hover,.hover-bg:focus-visible{background:var(--card-2)}.fade-action{opacity:.55;transition:opacity .15s}.fade-action:hover,.fade-action:focus-visible{opacity:1}.icon-grid{content-visibility:auto;contain-intrinsic-size:auto 40px}.fade-in{animation:fade .35s ease}@keyframes fade{0%{transform:translateY(7px)}to{transform:none}}@keyframes modalFade{0%{opacity:0}to{opacity:1}}.desktop-only{display:block}.mobile-only{display:none}@media (max-width: 780px){.dash-2col,.dash-hero,.inv-hero,.grid-2{grid-template-columns:1fr!important}.desktop-only{display:none!important}.mobile-only{display:block}.invite-row,.member-row{flex-wrap:wrap}.invite-row .invite-actions{width:100%;justify-content:flex-end}.wrap{padding:14px;padding-bottom:calc(90px + env(safe-area-inset-bottom));max-width:none}.topbar-inner{padding:11px max(14px,env(safe-area-inset-right)) 11px max(14px,env(safe-area-inset-left));flex-wrap:wrap;max-width:none}.topbar-subrow{padding:8px max(14px,env(safe-area-inset-right)) 8px max(14px,env(safe-area-inset-left));max-width:none;justify-content:flex-start;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}.topbar-subrow::-webkit-scrollbar{display:none}.topbar-subrow .seg{margin:0 auto}.seg button{padding:6px 11px;font-size:12.5px;gap:5px}.seg button .dot{width:8px;height:8px}.nav.desktop-only{display:none}.botnav{display:flex;position:fixed;bottom:0;left:0;right:0;z-index:50;background:#fffdf7f5;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transform:translateZ(0);border-top:1px solid var(--line);padding:7px max(8px,env(safe-area-inset-right)) calc(7px + env(safe-area-inset-bottom)) max(8px,env(safe-area-inset-left));justify-content:space-around}.botnav button,.botnav a{display:flex;flex-direction:column;align-items:center;gap:3px;font-size:10.5px;font-weight:600;color:var(--ink-3);padding:4px 6px;border-radius:10px;flex:1;min-width:0;white-space:nowrap}.botnav button>:last-child,.botnav a>:last-child{font-size:clamp(9.5px,2.6vw,10.5px);max-width:100%;overflow:hidden;text-overflow:ellipsis}.botnav button.on,.botnav a.on{color:var(--gold-strong)}.botnav button.on svg,.botnav a.on svg{stroke:var(--gold-strong)}.section-title{font-size:18px}.kpi .kpi-val{font-size:26px}.quick-spend-fab{display:flex;align-items:center;justify-content:center;position:fixed;bottom:calc(68px + env(safe-area-inset-bottom));right:18px;z-index:60;width:52px;height:52px;border-radius:50%;background:linear-gradient(135deg,var(--gold) 0%,var(--gold-strong) 100%);color:#fff;border:none;box-shadow:0 6px 20px #a8854b6b;cursor:pointer;font-size:28px;font-weight:400;line-height:1;transform:translateZ(0);transition:transform .15s ease,box-shadow .15s ease}.quick-spend-fab:active{transform:scale(.92) translateZ(0);box-shadow:0 2px 8px #a8854b59}}.quick-spend-fab{display:none}.auth-shell{min-height:100vh;display:grid;place-items:center;padding:20px;background:radial-gradient(1200px 600px at 80% -10%,var(--gold-tint),transparent 60%),radial-gradient(900px 500px at -10% 110%,var(--sage-tint),transparent 60%),var(--paper)}.auth-card{width:100%;max-width:420px;background:var(--card);border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow-lg);padding:28px}.auth-card .brand{justify-content:center;margin-bottom:14px}.auth-title{font-family:var(--font-display);font-size:26px;font-weight:600;margin:0 0 4px;text-align:center}.auth-sub{color:var(--ink-3);font-size:13.5px;text-align:center;margin:0 0 22px}.btn-google{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;padding:11px 16px;margin-bottom:18px;background:#fff;color:#1f1f1f;border:1px solid #dadce0;border-radius:10px;font-size:14.5px;font-weight:500;font-family:Roboto,-apple-system,BlinkMacSystemFont,sans-serif;cursor:pointer;transition:background .12s ease,box-shadow .12s ease}.btn-google:hover:not(:disabled){background:#f8f9fa;box-shadow:0 1px 2px #3c40431a,0 1px 3px 1px #3c40430f}.btn-google:disabled{opacity:.5;cursor:not-allowed}.btn-google svg{flex-shrink:0}.auth-divider{display:flex;align-items:center;gap:12px;margin:0 0 18px;color:var(--ink-3);font-size:11.5px;text-transform:uppercase;letter-spacing:.08em;font-weight:600}.auth-divider:before,.auth-divider:after{content:"";flex:1;height:1px;background:var(--line)}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}.field label{font-size:12px;font-weight:700;letter-spacing:.04em;color:var(--ink-2);text-transform:uppercase}.field input,.field select,.field textarea{border:1px solid var(--line);background:var(--card-2);border-radius:10px;padding:11px 13px;font-size:14.5px;transition:border-color .15s,background-color .15s,box-shadow .15s}.field select{color:var(--ink);background-color:var(--card-2)}.field input:focus-visible,.field select:focus-visible,.field textarea:focus-visible{outline:2px solid transparent;border-color:var(--gold-soft);background:#fff;box-shadow:0 0 0 3px var(--gold-tint)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:11px 16px;border-radius:10px;font-size:14px;font-weight:600;border:1px solid var(--line);background:var(--card);color:var(--ink);transition:background-color .15s,border-color .15s,color .15s,box-shadow .15s,filter .15s}.btn:hover{border-color:var(--line-strong);box-shadow:var(--shadow)}.btn.primary{background:var(--gold-strong);color:#fff;border-color:var(--gold-strong)}.btn.primary:hover{background:var(--gold-strong-hover);border-color:var(--gold-strong-hover)}.btn.ghost{background:transparent;border-color:transparent;color:var(--ink-2)}.btn.ghost:hover{background:var(--paper-2);color:var(--ink);box-shadow:none}.btn.block{width:100%}.btn.danger{color:var(--terra-text);border-color:var(--line)}.btn.destructive{background:var(--terra-text);color:#fff;border-color:var(--terra-text)}.btn.destructive:hover{filter:brightness(.94);border-color:var(--terra-text)}.btn:disabled{opacity:.55;cursor:not-allowed;box-shadow:none}.alert{padding:10px 13px;border-radius:10px;font-size:13px;margin-bottom:12px}.alert.error{background:var(--terra-tint);color:var(--terra-text)}.alert.success{background:var(--sage-tint);color:var(--sage-text)}.alert.info{background:var(--gold-tint);color:var(--gold-strong)}.link-btn{background:none;border:none;color:var(--gold-strong);font-weight:600;cursor:pointer;padding:0;font-size:13px}.link-btn:hover{text-decoration:underline}.cookie-shell{position:fixed;left:0;right:0;bottom:0;z-index:1000;display:flex;justify-content:center;padding:14px 14px calc(14px + env(safe-area-inset-bottom));pointer-events:none}.cookie-card{pointer-events:auto;max-width:640px;width:100%;background:var(--card);border:1px solid var(--line);border-radius:14px;box-shadow:0 10px 30px #2c28232e,0 2px 6px #2c282314;padding:18px 20px;animation:cookieRise .3s ease}@keyframes cookieRise{0%{transform:translateY(20px);opacity:0}to{transform:none;opacity:1}}.cookie-title{margin:0 0 6px;font-family:var(--font-display);font-size:17px;font-weight:600}.cookie-text{margin:0 0 14px;font-size:13.5px;line-height:1.55;color:var(--ink-2)}.cookie-text a{color:var(--gold-strong);text-decoration:underline}.cookie-foot{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.cookie-row{display:flex;align-items:flex-start;gap:12px;padding:12px 0;border-top:1px solid var(--line)}.cookie-row:first-of-type{border-top:1px solid var(--line);margin-top:8px}.cookie-row>div:first-child{flex:1;min-width:0}.cookie-row-title{font-size:14px;font-weight:600;color:var(--ink)}.cookie-row-sub{font-size:12.5px;color:var(--ink-3);margin-top:3px;line-height:1.5}.cookie-toggle{flex:none;position:relative;width:42px;height:24px;border-radius:999px;background:var(--line-strong);border:none;padding:0;cursor:pointer;transition:background-color .2s,box-shadow .2s}.cookie-toggle:not(.locked):hover{box-shadow:0 0 0 3px var(--gold-tint)}.cookie-toggle.on{background:var(--sage)}.cookie-toggle.locked{background:var(--gold-soft);cursor:not-allowed}.cookie-toggle.locked .cookie-toggle-knob{transform:translate(18px)}.cookie-toggle-knob{position:absolute;top:2px;left:2px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #0003;transition:transform .2s}.cookie-toggle.on .cookie-toggle-knob{transform:translate(18px)}@media (max-width: 540px){.cookie-shell{padding:10px 10px calc(10px + env(safe-area-inset-bottom))}.cookie-card{padding:16px;border-radius:12px}.cookie-foot .btn{flex:1 1 calc(50% - 4px);min-width:0}}.loading-shell{min-height:100vh;display:grid;place-items:center;background:var(--paper)}.spinner{width:32px;height:32px;border:3px solid var(--line);border-top-color:var(--gold);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.member-row{display:flex;align-items:center;gap:12px;padding:12px 14px;border-bottom:1px solid var(--line)}.member-row:last-child{border-bottom:none}.avatar{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;font-weight:700;color:#fff;font-size:14px;flex:none}.swatch{width:24px;height:24px;border-radius:6px;border:1px solid var(--line);cursor:pointer;transition:transform .15s,box-shadow .15s}.swatch:not(.on):hover{transform:scale(1.1);box-shadow:0 0 0 2px var(--card),0 0 0 3px var(--line-strong)}.swatch.on{box-shadow:0 0 0 2px var(--card),0 0 0 4px var(--gold)}.modal-shell{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:#2c28236b;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:grid;place-items:center;padding:16px;overscroll-behavior:contain;animation:modalFade .2s ease}.modal-card{background:var(--card);border-radius:16px;box-shadow:var(--shadow-lg);width:100%;max-width:1080px;max-height:92vh;display:flex;flex-direction:column;overflow:hidden;border:1px solid var(--line);animation:fade .25s ease}.modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:18px 20px 12px;border-bottom:1px solid var(--line)}.modal-body{padding:16px 18px;overflow:auto;flex:1;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.modal-foot{display:flex;gap:8px;justify-content:flex-end;padding:12px 18px calc(12px + env(safe-area-inset-bottom));border-top:1px solid var(--line);background:var(--card-2)}@media (max-width: 780px){.modal-shell{padding:14px}.modal-card{max-width:100%;max-height:88vh;border-radius:16px}}.install-shell{position:fixed;left:0;right:0;bottom:calc(58px + env(safe-area-inset-bottom));z-index:1100;display:flex;justify-content:center;padding:0 12px 12px;pointer-events:none}.install-card{pointer-events:auto;position:relative;width:100%;max-width:480px;background:var(--card);border:1px solid var(--line);border-radius:18px;box-shadow:0 12px 36px #1f26452e,0 2px 8px #1f264514;padding:16px 18px 18px;overscroll-behavior:contain;animation:installRise .28s cubic-bezier(.2,.7,.2,1)}@keyframes installRise{0%{transform:translateY(24px);opacity:0}to{transform:none;opacity:1}}.install-close{position:absolute;top:10px;right:10px;width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;border-radius:8px;border:none;background:transparent;color:var(--ink-3);cursor:pointer}.install-close:hover{background:var(--paper-2);color:var(--ink)}.install-head{display:flex;align-items:center;gap:12px;padding-right:28px;margin-bottom:12px}.install-icon{flex:none;width:52px;height:52px;display:inline-flex;align-items:center;justify-content:center;background:var(--paper);border:1px solid var(--line);border-radius:14px}.install-head-text{min-width:0}.install-title{font-family:var(--font-display);font-size:16px;font-weight:600;color:var(--ink);line-height:1.25}.install-sub{margin-top:3px;font-size:13px;color:var(--ink-2);line-height:1.45}.install-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:4px}.install-actions .btn{min-width:96px}.install-actions .btn.block{min-width:0}.install-steps{list-style:none;padding:0;margin:0 0 12px;display:flex;flex-direction:column;gap:10px}.install-steps li{display:flex;align-items:center;gap:10px;font-size:13.5px;color:var(--ink);line-height:1.4}.install-step-num{flex:none;width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;background:var(--gold-tint);color:var(--gold-strong);border-radius:50%;font-size:12px;font-weight:700}.install-step-text{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap}.install-step-text svg{vertical-align:middle}@media (max-width: 380px){.install-card{padding:14px 14px 16px}.install-title{font-size:15px}.install-sub{font-size:12.5px}}.install-section-head{display:flex;align-items:center;gap:12px;margin-bottom:4px}.install-section-icon{flex:none;width:44px;height:44px;display:inline-flex;align-items:center;justify-content:center;background:var(--paper);border:1px solid var(--line);border-radius:12px}.install-section-sub{margin:0;font-size:13px;color:var(--ink-2);line-height:1.5}.install-section-body{margin-top:14px;display:flex;flex-direction:column;gap:10px}.install-section-hint{margin:0;font-size:12.5px;color:var(--ink-3);line-height:1.5}.install-status{display:inline-flex;align-items:center;gap:8px;font-size:13.5px;font-weight:600;padding:10px 12px;border-radius:10px}.install-status.ok{background:var(--sage-tint);color:var(--sage-text)}.auth-card.wizard{max-width:560px;min-width:0}.wiz-meta{display:flex;justify-content:space-between;gap:10px;font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-3);margin-bottom:7px}.wizard-progress{height:4px;border-radius:999px;background:var(--paper-2);overflow:hidden;margin-bottom:18px}.wizard-progress i{display:block;height:100%;width:100%;background:var(--gold);border-radius:999px;transform-origin:left;transition:transform .3s ease}.wiz-note{background:var(--card-2);border:1px solid var(--line);border-radius:12px;padding:12px 14px;font-size:13px;color:var(--ink-2);margin-top:4px}.mode-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:16px}.mode-grid button{display:flex;flex-direction:column;gap:3px;align-items:flex-start;text-align:left;padding:13px 14px;border:1px solid var(--line);border-radius:12px;background:var(--card-2);transition:background-color .15s,border-color .15s,box-shadow .15s}.mode-grid button:not(.on):hover{border-color:var(--gold-soft);background:var(--card)}.mode-grid button strong{font-size:14.5px}.mode-grid button span{font-size:12px;color:var(--ink-3)}.mode-grid button.on{border-color:var(--gold);background:var(--gold-tint);box-shadow:0 0 0 1px var(--gold)}.income-card{border:1px solid var(--line);border-radius:12px;padding:12px;margin-bottom:12px;background:var(--card-2)}.income-row{display:flex;gap:8px;align-items:center;margin-bottom:8px}.income-row input{border:1px solid var(--line);background:var(--card);border-radius:10px;padding:10px 12px;font-size:14.5px;min-width:0}.income-row input:focus-visible{outline:2px solid transparent;border-color:var(--gold-soft);box-shadow:0 0 0 3px var(--gold-tint)}.income-row>input:first-child{flex:1;width:0}.amount-wrap{position:relative;flex-shrink:0;width:108px}.amount-wrap input{width:100%;padding-right:26px;text-align:right;font-variant-numeric:tabular-nums}.amount-wrap span{position:absolute;right:10px;top:50%;transform:translateY(-50%);color:var(--ink-3);font-size:13px;pointer-events:none}.row-del{width:28px;height:28px;flex-shrink:0;border-radius:50%;border:1px solid var(--line);background:var(--card);color:var(--ink-3);font-size:15px;line-height:1}.row-del:hover{color:var(--terra);border-color:var(--terra)}.sugg-row{display:flex;flex-wrap:wrap;gap:6px;margin-top:2px}.sugg-chip{font-size:12px;font-weight:600;padding:5px 10px;border-radius:999px;border:1px dashed var(--line-strong);background:transparent;color:var(--ink-2)}.sugg-chip:hover{border-color:var(--gold);color:var(--gold-strong)}.cat-list{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}.cat-card{display:flex;align-items:flex-start;gap:10px;width:100%;text-align:left;padding:11px 12px;border:1px solid var(--line);border-radius:12px;background:var(--card-2);transition:background-color .15s,border-color .15s}.cat-card:not(.on):hover{border-color:var(--gold-soft);background:var(--card)}.cat-card.on{border-color:var(--gold);background:var(--gold-tint)}.cat-check{width:20px;height:20px;flex-shrink:0;margin-top:1px;border-radius:6px;border:1.5px solid var(--line-strong);display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:800;color:#fff;background:var(--card)}.cat-card.on .cat-check{background:var(--gold);border-color:var(--gold)}.cat-body{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.cat-name{font-size:14px;font-weight:600}.cat-name em{font-style:normal;font-weight:500;font-size:12px;color:var(--ink-3)}.cat-items{font-size:12px;color:var(--ink-3);line-height:1.4}.cat-card .row-del{align-self:center}.custom-cat-row{display:flex;gap:8px}.custom-cat-row input{flex:1;width:0;min-width:0;border:1px solid var(--line);background:var(--card-2);border-radius:10px;padding:10px 12px;font-size:14.5px}.custom-cat-row input:focus-visible{outline:2px solid transparent;border-color:var(--gold-soft);background:#fff;box-shadow:0 0 0 3px var(--gold-tint)}.wiz-footer{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:20px}.wiz-footer .btn.primary{flex:1;max-width:260px}.setup-checklist{border-color:var(--gold-soft)}.checklist-title{font-family:var(--font-display);font-size:17px;font-weight:600}.checklist-dismiss{width:30px;height:30px;border-radius:50%;border:none;background:transparent;color:var(--ink-3);font-size:18px;line-height:1;flex-shrink:0}.checklist-dismiss:hover{background:var(--paper-2);color:var(--ink)}.checklist-rows{display:flex;flex-direction:column;gap:6px}.checklist-row{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:10px;border:1px solid transparent;width:100%;text-align:left;background:transparent}.checklist-row.go{border-color:var(--line);background:var(--card-2);cursor:pointer;transition:background-color .15s,border-color .15s}.checklist-row.go:hover{border-color:var(--gold);background:var(--card)}.checklist-mark{width:22px;height:22px;flex-shrink:0;border-radius:50%;border:1.5px solid var(--line-strong);display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:800;color:#fff}.checklist-row.done .checklist-mark{background:var(--sage);border-color:var(--sage)}.checklist-body{display:flex;flex-direction:column;gap:1px;min-width:0;flex:1}.checklist-label{font-size:13.5px;font-weight:600}.checklist-row.done .checklist-label{color:var(--ink-3);text-decoration:line-through}.checklist-hint{font-size:12px;color:var(--ink-3)}.checklist-arrow{color:var(--gold);font-weight:700;flex-shrink:0}@media (max-width: 640px){.auth-card.wizard{padding:22px 16px}.wizard .field input,.wizard .field select,.income-row input,.custom-cat-row input{font-size:16px}.wiz-footer .btn.primary{max-width:none}}.toast-host{position:fixed;left:0;right:0;bottom:16px;z-index:1200;display:flex;flex-direction:column;align-items:center;gap:8px;padding:0 12px;pointer-events:none}.toast{pointer-events:auto;display:flex;align-items:center;gap:10px;width:100%;max-width:480px;padding:10px 10px 10px 14px;border-radius:12px;background:#2a241c;color:#f6f0e2;font-size:13.5px;line-height:1.4;box-shadow:0 10px 30px #2c282340;animation:toastRise .25s ease}.toast.error{background:var(--terra-text);color:#fff}.toast.success{background:var(--sage-text);color:#fff}.toast-text{flex:1;min-width:0}.toast-action{font-weight:700;color:inherit;text-decoration:underline;padding:4px 6px;border-radius:6px;white-space:nowrap;transition:background-color .15s}.toast-action:hover{background:#ffffff24}.toast-close{color:inherit;opacity:.7;font-size:18px;line-height:1;padding:2px 7px;border-radius:6px}.toast-close:hover{opacity:1;background:#ffffff1f}@keyframes toastRise{0%{transform:translateY(12px);opacity:0}to{transform:none;opacity:1}}@media (max-width: 780px){.toast-host{bottom:calc(66px + env(safe-area-inset-bottom))}}.sync-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--gold);margin-left:8px;vertical-align:middle;animation:syncPulse 1s ease-in-out infinite}@keyframes syncPulse{0%,to{opacity:.35;transform:scale(.85)}50%{opacity:1;transform:scale(1)}}.schema-banner{max-width:1200px;margin:12px auto 0;padding:10px 14px;border-radius:10px;background:var(--terra-tint);color:var(--terra-text);font-size:13px;line-height:1.5}.schema-banner code{font-family:var(--font-num);font-size:12px}@media (max-width: 780px){.schema-banner{margin:12px 14px 0}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.fade-in,.modal-shell,.modal-card,.cookie-card,.install-card,.toast{animation:none}.sync-dot{animation:none;opacity:1}.touch-toggle .toggle-knob,.bar-fill,.wizard-progress i{transition:none}.hover-lift:hover,.hover-lift:focus-visible{transform:none}.pay-dot:hover,.status-dot:hover,.swatch:hover,.gift-toggle:active{transform:none!important}.spinner{animation-duration:1.6s!important;animation-iteration-count:infinite!important}}main:focus,h1[tabindex="-1"]:focus{outline:none}.botnav a{text-decoration:none}.icon-grid button:focus-visible{outline-offset:-2px}.check-row{display:flex;align-items:flex-start;gap:10px;padding:9px 0;cursor:pointer;font-size:14px;line-height:1.35}.check-row input[type=checkbox]{width:18px;height:18px;margin:1px 0 0;flex:none;accent-color:var(--gold-strong)}.check-row small{display:block;margin-top:2px;font-size:12.5px;color:var(--ink-3);line-height:1.4}
