@import url("https://fonts.googleapis.com/css2?family=Nunito+Sans:wght@400;500;600;700;800&display=swap");:root{color-scheme:light;--color-canvas:#f5efe5;--color-surface:#fffcf7;--color-surface-muted:#eee7dc;--color-ink:#35243d;--color-ink-secondary:#665a69;--color-ink-muted:#746877;--color-line:#dfd3c5;--color-primary:#9b7de0;--color-primary-strong:#5e458e;--color-primary-soft:#eee7fb;--color-negative:#99473f;--color-negative-soft:#f8e3df;--color-positive:#2f7958;--color-positive-soft:#e2f2e8;--color-pending:#7d4e10;--color-pending-soft:#f5e7c9;--color-focus:#5e458e;--color-overlay:rgba(53,36,61,0.46);--shadow-subtle:0 0 0 1px rgba(53,36,61,0.06),0 2px 4px -2px rgba(53,36,61,0.1),0 8px 20px -14px rgba(53,36,61,0.22)}.expense-page-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}.room8-preview-banner{padding:6px 16px;text-align:center;color:var(--color-primary-strong);background:var(--color-primary-soft);font-size:.75rem}.room8-preview-banner a{display:inline-block;margin-left:8px;color:inherit;text-decoration:underline}.statistics-trigger{display:flex;align-items:center;gap:7px;min-height:48px}.statistics-trigger svg{width:20px;height:20px}.statistics-title-row{display:grid;grid-template-columns:48px 1fr 48px;align-items:center;grid-gap:8px;gap:8px}.statistics-title-row h1{text-align:center;font-size:1.5rem;margin:0}.statistics-back{display:grid;place-items:center;width:48px;height:48px;border:1px solid var(--color-line);border-radius:16px;background:var(--color-surface);color:var(--color-ink)}.statistics-back svg{width:22px;height:22px}.statistics-context{margin:0;font-size:.875rem;color:var(--color-ink-secondary)}.statistics-section-label{font-size:.8125rem;font-weight:800;letter-spacing:.075em;text-transform:uppercase;margin:0 0 12px}.statistics-overview{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);align-items:center;grid-gap:18px;gap:18px;padding:22px 18px;border:1px solid var(--color-line);background:var(--color-surface);border-radius:24px}.statistics-donut{width:100%;max-width:220px;aspect-ratio:1;border-radius:50%;display:grid;place-items:center;justify-self:center}.statistics-donut-center{width:76%;aspect-ratio:1;border-radius:50%;background:var(--color-surface);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:8px;text-align:center;gap:4px}.statistics-donut-center span{font-size:.75rem;color:var(--color-ink-secondary)}.statistics-donut-center strong{font-size:clamp(.875rem,3.2vw,1.5rem);font-weight:800;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;white-space:nowrap}.statistics-legend{padding:0;margin:0;list-style:none;display:grid;grid-gap:12px;gap:12px;min-width:0}.statistics-legend li{display:grid;grid-template-columns:8px 18px minmax(0,1fr) auto;align-items:center;grid-gap:6px;gap:6px;font-size:.8125rem}.statistics-legend li svg{width:18px;height:18px;color:var(--color-ink-secondary)}.statistics-color-dot{width:8px;height:8px;border-radius:50%}.statistics-category-name{overflow-wrap:anywhere}.statistics-legend strong{font-weight:700;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.statistics-category-list{padding:4px 18px;margin:0;list-style:none;background:var(--color-surface);border:1px solid var(--color-line);border-radius:24px}.statistics-category-list li{display:flex;align-items:center;gap:12px;padding:17px 0;border-bottom:1px solid var(--color-line)}.statistics-category-list li:last-child{border:0}.statistics-category-icon{flex:0 0 44px;width:44px;height:44px;border-radius:15px;display:grid;place-items:center;background:var(--category-color);font-size:1.375rem}.statistics-category-icon svg{width:23px;height:23px}.statistics-row-name{display:grid;grid-gap:2px;gap:2px;min-width:0;flex:1 1}.statistics-row-name strong{font-size:.9375rem;overflow-wrap:anywhere}.statistics-row-amount span,.statistics-row-name span{font-size:.8125rem;color:var(--color-ink-secondary)}.statistics-row-amount{display:grid;grid-gap:2px;gap:2px;text-align:right;flex:0 0 auto;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.statistics-row-amount strong{font-size:1.0625rem;font-weight:800}.statistics-empty{padding:36px 24px;border:1px solid var(--color-line);border-radius:24px;background:var(--color-surface);text-align:center}.statistics-empty svg{width:40px;height:40px;color:var(--color-primary-strong)}.statistics-empty h2{font-size:1.125rem;margin:12px 0 8px}.statistics-empty p{color:var(--color-ink-secondary);margin:0}.expense-category-field,.expense-entry-fields,.expense-split-field{min-width:0;margin:0;padding:0;border:0}.expense-entry-fields{display:grid;grid-gap:22px;gap:22px}.expense-form .field{margin:0}.expense-form :is(legend,.field>label,.expense-category-field>label,.expense-category-editor>label){font-size:.875rem;font-weight:800;margin-bottom:8px}.expense-form :is(input,select,textarea,.choice-button,.button){min-height:48px}.expense-amount-entry{display:flex;align-items:center;gap:8px;padding:6px 16px;border:1px solid var(--color-line);border-radius:18px;background:var(--color-canvas)}.expense-amount-entry>span{font-size:2rem;color:var(--color-primary-strong);font-weight:700}.expense-form .expense-amount-entry input{width:100%;min-width:0;min-height:70px;padding:4px 0;margin:0;border:0;border-radius:8px;background:transparent;font-size:2.625rem;line-height:1.2;font-weight:800;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.expense-form .helper-text{margin:6px 0 0;display:block}.expense-category-field{display:grid;grid-gap:8px;gap:8px}.expense-category-field>label{margin-bottom:0}.expense-category-controls{display:grid;grid-template-columns:minmax(0,1fr) 48px;grid-gap:8px;gap:8px;align-items:stretch;min-width:0}.expense-category-controls>select{min-width:0}.expense-category-field select{width:100%;padding:12px;border:1px solid var(--color-line);border-radius:14px;color:var(--color-ink);background:var(--color-surface)}.category-add-button{display:flex;align-items:center;gap:5px;color:var(--color-primary-strong);border-style:dashed}.expense-category-controls>.category-add-button{display:grid;place-items:center;width:48px;min-height:48px;padding:0}.category-add-button svg{width:18px;height:18px;flex-shrink:0}.expense-category-editor{display:grid;grid-gap:8px;gap:8px;margin-top:12px;padding:16px;border:1px solid var(--color-primary);border-radius:18px;background:var(--color-primary-soft)}.expense-category-editor>label{margin:0}.expense-category-actions{display:grid;grid-template-columns:1fr 1fr;grid-gap:8px;gap:8px}.expense-category-notice{margin:10px 0 0;font-size:.8125rem;color:var(--color-positive)}.expense-field-error{margin:6px 0 0;font-size:.8125rem;color:var(--color-negative)}.expense-split-options{display:grid;grid-gap:8px;gap:8px}.expense-split-choice{min-height:64px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px;border:1px solid var(--color-line);border-radius:16px;text-align:left;background:var(--color-surface);color:var(--color-ink)}.expense-split-choice>span{display:grid;grid-gap:2px;gap:2px}.expense-split-choice small{color:var(--color-ink-secondary);font-size:.75rem}.expense-split-choice.selected{background:var(--color-primary-soft);border-color:var(--color-primary-strong)}.expense-split-choice>svg{width:22px;height:22px;flex-shrink:0;color:var(--color-primary-strong)}.expense-share-summary{display:grid;grid-gap:8px;gap:8px;padding:14px 0 0;font-size:.8125rem}.expense-share-summary>div{display:flex;justify-content:space-between;gap:12px}.expense-share-summary>div>span{color:var(--color-ink-secondary)}.expense-share-summary strong{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.expense-extra{border-top:1px solid var(--color-line)}.expense-extra>summary{min-height:48px;padding:14px 0;font-size:.875rem;font-weight:700;cursor:pointer}.expense-extra>summary span{float:right;color:var(--color-ink-secondary);font-size:.8125rem;font-weight:500}.expense-extra-fields{display:grid;grid-gap:16px;gap:16px;padding:4px 0 6px}.expense-form .expense-submit-actions{display:grid;grid-template-columns:minmax(0,1fr);grid-gap:8px;gap:8px}.expense-submit-actions>.expense-debt-preview{margin:0;color:var(--color-ink-secondary);font-size:.8125rem;line-height:1.45;text-align:left}@media (min-width:700px){.statistics-overview{grid-template-columns:minmax(200px,1fr) minmax(220px,1fr);gap:36px;padding:28px}.statistics-legend li{font-size:1rem;gap:10px}.statistics-category-list{padding-inline:24px}.statistics-row-amount strong{font-size:1.25rem}}@media (max-width:360px){.statistics-overview{padding:16px 12px;gap:10px}.statistics-legend li{grid-template-columns:6px 16px minmax(0,1fr) auto;gap:4px;font-size:.75rem}.statistics-row-amount strong{font-size:.9375rem}.statistics-category-list{padding-inline:12px}.expense-page-actions{gap:6px}}*{box-sizing:border-box}body,html{margin:0;min-height:100%;background:var(--color-canvas);color:var(--color-ink);font-family:Nunito Sans,ui-sans-serif,system-ui,sans-serif;font-feature-settings:"cv02","cv03","cv04","cv11"}body{font-size:16px;line-height:1.5}.skip-link{position:fixed;z-index:30;top:8px;left:8px;transform:translateY(-160%);padding:10px 14px;border-radius:12px;background:var(--color-ink);color:var(--color-surface)}.skip-link:focus{transform:translateY(0)}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:wait;opacity:.65}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}input:focus-visible,select:focus-visible,textarea:focus-visible{outline-offset:-1px}dl,fieldset,h1,h2,p{margin:0}h1,h2{font-weight:700;text-wrap:balance}h1{font-size:1.5rem;line-height:1.25;letter-spacing:-.02em}h2{font-size:1.125rem;line-height:1.35}p{text-wrap:pretty}.tabular{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;letter-spacing:-.025em}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.kicker{color:var(--color-ink-muted);font-size:.75rem;font-weight:800;line-height:1rem;letter-spacing:.06em;text-transform:uppercase}.auth-footnote,.helper-text{color:var(--color-ink-secondary);font-size:.875rem;line-height:1.45}.auth-screen{min-height:100dvh;display:grid;place-items:center;padding:24px 16px;background:var(--color-canvas)}.auth-panel{width:min(100%,420px);display:grid;grid-gap:22px;gap:22px;padding:28px 24px;border:1px solid var(--color-line);border-radius:26px;background:var(--color-surface);box-shadow:var(--shadow-subtle)}.logo-lockup{display:flex;align-items:center;gap:12px}.logo-lockup strong{display:block;font-size:1.1rem}.logo-lockup span{display:block;color:var(--color-ink-secondary);font-size:.875rem}.brand-mark,.logo-square{display:grid;place-items:center;width:42px;height:42px;background:var(--color-primary);color:var(--color-ink);border-radius:15px;font-weight:800;letter-spacing:-.04em}.section-heading{display:grid;grid-gap:6px;gap:6px}.loading-block,.section-heading p:last-child{color:var(--color-ink-secondary)}.loading-block{display:grid;grid-gap:12px;gap:12px;justify-items:center}.loading-line{width:120px;height:4px;border-radius:99px;background:var(--color-primary);animation:load 1.2s ease-in-out infinite}@keyframes load{0%,to{transform:scaleX(.45);opacity:.35}50%{transform:scaleX(1);opacity:1}}.app-shell{isolation:isolate;min-height:100dvh;padding-bottom:calc(96px + env(safe-area-inset-bottom))}.app-header{position:-webkit-sticky;position:sticky;top:0;z-index:2;display:flex;align-items:center;gap:10px;height:64px;padding:10px 16px;background:rgba(245,239,229,.94);border-bottom:1px solid rgba(223,211,197,.72)}.brand-mark{width:34px;height:34px;border-radius:12px;font-size:.875rem}.brand-copy{min-width:0;display:grid;grid-gap:0;gap:0}.brand-copy span{font-weight:600;line-height:1.1}.brand-copy small{color:var(--color-ink-muted);font-size:.75rem}.icon-button{margin-left:auto;width:44px;height:44px;border:1px solid var(--color-line);border-radius:14px;background:var(--color-surface);color:var(--color-primary-strong);font-weight:600}.app-content{width:min(100%,760px);margin:0 auto;padding:24px 16px 32px}.view-stack{display:grid;grid-gap:18px;gap:18px}.page-title-row{display:flex;align-items:flex-end;justify-content:space-between;gap:16px}.page-title-row>div{min-width:0;display:grid;grid-gap:4px;gap:4px}.page-title-row .button{flex-shrink:0}.button{min-height:40px;border:1px solid transparent;border-radius:14px;padding:9px 13px;font-size:.875rem;font-weight:600;line-height:1.2;transition:background-color .15s ease,color .15s ease,border-color .15s ease}.primary-button{background:var(--color-primary);color:var(--color-ink)}.primary-button:hover{background:#8768cf;color:var(--color-surface)}.dark-action{background:var(--color-ink);color:var(--color-surface)}.dark-action:hover{background:#171612}.outline-button{background:var(--color-surface);border-color:var(--color-line);color:var(--color-primary-strong)}.outline-button:hover{border-color:var(--color-primary)}.outline-button:hover,.soft-button{background:var(--color-primary-soft)}.soft-button{color:var(--color-primary-strong)}.danger-button{background:var(--color-negative);color:var(--color-surface)}.full-button{width:100%;min-height:48px}.action-row,.sheet-actions{display:flex;flex-wrap:wrap;gap:10px}.action-row .button{flex:1 1 150px}.primary-actions .button{min-height:48px}.month-navigator{display:grid;grid-template-columns:44px 1fr 44px;align-items:center;grid-gap:8px;gap:8px;min-height:48px;border:1px solid var(--color-line);border-radius:18px;background:var(--color-surface);box-shadow:var(--shadow-subtle);text-align:center}.home-title-row{display:block}.home-title-row .month-navigator{width:100%}.month-navigator strong{font-size:.95rem}.month-arrow{display:grid;place-items:center;width:44px;height:44px;border:0;border-radius:12px;background:transparent;color:var(--color-primary-strong)}.month-arrow:focus-visible,.month-arrow:hover:not(:disabled){background:var(--color-primary-soft)}.month-arrow:disabled{cursor:not-allowed;opacity:.4}.month-arrow svg{width:20px;height:20px}.sheet-actions .button{flex:1 1 150px}.text-button{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:44px;padding:8px 4px;border:0;background:none;color:var(--color-primary-strong);font-size:.875rem;font-weight:600}.text-button:hover{text-decoration:underline}.close-button{flex:0 0 44px;width:44px;height:44px;border:1px solid var(--color-line);border-radius:14px;color:var(--color-ink-secondary);font-size:1.4rem;line-height:1}.close-button,.ledger-lead{background:var(--color-surface)}.ledger-lead{display:grid;grid-gap:7px;gap:7px;padding:24px;border:1px solid var(--color-line);border-radius:24px;box-shadow:var(--shadow-subtle)}.balance-label{color:var(--color-primary-strong);font-size:.75rem;font-weight:800;letter-spacing:.07em;line-height:1.1;text-transform:uppercase}.ledger-lead .balance-label+.balance-amount{margin-top:2px}.balance-amount{font-size:clamp(2.15rem,9vw,3rem);font-weight:800;line-height:1.05;letter-spacing:-.035em}.balance-caption{color:var(--color-ink-secondary);font-size:.9375rem}.confirmed-line{color:var(--color-primary-strong);font-size:.8rem}.section-block{display:grid;grid-gap:12px;gap:12px;padding:20px;border:1px solid var(--color-line);border-radius:24px;background:var(--color-surface);box-shadow:var(--shadow-subtle)}.section-title{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.section-title h2{min-width:0}.record-list{display:grid;grid-gap:8px;gap:8px}.record-row{display:flex;align-items:center;justify-content:space-between;gap:12px;min-width:0;width:100%;min-height:56px;padding:10px 12px;border:1px solid rgba(223,211,197,.9);border-radius:16px;background:var(--color-surface);text-align:left;color:inherit;transition:background-color .15s ease,border-color .15s ease,transform .15s ease}.record-row:hover{border-color:rgba(155,125,224,.58);background:var(--color-primary-soft)}.record-row:active{transform:translateY(1px)}.section-block .chore-row,.section-block .record-row,.section-block .shopping-row{min-height:56px;padding-block:8px;padding-inline:0;border:0;border-bottom:1px solid var(--color-line);border-radius:0}.section-block .chore-row:last-child,.section-block .record-row:last-child,.section-block .shopping-row:last-child{border-bottom:0}.section-block .chore-list,.section-block .record-list,.section-block .shopping-list{gap:0}.record-main,.record-side{min-width:0;display:grid;grid-gap:3px;gap:3px}.record-main{flex:1 1}.record-main span,.record-main strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.record-main span{color:var(--color-ink-secondary);font-size:.875rem}.record-side{flex-shrink:0;justify-items:end}.record-side strong{font-size:1rem;font-weight:700}.movement-amount.negative{color:var(--color-positive)}.row-arrow{color:var(--color-primary-strong);font-size:1.25rem;line-height:1}.status{display:inline-flex;align-items:center;border-radius:999px;padding:3px 8px;font-size:.75rem;font-weight:700}.status-pending_approval,.status-pending_confirmation{color:var(--color-pending);background:var(--color-pending-soft)}.status-approved,.status-confirmed{color:var(--color-primary-strong);background:var(--color-primary-soft)}.status-deleted_by_creator,.status-rejected{color:var(--color-negative);background:var(--color-negative-soft)}.empty-row{padding:12px 4px;color:var(--color-ink-muted);font-size:.875rem}.notice-row{display:flex;justify-content:space-between;gap:16px;padding:14px;border:1px solid var(--color-pending);border-radius:16px;background:var(--color-pending-soft)}.notice-row.negative{border-color:var(--color-negative);background:var(--color-negative-soft)}.notice-row strong{display:block}.notice-row p{margin-top:2px;color:var(--color-ink-secondary);font-size:.875rem}.summary-list{display:grid;grid-gap:0;gap:0;border-top:1px solid var(--color-line)}.summary-list div{display:flex;justify-content:space-between;gap:16px;padding:11px 0;border-bottom:1px solid var(--color-line)}.summary-list dt{color:var(--color-ink-secondary)}.summary-list dd{margin:0}.upcoming-strip{display:flex;justify-content:space-between;gap:16px;padding:16px;border:1px solid var(--color-line);border-radius:18px;background:var(--color-surface-muted)}.upcoming-strip div{min-width:0;display:grid;grid-gap:4px;gap:4px}.upcoming-strip p:last-child{color:var(--color-ink-secondary);font-size:.875rem}.tab-row{display:flex;gap:4px;overflow-x:auto;padding:4px;border:1px solid var(--color-line);border-radius:16px;background:var(--color-surface-muted);scrollbar-width:none}.tab-row::-webkit-scrollbar{display:none}.tab{flex:1 1;flex-shrink:0;min-height:44px;padding:9px 12px;border:0;border-radius:12px;background:transparent;color:var(--color-ink-secondary);font-size:.875rem;font-weight:700}.tab.active{color:var(--color-primary-strong);background:var(--color-surface);box-shadow:var(--shadow-subtle)}.filter-row{display:flex;align-items:center;gap:8px}.search-control{min-width:0;flex:1 1}.search-control input{width:100%}.filter-panel{display:grid;grid-gap:10px;gap:10px;padding:14px;border:1px solid var(--color-line);background:var(--color-surface-muted);border-radius:18px}.chip-row{display:flex;gap:8px;flex-wrap:wrap}.chip{min-height:44px;padding:9px 10px;border:1px solid var(--color-line);border-radius:999px;background:var(--color-surface);color:var(--color-ink-secondary);font-size:.875rem}.field{display:grid;align-content:start;grid-gap:6px;gap:6px}.field label,.radio-field legend{color:var(--color-ink-secondary);font-size:.875rem;font-weight:600}input,select,textarea{width:100%;min-height:44px;border:1px solid var(--color-line);border-radius:14px;padding:10px 12px;background:var(--color-surface);color:var(--color-ink);font-size:16px}textarea{min-height:88px;resize:vertical}.select-wrap{position:relative}.select-wrap select{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding-right:36px}.select-wrap span{position:absolute;top:50%;right:12px;transform:translateY(-50%);color:var(--color-ink-secondary);pointer-events:none}.field-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:12px;gap:12px}.radio-field{display:grid;grid-gap:10px;gap:10px;padding:0;border:0}.choice-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:8px;gap:8px}.category-choice-grid{grid-template-columns:repeat(2,minmax(0,1fr));max-height:172px;overflow-y:auto;padding:2px}.choice-button{min-height:44px;padding:9px 10px;border:1px solid var(--color-line);border-radius:14px;background:var(--color-surface);color:var(--color-ink-secondary);font:inherit;font-size:.875rem;text-align:left}.choice-button.selected,.choice-button:focus-visible,.choice-button:hover{border-color:var(--color-primary);color:var(--color-primary-strong);background:var(--color-primary-soft)}.choice-button:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.date-choice{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:8px;gap:8px}.date-input-hidden{position:absolute;width:1px;min-height:1px;padding:0;border:0;opacity:0;pointer-events:none}.installment-options{display:grid;grid-gap:8px;gap:8px}.radio-field label{display:flex;align-items:center;gap:10px;min-height:44px;color:var(--color-ink-secondary)}.radio-field input{width:20px;min-height:20px;accent-color:var(--color-primary)}.sheet-fields{display:grid;grid-gap:16px;gap:16px}.inline-reveal,.note-well,.notice-box{padding:14px;border:1px solid var(--color-line);background:var(--color-surface-muted);border-radius:16px}.effect-note{margin:16px 0;padding:12px;border:1px solid rgba(155,125,224,.35);border-radius:14px;color:var(--color-primary-strong);background:var(--color-primary-soft);font-size:.875rem}.detail-list{display:grid;grid-gap:0;gap:0;border-top:1px solid var(--color-line)}.detail-list div{display:flex;justify-content:space-between;gap:16px;padding:12px 0;border-bottom:1px solid var(--color-line)}.detail-list span:first-child,.note-well>span{color:var(--color-ink-secondary);font-size:.875rem}.note-well{display:grid;grid-gap:5px;gap:5px}.note-well,.notice-box{margin:16px 0}.notice-box.negative{color:var(--color-negative);background:var(--color-negative-soft)}.notice-box p{margin-top:4px;color:var(--color-ink-secondary);font-size:.875rem}.inline-error{padding:10px 12px;color:var(--color-negative);background:var(--color-negative-soft);border:1px solid var(--color-negative);font-size:.875rem}.sheet{position:fixed;inset:auto 0 0;width:100%;max-width:none;max-height:min(92dvh,calc(100dvh - env(safe-area-inset-top)));margin:0;padding:0;border:0;border-top:1px solid var(--color-line);border-radius:26px 26px 0 0;background:var(--color-surface);color:var(--color-ink);overflow:hidden;box-shadow:0 18px 56px -18px rgba(53,36,61,.42);transform-origin:bottom center;transform:translateY(100%);opacity:0}.sheet[open]{display:flex;flex-direction:column}.sheet[data-open=true]{transform:translateY(var(--sheet-drag-y,0));opacity:1;transition:transform .18s cubic-bezier(.22,1,.36,1);animation:sheet-enter .22s cubic-bezier(.22,1,.36,1) both}.sheet-handle{display:grid;place-items:center;flex:0 0 24px;width:100%;padding:10px 0;touch-action:none;cursor:-webkit-grab;cursor:grab}.sheet-handle:active{cursor:-webkit-grabbing;cursor:grabbing}.sheet-handle span{display:block;align-self:center;width:38px;height:4px;border-radius:999px;background:var(--color-line)}.sheet::-webkit-backdrop{background:var(--color-overlay);animation:sheet-backdrop-in .18s ease-out both}.sheet::backdrop{background:var(--color-overlay);animation:sheet-backdrop-in .18s ease-out both}.sheet-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-shrink:0;padding:14px 20px;border-bottom:1px solid var(--color-line)}.sheet-header>div{min-width:0}.sheet-header h2{margin-top:4px;font-size:1rem}.sheet-header p{margin-top:4px;color:var(--color-ink-secondary);font-size:.8125rem}.sheet :is(button,input,select,textarea):focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;box-shadow:0 0 0 4px rgba(155,125,224,.22)}.sheet-body{min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:18px 20px calc(20px + env(safe-area-inset-bottom));scroll-padding-block:16px}.sheet-body[hidden]{display:none}.sheet-body form{display:grid;grid-gap:14px;gap:14px}.sheet-body .sheet-fields{gap:14px}.sheet-body>.sheet-actions,.sheet-body>form>.sheet-actions{position:-webkit-sticky;position:sticky;bottom:calc(-20px - env(safe-area-inset-bottom));margin:4px -20px calc(-20px - env(safe-area-inset-bottom));padding:12px 20px calc(12px + env(safe-area-inset-bottom));border-top:1px solid var(--color-line);background:var(--color-surface);box-shadow:0 -14px 24px -24px rgba(53,36,61,.42)}.sheet-menu{display:grid;grid-gap:8px;gap:8px}.account-summary{display:flex;align-items:center;gap:12px;min-height:64px;padding:12px;border:1px solid var(--color-line);border-radius:18px;background:var(--color-surface-muted)}.account-summary>div{min-width:0;display:grid;grid-gap:2px;gap:2px}.account-summary>div span{color:var(--color-ink-secondary);font-size:.8125rem;overflow-wrap:anywhere}.account-avatar{display:grid;place-items:center;flex:0 0 40px;width:40px;height:40px;border-radius:14px;background:var(--color-primary);color:var(--color-ink);font-weight:800}.sheet-menu-item{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;min-height:56px;padding:10px 12px;border:1px solid var(--color-line);border-radius:16px;background:var(--color-surface);color:var(--color-ink);text-align:left;transition:background-color .15s ease,border-color .15s ease,color .15s ease}.sheet-menu-item>span{min-width:0;display:grid;grid-gap:2px;gap:2px}.sheet-menu-item small{color:var(--color-ink-secondary);font-size:.8125rem;line-height:1.35}.sheet-menu-item svg{flex:0 0 20px;width:20px;height:20px}.sheet-menu-item.selected,.sheet-menu-item:focus-visible,.sheet-menu-item:hover{border-color:var(--color-primary);background:var(--color-primary-soft);color:var(--color-primary-strong)}.sheet-menu-item:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.danger-menu-item{color:var(--color-negative)}.danger-menu-item:focus-visible,.danger-menu-item:hover{border-color:var(--color-negative);background:var(--color-negative-soft);color:var(--color-negative)}.muted-menu-item{color:var(--color-ink-secondary);background:var(--color-surface-muted)}.filter-trigger{display:inline-flex;align-items:center;justify-content:center;gap:8px;position:relative;flex:0 0 auto;min-width:88px}.filter-trigger small{display:inline-grid;place-items:center;min-width:18px;height:18px;padding:0 4px;border-radius:999px;background:var(--color-primary);color:var(--color-ink);font-size:.6875rem;font-weight:800;line-height:1}.action-confirm{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:start;grid-gap:12px;gap:12px;padding:14px;border:1px solid var(--color-negative);border-radius:18px;background:var(--color-negative-soft)}.action-confirm-icon{display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:var(--color-negative);color:var(--color-surface)}.action-confirm-icon svg{width:17px;height:17px}.action-confirm>div:nth-child(2){min-width:0;display:grid;grid-gap:3px;gap:3px}.action-confirm p{color:var(--color-ink-secondary);font-size:.875rem;line-height:1.4}.action-confirm .sheet-actions{grid-column:1/-1;margin-top:2px}@keyframes sheet-enter{0%{opacity:0}to{opacity:1}}@keyframes sheet-dialog-enter{0%{opacity:0}to{opacity:1}}@keyframes sheet-backdrop-in{0%{opacity:0}to{opacity:1}}@media (min-width:700px){.sheet{inset:0;width:min(calc(100% - 48px),560px);max-height:calc(100dvh - 48px);margin:auto;border:1px solid var(--color-line);border-radius:24px;box-shadow:0 18px 56px -18px rgba(53,36,61,.38);transform-origin:center}.sheet[data-open=true]{animation-name:sheet-dialog-enter}.sheet-handle{display:none}.sheet-body>.sheet-actions,.sheet-body>form>.sheet-actions{bottom:-20px;margin-bottom:-20px;padding-bottom:12px}}.chore-list,.shopping-list{display:grid;grid-gap:8px;gap:8px}.shopping-row{display:flex;align-items:center;gap:12px;min-height:64px;padding:12px 13px;border:1px solid var(--color-line);border-radius:16px;background:var(--color-surface)}.shopping-row input{flex:0 0 24px;width:24px;min-height:24px;accent-color:var(--color-primary)}.shopping-row span{min-width:0;display:grid;grid-gap:2px;gap:2px}.shopping-row small{color:var(--color-ink-secondary);font-size:.875rem}.progress-summary{display:flex;align-items:center;justify-content:space-between;gap:16px}.progress-summary div{display:grid;grid-gap:3px;gap:3px}.progress-summary span{color:var(--color-ink-secondary);font-size:.875rem}.progress-number{color:var(--color-primary-strong);font-size:1.1rem}.progress-track{height:8px;overflow:hidden;border-radius:99px;background:var(--color-primary-soft)}.progress-track span{display:block;height:100%;border-radius:inherit;background:var(--color-primary)}.shopping-mode .shopping-row{min-height:72px}.shopping-mode .shopping-row input{flex-basis:28px;width:28px;min-height:28px}.chore-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 13px;border:1px solid var(--color-line);border-radius:16px;background:var(--color-surface)}.chore-row>div{min-width:0;display:grid;grid-gap:3px;gap:3px}.chore-row span{color:var(--color-ink-secondary);font-size:.875rem}.chore-row .button{flex-shrink:0}.bottom-nav{position:fixed;z-index:20;right:auto;bottom:8px;left:50%;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));width:min(calc(100% - 24px),680px);min-height:72px;padding:8px 10px max(8px,env(safe-area-inset-bottom));transform:translateX(-50%);border:1px solid var(--color-line);border-radius:22px;background:rgba(255,252,247,.97);box-shadow:0 14px 34px -18px rgba(53,36,61,.36);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.nav-item{position:relative;display:grid;place-items:center;grid-gap:2px;gap:2px;min-height:52px;border:0;border-radius:16px;background:none;color:var(--color-ink-muted);font-size:.75rem;font-weight:700}.nav-item.active{color:var(--color-primary-strong);background:var(--color-primary-soft)}.nav-item:focus-visible{outline:2px solid var(--color-focus);outline-offset:-2px;box-shadow:0 0 0 4px rgba(155,125,224,.22)}.nav-add{display:grid;place-items:center;align-self:center;justify-self:center;width:56px;height:56px;border:0;border-radius:50%;transform:translateY(-14px);background:var(--color-primary);color:var(--color-ink);box-shadow:0 7px 16px -8px rgba(94,69,142,.7);transition:background-color .15s ease,transform .15s ease}.nav-add:focus-visible,.nav-add:hover{background:#ac91e9;color:var(--color-ink)}.nav-add:active{transform:translateY(-12px) scale(.98)}.nav-add svg{width:28px;height:28px}.nav-item small{position:absolute;top:1px;right:15%;min-width:18px;padding:1px 4px;border-radius:999px;background:var(--color-pending-soft);color:var(--color-pending);font-size:.7rem;font-weight:800}.network-banner,.sync-note,.toast{position:fixed;z-index:8;left:50%;transform:translateX(-50%);width:min(calc(100% - 32px),520px);padding:10px 12px;border-radius:14px;font-size:.875rem;box-shadow:var(--shadow-subtle)}.network-banner{top:72px;background:var(--color-pending-soft);color:var(--color-pending)}.toast{max-width:calc(100% - 32px);background:var(--color-primary-strong);color:var(--color-surface)}.sync-note,.toast{right:16px;bottom:calc(96px + env(safe-area-inset-bottom));left:auto;transform:none;width:auto}.sync-note{color:var(--color-ink-secondary);background:var(--color-surface)}.empty-state,.error-state{display:grid;grid-gap:8px;gap:8px;padding:22px 0}.empty-state p,.error-state p{color:var(--color-ink-secondary)}.loading-rows{display:grid;grid-gap:12px;gap:12px;color:var(--color-ink-muted)}.loading-rows span{height:52px;border-radius:16px;background:var(--color-surface-muted);animation:pulse 1.2s ease-in-out infinite}.loading-rows span:nth-child(2){animation-delay:.15s}.loading-rows span:nth-child(3){animation-delay:.3s}@keyframes pulse{50%{opacity:.45}}@media (prefers-reduced-motion:reduce){*,:after,:before{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.close-confirm{display:grid;grid-gap:10px;gap:10px;margin:0;padding:16px 20px calc(16px + env(safe-area-inset-bottom));border-top:1px solid var(--color-pending);border-radius:0;background:var(--color-pending-soft)}.close-confirm strong{font-size:.95rem}.close-confirm p{color:var(--color-ink-secondary);font-size:.875rem}.close-confirm .sheet-actions{display:grid;grid-template-columns:1fr;grid-gap:8px;gap:8px}.close-confirm .button{width:100%}.error-banner{background:var(--color-negative-soft);color:var(--color-negative)}.inline-actions,.shopping-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.shopping-actions{justify-content:flex-end}.shopping-actions .button{flex:0 1 auto}@media (min-width:700px){.app-shell{padding-bottom:120px}.app-content,.app-header{padding-inline:24px}}@media (min-width:960px){.app-header{padding-inline:max(24px,calc((100vw - 1180px) / 2))}.app-content{width:min(100%,820px)}}.wordmark{display:inline-flex;align-items:baseline;color:var(--color-ink);font-family:Nunito Sans,ui-sans-serif,system-ui,sans-serif;font-size:1.45rem;font-style:normal;font-weight:800;letter-spacing:-.06em;line-height:1;white-space:nowrap}.wordmark span{display:inline-block}.wordmark em{color:var(--color-primary);font-size:1.25em;font-style:normal;letter-spacing:-.12em;margin-left:-.02em;transform:translateY(-.02em)}.auth-wordmark{display:flex;justify-content:center;margin-bottom:8px}.logout-button{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:44px;margin-left:auto;padding:8px 10px;border:1px solid transparent;border-radius:12px;background:transparent;color:var(--color-negative);font-size:.875rem;font-weight:600}.logout-button:hover{background:var(--color-negative-soft)}.logout-button:focus-visible{outline:2px solid var(--color-negative);outline-offset:2px}.button-with-icon svg,.logout-button svg,.nav-icon svg{width:16px;height:16px;flex-shrink:0}.logout-button svg{width:20px;height:20px}.button-with-icon{display:inline-flex;align-items:center;justify-content:center;gap:8px}.text-button svg{width:16px;height:16px;flex-shrink:0}.nav-icon{display:inline-flex;align-items:center;min-height:16px}.close-button svg{width:16px;height:16px;flex-shrink:0}.install-banner{position:fixed;z-index:9;bottom:calc(104px + env(safe-area-inset-bottom));left:50%;display:flex;align-items:center;justify-content:space-between;gap:16px;width:min(calc(100% - 32px),520px);transform:translateX(-50%);padding:14px 16px;border:1px solid var(--color-line);border-radius:18px;background:var(--color-surface);color:var(--color-ink);box-shadow:var(--shadow-subtle)}.install-banner strong{display:block;font-size:.95rem}.install-banner p{margin:3px 0 0;color:var(--color-ink-secondary);font-size:.8rem;line-height:1.35}.install-banner-actions{display:flex;align-items:center;gap:8px;flex-shrink:0}.install-banner-actions .text-button{min-height:40px;white-space:nowrap}.mode-toggle-button{justify-self:start;min-height:40px}@media (max-width:699px){html{text-size-adjust:100%}body{font-size:15px;line-height:1.48}h1{font-size:1.25rem}h2{font-size:1rem}.app-header{height:56px}.app-content{padding-top:16px}.view-stack{gap:18px}.ledger-lead{padding:20px}.balance-amount{font-size:2.2rem;overflow-wrap:anywhere}.section-block{gap:10px;padding:16px;border-radius:20px}.section-block .chore-row,.section-block .record-row,.section-block .shopping-row{min-height:56px;padding-block:8px}.chore-row span,.record-main span,.shopping-row small{font-size:.8125rem}.record-side strong{font-size:.9375rem}.record-side{max-width:55%}.record-side strong,.status{overflow-wrap:anywhere}.status{font-size:.6875rem}.button{min-height:44px;font-size:.8125rem}input,select,textarea{min-width:0;font-size:16px}.field-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.field,.field-grid>*,.notice-row>*,.summary-list dd{min-width:0}.chore-row,.detail-list,.sheet-body,.shopping-row{overflow-wrap:anywhere}.detail-list strong,.summary-list dd{text-align:right}.app-shell{padding-bottom:calc(104px + env(safe-area-inset-bottom))}.install-banner{flex-wrap:wrap;gap:8px}.action-confirm .sheet-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:560px){.action-confirm .sheet-actions,.sheet .field-grid{grid-template-columns:minmax(0,1fr)}}@media (max-width:380px){.field-grid{grid-template-columns:minmax(0,1fr)}.notice-row,.page-title-row,.upcoming-strip{flex-wrap:wrap;gap:8px}}@media (min-width:700px){.bottom-nav{bottom:16px;min-height:76px;padding:8px 10px;border-radius:24px}}