*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}:before,:after{-webkit-tap-highlight-color:transparent}html,body{margin:0;padding:0}body{color:#000;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;background:#fff;font-family:Inter,system-ui,-apple-system,Helvetica Neue,Arial,sans-serif;font-size:16px;line-height:24px}#root{flex-direction:column;min-height:100svh;display:flex}h1,h2,h3,h4,p{margin:0}button,input,select{font-family:inherit}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--color-primary:#000;--color-on-primary:#fff;--color-ink:#000;--color-body:#5e5e5e;--color-mute:#afafaf;--color-hairline:#4b4b4b;--color-canvas:#fff;--color-canvas-soft:#efefef;--color-canvas-softer:#f3f3f3;--color-surface-pressed:#e2e2e2;--color-black-elevated:#282828;--color-positive:#2f9e44;--color-negative:#c0392b;--font-display:"Inter", system-ui, "Helvetica Neue", Arial, sans-serif;--font-body:"Inter", system-ui, "Helvetica Neue", Arial, sans-serif;--radius-md:8px;--radius-xl:16px;--radius-pill:999px;--radius-pill-tab:36px;--shadow-l1:#0000001f 0px 4px 16px 0px;--shadow-l2:#00000029 0px 4px 16px 0px;--shadow-l3:#00000029 0px 2px 8px 0px;--space-xxs:4px;--space-xs:6px;--space-sm:8px;--space-md:12px;--space-lg:16px;--space-xl:20px;--space-2xl:24px;--space-3xl:32px;--container:1200px;--ease-out:cubic-bezier(.2, .8, .2, 1);--duration:.32s}@keyframes fade-up{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes grow-bar{0%{transform:scaleX(0)}to{transform:scaleX(1)}}@keyframes slide-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}.view-enter{animation:fade-in .24s var(--ease-out) backwards}.stagger>*{animation:fade-up var(--duration) var(--ease-out) backwards}.stagger>:first-child{animation-delay:40ms}.stagger>:nth-child(2){animation-delay:.1s}.stagger>:nth-child(3){animation-delay:.16s}.stagger>:nth-child(4){animation-delay:.22s}.stagger>:nth-child(5){animation-delay:.28s}.stagger>:nth-child(n+6){animation-delay:.34s}.app-shell{flex-direction:column;min-height:100svh;display:flex}.app-main{width:100%;max-width:var(--container);padding:0 var(--space-3xl) calc(var(--space-3xl) * 2);flex:1;margin:0 auto}.nav-bar{z-index:30;background:var(--color-canvas);border-bottom:1px solid var(--color-canvas-soft);transition:box-shadow .2s var(--ease-out);position:sticky;top:0}.nav-bar.scrolled{box-shadow:var(--shadow-l1)}.nav-inner{max-width:var(--container);padding:var(--space-lg) var(--space-3xl);justify-content:space-between;align-items:center;gap:var(--space-lg);margin:0 auto;display:flex}.wordmark{font-family:var(--font-display);color:var(--color-ink);white-space:nowrap;font-size:20px;font-weight:700;line-height:28px}.nav-right{align-items:center;gap:var(--space-lg);display:flex}.nav-user{color:var(--color-body);font-size:14px;line-height:20px}.btn{border-radius:var(--radius-pill);cursor:pointer;font-family:var(--font-body);padding:var(--space-md) var(--space-xl);min-height:44px;transition:background-color .15s ease, color .15s ease, border-color .15s ease, box-shadow .15s ease, transform .2s var(--ease-out);border:none;justify-content:center;align-items:center;font-size:16px;font-weight:500;line-height:20px;text-decoration:none;display:inline-flex}.btn:hover{box-shadow:var(--shadow-l3);transform:translateY(-1px)}.btn:active{box-shadow:none;transform:scale(.98)}.btn-primary{background:var(--color-primary);color:var(--color-on-primary)}.btn-primary:hover{background:var(--color-black-elevated)}.btn-primary:active{background:var(--color-hairline)}.btn-secondary{background:var(--color-canvas);color:var(--color-ink);border:1px solid var(--color-canvas-soft)}.btn-secondary:hover{background:var(--color-canvas-softer)}.btn-subtle{background:var(--color-canvas-soft);color:var(--color-ink)}.btn-subtle:hover{background:var(--color-surface-pressed)}.btn:disabled{background:var(--color-canvas-soft);color:var(--color-mute);cursor:not-allowed}.display-xxl{font-family:var(--font-display);font-size:52px;font-weight:700;line-height:64px}.display-xl{font-family:var(--font-display);font-size:36px;font-weight:700;line-height:44px}.display-lg{font-family:var(--font-display);font-size:32px;font-weight:700;line-height:40px}.display-md{font-family:var(--font-display);font-size:24px;font-weight:700;line-height:32px}.display-sm{font-family:var(--font-display);font-size:20px;font-weight:700;line-height:28px}.tab-bar{gap:var(--space-xxs);background:var(--color-canvas-soft);border-radius:var(--radius-pill-tab);width:fit-content;margin-top:var(--space-2xl);padding:4px;display:flex}.tab{color:var(--color-body);font-family:var(--font-body);padding:var(--space-md) var(--space-2xl);border-radius:var(--radius-pill-tab);cursor:pointer;min-height:44px;transition:background-color .15s ease, color .15s ease, transform .2s var(--ease-out);background:0 0;border:none;font-size:16px;font-weight:500;line-height:20px}.tab:active{transform:scale(.97)}.tab.active{background:var(--color-canvas);color:var(--color-ink)}.tab-add{display:none}.fab-add{z-index:45;background:var(--color-primary);width:56px;height:56px;color:var(--color-on-primary);cursor:pointer;box-shadow:var(--shadow-l1);transition:background-color .15s ease, box-shadow .15s ease, transform .2s var(--ease-out);-webkit-tap-highlight-color:transparent;border:none;border-radius:50%;justify-content:center;align-items:center;display:flex;position:fixed;bottom:28px;right:28px}.fab-add:hover{background:var(--color-black-elevated);box-shadow:var(--shadow-l2);transform:translateY(-2px)}.fab-add:active{box-shadow:none;transform:scale(.94)}@media (width<=767px){.tab-add{display:none}}.card{background:var(--color-canvas);border:1px solid var(--color-surface-pressed);border-radius:var(--radius-xl);padding:var(--space-2xl)}.card-soft{background:var(--color-canvas-soft);border-radius:var(--radius-xl);padding:var(--space-2xl)}.card-dark{background:var(--color-primary);color:var(--color-on-primary);border-radius:var(--radius-xl);padding:var(--space-2xl)}.card-elevated{box-shadow:var(--shadow-l1)}.section{margin-top:48px}.section-head{margin-bottom:var(--space-lg)}.hero-band{padding:var(--space-3xl) 0 0}.hero-sub{color:var(--color-body);margin-top:var(--space-sm);font-size:18px;line-height:24px}.stat-row{gap:var(--space-md);margin-top:var(--space-2xl);grid-template-columns:repeat(3,1fr);display:grid}.stat-card{background:var(--color-canvas-soft);border-radius:var(--radius-xl);padding:var(--space-2xl)}.stat-card-dark{background:var(--color-primary);color:var(--color-on-primary)}.stat-label{color:var(--color-body);font-size:12px;line-height:20px;display:block}.stat-card-dark .stat-label{color:var(--color-mute)}.stat-value{font-family:var(--font-display);margin-top:var(--space-xxs);font-variant-numeric:tabular-nums;font-size:24px;font-weight:700;line-height:32px;display:block}.text-input{background:var(--color-canvas-soft);width:100%;color:var(--color-ink);border-radius:var(--radius-md);padding:var(--space-lg);transition:border-color .2s var(--ease-out), background-color .2s var(--ease-out);border:1px solid #0000;font-size:16px;line-height:24px}.text-input::placeholder{color:var(--color-mute)}.text-input:focus{border-color:var(--color-ink);background:var(--color-canvas);outline:none}input[type=date]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;appearance:none}input[type=date]::-webkit-datetime-edit{padding:0}input[type=date]::-webkit-datetime-edit-fields-wrapper{padding-right:28px}input[type=date]::-webkit-datetime-edit-text{color:var(--color-mute);padding:0 2px}input[type=date]::-webkit-datetime-edit-month-field:focus{background:var(--color-surface-pressed);border-radius:var(--radius-md)}input[type=date]::-webkit-datetime-edit-day-field:focus{background:var(--color-surface-pressed);border-radius:var(--radius-md)}input[type=date]::-webkit-datetime-edit-year-field:focus{background:var(--color-surface-pressed);border-radius:var(--radius-md)}input[type=date]::-webkit-calendar-picker-indicator{background:var(--color-body);cursor:pointer;opacity:.65;transition:opacity .15s;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='18' rx='2'/%3E%3Cpath d='M16 2v4M8 2v4M3 10h18'/%3E%3C/svg%3E") 50%/18px 18px no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='18' rx='2'/%3E%3Cpath d='M16 2v4M8 2v4M3 10h18'/%3E%3C/svg%3E") 50%/18px 18px no-repeat}input[type=date]:hover::-webkit-calendar-picker-indicator{opacity:1}input[type=date]:focus::-webkit-calendar-picker-indicator{opacity:1}.select-wrap{position:relative}.select-trigger{justify-content:space-between;align-items:center;gap:var(--space-md);background:var(--color-canvas-soft);width:100%;color:var(--color-ink);border-radius:var(--radius-md);padding:var(--space-lg);font-family:var(--font-body);text-align:left;cursor:pointer;transition:border-color .2s var(--ease-out), background-color .2s var(--ease-out);-webkit-tap-highlight-color:transparent;border:1px solid #0000;font-size:16px;line-height:24px;display:flex}.select-trigger.open,.select-trigger:focus-visible{border-color:var(--color-ink);background:var(--color-canvas);outline:none}.select-placeholder{color:var(--color-mute)}.select-chevron{color:var(--color-body);transition:transform .2s var(--ease-out);flex-shrink:0}.select-trigger.open .select-chevron{transform:rotate(180deg)}.select-popover{top:calc(100% + var(--space-xs));z-index:70;padding:var(--space-xs);background:var(--color-canvas);border:1px solid var(--color-surface-pressed);border-radius:var(--radius-md);box-shadow:var(--shadow-l2);max-height:264px;animation:fade-up .18s var(--ease-out) backwards;margin:0;list-style:none;position:absolute;left:0;right:0;overflow-y:auto}.select-option{justify-content:space-between;align-items:center;gap:var(--space-md);width:100%;color:var(--color-ink);border-radius:var(--radius-sm,6px);padding:var(--space-md) var(--space-lg);font-family:var(--font-body);text-align:left;cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:none;font-size:16px;line-height:24px;transition:background-color .15s;display:flex}.select-option:hover,.select-option.active{background:var(--color-canvas-soft)}.select-option.selected{font-weight:600}.select-option svg{color:var(--color-ink);flex-shrink:0}.chip-row{gap:var(--space-md);margin-top:var(--space-xl);margin-bottom:var(--space-lg);flex-wrap:wrap;display:flex}.chip{background:var(--color-canvas-soft);color:var(--color-ink);border-radius:var(--radius-pill);padding:10px var(--space-lg);font-family:var(--font-body);cursor:pointer;white-space:nowrap;min-height:40px;transition:background-color .15s ease, color .15s ease, transform .15s var(--ease-out);border:none;font-size:14px;font-weight:500;line-height:16px}.chip:hover{background:var(--color-surface-pressed)}.chip:active{transform:scale(.96)}.chip.active{background:var(--color-primary);color:var(--color-on-primary)}.mini-chip-row{gap:var(--space-sm);margin-top:var(--space-md);flex-wrap:wrap;display:flex}.mini-chip{background:var(--color-canvas-soft);color:var(--color-ink);border-radius:var(--radius-pill);padding:6px 12px;font-size:14px;font-weight:500;line-height:16px}.due-banner{background:var(--color-ink);color:var(--color-on-primary);border-radius:var(--radius-xl);padding:var(--space-2xl)}.due-banner-head{justify-content:space-between;align-items:center;gap:var(--space-md);margin-bottom:var(--space-md);display:flex}.due-banner h3{font-family:var(--font-display);margin:0;font-size:20px;font-weight:700;line-height:28px}.due-dismiss{background:var(--color-black-elevated);color:var(--color-on-primary)}.due-dismiss:hover{background:var(--color-hairline)}.due-row{justify-content:space-between;align-items:center;gap:var(--space-md);padding:var(--space-sm) 0;display:flex}.due-note{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:14px;line-height:20px;overflow:hidden}.expense-list{margin:0;padding:0;list-style:none}.expense-item{align-items:center;gap:var(--space-md);padding:var(--space-lg) 0;border-bottom:1px solid var(--color-canvas-soft);cursor:pointer;transition:background-color .15s;display:flex}.expense-item:hover{background:var(--color-canvas-softer)}.expense-item:last-child{border-bottom:none}.expense-category{background:var(--color-canvas-soft);border-radius:var(--radius-pill);flex-shrink:0;padding:6px 12px;font-size:14px;font-weight:500;line-height:16px}.expense-mid{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.expense-note{color:var(--color-body);text-overflow:ellipsis;white-space:nowrap;font-size:14px;line-height:20px;overflow:hidden}.expense-date{color:var(--color-mute);text-overflow:ellipsis;white-space:nowrap;font-size:12px;line-height:16px;overflow:hidden}.expense-amount{font-variant-numeric:tabular-nums;flex-shrink:0;font-size:16px;font-weight:700;line-height:20px}.expense-delete{background:var(--color-canvas-soft);width:36px;height:36px;color:var(--color-body);cursor:pointer;transition:background-color .15s ease, color .15s ease, transform .15s var(--ease-out);-webkit-tap-highlight-color:transparent;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.expense-delete:hover{color:#c0392b;background:#fdecea}.expense-delete:active{transform:scale(.9)}.empty-state{background:var(--color-canvas-soft);border-radius:var(--radius-xl);padding:48px var(--space-2xl);text-align:center}.empty-state h3{font-family:var(--font-display);font-size:20px;font-weight:700;line-height:28px}.empty-state p{color:var(--color-body);margin-top:var(--space-xxs);font-size:16px;line-height:24px}.chart{gap:var(--space-lg);flex-direction:column;display:flex}.chart-row-head{justify-content:space-between;align-items:baseline;gap:var(--space-md);margin-bottom:var(--space-xs);display:flex}.chart-cat{font-size:14px;font-weight:500;line-height:16px}.chart-val{color:var(--color-body);font-variant-numeric:tabular-nums;font-size:14px;line-height:16px}.chart-track{background:var(--color-canvas-soft);border-radius:var(--radius-pill);height:8px;overflow:hidden}.chart-bar{background:var(--color-primary);border-radius:var(--radius-pill);transform-origin:0;min-width:2px;height:100%;animation:grow-bar .6s var(--ease-out) backwards}.chart-budget{justify-content:space-between;align-items:center;gap:var(--space-md);margin-top:var(--space-sm);display:flex}.chart-budget-meta{min-width:0;color:var(--color-body);text-overflow:ellipsis;white-space:nowrap;font-variant-numeric:tabular-nums;font-size:12px;line-height:20px;overflow:hidden}.btn-chip{border-radius:var(--radius-pill);background:var(--color-canvas-soft);color:var(--color-ink);font-family:var(--font-body);padding:var(--space-sm) var(--space-md);cursor:pointer;-webkit-tap-highlight-color:transparent;border:none;flex-shrink:0;min-height:32px;font-size:14px;font-weight:500;line-height:16px;transition:background-color .15s}.btn-chip:hover{background:var(--color-surface-pressed)}.btn-chip-quiet{color:var(--color-body);padding:var(--space-sm) 0;background:0 0;min-height:auto}.btn-chip-quiet:hover{background:var(--color-canvas-softer);color:var(--color-ink)}.group-list{gap:var(--space-lg);grid-template-columns:1fr 1fr;display:grid}.group-card-wrap{position:relative}.group-card{text-align:left;background:var(--color-canvas);border:1px solid var(--color-surface-pressed);border-radius:var(--radius-xl);width:100%;padding:var(--space-xl) var(--space-2xl);cursor:pointer;transition:border-color .15s ease, box-shadow .15s ease, transform .2s var(--ease-out)}.group-card:hover{border-color:var(--color-ink);box-shadow:var(--shadow-l1);transform:translateY(-2px)}.group-delete{z-index:1;background:var(--color-canvas-soft);width:32px;height:32px;color:var(--color-body);cursor:pointer;transition:background-color .15s ease, color .15s ease, transform .15s var(--ease-out);-webkit-tap-highlight-color:transparent;border:none;border-radius:50%;justify-content:center;align-items:center;display:inline-flex;position:absolute;top:14px;right:14px}.group-delete:hover{color:#c0392b;background:#fdecea}.group-delete:active{transform:scale(.9)}.group-card-top{justify-content:space-between;align-items:center;gap:var(--space-md);padding-right:32px;display:flex}.group-name{font-family:var(--font-display);font-size:20px;font-weight:700;line-height:28px}.group-arrow{color:var(--color-body);font-size:20px;line-height:1}.group-created{color:var(--color-mute);margin-top:var(--space-md);font-size:12px;line-height:16px}.back-btn{margin-top:var(--space-2xl)}.balance-row{justify-content:space-between;align-items:center;gap:var(--space-md);padding:var(--space-sm) 0;display:flex}.balance-name{font-size:16px;font-weight:500;line-height:20px}.balance-pill{border-radius:var(--radius-pill);padding:var(--space-sm) var(--space-lg);font-variant-numeric:tabular-nums;align-items:center;min-height:36px;font-size:14px;font-weight:500;line-height:16px;display:inline-flex}.balance-pill-gets{background:var(--color-on-primary);color:var(--color-ink)}.balance-pill-owes{color:var(--color-on-primary);border:1px solid var(--color-on-primary);background:0 0}.on-dark-sub{color:var(--color-mute);font-size:14px;line-height:20px}.settlement-row{align-items:center;gap:var(--space-md);padding:var(--space-md) 0;border-bottom:1px solid var(--color-surface-pressed);display:flex}.settlement-row:last-child{border-bottom:none}.settlement-person{font-size:14px;font-weight:500;line-height:16px}.settlement-arrow{color:var(--color-mute)}.settlement-amount{font-variant-numeric:tabular-nums;margin-left:auto;font-size:14px;font-weight:700;line-height:16px}.auth-shell{width:100%;max-width:440px;padding:48px var(--space-xl);flex:1;margin:0 auto}.auth-title{font-family:var(--font-display);margin-top:var(--space-2xl);font-size:36px;font-weight:700;line-height:44px}.auth-sub{color:var(--color-body);margin-top:var(--space-sm);font-size:16px;line-height:24px}.auth-card{margin-top:var(--space-2xl)}.auth-form{gap:var(--space-md);flex-direction:column;display:flex}.auth-submit{width:100%;margin-top:var(--space-xs)}.auth-toggle{color:var(--color-body);margin-top:var(--space-lg);text-align:center;font-size:14px;line-height:20px}.error-text{background:var(--color-canvas);color:var(--color-ink);border-radius:var(--radius-md);padding:var(--space-md) var(--space-lg);animation:fade-up .24s var(--ease-out) backwards;font-size:14px;font-weight:500;line-height:20px}.link-btn{color:var(--color-ink);cursor:pointer;background:0 0;border:none;padding:0;font-size:14px;font-weight:500;text-decoration:underline}.muted{color:var(--color-body);font-size:14px;line-height:20px}.detail-hero{align-items:center;gap:var(--space-md);padding:var(--space-lg) 0;flex-direction:column;display:flex}.detail-sub{color:var(--color-body);font-size:14px;line-height:20px}.detail-chips{gap:var(--space-xs);margin-top:var(--space-xs);flex-wrap:wrap;display:flex}.detail-amount{font-family:var(--font-display);font-variant-numeric:tabular-nums;font-size:36px;font-weight:700;line-height:44px}.detail-rows{margin:0;padding:0;list-style:none}.detail-rows li{justify-content:space-between;align-items:center;gap:var(--space-md);padding:var(--space-md) 0;border-bottom:1px solid var(--color-canvas-soft);font-size:14px;line-height:20px;display:flex}.detail-rows li span{color:var(--color-body)}.detail-rows strong{text-align:right;font-variant-numeric:tabular-nums;font-weight:500}.detail-note{margin-top:var(--space-lg)}.detail-note p{margin:var(--space-xs) 0 0;font-size:16px;line-height:24px}.detail-actions{gap:var(--space-md);margin-top:var(--space-xl);display:flex}.detail-actions .btn{flex:1}.modal-overlay{z-index:60;padding:var(--space-2xl);animation:fade-in .2s var(--ease-out) backwards;-webkit-tap-highlight-color:transparent;background:#00000073;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal-sheet{background:var(--color-canvas);border-radius:var(--radius-xl);width:100%;max-width:560px;max-height:min(640px,90svh);padding:var(--space-2xl);animation:fade-up var(--duration) var(--ease-out) backwards;box-shadow:var(--shadow-l2);overflow-y:auto}.modal-sheet-head{justify-content:space-between;align-items:center;gap:var(--space-md);margin-bottom:var(--space-lg);display:flex}.modal-close{background:var(--color-canvas-soft);width:40px;height:40px;color:var(--color-ink);cursor:pointer;transition:background-color .15s ease, transform .15s var(--ease-out);-webkit-tap-highlight-color:transparent;border:none;border-radius:50%;justify-content:center;align-items:center;display:inline-flex}.modal-close:hover{background:var(--color-surface-pressed)}.modal-close:active{transform:scale(.92)}.modal-form{gap:var(--space-lg);flex-direction:column;display:flex}.field{gap:var(--space-xs);flex-direction:column;display:flex}.field-label{color:var(--color-body);font-size:14px;font-weight:500;line-height:16px}.modal-form .btn-primary{margin-top:var(--space-sm);border-radius:var(--radius-xl);width:100%;min-height:52px;font-size:18px}.form-row{align-items:center;gap:var(--space-md);display:flex}.form-row>*{flex:1;min-width:0}.form-row .btn{flex:none}.checkbox-row{align-items:center;gap:var(--space-md);cursor:pointer;padding:var(--space-xs) 0;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;font-size:16px;line-height:24px;display:flex}.checkbox-row input[type=checkbox]{width:20px;height:20px;accent-color:var(--color-ink);cursor:pointer;flex-shrink:0;margin:0}.expense-date-header{color:var(--color-body);text-transform:uppercase;letter-spacing:.04em;margin:var(--space-lg) 0 var(--space-xs);font-size:13px;font-weight:600;line-height:20px;display:block}.expense-list-inner{margin:0;padding:0;list-style:none}.expense-recurring{background:var(--color-canvas-soft);color:var(--color-body);border-radius:var(--radius-pill);text-transform:capitalize;font-variant-numeric:tabular-nums;white-space:nowrap;flex-shrink:0;align-items:center;gap:4px;padding:4px 10px;font-size:12px;font-weight:600;line-height:16px;display:inline-flex}.expense-group-tag{text-overflow:ellipsis;background:var(--color-ink);max-width:110px;color:var(--color-on-primary);border-radius:var(--radius-pill);white-space:nowrap;flex-shrink:0;align-items:center;padding:4px 10px;font-size:12px;font-weight:600;line-height:16px;display:inline-flex;overflow:hidden}.expense-meta{color:var(--color-body);font-variant-numeric:tabular-nums;font-size:14px;line-height:20px}@keyframes shimmer{to{transform:translate(100%)}}.skeleton{background:var(--color-canvas-soft);border-radius:var(--radius-md);position:relative;overflow:hidden}.skeleton:after{content:"";animation:shimmer 1.4s var(--ease-out) infinite;background:linear-gradient(90deg,#0000,#ffffff8c,#0000);position:absolute;inset:0;transform:translate(-100%)}.skeleton-list{gap:var(--space-lg);padding:var(--space-sm) 0;flex-direction:column;display:flex}.skeleton-row{height:48px}.confirm-message{margin-bottom:var(--space-xl);overflow-wrap:anywhere}.confirm-actions{justify-content:flex-end;gap:var(--space-md);display:flex}.btn-danger{background:var(--color-negative);color:#fff}.btn-danger:hover{background:#a93226}.btn-danger:active{background:#922b21}@media (width<=1119px){.group-list{grid-template-columns:1fr}}@media (width<=767px){.app-main{padding:0 var(--space-lg) 96px}.nav-inner{padding:var(--space-lg)}.nav-user{display:none}.wordmark{font-size:18px}.display-xl{font-size:28px;line-height:36px}.tab-bar{z-index:40;background:var(--color-canvas);border-top:1px solid var(--color-surface-pressed);width:auto;padding:var(--space-sm) var(--space-lg) calc(var(--space-sm) + env(safe-area-inset-bottom,0px));gap:var(--space-sm);animation:slide-up var(--duration) var(--ease-out) backwards;border-radius:0;align-items:flex-start;margin:0;position:fixed;bottom:0;left:0;right:0}.tab{background:var(--color-canvas-soft);color:var(--color-body);border-radius:var(--radius-pill);padding:var(--space-md);flex:1;min-height:0;font-size:14px}.tab.active{background:var(--color-primary);color:var(--color-on-primary)}.fab-add{right:20px;bottom:calc(86px + env(safe-area-inset-bottom,0px));z-index:45;background:var(--color-primary);width:56px;height:56px;color:var(--color-on-primary);cursor:pointer;box-shadow:var(--shadow-l2);transition:background-color .15s ease, box-shadow .15s ease, transform .2s var(--ease-out);-webkit-tap-highlight-color:transparent;border:none;border-radius:50%;justify-content:center;align-items:center;display:flex;position:fixed}.fab-add:hover{background:var(--color-black-elevated);box-shadow:var(--shadow-l2);transform:translateY(-2px)}.fab-add:active{box-shadow:none;transform:scale(.94)}.section{margin-top:var(--space-3xl)}.hero-band{padding-top:var(--space-2xl)}.card,.card-soft,.card-dark{padding:var(--space-xl)}.expense-item{gap:var(--space-sm)}.due-banner{padding:var(--space-xl)}.due-row{flex-direction:column;align-items:stretch}.due-row .btn{width:100%}.expense-category{padding:5px 10px;font-size:13px}.expense-note{min-width:0}.form-row{flex-direction:column;align-items:stretch}.form-row>*{width:100%}.form-row .btn{flex:auto}.stat-row{grid-template-columns:1fr 1fr}.stat-card-dark{grid-column:1/-1}.chip-row{margin:var(--space-xl) calc(var(--space-lg) * -1) var(--space-lg);padding:0 var(--space-lg);scrollbar-width:none;flex-wrap:nowrap;overflow-x:auto}.chip-row::-webkit-scrollbar{display:none}}@media (width<=479px){.stat-row{grid-template-columns:1fr}.stat-card-dark{grid-column:auto}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
