.app-expenses{--font-sans: system-ui, -apple-system, sans-serif;--ease-out-expo: cubic-bezier(.22, 1, .36, 1);--ease-sidebar: cubic-bezier(.32, .72, 0, 1);--dur-fast: .2s;--dur-med: .32s;--dur-slow: .42s;--sidebar-expanded: 252px;--sidebar-collapsed: 72px;--topbar-h: 56px;--radius-sm: 6px;--radius-md: 8px;--radius-lg: 12px;--shadow-sm: 0 1px 2px rgba(15, 23, 42, .06);--shadow-md: 0 8px 24px rgba(15, 23, 42, .08);--shadow-lg: 0 24px 48px rgba(15, 23, 42, .12);--bg-page: #f6f4ef;--bg-elevated: #ffffff;--bg-muted: #edf2ef;--bg-sidebar: var(--bg-elevated);--bg-sidebar-hover: rgba(26, 26, 26, .06);--bg-sidebar-active: #dce8e1;--border-subtle: #d5ddd7;--border-strong: #b7c9be;--text-primary: #1a1a1a;--text-secondary: #5c6b64;--text-muted: #8a948e;--text-on-sidebar: var(--text-primary);--text-on-sidebar-muted: var(--text-secondary);--accent: #2d6a4f;--accent-hover: #1f4d3a;--accent-soft: rgba(45, 106, 79, .12);--link: #1f4d3a;--danger: #b00020;--success: #059669;--warning: #b45309;--topbar-bg: rgba(255, 255, 255, .72);--topbar-border: rgba(15, 23, 42, .06);--backdrop: rgba(15, 23, 42, .45);--ring: rgba(45, 106, 79, .35);--sidebar-divider: rgba(15, 23, 42, .08);--sidebar-pin-bg: rgba(15, 23, 42, .06);--sidebar-pin-bg-hover: rgba(15, 23, 42, .11);--sidebar-scrollbar-thumb: rgba(15, 23, 42, .2);--sidebar-initial-border: rgba(15, 23, 42, .14);--sidebar-initial-bg: rgba(15, 23, 42, .055)}.app-expenses *{box-sizing:border-box;margin:0;padding:0}.app-expenses{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.app-expenses{min-height:100vh;font-family:var(--font-sans);line-height:1.5;font-weight:400;color:var(--text-primary);background-color:var(--bg-page);transition:background-color var(--dur-med) var(--ease-out-expo),color var(--dur-med) var(--ease-out-expo)}.app-expenses :where(.expenses-screen,.shell-sidebar,.shell-topbar) a{color:var(--link);text-decoration:none}.app-expenses :where(.expenses-screen,.shell-sidebar,.shell-topbar) a:hover{text-decoration:underline}.app-expenses .app-shell{--shell-sidebar-w: var(--sidebar-expanded);min-height:100vh;display:flex}.app-expenses .app-shell--sidebar-collapsed{--shell-sidebar-w: var(--sidebar-collapsed)}.app-expenses .shell-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:45;background:var(--backdrop);opacity:0;visibility:hidden;pointer-events:none;transition:opacity var(--dur-med) var(--ease-out-expo),visibility 0s linear var(--dur-med)}.app-expenses .shell-backdrop.is-visible{opacity:1;visibility:visible;pointer-events:auto;transition:opacity var(--dur-med) var(--ease-out-expo),visibility 0s linear 0s}.app-expenses .shell-sidebar{position:fixed;top:0;left:0;z-index:50;display:flex;flex-direction:column;height:100vh;width:var(--shell-sidebar-w);max-width:min(var(--shell-sidebar-w),88vw);background:var(--bg-sidebar);color:var(--text-on-sidebar);border-right:1px solid var(--sidebar-divider);box-shadow:var(--shadow-lg);transition:width var(--dur-med) var(--ease-sidebar),transform var(--dur-slow) var(--ease-sidebar)}.app-expenses .shell-sidebar-header{display:flex;align-items:center;gap:8px;padding:16px 12px 16px 16px;min-height:var(--topbar-h);border-bottom:1px solid var(--sidebar-divider)}.app-expenses .shell-brand{display:flex;align-items:center;gap:10px;min-width:0;flex:1;color:var(--text-on-sidebar);font-weight:600;font-size:16px;letter-spacing:-.02em}.app-expenses .shell-brand:hover{text-decoration:none;opacity:.92}.app-expenses .shell-brand-mark{width:32px;height:32px;border-radius:var(--radius-sm);background:var(--accent);flex-shrink:0;box-shadow:0 2px 8px #2d6a4f47}.app-expenses .shell-brand-text{white-space:nowrap;overflow:hidden;opacity:1;max-width:192px;transition:opacity var(--dur-fast) var(--ease-sidebar),max-width var(--dur-med) var(--ease-sidebar)}.app-expenses .app-shell--sidebar-collapsed .shell-brand-text{opacity:0;max-width:0;pointer-events:none}.app-expenses .shell-sidebar-pin{display:none;align-items:center;justify-content:center;width:36px;height:36px;border:none;border-radius:var(--radius-sm);background:var(--sidebar-pin-bg);color:var(--text-on-sidebar-muted);cursor:pointer;flex-shrink:0;transition:background var(--dur-fast) ease,color var(--dur-fast) ease}.app-expenses .shell-sidebar-pin:hover{background:var(--sidebar-pin-bg-hover);color:var(--text-on-sidebar)}.app-expenses .shell-nav{flex:1;overflow-y:auto;overflow-x:hidden;padding:12px 8px;scrollbar-width:thin;scrollbar-color:var(--sidebar-scrollbar-thumb) transparent}.app-expenses .shell-nav-group{margin:0;position:relative}.app-expenses .shell-nav-divider{height:1px;margin:10px 10px 8px;background:var(--sidebar-divider)}.app-expenses .shell-nav-group-heading{margin:0 0 6px;padding:0 10px;font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text-on-sidebar-muted)}.app-expenses .shell-nav-list{list-style:none;display:flex;flex-direction:column;gap:2px}.app-expenses .shell-nav-link{display:flex;align-items:center;gap:12px;padding:8px 10px;border-radius:var(--radius-md);color:var(--text-on-sidebar-muted);font-size:14px;font-weight:500;transition:background var(--dur-fast) ease,color var(--dur-fast) ease}.app-expenses .shell-nav-link:hover{text-decoration:none;background:var(--bg-sidebar-hover);color:var(--text-on-sidebar)}.app-expenses .shell-nav-link.is-active{background:var(--bg-sidebar-active);color:var(--text-on-sidebar)}.app-expenses .shell-nav-icon{display:flex;align-items:center;justify-content:center;width:20px;height:20px;flex-shrink:0;opacity:.95}.app-expenses .shell-nav-label{white-space:nowrap;overflow:hidden;opacity:1;max-width:224px;transition:opacity var(--dur-fast) var(--ease-sidebar),max-width var(--dur-med) var(--ease-sidebar)}.app-expenses .app-shell--sidebar-collapsed .shell-nav-group-heading{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.app-expenses .app-shell--sidebar-collapsed .shell-nav-divider{margin:8px 6px}.app-expenses .app-shell--sidebar-collapsed .shell-nav-label{opacity:0;max-width:0;pointer-events:none}.app-expenses .app-shell--sidebar-collapsed .shell-nav-link{justify-content:center;padding-left:8px;padding-right:8px}.app-expenses .shell-main-wrap{flex:1;display:flex;flex-direction:column;min-width:0;margin-left:0;transition:margin-left var(--dur-med) var(--ease-sidebar)}.app-expenses .shell-topbar{display:flex;align-items:center;gap:12px;height:var(--topbar-h);padding:0 16px 0 12px;position:sticky;top:0;z-index:30;background:var(--topbar-bg);border-bottom:1px solid var(--topbar-border);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);transition:background var(--dur-med) var(--ease-out-expo),border-color var(--dur-med) var(--ease-out-expo)}.app-expenses .shell-menu-btn{display:flex;align-items:center;justify-content:center;width:44px;height:44px;border:none;border-radius:var(--radius-md);background:transparent;color:var(--text-primary);cursor:pointer;transition:background var(--dur-fast) ease,color var(--dur-fast) ease}.app-expenses .shell-menu-btn:hover{background:var(--bg-muted)}.app-expenses .shell-topbar-spacer{flex:1}.app-expenses .shell-main{flex:1;padding:24px 24px 40px;max-width:1400px;margin:0 auto;width:100%}@media (min-width: 960px){.app-expenses .shell-backdrop{display:none}.app-expenses .shell-sidebar{transform:none;box-shadow:none}.app-expenses .shell-main-wrap{margin-left:var(--shell-sidebar-w)}.app-expenses .shell-menu-btn{display:none}.app-expenses .shell-sidebar-pin{display:flex}.app-expenses .shell-topbar{padding-left:20px}}@media (max-width: 959px){.app-expenses .shell-sidebar{width:min(var(--sidebar-expanded),88vw);max-width:min(var(--sidebar-expanded),88vw);transform:translate(-104%)}.app-expenses .shell-sidebar.is-open{transform:translate(0)}}.app-expenses .app-loading{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg-page);transition:background var(--dur-med) var(--ease-out-expo)}.app-expenses .app-loading-inner{text-align:center}.app-expenses .app-loading-spinner{width:40px;height:40px;margin:0 auto 16px;border-radius:50%;border:3px solid var(--border-subtle);border-top-color:var(--accent);animation:spin .85s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.app-expenses .app-loading-text{font-size:14px;color:var(--text-secondary)}.app-expenses .page-header{margin-bottom:24px}.app-expenses .page-header h1{font-size:24px;font-weight:600;color:var(--text-primary);letter-spacing:-.02em}.app-expenses .page-header p{margin-top:4px;color:var(--text-secondary);font-size:14px}.app-expenses .page-header-row{display:flex;align-items:center;justify-content:space-between;gap:16px}.app-expenses .page-header-sync-btn{margin-top:0;flex-shrink:0}.app-expenses .text-muted{color:var(--text-secondary)}.app-expenses .text-success{color:var(--success)}.app-expenses .text-error{color:var(--danger)}.app-expenses .card-stat-label{font-size:14px;color:var(--text-secondary);font-weight:500}.app-expenses .card-stat-value{font-size:24px;font-weight:600;color:var(--text-primary);margin-top:2px}.app-expenses .card-stat-hint{font-size:12px;color:var(--text-muted);margin-top:4px}.app-expenses .dashboard-sync-status{font-size:12px;line-height:1.4;color:var(--text-muted);margin:8px 0 0}.app-expenses .dashboard-sync-status--error{color:#b91c1c}.app-expenses .dashboard-sync-status--warning{color:#b45309}.app-expenses .dashboard-sync-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px;width:100%}.app-expenses .dashboard-sync-actions .sync-btn{margin-top:0;width:100%;justify-content:center;align-self:stretch}.app-expenses .dashboard-sync-actions a.sync-btn:hover{text-decoration:none}.app-expenses .card-section{margin-top:24px}.app-expenses .card-section-title{font-size:16px;font-weight:600;color:var(--text-primary);margin-bottom:8px}.app-expenses .placeholder-card{background:var(--bg-elevated);border-radius:var(--radius-lg);padding:24px;box-shadow:var(--shadow-sm);border:1px solid var(--border-subtle);transition:background var(--dur-med) var(--ease-out-expo),border-color var(--dur-med) var(--ease-out-expo),box-shadow var(--dur-med) var(--ease-out-expo)}.app-expenses .placeholder-card p{color:var(--text-secondary);margin-top:8px}.app-expenses .dashboard-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px}.app-expenses .dashboard-card{display:flex;flex-direction:column}.app-expenses .dashboard-card-header{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}.app-expenses .dashboard-card-header .card-stat-label{margin:0}.app-expenses .dashboard-connection-pill{font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:4px 10px;border-radius:999px;white-space:nowrap;flex-shrink:0}.app-expenses .dashboard-connection-pill--connected{background:color-mix(in srgb,var(--success) 18%,transparent);color:var(--success);border:1px solid color-mix(in srgb,var(--success) 35%,transparent)}.app-expenses .dashboard-connection-pill--disconnected{background:color-mix(in srgb,var(--danger) 22%,transparent);color:var(--danger);border:1px solid var(--danger);animation:dashboard-pill-pulse 2s ease-in-out infinite}@keyframes dashboard-pill-pulse{0%,to{box-shadow:0 0 color-mix(in srgb,var(--danger) 35%,transparent)}50%{box-shadow:0 0 0 5px color-mix(in srgb,var(--danger) 12%,transparent)}}.app-expenses .dashboard-card--disconnected{border-color:color-mix(in srgb,var(--danger) 45%,var(--border-subtle));background:color-mix(in srgb,var(--danger) 6%,var(--bg-elevated))}.app-expenses .dashboard-disconnect-alert{margin-top:12px;padding:12px;border-radius:var(--radius-md);background:color-mix(in srgb,var(--danger) 10%,transparent);border:1px solid color-mix(in srgb,var(--danger) 35%,transparent)}.app-expenses .dashboard-disconnect-alert p{margin:0;font-size:13px;font-weight:500;color:var(--text-primary);line-height:1.45}.app-expenses .dashboard-reconnect-btn{display:inline-flex;align-items:center;margin-top:10px;padding:8px 16px;background:var(--danger);color:#fff;border-radius:var(--radius-md);font-size:14px;font-weight:600;text-decoration:none;transition:filter var(--dur-fast) var(--ease-out-expo)}.app-expenses .dashboard-reconnect-btn:hover{filter:brightness(1.08);text-decoration:none;color:#fff}.app-expenses .dashboard-email-by-member{list-style:none;font-size:13px;color:var(--text-secondary);margin-top:8px}.app-expenses .dashboard-email-by-member li{padding:2px 0}.app-expenses .dashboard-member-line{display:flex;flex-direction:column;gap:2.4px}.app-expenses .dashboard-member-main{line-height:1.35}.app-expenses .dashboard-member-sync{font-size:12px;color:var(--text-muted);line-height:1.3}.app-expenses .dashboard-pulse-last-run{font-size:13px;color:var(--text-secondary);margin:8px 0 0;line-height:1.4}.app-expenses .dashboard-no-gmail{color:var(--text-muted);font-size:12px;margin-left:4px}.app-expenses .sync-btn{margin-top:12px;padding:8px 16px;background:var(--accent);color:#fff;border:none;border-radius:var(--radius-md);font-size:14px;font-weight:500;cursor:pointer;align-self:flex-start;display:inline-flex;align-items:center;justify-content:center;transition:background var(--dur-fast) ease,transform .15s ease,box-shadow var(--dur-fast) ease}.app-expenses .sync-btn-secondary{background:transparent;color:var(--accent);border:1px solid var(--accent);box-shadow:none}.app-expenses .sync-btn:hover:not(:disabled){background:var(--accent-hover);box-shadow:0 4px 14px #2d6a4f47}.app-expenses .sync-btn-secondary:hover:not(:disabled){background:var(--accent-soft);border-color:var(--accent-hover);color:var(--accent-hover);box-shadow:none}.app-expenses .sync-btn:active:not(:disabled){transform:scale(.98)}.app-expenses .sync-btn:disabled{opacity:.55;cursor:not-allowed}.app-expenses .sync-btn-spinner{width:14px;height:14px;margin-right:7.2px;border-radius:50%;border:2px solid color-mix(in srgb,currentColor 35%,transparent);border-top-color:currentColor;animation:spin .85s linear infinite;flex-shrink:0}.app-expenses .emails-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:16px}.app-expenses .emails-stats{display:flex;flex-direction:column;gap:5.6px;color:var(--text-secondary);font-size:14px;min-width:0}.app-expenses .emails-count{font-weight:500}.app-expenses .emails-sync-status{margin:0;font-size:13px;line-height:1.4;color:var(--text-muted);max-width:576px}.app-expenses .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}.app-expenses .emails-table-card{background:var(--bg-elevated);border-radius:var(--radius-lg);padding:24px;box-shadow:var(--shadow-sm);border:1px solid var(--border-subtle);overflow:hidden;transition:background var(--dur-med) var(--ease-out-expo),border-color var(--dur-med) var(--ease-out-expo)}.app-expenses .emails-error{color:var(--danger);font-size:14px}.app-expenses .emails-loading,.app-expenses .emails-empty{color:var(--text-secondary);font-size:14px;padding:16px 0}.app-expenses .emails-table-wrap{overflow-x:auto}.app-expenses .emails-table{width:100%;border-collapse:collapse;font-size:14px}.app-expenses .emails-table th{text-align:left;padding:12px 16px;font-weight:600;color:var(--text-secondary);background:var(--bg-muted);border-bottom:1px solid var(--border-subtle)}.app-expenses .emails-table thead tr.emails-filter-row th{vertical-align:top;padding-top:8.8px;padding-bottom:10.4px;font-weight:500;background:var(--bg-elevated);border-bottom:1px solid var(--border-subtle)}.app-expenses .emails-date-range-anchor{position:relative;min-width:0}.app-expenses .emails-date-range-trigger{display:flex;flex-direction:row;flex-wrap:nowrap;align-items:baseline;gap:5.6px;width:100%;max-width:224px;margin:0;padding:5.6px 8px;text-align:left;font:inherit;line-height:1.25;border-radius:var(--radius-sm);border:1px solid var(--border-subtle);background:var(--bg-elevated);color:var(--text-primary);cursor:pointer;transition:border-color var(--dur-fast) ease,background var(--dur-fast) ease,box-shadow var(--dur-fast) ease}.app-expenses .emails-date-range-trigger:hover{border-color:var(--border-strong, var(--border-subtle));background:var(--bg-muted)}.app-expenses .emails-date-range-trigger:focus-visible{outline:2px solid var(--focus-ring, #3b82f6);outline-offset:2px}.app-expenses .emails-date-range-trigger--active{border-color:var(--border-strong, var(--border-subtle));background:var(--bg-muted)}.app-expenses .emails-date-range-trigger-label{font-size:11px;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.02em}.app-expenses .emails-date-range-trigger-label:after{content:"·";margin-left:5.6px;font-weight:600;color:var(--text-secondary)}.app-expenses .emails-date-range-trigger-value{font-size:13px;font-weight:500;color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}.app-expenses .emails-date-range-popover{padding:12px;border-radius:var(--radius-md);border:1px solid var(--border-subtle);background:var(--bg-elevated);box-shadow:var(--shadow-md, 0 8px 24px rgba(0, 0, 0, .12))}.app-expenses .emails-date-range-popover--floating{max-width:min(calc(100vw - 24px),416px)}.app-expenses .emails-date-range-popover-fields{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10.4px 13.6px}.app-expenses .emails-date-range-field{display:flex;flex-direction:column;gap:4px;min-width:0;flex:1 1 128px}.app-expenses .emails-date-range-field span{font-size:11px;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.02em}.app-expenses .emails-date-range-field .emails-table-filter-input{max-width:none}.app-expenses .emails-date-range-popover-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:7.2px;margin-top:10.4px;padding-top:10.4px;border-top:1px solid var(--border-subtle)}.app-expenses .emails-date-range-pop-clear{padding:4.8px 8.8px;font-size:13px;border-radius:var(--radius-sm);border:1px solid transparent;background:transparent;color:var(--text-secondary);cursor:pointer}.app-expenses .emails-date-range-pop-clear:hover{background:var(--bg-muted);color:var(--text-primary)}.app-expenses .emails-date-range-pop-done{padding:5.6px 13.6px;font-size:13px;font-weight:500;border-radius:var(--radius-sm);border:1px solid var(--border-subtle);background:var(--bg-muted);color:var(--text-primary);cursor:pointer}.app-expenses .emails-date-range-pop-done:hover{background:var(--border-subtle)}.app-expenses .emails-empty-table-cell{padding:28px 16px;vertical-align:top;border-bottom:1px solid var(--border-subtle)}.app-expenses .emails-empty-in-table{margin:0;padding:0;max-width:576px}.app-expenses .emails-table-filter-input,.app-expenses .emails-table-filter-select{min-width:0;width:100%;max-width:176px}.app-expenses .emails-table-order .emails-table-col-id{width:1%;white-space:nowrap;vertical-align:middle;padding-inline:8px}.app-expenses .emails-table-order thead tr:not(.emails-filter-row) .emails-table-col-id{padding-inline-end:10.4px}.app-expenses .emails-table-order .emails-table-col-id .emails-synced-id{display:inline-block;font-variant-numeric:tabular-nums}.app-expenses .emails-table-order .emails-table-col-id.emails-table-filter-cell .emails-table-filter-select{box-sizing:border-box;width:auto;min-width:0;max-width:none;field-sizing:content}@supports not (field-sizing: content){.app-expenses .emails-table-order .emails-table-col-id.emails-table-filter-cell .emails-table-filter-select{max-inline-size:76px}}.app-expenses .emails-table-order .emails-table-col-email-type{width:1%;white-space:nowrap;vertical-align:middle;padding-inline:8px}.app-expenses .emails-table-order .emails-table-col-email-type.emails-table-filter-cell .emails-table-filter-select{box-sizing:border-box;width:auto;min-width:0;max-width:none;field-sizing:content}@supports not (field-sizing: content){.app-expenses .emails-table-order .emails-table-col-email-type.emails-table-filter-cell .emails-table-filter-select{max-inline-size:176px}}.app-expenses .emails-table-order .emails-table-col-status{width:1%;vertical-align:middle;padding-inline:8px}.app-expenses .emails-table-order .emails-cell-status.emails-table-col-status{white-space:normal;overflow-wrap:break-word;max-width:176px}.app-expenses .emails-table-order .emails-table-col-status.emails-table-filter-cell .emails-table-filter-select{box-sizing:border-box;width:auto;min-width:0;max-width:none;white-space:nowrap;field-sizing:content}@supports not (field-sizing: content){.app-expenses .emails-table-order .emails-table-col-status.emails-table-filter-cell .emails-table-filter-select{max-inline-size:208px}}.app-expenses .emails-table-order .emails-table-col-status .extraction-status-select{width:auto;min-width:0;max-width:none;box-sizing:border-box;field-sizing:content}@supports not (field-sizing: content){.app-expenses .emails-table-order .emails-table-col-status .extraction-status-select{max-inline-size:144px}}.app-expenses .emails-table-filter-cell--trail{text-align:right;white-space:nowrap}.app-expenses .emails-filter-row .emails-filters-clear{margin-top:0}.app-expenses .emails-cell-email-type{color:var(--text-secondary);font-size:13px;white-space:nowrap}.app-expenses .emails-table td{padding:12px 16px;border-bottom:1px solid var(--border-subtle)}.app-expenses .emails-table tbody tr{transition:background var(--dur-fast) ease}.app-expenses .emails-table tbody tr:hover{background:var(--bg-muted)}.app-expenses .emails-cell-date{white-space:nowrap;color:var(--text-secondary)}.app-expenses .emails-cell-user{font-weight:500;color:var(--text-primary)}.app-expenses .emails-cell-from{color:var(--text-secondary);max-width:200px;overflow:hidden;text-overflow:ellipsis}.app-expenses .emails-cell-subject{color:var(--text-primary);max-width:300px;overflow:hidden;text-overflow:ellipsis}.app-expenses .emails-cell-action{flex-wrap:wrap;gap:8px;align-items:center}.app-expenses .emails-table-order .emails-cell-money{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums;color:var(--text-primary)}.app-expenses .emails-cell-status{white-space:normal;max-width:224px}.app-expenses .extraction-status-select{max-width:176px;padding:5.6px 8px;font-size:13px;border-radius:var(--radius-sm);border:1px solid var(--border-subtle);background:var(--bg-elevated);color:var(--text-primary);cursor:pointer}.app-expenses .extraction-status-select:disabled{opacity:.65;cursor:not-allowed}.app-expenses .emails-extraction-error-hint{display:block;margin-top:3.2px;font-size:12px;font-weight:400;color:var(--danger);text-transform:none;line-height:1.3}.app-expenses .emails-filters{display:flex;flex-wrap:wrap;align-items:flex-end;gap:16px 20px;margin-bottom:20px;padding-bottom:20px;border-bottom:1px solid var(--border-subtle)}.app-expenses .emails-filter-field{display:flex;flex-direction:column;gap:5.6px;min-width:0}.app-expenses .emails-filter-field label{font-size:12px;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.02em}.app-expenses .emails-filter-input,.app-expenses .emails-filter-select{padding:6.4px 8.8px;font-size:14px;border-radius:var(--radius-sm);border:1px solid var(--border-subtle);background:var(--bg-elevated);color:var(--text-primary);min-width:176px}.app-expenses .emails-filters-clear{align-self:center;margin-top:18.4px;padding:5.6px 12px;font-size:13px;border-radius:var(--radius-sm);border:1px solid var(--border-subtle);background:transparent;color:var(--text-secondary);cursor:pointer;transition:background var(--dur-fast) ease,color var(--dur-fast) ease}.app-expenses .emails-filters-clear:hover{background:var(--bg-muted);color:var(--text-primary)}.app-expenses .emails-toggle-group{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.app-expenses .emails-list-controls{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px 16px;margin-bottom:16px}.app-expenses .emails-toggle-details{padding:6.4px 13.6px;font-size:13px;font-weight:500;border-radius:var(--radius-sm);border:1px solid var(--border-subtle);background:var(--bg-muted);color:var(--text-secondary);cursor:pointer;transition:background var(--dur-fast) ease,color var(--dur-fast) ease,border-color var(--dur-fast) ease}.app-expenses .emails-toggle-details:hover{color:var(--text-primary);border-color:color-mix(in srgb,var(--accent) 35%,var(--border-subtle))}.app-expenses .emails-toggle-details--on{background:color-mix(in srgb,var(--accent) 18%,var(--bg-elevated));border-color:color-mix(in srgb,var(--accent) 45%,var(--border-subtle));color:var(--text-primary)}.app-expenses .emails-list-controls-right{display:flex;flex-wrap:wrap;align-items:center;gap:12px 16px;margin-left:auto}.app-expenses .emails-search-field{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--text-secondary)}.app-expenses .emails-search-input{width:min(288px,42vw);min-width:160px;padding:6.4px 9.6px;border-radius:var(--radius-sm);border:1px solid var(--border-subtle);background:var(--bg-elevated);color:var(--text-primary);font-size:13px}.app-expenses .emails-per-page{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--text-secondary)}.app-expenses .emails-per-page-select{min-width:72px}.app-expenses .emails-pagination{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px 16px;margin-top:16px;padding-top:16px;border-top:1px solid var(--border-subtle)}.app-expenses .emails-pagination-summary{margin:0;font-size:13px;color:var(--text-secondary)}.app-expenses .emails-pagination-page{color:var(--text-muted)}.app-expenses .emails-pagination-actions{display:flex;flex-wrap:wrap;gap:6.4px}.app-expenses .emails-page-btn{padding:5.6px 10.4px;font-size:12px;border-radius:var(--radius-sm);border:1px solid var(--border-subtle);background:var(--bg-elevated);color:var(--text-primary);cursor:pointer;transition:background var(--dur-fast) ease,opacity var(--dur-fast) ease}.app-expenses .emails-page-btn:hover:not(:disabled){background:var(--bg-muted)}.app-expenses .emails-page-btn:disabled{opacity:.45;cursor:not-allowed}.app-expenses .emails-btn-body{padding:4px 8px;font-size:12px;background:var(--bg-muted);color:var(--text-secondary);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);cursor:pointer;transition:background var(--dur-fast) ease,color var(--dur-fast) ease,border-color var(--dur-fast) ease}.app-expenses .emails-btn-body:hover{background:var(--bg-elevated);border-color:color-mix(in srgb,var(--accent) 40%,var(--border-subtle));color:var(--text-primary)}.app-expenses .emails-btn-json{padding:4px 8px;font-size:12px;background:color-mix(in srgb,var(--accent) 14%,var(--bg-muted));color:color-mix(in srgb,var(--accent) 85%,var(--text-primary));border:1px solid color-mix(in srgb,var(--accent) 35%,var(--border-subtle));border-radius:var(--radius-sm);cursor:pointer;transition:background var(--dur-fast) ease,border-color var(--dur-fast) ease}.app-expenses .emails-btn-json:hover{background:color-mix(in srgb,var(--accent) 22%,var(--bg-elevated));border-color:color-mix(in srgb,var(--accent) 55%,var(--border-subtle))}.app-expenses .extraction-status-readonly{font-size:13px;color:var(--text-secondary);text-transform:capitalize}.app-expenses .emails-view-body-btn{padding:4px 8px;font-size:12px;background:var(--bg-muted);color:var(--text-secondary);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);cursor:pointer;transition:background var(--dur-fast) ease,color var(--dur-fast) ease}.app-expenses .emails-table-row-sub{background:color-mix(in srgb,var(--bg-muted) 55%,var(--bg-elevated))}.app-expenses .emails-table-row-sub td{padding-top:5.6px;padding-bottom:5.6px;font-size:13px;border-bottom:1px solid var(--border-subtle)}.app-expenses .emails-table-row-sub .emails-cell-money{font-weight:500}.app-expenses .email-line-indent{padding-left:28px!important;border-left:3px solid var(--accent-soft);color:var(--text-secondary)}.app-expenses .email-line-desc{color:var(--text-primary)}.app-expenses .email-line-qty{color:var(--text-muted);font-weight:500}.app-expenses .emails-table-order tbody tr.emails-table-row-main:hover{background:var(--bg-muted)}.app-expenses .emails-table-order tbody tr.emails-table-row-sub:hover{background:color-mix(in srgb,var(--bg-muted) 70%,var(--bg-elevated))}.app-expenses .modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--backdrop);display:flex;align-items:center;justify-content:center;z-index:1000;padding:24px;animation:modal-in .28s var(--ease-out-expo) both}@keyframes modal-in{0%{opacity:0}}.app-expenses .modal-content{background:var(--bg-elevated);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);max-width:700px;width:100%;max-height:85vh;display:flex;flex-direction:column;border:1px solid var(--border-subtle);animation:modal-pop .36s var(--ease-out-expo) both}@keyframes modal-pop{0%{opacity:0;transform:translateY(12px) scale(.98)}}.app-expenses .modal-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:20px 24px;border-bottom:1px solid var(--border-subtle)}.app-expenses .modal-title{font-size:16px;font-weight:600;color:var(--text-primary);flex:1;word-break:break-word}.app-expenses .modal-close{flex-shrink:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;font-size:24px;line-height:1;color:var(--text-secondary);background:transparent;border:none;border-radius:var(--radius-sm);cursor:pointer;transition:background var(--dur-fast) ease,color var(--dur-fast) ease}.app-expenses .modal-close:hover{background:var(--bg-muted);color:var(--text-primary)}.app-expenses .modal-body{padding:24px;overflow-y:auto;flex:1}.app-expenses .modal-content-extraction{max-width:min(672px,95vw);max-height:90vh}.app-expenses .modal-body-extraction{overflow:auto;max-height:min(70vh,512px)}.app-expenses .modal-extraction-json{margin:0;font-size:12px;line-height:1.45;font-family:ui-monospace,monospace;white-space:pre-wrap;word-break:break-word;color:var(--text-primary)}.app-expenses .extraction-pending-hint{margin:0 0 16px;font-size:14px;line-height:1.5;color:var(--text-secondary)}.app-expenses .extraction-action-error{margin:0 0 16px}.app-expenses .extraction-modal-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:16px;padding-top:16px;border-top:1px solid var(--border-subtle)}.app-expenses .extraction-confirm-btn{padding:8px 16px;font-size:14px;font-weight:500;border-radius:var(--radius-sm);border:none;cursor:pointer;background:var(--accent);color:#fff}.app-expenses .extraction-confirm-btn:disabled{opacity:.6;cursor:not-allowed}.app-expenses .extraction-reject-btn{padding:8px 16px;font-size:14px;font-weight:500;border-radius:var(--radius-sm);border:1px solid var(--border-subtle);cursor:pointer;background:var(--bg-elevated);color:var(--text-primary)}.app-expenses .extraction-reject-btn:disabled{opacity:.6;cursor:not-allowed}.app-expenses .modal-email-iframe{width:100%;height:60vh;min-height:400px;border:none;border-radius:var(--radius-sm);background:var(--bg-elevated)}.app-expenses .gmail-sync-page .page-header p{color:var(--text-secondary)}.app-expenses .gmail-sync-inline-link{color:var(--link);font-weight:500;text-decoration:none}.app-expenses .gmail-sync-inline-link:hover{text-decoration:underline}.app-expenses .sync-btn-group-wrap{position:relative;display:inline-flex;flex-direction:column;align-items:flex-start}.app-expenses .sync-btn-group-wrap--end{align-items:flex-end}.app-expenses .sync-btn-group{display:inline-flex;align-items:stretch}.app-expenses .sync-btn-group .sync-btn-main,.app-expenses .sync-btn-group .sync-btn-caret{margin-top:0;min-height:38px;padding-top:8px;padding-bottom:8px;box-sizing:border-box}.app-expenses .sync-btn-group .sync-btn-main{border-top-right-radius:0;border-bottom-right-radius:0}.app-expenses .sync-btn-group .sync-btn-caret{padding-left:10px;padding-right:10px;border-left:1px solid rgba(255,255,255,.28);border-top-left-radius:0;border-bottom-left-radius:0;font-size:14px;line-height:1.25}.app-expenses .sync-btn-group-wrap--end .sync-btn-menu{left:auto;right:0}.app-expenses .sync-btn-menu{position:absolute;top:calc(100% + 5.6px);left:0;z-index:20;min-width:224px;padding:5.6px;background:var(--bg-elevated, #fff);border:1px solid var(--border-subtle, rgba(0, 0, 0, .08));border-radius:var(--radius-md);box-shadow:0 8px 24px #0f172a1f}.app-expenses .sync-btn-menu-item{display:flex;flex-direction:column;align-items:flex-start;gap:2.4px;width:100%;padding:7.2px 9.6px;border:none;border-radius:calc(var(--radius-md) - 2px);background:transparent;color:var(--text-primary);font-size:13px;text-align:left;cursor:pointer}.app-expenses .sync-btn-menu-item:hover{background:var(--bg-muted)}.app-expenses .sync-btn-menu-item--active{background:var(--accent-soft);color:var(--accent)}.app-expenses .sync-btn-menu-item-range{font-size:12px;color:var(--text-muted)}.app-expenses .sync-btn-menu-item--active .sync-btn-menu-item-range{color:inherit;opacity:.85}.app-expenses .gmail-linked-section{margin-bottom:20px}.app-expenses .gmail-linked-hint{margin:0 0 16px;max-width:672px}.app-expenses .gmail-sync-code{font-size:.75em;padding:.1em .35em;border-radius:var(--radius-sm);background:var(--bg-muted)}.app-expenses .gmail-linked-list{list-style:none;margin:0 0 16px;padding:0}.app-expenses .gmail-linked-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;padding:8px 0;border-bottom:1px solid var(--border-subtle)}.app-expenses .gmail-linked-row:last-child{border-bottom:none}.app-expenses .gmail-linked-email{font-weight:500;flex:1 1 192px}.app-expenses .gmail-linked-meta{font-size:13px;color:var(--text-secondary)}.app-expenses .gmail-linked-remove-btn{font-size:13px;padding:4.8px 9.6px;border-radius:var(--radius-sm);border:1px solid var(--border-subtle);background:var(--bg-elevated);color:var(--text-primary);cursor:pointer;font-family:inherit}.app-expenses .gmail-link-form{display:flex;flex-direction:column;gap:12px;margin-top:20px;padding-top:16px;border-top:1px solid var(--border-subtle)}.app-expenses .gmail-link-form--inline{flex-basis:100%;margin-top:8px;padding-top:12px}.app-expenses .gmail-link-field{display:flex;flex-direction:column;gap:4px;font-size:14px}.app-expenses .gmail-link-field input{max-width:352px;padding:7.2px 9.6px;border-radius:var(--radius-sm);border:1px solid var(--border-subtle);background:var(--bg-elevated);color:var(--text-primary);font-family:inherit}.app-expenses .gmail-sync-toolbar--linked{margin-bottom:0;margin-top:8px}.app-expenses .gmail-sync-history-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px 16px;margin-bottom:16px}.app-expenses .gmail-sync-history-header-text{min-width:0}.app-expenses .gmail-sync-history-header .gmail-sync-history-summary{margin:5.6px 0 0;font-size:13px}.app-expenses .gmail-sync-pagination{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:12px 16px;margin-top:16px;padding-top:12px;border-top:1px solid var(--border-subtle)}.app-expenses .gmail-sync-pagination-meta{font-size:13px;color:var(--text-secondary)}.app-expenses .gmail-sync-pagination-range{color:var(--text-muted)}.app-expenses .gmail-sync-page-btn{font-size:13px;font-weight:500;color:var(--text-primary);background:var(--bg-muted);border:1px solid var(--border-subtle);border-radius:var(--radius-md);padding:5.6px 12px;cursor:pointer;transition:background var(--dur-fast) ease,border-color var(--dur-fast) ease}.app-expenses .gmail-sync-page-btn:hover:not(:disabled){background:var(--bg-elevated);border-color:var(--border-strong)}.app-expenses .gmail-sync-page-btn:disabled{opacity:.45;cursor:not-allowed}.app-expenses .gmail-sync-banner{font-size:14px;padding:12px 16px;border-radius:var(--radius-md);margin-bottom:16px}.app-expenses .gmail-sync-banner--error{color:var(--danger);background:color-mix(in srgb,var(--danger) 12%,transparent);border:1px solid color-mix(in srgb,var(--danger) 35%,transparent)}.app-expenses .gmail-sync-banner-link{display:inline;padding:0;margin:0;border:none;background:none;font:inherit;color:inherit;text-decoration:underline;cursor:pointer}.app-expenses .gmail-sync-banner-link:hover{opacity:.85}.app-expenses .gmail-sync-current,.app-expenses .gmail-sync-history{margin-bottom:20px}.app-expenses .gmail-sync-section-title{font-size:16px;font-weight:600;color:var(--text-primary);margin-bottom:16px}.app-expenses .gmail-sync-section-title--flush{margin-bottom:0}.app-expenses .gmail-linked-section-header{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px 16px;margin-bottom:16px}.app-expenses .gmail-add-inbox-btn{flex-shrink:0}.app-expenses .gmail-sync-hint--modal{margin-top:0;margin-bottom:16px}.app-expenses .gmail-link-form--modal{margin-top:0;padding-top:0;border-top:none}.app-expenses .gmail-link-form-actions{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center}.app-expenses .modal-content--narrow{max-width:448px}.app-expenses .gmail-sync-dl{display:grid;grid-template-columns:repeat(auto-fill,minmax(224px,1fr));gap:12px 24px}.app-expenses .gmail-sync-dl dt{font-size:12px;font-weight:500;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted)}.app-expenses .gmail-sync-dl dd{font-size:15px;color:var(--text-primary);margin-top:2px}.app-expenses .gmail-sync-hint{font-size:13px;color:var(--text-muted);font-weight:400}.app-expenses .gmail-sync-emphasis{font-weight:600;color:var(--success)}.app-expenses .gmail-sync-badge{display:inline-block;font-size:12px;font-weight:600;padding:3.2px 8px;border-radius:var(--radius-sm);text-transform:capitalize}.app-expenses .gmail-sync-badge--pending,.app-expenses .gmail-sync-badge--in_progress{background:var(--accent-soft);color:var(--accent-hover)}.app-expenses .gmail-sync-badge--success{background:color-mix(in srgb,var(--success) 18%,transparent);color:var(--success)}.app-expenses .gmail-sync-badge--error{background:color-mix(in srgb,var(--danger) 15%,transparent);color:var(--danger)}.app-expenses .gmail-sync-user-results{margin-top:16px;font-size:14px}.app-expenses .gmail-sync-user-results summary{cursor:pointer;color:var(--link);font-weight:500}.app-expenses .gmail-sync-user-results-list{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:5.6px;color:var(--text-secondary)}.app-expenses .gmail-sync-table-wrap{overflow-x:auto;margin-top:8px}.app-expenses .gmail-sync-table{width:100%;border-collapse:collapse;font-size:13px}.app-expenses .gmail-sync-table th,.app-expenses .gmail-sync-table td{text-align:left;padding:8px 10.4px;border-bottom:1px solid var(--border-subtle);vertical-align:top}.app-expenses .gmail-sync-table th{font-weight:600;color:var(--text-muted);white-space:nowrap}.app-expenses .gmail-sync-table-detail-row td{background:var(--bg-muted);padding:12px 16px}.app-expenses .gmail-sync-expand-btn{font-size:12px;font-weight:500;color:var(--link);background:none;border:none;cursor:pointer;padding:0;text-decoration:underline}.app-expenses .bank-sync-code{font-size:.85em;padding:.1em .35em;border-radius:4px;background:var(--bg-muted)}.app-expenses .bank-sync-account-list{margin:12px 0 0;padding-left:20px}.app-expenses .bank-sync-account-list li{margin-bottom:5.6px}.app-expenses .accounts-reconnect-toolbar{margin-top:12px}.app-expenses .accounts-reconnect-hint{margin:12px 0 0;font-size:14.4px}.app-expenses .accounts-type-group{margin-top:16px}.app-expenses .accounts-type-group:first-of-type{margin-top:0}.app-expenses .accounts-type-heading{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);margin:0 0 5.6px}.app-expenses .transactions-toolbar{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}.app-expenses .transactions-toolbar-fields{display:flex;flex-wrap:wrap;align-items:flex-end;gap:16px}.app-expenses .transactions-field{display:flex;flex-direction:column;gap:5.6px}.app-expenses .transactions-field--grow{flex:1;min-width:min(100%,224px)}.app-expenses .transactions-search-input{width:100%;min-width:0;padding:7.2px 10.4px;border-radius:8px;border:1px solid var(--border);background:var(--bg);color:var(--text);font-size:15.2px}.app-expenses .transactions-search-hint{margin:0;font-size:12px;line-height:1.35}.app-expenses .transactions-filter-summary{margin:0 0 16px;font-size:14px}.app-expenses .transactions-month-tabs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}.app-expenses .transactions-month-tab{padding:6.4px 14.4px;font-size:14px;border-radius:var(--radius-md);border:1px solid var(--border-subtle);background:var(--bg-muted);color:var(--text-secondary);cursor:pointer;transition:background var(--dur-fast) ease,border-color var(--dur-fast) ease,color var(--dur-fast) ease,box-shadow var(--dur-fast) ease}.app-expenses .transactions-month-tab:hover{border-color:var(--border-strong);background:var(--bg-elevated);color:var(--text-primary)}.app-expenses .transactions-month-tab--active{border-color:var(--accent);background:var(--accent-soft);color:var(--text-primary);font-weight:600;box-shadow:0 0 0 1px color-mix(in srgb,var(--accent) 25%,transparent)}.app-expenses .transactions-month-tab--all{margin-inline-start:3.2px;padding-inline-start:12px;border-inline-start:1px solid var(--border-subtle, var(--border))}.app-expenses .transactions-account-totals{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-bottom:16px}.app-expenses .transactions-account-total{display:flex;flex-direction:column;gap:2.4px;min-width:0;padding:7.2px 9.6px;border-radius:var(--radius-md);border:1px solid var(--border-subtle);background:var(--bg-muted);font:inherit;text-align:left;color:inherit;cursor:pointer;transition:background var(--dur-fast) ease,border-color var(--dur-fast) ease,box-shadow var(--dur-fast) ease}.app-expenses .transactions-account-total:hover{border-color:var(--border-strong);background:var(--bg-elevated)}.app-expenses .transactions-account-total--active{border-color:var(--accent);background:var(--accent-soft);box-shadow:0 0 0 1px color-mix(in srgb,var(--accent) 25%,transparent)}.app-expenses .transactions-account-total--active .transactions-account-total-name{color:var(--text-primary)}.app-expenses .transactions-account-total-name{font-size:12px;font-weight:500;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.app-expenses .transactions-account-total-amount{font-size:14px;font-weight:600;font-variant-numeric:tabular-nums;color:var(--text-primary);white-space:nowrap}.app-expenses .transactions-account-total-count{font-size:13px;font-weight:500;color:var(--text-muted)}.app-expenses .transactions-account-total--all{background:var(--bg-elevated)}.app-expenses .transactions-account-total--all.transactions-account-total--active{border-color:var(--accent);background:var(--accent-soft)}.app-expenses .transactions-account-total--all .transactions-account-total-name{font-weight:600}.app-expenses .transactions-filter-empty{margin:0 0 16px;font-size:14px}.app-expenses .transactions-filter-label{font-size:14.4px;font-weight:500;color:var(--text-muted)}.app-expenses .transactions-filter-select{min-width:224px;padding:7.2px 10.4px;border-radius:8px;border:1px solid var(--border);background:var(--bg);color:var(--text);font-size:15.2px}.app-expenses .transactions-col-account{min-width:144px;max-width:256px}.app-expenses .transactions-account-meta{font-weight:400;font-size:15.2px}.app-expenses .transactions-col-amount{text-align:right;white-space:nowrap}.app-expenses .transactions-col-id{width:1%;white-space:nowrap;font-variant-numeric:tabular-nums;color:var(--text-secondary);font-size:13px}.app-expenses .transactions-col-confirmed{width:1%;white-space:nowrap;text-align:center;vertical-align:middle;font-size:13px}.app-expenses .transactions-balance-tick{display:inline-flex;color:var(--success)}.app-expenses .transactions-col-amazon{min-width:224px;max-width:352px;vertical-align:top;font-size:13px;line-height:1.4;color:var(--text-secondary)}.app-expenses .transactions-amazon-subject{font-weight:500;color:var(--text-primary);margin-bottom:4px}.app-expenses .transactions-amazon-meta{font-size:12px;margin-bottom:5.6px}.app-expenses .transactions-amazon-lines-inline{margin:5.6px 0 0;font-size:12px;line-height:1.45;word-break:break-word}.app-expenses .transactions-amazon-line-chunk{display:inline}.app-expenses .transactions-amazon-line-desc{word-break:break-word}.app-expenses .transactions-amazon-line-amt{white-space:nowrap;color:var(--text-muted);font-size:12px}.app-expenses .transactions-amazon-actions{display:flex;flex-wrap:wrap;gap:6.4px;margin-top:7.2px}.app-expenses .transactions-amazon-action-btn{font:inherit;font-size:12px;padding:3.2px 8.8px;border-radius:6px;border:1px solid var(--border-subtle);background:var(--surface-1);color:var(--text-primary);cursor:pointer}.app-expenses .transactions-amazon-action-btn:hover{background:var(--surface-2);border-color:var(--border-strong)}.app-expenses .expenses-total-summary{display:flex;flex-wrap:wrap;align-items:stretch;gap:16px;min-height:52px;padding:16px 20px;margin-bottom:16px}.app-expenses .expenses-total-filter{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px 16px;padding:10.4px 16px;font:inherit;text-align:start;border-radius:var(--radius-md);border:1px solid var(--border-subtle);background:var(--bg-muted);color:inherit;cursor:pointer;transition:background var(--dur-fast) ease,border-color var(--dur-fast) ease,box-shadow var(--dur-fast) ease}.app-expenses .expenses-total-filter:hover{border-color:var(--border-strong);background:var(--bg-elevated)}.app-expenses .expenses-total-filter--active{border-color:var(--accent);background:var(--accent-soft);box-shadow:0 0 0 1px color-mix(in srgb,var(--accent) 25%,transparent)}.app-expenses .expenses-total-filter--active.expenses-total-filter--income{border-color:var(--success);background:color-mix(in srgb,var(--success) 12%,var(--bg-muted));box-shadow:0 0 0 1px color-mix(in srgb,var(--success) 25%,transparent)}.app-expenses .expenses-total-summary--loading .expenses-total-amount{opacity:.55}.app-expenses .expenses-total-label{font-size:14px;font-weight:500;color:var(--text-secondary)}.app-expenses .expenses-total-amount{font-size:24px;font-weight:600;font-variant-numeric:tabular-nums;color:var(--text-primary)}.app-expenses .expenses-total-amount--income,.app-expenses .expenses-table-row--income td{color:var(--success)}.app-expenses .expenses-table-row--excluded td{color:var(--text-muted);opacity:.65}.app-expenses .expenses-table-row--excluded .expenses-txn-link,.app-expenses .expenses-table-row--excluded .expenses-category-btn{color:var(--text-muted)}@keyframes expense-row-flash-fade{0%{background-color:#2d6a4f29}to{background-color:transparent}}.app-expenses .expenses-table-row--just-updated td{animation:expense-row-flash-fade 3s ease-out forwards}.app-expenses .expenses-table-row--income .expenses-txn-link{color:var(--success)}.app-expenses .expenses-txn-link{font:inherit;font-size:inherit;color:var(--link);font-weight:500;background:none;border:none;padding:0;cursor:pointer;text-decoration:underline;text-underline-offset:2px}.app-expenses .expenses-txn-link:hover{color:var(--link-hover, var(--link))}.app-expenses .expenses-table-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:12px}.app-expenses .expenses-table-meta{margin:0;font-size:13px;min-width:0;flex:1}.app-expenses .expenses-table-search{flex-shrink:0;margin-left:auto}.app-expenses .expenses-table-filters{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.app-expenses .expenses-filter-select,.app-expenses .expenses-table-search-input{padding:5.6px 9.6px;border-radius:var(--radius-sm);border:1px solid var(--border-subtle);background:var(--bg-page);color:var(--text-primary);font:inherit;font-size:13px;line-height:1.25;height:34px}.app-expenses .expenses-filter-select{cursor:pointer}.app-expenses .expenses-table-search-input{width:224px;max-width:100%;min-width:0}.app-expenses .expenses-filter-select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px var(--ring)}.app-expenses .expenses-id-cell{white-space:nowrap;font-size:12.8px;font-variant-numeric:tabular-nums;color:var(--text-muted)}.app-expenses .expenses-id-expense{color:var(--text-muted)}.app-expenses .expenses-id-sep{margin:0 1.6px;color:var(--text-muted);opacity:.5}.app-expenses .expenses-recurring-badge{display:inline-block;padding:1.6px 7.2px;border-radius:99px;font-size:12px;font-weight:500;background:var(--accent-soft);color:var(--accent);white-space:nowrap;max-width:160px;overflow:hidden;text-overflow:ellipsis}.app-expenses .expenses-reclassify-btn{padding:0;border:none;background:none;color:var(--accent);font:inherit;font-size:13px;cursor:pointer;text-decoration:underline;text-underline-offset:2px;white-space:nowrap}.app-expenses .expenses-reclassify-btn:hover:not(:disabled){color:var(--text-primary)}.app-expenses .expenses-reclassify-btn:disabled{opacity:.6;cursor:not-allowed}.app-expenses .mark-return-note-input{resize:vertical;min-height:72px}.app-expenses .expenses-notes-col{min-width:160px;max-width:224px}.app-expenses .expenses-notes-cell{display:flex;align-items:center;gap:5.6px}.app-expenses .expenses-notes-input{width:100%;min-width:0;padding:4px 7.2px;border:1px solid var(--border);border-radius:6px;font:inherit;font-size:13px;color:var(--text);background:var(--surface)}.app-expenses .expenses-notes-input::placeholder{color:var(--text-muted);opacity:.7}.app-expenses .expenses-notes-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px var(--ring)}.app-expenses .expenses-notes-input:disabled{opacity:.65}.app-expenses .expenses-notes-saving{font-size:11px;white-space:nowrap}.app-expenses .expenses-table-search-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px var(--ring)}.app-expenses .expenses-table-status{padding:20px 10.4px!important;text-align:center}.app-expenses .expenses-table-card{position:relative}.app-expenses .expenses-table-card--busy .expenses-table tbody{opacity:.55;pointer-events:none}.app-expenses .expenses-table-busy-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--bg-page) 35%,transparent);pointer-events:none}.app-expenses .expenses-table-busy-overlay .sync-btn-spinner{width:28px;height:28px;margin:0;border-width:3px;color:var(--accent)}.app-expenses .modal-content-transaction-detail{max-width:560px}.app-expenses .transaction-detail-fields{display:grid;gap:12px;margin:0 0 20px}.app-expenses .transaction-detail-field{display:grid;grid-template-columns:104px 1fr;gap:8px 16px;align-items:baseline}.app-expenses .transaction-detail-field dt{margin:0;font-size:13px;font-weight:500;color:var(--text-secondary)}.app-expenses .transaction-detail-field dd{margin:0;color:var(--text-primary);word-break:break-word}.app-expenses .transaction-detail-section{padding-top:16px;border-top:1px solid var(--border-subtle)}.app-expenses .transaction-detail-section-title{margin:0 0 12px;font-size:14px;font-weight:600;color:var(--text-primary)}.app-expenses .transaction-detail-breakdown-subject{font-weight:500;color:var(--text-primary);margin-bottom:5.6px}.app-expenses .transaction-detail-breakdown-meta{margin:0 0 12px;font-size:13px}.app-expenses .transaction-detail-line-list{margin:0 0 12px;padding-left:18.4px;font-size:14px}.app-expenses .transaction-detail-line-list li+li{margin-top:5.6px}.app-expenses .transaction-detail-footer{margin:20px 0 0;font-size:13px}.app-expenses .modal-backdrop .modal-backdrop{z-index:1001}.app-expenses .categories-table-cell--wrap{max-width:256px;white-space:pre-wrap;word-break:break-word}.app-expenses .categories-table-cell--id{color:var(--text-muted);font-size:12px;font-variant-numeric:tabular-nums;width:40px}.app-expenses .categories-table-actions{white-space:nowrap;width:64px;text-align:right}.app-expenses .categories-icon-btn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:1px solid var(--border-subtle);border-radius:6px;background:transparent;color:var(--text-muted);cursor:pointer;transition:color .15s,background .15s,border-color .15s}.app-expenses .categories-icon-btn:hover:not(:disabled){color:var(--text-primary);background:var(--bg-hover, rgba(0,0,0,.05));border-color:var(--border-default)}.app-expenses .categories-icon-btn--danger:hover:not(:disabled){color:var(--error, #c0392b);background:#c0392b12;border-color:var(--error, #c0392b)}.app-expenses .categories-icon-btn:disabled{opacity:.4;cursor:not-allowed}.app-expenses .categories-icon-btn+.categories-icon-btn{margin-left:5.6px}.app-expenses .category-edit-panel{margin-top:20px;padding-top:20px;border-top:1px solid var(--border-subtle)}.app-expenses .category-form{display:grid;gap:13.6px}.app-expenses .category-form-field{display:grid;gap:5.6px}.app-expenses .category-form-field--checkbox{grid-template-columns:auto 1fr;align-items:start;column-gap:8px}.app-expenses .category-form-field--checkbox input[type=checkbox]{margin-top:2.4px}.app-expenses .category-form-field--checkbox .category-form-label{grid-column:2}.app-expenses .category-form-hint{grid-column:2;font-size:13px;line-height:1.4}.app-expenses .category-form-label{font-size:13px;font-weight:500;color:var(--text-secondary)}.app-expenses .category-form-input,.app-expenses .category-form-textarea{width:100%;padding:8px 10.4px;border:1px solid var(--border-subtle);border-radius:var(--radius-sm);background:var(--surface);color:var(--text-primary);font:inherit}.app-expenses .category-form-textarea{resize:vertical;min-height:72px}.app-expenses .category-form-input:focus,.app-expenses .category-form-textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px var(--ring)}.app-expenses .category-form-actions{display:flex;justify-content:flex-end;gap:8px}.app-expenses .expenses-category-match{color:var(--success, #15803d)}.app-expenses .expenses-category-mismatch{color:var(--warning)}.app-expenses .expenses-category-cell{display:inline-flex;align-items:center;gap:6px}.app-expenses .expenses-category-btn{display:inline-flex;align-items:center;padding:2.4px 8px;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--link);font:inherit;font-weight:500;cursor:pointer;text-align:left;line-height:1.35;text-decoration:underline;text-underline-offset:2px}.app-expenses .expenses-category-btn:hover{color:var(--accent-hover, var(--link));background:var(--bg-hover, rgba(0, 0, 0, .05))}.app-expenses .expenses-category-btn:focus-visible{outline:2px solid var(--ring);outline-offset:2px}.app-expenses .expenses-category-btn--uncategorized{background:color-mix(in srgb,var(--danger) 15%,transparent);color:var(--danger);font-weight:600;text-decoration:none}.app-expenses .expenses-category-btn--uncategorized:hover{background:color-mix(in srgb,var(--danger) 25%,transparent);color:var(--danger)}.app-expenses .expenses-category-label{cursor:default}.app-expenses .expenses-category-btn--suggested{background:color-mix(in srgb,var(--warning) 18%,transparent);color:var(--warning);font-weight:600;border:1px solid color-mix(in srgb,var(--warning) 35%,transparent);text-decoration:none}.app-expenses .expenses-category-btn--suggested:hover{background:color-mix(in srgb,var(--warning) 28%,transparent);color:var(--warning);border-color:color-mix(in srgb,var(--warning) 50%,transparent)}.app-expenses .expenses-category-accept-btn{display:inline-flex;align-items:center;justify-content:center;padding:2px;border:none;border-radius:var(--radius-sm);background:color-mix(in srgb,var(--success) 18%,transparent);color:var(--success);cursor:pointer;flex-shrink:0}.app-expenses .expenses-category-accept-btn:hover:not(:disabled){background:color-mix(in srgb,var(--success) 28%,transparent);color:var(--success)}.app-expenses .expenses-category-accept-btn:disabled{opacity:.6;cursor:not-allowed}.app-expenses .expenses-category-accept-btn:focus-visible{outline:2px solid var(--ring);outline-offset:2px}.app-expenses .category-approval-hint{margin:0 0 16px;font-size:14px;line-height:1.45}.app-expenses .category-approval-filter-label{display:block;margin-bottom:6px;font-size:13px;font-weight:600;color:var(--text-secondary)}.app-expenses .category-approval-filter-input{width:100%;box-sizing:border-box;margin-bottom:12px;padding:7.2px 10.4px;border:1px solid var(--border-subtle);border-radius:var(--radius-sm);background:var(--bg-elevated);color:var(--text-primary);font:inherit;font-size:14px}.app-expenses .category-approval-filter-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px var(--ring)}.app-expenses .category-approval-filter-input:disabled{opacity:.6}.app-expenses .category-approval-empty{padding:12px;font-size:14px;text-align:center}.app-expenses .category-approval-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.app-expenses .category-approval-option{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;padding:10px 12px;border:1px solid var(--border-subtle);border-radius:var(--radius-md);background:var(--bg-elevated);color:var(--text-primary);font:inherit;text-align:left;cursor:pointer;transition:border-color var(--dur-fast),background var(--dur-fast)}.app-expenses .category-approval-option:hover:not(:disabled){border-color:var(--accent);background:var(--accent-soft)}.app-expenses .category-approval-option:disabled{opacity:.6;cursor:not-allowed}.app-expenses .category-approval-option--suggested{border-color:color-mix(in srgb,var(--warning) 55%,transparent);background:color-mix(in srgb,var(--warning) 8%,transparent)}.app-expenses .category-approval-option-name{font-weight:500}.app-expenses .category-approval-suggested-badge{flex-shrink:0;font-size:12px;font-weight:500;color:var(--warning);background:color-mix(in srgb,var(--warning) 18%,transparent);padding:2px 8px;border-radius:999px}.app-expenses .category-approval-correction-note{width:100%;margin-top:4px}.app-expenses .category-approval-correction-hint{margin:8px 0 0;font-size:13px}.app-expenses .categories-context-intro{margin:4px 0 16px;max-width:672px}.app-expenses .llm-usage-page{display:flex;flex-direction:column;gap:20px}.app-expenses .llm-usage-views{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.app-expenses .llm-usage-view{padding:6.4px 13.6px;font-size:13px;font-weight:500;border-radius:var(--radius-sm);border:1px solid var(--border-subtle);background:var(--bg-muted);color:var(--text-secondary);cursor:pointer}.app-expenses .llm-usage-view:hover{color:var(--text-primary);border-color:color-mix(in srgb,var(--accent) 35%,var(--border-subtle))}.app-expenses .llm-usage-view--on{background:color-mix(in srgb,var(--accent) 18%,var(--bg-elevated));border-color:color-mix(in srgb,var(--accent) 45%,var(--border-subtle));color:var(--text-primary)}.app-expenses .llm-usage-chart{margin:0 0 20px}.app-expenses .llm-usage-chart-caption{margin-bottom:8px;font-size:13px;color:var(--text-secondary)}.app-expenses .llm-usage-chart-scroll{overflow-x:auto}.app-expenses .llm-usage-chart-grid{stroke:var(--border-subtle);stroke-width:1}.app-expenses .llm-usage-chart-tick,.app-expenses .llm-usage-chart-label{fill:var(--text-secondary);font-size:11px;font-family:var(--font-sans)}.app-expenses .llm-usage-chart-bar{fill:var(--accent)}.app-expenses .llm-usage-chart-bar--zero{fill:var(--border-strong)}.app-expenses .llm-usage-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(144px,1fr));gap:12px}.app-expenses .llm-usage-stat{display:flex;flex-direction:column;gap:4px;padding:14px 16px;border-radius:var(--radius-md);border:1px solid var(--border);background:var(--surface-elevated)}.app-expenses .llm-usage-stat-value{font-size:20px;font-weight:600;font-variant-numeric:tabular-nums}.app-expenses .llm-usage-stat-label{font-size:13px}.app-expenses .llm-usage-table-col--num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.app-expenses .llm-usage-table-cell--model{max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}.app-expenses .llm-usage-status--success{color:var(--success)}.app-expenses .llm-usage-status--error{color:var(--danger)}.app-expenses .llm-usage-status--in_progress{color:var(--warning)}.app-expenses .llm-usage-pagination{display:flex;align-items:center;justify-content:center;gap:16px;margin-top:16px}.app-expenses .re-page{display:flex;flex-direction:column;gap:20px}.app-expenses .re-header-actions{display:flex;gap:8px;align-items:center}.app-expenses .re-header-actions .sync-btn{margin-top:0}.app-expenses .re-form-card{display:flex;flex-direction:column;gap:20px}.app-expenses .re-form{display:flex;flex-direction:column;gap:16px}.app-expenses .re-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:13.6px 20px}.app-expenses .re-form-field--name{grid-column:1 / 2}.app-expenses .re-form-field--pattern{grid-column:2 / 3}.app-expenses .re-form-field--num{grid-column:span 1}.app-expenses .re-form-field--active{grid-column:span 1;display:flex;flex-direction:column;justify-content:flex-end}@media (max-width: 640px){.app-expenses .re-form-grid{grid-template-columns:1fr}.app-expenses .re-form-field--name,.app-expenses .re-form-field--pattern,.app-expenses .re-form-field--active{grid-column:1 / 2}}.app-expenses .re-form-hint{font-weight:400;color:var(--text-muted);font-size:12px}.app-expenses .re-form-checkbox{width:16px;height:16px;accent-color:var(--accent);cursor:pointer}.app-expenses .re-form-actions{padding-top:4px}.app-expenses .re-preview{border-top:1px solid var(--border-subtle);padding-top:20px;display:flex;flex-direction:column;gap:20px}.app-expenses .re-preview-header{display:flex;align-items:center;gap:12px}.app-expenses .re-preview-loading{font-size:13px}.app-expenses .re-preview-section{display:flex;flex-direction:column;gap:8px}.app-expenses .re-preview-section-title{font-size:13px;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.04em}.app-expenses .re-preview-empty{font-size:14px;padding:4px 0}.app-expenses .re-preview-table-wrap{max-height:288px;overflow-y:auto}.app-expenses .re-preview-table{font-size:13px}.app-expenses .re-link-btn{font-size:12px;padding:3.2px 8.8px}.app-expenses .re-badge{display:inline-block;padding:2.4px 7.2px;border-radius:99px;font-size:12px;font-weight:600;line-height:1.4}.app-expenses .re-badge--matched{background:var(--accent-soft);color:var(--accent)}.app-expenses .re-badge--auto{background:#0596691f;color:var(--success)}.app-expenses .re-list-table{width:100%}.app-expenses .re-list-table--inactive{opacity:.6}.app-expenses .re-list-row--editing{background:var(--accent-soft)}.app-expenses .re-list-pattern{font-family:ui-monospace,Cascadia Code,Source Code Pro,monospace;font-size:13px;color:var(--text-secondary)}.app-expenses .re-inactive-heading{margin-top:24px;padding-top:20px;border-top:1px solid var(--border-subtle)}@media (prefers-reduced-motion: reduce){.app-expenses *,.app-expenses *:before,.app-expenses *:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.app-expenses .app-loading-spinner{animation:none;border-top-color:var(--accent)}}.app-expenses :where(.expenses-screen,.shell-sidebar,.shell-topbar){font-size:16px}.app-expenses :where(.expenses-screen,.shell-sidebar,.shell-topbar) :where(button){background:revert;color:revert;border:revert;border-radius:revert;cursor:revert}.app-expenses :where(.expenses-screen) :where(input){background:revert;color:revert;border:revert;border-radius:revert;width:revert}.app-expenses :where(.expenses-screen) :where(form,label){display:revert;gap:revert}.app-expenses :where(.expenses-screen) :where(h1){font-family:revert;font-weight:revert;font-size:revert;line-height:revert}html .app-expenses :where(.expenses-screen) a:where(:hover){color:var(--link)}html .app-expenses :where(.expenses-screen,.shell-sidebar,.shell-topbar) :is(button,a,input):where(:focus-visible){outline:revert;outline-offset:revert}.app-expenses .shell-main>.house{width:auto;margin:0;padding:0}@media (min-width: 960px){.app-expenses .shell-topbar{display:none}}html[data-theme=dark] .app-expenses{--bg-page: #141816;--bg-elevated: #1c2420;--bg-muted: #24302a;--bg-sidebar-hover: rgba(243, 241, 234, .06);--bg-sidebar-active: #24312b;--border-subtle: #31403a;--border-strong: #3d5248;--text-primary: #f3f1ea;--text-secondary: #a8b5ae;--text-muted: #7f8f88;--accent: #8fceb0;--accent-hover: #b7e0cb;--accent-soft: rgba(143, 206, 176, .16);--link: #b7e0cb;--danger: #ff8b9a;--success: #6ee7b7;--warning: #fbbf24;--topbar-bg: rgba(20, 24, 22, .92);--topbar-border: rgba(243, 241, 234, .08);--backdrop: rgba(0, 0, 0, .55);--ring: rgba(143, 206, 176, .45);--sidebar-divider: rgba(243, 241, 234, .08);--sidebar-pin-bg: rgba(243, 241, 234, .06);--sidebar-pin-bg-hover: rgba(243, 241, 234, .12);--sidebar-scrollbar-thumb: rgba(243, 241, 234, .24);--sidebar-initial-border: rgba(243, 241, 234, .16);--sidebar-initial-bg: rgba(243, 241, 234, .06);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .35);--shadow-md: 0 8px 24px rgba(0, 0, 0, .4);--shadow-lg: 0 24px 48px rgba(0, 0, 0, .5)}html[data-theme=dark] .app-expenses .sync-btn,html[data-theme=dark] .app-expenses .extraction-confirm-btn{background:#2d6a4f;color:#fff}html[data-theme=dark] .app-expenses .sync-btn:hover:not(:disabled){background:#1f4d3a}.app-mygrubby{--ink: #1a1a1a;--muted: #5c6b64;--faint: #8a8a8a;--quiet: #666;--paper: #f6f4ef;--paper-2: #f3efe8;--paper-3: #f8f6f2;--field: #fff;--wash: #edf2ef;--sage: #dce8e1;--sage-line: #b7c9be;--forest: #2d6a4f;--forest-text: #2d6a4f;--forest-deep: #1f4d3a;--line: #d5ddd7;--line-strong: #2d3a34;--warn: #b00020;--danger-bg: #ffd6d6;--danger-ink: #8a1c1c;--warn-bg: #fff3cd;--warn-ink: #7a5c00;--info-bg: #d7ebff;--ok-bg: #d8f3dc;--star: #b7b1a6;--gold: #d4a017;--sand: #d7d0c4;--hairline: #e4ebe6;--rule: #eee7dc;--chip-border: #e0dcd4;--input-border: #ccc;--input-border-2: #ddd;--olive: #8aa194;--ink-soft: #3d4a44;--stone: #9a9388;--stone-2: #8a8175;--mist: #c5d1c8;--placeholder: #bbb;--night: #111;--on-forest: #fff;font-family:system-ui,-apple-system,sans-serif;line-height:1.5;color:var(--ink);background:var(--paper);min-height:100vh}.app-mygrubby h1{font-family:inherit;font-weight:650;font-size:1.6rem;line-height:1.25}body{margin:0}button,input,select{font:inherit}.card{max-width:28rem;margin:4rem auto;padding:2rem;background:var(--field);border-radius:12px;box-shadow:0 8px 24px #00000014}.app-mygrubby :where(label){display:block;margin-bottom:.35rem;font-weight:600}.app-mygrubby :where(input){width:100%;padding:.65rem .75rem;margin-bottom:1rem;border:1px solid var(--input-border);border-radius:8px}@keyframes onAutoFillStart{}.app-mygrubby :where(input):-webkit-autofill{animation-name:onAutoFillStart;animation-duration:1ms}.login-password-wrapper{position:relative;display:flex;align-items:center;margin-bottom:1rem}.login-password-wrapper input{margin-bottom:0;padding-right:2.75rem}.login-password-toggle{position:absolute;right:.45rem;top:50%;transform:translateY(-50%);display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;padding:0;border:none;border-radius:6px;background:transparent;color:var(--quiet);cursor:pointer}.login-password-toggle:hover{color:var(--ink)}.login-password-toggle:focus-visible{outline:2px solid var(--forest);outline-offset:2px}.app-mygrubby :where(button){width:100%;padding:.75rem;border:none;border-radius:8px;background:var(--forest);color:var(--on-forest);cursor:pointer}.app-mygrubby :where(button:disabled){opacity:.6;cursor:not-allowed}.app-mygrubby .error{color:var(--warn);margin-bottom:1rem}.shell{max-width:48rem;margin:2rem auto;padding:0 1rem}.app-shell{min-height:100vh}.app-header{position:sticky;top:0;z-index:50;display:flex;justify-content:space-between;align-items:stretch;gap:1rem;padding:0 1.25rem;background:var(--sage);border-bottom:1px solid var(--sage-line);box-shadow:0 1px #24382f0f}.app-kicker{margin:0 0 .35rem;font-size:.85rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.app-nav{display:flex;align-items:stretch;min-width:0}.app-nav-divider{width:1px;align-self:center;height:1.35rem;margin:0 .35rem;background:var(--olive)}.app-nav a{display:grid;place-items:center;color:var(--ink);text-decoration:none;padding:.95rem .9rem .8rem;border-bottom:3px solid transparent}.app-nav a.active{color:var(--forest-deep);font-weight:600;border-bottom-color:var(--forest-deep)}.app-account{position:relative;display:flex;align-items:center;align-self:center}.app-account-trigger{width:2.25rem;height:2.25rem;padding:0;border-radius:50%;background:var(--forest);color:var(--on-forest);font-weight:700;letter-spacing:0}.app-account-menu{position:absolute;top:calc(100% - .35rem);right:0;min-width:16rem;padding:.65rem 0 .4rem;background:var(--field);border:1px solid var(--line);border-radius:10px;box-shadow:0 10px 28px #0000001f}.app-account-email{margin:0;padding:.35rem .9rem .65rem;color:var(--muted);font-size:.9rem;word-break:break-all}.app-account-menu a,.app-account-menu button{width:100%;padding:.55rem .9rem;border:none;border-radius:0;background:transparent;color:var(--ink);text-align:left;text-decoration:none;display:block;font:inherit;cursor:pointer}.app-account-menu a:hover,.app-account-menu button:hover{background:var(--wash)}.app-main{max-width:56rem;margin:0 auto;padding:1.5rem 1rem 3rem}.detail-title{display:flex;flex-wrap:wrap;align-items:baseline;margin:0 0 1rem;font-size:1.6rem}.detail-title-row{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:.35rem 1rem;margin:0 0 1rem}.detail-title-row .detail-title{margin:0}.filter-note{margin:0 0 1rem}.header-actions{display:flex;gap:.5rem;flex-wrap:wrap}.muted{color:var(--muted)}.panel{background:var(--field);border-radius:12px;padding:1.25rem;margin-bottom:1rem;box-shadow:0 4px 16px #0000000d}.panel h2{margin-top:0}.panel-stack{display:grid;gap:1.25rem}.panel-toolbar{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem}.panel-toolbar-start{display:flex;flex-wrap:wrap;gap:.5rem}.btn-primary,.btn-secondary,.btn-outline,.btn-danger{display:inline-flex;align-items:center;justify-content:center;width:auto;padding:.65rem 1rem;border:none;border-radius:8px;text-decoration:none;cursor:pointer}.btn-primary{background:var(--forest);color:var(--on-forest)}.btn-inline{text-align:center}.btn-secondary{background:var(--wash);color:var(--ink)}.btn-outline{background:var(--field);color:var(--ink);border:1.5px solid var(--line-strong)}.btn-danger{background:var(--warn);color:var(--on-forest)}.table-wrap{overflow-x:auto;background:var(--field);border-radius:12px;box-shadow:0 4px 16px #0000000d}.recipe-menu-target,.recipe-sort{display:flex;align-items:center;gap:.45rem;font-weight:600;white-space:nowrap}.recipe-menu-target select,.recipe-sort select{width:auto;min-width:8.5rem;max-width:12rem;margin-bottom:0;padding:.4rem .65rem}.recipe-menu-target select{min-width:14rem;max-width:22rem}.availability-picker{display:inline-flex;gap:.15rem;align-items:center}.availability-pick{display:inline-flex;align-items:center;justify-content:center;width:1.6rem;height:1.6rem;padding:0;border:none;border-radius:6px;background:transparent;font-size:1.15rem;font-weight:800;line-height:1;cursor:pointer}.availability-pick:disabled{opacity:.55;cursor:wait}.availability-pick-unset{color:var(--star)}.availability-pick-have{color:var(--forest-text)}.availability-pick-ignore{color:var(--warn)}.panel-heading{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:.35rem 1rem}.panel-heading h2{margin-bottom:.75rem}.pantry-counts{display:inline-flex;flex-wrap:wrap;align-items:baseline;gap:.75rem 1rem;font-weight:600;font-size:.95rem}.pantry-count-have{color:var(--forest-text);font-weight:800}.staple-list{list-style:none;padding:0;margin:0}.staple-list li{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.4rem 0;border-bottom:1px solid var(--wash)}.pantry-section{margin-bottom:1rem;background:var(--field);border-radius:12px;box-shadow:0 4px 16px #0000000d}.pantry-section>summary{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:.85rem 1rem;font-weight:700;cursor:pointer;list-style:none}.pantry-section>summary::-webkit-details-marker{display:none}.pantry-section-table{box-shadow:none;border-radius:0 0 12px 12px}.pantry-recipe-list{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.6rem}.pantry-recipe-thumb{display:grid;justify-items:center;gap:.2rem;width:auto;padding:0;border:none;background:transparent;cursor:zoom-in;color:inherit;font:inherit}.pantry-recipe-thumb:disabled{cursor:default}.pantry-recipe-thumb img,.pantry-recipe-thumb .image-placeholder{display:block;width:3.25rem;aspect-ratio:3 / 4;object-fit:cover;border-radius:4px;border:1px solid var(--input-border-2)}.pantry-recipe-thumb .image-placeholder{display:grid;place-items:center;width:3.25rem;font-size:.65rem;color:var(--faint);background:var(--paper-2)}.pantry-recipe-id{font-size:.75rem;font-weight:600;color:var(--muted)}#pantry-kind{margin-bottom:1rem}.data-table{width:100%;border-collapse:collapse}.data-table th,.data-table td{padding:.85rem 1rem;text-align:left;border-bottom:1px solid var(--rule)}.data-table a{color:var(--forest-text);font-weight:600}.table-actions{display:flex;gap:.75rem;align-items:center}.quiet-button,.link-button{background:none;border:none;padding:0;width:auto;cursor:pointer}.quiet-button{color:var(--forest-text);text-decoration:underline}.link-button{color:var(--warn);text-decoration:underline;cursor:pointer}.badge{display:inline-block;padding:.2rem .55rem;border-radius:999px;font-size:.85rem;background:var(--wash)}.badge-scheduled{background:var(--warn-bg)}.badge-processing{background:var(--info-bg)}.badge-extracted{background:var(--ok-bg)}.badge-failed{background:var(--danger-bg)}.translation-missing{background:var(--danger-bg);color:var(--danger-ink);font-weight:700}.ingredient-list{display:grid;grid-template-columns:max-content 1fr;column-gap:1rem;align-items:baseline;list-style:none;padding:0;margin:0}.ingredient-list li{display:contents}.ingredient-qty,.ingredient-item{padding:.4rem 0;border-bottom:1px solid var(--wash)}.ingredient-qty{text-align:right;white-space:nowrap}.ingredient-qty strong{font-size:.95em;font-weight:700}.ingredient-amount{font-size:1.12em;font-weight:400}.ingredient-qty-button{display:inline;margin:0;border:none;border-radius:0;background:none;color:inherit;cursor:pointer;font:inherit;text-align:right;width:auto;padding:.4rem 0}.ingredient-qty-button:hover .ingredient-amount{text-decoration:underline;text-underline-offset:.15em}.dialog-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:grid;place-items:center;padding:1rem;background:#00000073}.amount-dialog{width:min(92vw,28rem);background:var(--field);border-radius:12px;padding:1.25rem;box-shadow:0 12px 40px #0000002e}.amount-dialog h2{margin-top:0;font-size:1.15rem}.field-hint{margin:-.65rem 0 1rem;font-size:.9rem}.amount-guess-row{margin:0 0 1rem}.amount-dialog-actions{display:flex;justify-content:flex-end;gap:.6rem}.dedup-dialog{width:min(92vw,36rem);max-height:85vh;overflow:auto}.dedup-groups{margin:0 0 1rem}.dedup-group{margin:0 0 .85rem;padding:0 0 .85rem;border-bottom:1px solid var(--hairline)}.dedup-group:last-child{margin-bottom:0;padding-bottom:0;border-bottom:none}.dedup-group h3{margin:0 0 .45rem;font-size:1rem}.dedup-keep,.dedup-drop{margin:.3rem 0}.pantry-conversion-row label{margin-bottom:.25rem}.amount-unit-fields{display:grid;grid-template-columns:1fr 7rem;gap:.5rem;margin-bottom:.35rem}.pantry-equivalent-add-fields{display:grid;grid-template-columns:1fr 1fr 7rem;gap:.5rem}.method-list{padding-left:1.25rem;display:grid;gap:.9rem}.conversion-list{list-style:none;padding:0;margin:0}.conversion-list li{margin-bottom:.35rem}.extraction-list{list-style:none;padding:0;margin:0;display:grid;gap:.75rem}.confidence-badge{display:inline-block;padding:.2rem .55rem;border-radius:999px;font-size:.85rem}.confidence-high{background:var(--wash);color:var(--muted)}.confidence-medium{background:var(--warn-bg);color:var(--warn-ink);font-weight:600}.confidence-low{background:var(--danger-bg);color:var(--danger-ink);font-weight:600}.empty-state{background:var(--field);border-radius:12px;padding:2rem;text-align:center}.creating-recipe p:first-child{font-size:1.05rem;margin-bottom:.35rem}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(10rem,1fr));gap:1rem}.stat-card{display:block;background:var(--field);border-radius:12px;padding:1.25rem;text-decoration:none;color:inherit;box-shadow:0 4px 16px #0000000d}.stat-value{display:block;font-size:2rem;font-weight:700}.stat-label{color:var(--muted)}.image-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));gap:1rem}.image-grid figure{margin:0}.image-grid figcaption{font-weight:600;margin-bottom:.5rem}.image-grid img{width:100%;border-radius:8px;border:1px solid var(--input-border-2)}.image-grid-enlarge{display:block;width:100%;padding:0;border:none;background:none;border-radius:8px;cursor:zoom-in}.image-grid-enlarge img{display:block;width:100%}.image-lightbox-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:grid;place-items:center;padding:1rem;background:#000000b8}.image-lightbox{display:grid;gap:.75rem;width:min(92vw,42rem);max-height:92vh}.image-lightbox-header{display:flex;justify-content:space-between;align-items:center;gap:1rem;color:var(--on-forest);font-weight:600}.image-lightbox-actions{display:flex;align-items:center;gap:.5rem}.image-lightbox-toggle,.image-lightbox-close{width:auto;padding:.4rem .75rem;background:#ffffff24;color:var(--on-forest)}.image-lightbox-toggle:hover,.image-lightbox-close:hover{background:#ffffff38}.image-lightbox-frames{display:grid}.image-lightbox-frames>.image-lightbox-img{grid-area:1 / 1}.image-lightbox-img{width:100%;max-height:calc(92vh - 3rem);object-fit:contain;border-radius:8px;background:var(--night)}.image-lightbox-img-inactive{visibility:hidden;pointer-events:none}.image-placeholder{aspect-ratio:3 / 4;display:grid;place-items:center;background:var(--paper-2);border-radius:8px;color:var(--muted)}.leaflet-list{display:grid;gap:1rem}.leaflet-card{position:relative;display:grid;grid-template-columns:9rem 1fr;gap:1rem;background:var(--field);border-radius:12px;padding:1rem;box-shadow:0 4px 16px #0000000d}.copy-id-button{width:auto;padding:.15rem .45rem;font-size:.68rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase;background:transparent;color:var(--faint);border:1px solid var(--chip-border);border-radius:4px;cursor:pointer}.copy-id-button:hover{background:var(--paper-2);color:var(--muted)}.copy-id-button-card{position:absolute;top:.5rem;right:.5rem;z-index:1}.leaflet-card-id-tools{position:absolute;top:.5rem;right:.5rem;z-index:1;display:flex;align-items:center;gap:.3rem}.leaflet-id-row{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin:0 0 .75rem;font-size:.85rem}.leaflet-id-row code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.8rem;background:var(--paper-2);padding:.15rem .4rem;border-radius:4px;word-break:break-all}.leaflet-card-thumb{display:block;padding:0;border:none;background:transparent;cursor:zoom-in}.leaflet-card-thumb img,.leaflet-card-thumb .image-placeholder{display:block;width:100%;aspect-ratio:3 / 4;object-fit:cover;border-radius:8px;border:1px solid var(--input-border-2)}.leaflet-card-thumb .image-placeholder{display:grid;place-items:center;font-size:.75rem;color:var(--faint);background:var(--paper-2)}.leaflet-card-body{display:grid;gap:.5rem;align-content:start}.leaflet-card-body h2{display:flex;align-items:baseline;gap:.5rem;margin:0;font-size:1.1rem}.leaflet-card-body h2 a{color:inherit;text-decoration:none}.leaflet-card-meta{display:flex;flex-wrap:wrap;gap:.75rem;align-items:center}.leaflet-card-summary{margin:0;font-size:.9rem}.recipe-card-time{margin:0;font-size:.95rem;font-weight:600}.star-rating{--star-on: var(--gold);--star-off: var(--sand);display:inline-flex;align-items:center;gap:.05rem}.star-btn{width:auto;padding:.05rem .1rem;background:none;color:var(--star-off);font-size:1.35rem;line-height:1;border:none;border-radius:4px}.star-btn:focus-visible{outline:2px solid var(--forest);outline-offset:1px}.star-btn.is-on,.star-rating:hover .star-btn{color:var(--star-on)}.star-rating:hover .star-btn:hover~.star-btn{color:var(--star-off)}.star-rating.is-readonly:hover .star-btn{color:var(--star-off)}.star-rating.is-readonly:hover .star-btn.is-on{color:var(--star-on)}span.star-btn{display:inline-block;cursor:default}.recipe-hero{display:grid;grid-template-columns:1fr 11.5rem;gap:1.25rem 1.5rem;align-items:start}.recipe-hero-copy h2{margin:0;font-size:1.15rem}.recipe-nutrition{margin-top:1.35rem}.recipe-nutrition h2{margin:0 0 .4rem}.recipe-nutrition-list{list-style:none;margin:0;padding:0}.recipe-nutrition-list li{margin:0;font-size:.95rem;line-height:1.65;color:var(--ink-soft)}.recipe-nutrition-label{font-weight:600;color:var(--ink)}.recipe-nutrition-label:after{content:": "}.recipe-hero-photo{display:grid;gap:.4rem;justify-items:stretch}.recipe-hero-photo .leaflet-card-thumb{width:100%}.recipe-leaflet-link{font-size:.72rem;color:var(--stone);text-decoration:none;word-break:break-all;line-height:1.35;text-align:center}.recipe-leaflet-link:hover{color:var(--muted);text-decoration:underline}.leaflet-card-actions{display:flex;gap:1rem;align-items:center}.leaflet-card-actions a,.action-link{color:var(--forest-text)}.action-link.is-added,.leaflet-card-actions .is-added{color:var(--muted);font-weight:600;text-decoration:none}.action-link{background:none;border:none;padding:0;width:auto;text-decoration:underline;cursor:pointer;border-radius:0}.quiet-action{background:none;border:none;padding:0;width:auto;color:var(--stone-2);font-size:.8rem;text-decoration:underline;cursor:pointer;border-radius:0}.recipe-permalink{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:.35rem .75rem;margin:1.5rem 0 0;font-size:.85rem}.recipe-permalink a{color:var(--forest-text);word-break:break-all}.recipe-permalink .quiet-action{font-size:.85rem}.public-recipe{padding-top:2rem}.list-toolbar{display:grid;grid-template-columns:auto minmax(0,1fr) minmax(14rem,18rem);align-items:center;gap:.75rem;margin-bottom:1.25rem}.list-toolbar-actions{display:flex;align-items:center;gap:.5rem;height:2.5rem}.list-toolbar-actions .list-toolbar-action{width:auto;min-width:4.75rem}.list-toolbar-start,.search-field,.list-toolbar-action,.list-toolbar-spacer{display:flex;align-items:center;height:2.5rem}.list-toolbar-action,.list-toolbar-spacer,.search-field{width:100%;max-width:none}.list-toolbar-action{justify-content:center;margin:0}.search-field{justify-self:stretch}.search-field input{width:100%;height:2.5rem;margin:0}.list-toolbar-meta{margin:0;text-align:center;font-size:1rem;font-weight:600;color:var(--muted);line-height:2.5rem}.list-toolbar-framed{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:.75rem 1rem;margin-bottom:1.25rem;padding:.55rem .85rem;background:var(--field);border:1px solid var(--mist);border-radius:10px}.list-toolbar-framed .list-toolbar-start{justify-content:flex-start;width:auto;height:auto;min-height:2.5rem}.list-toolbar-framed .list-toolbar-spacer{width:0;height:0;min-height:0}.list-toolbar-framed .recipe-sort{margin:0}.list-toolbar-framed .recipe-sort select{height:2.5rem;padding-top:0;padding-bottom:0}.list-toolbar-framed .search-field{justify-self:end;width:min(100%,16rem)}.list-toolbar-framed .list-toolbar-meta{padding:0 .5rem;white-space:nowrap}.infinite-sentinel{min-height:1px;padding:1rem 0;text-align:center}.back-to-top{position:fixed;right:1.25rem;bottom:1.25rem;z-index:40;display:grid;place-items:center;width:3rem;height:3rem;padding:0;line-height:0;border-radius:999px;background:var(--forest);color:var(--on-forest);box-shadow:0 6px 18px #0000002e}.back-to-top svg{display:block;width:1.25rem;height:1.25rem;fill:none;stroke:currentColor;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}.pagination{display:flex;align-items:center;justify-content:center;gap:1rem;margin-top:1.25rem}.pagination button{width:auto}.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 (max-width: 640px){.list-toolbar{grid-template-columns:1fr}.list-toolbar-framed{grid-template-columns:auto minmax(0,1fr) minmax(6.5rem,9rem);gap:.5rem;padding:.5rem .6rem}.list-toolbar-framed .recipe-sort span{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.list-toolbar-framed .recipe-sort select{min-width:6.25rem;max-width:7.5rem}.list-toolbar-framed .list-toolbar-meta{padding:0;font-size:.95rem}.list-toolbar-framed .search-field,.list-toolbar-actions{width:100%}.list-toolbar-actions .list-toolbar-action{flex:1}.leaflet-card{grid-template-columns:6.5rem 1fr}.menu-recipe-grid,.menu-recipe-grid:has(>:nth-child(5)){grid-template-columns:repeat(2,minmax(0,1fr))}.recipe-hero{grid-template-columns:1fr}.recipe-hero-photo{order:-1;max-width:11.5rem}}.json-block{overflow-x:auto;background:var(--paper-3);padding:1rem;border-radius:8px;font-size:.85rem}.override-field{background:var(--field);border-radius:12px;padding:1.25rem;margin-bottom:1rem;box-shadow:0 4px 16px #0000000d}.override-field.is-overridden{border-left:4px solid var(--forest)}.recipe-no{font-size:.65em;font-weight:600;margin-left:.2em;color:var(--muted);vertical-align:super;line-height:0}.override-field-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem}.override-columns{display:grid;grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));gap:1rem}.extracted-block,.override-block{background:var(--paper-3);border-radius:8px;padding:.85rem}.block-label{margin:0 0 .5rem;font-size:.8rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.extracted-block pre,.override-block textarea{margin:0;white-space:pre-wrap}.app-mygrubby :where(textarea){width:100%;padding:.65rem .75rem;border:1px solid var(--input-border);border-radius:8px;resize:vertical}.app-mygrubby :where(select){width:100%;max-width:16rem;padding:.65rem .75rem;border:1px solid var(--input-border);border-radius:8px}.pdf-scan-page{max-width:36rem;margin:0 auto}.pdf-scan-page h1{margin:0 0 .5rem}.pdf-scan-picker,.pdf-scan-actions{display:grid;gap:.6rem;margin-top:1.25rem}.pdf-scan-actions{position:sticky;bottom:0;padding:.85rem 0 1rem;background:var(--paper)}.pdf-scan-pairs{display:grid;gap:1.25rem;margin-top:1.25rem}.pdf-scan-pair{padding:.9rem;background:var(--field);border:3px solid var(--line-strong);border-radius:14px;box-shadow:0 4px 16px #0000000f}.pdf-scan-pair h2{margin:0 0 .75rem;font-size:1.15rem}.pdf-scan-side{margin:0 0 1rem}.pdf-scan-side:last-child{margin-bottom:0}.pdf-scan-side figcaption{margin-bottom:.4rem;font-weight:700}.pdf-scan-side img{display:block;width:100%;height:auto;border-radius:8px;border:1px solid var(--input-border-2)}.pdf-scan-missing{display:grid;place-items:center;min-height:10rem;border:1px dashed var(--placeholder);border-radius:8px;background:var(--paper-2);color:var(--faint);font-weight:600}.list-toolbar-no-search{grid-template-columns:auto minmax(0,1fr)}.menu-weeks{display:grid;gap:1.25rem}.menu-week{background:var(--field);border-radius:12px;padding:1rem 1rem 1.15rem;box-shadow:0 4px 16px #0000000d}.menu-week-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:.75rem 1rem;margin-bottom:.9rem}.menu-week-header h2{margin:0;font-size:1.2rem}.menu-week-header h2 a{color:inherit;text-decoration:none}.menu-week-header h2 a:hover{text-decoration:underline}.menu-week-kicker,.menu-week-empty{margin:.15rem 0 0;font-size:.85rem}.menu-week-empty{margin:0}.menu-recipe-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1.1rem .9rem}@media (min-width: 900px){.menu-recipe-grid:has(>:nth-child(5)){grid-template-columns:repeat(5,minmax(0,1fr))}}.menu-recipe-tile{display:grid;gap:.4rem;align-content:start;min-width:0}.menu-recipe-tile .leaflet-card-thumb{width:100%;color:inherit}.menu-recipe-title{margin:0;font-size:.92rem;font-weight:600;line-height:1.3}.menu-recipe-title a{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;color:inherit;text-decoration:none}.menu-recipe-title a:hover{text-decoration:underline}.menu-recipe-meta{margin:0;font-size:.8rem;color:var(--muted)}.menu-list-divider{display:flex;align-items:center;gap:.75rem;margin:1.25rem 0 1rem;color:var(--faint);font-size:.8rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase}.menu-list-divider:before,.menu-list-divider:after{content:"";flex:1;border-top:1px solid var(--chip-border)}.leaflet-card.is-selected{box-shadow:0 0 0 2px var(--forest)}a.leaflet-card-thumb,.leaflet-card-thumb[aria-pressed]{cursor:pointer}.recipe-pick-title{font:inherit;color:inherit;text-align:left}.recipe-pick-title:disabled{color:var(--faint)}.menu-week-field{display:flex;align-items:center;gap:.75rem;margin:0 0 1rem}.menu-week-field select{width:auto;min-width:16rem;margin-bottom:0}.menu-selected-list{margin-bottom:1.25rem}.menu-recipe-search{margin:0 0 1rem}.menu-recipe-search input{margin-bottom:0}.user-add-form{background:var(--field);border-radius:12px;padding:1.25rem 1.25rem 1.5rem;margin:0 0 1.25rem;box-shadow:0 4px 16px #0000000d}.user-add-form h2{margin:0 0 1rem;font-size:1.1rem}.user-checkbox{display:flex;align-items:center;gap:.5rem;font-weight:500;margin:0 0 1rem}.user-checkbox input{width:auto;margin:0}.user-card{grid-template-columns:1fr}.user-card-form{min-width:0}.user-token-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.75rem;margin:0 0 1rem}.user-token-label{margin:0;font-weight:600}.user-token-value{margin:.15rem 0 0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;word-break:break-all}.user-token-actions,.user-card-actions{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}.icon-button{display:inline-flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;padding:0;border:1.5px solid var(--line);border-radius:8px;background:var(--field);color:var(--ink);cursor:pointer}.icon-button:hover{background:var(--wash)}html[data-theme=dark] .app-mygrubby{--ink: #f3f1ea;--muted: #a8b5ae;--faint: #8b9791;--quiet: #a8b5ae;--paper: #141816;--paper-2: #1c2420;--paper-3: #18201c;--field: #1c2420;--wash: #24302a;--sage: #24312b;--sage-line: #3d5248;--forest: #2d6a4f;--forest-text: #b7e0cb;--forest-deep: #d7f3e6;--line: #31403a;--line-strong: #9bb0a6;--warn: #ff8b9a;--danger-bg: #4a2428;--danger-ink: #ffb4be;--warn-bg: #3d3420;--warn-ink: #f3d48a;--info-bg: #1c3040;--ok-bg: #1a3328;--star: #6d675e;--gold: #e0b84a;--sand: #3a342c;--hairline: #31403a;--rule: #31403a;--chip-border: #3d4a44;--input-border: #3d4a44;--input-border-2: #3d4a44;--olive: #8aa194;--ink-soft: #d5ddd7;--stone: #a39c92;--stone-2: #b7b1a6;--mist: #3d5248;--placeholder: #7f8a84;--night: #0c0e0d;--on-forest: #fff;color:var(--ink);background:var(--paper)}:root{--ink: #1a1a1a;--muted: #5c6b64;--paper: #f6f4ef;--sage: #dce8e1;--sage-line: #b7c9be;--forest: #2d6a4f;--forest-deep: #1f4d3a;--field: #ffffff;--line: #d5ddd7;--warn: #b00020;--topbar: rgba(255, 255, 255, .92);color:var(--ink);background:var(--paper);color-scheme:light;font-family:system-ui,-apple-system,sans-serif;line-height:1.5}html[data-theme=dark]{--ink: #f3f1ea;--muted: #a8b5ae;--paper: #141816;--sage: #24312b;--sage-line: #3d5248;--forest: #2d6a4f;--forest-deep: #b7e0cb;--field: #1c2420;--line: #31403a;--warn: #ff8b9a;--topbar: rgba(20, 24, 22, .92);color-scheme:dark}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:var(--paper);color:var(--ink)}.house-plain{min-height:100vh;background:var(--paper)}.house-door{min-height:100vh;display:grid;place-items:center;padding:2rem 1rem;background:var(--paper)}.house-card{width:min(28rem,100%);background:var(--field);border-radius:12px;padding:1.75rem 1.5rem 1.5rem;box-shadow:0 8px 24px #00000014}.house-card .house-wordmark,.house-card h1{margin:0 0 .75rem}.house-card h1,.house-content>h1{font-size:1.6rem;font-weight:650;letter-spacing:-.02em;line-height:1.25}.house-wordmark{font-weight:700;letter-spacing:-.03em;color:var(--ink);text-decoration:none}.house-card a{color:var(--forest-deep)}.house-card form,.house-people form{display:grid;gap:.6rem;margin:1rem 0}.house-card label,.house-people label{display:grid;gap:.25rem;font-weight:600}.house-card input,.house-people input{font:inherit;color:inherit;background:var(--field);border:1px solid var(--line);border-radius:8px;padding:.65rem .75rem;width:100%}.house-card button,.house-people button{font:inherit;width:100%;border:0;border-radius:8px;padding:.7rem .9rem;background:var(--forest);color:#fff;cursor:pointer}.house-people .row{display:flex;gap:.5rem;align-items:end}.house-people .row label{flex:1;min-width:0}.house-people .row button{width:auto;flex:none}.house-settings h2,.house-people>h2{font-size:1.05rem;font-weight:650;margin:0 0 .75rem}.house-people>h2{margin-top:1.75rem}.house-settings h3{font-size:.95rem;margin:0 0 .5rem}.house-appearance{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px;max-width:24rem;padding:4px;background:var(--paper);border-radius:10px}.house-appearance button{width:auto;border:0;border-radius:8px;padding:.55rem .4rem;background:transparent;color:var(--muted);font:inherit;font-weight:650;cursor:pointer}.house-appearance button.is-current{background:var(--forest);color:#fff}.house-people-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem;align-items:start}.house-people .person{border:1px solid var(--line);border-radius:12px;padding:1rem;margin:0;background:var(--field)}.house-people .person h3{font-size:1.15rem;margin:0}.house-token{display:flex;gap:.5rem;align-items:center;margin-top:.75rem}.house-token code{flex:1;min-width:0;overflow-wrap:anywhere;font-size:.85rem}.house-token button{width:auto;flex:none}.quiet{color:var(--muted)}.error{color:var(--warn)}.house-card button:focus-visible,.house-people button:focus-visible,.house-people input:focus-visible,.house-card input:focus-visible,.house-drawer a:focus-visible,.house-drawer button:focus-visible,.house-menu:focus-visible{outline:2px solid var(--forest);outline-offset:2px}.house-frame{min-height:100vh;background:var(--paper);color:var(--ink)}.house-backdrop{display:none}.house-drawer{position:fixed;top:0;left:0;z-index:50;display:flex;flex-direction:column;width:252px;height:100vh;background:var(--field);border-right:1px solid var(--line)}.house-brand{padding:18px 16px 4px}.house-switch{display:grid;grid-template-columns:1fr 1fr;gap:4px;margin:12px 12px 8px;padding:4px;background:var(--paper);border-radius:10px}.house-switch a{display:grid;place-items:center;padding:8px 6px;border-radius:8px;color:var(--muted);font-weight:650;font-size:.92rem;text-decoration:none}.house-switch a.is-current{background:var(--forest);color:#fff}.house-nav{flex:1;overflow:auto;padding:6px 10px 12px}.house-nav-group+.house-nav-group{margin-top:14px}.house-nav-group h2{margin:0 8px 4px;font-size:.78rem;font-weight:650;color:var(--muted)}.house-nav a,.house-foot a,.house-signout{display:flex;align-items:center;gap:10px;width:100%;margin:0;padding:8px 10px;border:0;border-radius:8px;background:transparent;color:var(--ink);font:inherit;text-align:left;text-decoration:none;cursor:pointer}.house-nav a svg,.house-foot a svg{flex:none;color:var(--muted)}.house-nav a.is-active,.house-foot a.is-active{background:var(--sage);color:var(--forest-deep);font-weight:650}.house-nav a.is-active svg,.house-foot a.is-active svg{color:var(--forest-deep)}.house-foot{border-top:1px solid var(--line);padding:10px}.house-drawer .house-signout{width:auto;background:transparent;color:var(--muted)}.house-topbar .house-menu{width:44px;padding:0;background:transparent;color:var(--ink)}.house-main{min-width:0;min-height:100vh;margin-left:252px}.house-topbar{display:none}.house-content{width:min(56rem,100%);margin:0 auto;padding:24px 24px 48px}.house-content-wide{width:min(1400px,100%)}.house-content .app-main{max-width:none;margin:0;padding:0}.house-menu{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border:0;border-radius:8px;background:transparent;color:var(--ink);cursor:pointer}@media (max-width: 959px){.house-main{margin-left:0}.house-topbar{display:flex;align-items:center;gap:8px;position:sticky;top:0;z-index:30;height:56px;padding:0 12px;background:var(--topbar);border-bottom:1px solid var(--line)}.house-drawer{transform:translate(-104%);transition:transform .2s ease}.house-frame.is-nav-open .house-drawer{transform:none}.house-backdrop{display:block;position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;background:#1a1a1a73;opacity:0;pointer-events:none}.house-frame.is-nav-open .house-backdrop{opacity:1;pointer-events:auto}}@media (max-width: 640px){.house-people-row{grid-template-columns:1fr}}@media (prefers-reduced-motion: reduce){.house-drawer{transition:none}}
