:root{--color-paper:oklch(98.2% .006 350);--color-paper-raised:oklch(99.6% .003 350);--color-paper-soft:oklch(96.5% .008 350);--color-paper-strong:oklch(92.8% .009 350);--color-ink:oklch(20% .012 350);--color-ink-soft:oklch(38% .018 350);--color-muted:oklch(47% .02 350);--color-rule:oklch(89% .012 350);--color-rule-strong:oklch(77% .025 350);--color-accent:oklch(83% .105 350);--color-accent-strong:oklch(42% .115 350);--color-accent-soft:oklch(94% .035 350);--color-accent-ink:oklch(24% .06 350);--color-focus:oklch(45% .14 350);--color-success:oklch(55% .16 147);--color-success-soft:oklch(94% .035 147);--color-danger:oklch(51% .19 26);--color-danger-soft:oklch(95% .03 26);--color-warning:oklch(61% .14 76);--color-scrim:oklch(20% .012 350/.44);--color-shadow:oklch(30% .02 350/.08);--color-shadow-accent:oklch(62% .12 350/.24);--color-card-visa-start:oklch(24% .018 250);--color-card-visa-end:oklch(15% .012 250);--color-card-master-start:oklch(48% .16 150);--color-card-master-end:oklch(52% .12 190);--color-card-ink:oklch(99% .004 150);--color-card-track:oklch(100% 0 0/.38);--font-display:"Plus Jakarta Sans", "Avenir Next", sans-serif;--font-body:"Plus Jakarta Sans", "Avenir Next", sans-serif;--space-3xs:.25rem;--space-2xs:.5rem;--space-xs:.75rem;--space-sm:1rem;--space-md:1.5rem;--space-lg:2rem;--space-xl:3rem;--space-2xl:4rem;--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-md:1.25rem;--text-lg:1.5rem;--text-xl:2rem;--text-display:clamp(2rem, 7vw, 3.5rem);--radius-sm:.5rem;--radius-md:.75rem;--radius-lg:1rem;--radius-xl:1.5rem;--radius-pill:999px;--rule-thin:1px;--shadow-card:0 .5rem 1.75rem var(--color-shadow);--shadow-float:0 .75rem 2.25rem var(--color-shadow-accent);--ease-out:cubic-bezier(.16, 1, .3, 1);--ease-in:cubic-bezier(.7, 0, .84, 0);--ease-in-out:cubic-bezier(.65, 0, .35, 1);--dur-micro:.12s;--dur-short:.22s;--dur-long:.42s;--z-base:1;--z-raised:10;--z-sticky:200;--z-modal:400;--z-toast:500}*,:before,:after{box-sizing:border-box}html,body{min-width:20rem;overflow-x:clip}html{background:var(--color-paper-soft);color:var(--color-ink);font-family:var(--font-body);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased}body{background:var(--color-paper);min-height:100dvh;margin:0}button,input,select,textarea{font:inherit}button,a,select,input,textarea{-webkit-tap-highlight-color:transparent}button{color:inherit}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}button:disabled,input:disabled,select:disabled,textarea:disabled,[aria-disabled=true]{cursor:not-allowed;opacity:.52}.app-shell{min-height:100dvh;padding-block-end:calc(7.25rem + env(safe-area-inset-bottom))}.topbar{z-index:var(--z-sticky);align-items:center;gap:var(--space-xs);min-height:5rem;padding:calc(var(--space-xs) + env(safe-area-inset-top)) max(var(--space-sm), env(safe-area-inset-right)) var(--space-xs) max(var(--space-sm), env(safe-area-inset-left));background:var(--color-paper-raised);color:var(--color-ink);border-block-end:var(--rule-thin) solid var(--color-rule);display:flex;position:sticky;inset-block-start:0}.brand-mark{border-radius:var(--radius-pill);background:var(--color-accent-soft);width:3rem;height:3rem;color:var(--color-accent-strong);flex:0 0 3rem;place-items:center;display:grid}.brand-mark svg,.icon-button svg,.nav-item svg,.fab svg,.empty-state svg,.search-field svg,.month-switcher svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8px;width:1.45rem;height:1.45rem}.brand-copy{flex:1;min-width:0}.brand-title{font-family:var(--font-display);font-size:var(--text-md);letter-spacing:-.025em;text-overflow:ellipsis;white-space:nowrap;margin:0;font-weight:600;overflow:hidden}.brand-subtitle{margin:var(--space-3xs) 0 0;color:var(--color-muted);font-size:var(--text-xs)}.icon-button{border-radius:var(--radius-pill);width:2.75rem;height:2.75rem;color:var(--color-accent-strong);cursor:pointer;transition:background-color var(--dur-micro) var(--ease-out), transform var(--dur-micro) var(--ease-out);background:0 0;border:0;flex:0 0 2.75rem;place-items:center;padding:0;display:grid}.icon-button:active,.month-button:active,.nav-item:active,.fab:active,.button:active{transform:translateY(1px)}.page-wrap{width:min(100%,60rem);padding:var(--space-lg) max(var(--space-sm), env(safe-area-inset-left));margin-inline:auto}.page{display:none}.page.is-active{display:block}.page-heading{justify-content:space-between;align-items:end;gap:var(--space-sm);min-width:0;margin-block-end:var(--space-lg);display:flex}.page-title{min-width:0;font-family:var(--font-display);font-size:var(--text-display);letter-spacing:-.045em;overflow-wrap:anywhere;margin:0;font-style:normal;font-weight:700;line-height:1.12}.page-note{margin:var(--space-2xs) 0 0;color:var(--color-muted);font-size:var(--text-sm)}.api-warning{max-width:38rem;margin:var(--space-xs) 0 0;padding:var(--space-xs) var(--space-sm);border:var(--rule-thin) solid color-mix(in srgb, var(--color-danger) 45%, var(--color-rule));border-radius:var(--radius-sm);background:color-mix(in srgb, var(--color-danger) 9%, var(--color-paper-raised));color:var(--color-ink);font-size:var(--text-xs);line-height:1.45}.month-switcher{align-items:center;gap:var(--space-3xs);padding:var(--space-3xs);border:var(--rule-thin) solid var(--color-rule);border-radius:var(--radius-pill);background:var(--color-paper-raised);flex:none;display:flex}.month-button{border-radius:var(--radius-pill);cursor:pointer;background:0 0;border:0;place-items:center;width:2.75rem;height:2.75rem;padding:0;display:grid}.month-label{min-width:4.75rem;font-size:var(--text-sm);font-variant-numeric:tabular-nums;text-align:center;white-space:nowrap;font-weight:600}.card-cycle-picker{justify-content:space-between;align-items:center;gap:var(--space-xs);margin-block:calc(-1 * var(--space-xs)) var(--space-lg);display:flex}.card-cycle-picker__label{color:var(--color-ink-soft);font-size:var(--text-sm);white-space:nowrap;margin:0;font-weight:600}.cycle-selector{gap:var(--space-3xs);padding:var(--space-3xs);border:var(--rule-thin) solid var(--color-rule);border-radius:var(--radius-pill);background:var(--color-paper-strong);grid-template-columns:repeat(2,minmax(0,1fr));display:inline-grid}.cycle-option{min-width:6.75rem;min-height:2.75rem;padding-inline:var(--space-xs);border:var(--rule-thin) solid transparent;border-radius:var(--radius-pill);color:var(--color-ink-soft);cursor:pointer;font-size:var(--text-sm);white-space:nowrap;transition:background-color var(--dur-short) var(--ease-out), color var(--dur-short) var(--ease-out), transform var(--dur-micro) var(--ease-out);background:0 0;font-weight:700}.cycle-option.is-selected,.cycle-option[data-state=success]{background:var(--color-paper-raised);color:var(--color-accent-ink);box-shadow:var(--shadow-card)}.cycle-option:focus-visible,.cycle-option.is-focus{outline:2px solid var(--color-focus);outline-offset:2px}.cycle-option:active,.cycle-option.is-active{transform:translateY(1px)}.cycle-option[data-state=loading]{color:var(--color-muted);cursor:wait}.cycle-option[data-state=error]{border-color:var(--color-danger);background:var(--color-danger-soft);color:var(--color-danger)}.summary-grid{gap:var(--space-xs);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.surface{border:var(--rule-thin) solid var(--color-rule);border-radius:var(--radius-xl);background:var(--color-paper-raised);color:var(--color-ink);box-shadow:var(--shadow-card)}.metric-card{min-height:8.5rem;padding:var(--space-md) var(--space-sm);text-align:center;align-content:center;display:grid}.metric-card--wide{min-height:10rem;grid-column:1/-1;margin-block-start:var(--space-xs)}.metric-label{margin:0 0 var(--space-2xs);color:var(--color-ink-soft);font-size:var(--text-sm)}.metric-value{font-variant-numeric:tabular-nums;letter-spacing:-.035em;white-space:nowrap;margin:0;font-size:clamp(1.05rem,5vw,1.5rem);font-weight:700}.metric-card--wide .metric-value{font-size:clamp(1.9rem,9vw,3.25rem)}.debt-summary-grid{gap:var(--space-xs);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.debt-metric{min-width:0;padding:var(--space-md);border-block-start:.3rem solid var(--color-danger)}.debt-metric--receivable{border-block-start-color:var(--color-success)}.debt-metric__value{margin:var(--space-2xs) 0 0;color:var(--color-ink);font-variant-numeric:tabular-nums;letter-spacing:-.035em;text-overflow:ellipsis;white-space:nowrap;font-size:clamp(1.05rem,4.8vw,1.7rem);font-weight:700;overflow:hidden}.debt-metric__note{margin:var(--space-2xs) 0 0;color:var(--color-muted);font-size:var(--text-sm)}.debt-list{gap:var(--space-sm);display:grid}.debt-card{gap:var(--space-sm);width:100%;min-width:0;padding:var(--space-md);border:var(--rule-thin) solid var(--color-rule);border-radius:var(--radius-xl);background:var(--color-paper-raised);color:var(--color-ink);box-shadow:var(--shadow-card);cursor:pointer;text-align:start;transition:background-color var(--dur-micro) var(--ease-out), transform var(--dur-micro) var(--ease-out);display:grid}.debt-card__head,.debt-card__identity,.debt-card__balance,.debt-card__footer{align-items:center;min-width:0;display:flex}.debt-card__head,.debt-card__balance,.debt-card__footer{justify-content:space-between;gap:var(--space-xs)}.debt-card__identity{gap:var(--space-xs)}.debt-card__identity>span:last-child{min-width:0}.debt-card__avatar{border-radius:var(--radius-pill);background:var(--color-danger-soft);width:2.75rem;height:2.75rem;color:var(--color-danger);font-size:var(--text-md);flex:0 0 2.75rem;place-items:center;font-weight:700;display:grid}.debt-card--receivable .debt-card__avatar{background:var(--color-success-soft);color:var(--color-success)}.debt-card__name,.debt-card__type{display:block}.debt-card__name{font-size:var(--text-md);text-overflow:ellipsis;white-space:nowrap;font-weight:700;overflow:hidden}.debt-card__type{color:var(--color-muted);font-size:var(--text-sm);margin-block-start:var(--space-3xs)}.debt-status,.debt-detail__type{min-height:1.75rem;padding-inline:var(--space-2xs);border-radius:var(--radius-pill);background:var(--color-accent-soft);color:var(--color-accent-strong);font-size:var(--text-xs);white-space:nowrap;flex:none;align-items:center;font-weight:700;display:inline-flex}.debt-status.is-settled{background:var(--color-success-soft);color:var(--color-success)}.debt-card__label{color:var(--color-muted);font-size:var(--text-sm)}.debt-card__amount{font-variant-numeric:tabular-nums;letter-spacing:-.04em;white-space:nowrap;font-size:clamp(1.25rem,6vw,2rem);font-weight:700}.debt-progress{border-radius:var(--radius-pill);background:var(--color-paper-strong);width:100%;height:.65rem;display:block;overflow:clip}.debt-progress__fill{border-radius:inherit;background:var(--color-accent-strong);width:100%;height:100%;transform:scaleX(var(--progress,0));transform-origin:0;transition:transform var(--dur-long) var(--ease-out);display:block}.debt-card--receivable .debt-progress__fill,.debt-card.is-settled .debt-progress__fill{background:var(--color-success)}.debt-card__footer{color:var(--color-muted);font-size:var(--text-sm);font-variant-numeric:tabular-nums}.debt-card__footer span{white-space:nowrap}.debt-card.is-settled{opacity:.72}.is-positive{color:var(--color-success)}.is-negative{color:var(--color-danger)}.section{margin-block-start:var(--space-xl)}.section-head{justify-content:space-between;align-items:center;gap:var(--space-sm);margin-block-end:var(--space-sm);display:flex}.section-title{min-width:0;font-family:var(--font-display);font-size:var(--text-lg);letter-spacing:-.035em;overflow-wrap:anywhere;margin:0;font-style:normal;font-weight:700}.text-link{min-height:2.75rem;padding:var(--space-xs);border-radius:var(--radius-pill);color:var(--color-accent-strong);cursor:pointer;font-size:var(--text-sm);white-space:nowrap;background:0 0;border:0;font-weight:600}.transaction-list{gap:var(--space-xs);display:grid}.transaction-row{gap:var(--space-xs);width:100%;min-width:0;min-height:5.25rem;padding:var(--space-sm);border:var(--rule-thin) solid var(--color-rule);border-radius:var(--radius-lg);background:var(--color-paper-raised);color:var(--color-ink);box-shadow:var(--shadow-card);text-align:start;grid-template-columns:3rem minmax(0,1fr) auto;align-items:center;display:grid}button.transaction-row{cursor:pointer}.category-icon{border-radius:var(--radius-pill);background:var(--color-paper-strong);width:3rem;height:3rem;font-size:var(--text-lg);place-items:center;display:grid}.transaction-copy{min-width:0}.transaction-name{font-size:var(--text-base);text-overflow:ellipsis;white-space:nowrap;margin:0;font-weight:600;display:block;overflow:hidden}.transaction-meta{margin:var(--space-3xs) 0 0;color:var(--color-muted);font-size:var(--text-xs);text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.transaction-amount{font-size:var(--text-sm);font-variant-numeric:tabular-nums;white-space:nowrap;font-weight:700}.status-chip{min-height:1.5rem;padding-inline:var(--space-2xs);border-radius:var(--radius-pill);background:var(--color-warning);color:var(--color-ink);font-size:var(--text-xs);vertical-align:middle;align-items:center;margin-inline-start:var(--space-3xs);font-weight:700;display:inline-flex}.card-stack{gap:var(--space-lg);display:grid}.credit-card{min-height:20rem;color:var(--color-card-ink);box-shadow:0 1rem 2.25rem var(--color-shadow);border-radius:clamp(1.5rem,6vw,2.25rem);align-content:space-between;padding:clamp(1.5rem,6vw,2.25rem);display:grid;position:relative;overflow:clip}.credit-card--visa{background:linear-gradient(135deg, var(--color-card-visa-start), var(--color-card-visa-end))}.credit-card--mastercard{background:linear-gradient(135deg, var(--color-card-master-start), var(--color-card-master-end))}.credit-card__brand-row{justify-content:space-between;align-items:start;gap:var(--space-sm);display:flex}.credit-card__bank,.credit-card__name,.credit-card__number,.credit-card__label,.credit-card__value,.credit-card__usage{text-shadow:0 1px 2px var(--color-shadow);margin:0}.credit-card__bank{font-size:var(--text-lg);font-weight:700}.credit-card__network{font-size:var(--text-lg);font-weight:800}.credit-card__name{font-size:var(--text-md);margin-block-start:var(--space-3xs);font-weight:700}.credit-card__number{font-size:var(--text-md);font-variant-numeric:tabular-nums;letter-spacing:.08em;margin-block-start:var(--space-sm)}.credit-card__numbers{gap:var(--space-md);display:grid}.credit-card__label{font-size:var(--text-sm);opacity:.9}.credit-card__value{font-variant-numeric:tabular-nums;letter-spacing:-.04em;margin-block-start:var(--space-3xs);font-size:clamp(1.75rem,8vw,3rem);font-weight:700}.credit-card__available{font-size:var(--text-xl)}.progress{height:.65rem;border-radius:var(--radius-pill);background:var(--color-card-track);margin-block-start:var(--space-sm);overflow:clip}.progress__fill{border-radius:inherit;height:100%;transform:scaleX(var(--progress,0));transform-origin:0;background:currentColor}.credit-card__usage{font-size:var(--text-sm);font-variant-numeric:tabular-nums;margin-block-start:var(--space-2xs)}.budget-list{gap:var(--space-sm);display:grid}.budget-row{gap:var(--space-sm);padding:var(--space-md);grid-template-columns:3rem minmax(0,1fr);align-items:center;display:grid}.budget-copy{min-width:0}.budget-mainline{justify-content:space-between;align-items:baseline;gap:var(--space-xs);display:flex}.budget-name{min-width:0;font-size:var(--text-md);text-overflow:ellipsis;white-space:nowrap;margin:0;font-weight:700;overflow:hidden}.budget-numbers{font-size:var(--text-sm);font-variant-numeric:tabular-nums;white-space:nowrap;flex:none;font-weight:600}.budget-actual{margin:var(--space-3xs) 0 0;font-size:var(--text-sm);font-variant-numeric:tabular-nums;font-weight:700}.budget-progress{height:.5rem;border-radius:var(--radius-pill);background:var(--color-paper-strong);margin-block-start:var(--space-2xs);overflow:clip}.budget-progress__fill{border-radius:inherit;background:var(--color-success);height:100%;transform:scaleX(var(--progress,0));transform-origin:0}.budget-row.is-over .budget-progress__fill{background:var(--color-danger)}.toolbar{gap:var(--space-xs);grid-template-columns:minmax(0,1fr) auto;margin-block-end:var(--space-md);display:grid}.search-field{min-width:0;position:relative}.search-field svg{width:1.2rem;height:1.2rem;color:var(--color-muted);pointer-events:none;position:absolute;inset-block-start:50%;inset-inline-start:var(--space-sm);transform:translateY(-50%)}.field,.select{width:100%;min-height:3rem;padding:.75rem 2.75rem .75rem var(--space-sm);border:var(--rule-thin) solid var(--color-rule-strong);outline-offset:1px;border-radius:var(--radius-md);background:var(--color-paper-soft);color:var(--color-ink);outline:2px solid #0000;font-size:1rem}.field--textarea{min-height:6rem;padding-block:var(--space-sm);resize:vertical}.search-field .field{padding-inline-start:2.75rem}.select{padding-inline-end:var(--space-lg)}.field[aria-invalid=true],.select[aria-invalid=true]{border-color:var(--color-danger);background:var(--color-danger-soft);color:var(--color-ink)}.form-field{gap:var(--space-2xs);display:grid}.form-label{font-size:var(--text-sm);font-weight:700}.field-helper{min-height:1lh;color:var(--color-muted);font-size:var(--text-xs);margin:0}.field-helper.is-error{color:var(--color-danger)}.transaction-dialog{border-radius:var(--radius-xl) var(--radius-xl) 0 0;background:var(--color-paper-raised);width:min(100%,38rem);max-width:none;max-height:min(90dvh,52rem);color:var(--color-ink);box-shadow:0 -1rem 3rem var(--color-shadow);border:0;margin:auto;padding:0;position:fixed;inset:auto 0 0;overflow:auto}.transaction-dialog::backdrop{background:var(--color-scrim);-webkit-backdrop-filter:blur(.75rem);backdrop-filter:blur(.75rem)}.dialog-body{padding:var(--space-md) max(var(--space-sm), env(safe-area-inset-right)) calc(var(--space-md) + env(safe-area-inset-bottom)) max(var(--space-sm), env(safe-area-inset-left))}.dialog-grabber{width:3rem;height:.25rem;margin:0 auto var(--space-md);border-radius:var(--radius-pill);background:var(--color-rule-strong)}.dialog-head{justify-content:space-between;align-items:center;gap:var(--space-sm);margin-block-end:var(--space-md);display:flex}.dialog-title{font-family:var(--font-display);font-size:var(--text-lg);margin:0;font-style:normal;font-weight:700}.transaction-form{gap:var(--space-sm);display:grid}.transaction-form[hidden]{display:none}.debt-detail{gap:var(--space-md);display:grid}.budget-dialog__month{justify-content:space-between;align-items:center;gap:var(--space-xs);min-height:3.5rem;padding:var(--space-sm);border:var(--rule-thin) solid var(--color-rule);border-radius:var(--radius-md);background:var(--color-paper-soft);color:var(--color-ink-soft);font-size:var(--text-sm);display:flex}.budget-dialog__month strong{color:var(--color-ink);font-variant-numeric:tabular-nums;white-space:nowrap}.debt-detail[hidden]{display:none}.debt-detail__summary{padding:var(--space-md);border:var(--rule-thin) solid var(--color-rule);border-radius:var(--radius-lg);background:var(--color-paper-soft)}.debt-detail__remaining-label{margin:var(--space-md) 0 0;color:var(--color-muted);font-size:var(--text-sm)}.debt-detail__remaining{margin:var(--space-3xs) 0 var(--space-md);font-variant-numeric:tabular-nums;letter-spacing:-.045em;font-size:clamp(2rem,10vw,3.25rem);font-weight:700}.debt-detail__numbers{justify-content:space-between;gap:var(--space-xs);color:var(--color-muted);font-size:var(--text-sm);font-variant-numeric:tabular-nums;margin-block-start:var(--space-2xs);display:flex}.debt-detail__numbers span{white-space:nowrap}.debt-detail__numbers strong{color:var(--color-ink)}.debt-detail__meta,.debt-detail__notes{margin:var(--space-sm) 0 0;color:var(--color-ink-soft);font-size:var(--text-sm)}.debt-detail__notes{border-block-start:var(--rule-thin) solid var(--color-rule);overflow-wrap:anywhere;padding-block-start:var(--space-sm)}.debt-settled-message{justify-content:center;align-items:center;gap:var(--space-2xs);min-height:4rem;padding:var(--space-sm);border-radius:var(--radius-lg);background:var(--color-success-soft);color:var(--color-success);font-weight:700;display:flex}.debt-settled-message[hidden]{display:none}.debt-settled-message p{margin:0}.form-actions{gap:var(--space-xs);grid-template-columns:auto minmax(0,1fr);margin-block-start:var(--space-xs);display:grid}.form-actions--single{grid-template-columns:minmax(0,1fr)}.button{min-height:3rem;padding-inline:var(--space-md);border:var(--rule-thin) solid transparent;border-radius:var(--radius-md);cursor:pointer;white-space:nowrap;transition:background-color var(--dur-micro) var(--ease-out), transform var(--dur-micro) var(--ease-out);font-weight:700}.button--primary{background:var(--color-accent);color:var(--color-accent-ink)}.button--secondary{border-color:var(--color-rule);background:var(--color-paper-soft);color:var(--color-ink)}.button--danger{border-color:var(--color-danger);background:var(--color-danger-soft);color:var(--color-danger)}.button[data-state=loading]{cursor:wait}.button[data-state=success]{background:var(--color-success-soft);color:var(--color-success)}.button[data-state=error]{background:var(--color-danger-soft);color:var(--color-danger)}.bottom-nav{z-index:var(--z-sticky);inset-inline:max(var(--space-sm), env(safe-area-inset-left));width:min(100% - 2rem,38rem);min-height:4.75rem;padding:var(--space-2xs);border:var(--rule-thin) solid var(--color-rule);border-radius:var(--radius-xl);background:var(--color-paper-raised);color:var(--color-ink);box-shadow:0 .75rem 2.5rem var(--color-shadow);grid-template-columns:repeat(4,minmax(0,1fr));margin-inline:auto;display:grid;position:fixed;inset-block-end:max(var(--space-sm), env(safe-area-inset-bottom))}.nav-item{min-width:0;min-height:3.75rem;padding:var(--space-2xs) var(--space-3xs);justify-content:center;align-items:center;gap:var(--space-3xs);border-radius:var(--radius-xl);color:var(--color-ink-soft);cursor:pointer;white-space:nowrap;transition:background-color var(--dur-short) var(--ease-out), color var(--dur-short) var(--ease-out), transform var(--dur-micro) var(--ease-out);background:0 0;border:0;flex-direction:column;font-size:clamp(.68rem,2.7vw,.8rem);line-height:1;display:flex}.nav-item.is-active{background:var(--color-accent);color:var(--color-accent-ink);box-shadow:var(--shadow-float)}.fab{z-index:var(--z-raised);border-radius:var(--radius-lg);background:var(--color-accent);width:3.75rem;height:3.75rem;color:var(--color-accent-ink);box-shadow:var(--shadow-float);cursor:pointer;transition:background-color var(--dur-micro) var(--ease-out), transform var(--dur-micro) var(--ease-out);border:0;place-items:center;padding:0;display:grid;position:fixed;inset-block-end:calc(6.75rem + env(safe-area-inset-bottom));inset-inline-end:max(var(--space-md), env(safe-area-inset-right))}.fab svg{width:1.75rem;height:1.75rem}.toast-stack{z-index:var(--z-toast);inset-inline:var(--space-sm);gap:var(--space-2xs);pointer-events:none;display:grid;position:fixed;inset-block-start:calc(5.5rem + env(safe-area-inset-top))}.toast{width:min(100%,30rem);padding:var(--space-sm);border:var(--rule-thin) solid var(--color-rule);border-radius:var(--radius-md);background:var(--color-ink);color:var(--color-paper-raised);box-shadow:var(--shadow-card);font-size:var(--text-sm);margin-inline:auto}.empty-state,.error-state,.skeleton{padding:var(--space-xl) var(--space-md);text-align:center}.empty-state svg{width:2rem;height:2rem;color:var(--color-accent-strong);margin-block-end:var(--space-xs)}.empty-state h3,.error-state h3{font-size:var(--text-md);margin:0}.empty-state p,.error-state p{max-width:36ch;margin:var(--space-2xs) auto 0;color:var(--color-muted);font-size:var(--text-sm)}.skeleton-grid{gap:var(--space-xs);display:grid}.skeleton{border-radius:var(--radius-xl);background:var(--color-paper-strong);opacity:.68;min-height:7rem}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;padding:0;position:absolute;overflow:hidden}@media (hover:hover) and (pointer:fine){.cycle-option:hover,.cycle-option.is-hover{background:var(--color-paper-soft);color:var(--color-ink)}.cycle-option.is-selected:hover{background:var(--color-paper-raised);color:var(--color-accent-ink)}.icon-button:hover,.month-button:hover,.text-link:hover{background:var(--color-accent-soft)}.button:hover,.fab:hover,.transaction-row:hover,.debt-card:hover{transform:translateY(-1px)}.nav-item:hover{background:var(--color-paper-soft)}.nav-item.is-active:hover{background:var(--color-accent)}.field:hover,.select:hover{background:var(--color-paper-raised)}}@media (width>=40rem){body{background:var(--color-paper-soft)}.app-shell{background:var(--color-paper);width:min(100%,64rem);box-shadow:0 0 3rem var(--color-shadow);margin-inline:auto}.topbar,.page-wrap{padding-inline:var(--space-lg)}.summary-grid,.debt-summary-grid{gap:var(--space-md)}.metric-card{min-height:10rem;padding:var(--space-lg)}.metric-value{font-size:var(--text-xl)}.credit-card{min-height:23rem}.transaction-dialog{border-radius:var(--radius-xl);height:fit-content;max-height:min(86dvh,52rem);inset:0}.fab{inset-inline-end:max(calc((100% - 60rem) / 2 + var(--space-lg)), var(--space-lg))}}@media (width<=39.999rem){.page-heading{flex-direction:column;align-items:stretch}.page-title{font-size:clamp(2rem,8.5vw,2.5rem)}.month-switcher{align-self:flex-end}.card-cycle-picker{flex-direction:column;align-items:stretch}.cycle-selector{width:100%}.cycle-option{min-width:0}.section-head .text-link{margin-inline-end:3.75rem}}@media (width>=60rem){.card-stack{grid-template-columns:repeat(2,minmax(0,1fr))}.credit-card{min-height:21rem}.budget-list,.debt-list{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=23rem){.page-heading{flex-direction:column;align-items:start}.month-switcher{justify-content:space-between;align-self:stretch}.budget-row{gap:var(--space-xs);padding:var(--space-sm);grid-template-columns:2.75rem minmax(0,1fr)}.budget-mainline{align-items:start;gap:var(--space-3xs);flex-direction:column}.transaction-row{grid-template-columns:2.75rem minmax(0,1fr)}.transaction-amount{grid-column:2}.toolbar,.debt-summary-grid{grid-template-columns:minmax(0,1fr)}.debt-card__head{align-items:start}.debt-card__footer,.debt-detail__numbers{align-items:start;gap:var(--space-3xs);flex-direction:column}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.15s!important;animation-duration:.15s!important;animation-iteration-count:1!important}}
