:root{--app-background: #EDF0EF;--card: #FFFFFF;--ink: #0E1416;--ink-secondary: #6C7679;--separator: #E4E8E7;--category-slot-1: #2a78d6;--category-slot-2: #eb6834;--category-slot-3: #1baf7a;--category-slot-4: #eda100;--category-slot-5: #e87ba4;--category-slot-6: #008300;--category-slot-7: #0072a1;--category-slot-8: #894ed6;--category-slot-9: #716400;--category-slot-10: #00a59f;--category-slot-11: #739800;--category-slot-12: #ab37ab;--category-slot-13: #565600;--category-slot-14: #73740d;--category-slot-15: #8e8f33;--category-slot-16: #a8aa60;--category-slot-17: #c3c690;--category-slot-18: #dcdebe;--category-slot-19: #16632a;--category-slot-20: #27833e;--category-slot-21: #469f58;--category-slot-22: #70b87b;--category-slot-23: #9cd1a2;--category-slot-24: #c5e4c9;--category-slot-25: #00605c;--category-slot-26: #117f7a;--category-slot-27: #399a95;--category-slot-28: #68b4af;--category-slot-29: #97cdc9;--category-slot-30: #c3e2df;--category-slot-31: #10558f;--category-slot-32: #2172b9;--category-slot-33: #408dd7;--category-slot-34: #6aaaea;--category-slot-35: #97c6f6;--category-slot-36: #c3defb;--category-slot-37: #59428a;--category-slot-38: #775bb3;--category-slot-39: #9176d1;--category-slot-40: #ab95e4;--category-slot-41: #c5b6f2;--category-slot-42: #ddd5f9;--category-slot-43: #76376e;--category-slot-44: #9a4d91;--category-slot-45: #b868ad;--category-slot-46: #cf89c5;--category-slot-47: #e2adda;--category-slot-48: #efcfea;--category-slot-49: #873431;--category-slot-50: #b04945;--category-slot-51: #ce655f;--category-slot-52: #e48780;--category-slot-53: #f3aca5;--category-slot-54: #facfca;--category-slot-55: #7f3e00;--category-slot-56: #a6560d;--category-slot-57: #c47132;--category-slot-58: #da915f;--category-slot-59: #ebb48f;--category-slot-60: #f5d3bd;--category-slot-61: #6a4a38;--category-slot-62: #8c644f;--category-slot-63: #a87f68;--category-slot-64: #c09c88;--category-slot-65: #d6baab;--category-slot-66: #e8d7ce;--category-slot-67: #4a545c;--category-slot-68: #64717a;--category-slot-69: #7e8b95;--category-slot-70: #9ba6af;--category-slot-71: #b9c2c9;--category-slot-72: #d6dbe0;--status-red: #e34948;--accent: #F0B429;--accent-ink: #1A1206;--scrim: rgba(14, 20, 22, .4)}:root[data-theme=dark]{--app-background: #101415;--card: #1C2123;--ink: #F1F5F4;--ink-secondary: #97A1A3;--separator: #272D2F;--category-slot-1: #3987e5;--category-slot-2: #d95926;--category-slot-3: #199e70;--category-slot-4: #c98500;--category-slot-5: #d55181;--category-slot-6: #008300;--category-slot-7: #0087ac;--category-slot-8: #8f54dc;--category-slot-9: #827200;--category-slot-10: #00a59f;--category-slot-11: #6b8f00;--category-slot-12: #b542b5;--status-red: #e66767;--accent: #E0A42B;--accent-ink: #1A1206;--scrim: rgba(0, 0, 0, .55)}*{box-sizing:border-box}body{margin:0;background:var(--app-background);color:var(--ink);font:14px -apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;-webkit-font-smoothing:antialiased}#app{max-width:480px;margin:0 auto;padding:14px 12px calc(96px + env(safe-area-inset-bottom,0px))}.home-skeleton,.home-ready,.home-empty,.home-error,.home-readonly{display:flex;flex-direction:column;gap:12px}.card{background:var(--card);border-radius:14px;overflow:hidden}.chart-card{position:relative;padding:16px 12px 20px}.add-btn{position:absolute;right:12px;bottom:12px;width:56px;height:56px;border-radius:50%;border:0;background:var(--accent);color:var(--accent-ink);display:flex;align-items:center;justify-content:center;cursor:pointer}.add-btn:focus-visible{outline:2px solid var(--category-slot-1);outline-offset:2px}.menu-btn{width:44px;height:44px;border:0;background:none;color:var(--ink);display:flex;align-items:center;justify-content:center;cursor:pointer}.chart-card .menu-btn{position:absolute;left:12px;bottom:18px}.menu-btn:focus-visible{outline:2px solid var(--category-slot-1);outline-offset:2px}.donut-wrap{position:relative;display:flex;justify-content:center;padding:4px 0 2px}.donut{display:block;width:196px;height:196px}.donut circle[data-category-id]{cursor:pointer}.donut-c{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;pointer-events:none;text-align:center}.donut-c .amt{font-size:28px;font-weight:700;letter-spacing:-.035em;font-variant-numeric:tabular-nums;line-height:1}.donut-c .amt.amt-zero{color:var(--ink-secondary)}.donut-skeleton{width:196px;height:196px;margin:4px auto 2px;border-radius:50%;background:var(--separator)}.collapsed-header{position:fixed;top:0;left:0;right:0;max-width:480px;margin:0 auto;height:68px;padding:7px 12px;background:var(--card);border-bottom:1px solid var(--separator);display:flex;flex-direction:column;justify-content:space-between}.collapsed-row{display:flex;align-items:center;height:44px}.collapsed-label{flex:1;min-width:0;text-align:center;font-size:15px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.collapsed-total{flex:none;font-size:15px;font-weight:600;font-variant-numeric:tabular-nums}.collapsed-bar{display:flex;gap:2px;height:10px;border-radius:999px;overflow:hidden}.collapse-sentinel{height:1px}@media(prefers-reduced-motion:no-preference){.collapsed-header{animation:collapsed-header-in .16s ease-out}}@keyframes collapsed-header-in{0%{opacity:0;transform:translateY(-100%)}to{opacity:1;transform:translateY(0)}}.dot{width:9px;height:9px;border-radius:50%;flex:none}.ranked-rows{display:flex;flex-direction:column;gap:12px}.row{display:flex;align-items:center;gap:10px;padding:10px 13px;cursor:pointer}.swatch{width:36px;height:36px;border-radius:50%;flex:none}.row .nm{flex:1;min-width:0;font-size:13.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.row .pct{flex:none;font-size:11px;color:var(--ink-secondary);width:34px;text-align:right;font-variant-numeric:tabular-nums}.row .val{flex:none;font-size:13.5px;font-weight:600;font-variant-numeric:tabular-nums}.row:focus-visible{outline:2px solid var(--category-slot-1);outline-offset:-2px}.ranked-rows-skeleton{display:flex;flex-direction:column;gap:12px}.ranked-rows-skeleton .card{height:56px;background:var(--card)}.budget-alert-strip{display:flex;flex-direction:column;gap:8px;padding:10px 12px;font-size:12.5px}.alert-line{display:flex;align-items:flex-start;gap:8px}.alert-line--exceeded{color:var(--status-red);font-weight:600}.alert-line--approaching{color:var(--ink);font-weight:400}.alert-glyph{flex:none;margin-top:1px}.home-error p,.home-readonly p{margin:4px 4px 0;color:var(--ink-secondary);font-size:14px}.empty-copy{margin:12px 0 0;color:var(--ink-secondary);font-size:13.5px;text-align:center}.home-error button[data-action=retry]{font:inherit;font-weight:600;background:var(--ink);color:var(--app-background);border:0;border-radius:12px;padding:10px 16px;margin:8px 4px 0;cursor:pointer}.offline-banner{font-size:12px;color:var(--ink-secondary)}.add-expense-form,.add-expense-skeleton,.add-expense-error,.add-expense-empty,.add-expense-readonly{display:flex;flex-direction:column;gap:12px}.field{display:flex;align-items:center;gap:8px;padding:14px 16px}.amount-input{flex:1;min-width:0;border:0;background:transparent;font:inherit;font-size:34px;font-weight:600;letter-spacing:-.03em;font-variant-numeric:tabular-nums;color:var(--ink)}.amount-input:focus{outline:none}.amount-input::placeholder,.comment-input::placeholder{color:var(--ink-secondary)}.currency-suffix{font-size:20px;font-weight:500;color:var(--ink-secondary)}.currency-suffix-skeleton{width:32px;height:20px;border-radius:6px;background:var(--card)}.account-field{display:flex;flex-direction:column;gap:2px;margin-top:8px}.account-label{font-size:12px;color:var(--ink-secondary)}.account-name{font-size:15px;font-weight:500;color:var(--ink)}.account-name-skeleton{width:96px;height:18px;border-radius:6px;background:var(--card)}.field-error{margin:-6px 4px 0;min-height:15px;font-size:12px;color:var(--status-red)}.date-row{display:flex;align-items:center;gap:8px;margin-top:12px}.date-pills{display:flex;gap:4px;overflow-x:auto;flex:1}.date-pill{flex:0 0 auto;width:88px;height:44px;padding:6px 10px;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:2px;border:0;border-radius:8px;background:transparent;color:var(--ink);cursor:pointer;text-align:left}.date-pill.selected{background:var(--ink);color:var(--card)}.date-pill:focus-visible{outline:2px solid var(--category-slot-1);outline-offset:2px}.date-pill-date{font-size:13.5px;font-weight:600;letter-spacing:-.01em}.date-pill-label{font-size:11px}.date-calendar-btn{flex:0 0 auto;width:44px;height:44px;display:flex;align-items:center;justify-content:center;border:0;border-radius:12px;background:transparent;color:var(--ink);cursor:pointer}.date-calendar-btn:focus-visible{outline:2px solid var(--category-slot-1);outline-offset:2px}.field-label{font-size:12px;color:var(--ink-secondary);margin-bottom:4px}.chip-row{display:flex;flex-wrap:wrap;gap:8px}.chip{font:inherit;font-size:13px;font-weight:600;padding:9px 14px;border-radius:999px;border:1px solid var(--separator);background:var(--card);color:var(--ink);cursor:pointer}.chip.active{background:var(--ink);border-color:var(--ink);color:var(--app-background)}.chip:focus-visible{outline:2px solid var(--category-slot-1);outline-offset:2px}.comment-input{font:inherit;font-size:14px;color:var(--ink);background:var(--card);border:0;border-radius:14px;padding:12px 16px;min-height:64px;resize:vertical}.submit-error{margin:0 4px;font-size:12.5px;color:var(--status-red)}.field-skeleton{height:60px;border-radius:14px;background:var(--card);box-shadow:inset 0 0 0 1px var(--separator)}.chips-skeleton{height:38px;border-radius:14px;background:var(--card);box-shadow:inset 0 0 0 1px var(--separator)}.expenses-ready,.expenses-skeleton,.expenses-error,.expenses-empty,.expenses-readonly{display:flex;flex-direction:column;gap:12px}.exp-filter{margin:0 4px;font-size:12.5px;color:var(--ink-secondary)}.exp-day-header{display:flex;justify-content:space-between;align-items:baseline;padding:10px 13px;border-bottom:1px solid var(--separator);font-size:12px;font-weight:600;color:var(--ink-secondary)}.exp-day-subtotal{font-variant-numeric:tabular-nums}.exp-row{display:flex;align-items:center;gap:10px;padding:10px 13px;border-bottom:1px solid var(--separator);min-height:42px}.exp-row:last-child{border-bottom:0}.exp-main{min-width:0;flex:1}.exp-title{font-size:13.5px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.exp-comment,.exp-tags{font-size:11.5px;color:var(--ink-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.exp-author{flex:none;width:20px;height:20px;border-radius:50%;background:var(--separator);color:var(--ink-secondary);font-size:10.5px;font-weight:700;display:flex;align-items:center;justify-content:center}.exp-amount{flex:none;font-size:13.5px;font-weight:600;font-variant-numeric:tabular-nums}.load-more{align-self:center;font:inherit;font-size:13px;font-weight:600;background:var(--card);color:var(--ink);border:0;border-radius:12px;padding:10px 16px;cursor:pointer}.end-of-list{margin:4px;text-align:center;font-size:12px;color:var(--ink-secondary)}.expenses-empty p,.expenses-error p,.expenses-readonly p{margin:4px 4px 0;color:var(--ink-secondary);font-size:14px}.expenses-error button[data-action=retry]{align-self:flex-start;font:inherit;font-weight:600;background:var(--ink);color:var(--app-background);border:0;border-radius:12px;padding:10px 16px;margin:0 4px;cursor:pointer}.exp-day-skeleton{height:126px;border-radius:14px;background:var(--card);box-shadow:inset 0 0 0 1px var(--separator)}.detail-screen{display:flex;flex-direction:column;gap:12px}.detail-card{display:flex;flex-direction:column;gap:6px;padding:16px}.detail-header{display:flex;align-items:center;gap:8px}.detail-category{font-size:13px;font-weight:600;color:var(--ink-secondary)}.detail-amount{font-size:28px;font-weight:700;letter-spacing:-.035em;font-variant-numeric:tabular-nums}.detail-meta{display:flex;gap:10px;font-size:12.5px;color:var(--ink-secondary)}.detail-comment,.detail-tags{margin:0;font-size:13px;color:var(--ink)}.detail-author{font-weight:600}.detail-actions,.detail-field-picker,.detail-edit-actions{display:flex;flex-wrap:wrap;gap:8px}.detail-actions button,.detail-field-picker button,.detail-edit-actions button{font:inherit;font-size:13px;font-weight:600;padding:10px 16px;border-radius:12px;border:0;background:var(--card);color:var(--ink);cursor:pointer}.detail-actions button[data-action=delete],.detail-actions button.danger{background:var(--card);color:var(--status-red)}.detail-actions button[data-action=open-picker],.detail-edit-actions button[data-action=save-amount],.detail-edit-actions button[data-action=save-comment],.detail-edit-actions button[data-action=save-tags]{background:var(--ink);color:var(--app-background)}.detail-edit{display:flex;flex-direction:column;gap:10px}.detail-undo{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;background:var(--card);border-radius:14px}.detail-undo p{margin:0;font-size:13.5px}.detail-undo button{font:inherit;font-size:13px;font-weight:600;background:transparent;color:var(--ink);border:0;padding:6px 8px;cursor:pointer}.detail-not-found p,.detail-readonly p,.detail-error p{margin:4px 4px 0;color:var(--ink-secondary);font-size:14px}.detail-error button[data-action=retry]{align-self:flex-start;font:inherit;font-weight:600;background:var(--ink);color:var(--app-background);border:0;border-radius:12px;padding:10px 16px;margin:4px 4px 0;cursor:pointer}.detail-skeleton,.budgets-ready,.budgets-skeleton,.budgets-error,.budgets-empty,.budgets-readonly{display:flex;flex-direction:column;gap:12px}.budget-row{display:flex;flex-direction:column;gap:6px;padding:12px 13px;border-bottom:1px solid var(--separator);cursor:pointer}.budget-row:last-child{border-bottom:0}.budget-row-head{display:flex;align-items:center;gap:8px}.budget-cat{font-size:13.5px;font-weight:600;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.budget-amt{margin-left:auto;flex:none;font-size:12.5px;font-weight:600;font-variant-numeric:tabular-nums}.budget-bar-track{position:relative;height:8px;border-radius:999px;background:var(--separator)}.budget-bar-fill{height:100%;border-radius:999px}.budget-bar-tick{position:absolute;top:-2px;width:2px;height:12px;border-radius:1px;background:var(--ink);transform:translate(-1px)}.budget-status{font-size:11.5px;color:var(--ink-secondary)}.budget-status--warn{color:var(--ink)}.budget-status--over{color:var(--status-red);font-weight:600}.budgets-empty-note{padding:2px 4px}.budgets-empty-note p{margin:0;color:var(--ink-secondary);font-size:13px}.budget-invites{display:flex;flex-direction:column}.budget-invite{display:flex;align-items:center;gap:10px;padding:12px 13px;border:0;border-bottom:1px solid var(--separator);background:transparent;font:inherit;color:var(--ink);text-align:left;cursor:pointer}.budget-invite:last-child{border-bottom:0}.budget-invite-nm{min-width:0;font-size:13.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.budget-invite-cta{margin-left:auto;flex:none;font-size:12px;font-weight:600;color:var(--ink-secondary)}.budget-form{display:flex;flex-direction:column;gap:10px;padding:16px}.budget-form-title{margin:0;font-size:13.5px;font-weight:600}.detail-edit-actions button[data-action=save-budget]{background:var(--ink);color:var(--app-background)}.detail-edit-actions button[data-action=save-budget]:disabled{background:var(--separator);color:var(--ink-secondary);cursor:default}.detail-edit-actions button[data-action=delete-budget]{background:var(--card);color:var(--status-red)}.budget-form-screen{display:flex;flex-direction:column;gap:20px}.budget-form-header{display:flex;align-items:center;gap:8px;margin-top:6px}.budget-form-category{font-size:15px;font-weight:600;color:var(--ink)}.budget-form-spent{margin:-16px 0 0;font-size:12.5px;color:var(--ink-secondary)}.budget-form-field{display:flex;flex-direction:column;gap:4px}.budget-form-actions{margin-top:4px}.budget-form-delete{align-self:center;margin-top:20px;border:0;background:transparent;font:inherit;font-size:13.5px;font-weight:600;color:var(--status-red);cursor:pointer}.budget-row-skeleton{height:72px;border-radius:14px;background:var(--card);box-shadow:inset 0 0 0 1px var(--separator)}.budgets-empty p,.budgets-error p,.budgets-readonly p{margin:4px 4px 0;color:var(--ink-secondary);font-size:14px}.budgets-error button[data-action=retry]{align-self:flex-start;font:inherit;font-weight:600;background:var(--ink);color:var(--app-background);border:0;border-radius:12px;padding:10px 16px;margin:0 4px;cursor:pointer}.statistics-ready,.statistics-skeleton,.statistics-error,.statistics-empty,.statistics-readonly{display:flex;flex-direction:column;gap:12px}.stats-bar-row{display:flex;flex-direction:column;gap:6px;padding:12px 13px;border-bottom:1px solid var(--separator);cursor:pointer}.stats-bar-row:last-child{border-bottom:0}.stats-bar-head{display:flex;align-items:center;gap:8px}.stats-bar-head .nm{font-size:13.5px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.stats-bar-head .val{margin-left:auto;flex:none;font-size:12.5px;font-weight:600;font-variant-numeric:tabular-nums}.stats-bar-track{height:8px;border-radius:999px;background:var(--separator)}.stats-bar-fill{height:100%;border-radius:999px;background:var(--ink-secondary)}.stats-bars-empty{margin:4px 4px 0;color:var(--ink-secondary);font-size:13px}.stats-bar-skeleton{height:55px;border-radius:14px;background:var(--card);box-shadow:inset 0 0 0 1px var(--separator)}.statistics-empty p,.statistics-error p,.statistics-readonly p{margin:4px 4px 0;color:var(--ink-secondary);font-size:14px}.statistics-error button[data-action=retry]{align-self:flex-start;font:inherit;font-weight:600;background:var(--ink);color:var(--app-background);border:0;border-radius:12px;padding:10px 16px;margin:0 4px;cursor:pointer}.period-selector{margin-bottom:12px}.period-selector.disabled{opacity:.5}.period-tabs{display:flex;height:44px}.period-tab{flex:1;display:flex;align-items:center;justify-content:center;font:inherit;font-size:14px;font-weight:400;color:var(--ink-secondary);background:none;border:0;padding:0;cursor:pointer}.period-tab.active{font-weight:600;color:var(--ink)}.period-tab[aria-disabled=true]{opacity:.5;cursor:default}.period-tab-text{padding-bottom:2px;border-bottom:2px solid transparent}.period-tab.active .period-tab-text{border-bottom-color:var(--ink)}.period-nav{display:flex;align-items:center;height:44px}.period-arrow{width:44px;height:44px;flex:0 0 44px;display:flex;align-items:center;justify-content:center;font-size:20px;color:var(--ink);background:none;border:0;padding:0;cursor:pointer}.period-arrow[aria-disabled=true]{color:var(--ink-secondary);opacity:.4;cursor:default}.period-spacer,.period-jump-cell{width:44px;height:44px;flex:0 0 44px}.period-label{flex:1;display:flex;align-items:center;justify-content:center;min-height:44px;font:inherit;font-size:15px;font-weight:500;color:var(--ink);background:none;border:0;cursor:pointer}.period-label-text{padding-bottom:2px;border-bottom:1px solid var(--separator)}.period-tab:active,.period-arrow:active,.period-label:active{opacity:.6}.period-tab:focus-visible,.period-arrow:focus-visible,.period-label:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.drp-root{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:flex;align-items:flex-end;justify-content:center}.drp-scrim{position:absolute;top:0;right:0;bottom:0;left:0;background:color-mix(in srgb,var(--ink) 40%,transparent)}.drp-sheet{position:relative;width:100%;max-width:480px;max-height:85dvh;display:flex;flex-direction:column;background:var(--card);border-radius:14px 14px 0 0;padding:16px}@media(prefers-reduced-motion:no-preference){.drp-sheet{animation:drp-slide-up .2s ease-out}}@keyframes drp-slide-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}.drp-title{font-size:17px;font-weight:600;color:var(--ink)}.drp-summary{margin-top:4px;font-size:14px;color:var(--ink-secondary)}.drp-summary-error{font-weight:600}.drp-quick-chips{display:flex;gap:8px;margin-top:12px}.drp-quick-chip{height:32px;padding:9px 14px;font:inherit;font-size:14px;color:var(--ink);background:none;border:1px solid var(--separator);border-radius:8px;cursor:pointer}.drp-weekday-header{position:sticky;top:0;z-index:1;display:grid;grid-template-columns:repeat(7,1fr);margin-top:12px;background:var(--card)}.drp-weekday{text-align:center;font-size:11px;color:var(--ink-secondary)}.drp-months{flex:1;overflow-y:auto}.drp-month-name{display:block;width:100%;margin:24px 0 16px;padding:0;font:inherit;font-size:15px;font-weight:600;text-align:center;color:var(--ink);background:none;border:0;cursor:pointer}.drp-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:0}.drp-week{display:contents}.drp-cell{width:40px;height:40px;display:flex;align-items:center;justify-content:center;font:inherit;font-size:14px;color:var(--ink);background:none;border:0;padding:0;cursor:pointer}.drp-cell-blank{cursor:default}.drp-cell-today{box-shadow:inset 0 0 0 1px var(--ink);border-radius:50%}.drp-cell-future{color:color-mix(in srgb,var(--ink-secondary) 40%,transparent);cursor:default}.drp-cell-start{background:var(--ink);color:var(--card);border-radius:50% 0 0 50%}.drp-cell-end{background:var(--ink);color:var(--card);border-radius:0 50% 50% 0}.drp-cell-single{background:var(--ink);color:var(--card);border-radius:50%}.drp-cell-in-range{background:color-mix(in srgb,var(--ink) 12%,transparent);color:var(--ink)}.drp-year-list{display:none;position:absolute;top:0;right:0;bottom:0;left:0;overflow-y:auto;background:var(--card);padding:16px}.drp-year-list.open{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.drp-year{height:44px;font:inherit;font-size:15px;color:var(--ink);background:none;border:1px solid var(--separator);border-radius:12px;cursor:pointer}.drp-footer{display:flex;justify-content:flex-end;gap:12px;margin-top:12px}.drp-cancel,.drp-apply{min-height:44px;padding:0 12px;font:inherit;font-size:15px;font-weight:600;color:var(--ink);background:none;border:0;cursor:pointer}.drp-apply:disabled{color:var(--ink-secondary);opacity:.4;cursor:default}.drp-cell:active,.drp-quick-chip:active,.drp-month-name:active,.drp-year:active,.drp-cancel:active,.drp-apply:not(:disabled):active{opacity:.6}.drp-cell:focus-visible,.drp-quick-chip:focus-visible,.drp-month-name:focus-visible,.drp-year:focus-visible,.drp-cancel:focus-visible,.drp-apply:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.cat-grid{display:grid;grid-template-columns:repeat(4,1fr);column-gap:12px;row-gap:16px}.cat-cell{display:flex;flex-direction:column;align-items:center;border:0;background:transparent;padding:0;font:inherit;cursor:pointer}.cat-cell-swatch{width:64px;height:64px;border-radius:50%;flex:none}.cat-cell-name{margin-top:8px;font-size:12px;color:var(--ink);text-align:center;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:29px}.cat-cell-add-swatch{background:var(--separator);display:flex;align-items:center;justify-content:center;color:var(--ink-secondary)}.cat-cell:focus-visible{outline:none}.cat-cell:focus-visible .cat-cell-swatch{outline:2px solid var(--category-slot-1);outline-offset:2px}.cat-cell-skeleton{width:64px;height:64px;border-radius:50%;background:var(--card)}.categories-empty-note{margin:0 4px 4px;color:var(--ink-secondary);font-size:14px}.categories-error p,.categories-readonly p,.tags-error p,.tags-readonly p,.settings-error p,.admin-error p,.admin-forbidden p{margin:4px 4px 0;color:var(--ink-secondary);font-size:14px}.categories-error button[data-action=retry],.tags-error button[data-action=retry],.settings-error button[data-action=retry],.admin-error button[data-action=retry]{font:inherit;font-weight:600;background:var(--ink);color:var(--app-background);border:0;border-radius:12px;padding:10px 16px;margin:8px 4px 0;cursor:pointer}.cat-archived{margin-top:20px}.cat-archived-header{width:100%;display:flex;align-items:center;justify-content:space-between;border:0;background:transparent;padding:8px 4px;font-size:10px;font-weight:600;letter-spacing:.11em;text-transform:uppercase;color:var(--ink-secondary);cursor:pointer}.cat-archived-chevron{width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid var(--ink-secondary);transform:rotate(0)}.cat-archived-chevron--open{transform:rotate(180deg)}.cat-archived-explain{margin:0 4px 8px;font-size:12px;color:var(--ink-secondary)}.cat-archived-row{opacity:.6}.cp-grid{display:grid;grid-template-columns:repeat(4,1fr);column-gap:12px;row-gap:16px}.cp-radiogroup{display:contents}.cp-label{margin-bottom:12px;font-size:12px;color:var(--ink-secondary)}.cp-cell{display:flex;flex-direction:column;align-items:center;border:0;background:transparent;padding:0;font:inherit;cursor:pointer}.cp-swatch{width:64px;height:64px;border-radius:50%;flex:none}.cp-name{margin-top:8px;font-size:12px;font-weight:400;color:var(--ink);text-align:center;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:29px}.cp-cell.selected .cp-swatch{border-radius:12px}.cp-cell.selected .cp-name{font-weight:600}.cp-cell:active .cp-swatch{opacity:.7}.cp-cell:disabled{cursor:default}.cp-disabled .cp-cell,.cp-cell-archived .cp-swatch,.cp-cell-archived .cp-name{opacity:.5}.cp-more-swatch{background:var(--separator);display:flex;align-items:center;justify-content:center;color:var(--ink-secondary)}.cp-empty{margin:12px 4px 0;color:var(--ink-secondary);font-size:14px}.cp-cell:focus-visible{outline:none}.cp-cell:focus-visible .cp-swatch{outline:2px solid var(--ink);outline-offset:2px}.clp-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.clp-disabled{opacity:.5}.clp-radiogroup{display:contents}.clp-circle{position:relative;flex:none;width:32px;height:32px;padding:0;border:1px solid var(--separator);border-radius:50%;cursor:pointer}.clp-circle:before{content:"";position:absolute;top:-6px;right:-6px;bottom:-6px;left:-6px}.clp-circle:active{opacity:.7}.clp-circle:disabled{cursor:default}.clp-circle:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.clp-badge{position:absolute;right:-2px;bottom:-2px;width:18px;height:18px;display:flex;align-items:center;justify-content:center;border-radius:50%;background:var(--card);box-shadow:0 0 0 2px var(--card);color:var(--ink)}.clp-plus{position:relative;flex:none;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border:0;border-radius:50%;background:var(--separator);color:var(--ink-secondary);cursor:pointer}.clp-plus:before{content:"";position:absolute;top:-6px;right:-6px;bottom:-6px;left:-6px}.clp-plus:active{opacity:.7}.clp-plus:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.clp-sheet-body{flex:1;overflow-y:auto}.clp-grid{display:grid;grid-template-columns:repeat(6,1fr);column-gap:16px;row-gap:16px;padding-top:12px}.clp-grid .clp-circle{margin:0 auto}.tag-list{display:flex;flex-direction:column;gap:12px}.tag-row-add-icon{flex:none;width:24px;height:24px;display:flex;align-items:center;justify-content:center;color:var(--ink-secondary)}.tag-row-skeleton{height:40px;background:var(--card);border-radius:14px}.tags-empty-note{margin:0 4px 4px;color:var(--ink-secondary);font-size:14px}.tag-archived{margin-top:20px}.tag-archived-header{width:100%;display:flex;align-items:center;justify-content:space-between;border:0;background:transparent;padding:8px 4px;font-size:10px;font-weight:600;letter-spacing:.11em;text-transform:uppercase;color:var(--ink-secondary);cursor:pointer}.tag-archived-chevron{width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid var(--ink-secondary);transform:rotate(0)}.tag-archived-chevron--open{transform:rotate(180deg)}.tag-archived-explain{margin:0 4px 8px;font-size:12px;color:var(--ink-secondary)}.tag-archived-row{opacity:.6}.cat-form{display:flex;flex-direction:column;gap:20px}.cat-form-label{font-size:12px;color:var(--ink-secondary)}.cat-form-field{display:flex;flex-direction:column;gap:4px;padding:14px 16px 6px;border-bottom:1px solid var(--separator)}.cat-form-input{width:100%;border:0;background:transparent;font:inherit;font-size:15px;color:var(--ink);padding:6px 0 0}.cat-form-input:focus{outline:none}.cat-form-input::placeholder{color:var(--ink-secondary)}.cat-form-message{margin:-6px 4px 0;min-height:15px;font-size:12px}.cat-form-message--error{color:var(--status-red)}.cat-form-message--warning{color:var(--ink-secondary)}.cat-form-section{display:flex;flex-direction:column;gap:12px}.cat-delete-trigger{align-self:center;border:0;background:transparent;font:inherit;font-size:13.5px;font-weight:600;letter-spacing:-.01em;color:var(--status-red);cursor:pointer}.cat-delete-failed{margin:0 4px 12px;font-size:12px;color:var(--ink-secondary)}.cat-delete-failed p{margin:0}.cat-delete-failed button[data-action=retry-delete]{font:inherit;font-weight:600;background:none;border:0;padding:4px 0 0;color:var(--ink);cursor:pointer}.side-menu-root{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:flex}.side-menu-scrim{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--scrim)}.side-menu-panel{position:relative;width:min(80vw,320px);height:100%;display:flex;flex-direction:column;background:var(--card);border-radius:0 14px 14px 0;overflow:hidden}@media(prefers-reduced-motion:no-preference){.side-menu-panel{animation:side-menu-slide-in .2s ease-out}.side-menu-scrim{animation:side-menu-scrim-fade .2s linear}}@keyframes side-menu-slide-in{0%{transform:translate(-100%)}to{transform:translate(0)}}@keyframes side-menu-scrim-fade{0%{opacity:0}to{opacity:1}}@media(prefers-reduced-motion:no-preference){.side-menu-panel.side-menu-closing{animation:side-menu-slide-out .16s ease-in forwards}.side-menu-scrim.side-menu-closing{animation:side-menu-scrim-fade-out .16s linear forwards}}@keyframes side-menu-slide-out{0%{transform:translate(0)}to{transform:translate(-100%)}}@keyframes side-menu-scrim-fade-out{0%{opacity:1}to{opacity:0}}.side-menu-header{display:flex;flex-direction:column;gap:2px;padding:calc(16px + env(safe-area-inset-top,0px)) 16px 16px;background:var(--app-background);border-bottom:1px solid var(--separator)}.side-menu-account{font-size:15px;font-weight:600;color:var(--ink)}.side-menu-currency{font-size:12px;color:var(--ink-secondary)}.side-menu-rows{flex:1;overflow-y:auto;display:flex;flex-direction:column}.side-menu-row{flex-shrink:0;height:48px;padding:0 16px;display:flex;align-items:center;font:inherit;font-size:14px;font-weight:500;color:var(--ink);text-align:left;background:none;border:0;cursor:pointer}.side-menu-row-settings{margin-top:12px}.side-menu-row:active{background:var(--app-background)}.side-menu-row[disabled]{opacity:.5;cursor:default}.side-menu-row:focus-visible{outline:2px solid var(--ink);outline-offset:-2px}.side-menu-footer{padding:16px 16px calc(16px + env(safe-area-inset-bottom,0px));font-size:11.5px;color:var(--ink-secondary)}.settings-view{display:flex;flex-direction:column;gap:12px}.settings-eyebrow{margin:4px 4px 0;font-size:10px;font-weight:600;letter-spacing:.11em;text-transform:uppercase;color:var(--ink-secondary)}.settings-warning,.settings-admin-line{margin:0 4px;font-size:12px;color:var(--ink-secondary)}.settings-list{display:flex;flex-direction:column}.settings-row{height:48px;padding:0 16px;display:flex;align-items:center;gap:10px;font:inherit;background:none;border:0;border-bottom:1px solid var(--separator);color:var(--ink);text-align:left;cursor:pointer}.settings-row:last-child{border-bottom:0}.settings-row[disabled]{opacity:.5;cursor:default}.settings-row:focus-visible{outline:2px solid var(--ink);outline-offset:-2px}.settings-row-code{flex:none;font-size:14px;font-weight:600}.settings-row-name{flex:1;min-width:0;font-size:14px;font-weight:400;color:var(--ink-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.settings-row-check{flex:none;color:var(--ink);font-weight:600}.settings-save-error{margin:0 4px;font-size:12px;color:var(--status-red)}.settings-language-section{display:flex;flex-direction:column;gap:12px;margin-top:12px}.settings-language-section .settings-eyebrow{margin-top:0}.lang-row-text{display:flex;flex-direction:column;gap:2px;min-width:0}.lang-row-endonym{font-size:14px;font-weight:600;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lang-row-code{font-size:12px;font-weight:400;color:var(--ink-secondary)}.admin-view{display:flex;flex-direction:column;gap:12px}.admin-eyebrow{margin:4px 4px 0;font-size:10px;font-weight:600;letter-spacing:.11em;text-transform:uppercase;color:var(--ink-secondary)}.admin-eyebrow--users{margin-top:12px}.admin-list{display:flex;flex-direction:column}.admin-row{display:flex;align-items:center;gap:10px;padding:10px 13px;border-bottom:1px solid var(--separator)}.admin-list .admin-row:last-child{border-bottom:0}.admin-row--suspended{opacity:.6}.admin-row-text{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}.admin-row-name{font-size:13.5px;font-weight:600;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.admin-row-meta{font-size:12px;font-weight:400;color:var(--ink-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.admin-badge{font-size:11px;font-weight:400;color:var(--status-red)}.admin-trigger{flex:none;font:inherit;font-size:13.5px;font-weight:600;background:none;border:0;padding:0;cursor:pointer}.admin-trigger--block{color:var(--status-red)}.admin-trigger--unblock{color:var(--ink)}.admin-trigger[disabled]{opacity:.5;cursor:default}.admin-trigger:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.admin-row-skeleton{height:44px;background:var(--card);border-radius:14px}.admin-block-failed{margin:0 4px;font-size:12px;color:var(--ink-secondary)}.admin-block-failed p{margin:0}.admin-block-failed button[data-action=retry-block]{font:inherit;font-weight:600;background:none;border:0;padding:4px 0 0;color:var(--ink);cursor:pointer}.admin-create-form{display:flex;flex-direction:column;gap:20px}.admin-create-header{margin:6px 0 0;font-size:15px;font-weight:600;color:var(--ink)}.admin-create-field{display:flex;flex-direction:column;gap:4px}.admin-input,.admin-select{flex:1;min-width:0;border:0;background:transparent;font:inherit;font-size:15px;color:var(--ink)}.admin-input:focus,.admin-select:focus{outline:none}.admin-input::placeholder{color:var(--ink-secondary)}.admin-select:disabled,.admin-input:disabled{color:var(--ink-secondary)}.admin-create-actions{margin-top:4px}.admin-create-actions button[data-action=admin-create-submit]{background:var(--ink);color:var(--app-background)}.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}@media(prefers-reduced-motion:no-preference){.donut-skeleton,.ranked-rows-skeleton .card,.field-skeleton,.chips-skeleton,.exp-day-skeleton,.budget-row-skeleton,.stats-bar-skeleton,.cat-cell-skeleton,.tag-row-skeleton,.currency-suffix-skeleton,.account-name-skeleton,.admin-row-skeleton{animation:skeleton-pulse 1.4s ease-in-out infinite}}@keyframes skeleton-pulse{0%,to{opacity:1}50%{opacity:.6}}.toast-root{position:fixed;left:12px;right:12px;bottom:calc(16px + env(safe-area-inset-bottom,0px));z-index:100;display:flex;align-items:flex-start;gap:8px;min-height:44px;padding:12px 14px;border-radius:12px;background:var(--ink);color:var(--card);box-sizing:border-box;cursor:pointer}.toast-root:active{opacity:.7}.toast-glyph{flex:none;margin-top:2px}.toast-message{font-size:14px;font-weight:400;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}@media(prefers-reduced-motion:no-preference){.toast-root{animation:toast-in .2s ease-out}.toast-root.toast-leaving{animation:toast-out .16s ease-in forwards}}@keyframes toast-in{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes toast-out{0%{opacity:1}to{opacity:0}}
