*{box-sizing:border-box}html{width:100%;height:100%}:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light;color:#213547;background-color:#f8f9fa;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}:root[data-theme=dark]{color-scheme:dark;color:#f1f5f9;background-color:#0f172a}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;padding:0;min-width:320px;min-height:100vh;width:100%}#root{width:100%;min-height:100vh;display:flex;flex-direction:column}h1{font-size:3.2em;line-height:1.1}button{font-family:inherit;cursor:pointer}:root[data-theme=dark] a{color:#818cf8}:root[data-theme=dark] a:hover{color:#a5b4fc}@keyframes fade-in-up{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes slide-in-right{0%{opacity:0;transform:translate(-12px)}to{opacity:1;transform:translate(0)}}.animate-fade-in-up{animation:fade-in-up .4s ease-out forwards}.animate-slide-in-right{animation:slide-in-right .3s ease-out forwards}:root{--color-primary: #667eea;--color-primary-container: #f0f4ff;--color-on-primary: #ffffff;--color-on-primary-container: #1a1f71;--color-surface: #ffffff;--color-surface-variant: #f8f9fa;--color-surface-container: #f7fafc;--color-surface-container-high: #edf2f7;--color-on-surface: #333333;--color-on-surface-variant: #666666;--color-inverse-surface: #2d3748;--color-inverse-on-surface: #e2e8f0;--color-outline: #e2e8f0;--color-outline-variant: #cbd5e0;--color-scrim: rgba(0, 0, 0, .32);--color-success: #22543d;--color-success-container: #c6f6d5;--color-on-success: #ffffff;--color-on-success-container: #0f2419;--color-warning: #d69e2e;--color-warning-container: #fefcbf;--color-on-warning: #ffffff;--color-on-warning-container: #5a2d0c;--color-error: #e53e3e;--color-error-container: #fed7d7;--color-on-error: #ffffff;--color-on-error-container: #5b1a1a;--color-info: #2c5282;--color-info-container: #bee3f8;--color-on-info: #ffffff;--color-on-info-container: #1a2332;--elevation-0: none;--elevation-1: 0 1px 3px rgba(0, 0, 0, .12), 0 1px 2px rgba(0, 0, 0, .24);--elevation-2: 0 3px 6px rgba(0, 0, 0, .16), 0 3px 6px rgba(0, 0, 0, .23);--elevation-3: 0 4px 12px rgba(0, 0, 0, .15), 0 2px 4px rgba(0, 0, 0, .12);--elevation-4: 0 10px 20px rgba(0, 0, 0, .19), 0 6px 6px rgba(0, 0, 0, .23);--elevation-5: 0 14px 28px rgba(0, 0, 0, .25), 0 10px 10px rgba(0, 0, 0, .22);--motion-easing-standard: cubic-bezier(.2, 0, 0, 1);--motion-easing-decelerate: cubic-bezier(0, 0, 0, 1);--motion-easing-accelerate: cubic-bezier(.3, 0, 1, 1);--motion-easing-emphasized: cubic-bezier(.2, 0, 0, 1);--motion-easing-emphasized-decelerate: cubic-bezier(.05, .7, .1, 1);--motion-easing-emphasized-accelerate: cubic-bezier(.3, 0, .8, .15);--motion-duration-short: .15s;--motion-duration-medium: .3s;--motion-duration-long: .5s;--motion-duration-extra-long: .7s;--state-hover-opacity: .08;--state-focus-opacity: .12;--state-pressed-opacity: .16;--state-disabled-opacity: .38;--font-weight-regular: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--spacing-xs: .25rem;--spacing-sm: .5rem;--spacing-md: .75rem;--spacing-lg: 1rem;--spacing-xl: 1.5rem;--spacing-2xl: 2rem;--spacing-3xl: 3rem;--touch-target-min: 44px;--touch-target-comfortable: 48px;--touch-target-large: 56px;--radius-none: 0;--radius-sm: 4px;--radius-md: 6px;--radius-lg: 8px;--radius-xl: 12px;--radius-2xl: 16px;--radius-full: 9999px;--storage-good: #4caf50;--storage-warning: #ff9800;--storage-critical: #f44336;--storage-offline: #ff9800}:root[data-theme=dark]{--color-surface: #0f172a;--color-surface-variant: #1e293b;--color-surface-container: #1e293b;--color-surface-container-high: #334155;--color-on-surface: #f1f5f9;--color-on-surface-variant: #94a3b8;--color-inverse-surface: #f1f5f9;--color-inverse-on-surface: #1e293b;--color-outline: #334155;--color-outline-variant: #475569;--color-primary: #6366f1;--color-primary-container: #312e81;--color-on-primary: #ffffff;--color-on-primary-container: #c7d2fe;--color-success: #16a34a;--color-success-container: #14532d;--color-on-success: #ffffff;--color-on-success-container: #bbf7d0;--color-warning: #d97706;--color-warning-container: #7c2d12;--color-on-warning: #ffffff;--color-on-warning-container: #fed7aa;--color-error: #dc2626;--color-error-container: #7f1d1d;--color-on-error: #ffffff;--color-on-error-container: #fecaca;--color-info: #2563eb;--color-info-container: #1e3a8a;--color-on-info: #ffffff;--color-on-info-container: #bfdbfe;--elevation-1: 0 1px 3px rgba(0, 0, 0, .4), 0 0 0 1px rgba(255, 255, 255, .05);--elevation-2: 0 4px 6px rgba(0, 0, 0, .4), 0 0 0 1px rgba(255, 255, 255, .05);--elevation-3: 0 10px 15px rgba(0, 0, 0, .4), 0 0 0 1px rgba(255, 255, 255, .05)}.app{min-height:100vh;display:flex;flex-direction:column;background:var(--color-surface-variant);transition:background-color var(--motion-duration-medium) var(--motion-easing-standard)}:root[data-theme=dark] .app{background:var(--color-surface)}.app-header{display:flex;justify-content:space-between;align-items:center;background:var(--color-primary);border-bottom:1px solid rgba(0,0,0,.1);padding:var(--spacing-sm) clamp(var(--spacing-sm),2vw,var(--spacing-lg));box-shadow:var(--elevation-2);position:fixed;top:0;left:0;right:0;z-index:100;transition:background-color var(--motion-duration-medium) var(--motion-easing-standard)}.tab-nav{display:flex;justify-content:center;align-items:center;background:var(--color-surface-container);border-top:1px solid var(--color-outline);padding:12px var(--spacing-sm) calc(12px + env(safe-area-inset-bottom));position:fixed;bottom:0;left:0;right:0;z-index:100;box-shadow:0 -1px 3px #0000000f;transition:transform var(--motion-duration-medium) var(--motion-easing-emphasized),background-color var(--motion-duration-medium) var(--motion-easing-standard)}.tab-nav.hidden{transform:translateY(100%);pointer-events:none}.app-title{display:flex;align-items:center;gap:var(--spacing-sm);color:var(--color-on-primary);font-weight:var(--font-weight-semibold);flex-shrink:0}.app-title-link{display:flex;align-items:center;gap:var(--spacing-sm);color:inherit;text-decoration:none;transition:opacity .15s ease}.app-title-link:hover{opacity:.8}.title-icon{font-size:1.5rem;line-height:1}.title-text{font-size:clamp(1rem,3vw,1.25rem);white-space:nowrap}.tab-buttons{display:flex;width:100%;max-width:640px;justify-content:space-around}.tab-nav button{background:transparent;border:none;padding:0 var(--spacing-sm);cursor:pointer;flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;color:var(--color-on-surface-variant);min-width:0;position:relative}.tab-nav button:hover .tab-indicator{background:#667eea14}.tab-nav button.active{color:var(--color-on-surface)}.tab-nav button.active .tab-indicator{background:var(--color-primary-container)}.tab-nav button.active .tab-icon{color:var(--color-on-primary-container)}.tab-indicator{width:64px;height:32px;border-radius:16px;display:flex;align-items:center;justify-content:center;transition:background-color var(--motion-duration-medium) var(--motion-easing-emphasized-decelerate)}.tab-icon{font-size:1.375rem;line-height:1;transition:color var(--motion-duration-short) var(--motion-easing-standard)}.tab-label{font-size:.75rem;font-weight:var(--font-weight-medium);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;transition:color var(--motion-duration-short) var(--motion-easing-standard)}.tab-nav button.active .tab-label{font-weight:var(--font-weight-semibold)}.main-content{flex:1;padding:60px 0 80px;overflow-y:auto;display:flex;justify-content:center;align-items:flex-start;max-width:100%;transition:padding-bottom var(--motion-duration-medium) var(--motion-easing-emphasized)}.main-content.nav-hidden{padding-bottom:0}.tab-content{width:100%;max-width:800px;text-align:center;padding:clamp(var(--spacing-sm),2vw,var(--spacing-lg))}.tab-content h2{color:var(--color-on-surface);margin-bottom:var(--spacing-sm);font-size:clamp(1.3rem,4vw,2rem);font-weight:var(--font-weight-semibold)}.tab-content p{color:var(--color-on-surface-variant);margin-bottom:clamp(var(--spacing-xl),3vw,var(--spacing-2xl));font-size:clamp(.9rem,2.5vw,1.1rem);line-height:1.5;max-width:100%}.primary-button{background:linear-gradient(135deg,var(--color-primary) 0%,#764ba2 100%);color:var(--color-on-primary);border:none;padding:clamp(.875rem,2.5vw,1.25rem) clamp(var(--spacing-xl),4vw,2.5rem);font-size:clamp(1rem,2.5vw,1.1rem);font-weight:var(--font-weight-medium);border-radius:var(--radius-lg);cursor:pointer;transition:transform var(--motion-duration-short) var(--motion-easing-standard);box-shadow:var(--elevation-2);width:100%;max-width:400px;margin:0 auto;display:block;touch-action:manipulation}.primary-button:hover{transform:translateY(-1px);box-shadow:var(--elevation-3)}.primary-button:active{transform:translateY(0)}.shopping-options{display:flex;gap:clamp(.75rem,2vw,1rem);justify-content:center;align-items:center;flex-wrap:wrap;margin-top:clamp(1rem,2vw,1.5rem);width:100%;max-width:600px;margin-left:auto;margin-right:auto}.secondary-button{background:#fff;border:2px solid #667eea;color:#667eea;padding:clamp(.75rem,2vw,1rem) clamp(1rem,3vw,1.5rem);font-size:clamp(.9rem,2.2vw,1rem);border-radius:6px;cursor:pointer;transition:all .2s;flex:1;min-width:120px;max-width:180px;text-align:center;touch-action:manipulation}.secondary-button:hover{background:#667eea;color:#fff}.secondary-button:active{transform:scale(.98)}.dev-badge{background:#ff6b6b;color:#fff;padding:clamp(.2rem,1vw,.3rem) clamp(.4rem,1.5vw,.6rem);border-radius:4px;font-size:clamp(.7rem,2vw,.8rem);font-weight:600;letter-spacing:.5px}@media(display-mode:standalone){.app-header{padding-top:calc(clamp(1rem,3vw,2rem) + env(safe-area-inset-top))}}@media(max-width:768px){.app-header{padding:var(--spacing-sm) var(--spacing-md)}.title-text{font-size:.9rem}.title-icon{font-size:1.1rem}.tab-nav{padding:10px var(--spacing-sm) calc(10px + env(safe-area-inset-bottom))}.tab-indicator{width:56px;height:28px}.tab-label{font-size:.7rem}}@media(max-width:480px){.app-header{padding:var(--spacing-sm) var(--spacing-sm)}.title-text{font-size:.85rem}.tab-indicator{width:48px;height:26px;border-radius:13px}.tab-icon{font-size:1.2rem}.tab-label{font-size:.65rem}}@media(pointer:coarse){.tab-nav button{min-height:56px;padding:0 var(--spacing-xs)}.primary-button,.secondary-button{min-height:44px}}:root[data-theme=dark] .app-header{background:linear-gradient(135deg,#1e293b,#0f172a);border-bottom-color:#334155}:root[data-theme=dark] .tab-nav{background:#1e293b;border-top-color:#334155;box-shadow:0 -1px 4px #0000004d}:root[data-theme=dark] .tab-nav button{color:#94a3b8}:root[data-theme=dark] .tab-nav button:hover .tab-indicator{background:#ffffff14}:root[data-theme=dark] .tab-nav button.active{color:#e2e8f0}:root[data-theme=dark] .tab-nav button.active .tab-indicator{background:#667eea3d}:root[data-theme=dark] .tab-nav button.active .tab-icon{color:var(--color-primary)}:root[data-theme=dark] .tab-content h2{color:#f1f5f9}:root[data-theme=dark] .tab-content p{color:#94a3b8}.shopping-list-container{margin-top:0;text-align:left;max-width:800px;margin-left:auto;margin-right:auto;position:relative}@media(max-width:768px){.main-content{padding-top:56px}.main-content.nav-hidden{padding-top:0}}.list-header{display:flex;flex-direction:column;gap:var(--spacing-md);margin-bottom:var(--spacing-md);margin-top:0;position:sticky;top:0;z-index:10;background:var(--color-surface);padding-top:var(--spacing-sm);transition:transform var(--motion-duration-medium) var(--motion-easing-emphasized),opacity var(--motion-duration-medium) var(--motion-easing-emphasized)}.list-header.header-hidden{transform:translateY(-100%);opacity:0;pointer-events:none}.list-header.header-visible{transform:translateY(0);opacity:1;pointer-events:auto}.list-tabs{display:flex;gap:0;border-bottom:1px solid var(--color-outline-variant);overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none}.list-tabs::-webkit-scrollbar{display:none}.list-tab{background:transparent;border:none;color:var(--color-on-surface-variant);padding:var(--spacing-md) var(--spacing-lg);font-size:.875rem;font-weight:500;cursor:pointer;position:relative;transition:all .2s cubic-bezier(.4,0,.2,1);white-space:nowrap;min-height:48px;display:flex;align-items:center;border-bottom:2px solid transparent}.list-tab:hover:not(.active){background:var(--color-surface-container);color:var(--color-on-surface)}.list-tab.active{color:var(--color-primary);border-bottom-color:var(--color-primary)}.list-tab.active:after{content:"";position:absolute;bottom:-1px;left:0;right:0;height:3px;background:var(--color-primary);border-radius:3px 3px 0 0}.header-controls{position:relative;display:flex;flex-direction:row;align-items:center;gap:var(--spacing-sm);flex-wrap:wrap;justify-content:flex-end}.header-icon-btn{position:relative;display:flex;align-items:center;justify-content:center;width:40px;height:40px;padding:0;border:none;background:transparent;border-radius:50%;cursor:pointer;color:var(--color-on-surface-variant, #666);transition:background .2s,color .2s}.header-icon-btn:hover{background:var(--color-surface-container, rgba(0, 0, 0, .08));color:var(--color-on-surface, #1a1a1a)}.header-icon-btn:active{background:var(--color-surface-container-high, rgba(0, 0, 0, .12))}.header-icon-badge{position:absolute;top:4px;right:4px;min-width:16px;height:16px;padding:0 4px;font-size:10px;font-weight:600;line-height:16px;text-align:center;color:var(--color-on-primary, white);background:var(--color-primary, #4CAF50);border-radius:8px}:root[data-theme=dark] .header-icon-btn{color:var(--color-on-surface-variant, #aaa)}:root[data-theme=dark] .header-icon-btn:hover{background:var(--color-surface-container, rgba(255, 255, 255, .08));color:var(--color-on-surface, #e0e0e0)}.actions-dropdown-toggle{background:var(--color-surface-container);border:1px solid var(--color-outline);color:var(--color-on-surface);padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--radius-md);font-size:.875rem;font-weight:500;cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);white-space:nowrap;box-shadow:var(--elevation-1)}.actions-dropdown-toggle:hover{background:var(--color-surface-container-high);box-shadow:var(--elevation-2)}.actions-section{position:relative;display:flex;flex-direction:column;align-items:flex-end}.actions-toggle{background:#e2e8f0;border:1px solid #cbd5e0;color:#4a5568;padding:.5rem 1rem;border-radius:6px;font-size:.9rem;cursor:pointer;transition:all .2s;white-space:nowrap}.actions-toggle:hover{background:#cbd5e0;color:#2d3748}.actions-bar{position:absolute;top:100%;left:0;background:var(--color-surface);border:1px solid var(--color-outline);border-radius:var(--radius-lg);box-shadow:var(--elevation-3);padding:var(--spacing-md);display:flex;flex-direction:column;gap:var(--spacing-sm);z-index:10;min-width:200px;margin-top:var(--spacing-xs)}.action-btn{background:#f7fafc;border:1px solid #e2e8f0;color:#4a5568;padding:.5rem .75rem;border-radius:4px;font-size:.9rem;cursor:pointer;text-align:left;transition:all .2s;white-space:nowrap}.action-btn:hover{background:#edf2f7;color:#2d3748}.action-btn.clear-completed{color:#d69e2e;border-color:#faf089}.action-btn.clear-completed:hover{background:#fefcbf;color:#b7791f}.action-btn.clear-all{color:#e53e3e;border-color:#feb2b2}.action-btn.clear-all:hover{background:#fed7d7;color:#c53030}.action-btn.cancel{background:#667eea;color:#fff;border-color:#667eea}.action-btn.cancel:hover{background:#5a67d8}.action-btn.exit-bulk{background:#667eea;color:#fff;border-color:#667eea;font-weight:600}.action-btn.exit-bulk:hover{background:#5a67d8;color:#fff}.actions-divider{height:1px;background:#e2e8f0;margin:.25rem 0}.bulk-controls{margin-top:var(--spacing-sm);padding:var(--spacing-md);background:#f0f8ff;border:1px solid #c3dafe;border-radius:var(--radius-sm);display:flex;flex-direction:column;gap:var(--spacing-sm)}.bulk-selection{display:flex;align-items:center;gap:var(--spacing-sm);flex-wrap:wrap}.bulk-selection span{font-weight:500;color:#4a5568}.select-btn{background:#e2e8f0;border:1px solid #cbd5e0;color:#4a5568;padding:.25rem .75rem;border-radius:4px;font-size:.875rem;cursor:pointer;transition:all .2s}.select-btn:hover{background:#cbd5e0;color:#2d3748}.select-btn.exit-bulk-inline{background:#667eea;color:#fff;border-color:#667eea;font-weight:500;margin-left:auto}.select-btn.exit-bulk-inline:hover{background:#5a67d8;color:#fff}.bulk-actions{display:flex;gap:.75rem;flex-wrap:wrap}.bulk-btn{padding:.5rem 1rem;border-radius:4px;font-size:.9rem;cursor:pointer;transition:all .2s;border:1px solid;font-weight:500}.bulk-btn.complete{background:#c6f6d5;color:#22543d;border-color:#9ae6b4}.bulk-btn.complete:hover{background:#9ae6b4;color:#1a202c}.bulk-btn.incomplete{background:#fed7d7;color:#742a2a;border-color:#feb2b2}.bulk-btn.incomplete:hover{background:#feb2b2;color:#1a202c}.bulk-btn.delete{background:#fed7d7;color:#c53030;border-color:#feb2b2}.bulk-btn.delete:hover{background:#feb2b2;color:#742a2a}.shopping-item.selected{background:var(--color-primary-container)!important}.bulk-select-checkbox{accent-color:#4299e1;transform:scale(1.1)}.add-item-form{background:var(--color-surface);padding:var(--spacing-lg) var(--spacing-xl);padding-bottom:var(--spacing-md);border-radius:var(--radius-xl);box-shadow:var(--elevation-2);margin-bottom:var(--spacing-lg);text-align:center;border:1px solid var(--color-outline);transition:all var(--motion-duration-short) var(--motion-easing-standard)}.add-item-form:focus-within{box-shadow:var(--elevation-3);border-color:var(--color-primary)}.add-item-input-row{display:flex;align-items:center;gap:var(--spacing-sm)}.add-item-input-row form{flex:1}.mobile-item-input{width:100%;padding:var(--spacing-lg);border:2px solid var(--color-outline);border-radius:var(--radius-xl);font-size:clamp(1rem,4vw,1.2rem);background:var(--color-surface-variant);color:var(--color-on-surface);transition:all var(--motion-duration-short) var(--motion-easing-standard);text-align:center;min-height:var(--touch-target-large);font-weight:var(--font-weight-medium)}.mobile-item-input:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 4px var(--color-primary-container);background:var(--color-surface)}:root[data-theme=dark] .mobile-item-input{background:var(--color-surface-container)}:root[data-theme=dark] .mobile-item-input:focus{background:var(--color-surface-container-high)}.mobile-item-input::placeholder{color:var(--color-on-surface-variant);opacity:.7}.input-hint{margin-top:var(--spacing-xs);margin-bottom:calc(var(--spacing-xs) * -.5);font-size:clamp(.65rem,2vw,.75rem);color:var(--color-on-surface-variant);font-style:italic;opacity:.7;line-height:1.2}.category-chips{display:flex;gap:var(--spacing-xs);margin-top:var(--spacing-sm);flex-wrap:wrap;justify-content:center;transition:all var(--motion-duration-medium) var(--motion-easing-standard)}.category-chips.compact{gap:4px;margin-top:6px;opacity:.7}.category-chips.compact .category-chip{padding:4px 8px;font-size:.7rem;border-width:1px}.category-chip{padding:var(--spacing-sm) var(--spacing-md);border:2px solid var(--color-outline);border-radius:var(--radius-full);background:var(--color-surface);color:var(--color-on-surface);font-size:.85rem;cursor:pointer;transition:all var(--motion-duration-short) var(--motion-easing-standard);display:flex;align-items:center;gap:4px;font-weight:var(--font-weight-medium);touch-action:manipulation;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;box-shadow:var(--elevation-1)}.category-chip:hover{background:var(--color-surface-container);border-color:var(--color-outline-variant);transform:translateY(-2px);box-shadow:var(--elevation-2)}.category-chip:active{transform:translateY(0);background:var(--color-surface-container-high);box-shadow:var(--elevation-1)}.category-chip.selected{background:var(--color-primary-container);border-color:var(--color-primary);color:var(--color-on-primary-container);font-weight:var(--font-weight-semibold);box-shadow:0 0 0 2px var(--color-primary-container),var(--elevation-2)}.category-chip.suggested{background:var(--color-success-container);border-color:var(--color-success);color:var(--color-on-success-container);animation:suggestPulse .5s var(--motion-easing-emphasized-decelerate);box-shadow:0 0 0 2px var(--color-success-container),var(--elevation-2)}:root[data-theme=dark] .category-chip{background:var(--color-surface-container)}:root[data-theme=dark] .category-chip:hover{background:var(--color-surface-container-high)}@keyframes suggestPulse{0%{transform:scale(1)}50%{transform:scale(1.08)}to{transform:scale(1)}}.form-row{display:grid;grid-template-columns:2fr auto auto auto auto;gap:.75rem;align-items:center}.form-row input[type=text]{padding:var(--spacing-md);border:2px solid var(--color-outline);border-radius:var(--radius-md);font-size:1rem;background:var(--color-surface);color:var(--color-on-surface);transition:border-color var(--motion-duration-short) var(--motion-easing-standard)}.form-row input[type=text]:focus{outline:none;border-color:var(--color-primary)}.quantity-input{width:80px;padding:.75rem .5rem;border:2px solid #e1e5e9;border-radius:6px;font-size:1rem;text-align:center}.form-row select{padding:.75rem;border:2px solid #e1e5e9;border-radius:6px;font-size:1rem;background:#fff;cursor:pointer}.form-row button{background:var(--color-primary);color:var(--color-on-primary);border:none;padding:var(--spacing-md) var(--spacing-xl);border-radius:var(--radius-md);font-size:1rem;font-weight:var(--font-weight-medium);cursor:pointer;transition:all var(--motion-duration-short) var(--motion-easing-standard);min-height:48px;position:relative;overflow:hidden}.form-row button:before{content:"";position:absolute;inset:0;background:currentColor;opacity:0;transition:opacity var(--motion-duration-short) var(--motion-easing-standard)}.form-row button:hover:not(:disabled):before{opacity:var(--state-hover-opacity)}.form-row button:hover:not(:disabled){transform:translateY(-1px)}.form-row button:disabled{background:var(--color-surface-container);color:var(--color-on-surface);opacity:var(--state-disabled-opacity);cursor:not-allowed;transform:none}.sorting-controls{display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-sm);padding:var(--spacing-md) var(--spacing-xl);background:var(--color-surface);border-radius:var(--radius-xl) var(--radius-xl) 0 0;border:1px solid var(--color-outline);border-bottom:none;margin-bottom:0;flex-wrap:nowrap;box-shadow:var(--elevation-1)}.sort-chip-container{display:flex;align-items:center;gap:var(--spacing-xs);position:relative}.sort-chip{display:flex;align-items:center;gap:var(--spacing-xs);padding:var(--spacing-sm) var(--spacing-md);background:var(--color-surface-container-high);border:1px solid var(--color-outline);border-radius:var(--radius-sm);color:var(--color-on-surface);font-size:.875rem;font-weight:var(--font-weight-medium);cursor:pointer;transition:all var(--motion-duration-short) var(--motion-easing-standard);height:36px;white-space:nowrap}.sort-chip:hover{background:var(--color-surface-container-highest);border-color:var(--color-outline-variant)}.sort-chip:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-primary-container)}.sort-chip.active{background:var(--color-secondary-container);border-color:var(--color-secondary);color:var(--color-on-secondary-container)}.sort-chip-icon{font-size:1rem;line-height:1}.sort-chip-label{line-height:1}.sort-chip-arrow{font-size:.75rem;transition:transform var(--motion-duration-short) var(--motion-easing-standard);opacity:.7}.sort-chip-arrow.open{transform:rotate(180deg)}.sort-menu{position:absolute;top:calc(100% + var(--spacing-xs));left:0;min-width:160px;background:var(--color-surface-container);border:1px solid var(--color-outline-variant);border-radius:var(--radius-md);box-shadow:var(--elevation-2);z-index:100;overflow:hidden;animation:sortMenuFadeIn var(--motion-duration-short) var(--motion-easing-emphasized)}@keyframes sortMenuFadeIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.sort-menu-item{display:flex;align-items:center;gap:var(--spacing-sm);width:100%;padding:var(--spacing-sm) var(--spacing-md);background:transparent;border:none;color:var(--color-on-surface);font-size:.875rem;font-weight:var(--font-weight-regular);cursor:pointer;transition:background var(--motion-duration-short) var(--motion-easing-standard);text-align:left}.sort-menu-item:hover{background:var(--color-surface-container-high)}.sort-menu-item:focus{outline:none;background:var(--color-surface-container-high)}.sort-menu-item.selected{background:var(--color-secondary-container);color:var(--color-on-secondary-container);font-weight:var(--font-weight-medium)}.sort-menu-item-icon{font-size:1rem;width:20px;text-align:center}.sort-menu-item-label{flex:1}.sort-menu-item-check{color:var(--color-primary);font-weight:var(--font-weight-bold)}.sort-direction-btn{display:flex;align-items:center;justify-content:center;width:36px;height:36px;background:var(--color-surface-container-high);border:1px solid var(--color-outline);border-radius:var(--radius-sm);color:var(--color-on-surface);font-size:1rem;font-weight:var(--font-weight-semibold);cursor:pointer;transition:all var(--motion-duration-short) var(--motion-easing-standard)}.sort-direction-btn:hover{background:var(--color-surface-container-highest);border-color:var(--color-outline-variant)}.sort-direction-btn:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-primary-container)}.sort-direction-btn.asc{color:var(--color-primary)}.sort-direction-btn.desc{color:var(--color-tertiary)}:root[data-theme=dark] .sort-chip{background:var(--color-surface-container);border-color:var(--color-outline)}:root[data-theme=dark] .sort-chip:hover{background:var(--color-surface-container-high)}:root[data-theme=dark] .sort-menu{background:var(--color-surface-container-high);border-color:var(--color-outline)}:root[data-theme=dark] .sort-menu-item:hover,:root[data-theme=dark] .sort-menu-item:focus{background:var(--color-surface-container-highest)}:root[data-theme=dark] .sort-direction-btn{background:var(--color-surface-container);border-color:var(--color-outline)}:root[data-theme=dark] .sort-direction-btn:hover{background:var(--color-surface-container-high)}.shopping-list{background:var(--color-surface);border-radius:var(--radius-xl);box-shadow:var(--elevation-2);overflow:hidden;margin-top:0;border:1px solid var(--color-outline)}.sorting-controls+.shopping-list{border-radius:0 0 var(--radius-xl) var(--radius-xl);border-top:none}.empty-state{padding:var(--spacing-2xl) var(--spacing-lg);text-align:center;color:var(--color-on-surface-variant);font-size:clamp(.9rem,2.5vw,1rem)}.shopping-item{display:flex;flex-direction:column;border-bottom:1px solid var(--color-outline-variant);transition:background-color var(--motion-duration-medium) var(--motion-easing-standard);position:relative;overflow:hidden;background:var(--color-surface)}.incomplete-items,.completed-items{transition:all var(--motion-duration-medium) var(--motion-easing-emphasized)}.shopping-item:last-child{border-bottom:none}.shopping-item:before{content:"";position:absolute;inset:0;background:var(--color-on-surface);opacity:0;transition:opacity var(--motion-duration-short) var(--motion-easing-standard);pointer-events:none}.shopping-item:hover:before{opacity:var(--state-hover-opacity)}.shopping-item.animating-complete{position:relative;z-index:100;animation:itemCompletionSequence 1s var(--motion-easing-emphasized-decelerate) forwards}@keyframes itemCompletionSequence{0%{opacity:1;background:var(--color-surface)}15%{background:var(--color-success-container);opacity:1}30%{background:var(--color-success-container);opacity:1}60%{opacity:.7;background:var(--color-surface);transform:translateY(0)}to{opacity:0;transform:translateY(-12px)}}.shopping-item.completed{opacity:.6;background:var(--color-surface)}.shopping-item.completed .item-name{color:var(--color-on-surface-variant);position:relative}.shopping-item.completed .item-supporting-text{opacity:.7}.shopping-item.animating-complete .item-row{position:relative}.shopping-item.animating-complete .item-row:before{content:"";position:absolute;left:44px;top:50%;width:0;height:2px;background:var(--color-on-surface-variant);animation:strikethroughFull .5s .2s var(--motion-easing-standard) forwards;border-radius:1px;z-index:10}@keyframes strikethroughFull{0%{width:0}to{width:calc(100% - 36px)}}.shopping-item.entering-completed{animation:slideIntoCompleted .5s var(--motion-easing-emphasized-decelerate) forwards}@keyframes slideIntoCompleted{0%{opacity:0;transform:translateY(-10px) scale(.95)}to{opacity:.6;transform:translateY(0) scale(1)}}@keyframes itemAdded{0%{opacity:0;transform:translateY(20px) scale(.9)}60%{opacity:1;transform:translateY(-2px) scale(1.02)}to{opacity:1;transform:translateY(0) scale(1)}}.shopping-item.item-added{animation:itemAdded var(--motion-duration-long) var(--motion-easing-emphasized-decelerate)}.completed-section{margin-top:var(--spacing-xl);padding:var(--spacing-lg) var(--spacing-lg) var(--spacing-md);border-top:1px solid var(--color-outline-variant)}.completed-header{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-xs) 0;cursor:pointer;transition:opacity var(--motion-duration-short) var(--motion-easing-standard);opacity:.7}.completed-header:hover{opacity:1}.completed-title{font-weight:var(--font-weight-medium);color:var(--color-on-surface-variant);font-size:var(--text-body-medium)}.completed-toggle{color:var(--color-on-surface-variant);font-size:var(--text-body-small);transition:transform var(--motion-duration-short) var(--motion-easing-standard);opacity:.6}.completed-header-left{display:flex;align-items:center;gap:var(--spacing-sm);flex:1;cursor:pointer}.overflow-menu-btn{background:transparent;border:none;padding:var(--spacing-xs);cursor:pointer;font-size:1rem;color:var(--color-on-surface-variant);border-radius:var(--radius-sm);min-width:32px;min-height:32px;display:flex;align-items:center;justify-content:center;transition:all var(--motion-duration-short) var(--motion-easing-standard);opacity:.5}.overflow-menu-btn:hover{opacity:1;background:var(--color-surface-container)}.overflow-menu-btn:active{background:var(--color-surface-container-high)}.completed-items{padding-top:var(--spacing-xs)}.completed-section .shopping-item.completed{opacity:.55}.completed-section .shopping-item.completed:hover{opacity:.75}.item-action-btn{flex-shrink:0}.favourite-btn.active{color:#f59e0b!important}.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}.list-stats-inline{display:flex;align-items:center;gap:var(--spacing-xs);flex-shrink:0}.stat-item{font-size:.75rem;color:var(--color-on-surface-variant);white-space:nowrap;padding:var(--spacing-xs) var(--spacing-sm);background:var(--color-surface-container);border-radius:var(--radius-sm);display:flex;align-items:center;gap:2px}@media(max-width:640px){.stat-item{font-size:.7rem;padding:2px var(--spacing-xs)}}.item-leading{flex-shrink:0;display:flex;align-items:center}.item-content{flex:1;min-width:0;display:flex;flex-direction:column;justify-content:center;gap:2px;padding:14px 0}.item-name{font-size:1rem;font-weight:400;line-height:1.5rem;letter-spacing:.03125em;color:var(--color-on-surface);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.item-supporting-text{font-size:.875rem;font-weight:400;line-height:1.25rem;letter-spacing:.015625em;color:var(--color-on-surface-variant);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.item-category-badge{display:inline-flex;align-items:center;gap:2px;padding:2px 8px;border-radius:999px;font-size:.72rem;font-weight:500;line-height:1.5;letter-spacing:.02em;white-space:nowrap;flex-shrink:0;margin-right:4px}.shopping-item.completed .item-category-badge{opacity:.5}.item-category-badge[data-category=produce]{background:#dcfce7;color:#166534}.item-category-badge[data-category=dairy]{background:#dbeafe;color:#1e40af}.item-category-badge[data-category=meat]{background:#fee2e2;color:#991b1b}.item-category-badge[data-category=bakery]{background:#fef3c7;color:#92400e}.item-category-badge[data-category=pantry]{background:#fef9c3;color:#713f12}.item-category-badge[data-category=frozen]{background:#e0f2fe;color:#075985}.item-category-badge[data-category=beverages]{background:#ede9fe;color:#5b21b6}.item-category-badge[data-category=snacks]{background:#ffedd5;color:#9a3412}.item-category-badge[data-category=condiments]{background:#d1fae5;color:#065f46}.item-category-badge[data-category=household]{background:#f1f5f9;color:#334155}.item-category-badge[data-category=other]{background:#f3f4f6;color:#374151}:root[data-theme=dark] .item-category-badge[data-category=produce]{background:#14532d;color:#4ade80}:root[data-theme=dark] .item-category-badge[data-category=dairy]{background:#1e3a8a;color:#93c5fd}:root[data-theme=dark] .item-category-badge[data-category=meat]{background:#7f1d1d;color:#fca5a5}:root[data-theme=dark] .item-category-badge[data-category=bakery]{background:#78350f;color:#fcd34d}:root[data-theme=dark] .item-category-badge[data-category=pantry]{background:#713f12;color:#fde68a}:root[data-theme=dark] .item-category-badge[data-category=frozen]{background:#0c4a6e;color:#7dd3fc}:root[data-theme=dark] .item-category-badge[data-category=beverages]{background:#4c1d95;color:#c4b5fd}:root[data-theme=dark] .item-category-badge[data-category=snacks]{background:#7c2d12;color:#fdba74}:root[data-theme=dark] .item-category-badge[data-category=condiments]{background:#064e3b;color:#6ee7b7}:root[data-theme=dark] .item-category-badge[data-category=household]{background:#1e293b;color:#94a3b8}:root[data-theme=dark] .item-category-badge[data-category=other]{background:#1f2937;color:#9ca3af}.item-trailing{display:flex;align-items:center;flex-shrink:0;padding-right:8px;gap:0}.item-quantity-inline{font-size:.875rem;font-weight:400;color:var(--color-on-surface-variant);letter-spacing:.01em;white-space:nowrap}.shopping-item.completed .item-quantity-inline{opacity:.6}.edit-panel-notes{padding-top:var(--spacing-xs)}.edit-panel-notes-input{width:100%;padding:.4rem .75rem;font-size:.9rem;border:1px solid var(--color-outline-variant);border-radius:999px;background:var(--color-surface);color:var(--color-on-surface);outline:none;transition:border-color var(--motion-duration-short) var(--motion-easing-standard),box-shadow var(--motion-duration-short) var(--motion-easing-standard)}.edit-panel-notes-input::placeholder{color:var(--color-on-surface-variant);opacity:.7}.edit-panel-notes-input:focus{border-color:var(--color-primary);box-shadow:0 0 0 1px var(--color-primary-container)}.input-char-counter{display:block;text-align:right;font-size:.7rem;line-height:1;color:var(--color-on-surface-variant);opacity:.75;margin-top:3px;padding-right:12px;pointer-events:none}.input-char-counter.at-limit{color:var(--color-error);opacity:1;font-weight:500}.add-item-char-counter{padding-right:16px}.item-name-input{flex:1;font-size:clamp(.95rem,3.5vw,1.05rem);font-weight:500;padding:.35rem .75rem;border-radius:999px;border:1px solid var(--color-outline-variant);background:var(--color-surface-container-highest);color:var(--color-on-surface);outline:none;transition:border-color var(--motion-duration-short) var(--motion-easing-standard),box-shadow var(--motion-duration-short) var(--motion-easing-standard),background-color var(--motion-duration-short) var(--motion-easing-standard),transform var(--motion-duration-short) var(--motion-easing-standard);box-shadow:0 0 #667eea2e}.item-name-input::placeholder{color:var(--color-on-surface-variant);opacity:.8}.item-name-input:focus{border-color:var(--color-primary);background:var(--color-surface);box-shadow:0 0 0 1px #667eea59;transform:translateY(-.5px)}.item-name-input:hover:not(:focus){background:var(--color-surface-container)}.shopping-item.completed .item-name-input{opacity:.85;text-decoration:line-through}.shopping-item.animating-complete .item-name-input{position:relative}.item-edit-panel{width:100%;margin-top:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);background:var(--color-surface-container);border-radius:var(--radius-md);border:1px solid var(--color-outline-variant);display:flex;flex-direction:column;gap:var(--spacing-sm);animation:expandPanel var(--motion-duration-medium) var(--motion-easing-emphasized-decelerate)}@keyframes expandPanel{0%{opacity:0;transform:translateY(-10px) scaleY(.9);max-height:0}to{opacity:1;transform:translateY(0) scaleY(1);max-height:360px}}.edit-panel-row{display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-md);width:100%}.edit-panel-row-secondary{justify-content:flex-end}.edit-panel-right{display:flex;align-items:center;gap:var(--spacing-sm)}.edit-panel-section{display:flex;flex-direction:column;gap:var(--spacing-xs)}.edit-panel-label{font-size:.85rem;font-weight:var(--font-weight-medium);color:var(--color-on-surface-variant);text-transform:uppercase;letter-spacing:.5px}.edit-panel-quantity{display:flex;align-items:center;justify-content:flex-start;gap:var(--spacing-sm)}.edit-panel-quantity .quantity-btn{width:var(--touch-target-comfortable)!important;height:var(--touch-target-comfortable)!important;font-size:1.2rem!important;border-radius:var(--radius-md)!important}.edit-panel-quantity .quantity-display{font-size:1rem;font-weight:var(--font-weight-semibold);min-width:80px;text-align:center;padding:.35rem .75rem;border-radius:999px;border:1px solid var(--color-outline-variant);background:var(--color-surface-container-high);color:var(--color-on-surface);display:inline-block}.edit-panel-category{width:100%;display:flex;justify-content:flex-end}.edit-panel-category-select{width:100%;max-width:180px;padding:.4rem .75rem;font-size:1rem;min-height:var(--touch-target-comfortable);border:1px solid var(--color-outline-variant);border-radius:999px;background:var(--color-primary-container);color:var(--color-on-primary-container);cursor:pointer}.edit-panel-category-select:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-primary-container)}.edit-panel-actions{display:flex;gap:var(--spacing-sm);margin-top:var(--spacing-xs)}.edit-panel-delete{flex:1;padding:var(--spacing-md);background:var(--color-error-container);color:var(--color-on-error-container);border:2px solid var(--color-error);border-radius:var(--radius-md);font-size:1rem;font-weight:var(--font-weight-medium);cursor:pointer;min-height:var(--touch-target-comfortable);transition:all var(--motion-duration-short) var(--motion-easing-standard);display:flex;align-items:center;justify-content:center;gap:var(--spacing-sm)}.edit-panel-delete:hover{background:var(--color-error);color:var(--color-on-error);transform:translateY(-1px);box-shadow:var(--elevation-2)}.edit-panel-delete:active{transform:translateY(0)}.edit-panel-delete-icon{width:var(--touch-target-comfortable);height:var(--touch-target-comfortable);border-radius:999px;border:1px solid var(--color-error);background:var(--color-error-container);color:var(--color-on-error-container);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all var(--motion-duration-short) var(--motion-easing-standard);box-shadow:none}.edit-panel-delete-icon:hover{background:var(--color-error);color:var(--color-on-error);box-shadow:var(--elevation-2);transform:translateY(-1px)}.edit-panel-delete-icon:active{transform:translateY(0)}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.item-row{display:flex;align-items:center;width:100%;min-height:72px}.quantity-controls{display:flex;align-items:center;gap:.5rem;background:#f7fafc;padding:.25rem .5rem;border-radius:6px;border:1px solid #e2e8f0}.quantity-display{font-weight:500;color:#555;min-width:60px;text-align:center;font-size:.95rem}.category-select{padding:.5rem;border:2px solid #e1e5e9;border-radius:6px;font-size:.9rem;background:#fff;cursor:pointer;max-width:140px}.category-select:focus{outline:none;border-color:#667eea}.action-buttons{display:flex;align-items:center;gap:.5rem;touch-action:manipulation;margin-left:auto}.quantity-btn{background:#4299e1!important;border-color:#3182ce!important;color:#fff!important;width:28px!important;height:28px!important;font-size:.875rem!important}.quantity-btn:hover:not(:disabled){background:#3182ce!important;color:#fff!important}.quantity-btn:disabled{background:#cbd5e0!important;color:#a0aec0!important;border-color:#e2e8f0!important}.remove-btn{background:#fed7d7!important;border-color:#feb2b2!important;color:#c53030!important;width:28px!important;height:28px!important}.remove-btn:hover{background:#feb2b2!important;color:#742a2a!important}.list-footer{margin-top:var(--spacing-md);padding:var(--spacing-md);background:#f8f9fa;border-radius:var(--radius-sm);border:1px solid #e2e8f0;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:var(--spacing-sm)}.list-stats{display:flex;gap:1rem;font-size:.9rem;color:#666;flex-wrap:wrap}.list-stats span{display:flex;align-items:center;gap:.25rem}.footer-actions{display:flex;gap:.75rem;flex-wrap:wrap}.footer-btn{background:#f7fafc;border:1px solid #e2e8f0;color:#4a5568;padding:.5rem 1rem;border-radius:6px;font-size:.9rem;cursor:pointer;transition:all .2s;white-space:nowrap}.footer-btn:hover{background:#edf2f7;color:#2d3748}.footer-btn.clear-completed{color:#d69e2e;border-color:#faf089}.footer-btn.clear-completed:hover{background:#fefcbf;color:#b7791f}.footer-btn.bulk-edit{color:#667eea;border-color:#c3dafe}.footer-btn.bulk-edit:hover{background:#ebf4ff;color:#5a67d8}@media(max-width:768px){.form-row{grid-template-columns:1fr;gap:.5rem}.actions-bar{position:static;margin-top:.5rem;box-shadow:none;border:1px solid #e2e8f0}.list-footer{flex-direction:column;gap:.5rem;text-align:center}.footer-actions{justify-content:center}.list-tab{font-size:.8125rem;padding:var(--spacing-sm) var(--spacing-md);min-height:40px}.list-tab.active:after{height:2px}.list-header{gap:var(--spacing-sm);margin-bottom:var(--spacing-sm)}.header-controls{width:100%;justify-content:flex-end}.actions-dropdown-toggle{flex-shrink:0}}@media(max-width:480px){.list-tab{font-size:.75rem;padding:var(--spacing-xs) var(--spacing-sm);min-height:36px}.actions-dropdown-toggle{padding:var(--spacing-xs) var(--spacing-sm);font-size:.8125rem}}:root[data-theme=dark] .shopping-list-container h3{color:var(--color-on-surface)}:root[data-theme=dark] .add-item-form,:root[data-theme=dark] .shopping-list{background:var(--color-surface-container);color:var(--color-on-surface)}:root[data-theme=dark] .form-row input,:root[data-theme=dark] .form-row select{background:var(--color-surface-container-high);border-color:var(--color-outline-variant);color:var(--color-on-surface)}:root[data-theme=dark] .shopping-item{border-bottom-color:var(--color-outline)}:root[data-theme=dark] .shopping-item:hover{background:var(--color-surface-container-high)}:root[data-theme=dark] .shopping-item.completed{background:var(--color-surface)}:root[data-theme=dark] .item-name{color:var(--color-on-surface)}:root[data-theme=dark] .item-supporting-text{color:var(--color-on-surface-variant)}:root[data-theme=dark] .quantity-display{color:var(--color-on-surface)}:root[data-theme=dark] .category-select{background:var(--color-surface-container-high);border-color:var(--color-outline-variant);color:var(--color-on-surface)}:root[data-theme=dark] .edit-btn{color:var(--color-on-surface-variant)!important}:root[data-theme=dark] .empty-state{color:var(--color-on-surface-variant)}:root[data-theme=dark] .actions-toggle{background:var(--color-surface-container-high);border-color:var(--color-outline-variant);color:var(--color-on-surface-variant)}:root[data-theme=dark] .actions-bar{background:var(--color-surface-container);border-color:var(--color-outline)}:root[data-theme=dark] .action-btn{background:var(--color-surface-container-high);border-color:var(--color-outline-variant);color:var(--color-on-surface-variant)}:root[data-theme=dark] .list-footer{background:var(--color-surface-container);border-color:var(--color-outline)}:root[data-theme=dark] .list-stats{color:var(--color-on-surface-variant)}:root[data-theme=dark] .footer-btn{background:var(--color-surface-container-high);border-color:var(--color-outline-variant);color:var(--color-on-surface-variant)}:root[data-theme=dark] .bulk-controls{background:var(--color-surface-container);border-color:var(--color-outline)}:root[data-theme=dark] .bulk-selection span{color:var(--color-on-surface-variant)}:root[data-theme=dark] .select-btn{background:var(--color-surface-container-high);border-color:var(--color-outline-variant);color:var(--color-on-surface-variant)}:root[data-theme=dark] .shopping-item.selected{background:var(--color-primary-container)!important}.undo-bar{position:fixed;bottom:calc(80px + var(--spacing-md));left:50%;transform:translate(-50%);background:var(--color-inverse-surface);color:var(--color-inverse-on-surface);border-radius:var(--radius-2xl);box-shadow:var(--elevation-4);min-width:320px;max-width:500px;z-index:1000;overflow:hidden;animation:undoBarEnter var(--motion-duration-long) var(--motion-easing-emphasized-decelerate);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}@keyframes undoBarEnter{0%{opacity:0;transform:translate(-50%) translateY(100%) scale(.8)}60%{opacity:1;transform:translate(-50%) translateY(-8px) scale(1.02)}to{opacity:1;transform:translate(-50%) translateY(0) scale(1)}}@keyframes undoBarExit{0%{opacity:1;transform:translate(-50%) translateY(0) scale(1)}to{opacity:0;transform:translate(-50%) translateY(100%) scale(.9)}}@keyframes stageTransition{0%{opacity:1;transform:scale(1)}50%{opacity:.7;transform:scale(.98)}to{opacity:1;transform:scale(1)}}@keyframes slideUp{0%{opacity:0;transform:translate(-50%) translateY(100%)}to{opacity:1;transform:translate(-50%) translateY(0)}}.undo-content{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-lg) var(--spacing-xl);gap:var(--spacing-lg)}.undo-message{flex:1;font-size:.95rem;font-weight:var(--font-weight-medium);color:var(--color-inverse-on-surface);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.undo-actions{display:flex;gap:var(--spacing-sm);flex-shrink:0}.undo-btn{background:var(--color-primary);color:var(--color-on-primary);border:none;padding:var(--spacing-sm) var(--spacing-lg);border-radius:var(--radius-md);font-size:.9rem;font-weight:var(--font-weight-medium);cursor:pointer;transition:all var(--motion-duration-short) var(--motion-easing-standard);white-space:nowrap;min-height:var(--touch-target-min);position:relative;overflow:hidden}.undo-btn:before{content:"";position:absolute;inset:0;background:currentColor;opacity:0;transition:opacity var(--motion-duration-short) var(--motion-easing-standard);border-radius:inherit}.undo-btn:hover:before{opacity:var(--state-hover-opacity)}.undo-btn:focus:before{opacity:var(--state-focus-opacity)}.undo-btn:active:before{opacity:var(--state-pressed-opacity)}.undo-btn:hover{transform:translateY(-1px);box-shadow:var(--elevation-2)}.undo-btn:active{transform:translateY(0);box-shadow:var(--elevation-1)}.dismiss-btn{background:transparent;color:#a0aec0;border:1px solid #4a5568;width:32px;height:32px;border-radius:6px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:1rem;transition:all .2s;flex-shrink:0}.dismiss-btn:hover{background:#4a5568;color:#e2e8f0;border-color:#718096}.undo-bar--success{background:var(--color-success)!important;border-left:4px solid var(--color-success-container);animation:stageTransition var(--motion-duration-medium) var(--motion-easing-emphasized),successPulse var(--motion-duration-short) var(--motion-easing-decelerate) .1s}.undo-bar--preview{background:var(--color-info)!important;border-left:4px solid var(--color-info-container);animation:stageTransition var(--motion-duration-medium) var(--motion-easing-emphasized)}.undo-message--success{color:var(--color-on-success)!important;font-weight:var(--font-weight-semibold);animation:successTextAppear var(--motion-duration-medium) var(--motion-easing-decelerate)}.undo-message--preview{color:var(--color-on-info)!important;animation:previewTextAppear var(--motion-duration-medium) var(--motion-easing-decelerate)}@keyframes successPulse{0%{transform:scale(1)}50%{transform:scale(1.02)}to{transform:scale(1)}}@keyframes successTextAppear{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes previewTextAppear{0%{opacity:0;transform:translate(-8px)}to{opacity:1;transform:translate(0)}}.dismiss-btn--text{background:var(--color-surface-container)!important;color:var(--color-on-surface)!important;border:1px solid var(--color-outline)!important;padding:var(--spacing-sm) var(--spacing-lg)!important;border-radius:var(--radius-md)!important;width:auto!important;height:auto!important;font-size:.9rem!important;position:relative;overflow:hidden}.dismiss-btn--text:before{content:"";position:absolute;inset:0;background:currentColor;opacity:0;transition:opacity var(--motion-duration-short) var(--motion-easing-standard)}.dismiss-btn--text:hover:before{opacity:var(--state-hover-opacity)}.dismiss-btn--text:focus:before{opacity:var(--state-focus-opacity)}.undo-timer-bar{height:3px;background:linear-gradient(90deg,var(--color-primary) 0%,var(--color-info) 100%);transition:width 1s linear;position:absolute;bottom:0;left:0}.interactive-surface{position:relative;overflow:hidden;min-height:var(--touch-target-min);min-width:var(--touch-target-min)}.interactive-surface:before{content:"";position:absolute;inset:0;background:currentColor;opacity:0;transition:opacity var(--motion-duration-short) var(--motion-easing-standard);pointer-events:none;border-radius:inherit}.interactive-surface:hover:before{opacity:var(--state-hover-opacity)}.interactive-surface:focus:before{opacity:var(--state-focus-opacity)}.interactive-surface:active:before{opacity:var(--state-pressed-opacity)}.interactive-surface:disabled:before{opacity:0}.ripple-surface{position:relative;overflow:hidden}.ripple-surface:after{content:"";position:absolute;border-radius:50%;background:currentColor;opacity:.3;transform:scale(0);pointer-events:none}.ripple-surface:active:after{animation:ripple var(--motion-duration-medium) var(--motion-easing-decelerate)}@keyframes ripple{0%{transform:scale(0);opacity:.3}50%{opacity:.1}to{transform:scale(4);opacity:0}}.touch-target-comfortable{min-height:var(--touch-target-comfortable);min-width:var(--touch-target-comfortable)}.touch-target-large{min-height:var(--touch-target-large);min-width:var(--touch-target-large)}@media(max-width:768px){.undo-bar{left:var(--spacing-sm);right:var(--spacing-sm);bottom:calc(80px + var(--spacing-sm));transform:none;min-width:auto;max-width:none}@keyframes slideUp{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}.undo-content{padding:.875rem 1rem}.undo-message{font-size:.9rem}.undo-btn{padding:.4rem .8rem;font-size:.875rem}}:root[data-theme=dark] .undo-bar{background:var(--color-surface);box-shadow:var(--elevation-3)}:root[data-theme=dark] .undo-message{color:var(--color-on-surface)}:root[data-theme=dark] .dismiss-btn{border-color:var(--color-outline);color:var(--color-on-surface-variant)}:root[data-theme=dark] .dismiss-btn:hover{background:var(--color-surface-container-high);color:var(--color-on-surface);border-color:var(--color-outline-variant)}:root[data-theme=dark] .undo-bar--success{background:var(--color-surface);border-left-color:var(--color-success)}:root[data-theme=dark] .undo-bar--preview{background:var(--color-surface);border-left-color:var(--color-info)}:root[data-theme=dark] .undo-message--success{color:var(--color-on-success-container)}:root[data-theme=dark] .undo-message--preview{color:var(--color-on-info-container)}:root[data-theme=dark] .dismiss-btn--text{background:var(--color-surface-container-high);color:var(--color-on-surface);border-color:var(--color-outline-variant)}:root[data-theme=dark] .dismiss-btn--text:hover{background:var(--color-surface-container);color:var(--color-on-surface);border-color:var(--color-outline)}.action-btn.generator-btn{opacity:.6;cursor:not-allowed;color:#718096!important;border-color:#e2e8f0!important}.action-btn.generator-btn:hover{background:#f7fafc!important;color:#718096!important;transform:none}:root[data-theme=dark] .action-btn.generator-btn{background:var(--color-surface-container);border-color:var(--color-outline);color:var(--color-on-surface-variant)}:root[data-theme=dark] .action-btn.generator-btn:hover{background:var(--color-surface-container);color:var(--color-on-surface-variant)}.storage-status{position:relative;display:inline-block}.storage-status-main{display:flex;align-items:center;gap:4px;font-size:var(--font-size-sm);-webkit-user-select:none;user-select:none;transition:var(--transition-smooth)}.storage-status-main:hover{opacity:.8}.storage-details{position:absolute;top:100%;right:0;background:var(--color-surface);border:1px solid var(--color-outline);border-radius:var(--radius-lg);padding:var(--spacing-3);min-width:200px;box-shadow:var(--shadow-md);z-index:1000;font-size:var(--font-size-sm);line-height:1.4}.storage-details>div{margin-bottom:var(--spacing-2)}.storage-details>div:last-child{margin-bottom:0}.storage-health-bar{width:100%;height:6px;background:var(--color-outline-variant);border-radius:var(--radius-full);overflow:hidden;margin:var(--spacing-2) 0}.storage-health-fill{height:100%;border-radius:var(--radius-full);transition:var(--transition-smooth)}.storage-health-fill.good{background:var(--storage-good)}.storage-health-fill.warning{background:var(--storage-warning)}.storage-health-fill.critical{background:var(--storage-critical)}@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}.shopping-item.animating-complete{animation:none!important;opacity:.6}.shopping-item.animating-complete .item-row:after{animation:none!important;display:none!important}.shopping-item.animating-complete .item-name:after{animation:none!important}.shopping-item.entering-completed{animation:none!important}.shopping-item input[type=checkbox]:checked{animation:none!important}.undo-bar{animation:none}.undo-timer-bar,.storage-status-main,.storage-health-fill{transition:none!important}}.receipt-capture{padding:var(--spacing-lg)}.capture-header{text-align:center;margin-bottom:var(--spacing-xl)}.capture-header h3{font-size:1.5rem;font-weight:var(--font-weight-semibold);color:var(--color-on-surface);margin-bottom:var(--spacing-xs)}.capture-header p{color:var(--color-on-surface-variant);font-size:.95rem}.photo-grid{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--spacing-lg);margin-bottom:var(--spacing-xl);max-width:800px;margin-left:auto;margin-right:auto}.photo-card,.add-photo-card{width:150px;flex-shrink:0}.photo-card{position:relative;aspect-ratio:3/4;border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--elevation-2)}.photo-preview{width:100%;height:100%;position:relative}.photo-preview img{width:100%;height:100%;object-fit:cover}.upload-overlay{position:absolute;inset:0;background:#000000b3;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#fff;font-weight:var(--font-weight-medium)}.upload-overlay.success{background:#22543de6}.upload-overlay.error{background:#e53e3ee6}.progress-bar{width:80%;height:4px;background:#ffffff4d;border-radius:var(--radius-full);overflow:hidden;margin-bottom:var(--spacing-sm)}.progress-fill{height:100%;background:var(--color-primary);transition:width var(--motion-duration-short) var(--motion-easing-standard)}.remove-photo-btn{position:absolute;top:var(--spacing-xs);right:var(--spacing-xs);background:var(--color-error);color:var(--color-on-error);border:none;width:28px;height:28px;border-radius:var(--radius-full);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:1rem;box-shadow:var(--elevation-2);transition:all var(--motion-duration-short) var(--motion-easing-standard)}.remove-photo-btn:hover{transform:scale(1.1);box-shadow:var(--elevation-3)}.add-photo-card{aspect-ratio:3/4;border:2px dashed var(--color-outline);border-radius:var(--radius-lg);background:var(--color-surface-container);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--spacing-sm);cursor:pointer;transition:all var(--motion-duration-short) var(--motion-easing-standard);color:var(--color-on-surface-variant)}.add-photo-card:hover:not(:disabled){border-color:var(--color-primary);background:var(--color-primary-container);color:var(--color-on-primary-container);transform:scale(1.02)}.add-photo-card:disabled{opacity:.5;cursor:not-allowed}.add-icon{font-size:2rem;font-weight:var(--font-weight-light)}.max-photos-notice{text-align:center;color:var(--color-on-surface-variant);font-size:.875rem;margin-bottom:var(--spacing-lg)}.offline-notice{background:var(--color-secondary-container);color:var(--color-on-secondary-container);padding:var(--spacing-md);border-radius:var(--radius-md);margin-bottom:var(--spacing-lg);text-align:center}.offline-notice span{display:block;font-weight:var(--font-weight-semibold);margin-bottom:var(--spacing-xs)}.offline-notice p{font-size:.875rem;margin:0}.manual-entry-section{background:var(--color-surface-container-low);padding:var(--spacing-lg);border-radius:var(--radius-lg);margin-bottom:var(--spacing-xl)}.manual-entry-section h4{font-size:1.125rem;font-weight:var(--font-weight-medium);color:var(--color-on-surface);margin-bottom:var(--spacing-xs)}.manual-entry-section .help-text{font-size:.875rem;color:var(--color-on-surface-variant);margin-bottom:var(--spacing-lg)}.form-group{margin-bottom:var(--spacing-md)}.form-group label{display:block;font-size:.875rem;font-weight:var(--font-weight-medium);color:var(--color-on-surface);margin-bottom:var(--spacing-xs)}.form-input{width:100%;padding:var(--spacing-md);border:1px solid var(--color-outline);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-on-surface);font-size:1rem;font-family:inherit;transition:all var(--motion-duration-short) var(--motion-easing-standard)}.form-input:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px #6750a41a}.form-input::placeholder{color:var(--color-on-surface-variant);opacity:.6}.capture-actions{display:flex;gap:var(--spacing-md);justify-content:center}.error-notice{text-align:center;color:var(--color-error);background:var(--color-error-container);padding:var(--spacing-md);border-radius:var(--radius-md);margin-top:var(--spacing-md);font-size:.875rem}.receipt-gallery{padding:var(--spacing-lg)}.receipts-summary{text-align:center;padding:var(--spacing-md);background:var(--color-primary-container);color:var(--color-on-primary-container);border-radius:var(--radius-md);margin-bottom:var(--spacing-xl);font-weight:var(--font-weight-medium)}.receipts-list{display:flex;flex-direction:column;gap:var(--spacing-lg)}.receipts-table-container{background:var(--color-surface);border:1px solid var(--color-outline);border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--elevation-1);margin-bottom:var(--spacing-lg)}.receipts-table{width:100%;border-collapse:collapse}.receipts-table thead{background:var(--color-surface-container);border-bottom:2px solid var(--color-outline)}.receipts-table th{text-align:left;padding:var(--spacing-md);font-weight:var(--font-weight-semibold);font-size:.875rem;color:var(--color-on-surface-variant);text-transform:uppercase;letter-spacing:.5px}.receipts-table tbody tr{border-bottom:1px solid var(--color-outline-variant);transition:background-color var(--motion-duration-short)}.receipts-table tbody tr:hover{background:var(--color-surface-container-low)}.receipts-table tbody tr:last-child{border-bottom:none}.receipts-table td{padding:var(--spacing-md);font-size:.9375rem}.receipts-table .table-total{font-weight:var(--font-weight-semibold);color:var(--color-primary)}.receipts-table .status-badge{display:inline-block;padding:4px 8px;border-radius:var(--radius-sm);font-size:.75rem;font-weight:var(--font-weight-medium)}.receipts-table .status-badge.unsynced{background:#fff3cd;color:#856404}.receipts-table .status-badge.synced{background:#d4edda;color:#155724}.receipts-table .status-badge.uploaded{background:#d1ecf1;color:#0c5460}.receipts-table .status-badge.quick_processed,.receipts-table .status-badge.detail_processed{background:#d4edda;color:#155724}.receipts-table .status-badge.failed{background:#f8d7da;color:#721c24}.total-cost-bar{position:sticky;bottom:0;background:var(--color-surface-container-highest);border-top:1px solid var(--color-outline-variant);padding:var(--spacing-lg) var(--spacing-xl);margin-top:var(--spacing-md);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:10}.total-cost-bar-content{display:flex;align-items:center;justify-content:space-between;max-width:1200px;margin:0 auto}.total-cost-info{display:flex;flex-direction:column;gap:var(--spacing-xs)}.total-cost-bar .total-label{font-size:.875rem;font-weight:var(--font-weight-medium);color:var(--color-on-surface-variant);text-transform:uppercase;letter-spacing:.5px}.total-cost-bar .total-amount{font-size:2rem;font-weight:var(--font-weight-bold);color:var(--color-on-surface);line-height:1}.total-cost-bar .total-count{font-size:.875rem;font-weight:var(--font-weight-medium);color:var(--color-on-surface-variant);padding:var(--spacing-xs) var(--spacing-md);background:var(--color-surface-container-low);border-radius:var(--radius-full)}.receipt-card{background:var(--color-surface);border:1px solid var(--color-outline);border-radius:var(--radius-lg);padding:var(--spacing-lg);box-shadow:var(--elevation-1);transition:all var(--motion-duration-short) var(--motion-easing-standard)}.receipt-card:hover{box-shadow:var(--elevation-2);transform:translateY(-2px)}.receipt-photos{display:flex;gap:var(--spacing-sm);margin-bottom:var(--spacing-md);position:relative}.receipt-photo-thumb{width:80px;height:100px;border-radius:var(--radius-md);overflow:hidden;box-shadow:var(--elevation-1)}.receipt-photo-thumb img{width:100%;height:100%;object-fit:cover}.photo-count-badge{position:absolute;right:var(--spacing-xs);top:var(--spacing-xs);background:var(--color-inverse-surface);color:var(--color-inverse-on-surface);padding:var(--spacing-xs) var(--spacing-sm);border-radius:var(--radius-md);font-size:.75rem;font-weight:var(--font-weight-semibold)}.receipt-status{margin-bottom:var(--spacing-sm)}.status{display:inline-block;padding:var(--spacing-xs) var(--spacing-md);border-radius:var(--radius-full);font-size:.75rem;font-weight:var(--font-weight-medium)}.status.captured{background:var(--color-surface-container);color:var(--color-on-surface)}.status.uploaded{background:var(--color-info-container);color:var(--color-on-info-container)}.status.processing{background:var(--color-warning-container);color:var(--color-on-warning-container)}.status.processed{background:var(--color-success-container);color:var(--color-on-success-container)}.status.failed{background:var(--color-error-container);color:var(--color-on-error-container)}.receipt-details{margin-bottom:var(--spacing-md)}.receipt-details p{margin:var(--spacing-xs) 0;color:var(--color-on-surface)}.receipt-details strong{font-weight:var(--font-weight-semibold)}.extraction-method{font-size:.75rem;color:var(--color-on-surface-variant);font-style:italic}.receipt-items{margin-bottom:var(--spacing-md)}.receipt-items h4{font-size:.875rem;font-weight:var(--font-weight-semibold);color:var(--color-on-surface);margin-bottom:var(--spacing-sm)}.items-list{background:var(--color-surface-variant);border-radius:var(--radius-md);padding:var(--spacing-sm)}.items-list .item{display:flex;justify-content:space-between;padding:var(--spacing-xs) 0;font-size:.875rem}.more-items{text-align:center;color:var(--color-on-surface-variant);font-size:.75rem;margin-top:var(--spacing-xs);font-style:italic}.non-food-note{text-align:center;color:var(--color-on-surface-variant);font-size:.75rem;margin-top:var(--spacing-sm);font-style:italic}.receipt-actions{display:flex;flex-direction:column;gap:var(--spacing-sm)}.extraction-group{display:flex;gap:var(--spacing-sm);flex-wrap:wrap}.extraction-group button{flex:1;min-width:150px}.loading-state,.empty-state{text-align:center;padding:var(--spacing-3xl);color:var(--color-on-surface-variant)}.loading-overlay{position:fixed;inset:0;background:#fffc;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn .2s ease-in}.loading-spinner{text-align:center;padding:var(--spacing-2xl);background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--elevation-3)}.spinner{width:48px;height:48px;margin:0 auto var(--spacing-md);border:4px solid var(--color-outline);border-top-color:var(--color-primary);border-radius:50%;animation:spin .8s linear infinite}.error-message{background:var(--color-error-container);color:var(--color-on-error-container);padding:var(--spacing-md);border-radius:var(--radius-md);margin-top:var(--spacing-md);text-align:center}.bulk-actions-bar{display:flex;gap:var(--spacing-md);padding:var(--spacing-lg);background:var(--color-surface-container);border-radius:var(--radius-lg);margin-bottom:var(--spacing-lg);flex-wrap:wrap}.bulk-actions-bar button{flex:1;min-width:200px}.bulk-actions-bar-compact{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-sm) var(--spacing-md);background:var(--color-surface-container);border-radius:var(--radius-lg);margin-bottom:var(--spacing-lg)}.bulk-actions-left,.bulk-actions-right{display:flex;gap:var(--spacing-sm)}.segmented-button{display:flex;gap:0;background:var(--color-surface-container);border:1px solid var(--color-outline);border-radius:var(--radius-sm);padding:4px;height:40px}.segment{display:flex;align-items:center;gap:var(--spacing-xs);padding:var(--spacing-xs) var(--spacing-md);background:transparent;border:none;border-radius:calc(var(--radius-sm) - 2px);color:var(--color-on-surface);font-size:.875rem;font-weight:var(--font-weight-medium);cursor:pointer;transition:all var(--motion-duration-short) var(--motion-easing-standard);white-space:nowrap;flex:1;justify-content:center}.segment:hover:not(.active){background:var(--color-surface-container-highest)}.segment.active{background:var(--color-secondary-container);color:var(--color-on-secondary-container);box-shadow:var(--elevation-1)}.segment-icon{font-size:1rem;line-height:1}.segment-label{line-height:1}:root[data-theme=dark] .segmented-button{background:var(--color-surface-container);border-color:var(--color-outline)}:root[data-theme=dark] .segment:hover:not(.active){background:var(--color-surface-container-high)}.sync-button-compact,.extract-button-compact{background:var(--color-primary);color:var(--color-on-primary);border:none;padding:var(--spacing-xs) var(--spacing-md);border-radius:var(--radius-md);font-size:.875rem;font-weight:var(--font-weight-medium);cursor:pointer;transition:all var(--motion-duration-short);box-shadow:var(--elevation-1);display:flex;align-items:center;gap:var(--spacing-xs)}.sync-button-compact:hover:not(:disabled),.extract-button-compact:hover:not(:disabled){transform:translateY(-2px);box-shadow:var(--elevation-2)}.sync-button-compact:disabled,.extract-button-compact:disabled{opacity:.5;cursor:not-allowed}.extract-button-compact{background:var(--color-secondary);color:var(--color-on-secondary)}.actions-dropdown{position:relative}.actions-menu-button{background:var(--color-surface-variant);color:var(--color-on-surface-variant);border:none;width:32px;height:32px;border-radius:50%;font-size:1.2rem;cursor:pointer;transition:all var(--motion-duration-short);display:flex;align-items:center;justify-content:center;line-height:1}.actions-menu-button:hover{background:var(--color-primary);color:var(--color-on-primary)}.actions-menu{position:absolute;top:100%;right:0;margin-top:var(--spacing-xs);background:var(--color-surface);border:1px solid var(--color-outline);border-radius:var(--radius-md);box-shadow:var(--elevation-3);min-width:200px;z-index:100;overflow:hidden}.actions-menu button{width:100%;text-align:left;background:none;border:none;padding:var(--spacing-md);color:var(--color-on-surface);cursor:pointer;transition:background var(--motion-duration-short);font-size:.875rem;display:flex;align-items:center;gap:var(--spacing-sm)}.actions-menu button:hover{background:var(--color-surface-variant)}.sync-badge{position:absolute;top:var(--spacing-sm);right:var(--spacing-sm);padding:var(--spacing-xs) var(--spacing-sm);border-radius:var(--radius-full);font-size:.75rem;font-weight:var(--font-weight-medium);z-index:1}.sync-badge.unsynced{background:var(--color-secondary-container);color:var(--color-on-secondary-container)}.sync-badge.synced{background:var(--color-tertiary-container);color:var(--color-on-tertiary-container)}.receipt-date{font-size:.875rem;color:var(--color-on-surface-variant);margin-bottom:var(--spacing-sm);font-weight:var(--font-weight-medium)}.receipt-photo-thumb.placeholder{display:flex;align-items:center;justify-content:center;background:var(--color-surface-variant);font-size:2rem}.edit-button{background:var(--color-tertiary-container);color:var(--color-on-tertiary-container);border:none;padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--radius-md);font-size:.875rem;cursor:pointer;transition:all var(--motion-duration-short);margin-top:var(--spacing-sm)}.edit-button:hover{background:var(--color-tertiary);color:var(--color-on-tertiary)}.sync-button{background:var(--color-primary);color:var(--color-on-primary);border:none;padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--radius-md);font-size:.875rem;cursor:pointer;transition:all var(--motion-duration-short);margin-top:var(--spacing-sm)}.sync-button:hover:not(:disabled){background:var(--color-primary-container);color:var(--color-on-primary-container);transform:translateY(-1px);box-shadow:var(--elevation-1)}.sync-button:disabled{opacity:.5;cursor:not-allowed}.sync-button.disabled{opacity:.5;cursor:not-allowed}.receipt-edit-form{padding:var(--spacing-md);background:var(--color-surface-container-low);border-radius:var(--radius-md);margin-top:var(--spacing-sm)}.receipt-edit-form .form-group{margin-bottom:var(--spacing-md)}.receipt-edit-form label{display:block;font-weight:var(--font-weight-medium);margin-bottom:var(--spacing-xs);font-size:.875rem;color:var(--color-on-surface)}.edit-actions{display:flex;gap:var(--spacing-sm);justify-content:flex-end;margin-top:var(--spacing-md)}.receipt-card{position:relative}.empty-field{color:var(--color-on-surface-variant);opacity:.6;font-style:italic}.receipt-photo-container{display:flex;justify-content:center;margin-bottom:var(--spacing-md)}.receipt-photo-main{position:relative;width:100%;max-width:200px;aspect-ratio:3/4;border-radius:var(--radius-md);overflow:hidden;background:var(--color-surface-variant)}.receipt-photo-main img{width:100%;height:100%;object-fit:cover}.receipt-photo-main.placeholder{display:flex;align-items:center;justify-content:center;font-size:3rem}.receipt-details-compact{text-align:center;padding:var(--spacing-sm) 0}.receipt-store{font-size:1.1rem;font-weight:var(--font-weight-medium);color:var(--color-on-surface);margin-bottom:var(--spacing-xs)}.receipt-meta{font-size:.875rem;color:var(--color-on-surface-variant);display:flex;justify-content:center;align-items:center;gap:var(--spacing-xs)}.receipt-meta .separator{opacity:.5}.receipt-total{font-weight:var(--font-weight-medium)}.edit-button-compact{position:absolute;top:var(--spacing-md);right:var(--spacing-md);background:var(--color-primary);color:var(--color-on-primary);border:none;width:36px;height:36px;border-radius:50%;font-size:1rem;cursor:pointer;box-shadow:var(--elevation-2);transition:all var(--motion-duration-short);z-index:1}.edit-button-compact:hover{transform:scale(1.1);box-shadow:var(--elevation-3)}.additional-info-section{margin-top:var(--spacing-md);border-top:1px solid var(--color-outline);padding-top:var(--spacing-md)}.additional-info-toggle{background:none;border:none;color:var(--color-primary);font-size:.875rem;font-weight:var(--font-weight-medium);cursor:pointer;padding:var(--spacing-sm);width:100%;text-align:left;display:flex;align-items:center;gap:var(--spacing-xs);transition:opacity var(--motion-duration-short)}.additional-info-toggle:hover{opacity:.8}.additional-info-content{margin-top:var(--spacing-sm);animation:slideDown .2s ease-out}.photo-gallery-centered{display:flex;flex-direction:column;align-items:center;gap:var(--spacing-md)}.detail-photo-large{max-width:100%;width:auto;max-height:500px;border-radius:var(--radius-md);box-shadow:var(--elevation-2);transition:transform var(--motion-duration-short),box-shadow var(--motion-duration-short)}.detail-photo-large:hover{transform:scale(1.02);box-shadow:var(--elevation-3)}.fullscreen-image-overlay{position:fixed;inset:0;background:#000000f2;z-index:2000;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--spacing-xl)}.fullscreen-controls{position:absolute;top:var(--spacing-lg);right:var(--spacing-lg);display:flex;gap:var(--spacing-sm);z-index:2001}.zoom-button{background:var(--color-surface);color:var(--color-on-surface);border:none;padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--radius-md);font-size:1rem;cursor:pointer;transition:all var(--motion-duration-short);box-shadow:var(--elevation-2)}.zoom-button:hover{background:var(--color-primary);color:var(--color-on-primary);transform:translateY(-2px);box-shadow:var(--elevation-3)}.close-fullscreen-button{background:var(--color-error);color:var(--color-on-error);border:none;width:40px;height:40px;border-radius:50%;font-size:1.5rem;cursor:pointer;transition:all var(--motion-duration-short);box-shadow:var(--elevation-2);display:flex;align-items:center;justify-content:center}.close-fullscreen-button:hover{transform:scale(1.1);box-shadow:var(--elevation-4)}.fullscreen-image-container{max-width:100%;max-height:90vh;display:flex;align-items:center;justify-content:center;overflow:auto}.fullscreen-image-container img{cursor:move;-webkit-user-select:none;user-select:none}.receipt-modal-overlay{position:fixed;inset:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1000;padding:var(--spacing-lg);overflow-y:auto}.receipt-modal{background:var(--color-surface);border-radius:var(--radius-xl);max-width:600px;width:100%;max-height:90vh;overflow-y:auto;box-shadow:var(--elevation-5)}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-lg);border-bottom:1px solid var(--color-outline)}.modal-header h3{margin:0;color:var(--color-on-surface)}.close-button{background:transparent;border:none;font-size:1.5rem;cursor:pointer;color:var(--color-on-surface-variant);padding:var(--spacing-xs);line-height:1;transition:color var(--motion-duration-short)}.close-button:hover{color:var(--color-on-surface)}.modal-content{padding:var(--spacing-lg)}.detail-section{margin-bottom:var(--spacing-xl)}.detail-section h4{margin:0 0 var(--spacing-md) 0;color:var(--color-on-surface);font-weight:var(--font-weight-medium)}.status-info .status-badge{display:flex;flex-direction:column;align-items:center;padding:var(--spacing-lg);border-radius:var(--radius-lg);text-align:center}.status-info .status-badge.unsynced{background:var(--color-secondary-container);color:var(--color-on-secondary-container)}.status-info .status-badge.synced{background:var(--color-tertiary-container);color:var(--color-on-tertiary-container)}.status-icon{font-size:2.5rem;margin-bottom:var(--spacing-sm)}.status-description{margin-top:var(--spacing-xs);font-size:.875rem;opacity:.8}.photo-gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:var(--spacing-md)}.detail-photo{width:100%;height:150px;object-fit:cover;border-radius:var(--radius-md);border:1px solid var(--color-outline)}.info-grid{display:grid;gap:var(--spacing-md)}.info-item{display:flex;flex-direction:column;gap:var(--spacing-xs)}.info-label{font-size:.75rem;font-weight:var(--font-weight-medium);color:var(--color-on-surface-variant);text-transform:uppercase;letter-spacing:.5px}.info-value{color:var(--color-on-surface);font-weight:var(--font-weight-medium)}.items-table{display:flex;flex-direction:column;gap:var(--spacing-xs)}.item-row{display:flex;justify-content:space-between;padding:var(--spacing-sm);background:var(--color-surface-variant);border-radius:var(--radius-sm)}.item-name{flex:1;color:var(--color-on-surface)}.item-price{font-weight:var(--font-weight-medium);color:var(--color-primary)}.no-data{text-align:center;color:var(--color-on-surface-variant);font-style:italic;padding:var(--spacing-lg)}.modal-footer{padding:var(--spacing-lg);border-top:1px solid var(--color-outline);display:flex;justify-content:space-between;align-items:center}.footer-left,.footer-right{display:flex;gap:var(--spacing-sm);align-items:center;flex-wrap:wrap}.sync-button-wrapper{position:relative;display:flex;align-items:center}.sync-status-button{background:var(--color-secondary-container);color:var(--color-on-secondary-container);border:none;padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--radius-md);font-size:.8rem;cursor:pointer;transition:all var(--motion-duration-short);font-weight:var(--font-weight-medium);white-space:nowrap}.sync-status-button:not(:disabled):hover{background:var(--color-secondary);color:var(--color-on-secondary);transform:translateY(-1px)}.sync-status-button.disabled,.sync-status-button:disabled{opacity:.6;cursor:not-allowed}.sync-status-button.synced{background:var(--color-tertiary-container);color:var(--color-on-tertiary-container);cursor:default}.sync-status-button.cloud{background:var(--color-primary-container);color:var(--color-on-primary-container);cursor:default}.auth-message-tooltip{position:absolute;bottom:calc(100% + 8px);right:0;background:var(--color-inverse-surface);color:var(--color-inverse-on-surface);padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--radius-md);font-size:.75rem;white-space:nowrap;box-shadow:var(--elevation-3);animation:slideDown .2s ease-out;z-index:1000}.auth-message-tooltip:after{content:"";position:absolute;top:100%;right:12px;width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid var(--color-inverse-surface)}@keyframes slideDown{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@media(max-width:640px){.modal-footer{flex-direction:column;gap:var(--spacing-sm)}.footer-left,.footer-right{width:100%;justify-content:stretch}.footer-right{flex-direction:column-reverse}.sync-status-button{width:100%;text-align:center}.auth-message-tooltip{right:50%;transform:translate(50%);white-space:normal;max-width:90%;text-align:center}.auth-message-tooltip:after{right:50%;transform:translate(50%)}}.delete-button{background:var(--color-error-container);color:var(--color-on-error-container);border:none;padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--radius-md);font-size:.875rem;cursor:pointer;transition:all var(--motion-duration-short);font-weight:var(--font-weight-medium)}.delete-button:hover{background:var(--color-error);color:var(--color-on-error)}.confirmation-dialog{background:var(--color-surface);border-radius:var(--radius-xl);max-width:400px;width:90%;padding:var(--spacing-xl);box-shadow:var(--elevation-5)}.confirmation-dialog-inline{padding:var(--spacing-xl);width:100%}.confirmation-dialog h3,.confirmation-dialog-inline h3{margin:0 0 var(--spacing-md) 0;color:var(--color-on-surface)}.confirmation-content{margin-bottom:var(--spacing-lg)}.confirmation-content>p{margin-bottom:var(--spacing-md);color:var(--color-on-surface-variant)}.confirmation-details{background:var(--color-surface-variant);padding:var(--spacing-md);border-radius:var(--radius-md);margin:var(--spacing-md) 0}.confirmation-details p{margin:var(--spacing-xs) 0;font-size:.875rem;color:var(--color-on-surface)}.confirmation-details ul{margin:var(--spacing-xs) 0;padding-left:var(--spacing-lg);font-size:.875rem;color:var(--color-on-surface-variant)}.confirmation-details li{margin:var(--spacing-xs) 0}.warning-text{color:var(--color-error);font-weight:var(--font-weight-medium);font-size:.875rem;margin-top:var(--spacing-md)}.confirmation-actions{display:flex;gap:var(--spacing-sm);justify-content:flex-end}.danger-button{background:var(--color-error);color:var(--color-on-error);border:none;padding:var(--spacing-sm) var(--spacing-lg);border-radius:var(--radius-md);font-size:.875rem;cursor:pointer;transition:all var(--motion-duration-short);font-weight:var(--font-weight-medium)}.danger-button:hover{background:var(--color-error);filter:brightness(.9)}.info-edit-form{padding:var(--spacing-md);background:var(--color-surface-container-low);border-radius:var(--radius-md)}.info-edit-form .form-group{margin-bottom:var(--spacing-md)}.info-edit-form label{display:block;font-weight:var(--font-weight-medium);margin-bottom:var(--spacing-xs);font-size:.875rem;color:var(--color-on-surface)}.modal-overlay{position:fixed;inset:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1500;padding:var(--spacing-lg)}.auth-modal-content{background:var(--color-surface);border-radius:var(--radius-xl);max-width:500px;width:100%;box-shadow:var(--elevation-5)}.auth-modal-content .modal-header h2{margin:0;color:var(--color-on-surface);font-size:1.5rem}.auth-modal-content .modal-body{padding:var(--spacing-lg)}.auth-modal-content .modal-body p{margin:0 0 var(--spacing-md) 0;color:var(--color-on-surface);line-height:1.6}.auth-modal-content .modal-body .info-text{background:var(--color-primary-container);color:var(--color-on-primary-container);padding:var(--spacing-md);border-radius:var(--radius-md);font-size:.875rem;margin:var(--spacing-md) 0 0 0}.auth-modal-content .modal-footer{padding:var(--spacing-lg);border-top:1px solid var(--color-outline);display:flex;gap:var(--spacing-sm);justify-content:flex-end}.primary-button{background:var(--color-primary);color:var(--color-on-primary);border:none;padding:var(--spacing-sm) var(--spacing-lg);border-radius:var(--radius-md);font-size:.875rem;font-weight:var(--font-weight-medium);cursor:pointer;transition:all var(--motion-duration-short);box-shadow:var(--elevation-1)}.primary-button:hover{background:var(--color-primary);filter:brightness(1.1);box-shadow:var(--elevation-2)}.secondary-button{background:var(--color-surface-variant);color:var(--color-on-surface-variant);border:none;padding:var(--spacing-sm) var(--spacing-lg);border-radius:var(--radius-md);font-size:.875rem;font-weight:var(--font-weight-medium);cursor:pointer;transition:all var(--motion-duration-short)}.secondary-button:hover{background:var(--color-surface-variant);filter:brightness(.95)}@media(max-width:640px){.receipt-capture,.receipt-gallery{padding:var(--spacing-md)}.extraction-group button{min-width:120px;font-size:.8125rem}.auth-modal-content{max-width:90%}.auth-modal-content .modal-footer{flex-direction:column-reverse}.auth-modal-content .modal-footer .primary-button,.auth-modal-content .modal-footer .secondary-button{width:100%}}.auth-container{display:flex;justify-content:center;align-items:center;min-height:100vh;padding:var(--spacing-lg);background:var(--color-surface-dim)}.auth-container.authenticated{min-height:auto;padding:var(--spacing-xl)}.auth-card{background:var(--color-surface);border-radius:var(--radius-xl);padding:var(--spacing-xl);max-width:420px;width:100%;box-shadow:var(--elevation-3)}.auth-card h2{margin:0 0 var(--spacing-md) 0;color:var(--color-on-surface);font-size:1.75rem;font-weight:var(--font-weight-bold);text-align:center}.auth-description{margin:0 0 var(--spacing-lg) 0;color:var(--color-on-surface-variant);text-align:center;line-height:1.5}.auth-form{display:flex;flex-direction:column;gap:var(--spacing-md)}.form-group{display:flex;flex-direction:column;gap:var(--spacing-xs)}.form-group label{color:var(--color-on-surface);font-size:.875rem;font-weight:var(--font-weight-medium)}.form-group input{padding:var(--spacing-md);border:2px solid var(--color-outline);border-radius:var(--radius-md);font-size:1rem;background:var(--color-surface);color:var(--color-on-surface);transition:border-color var(--motion-duration-short)}.form-group input:focus{outline:none;border-color:var(--color-primary)}.field-hint{color:var(--color-on-surface-variant);font-size:.75rem;margin-top:-4px}.auth-error{background:var(--color-error-container);color:var(--color-on-error-container);padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--radius-md);font-size:.875rem;display:flex;align-items:center;gap:var(--spacing-xs)}.auth-error:before{content:"⚠️"}.auth-message{background:var(--color-tertiary-container);color:var(--color-on-tertiary-container);padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--radius-md);font-size:.875rem;display:flex;align-items:center;gap:var(--spacing-xs)}.auth-message:before{content:"ℹ️"}.auth-button{padding:var(--spacing-md) var(--spacing-lg);border:none;border-radius:var(--radius-md);font-size:1rem;font-weight:var(--font-weight-medium);cursor:pointer;transition:all var(--motion-duration-short)}.auth-button.primary{background:var(--color-primary);color:var(--color-on-primary)}.auth-button.primary:hover:not(:disabled){background:var(--color-primary);filter:brightness(1.1);transform:translateY(-1px);box-shadow:var(--elevation-2)}.auth-button.sign-out{background:var(--color-error-container);color:var(--color-on-error-container);width:100%}.auth-button.sign-out:hover:not(:disabled){background:var(--color-error);color:var(--color-on-error)}.auth-button:disabled{opacity:.5;cursor:not-allowed}.auth-switch{margin:var(--spacing-lg) 0 0 0;text-align:center;color:var(--color-on-surface-variant);font-size:.875rem}.link-button{background:none;border:none;color:var(--color-primary);font-weight:var(--font-weight-medium);cursor:pointer;padding:0;font-size:inherit;text-decoration:underline}.link-button:hover{color:var(--color-primary);filter:brightness(1.2)}.link-button:disabled{opacity:.5;cursor:not-allowed}.auth-user-info{display:flex;align-items:center;justify-content:center;gap:var(--spacing-sm);padding:var(--spacing-md);background:var(--color-surface-variant);border-radius:var(--radius-md);margin-bottom:var(--spacing-lg)}.user-icon{font-size:1.5rem}.user-id{font-size:.875rem;color:var(--color-on-surface-variant);font-family:monospace}@media(max-width:640px){.auth-container{padding:var(--spacing-md)}.auth-card{padding:var(--spacing-lg)}.auth-card h2{font-size:1.5rem}}.account-page{max-width:72rem;margin:0 auto;padding:var(--spacing-2xl) var(--spacing-lg)}.account-page__bottom{display:grid;grid-template-columns:1fr 1fr;gap:var(--spacing-xl);margin-top:var(--spacing-xl)}.account-page .auth-card{max-width:none}.account-page .auth-card h2{text-align:left}.account-card .auth-user-info{margin-bottom:var(--spacing-lg)}.account-card .user-id{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:20ch}.legal-links{display:flex;flex-direction:column}.legal-links a{color:var(--color-on-surface);font-size:.875rem;text-decoration:none;padding:var(--spacing-md) 0;border-bottom:1px solid var(--color-outline);transition:color var(--motion-duration-short);display:flex;align-items:center;justify-content:space-between}.legal-links a:after{content:"→";color:var(--color-on-surface-variant);font-size:.75rem}.legal-links a:last-child{border-bottom:none}.legal-links a:hover{color:var(--color-primary)}.settings-card{margin-bottom:var(--spacing-lg)}.settings-section{display:flex;flex-direction:column;gap:var(--spacing-lg)}.setting-item{display:flex;flex-direction:column;gap:var(--spacing-sm)}.setting-label{font-weight:var(--font-weight-semibold);color:var(--color-on-surface);font-size:.875rem;text-transform:uppercase;letter-spacing:.05em}.theme-options{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--spacing-sm)}.theme-option{background:var(--color-surface-variant);border:2px solid var(--color-outline);border-radius:var(--radius-lg);padding:var(--spacing-md);display:flex;flex-direction:column;align-items:center;gap:var(--spacing-xs);cursor:pointer;transition:all var(--motion-duration-short) var(--motion-easing-standard)}.theme-option:hover{background:var(--color-surface-container);border-color:var(--color-primary);transform:translateY(-2px)}.theme-option.active{background:var(--color-primary-container);border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-primary-container)}.theme-icon{font-size:1.5rem}.theme-name{font-size:.875rem;font-weight:var(--font-weight-medium);color:var(--color-on-surface)}.setting-hint{font-size:.75rem;color:var(--color-on-surface-variant);margin:0;padding:var(--spacing-xs) var(--spacing-sm);background:var(--color-surface-variant);border-radius:var(--radius-md)}@media(max-width:640px){.account-page{padding:var(--spacing-lg) var(--spacing-md)}.account-page__bottom{grid-template-columns:1fr}}.danger-zone-card{margin-top:var(--spacing-xl);border:2px solid var(--color-error);border-radius:var(--radius-xl);padding:var(--spacing-xl);background:var(--color-error-container)}.danger-zone-header{display:flex;align-items:center;gap:var(--spacing-sm);margin-bottom:var(--spacing-sm)}.danger-zone-header h2{margin:0;color:var(--color-on-error-container);font-size:1.25rem;font-weight:var(--font-weight-bold);text-align:left}.danger-zone-icon{font-size:1.25rem;flex-shrink:0}.danger-zone-description{margin:0 0 var(--spacing-lg) 0;font-size:.875rem;color:var(--color-on-error-container);opacity:.85;line-height:1.5}.danger-zone-message{margin-bottom:var(--spacing-md);padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--radius-md);font-size:.875rem;font-weight:var(--font-weight-medium)}.danger-zone-message.success{background:var(--color-tertiary-container);color:var(--color-on-tertiary-container)}.danger-zone-message.error{background:var(--color-error);color:var(--color-on-error)}.danger-zone-actions{display:flex;flex-direction:column;gap:var(--spacing-md)}.danger-zone-action{display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-lg);padding:var(--spacing-md) var(--spacing-lg);background:var(--color-surface);border-radius:var(--radius-lg);border:1px solid var(--color-error)}.danger-zone-action-info{display:flex;flex-direction:column;gap:4px;flex:1;min-width:0}.danger-zone-action-info strong{font-size:.9375rem;color:var(--color-on-surface)}.danger-zone-action-info span{font-size:.8125rem;color:var(--color-on-surface-variant);line-height:1.4}.danger-zone-confirm{display:flex;align-items:center;gap:var(--spacing-sm);flex-shrink:0}.danger-zone-confirm span{font-size:.8125rem;color:var(--color-on-surface-variant);white-space:nowrap}.danger-zone-btn{padding:var(--spacing-sm) var(--spacing-md);border:none;border-radius:var(--radius-md);font-size:.875rem;font-weight:var(--font-weight-medium);cursor:pointer;transition:all var(--motion-duration-short);white-space:nowrap;flex-shrink:0}.danger-zone-btn:disabled{opacity:.5;cursor:not-allowed}.danger-zone-btn--destructive{background:var(--color-error);color:var(--color-on-error)}.danger-zone-btn--destructive:hover:not(:disabled){filter:brightness(1.1);transform:translateY(-1px)}.danger-zone-btn--confirm{background:var(--color-error);color:var(--color-on-error)}.danger-zone-btn--confirm:hover:not(:disabled){filter:brightness(1.1)}.danger-zone-btn--cancel{background:var(--color-surface-variant);color:var(--color-on-surface-variant)}.danger-zone-btn--cancel:hover:not(:disabled){background:var(--color-surface-container)}@media(max-width:640px){.danger-zone-action{flex-direction:column;align-items:flex-start;gap:var(--spacing-md)}.danger-zone-confirm{flex-wrap:wrap;width:100%}.danger-zone-confirm span{width:100%}.danger-zone-btn{flex:1}}.oauth-section{margin-bottom:var(--spacing-lg)}.oauth-info{background:var(--color-primary-container);border-radius:var(--radius-md);padding:var(--spacing-md);margin-bottom:var(--spacing-md)}.oauth-note{margin:0 0 var(--spacing-sm) 0;color:var(--color-on-primary-container);font-size:.875rem}.oauth-description{margin:0 0 var(--spacing-sm) 0;color:var(--color-on-primary-container);font-size:.8125rem;line-height:1.5}.oauth-description code{background:#0000001a;padding:2px 6px;border-radius:var(--radius-xs);font-size:.75rem}.oauth-instructions{margin-top:var(--spacing-sm)}.oauth-instructions summary{cursor:pointer;color:var(--color-on-primary-container);font-weight:var(--font-weight-medium);font-size:.8125rem;padding:var(--spacing-xs);border-radius:var(--radius-xs);transition:background-color var(--motion-duration-short)}.oauth-instructions summary:hover{background:#0000000d}.provider-list{display:flex;flex-direction:column;gap:var(--spacing-sm);margin-top:var(--spacing-sm);padding-left:var(--spacing-md)}.provider-item{padding:var(--spacing-xs)}.provider-item strong{display:block;margin-bottom:4px;color:var(--color-on-primary-container)}.provider-item p{margin:0;font-size:.75rem;color:var(--color-on-primary-container);opacity:.8}.provider-item a{color:var(--color-primary);text-decoration:underline}.provider-item a:hover{filter:brightness(1.2)}.oauth-buttons{display:flex;flex-direction:column;gap:var(--spacing-sm);margin-bottom:var(--spacing-md)}.oauth-button{display:flex;align-items:center;justify-content:center;gap:var(--spacing-sm);padding:var(--spacing-md) var(--spacing-lg);border:2px solid var(--color-outline);border-radius:var(--radius-md);font-size:.9375rem;font-weight:var(--font-weight-medium);cursor:pointer;transition:all var(--motion-duration-short);background:var(--color-surface);color:var(--color-on-surface)}.oauth-button:hover:not(:disabled){transform:translateY(-1px);box-shadow:var(--elevation-2);border-color:var(--color-on-surface)}.oauth-button:disabled{opacity:.5;cursor:not-allowed}.oauth-button.google:hover:not(:disabled){background:#f8f9fa;border-color:#4285f4}.oauth-button.facebook:hover:not(:disabled){background:#f0f5ff;border-color:#1877f2}.oauth-button.amazon:hover:not(:disabled){background:#fff8f0;border-color:#f90}.oauth-button.apple:hover:not(:disabled){background:#f5f5f5;border-color:#000}.oauth-icon{width:20px;height:20px;flex-shrink:0}.divider{display:flex;align-items:center;margin:var(--spacing-lg) 0;color:var(--color-on-surface-variant);font-size:.875rem}.divider:before,.divider:after{content:"";flex:1;height:1px;background:var(--color-outline)}.divider span{padding:0 var(--spacing-md)}@media(max-width:640px){.oauth-button{font-size:.875rem;padding:var(--spacing-sm) var(--spacing-md)}.provider-list{padding-left:var(--spacing-sm)}}@media(max-width:768px){.receipts-table th,.receipts-table td{padding:var(--spacing-sm);font-size:.875rem}.receipts-table th{font-size:.75rem}.total-cost-bar{padding:var(--spacing-md) var(--spacing-lg)}.total-cost-bar-content{flex-direction:column;align-items:flex-start;gap:var(--spacing-sm)}.total-cost-bar .total-amount{font-size:1.5rem}.total-cost-bar .total-count{align-self:flex-start}}@media(max-width:480px){.receipts-table-container{overflow-x:auto}.receipts-table th,.receipts-table td{padding:var(--spacing-xs) var(--spacing-sm);font-size:.8125rem}.receipts-table th{font-size:.6875rem}.total-cost-bar{padding:var(--spacing-sm) var(--spacing-md)}.total-cost-bar .total-label{font-size:.75rem}.total-cost-bar .total-amount{font-size:1.25rem}.total-cost-bar .total-count{font-size:.75rem;padding:4px 8px}}.has-tooltip{position:relative}.has-tooltip[data-tooltip]:hover:before{content:attr(data-tooltip);position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%);background:var(--color-inverse-surface);color:var(--color-inverse-on-surface);padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--radius-md);font-size:.75rem;white-space:nowrap;box-shadow:var(--elevation-3);animation:slideDown .2s ease-out;z-index:1000;pointer-events:none}.has-tooltip[data-tooltip]:hover:after{content:"";position:absolute;bottom:calc(100% + 2px);left:50%;transform:translate(-50%);width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid var(--color-inverse-surface);pointer-events:none}.has-tooltip[data-tooltip-bottom]:hover:before{content:attr(data-tooltip-bottom);top:calc(100% + 8px);bottom:auto}.has-tooltip[data-tooltip-bottom]:hover:after{top:calc(100% + 2px);bottom:auto;border-top:none;border-bottom:6px solid var(--color-inverse-surface)}.has-tooltip[disabled][data-tooltip]:hover:before,.has-tooltip.disabled[data-tooltip]:hover:before{content:attr(data-tooltip);cursor:not-allowed}@media(max-width:640px){.has-tooltip[data-tooltip]:hover:before,.has-tooltip[data-tooltip-bottom]:hover:before{font-size:.6875rem;padding:6px 10px;white-space:normal;max-width:200px}}.filter-bar{background:var(--color-surface-container-low);border-radius:var(--radius-lg);padding:var(--spacing-lg);margin-bottom:var(--spacing-lg)}.filter-bar-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--spacing-md)}.filter-bar-title{font-size:1rem;font-weight:var(--font-weight-semibold);color:var(--color-on-surface);margin:0}.reset-filters-button{padding:var(--spacing-xs) var(--spacing-md);background:transparent;color:var(--color-primary);border:1px solid var(--color-primary);border-radius:var(--radius-md);font-size:.875rem;font-weight:var(--font-weight-medium);cursor:pointer;transition:all .2s ease}.reset-filters-button:hover{background:var(--color-primary);color:var(--color-on-primary)}.filter-bar-controls{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--spacing-md);margin-bottom:var(--spacing-md)}.filter-group{display:flex;flex-direction:column;gap:var(--spacing-xs)}.filter-group--full{grid-column:1 / -1}.date-range-button{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;background:var(--color-surface);color:var(--color-on-surface);border:1px solid var(--color-outline);border-radius:var(--radius-md);font-size:.875rem;font-family:var(--font-family);font-weight:var(--font-weight-medium);cursor:pointer;transition:all .18s ease;white-space:nowrap;height:36px}.date-range-button:hover{border-color:var(--color-primary);color:var(--color-primary)}.date-range-button.active{background:var(--color-primary-container);border-color:var(--color-primary);color:var(--color-primary)}.date-range-button-icon{font-size:.9rem;line-height:1}.date-range-button-label{flex:1}.date-range-button-chevron{font-size:.6rem;opacity:.7}.date-popover{padding:6px 0;min-width:220px}.date-popover-presets{list-style:none;margin:0;padding:0}.date-popover-option{display:flex;justify-content:space-between;align-items:center;width:100%;padding:9px 16px;background:transparent;border:none;font-size:.9rem;font-family:var(--font-family);font-weight:var(--font-weight-medium);color:var(--color-on-surface);cursor:pointer;transition:background .15s ease;text-align:left}.date-popover-option:hover{background:var(--color-surface-container-high)}.date-popover-option.active{color:var(--color-primary);font-weight:var(--font-weight-semibold)}.date-popover-check{font-size:.85rem;color:var(--color-primary)}.date-popover-divider{height:1px;background:var(--color-outline-variant);margin:4px 0}.date-popover-custom{display:flex;flex-direction:column;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md) var(--spacing-md);border-top:1px solid var(--color-outline-variant);margin-top:4px}.filter-label{font-size:.875rem;font-weight:var(--font-weight-medium);color:var(--color-on-surface-variant)}.filter-select{padding:var(--spacing-sm) var(--spacing-md);background:var(--color-surface);color:var(--color-on-surface);border:1px solid var(--color-outline);border-radius:var(--radius-md);font-size:.9375rem;font-family:var(--font-family);cursor:pointer;transition:all .2s ease}.filter-select:hover{border-color:var(--color-primary)}.filter-select:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 2px rgba(var(--color-primary-rgb),.1)}.filter-bar-summary{padding-top:var(--spacing-sm);border-top:1px solid var(--color-outline-variant)}.summary-text{font-size:.875rem;font-weight:var(--font-weight-medium);color:var(--color-on-surface-variant)}.summary-panel{background:var(--color-surface-container-low);border-radius:var(--radius-lg);padding:var(--spacing-lg);margin-bottom:var(--spacing-lg)}.summary-header{display:flex;align-items:center;gap:var(--spacing-sm);margin-bottom:var(--spacing-lg)}.summary-icon{font-size:1.25rem}.summary-title{font-size:.875rem;font-weight:var(--font-weight-medium);color:var(--color-on-surface-variant)}.stat-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:var(--spacing-md);margin-bottom:var(--spacing-lg)}.stat-card{background:var(--color-surface);border:1px solid var(--color-outline-variant);border-radius:var(--radius-md);padding:var(--spacing-md);text-align:center;transition:all .2s ease}.stat-card:hover{border-color:var(--color-primary);box-shadow:var(--elevation-1)}.stat-icon{font-size:1.5rem;display:block;margin-bottom:var(--spacing-xs)}.stat-value{font-size:1.75rem;font-weight:var(--font-weight-bold);color:var(--color-on-surface);line-height:1;margin-bottom:var(--spacing-xs)}.stat-label{font-size:.875rem;font-weight:var(--font-weight-medium);color:var(--color-on-surface-variant)}.stat-subtitle{font-size:.75rem;color:var(--color-on-surface-variant);margin-top:var(--spacing-xs);opacity:.7}.top-stores-section{margin-bottom:var(--spacing-lg)}.section-title{font-size:.9375rem;font-weight:var(--font-weight-semibold);color:var(--color-on-surface);margin:0 0 var(--spacing-md) 0}.top-stores-list{display:flex;flex-direction:column;gap:var(--spacing-sm)}.store-item{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm);background:var(--color-surface);border-radius:var(--radius-sm)}.store-rank{font-size:.875rem;font-weight:var(--font-weight-bold);color:var(--color-on-surface-variant);min-width:24px}.store-info{flex:1;min-width:0}.store-name{font-size:.875rem;font-weight:var(--font-weight-medium);color:var(--color-on-surface);margin-bottom:var(--spacing-xs)}.store-bar-container{height:4px;background:var(--color-surface-container-highest);border-radius:2px;overflow:hidden}.store-bar{height:100%;background:var(--color-primary);transition:width .3s ease}.store-stats{text-align:right;min-width:100px}.store-amount{font-size:.9375rem;font-weight:var(--font-weight-bold);color:var(--color-on-surface);display:block}.store-percentage{font-size:.75rem;color:var(--color-on-surface-variant)}.monthly-breakdown-section{margin-top:var(--spacing-lg)}.monthly-breakdown-list{display:flex;flex-direction:column;gap:var(--spacing-xs)}.month-item{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-sm) var(--spacing-md);background:var(--color-surface);border-radius:var(--radius-sm);font-size:.875rem}.month-label{font-weight:var(--font-weight-medium);color:var(--color-on-surface);flex:1}.month-amount{font-weight:var(--font-weight-bold);color:var(--color-on-surface);margin:0 var(--spacing-md)}.month-count{color:var(--color-on-surface-variant);font-size:.8125rem}.pagination-container{margin-top:var(--spacing-lg);padding:var(--spacing-md);background:var(--color-surface-container-low);border-radius:var(--radius-md)}.pagination-info{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--spacing-md)}.pagination-text{font-size:.875rem;color:var(--color-on-surface-variant);font-weight:var(--font-weight-medium)}.page-size-selector{display:flex;align-items:center;gap:var(--spacing-sm)}.page-size-label{font-size:.875rem;color:var(--color-on-surface-variant)}.page-size-select{padding:4px 8px;background:var(--color-surface);color:var(--color-on-surface);border:1px solid var(--color-outline);border-radius:var(--radius-sm);font-size:.875rem;font-family:var(--font-family);cursor:pointer}.pagination-actions{display:flex;gap:var(--spacing-md);justify-content:center;align-items:center}.load-more-button,.show-all-button{padding:var(--spacing-sm) var(--spacing-lg);border-radius:var(--radius-md);font-size:.9375rem;font-weight:var(--font-weight-medium);cursor:pointer;transition:all .2s ease;border:none}.load-more-button{background:var(--color-primary);color:var(--color-on-primary)}.load-more-button:hover{background:var(--color-primary-dark, var(--color-primary));box-shadow:var(--elevation-2)}.show-all-button{background:transparent;color:var(--color-primary);border:1px solid var(--color-primary)}.show-all-button:hover{background:var(--color-primary);color:var(--color-on-primary)}.pagination-warning{font-size:.8125rem;color:var(--color-error);margin:0;font-style:italic}@media(max-width:768px){.filter-bar-controls{grid-template-columns:1fr}.stat-cards{grid-template-columns:repeat(2,1fr)}.stat-value{font-size:1.5rem}.pagination-info{flex-direction:column;gap:var(--spacing-sm);align-items:flex-start}.pagination-actions{flex-direction:column;width:100%}.load-more-button,.show-all-button{width:100%}.store-stats{min-width:80px}.store-amount{font-size:.875rem}}@media(max-width:480px){.filter-bar,.summary-panel{padding:var(--spacing-md)}.stat-cards{gap:var(--spacing-sm)}.stat-value{font-size:1.25rem}.stat-label{font-size:.8125rem}.filter-bar-header{flex-direction:column;align-items:flex-start;gap:var(--spacing-sm)}.reset-filters-button{width:100%}}.filter-select-compact{padding:6px 12px;background:var(--color-surface);color:var(--color-on-surface);border:1px solid var(--color-outline);border-radius:var(--radius-md);font-size:.875rem;font-family:var(--font-family);cursor:pointer;transition:all .2s ease;min-width:140px}.filter-select-compact:hover{border-color:var(--color-primary)}.filter-select-compact:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 2px #6200ee1a}.filter-summary-compact{font-size:.875rem;font-weight:var(--font-weight-medium);color:var(--color-on-surface-variant);padding:6px 12px;background:var(--color-surface-container-low);border-radius:var(--radius-md);white-space:nowrap}@media(max-width:768px){.bulk-actions-bar-compact{flex-direction:column;gap:var(--spacing-sm)}.bulk-actions-left,.bulk-actions-right{width:100%;justify-content:flex-start;flex-wrap:wrap}.filter-select-compact{flex:1;min-width:120px}.filter-summary-compact{flex-basis:100%;text-align:center}}@media(max-width:480px){.filter-select-compact{font-size:.8125rem;padding:4px 8px;min-width:100px}.filter-summary-compact{font-size:.8125rem;padding:4px 8px}}.bulk-select-button{padding:6px 12px;font-size:.875rem;font-weight:500;border:1px solid var(--color-outline);background:var(--color-surface);color:var(--color-on-surface);border-radius:var(--radius-md);cursor:pointer;transition:all var(--motion-duration-short) var(--motion-easing-standard);white-space:nowrap}.bulk-select-button:hover{background:var(--color-surface-variant);border-color:var(--color-primary)}.bulk-select-button.active{background:var(--color-primary);color:var(--color-on-primary);border-color:var(--color-primary)}.bulk-actions-selected{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-lg);background:var(--color-primary-container);border-radius:var(--radius-lg);margin-bottom:var(--spacing-lg);gap:var(--spacing-lg);box-shadow:var(--elevation-2)}.bulk-selected-info{display:flex;align-items:center;gap:var(--spacing-md);font-weight:600;font-size:.9375rem;color:var(--color-on-primary-container)}.bulk-selected-actions{display:flex;gap:var(--spacing-md);flex-wrap:wrap}.bulk-select-all-bar{display:flex;justify-content:flex-start;gap:var(--spacing-md);padding:var(--spacing-sm) var(--spacing-md);margin-bottom:var(--spacing-md);background:var(--color-surface-variant);border-radius:var(--radius-md)}.text-button{background:none;border:none;color:var(--color-primary);font-size:.875rem;font-weight:500;cursor:pointer;padding:var(--spacing-xs) var(--spacing-sm);border-radius:var(--radius-sm);transition:background var(--motion-duration-short) var(--motion-easing-standard)}.text-button:hover{background:#667eea14}.receipt-card.bulk-mode{position:relative}.receipt-card.selected{outline:3px solid var(--color-primary);outline-offset:-3px;background:var(--color-primary-container)}.receipt-table-row.selected{background:var(--color-primary-container)!important;font-weight:500}.receipt-table-row.bulk-mode:hover{background:var(--color-surface-variant)}.bulk-checkbox{position:absolute;top:8px;left:8px;z-index:10;background:var(--color-surface);border-radius:var(--radius-sm);padding:4px;box-shadow:var(--elevation-2);cursor:pointer}.bulk-checkbox input[type=checkbox]{width:20px;height:20px;cursor:pointer;accent-color:var(--color-primary)}@media(max-width:768px){.bulk-actions-selected{flex-direction:column;align-items:stretch}.bulk-selected-info,.bulk-selected-actions{justify-content:center}.bulk-select-all-bar{flex-direction:column}}.extraction-badge{position:absolute;top:8px;right:8px;padding:4px 10px;border-radius:var(--radius-md);font-size:.75rem;font-weight:600;white-space:nowrap;box-shadow:var(--elevation-2);z-index:5;transition:transform var(--motion-duration-short) var(--motion-easing-standard)}.extraction-badge:hover{transform:scale(1.05)}.eligibility-ready{background:var(--color-primary);color:var(--color-on-primary);border:1px solid var(--color-primary)}.eligibility-extracted{background:var(--color-success-container);color:var(--color-on-success-container);border:1px solid var(--color-success)}.eligibility-needs-upload{background:var(--color-warning-container);color:var(--color-on-warning-container);border:1px solid var(--color-warning)}.eligibility-no-photos{background:var(--color-error-container);color:var(--color-on-error-container);border:1px solid var(--color-error)}.eligibility-processing{background:var(--color-info-container);color:var(--color-on-info-container);border:1px solid var(--color-info);animation:pulse 2s ease-in-out infinite}.eligibility-failed{background:var(--color-error);color:var(--color-on-error);border:1px solid var(--color-error);cursor:pointer}.eligibility-failed:hover{transform:scale(1.1);box-shadow:var(--elevation-3)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.7}}.receipt-card .sync-badge{top:8px;left:8px}.receipt-card .extraction-badge{top:8px;right:8px}.receipt-table-row .extraction-badge{position:static;display:inline-block;margin-left:8px}@media(max-width:768px){.extraction-badge{font-size:.6875rem;padding:3px 8px}}.site-footer{background:var(--color-surface-container);border-top:1px solid var(--color-outline);padding:2rem 1rem;margin-top:auto;transition:background-color .2s ease,border-color .2s ease}.footer-content{max-width:1000px;margin:0 auto;display:flex;flex-direction:column;gap:1.5rem}.footer-brand{display:flex;align-items:center;gap:.75rem}.footer-logo{font-size:1.25rem;font-weight:600;color:var(--color-on-surface)}.footer-location{font-size:.875rem;color:var(--color-on-surface-variant)}.footer-links{display:flex;flex-wrap:wrap;gap:2rem}.footer-links-group{display:flex;flex-direction:column;gap:.5rem;min-width:140px}.footer-links-label{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--color-on-surface-variant);margin-bottom:.25rem}.footer-links-group a{font-size:.875rem;color:var(--color-on-surface);text-decoration:none;transition:color .15s ease}.footer-links-group a:hover{color:var(--color-primary);text-decoration:underline}.footer-payment{display:flex;align-items:center}.stripe-badge{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;background:var(--color-surface);border:1px solid var(--color-outline);border-radius:6px;transition:background-color .2s ease,border-color .2s ease}.stripe-logo{color:#635bff;flex-shrink:0}.stripe-text{font-size:.75rem;color:var(--color-on-surface-variant)}.footer-contact a{font-size:.875rem;color:var(--color-primary);text-decoration:none}.footer-contact a:hover{text-decoration:underline}.footer-copyright{padding-top:1rem;border-top:1px solid var(--color-outline)}.footer-copyright p{font-size:.75rem;color:var(--color-on-surface-variant);margin:0}@media(min-width:640px){.footer-content{display:grid;grid-template-columns:auto 1fr auto;grid-template-rows:auto auto auto;gap:1.5rem 2rem}.footer-brand{grid-column:1;grid-row:1}.footer-links{grid-column:2;grid-row:1;justify-content:flex-start}.footer-payment{grid-column:3;grid-row:1}.footer-contact{grid-column:1 / -1;grid-row:2}.footer-copyright{grid-column:1 / -1;grid-row:3}}.consent-banner{position:fixed;bottom:24px;left:50%;transform:translate(-50%);max-width:600px;width:calc(100% - 48px);background:linear-gradient(135deg,var(--md-sys-color-surface-container-highest) 0%,var(--md-sys-color-surface-container-high) 100%);border-radius:20px;border:1px solid var(--md-sys-color-outline-variant);box-shadow:0 8px 32px #0000001f,0 2px 8px #00000014;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:9999;padding:24px;animation:slideUpFade .4s cubic-bezier(.16,1,.3,1)}@keyframes slideUpFade{0%{transform:translate(-50%) translateY(40px);opacity:0}to{transform:translate(-50%) translateY(0);opacity:1}}.consent-banner-content{max-width:100%;margin:0;display:flex;flex-direction:column;gap:20px}.consent-banner-text h3{font-size:20px;font-weight:700;margin:0 0 8px;color:var(--md-sys-color-on-surface);letter-spacing:-.02em}.consent-banner-text p{font-size:14px;line-height:1.6;margin:0;color:var(--md-sys-color-on-surface-variant);opacity:.9}.consent-banner-actions{display:flex;gap:12px;flex-wrap:wrap;justify-content:flex-end}.consent-btn{padding:12px 28px;border-radius:24px;font-size:14px;font-weight:600;cursor:pointer;transition:all .25s cubic-bezier(.4,0,.2,1);border:none;font-family:inherit;min-height:48px;position:relative;overflow:hidden;letter-spacing:.01em}.consent-btn:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at center,rgba(255,255,255,.15) 0%,transparent 70%);opacity:0;transition:opacity .3s ease;pointer-events:none}.consent-btn:hover:before{opacity:1}.consent-btn:active{transform:scale(.98)}.consent-btn-primary{background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary);box-shadow:0 2px 8px #00000026}.consent-btn-primary:hover{background:var(--md-sys-color-primary);filter:brightness(1.08);box-shadow:0 4px 16px #0003;transform:translateY(-1px)}.consent-btn-secondary{background:transparent;color:var(--md-sys-color-on-surface);border:1.5px solid var(--md-sys-color-outline-variant)}.consent-btn-secondary:hover{background:var(--md-sys-color-surface-container);border-color:var(--md-sys-color-outline);box-shadow:0 2px 8px #0000001a}.consent-banner-footer{display:flex;justify-content:center;padding-top:8px;margin-top:-4px}.consent-link{color:var(--md-sys-color-primary);text-decoration:none;font-size:13px;font-weight:600;position:relative;transition:color .2s ease}.consent-link:after{content:"";position:absolute;bottom:-2px;left:0;width:100%;height:2px;background:var(--md-sys-color-primary);transform:scaleX(0);transform-origin:right;transition:transform .3s cubic-bezier(.4,0,.2,1)}.consent-link:hover:after{transform:scaleX(1);transform-origin:left}.consent-link:hover{filter:brightness(1.1)}.consent-details{margin-top:16px;padding:20px;background:#00000005;border-radius:16px;border:1px solid var(--md-sys-color-outline-variant);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.consent-option{padding:16px 0;border-bottom:1px solid rgba(0,0,0,.05);transition:background .2s ease}.consent-option:last-child{border-bottom:none;padding-bottom:0}.consent-option:hover{background:#00000005;margin:0 -12px;padding-left:12px;padding-right:12px;border-radius:8px}.consent-option-label{display:flex;gap:16px;cursor:pointer;align-items:flex-start;-webkit-user-select:none;user-select:none}.consent-option-label input[type=checkbox]{margin-top:2px;width:22px;height:22px;cursor:pointer;accent-color:var(--md-sys-color-primary);transition:transform .2s ease}.consent-option-label input[type=checkbox]:hover{transform:scale(1.1)}.consent-option-label strong{display:block;font-size:15px;font-weight:700;color:var(--md-sys-color-on-surface);margin-bottom:6px;letter-spacing:-.01em}.consent-option-label p{font-size:13px;color:var(--md-sys-color-on-surface-variant);margin:0;line-height:1.5;opacity:.85}@media(max-width:768px){.consent-banner{bottom:16px;width:calc(100% - 32px);padding:20px;border-radius:16px}.consent-banner-text h3{font-size:18px}.consent-banner-text p{font-size:13px}.consent-banner-actions{flex-direction:column;gap:8px}.consent-btn{width:100%;justify-content:center}.consent-details{padding:16px}.consent-option-label{gap:12px}}@media(max-width:480px){.consent-banner{bottom:12px;width:calc(100% - 24px);padding:16px}.consent-banner-text h3{font-size:17px}}.public-layout{min-height:100vh;display:flex;flex-direction:column;background:var(--color-surface);transition:background-color .2s ease}.public-header{position:sticky;top:0;z-index:100;background:var(--color-surface);border-bottom:1px solid var(--color-outline);transition:background-color .2s ease,border-color .2s ease}.header-content{max-width:1200px;margin:0 auto;padding:.75rem 1rem;display:flex;align-items:center;justify-content:space-between}.header-brand{display:flex;align-items:center;gap:.5rem;text-decoration:none;color:var(--color-on-surface)}.header-logo-icon{font-size:1.5rem}.header-logo-text{font-size:1.25rem;font-weight:600}.header-nav{display:flex;align-items:center;gap:.5rem}.header-nav a{padding:.5rem .75rem;font-size:.875rem;font-weight:500;color:var(--color-on-surface-variant);text-decoration:none;border-radius:6px;transition:color .15s ease,background .15s ease}.header-nav a:hover{color:var(--color-on-surface);background:var(--color-surface-container)}.header-nav a.active{color:var(--color-primary)}.theme-toggle{padding:.5rem;font-size:1.125rem;background:transparent;border:none;border-radius:6px;cursor:pointer;transition:background .15s ease;line-height:1}.theme-toggle:hover{background:var(--color-surface-container)}.header-cta{background:var(--color-primary)!important;color:var(--color-on-primary)!important}.header-cta:hover{filter:brightness(.9)}.public-main{flex:1}@media(max-width:480px){.header-content{padding:.5rem}.header-nav a:not(.header-cta){display:none}.theme-toggle{display:flex}.header-logo-text{font-size:1.125rem}}.landing{--section-padding: 4rem 1rem}.btn-primary{background:var(--color-primary);color:#fff}.btn-secondary{background:var(--color-surface-container);color:var(--color-on-surface);border:1px solid var(--color-outline)}.section-title{font-size:2rem;font-weight:600;color:var(--color-on-surface);margin-bottom:.5rem;text-align:center}.section-subtitle{font-size:1.125rem;color:var(--color-on-surface-variant);text-align:center;margin-bottom:2rem}.hero{padding:4rem 1rem 5rem;text-align:center;background:linear-gradient(180deg,var(--color-surface) 0%,var(--color-surface-container) 100%);transition:background .2s ease}.hero-content{max-width:680px;margin:0 auto}.hero-title{font-size:2.5rem;font-weight:700;color:var(--color-on-surface);line-height:1.2;margin-bottom:1rem}.hero-subtitle{font-size:1.25rem;color:var(--color-on-surface-variant);line-height:1.6;margin-bottom:2rem}.hero-cta{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap;margin-bottom:1rem}.hero-note{font-size:.875rem;color:var(--color-on-surface-variant);margin:0}.features{padding:var(--section-padding);background:var(--color-surface);transition:background-color .2s ease}.features-content{max-width:1000px;margin:0 auto}.features-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1.5rem;margin-top:2rem}.feature-card{padding:1.5rem;background:var(--color-surface);border:1px solid var(--color-outline);border-radius:12px;text-align:center;transition:background-color .2s ease,border-color .2s ease}:root[data-theme=dark] .feature-card{background:var(--color-surface-container)}.feature-icon{font-size:2.5rem;margin-bottom:1rem}.feature-card h3{font-size:1.125rem;font-weight:600;color:var(--color-on-surface);margin-bottom:.5rem}.feature-card p{font-size:.875rem;color:var(--color-on-surface-variant);line-height:1.5}.offline-first{padding:var(--section-padding);background:var(--color-surface-container);transition:background-color .2s ease}.offline-first-content{max-width:800px;margin:0 auto}.offline-features{display:flex;flex-direction:column;gap:1.5rem;margin-top:2rem}.offline-feature{display:flex;align-items:flex-start;gap:1rem;padding:1.25rem;background:var(--color-surface);border-radius:12px;transition:background-color .2s ease}:root[data-theme=dark] .offline-feature{background:var(--color-surface-variant)}.offline-icon{font-size:2rem;flex-shrink:0}.offline-feature h3{font-size:1rem;font-weight:600;color:var(--color-on-surface);margin-bottom:.25rem}.offline-feature p{font-size:.875rem;color:var(--color-on-surface-variant);line-height:1.5;margin:0}.ai-enhancement{padding:var(--section-padding);background:var(--color-surface);transition:background-color .2s ease}.ai-enhancement-content{max-width:700px;margin:0 auto;text-align:center}.ai-badge{display:inline-block;padding:.25rem .75rem;background:var(--color-primary-container);color:var(--color-on-primary-container);font-size:.75rem;font-weight:600;border-radius:20px;margin-bottom:1rem}.ai-features{display:flex;flex-direction:column;gap:1rem;margin:2rem 0;text-align:left}.ai-feature{display:flex;align-items:flex-start;gap:1rem;padding:1rem 1.25rem;background:var(--color-surface-container);border-radius:8px;transition:background-color .2s ease}.ai-feature span{font-size:1.5rem;flex-shrink:0}.ai-feature p{font-size:.9375rem;color:var(--color-on-surface);line-height:1.5;margin:0}.ai-feature strong{color:var(--color-on-surface)}.pricing-preview{padding:var(--section-padding);background:var(--color-surface-container);transition:background-color .2s ease}.pricing-preview-content{max-width:1000px;margin:0 auto;text-align:center}.pricing-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1.5rem;margin:2rem 0}.pricing-card{position:relative;padding:1.5rem;background:var(--color-surface);border:1px solid var(--color-outline);border-radius:12px;text-align:left;transition:background-color .2s ease,border-color .2s ease}.popular-badge{position:absolute;top:-10px;left:50%;transform:translate(-50%);padding:.25rem .75rem;background:var(--color-primary);color:var(--color-on-primary);font-size:.75rem;font-weight:600;border-radius:20px}.pricing-name{font-size:1.25rem;font-weight:600;color:var(--color-on-surface);margin-bottom:.25rem}.pricing-description{font-size:.875rem;color:var(--color-on-surface-variant);margin-bottom:1rem}.pricing-price{margin-bottom:1rem}.price-amount{font-size:2rem;font-weight:700;color:var(--color-on-surface)}.price-period{font-size:.875rem;color:var(--color-on-surface-variant)}.pricing-features{list-style:none;padding:0;margin:0}.pricing-features li{font-size:.875rem;color:var(--color-on-surface);padding:.375rem 0 .375rem 1.5rem;position:relative}.pricing-features li:before{content:"✓";position:absolute;left:0;color:var(--color-primary);font-weight:600}.how-it-works-preview{padding:var(--section-padding);background:var(--color-surface);transition:background-color .2s ease}.how-it-works-content{max-width:900px;margin:0 auto}.steps{display:flex;align-items:flex-start;justify-content:center;gap:1rem;margin-top:2rem;flex-wrap:wrap}.step{flex:1;min-width:180px;max-width:240px;text-align:center}.step-number{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;background:var(--color-primary);color:var(--color-on-primary);font-weight:600;border-radius:50%;margin-bottom:1rem}.step-image-placeholder{width:100%;aspect-ratio:4/3;background:var(--color-surface-container);border:2px dashed var(--color-outline);border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:3rem;margin-bottom:1rem;transition:background-color .2s ease,border-color .2s ease}.step h3{font-size:1.125rem;font-weight:600;color:var(--color-on-surface);margin-bottom:.5rem}.step p{font-size:.875rem;color:var(--color-on-surface-variant)}.step-arrow{font-size:1.5rem;color:var(--color-outline-variant);padding-top:4rem}.trust{padding:2rem 1rem;background:var(--color-surface-container);transition:background-color .2s ease}.trust-content{max-width:800px;margin:0 auto;display:flex;justify-content:center;gap:2rem;flex-wrap:wrap}.trust-item{display:flex;align-items:center;gap:.5rem;font-size:.875rem;color:var(--color-on-surface-variant)}.trust-icon{font-size:1.25rem}.final-cta{padding:var(--section-padding);text-align:center;background:var(--color-surface);transition:background-color .2s ease}.final-cta-content{max-width:600px;margin:0 auto}.final-cta h2{font-size:1.75rem;font-weight:600;color:var(--color-on-surface);margin-bottom:.5rem}.final-cta p{font-size:1rem;color:var(--color-on-surface-variant);margin-bottom:1.5rem}@media(max-width:640px){.hero-title{font-size:2rem}.hero-subtitle{font-size:1rem}.section-title{font-size:1.5rem}.step-arrow{display:none}.steps{flex-direction:column;align-items:center}.step{max-width:100%}}@media(min-width:768px){.hero-title{font-size:3rem}}.pricing-page{padding:2rem 1rem 4rem;max-width:1100px;margin:0 auto}.pricing-header{text-align:center;margin-bottom:2rem}.pricing-header h1{font-size:2.25rem;font-weight:700;color:var(--color-on-surface);margin-bottom:.5rem}.pricing-header p{font-size:1.125rem;color:var(--color-on-surface-variant)}.billing-toggle-section{display:flex;justify-content:center;margin-bottom:2rem}.billing-toggle{display:inline-flex;background:var(--color-surface-container);border-radius:8px;padding:4px;transition:background-color .2s ease}.billing-toggle button{padding:.625rem 1.25rem;font-size:.875rem;font-weight:500;color:var(--color-on-surface-variant);background:transparent;border:none;border-radius:6px;cursor:pointer;display:flex;align-items:center;gap:.5rem;transition:all .15s ease}.billing-toggle button.active{background:var(--color-surface);color:var(--color-on-surface);box-shadow:0 1px 3px #0000001a}:root[data-theme=dark] .billing-toggle button.active{box-shadow:0 1px 3px #0000004d}.save-badge{font-size:.75rem;padding:.125rem .5rem;background:var(--color-success);color:#fff;border-radius:20px}.pricing-cards-section{margin-bottom:3rem}.pricing-cards-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1.5rem}.pricing-card{position:relative;padding:1.5rem;background:var(--color-surface);border:1px solid var(--color-outline);border-radius:12px;display:flex;flex-direction:column;transition:background-color .2s ease,border-color .2s ease}:root[data-theme=dark] .pricing-card{background:var(--color-surface-container)}.pricing-card.popular{border-color:var(--color-primary);box-shadow:0 4px 12px #667eea33}:root[data-theme=dark] .pricing-card.popular{box-shadow:0 4px 12px #818cf84d}.popular-badge{position:absolute;top:-10px;left:50%;transform:translate(-50%);padding:.25rem .75rem;background:var(--color-primary);color:var(--color-on-primary);font-size:.75rem;font-weight:600;border-radius:20px;white-space:nowrap}.pricing-card-header h2{font-size:1.5rem;font-weight:600;color:var(--color-on-surface);margin-bottom:.25rem}.pricing-card-header .description{font-size:.875rem;color:var(--color-on-surface-variant);margin-bottom:1rem}.pricing-card-price{margin-bottom:1.5rem}.pricing-card-price .amount{font-size:2.5rem;font-weight:700;color:var(--color-on-surface)}.pricing-card-price .period{font-size:1rem;color:var(--color-on-surface-variant)}.pricing-card-price .savings{display:block;font-size:.875rem;color:var(--color-success);font-weight:500;margin-top:.25rem}.pricing-card-features{list-style:none;padding:0;margin:0 0 1.5rem;flex:1}.pricing-card-features li{font-size:.875rem;color:var(--color-on-surface);padding:.5rem 0 .5rem 1.5rem;position:relative}.pricing-card-features li:before{content:"✓";position:absolute;left:0;color:var(--color-primary);font-weight:600}.pricing-card-cta{display:block;padding:.75rem 1.5rem;text-align:center;font-size:.875rem;font-weight:600;border-radius:8px;text-decoration:none;transition:all .15s ease}.pricing-card-cta.primary{background:var(--color-primary);color:var(--color-on-primary)}.pricing-card-cta.primary:hover{filter:brightness(.9)}.pricing-card-cta.secondary{background:var(--color-surface-container);color:var(--color-on-surface);border:1px solid var(--color-outline)}.pricing-card-cta.secondary:hover{background:var(--color-surface-container-high)}.comparison-section{margin-bottom:3rem}.comparison-section h2{font-size:1.5rem;font-weight:600;text-align:center;margin-bottom:1.5rem;color:var(--color-on-surface)}.comparison-table-wrapper{overflow-x:auto}.comparison-table{width:100%;border-collapse:collapse;background:var(--color-surface);border:1px solid var(--color-outline);border-radius:8px;overflow:hidden;transition:background-color .2s ease,border-color .2s ease}.comparison-table th,.comparison-table td{padding:.875rem 1rem;text-align:left;border-bottom:1px solid var(--color-outline)}.comparison-table th{background:var(--color-surface-container);font-weight:600;font-size:.875rem;color:var(--color-on-surface);transition:background-color .2s ease}.comparison-table td{font-size:.875rem;color:var(--color-on-surface)}.comparison-table td:first-child{font-weight:500}.feature-check{color:var(--color-primary);font-weight:600}.feature-dash{color:var(--color-outline-variant)}.feature-detail{color:var(--color-on-surface)}.faq-section{margin-bottom:3rem}.faq-section h2{font-size:1.5rem;font-weight:600;text-align:center;margin-bottom:1.5rem;color:var(--color-on-surface)}.faq-list{max-width:700px;margin:0 auto}.faq-item{border:1px solid var(--color-outline);border-radius:8px;margin-bottom:.75rem;overflow:hidden;transition:border-color .2s ease}.faq-question{width:100%;padding:1rem;display:flex;justify-content:space-between;align-items:center;background:var(--color-surface);border:none;cursor:pointer;font-size:.9375rem;font-weight:500;text-align:left;color:var(--color-on-surface);transition:background-color .15s ease}:root[data-theme=dark] .faq-question{background:var(--color-surface-container)}.faq-question:hover{background:var(--color-surface-container)}:root[data-theme=dark] .faq-question:hover{background:var(--color-surface-container-high)}.faq-icon{font-size:1.25rem;color:var(--color-on-surface-variant)}.faq-answer{padding:0 1rem 1rem;background:var(--color-surface-container);transition:background-color .2s ease}.faq-answer p{font-size:.875rem;color:var(--color-on-surface-variant);line-height:1.6;margin:0}.pricing-cta{text-align:center;padding:2rem;background:var(--color-surface-container);border-radius:12px;transition:background-color .2s ease}.pricing-cta h2{font-size:1.5rem;font-weight:600;margin-bottom:.5rem;color:var(--color-on-surface)}.pricing-cta p{font-size:1rem;color:var(--color-on-surface-variant);margin-bottom:1.5rem}@media(max-width:640px){.pricing-header h1{font-size:1.75rem}.comparison-table th,.comparison-table td{padding:.625rem .5rem;font-size:.8125rem}}.how-it-works-page{padding:2rem 1rem 4rem;max-width:1000px;margin:0 auto}.hiw-header{text-align:center;margin-bottom:3rem}.hiw-header h1{font-size:2.25rem;font-weight:700;color:var(--color-on-surface);margin-bottom:.5rem}.hiw-header p{font-size:1.125rem;color:var(--color-on-surface-variant)}.hiw-steps{margin-bottom:4rem}.hiw-step{display:flex;gap:2rem;align-items:center;margin-bottom:3rem}.hiw-step.reverse{flex-direction:row-reverse}.hiw-step-content{flex:1}.hiw-step-number{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;background:var(--color-primary);color:var(--color-on-primary);font-size:1.25rem;font-weight:700;border-radius:50%;margin-bottom:1rem}.hiw-step-content h2{font-size:1.5rem;font-weight:600;color:var(--color-on-surface);margin-bottom:.75rem}.hiw-step-content p{font-size:1rem;color:var(--color-on-surface-variant);line-height:1.6;margin-bottom:1rem}.hiw-features{list-style:none;padding:0;margin:0}.hiw-features li{font-size:.875rem;color:var(--color-on-surface);padding:.375rem 0 .375rem 1.5rem;position:relative}.hiw-features li:before{content:"✓";position:absolute;left:0;color:var(--color-primary);font-weight:600}.hiw-step-image{flex:1;max-width:400px}.image-placeholder{aspect-ratio:4/3;background:var(--color-surface-container);border:2px dashed var(--color-outline);border-radius:12px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;transition:background-color .2s ease,border-color .2s ease}.image-placeholder span{font-size:4rem}.image-placeholder p{font-size:.875rem;color:var(--color-on-surface-variant);margin:0}.hiw-features-section{margin-bottom:3rem}.hiw-features-section h2{font-size:1.75rem;font-weight:600;text-align:center;margin-bottom:2rem;color:var(--color-on-surface)}.hiw-features-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1.5rem}.hiw-feature-card{padding:1.5rem;background:var(--color-surface);border:1px solid var(--color-outline);border-radius:12px;text-align:center;transition:background-color .2s ease,border-color .2s ease}:root[data-theme=dark] .hiw-feature-card{background:var(--color-surface-container)}.hiw-feature-icon{font-size:2.5rem;margin-bottom:1rem}.hiw-feature-card h3{font-size:1rem;font-weight:600;color:var(--color-on-surface);margin-bottom:.5rem}.hiw-feature-card p{font-size:.875rem;color:var(--color-on-surface-variant);line-height:1.5}.hiw-cta{text-align:center;padding:2rem;background:var(--color-surface-container);border-radius:12px;transition:background-color .2s ease}.hiw-cta h2{font-size:1.5rem;font-weight:600;margin-bottom:.5rem;color:var(--color-on-surface)}.hiw-cta p{font-size:1rem;color:var(--color-on-surface-variant);margin-bottom:1.5rem}.hiw-cta-buttons{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap}.btn{display:inline-flex;align-items:center;justify-content:center;padding:.625rem 1.25rem;font-size:.875rem;font-weight:500;border-radius:8px;text-decoration:none;transition:all .15s ease;border:none;cursor:pointer}.btn-lg{padding:.875rem 1.75rem;font-size:1rem}.btn-primary{background:var(--color-primary);color:var(--color-on-primary)}.btn-primary:hover{filter:brightness(.9)}.btn-secondary{background:var(--color-surface);color:var(--color-on-surface);border:1px solid var(--color-outline)}:root[data-theme=dark] .btn-secondary{background:var(--color-surface-container)}.btn-secondary:hover{background:var(--color-surface-container-high)}@media(max-width:768px){.hiw-step,.hiw-step.reverse{flex-direction:column}.hiw-step-image{max-width:100%}.hiw-header h1{font-size:1.75rem}}.legal-page{padding:2rem 1rem 4rem;max-width:800px;margin:0 auto}.legal-page h1{font-size:2rem;font-weight:700;color:var(--color-on-surface);padding-bottom:.75rem;border-bottom:3px solid var(--color-primary);margin-bottom:.5rem}.effective-date{color:var(--color-on-surface-variant);font-style:italic;font-size:.875rem;margin-bottom:2rem}.legal-page h2{font-size:1.375rem;font-weight:600;color:var(--color-on-surface);margin-top:2rem;margin-bottom:.75rem}.legal-page h3{font-size:1.125rem;font-weight:600;color:var(--color-on-surface-variant);margin-top:1.5rem;margin-bottom:.5rem}.legal-page p{font-size:.9375rem;color:var(--color-on-surface);line-height:1.7;margin-bottom:1rem}.legal-page ul,.legal-page ol{margin:.75rem 0;padding-left:1.5rem}.legal-page li{font-size:.9375rem;color:var(--color-on-surface);line-height:1.6;margin-bottom:.5rem}.legal-page a{color:var(--color-primary);text-decoration:none}.legal-page a:hover{text-decoration:underline}.contact-box{background:var(--color-surface-container);padding:1rem 1.25rem;border-radius:8px;margin:1.5rem 0;transition:background-color .2s ease}.contact-box p{margin-bottom:.5rem}.contact-box p:last-child{margin-bottom:0}.pricing-table{width:100%;border-collapse:collapse;margin:1rem 0;font-size:.875rem}.pricing-table th,.pricing-table td{padding:.75rem;text-align:left;border:1px solid var(--color-outline)}.pricing-table th{background:var(--color-surface-container);font-weight:600;color:var(--color-on-surface);transition:background-color .2s ease}.pricing-table td{background:var(--color-surface);color:var(--color-on-surface);transition:background-color .2s ease}:root[data-theme=dark] .pricing-table td{background:var(--color-surface-container)}@media(max-width:640px){.legal-page h1{font-size:1.5rem}.legal-page h2{font-size:1.25rem}.pricing-table{font-size:.8125rem}.pricing-table th,.pricing-table td{padding:.5rem}}.recipe-card{background:var(--surface-1, #ffffff);border-radius:8px;overflow:hidden;box-shadow:0 1px 3px #0000001a;cursor:pointer;transition:transform .2s,box-shadow .2s}.recipe-card:hover{transform:translateY(-2px);box-shadow:0 4px 8px #00000026}.recipe-card.expanded{border:2px solid var(--success-color, #4caf50)}.recipe-card-photo{width:100%;aspect-ratio:4/3;overflow:hidden;background:linear-gradient(135deg,var(--surface-2, #f5f5f5) 0%,var(--border-color, #e0e0e0) 100%);display:flex;align-items:center;justify-content:center}.recipe-card-photo img{width:100%;height:100%;object-fit:cover}.recipe-card-placeholder{color:var(--text-muted, #9e9e9e);display:flex;align-items:center;justify-content:center;width:100%;height:100%}.recipe-card-info{padding:12px}.recipe-card-title{font-size:16px;font-weight:600;margin:0 0 8px;color:var(--text-color, #333);overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.4;min-height:2.8em}.recipe-card-meta{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--text-secondary, #666)}.recipe-servings{display:flex;align-items:center;gap:4px}.recipe-tags{display:flex;flex-wrap:wrap;gap:4px}.recipe-tag{font-size:11px;padding:2px 6px;background:var(--primary-light, #e3f2fd);color:var(--primary-color, #1976d2);border-radius:3px;white-space:nowrap}.recipe-tag-more{font-size:11px;padding:2px 6px;color:var(--text-secondary, #666)}.add-to-date-btn{width:100%;margin-top:12px;padding:10px 16px;background:var(--success-color, #4caf50);color:#fff;border:none;border-radius:6px;font-size:14px;font-weight:600;cursor:pointer;transition:background-color .2s ease}.add-to-date-btn:hover{background:var(--success-dark, #45a049)}.add-to-date-btn:active{transform:scale(.98)}.meal-type-selector{margin-top:12px;padding:12px;background:var(--background-light, #f9f9f9);border-radius:6px;border:2px solid var(--success-color, #4caf50)}.meal-type-selector-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;font-size:13px;font-weight:600;color:var(--text-color, #333)}.cancel-selector-btn{width:24px;height:24px;padding:0;background:transparent;border:none;color:var(--text-secondary, #666);font-size:18px;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:background-color .2s ease}.cancel-selector-btn:hover{background:var(--hover-background, #e0e0e0)}.meal-type-buttons{display:flex;flex-direction:column;gap:6px}.meal-type-option{display:flex;align-items:center;gap:8px;padding:10px 12px;background:var(--surface-1, #ffffff);border:2px solid var(--border-color, #e0e0e0);border-radius:6px;cursor:pointer;transition:all .2s ease;font-size:14px;font-weight:500;color:var(--text-color, #333)}.meal-type-option:hover{border-color:var(--success-color, #4caf50);background:var(--success-light, #e8f5e9)}.meal-type-option:active{transform:scale(.98)}.meal-icon{font-size:20px}.review-shopping-modal-overlay{position:fixed;inset:0;background-color:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:1rem}.review-shopping-modal{background:var(--surface-1, #ffffff);border-radius:12px;max-width:700px;width:100%;max-height:90vh;display:flex;flex-direction:column;box-shadow:0 10px 25px #0003;color:var(--text-color, #111827)}.review-shopping-modal-header{display:flex;align-items:center;justify-content:space-between;padding:1.25rem 1.5rem;border-bottom:1px solid var(--border-color, #e5e7eb);position:sticky;top:0;background:var(--surface-1, #ffffff);border-radius:12px 12px 0 0;z-index:10}.review-shopping-modal-header h2{margin:0;font-size:1.375rem;font-weight:600;color:var(--text-color, #111827)}.review-shopping-modal-close{background:none;border:none;font-size:1.5rem;color:var(--text-secondary, #6b7280);cursor:pointer;padding:.25rem;line-height:1;transition:color .2s}.review-shopping-modal-close:hover{color:var(--text-color, #111827)}.review-shopping-modal-body{flex:1;overflow-y:auto;padding:1.5rem}.review-shopping-recipe-name{margin-bottom:1.5rem;padding:1rem;background:var(--background-light, #f9fafb);border-radius:8px;font-size:.9375rem;color:var(--text-secondary, #374151)}.review-shopping-recipe-name strong{color:var(--text-color, #111827)}.review-shopping-items-list{display:flex;flex-direction:column;gap:1rem;margin-bottom:1.5rem}.shopping-item-card{border:1px solid var(--border-color, #e5e7eb);border-radius:8px;padding:1rem;background:var(--surface-1, #ffffff);transition:all .2s}.shopping-item-card.grayed-out{background:var(--background-light, #f9fafb);opacity:.6}.shopping-item-card-header{display:flex;align-items:flex-start;gap:.75rem;margin-bottom:.75rem}.shopping-item-checkbox{margin-top:.25rem;width:18px;height:18px;cursor:pointer;flex-shrink:0}.shopping-item-ingredient{flex:1;font-size:.875rem;color:var(--text-secondary, #6b7280);font-style:italic}.shopping-item-manual-badge{background:var(--primary-light, #dbeafe);color:var(--primary-color, #1e40af);padding:.125rem .5rem;border-radius:4px;font-size:.75rem;font-weight:500}.shopping-item-edited-icon{color:var(--text-muted, #9ca3af);flex-shrink:0}.shopping-item-remove-btn{background:none;border:none;color:var(--danger-color, #ef4444);cursor:pointer;padding:.25rem;line-height:1;font-size:1.25rem;transition:color .2s;flex-shrink:0}.shopping-item-remove-btn:hover{color:var(--danger-dark, #dc2626)}.shopping-item-fields{display:grid;grid-template-columns:1fr auto 1fr;gap:.75rem;align-items:end}.shopping-item-field{display:flex;flex-direction:column;gap:.25rem}.shopping-item-field-small{max-width:80px}.shopping-item-field label{font-size:.75rem;font-weight:500;color:var(--text-secondary, #6b7280);text-transform:uppercase;letter-spacing:.025em}.shopping-item-input,.shopping-item-select{padding:.5rem .75rem;border:1px solid var(--border-color, #d1d5db);border-radius:6px;font-size:.9375rem;transition:border-color .2s;background:var(--surface-1, #ffffff);color:var(--text-color, #111827)}.shopping-item-input:focus,.shopping-item-select:focus{outline:none;border-color:var(--primary-color, #3b82f6)}.shopping-item-input-small{width:80px}.review-shopping-add-custom-btn{width:100%;padding:.875rem;background:var(--surface-2, #f3f4f6);border:2px dashed var(--border-color, #d1d5db);border-radius:8px;color:var(--text-secondary, #4b5563);font-size:.9375rem;font-weight:500;cursor:pointer;transition:all .2s}.review-shopping-add-custom-btn:hover{background:var(--button-hover-background, #e5e7eb);border-color:var(--chip-hover-border, #9ca3af);color:var(--text-color, #374151)}.custom-item-form{border:1px solid var(--border-color, #e5e7eb);border-radius:8px;padding:1.25rem;background:var(--background-light, #fafafa)}.custom-item-form h3{margin:0 0 1rem;font-size:1rem;font-weight:600;color:var(--text-color, #111827)}.custom-item-fields{display:grid;grid-template-columns:1fr auto 1fr;gap:.75rem;margin-bottom:1rem}.custom-item-input,.custom-item-select{padding:.625rem .875rem;border:1px solid var(--border-color, #d1d5db);border-radius:6px;font-size:.9375rem;background:var(--surface-1, #ffffff);color:var(--text-color, #111827)}.custom-item-input-small{width:80px}.custom-item-actions{display:flex;gap:.75rem;justify-content:flex-end}.custom-item-btn{padding:.625rem 1.25rem;border:none;border-radius:6px;font-size:.9375rem;font-weight:500;cursor:pointer;transition:all .2s}.custom-item-btn-cancel{background:var(--surface-1, #ffffff);border:1px solid var(--border-color, #d1d5db);color:var(--text-color, #374151)}.custom-item-btn-cancel:hover{background:var(--background-light, #f9fafb)}.custom-item-btn-add{background:var(--primary-color, #3b82f6);color:#fff}.custom-item-btn-add:hover:not(:disabled){background:var(--primary-dark, #2563eb)}.custom-item-btn-add:disabled{background:var(--text-muted, #9ca3af);cursor:not-allowed}.review-shopping-modal-footer{border-top:1px solid var(--border-color, #e5e7eb);padding:1.25rem 1.5rem;background:var(--background-light, #f9fafb);border-radius:0 0 12px 12px;position:sticky;bottom:0;z-index:10}.review-shopping-selected-count{margin-bottom:1rem;font-size:.9375rem;color:var(--text-secondary, #6b7280);font-weight:500}.review-shopping-actions{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.review-shopping-btn{padding:.875rem 1.25rem;border:none;border-radius:8px;font-size:.9375rem;font-weight:600;cursor:pointer;transition:all .2s;display:flex;flex-direction:column;align-items:center;gap:.25rem}.review-shopping-btn-subtitle{font-size:.75rem;font-weight:400;opacity:.8}.review-shopping-btn-secondary{background:var(--surface-1, #ffffff);border:2px solid var(--border-color, #d1d5db);color:var(--text-color, #374151)}.review-shopping-btn-secondary:hover:not(:disabled){border-color:var(--chip-hover-border, #9ca3af);background:var(--background-light, #f9fafb)}.review-shopping-btn-primary{background:var(--success-color, #10b981);color:#fff}.review-shopping-btn-primary:hover:not(:disabled){background:var(--success-dark, #059669)}.review-shopping-btn:disabled{opacity:.5;cursor:not-allowed}@media(max-width:640px){.review-shopping-modal-overlay{padding:0;align-items:flex-end}.review-shopping-modal{max-height:95vh;border-radius:16px 16px 0 0;max-width:100%}.review-shopping-modal-header{padding:1rem 1.25rem;border-radius:16px 16px 0 0}.review-shopping-modal-header h2{font-size:1.125rem}.shopping-item-fields,.custom-item-fields{grid-template-columns:1fr}.shopping-item-field-small{max-width:none}.review-shopping-actions{grid-template-columns:1fr}.review-shopping-btn{padding:1rem}}@media(max-width:640px){.shopping-item-checkbox{width:24px;height:24px}.shopping-item-remove-btn,.review-shopping-modal-close{min-width:44px;min-height:44px;display:flex;align-items:center;justify-content:center}}.recipe-accordion{background:var(--surface-1, #ffffff);border-radius:8px;box-shadow:0 4px 12px #0000001a;overflow:hidden;animation:slideDown .3s ease-out}.recipe-accordion-header{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid var(--border-color, #e0e0e0)}.recipe-accordion-collapse,.recipe-accordion-close,.recipe-accordion-fullscreen{background:none;border:none;cursor:pointer;padding:8px;color:var(--text-secondary, #666);transition:color .2s;display:flex;align-items:center;justify-content:center}.recipe-accordion-header{gap:4px}.recipe-fullscreen-overlay{position:fixed;inset:0;z-index:9999;background:#000000d9;display:flex;align-items:center;justify-content:center;padding:24px;overflow:auto;animation:fadeIn .2s ease-out}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.recipe-fullscreen-content{position:relative;background:var(--surface-1, #ffffff);border-radius:12px;max-width:800px;width:100%;max-height:calc(100vh - 48px);overflow:auto;box-shadow:0 20px 60px #0006}.recipe-fullscreen-close{position:sticky;top:0;right:0;float:right;margin:16px 16px 0 0;padding:10px;background:var(--surface-2, #f5f5f5);border:none;border-radius:8px;cursor:pointer;color:var(--text-secondary, #666);z-index:1;transition:background .2s,color .2s}.recipe-fullscreen-close:hover{background:var(--border-color, #e0e0e0);color:var(--text-color, #333)}.recipe-fullscreen-body{padding:24px 32px 40px;clear:both}.recipe-fullscreen-body .recipe-accordion-photo{max-height:400px;margin-bottom:28px}.recipe-fullscreen-body .recipe-accordion-info h2{font-size:32px;margin-bottom:20px}.recipe-fullscreen-body .recipe-markdown-content{font-size:17px;line-height:1.7}.recipe-fullscreen-body .recipe-markdown-content h1{font-size:24px}.recipe-fullscreen-body .recipe-markdown-content h2{font-size:20px}.recipe-fullscreen-body .recipe-markdown-content h3{font-size:18px}.recipe-accordion-collapse:hover,.recipe-accordion-close:hover,.recipe-accordion-fullscreen:hover{color:var(--text-color, #333)}.recipe-accordion-content{padding:20px}.recipe-accordion-photo{width:100%;max-height:300px;overflow:hidden;border-radius:8px;margin-bottom:20px}.recipe-accordion-photo img{width:100%;height:100%;object-fit:cover}.recipe-accordion-info h2{font-size:24px;font-weight:700;margin:0 0 16px;color:var(--text-color, #333)}.recipe-meta-row{display:flex;flex-wrap:wrap;gap:16px;margin-bottom:16px;padding-bottom:16px;border-bottom:1px solid var(--border-color, #e0e0e0)}.recipe-meta-item{display:flex;align-items:center;gap:6px;font-size:14px;color:var(--text-secondary, #666)}.recipe-meta-item svg{color:var(--success-color, #4caf50)}.recipe-dietary-tags{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:20px}.recipe-dietary-tag{padding:4px 12px;background:var(--primary-light, #e3f2fd);color:var(--primary-color, #1976d2);border-radius:16px;font-size:13px;font-weight:500}.recipe-markdown-content{line-height:1.6;color:var(--text-color, #333);margin-bottom:24px}.recipe-markdown-content h1,.recipe-markdown-content h2,.recipe-markdown-content h3{margin:16px 0 8px;color:var(--text-color, #333)}.recipe-markdown-content h1:first-child,.recipe-markdown-content h2:first-child,.recipe-markdown-content h3:first-child{margin-top:0}.recipe-markdown-content h1{font-size:20px;font-weight:700}.recipe-markdown-content h2{font-size:18px;font-weight:600}.recipe-markdown-content h3{font-size:16px;font-weight:600}.recipe-markdown-content ul,.recipe-markdown-content ol{margin:12px 0;padding-left:24px}.recipe-markdown-content li{margin:6px 0}.recipe-markdown-content p{margin:12px 0}.recipe-markdown-content strong{font-weight:600;color:var(--text-color, #333)}.recipe-accordion-actions{display:flex;flex-wrap:wrap;gap:12px;padding-top:20px;border-top:1px solid var(--border-color, #e0e0e0)}.recipe-action-btn{display:flex;align-items:center;gap:8px;padding:10px 16px;border:none;border-radius:6px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s}.recipe-action-shopping{background:var(--success-light, #e8f5e9);color:var(--success-color, #4caf50)}.recipe-action-shopping:hover{background:var(--success-light, #e8f5e9)}.recipe-action-shopping:disabled{opacity:.5;cursor:not-allowed}.recipe-action-ai-shopping{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;position:relative;overflow:hidden}.recipe-action-ai-shopping.disabled{opacity:.6;cursor:not-allowed;background:var(--text-muted, #9e9e9e)}.recipe-action-ai-shopping .ai-badge{position:absolute;top:-6px;right:-6px;background:var(--danger-color, #d32f2f);color:#fff;font-size:10px;padding:2px 8px;border-radius:10px;font-weight:600;box-shadow:0 2px 4px #0003}.recipe-action-edit{background:var(--primary-light, #e3f2fd);color:var(--primary-color, #1976d2)}.recipe-action-edit:hover{background:var(--primary-light, #e3f2fd)}.recipe-action-delete{background:#ef53501f;color:var(--danger-color, #d32f2f)}.recipe-action-delete:hover{background:#ef53502e}.recipe-action-delete.confirm{background:var(--danger-color, #d32f2f);color:#fff;animation:pulse .5s ease-in-out}@media(max-width:640px){.recipe-accordion-content{padding:16px}.recipe-accordion-info h2{font-size:20px}.recipe-meta-row{gap:12px}.recipe-meta-item{font-size:13px}.recipe-accordion-actions{flex-direction:column}.recipe-action-btn{width:100%;justify-content:center}}.recipe-grid-container{width:100%;padding:16px}.recipe-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:20px;width:100%}@media(max-width:640px){.recipe-grid{grid-template-columns:repeat(2,1fr);gap:12px}.recipe-grid-container{padding:12px}}@media(min-width:641px)and (max-width:1024px){.recipe-grid{grid-template-columns:repeat(3,1fr)}}@media(min-width:1025px){.recipe-grid{grid-template-columns:repeat(4,1fr)}}.recipe-grid-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 20px;text-align:center}.recipe-grid-empty .add-recipe-card{margin-bottom:24px;max-width:240px;width:100%}.recipe-grid-empty-message h3{font-size:24px;font-weight:600;margin:0 0 8px;color:var(--text-color, #333)}.recipe-grid-empty-message p{font-size:16px;color:var(--text-secondary, #666);margin:0}.recipe-grid-item{display:flex;flex-direction:column;gap:12px;transition:transform .3s ease,box-shadow .3s ease}.recipe-grid-item.highlighted{animation:highlight-pulse 2s ease-in-out}@keyframes highlight-pulse{0%,to{transform:scale(1);box-shadow:0 0 #1976d200}50%{transform:scale(1.02);box-shadow:0 0 20px #1976d266}}.recipe-grid-loading{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:20px;padding:16px}.recipe-skeleton{background:var(--skeleton-base, #f5f5f5);border-radius:8px;overflow:hidden;animation:pulse 1.5s ease-in-out infinite}.recipe-skeleton-photo{width:100%;aspect-ratio:4/3;background:linear-gradient(90deg,var(--skeleton-base, #f5f5f5) 25%,var(--skeleton-highlight, #e0e0e0) 50%,var(--skeleton-base, #f5f5f5) 75%);background-size:200% 100%;animation:shimmer 1.5s ease-in-out infinite}.recipe-skeleton-info{padding:12px}.recipe-skeleton-title{height:20px;background:var(--skeleton-highlight, #e0e0e0);border-radius:4px;margin-bottom:8px;width:80%}.recipe-skeleton-meta{height:16px;background:var(--skeleton-highlight, #e0e0e0);border-radius:4px;width:60%}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.8}}.manual-recipe-form-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px;overflow-y:auto}.manual-recipe-form{background:var(--surface-1, #ffffff);border-radius:12px;width:100%;max-width:700px;max-height:90vh;display:flex;flex-direction:column;box-shadow:0 8px 32px #0003;animation:slideUp .3s ease-out}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.form-header{display:flex;justify-content:space-between;align-items:center;padding:20px 24px;border-bottom:1px solid var(--border-color, #e0e0e0)}.form-header h2{font-size:24px;font-weight:700;margin:0;color:var(--text-color, #333)}.form-close{background:none;border:none;font-size:24px;color:var(--text-secondary, #666);cursor:pointer;padding:8px;line-height:1;transition:color .2s}.form-close:hover{color:var(--text-color, #333)}.manual-recipe-form form{display:flex;flex-direction:column;flex:1;overflow:hidden}.form-content{flex:1;overflow-y:auto;padding:24px}.form-group{margin-bottom:20px}.form-group label{display:block;margin-bottom:8px;font-weight:500;color:var(--text-color, #333);font-size:14px}.required{color:var(--danger-color, #d32f2f)}.form-group input[type=text],.form-group input[type=number],.form-group textarea{width:100%;padding:10px 12px;border:1px solid var(--border-color, #ccc);border-radius:6px;font-size:14px;font-family:inherit;transition:border-color .2s}.form-group input:focus,.form-group textarea:focus{outline:none;border-color:var(--success-color, #4caf50)}.form-group textarea{resize:vertical;min-height:200px;font-family:Courier New,monospace;line-height:1.6}.form-row{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.checkbox-label{display:flex;align-items:center;gap:8px;cursor:pointer;font-weight:400;font-size:14px;color:var(--text-secondary, #666);-webkit-user-select:none;user-select:none}.checkbox-label:hover{color:var(--text-color, #333)}.dietary-checkbox{width:18px;height:18px;cursor:pointer;accent-color:var(--success-color, #4caf50)}.dietary-options{margin-top:12px;animation:slideDown .2s ease-out}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.dietary-select{width:100%;padding:8px 12px;border:1px solid var(--border-color, #ccc);border-radius:6px;font-size:14px;font-family:inherit;transition:border-color .2s;background:var(--surface-1, #ffffff);cursor:pointer}.dietary-select:focus{outline:none;border-color:var(--success-color, #4caf50)}.dietary-select option{padding:6px}.selected-tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.selected-tag{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;background:var(--primary-light, #e3f2fd);color:var(--primary-color, #1976d2);border-radius:16px;font-size:13px;font-weight:500}.tag-remove{background:none;border:none;color:var(--primary-color, #1976d2);cursor:pointer;padding:0;font-size:14px;line-height:1;opacity:.7;transition:opacity .2s}.tag-remove:hover{opacity:1}.photo-upload-area{margin-top:8px}.photo-upload-btn{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;padding:40px 20px;border:2px dashed var(--border-color, #ccc);border-radius:8px;background:var(--background-light, #f9f9f9);color:var(--text-secondary, #666);font-size:14px;cursor:pointer;transition:all .2s}.photo-upload-btn:hover{border-color:var(--success-color, #4caf50);color:var(--success-color, #4caf50);background:var(--surface-2, #f5f5f5)}.photo-preview{position:relative;width:100%;max-width:400px}.photo-preview img{width:100%;border-radius:8px;display:block}.photo-remove{position:absolute;top:8px;right:8px;padding:8px 16px;background:#000000b3;color:#fff;border:none;border-radius:6px;font-size:13px;cursor:pointer;transition:background .2s}.photo-remove:hover{background:#000000e6}.content-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.tiptap-editor-wrapper{margin-top:8px;border:1px solid var(--border-color, #ccc);border-radius:6px;background:var(--surface-1, #ffffff);min-height:300px;overflow:hidden}.tiptap-editor{min-height:300px}.tiptap-editor-wrapper .ProseMirror{outline:none;min-height:280px;padding:16px;line-height:1.6}.tiptap-editor-wrapper .ProseMirror p.is-editor-empty:first-child:before{color:var(--text-secondary, #999);content:attr(data-placeholder);float:left;height:0;pointer-events:none}.tiptap-editor-wrapper .ProseMirror h1,.tiptap-editor-wrapper .ProseMirror h2,.tiptap-editor-wrapper .ProseMirror h3{margin:16px 0 8px;color:var(--text-color, #333);font-weight:600}.tiptap-editor-wrapper .ProseMirror h1{font-size:2em}.tiptap-editor-wrapper .ProseMirror h2{font-size:1.5em}.tiptap-editor-wrapper .ProseMirror h3{font-size:1.25em}.tiptap-editor-wrapper .ProseMirror ul,.tiptap-editor-wrapper .ProseMirror ol{margin:12px 0;padding-left:24px}.tiptap-editor-wrapper .ProseMirror li{margin:6px 0}.tiptap-editor-wrapper .ProseMirror strong{font-weight:600}.tiptap-editor-wrapper .ProseMirror em{font-style:italic}.tiptap-editor-wrapper .ProseMirror p{margin:8px 0}.tiptap-editor-wrapper .ProseMirror code{background:var(--background-light, #f5f5f5);padding:2px 6px;border-radius:3px;font-family:Courier New,monospace;font-size:.9em}.form-hint{display:block;margin-top:6px;font-size:12px;color:var(--text-secondary, #666)}.form-footer{display:flex;justify-content:flex-end;gap:12px;padding:20px 24px;border-top:1px solid var(--border-color, #e0e0e0)}.btn-cancel,.btn-save{padding:10px 24px;border:none;border-radius:6px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s}.btn-cancel{background:var(--surface-2, #f5f5f5);color:var(--text-secondary, #666)}.btn-cancel:hover{background:var(--button-hover-background, #e0e0e0)}.btn-save{background:var(--success-color, #4caf50);color:#fff}.btn-save:hover{background:var(--success-dark, #45a049)}@media(max-width:640px){.manual-recipe-form-overlay{padding:0}.manual-recipe-form{max-width:100%;max-height:100vh;border-radius:0}.form-header,.form-content,.form-footer{padding:16px}.form-header h2{font-size:20px}.form-row{grid-template-columns:1fr}.dietary-tags-selector{gap:6px}.dietary-tag-btn{font-size:12px;padding:6px 12px}.form-footer{flex-direction:column}.btn-cancel,.btn-save{width:100%}}.fab-container{position:fixed;bottom:90px;right:24px;z-index:999}.fab-button{width:56px;height:56px;border-radius:50%;background:var(--primary-color, #4CAF50);border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 12px #00000026,0 2px 6px #0000001a;transition:all .3s cubic-bezier(.4,0,.2,1);color:#fff}.fab-button:hover{background:var(--primary-dark, #45a049);box-shadow:0 6px 16px #0003,0 3px 8px #00000026;transform:scale(1.05)}.fab-button:active{transform:scale(.95)}.fab-button.open{transform:rotate(45deg)}.fab-button.open:hover{transform:rotate(45deg) scale(1.05)}.fab-button svg{transition:transform .3s cubic-bezier(.4,0,.2,1)}.fab-popup{position:absolute;bottom:72px;right:0;background:var(--surface-1, #ffffff);border-radius:12px;box-shadow:0 8px 32px #00000026,0 4px 16px #0000001a;min-width:280px;max-width:320px;padding:8px;animation:fabPopupSlideIn .2s cubic-bezier(.4,0,.2,1);transform-origin:bottom right}@keyframes fabPopupSlideIn{0%{opacity:0;transform:translateY(8px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.fab-popup-option{display:flex;align-items:center;gap:12px;padding:12px;border-radius:8px;cursor:pointer;transition:background .2s;border:none;background:none;width:100%;text-align:left;position:relative}.fab-popup-option:not(.disabled):hover{background:var(--surface-2, #f5f5f5)}.fab-popup-option:not(.disabled):active{background:var(--surface-3, #eeeeee)}.fab-popup-option.disabled{opacity:.6;cursor:not-allowed;pointer-events:none}.fab-popup-icon{font-size:32px;line-height:1;flex-shrink:0}.fab-popup-text{flex:1;min-width:0}.fab-popup-title{font-size:15px;font-weight:600;color:var(--text-color, #333);margin-bottom:2px}.fab-popup-description{font-size:13px;color:var(--text-secondary, #666);line-height:1.3}.fab-popup-badge{position:absolute;top:50%;right:12px;transform:translateY(-50%);background:var(--text-muted, #9e9e9e);color:#fff;padding:4px 10px;border-radius:12px;font-size:11px;font-weight:600;white-space:nowrap}@media(max-width:768px){.fab-container{bottom:80px;right:16px}.fab-popup{right:0;max-width:min(320px,calc(100vw - 32px))}}@media(prefers-color-scheme:dark){.fab-popup{background:var(--surface-1, #2a2a2a);box-shadow:0 8px 32px #0006,0 4px 16px #0000004d}.fab-popup-option:not(.disabled):hover{background:var(--surface-2, #353535)}.fab-popup-option:not(.disabled):active{background:var(--surface-3, #404040)}.fab-popup-title{color:var(--text-color, #e0e0e0)}.fab-popup-description{color:var(--text-secondary, #b0b0b0)}}.calendar-day-cell{min-height:100px;padding:4px;border:1px solid var(--border-color, #e0e0e0);background:var(--background-color, #ffffff);cursor:pointer;position:relative;transition:background-color .2s ease}.calendar-day-cell:hover{background-color:var(--hover-background, #f5f5f5)}.calendar-day-cell.today{background-color:var(--primary-light, #e3f2fd);border-color:var(--primary-color, #1976d2);border-width:2px}.calendar-day-cell.selected{background-color:var(--success-light, #e8f5e9);border-color:var(--success-color, #4caf50);border-width:3px;box-shadow:0 0 10px #4caf504d}.calendar-day-cell.selected .day-number{color:var(--success-color, #4caf50);font-weight:700}.calendar-day-cell.other-month{opacity:.4}.day-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}.day-number{font-size:14px;font-weight:600;color:var(--text-color, #333)}.calendar-day-cell.today .day-number{color:var(--primary-color, #1976d2);font-weight:700}.day-meals{display:flex;flex-direction:column;gap:4px}.meal-item{display:flex;align-items:center;justify-content:space-between;padding:4px 6px;background-color:var(--meal-background, #f0f0f0);border-radius:4px;font-size:12px;transition:background-color .2s ease}.meal-item:hover{background-color:var(--meal-hover-background, #e0e0e0)}.meal-content{display:flex;align-items:center;gap:4px;flex:1;min-width:0}.meal-type-badge{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;background-color:var(--primary-color, #1976d2);color:#fff;border-radius:3px;font-size:10px;font-weight:700;flex-shrink:0}.meal-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:normal;word-wrap:break-word;line-height:1.2;color:var(--text-color, #333)}.recurring-icon{font-size:10px;flex-shrink:0}.remove-meal-btn{display:none;width:16px;height:16px;padding:0;background:var(--danger-color, #d32f2f);color:#fff;border:none;border-radius:3px;cursor:pointer;font-size:10px;line-height:1;flex-shrink:0;transition:background-color .2s ease}.meal-item:hover .remove-meal-btn{display:flex;align-items:center;justify-content:center}.remove-meal-btn:hover{background-color:var(--danger-dark, #b71c1c)}.selected-day-indicator{position:absolute;bottom:4px;left:4px;right:4px;padding:4px;background-color:var(--success-color, #4caf50);color:#fff;border-radius:4px;font-size:10px;font-weight:600;text-align:center;line-height:1.2;animation:pulse-indicator 2s ease-in-out infinite}@keyframes pulse-indicator{0%,to{opacity:1}50%{opacity:.7}}@media(max-width:768px){.calendar-day-cell{min-height:80px;padding:2px}.day-number{font-size:12px}.meal-item{font-size:11px;padding:3px 4px}.meal-type-badge{width:14px;height:14px;font-size:9px}.remove-meal-btn{display:flex;align-items:center;justify-content:center}}.calendar-week-view{display:flex;flex-direction:column;gap:16px;width:100%}.week-header{display:flex;justify-content:space-between;align-items:center;gap:16px}.week-navigation{display:flex;align-items:center;gap:12px}.nav-btn{display:flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;background:var(--button-background, #f5f5f5);border:1px solid var(--border-color, #e0e0e0);border-radius:4px;color:var(--text-color, #333);font-size:24px;cursor:pointer;transition:all .2s ease}.nav-btn:hover{background:var(--button-hover-background, #e0e0e0)}.nav-btn:active{transform:scale(.95)}.week-range{font-size:16px;font-weight:600;color:var(--text-color, #333);min-width:200px;text-align:center}.today-btn{padding:8px 16px;background:var(--primary-color, #1976d2);color:#fff;border:none;border-radius:4px;font-size:14px;font-weight:600;cursor:pointer;transition:background-color .2s ease}.today-btn:hover{background:var(--primary-dark, #1565c0)}.week-grid{display:flex;flex-direction:column;border:1px solid var(--border-color, #e0e0e0);border-radius:8px;overflow:hidden;background:var(--background-color, #ffffff)}.week-day-headers{display:grid;grid-template-columns:repeat(7,1fr);background:var(--header-background, #f5f5f5);border-bottom:2px solid var(--border-color, #e0e0e0)}.day-header-cell{padding:12px 8px;text-align:center;font-size:14px;font-weight:600;color:var(--text-secondary, #666);text-transform:uppercase;letter-spacing:.5px}.week-day-cells{display:grid;grid-template-columns:repeat(7,1fr)}@media(max-width:768px){.week-header{flex-direction:column;gap:12px}.week-navigation{width:100%;justify-content:center}.week-range{font-size:14px;min-width:180px}.nav-btn{width:32px;height:32px;font-size:20px}.today-btn{width:100%}.day-header-cell{padding:8px 4px;font-size:12px}.week-day-cells{grid-template-columns:repeat(7,1fr)}}@media(max-width:480px){.day-header-cell{font-size:11px;padding:6px 2px}}.calendar-month-view{display:flex;flex-direction:column;gap:16px;width:100%}.month-header{display:flex;justify-content:space-between;align-items:center;gap:16px}.month-navigation{display:flex;align-items:center;gap:12px}.month-title{font-size:18px;font-weight:700;color:var(--text-color, #333);min-width:200px;text-align:center}.month-grid{display:flex;flex-direction:column;border:1px solid var(--border-color, #e0e0e0);border-radius:8px;overflow:hidden;background:var(--background-color, #ffffff)}.month-day-headers{display:grid;grid-template-columns:repeat(7,1fr);background:var(--header-background, #f5f5f5);border-bottom:2px solid var(--border-color, #e0e0e0)}.month-day-cells{display:grid;grid-template-columns:repeat(7,1fr);grid-auto-rows:minmax(80px,auto)}@media(max-width:768px){.month-header{flex-direction:column;gap:12px}.month-navigation{width:100%;justify-content:center}.month-title{font-size:16px;min-width:180px}.today-btn{width:100%}.month-day-cells{grid-auto-rows:minmax(60px,auto)}}@media(max-width:480px){.month-title{font-size:14px}.month-day-cells{grid-auto-rows:minmax(50px,auto)}}.meal-type-filter{display:flex;align-items:center;gap:12px;padding:12px 0}.filter-label{font-size:14px;font-weight:600;color:var(--text-secondary, #666)}.filter-chips{display:flex;gap:8px;flex-wrap:wrap}.filter-chip{display:flex;align-items:center;gap:6px;padding:8px 16px;background:var(--chip-background, #f5f5f5);border:2px solid var(--chip-border, #e0e0e0);border-radius:20px;color:var(--text-color, #333);font-size:14px;font-weight:500;cursor:pointer;transition:all .2s ease;-webkit-user-select:none;user-select:none}.filter-chip:hover{background:var(--chip-hover-background, #e8e8e8);border-color:var(--chip-hover-border, #d0d0d0)}.filter-chip.selected{background:var(--primary-color, #1976d2);border-color:var(--primary-color, #1976d2);color:#fff}.filter-chip.selected:hover{background:var(--primary-dark, #1565c0);border-color:var(--primary-dark, #1565c0)}.chip-icon{font-size:16px;line-height:1}.chip-label{line-height:1}.chip-indicator{font-size:12px;font-weight:700;min-width:12px;line-height:1}@media(max-width:768px){.meal-type-filter{flex-direction:column;align-items:flex-start;gap:8px}.filter-chips{width:100%;justify-content:space-between}.filter-chip{flex:1;justify-content:center;padding:8px 12px;font-size:13px}.chip-icon{font-size:14px}}@media(max-width:480px){.filter-chips{flex-direction:column;width:100%}.filter-chip{width:100%}}.popover-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:16px}.day-meal-popover{background:var(--background-color, #ffffff);border-radius:12px;box-shadow:0 8px 32px #0003;width:100%;max-width:500px;max-height:80vh;display:flex;flex-direction:column;overflow:hidden}.popover-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid var(--border-color, #e0e0e0)}.popover-header h3{margin:0;font-size:20px;font-weight:700;color:var(--text-color, #333)}.close-btn{width:32px;height:32px;padding:0;background:transparent;border:none;color:var(--text-secondary, #666);font-size:24px;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:background-color .2s ease}.close-btn:hover{background:var(--hover-background, #f5f5f5)}.popover-date{padding:12px 20px;font-size:14px;font-weight:600;color:var(--text-secondary, #666);background:var(--background-light, #f9f9f9);border-bottom:1px solid var(--border-color, #e0e0e0)}.meal-type-selector{padding:16px 20px;border-bottom:1px solid var(--border-color, #e0e0e0)}.selector-label{display:block;font-size:14px;font-weight:600;color:var(--text-color, #333);margin-bottom:8px}.meal-type-buttons{display:flex;gap:8px}.meal-type-btn{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;padding:12px 8px;background:var(--button-background, #f5f5f5);border:2px solid var(--border-color, #e0e0e0);border-radius:8px;cursor:pointer;transition:all .2s ease}.meal-type-btn:hover{background:var(--button-hover-background, #e8e8e8);border-color:var(--primary-color, #1976d2)}.meal-type-btn.selected{background:var(--primary-color, #1976d2);border-color:var(--primary-color, #1976d2);color:#fff}.meal-icon{font-size:24px}.meal-label{font-size:12px;font-weight:600}.recipe-search{padding:16px 20px;border-bottom:1px solid var(--border-color, #e0e0e0)}.search-input{width:100%;padding:10px 16px;font-size:14px;border:2px solid var(--border-color, #e0e0e0);border-radius:8px;background:var(--background-color, #ffffff);transition:border-color .2s ease}.search-input:focus{outline:none;border-color:var(--primary-color, #1976d2)}.recipe-list{flex:1;overflow-y:auto;padding:8px 0}.recipe-item{display:flex;align-items:center;justify-content:space-between;width:100%;padding:12px 20px;background:transparent;border:none;border-bottom:1px solid var(--border-color, #e0e0e0);cursor:pointer;transition:background-color .2s ease;text-align:left}.recipe-item:last-child{border-bottom:none}.recipe-item:hover{background:var(--hover-background, #f5f5f5)}.recipe-info{display:flex;align-items:center;gap:12px;flex:1;min-width:0}.recipe-thumbnail{width:48px;height:48px;object-fit:cover;border-radius:6px;flex-shrink:0}.recipe-details{flex:1;min-width:0}.recipe-title{font-size:15px;font-weight:600;color:var(--text-color, #333);margin-bottom:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.recipe-meta{font-size:13px;color:var(--text-secondary, #666)}.select-arrow{font-size:24px;color:var(--text-secondary, #999);flex-shrink:0}.no-recipes{padding:40px 20px;text-align:center;color:var(--text-secondary, #666);font-size:14px}@media(max-width:768px){.day-meal-popover{max-height:90vh}.meal-type-buttons{gap:6px}.meal-type-btn{padding:10px 6px}.meal-icon{font-size:20px}.meal-label{font-size:11px}}@media(max-width:480px){.popover-overlay{padding:0}.day-meal-popover{max-width:100%;max-height:100vh;border-radius:0}}.meal-planner{width:100%;min-height:100vh;background:var(--page-background);padding-bottom:40px;--page-background: var(--color-surface-variant, #f8f9fa);--surface-1: var(--color-surface, #ffffff);--surface-2: var(--color-surface-variant, #f8f9fa);--surface-3: var(--color-surface-container, #f7fafc);--border-color: var(--color-outline, #e2e8f0);--text-color: var(--color-on-surface, #333333);--text-secondary: var(--color-on-surface-variant, #666666);--text-muted: #94a3b8;--primary-color: var(--color-primary, #667eea);--primary-dark: #5a67d8;--primary-light: var(--color-primary-container, #f0f4ff);--success-color: var(--color-success, #22543d);--success-dark: #1a4731;--success-light: var(--color-success-container, #c6f6d5);--danger-color: var(--color-error, #e53e3e);--danger-dark: #c53030;--hover-background: var(--color-surface-container, #f7fafc);--button-background: var(--color-surface-container, #f7fafc);--button-hover-background: var(--color-surface-container-high, #edf2f7);--meal-background: var(--color-surface-container, #f7fafc);--meal-hover-background: var(--color-surface-container-high, #edf2f7);--chip-background: var(--color-surface, #ffffff);--chip-border: var(--color-outline, #e2e8f0);--chip-hover-background: var(--color-surface-container, #f7fafc);--chip-hover-border: var(--color-outline-variant, #cbd5e0);--skeleton-base: var(--color-surface-container, #f7fafc);--skeleton-highlight: var(--color-surface-container-high, #edf2f7);--background-color: var(--surface-1);--background-light: var(--surface-3);--header-background: var(--surface-2)}.meal-planner-header{background:var(--surface-1);padding:24px;border-bottom:1px solid var(--border-color);display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:16px}.meal-planner-header h1{font-size:28px;font-weight:700;margin:0 0 4px;color:var(--text-color, #333)}.meal-planner-header p{font-size:14px;color:var(--text-secondary, #666);margin:0}.recipe-count{background:var(--primary-light, #e3f2fd);color:var(--primary-color, #1976d2);padding:8px 16px;border-radius:20px;font-size:14px;font-weight:500}.meal-planner-content{max-width:1400px;margin:0 auto}.calendar-section{background:var(--surface-1, #ffffff);margin:24px 24px 0;padding:24px;border-radius:12px;box-shadow:0 1px 3px #0000001a;color:var(--text-color, #333)}.calendar-controls{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;gap:16px;flex-wrap:wrap}.view-toggle{display:flex;gap:0;background:var(--surface-2, #f5f5f5);border-radius:8px;padding:4px}.view-toggle-btn{padding:8px 20px;background:transparent;border:none;border-radius:6px;color:var(--text-secondary, #666);font-size:14px;font-weight:600;cursor:pointer;transition:all .2s ease}.view-toggle-btn:hover{background:var(--button-hover-background, #e0e0e0);color:var(--text-color, #333)}.view-toggle-btn.active{background:var(--primary-color, #1976d2);color:#fff}.recipe-section{background:var(--surface-1, #ffffff);margin:24px;border-radius:12px;box-shadow:0 1px 3px #0000001a;overflow:hidden}.meal-planner-loading{display:flex;justify-content:center;align-items:center;min-height:400px}.loading-spinner{width:48px;height:48px;border:4px solid #e0e0e0;border-top-color:#4caf50;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(max-width:640px){.meal-planner-header{padding:16px}.meal-planner-header h1{font-size:24px}.meal-planner-header p{font-size:13px}.calendar-section{margin:16px 16px 0;padding:16px;border-radius:8px}.calendar-controls{flex-direction:column;align-items:stretch}.view-toggle{width:100%}.view-toggle-btn{flex:1}.recipe-section{margin:16px;border-radius:8px}.recipe-count{font-size:13px;padding:6px 12px}}:root[data-theme=dark] .meal-planner{--page-background: var(--color-surface, #0f172a);--surface-1: var(--color-surface-container, #1e293b);--surface-2: var(--color-surface-container-high, #334155);--surface-3: var(--color-surface, #0f172a);--border-color: var(--color-outline, #334155);--text-color: var(--color-on-surface, #f1f5f9);--text-secondary: var(--color-on-surface-variant, #94a3b8);--text-muted: #64748b;--primary-color: var(--color-primary, #818cf8);--primary-dark: #6366f1;--primary-light: var(--color-primary-container, #312e81);--success-color: var(--color-success, #4ade80);--success-dark: #22c55e;--success-light: var(--color-success-container, #14532d);--danger-color: var(--color-error, #f87171);--danger-dark: #ef4444;--hover-background: var(--color-surface-container-high, #334155);--button-background: var(--color-surface-container, #1e293b);--button-hover-background: var(--color-surface-container-high, #334155);--meal-background: var(--color-surface-container, #1e293b);--meal-hover-background: var(--color-surface-container-high, #334155);--chip-background: var(--color-surface-container, #1e293b);--chip-border: var(--color-outline, #334155);--chip-hover-background: var(--color-surface-container-high, #334155);--chip-hover-border: var(--color-outline-variant, #475569);--skeleton-base: var(--color-surface-container, #1e293b);--skeleton-highlight: var(--color-surface-container-high, #334155)}:root[data-theme=dark] .meal-planner-header{background:var(--surface-1);border-bottom-color:var(--border-color)}:root[data-theme=dark] .meal-planner-header h1{color:var(--text-color)}:root[data-theme=dark] .meal-planner-header p{color:var(--text-secondary)}:root[data-theme=dark] .recipe-count{background:var(--primary-light);color:var(--primary-color)}:root[data-theme=dark] .calendar-section{background:var(--surface-1);border:1px solid var(--border-color);box-shadow:var(--elevation-2);color:var(--text-color)}:root[data-theme=dark] .view-toggle{background:var(--surface-2)}:root[data-theme=dark] .view-toggle-btn{color:var(--text-secondary)}:root[data-theme=dark] .view-toggle-btn:hover{background:var(--button-hover-background);color:var(--text-color)}:root[data-theme=dark] .view-toggle-btn.active{background:var(--primary-color);color:#fff}:root[data-theme=dark] .recipe-section{background:var(--surface-1)}:root[data-theme=dark] .loading-spinner{border-color:var(--border-color);border-top-color:var(--success-color)}.bottom-sheet-backdrop{position:fixed;inset:0;background:#00000080;z-index:1000;display:flex;align-items:flex-end;justify-content:center;animation:backdropFadeIn .2s ease-out}@keyframes backdropFadeIn{0%{background:#0000}to{background:#00000080}}.bottom-sheet{background:var(--color-surface, #ffffff);border-radius:16px 16px 0 0;width:100%;max-width:480px;max-height:85vh;overflow:hidden;display:flex;flex-direction:column;animation:sheetSlideUp .3s cubic-bezier(.4,0,.2,1)}@keyframes sheetSlideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.bottom-sheet-handle{width:32px;height:4px;background:var(--color-outline-variant, #d0d0d0);border-radius:2px;margin:12px auto 8px;flex-shrink:0}.bottom-sheet-header{display:flex;align-items:center;justify-content:space-between;padding:0 16px 12px;border-bottom:1px solid var(--color-outline-variant, #e0e0e0)}.bottom-sheet-title{font-size:18px;font-weight:600;color:var(--color-on-surface, #1a1a1a);margin:0}.bottom-sheet-close{background:none;border:none;padding:8px;cursor:pointer;border-radius:50%;color:var(--color-on-surface-variant, #666);transition:background .2s}.bottom-sheet-close:hover{background:var(--color-surface-container, #f0f0f0)}.bottom-sheet-content{padding:8px 8px 24px;overflow-y:auto;flex:1}.bottom-sheet-option{display:flex;align-items:center;gap:16px;width:100%;padding:14px 12px;border:none;background:none;border-radius:12px;cursor:pointer;text-align:left;transition:background .2s}.bottom-sheet-option:hover:not(.disabled){background:var(--color-surface-container, #f5f5f5)}.bottom-sheet-option:active:not(.disabled){background:var(--color-surface-container-high, #e8e8e8)}.bottom-sheet-option.disabled{opacity:.5;cursor:not-allowed}.bottom-sheet-option.danger .bottom-sheet-option-title,.bottom-sheet-option.danger .bottom-sheet-option-icon{color:var(--color-error, #dc2626)}.bottom-sheet-option-icon{font-size:24px;width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:var(--color-surface-container, #f0f0f0);border-radius:10px;flex-shrink:0}.bottom-sheet-option-text{flex:1;min-width:0}.bottom-sheet-option-title{font-size:15px;font-weight:500;color:var(--color-on-surface, #1a1a1a)}.bottom-sheet-option-description{font-size:13px;color:var(--color-on-surface-variant, #666);margin-top:2px}.bottom-sheet-option-badge{font-size:11px;font-weight:600;padding:4px 10px;border-radius:12px;background:var(--color-surface-variant, #e0e0e0);color:var(--color-on-surface-variant, #666);white-space:nowrap}.bottom-sheet-divider{height:1px;background:var(--color-outline-variant, #e0e0e0);margin:8px 12px}:root[data-theme=dark] .bottom-sheet{background:var(--color-surface-container, #1e1e1e)}:root[data-theme=dark] .bottom-sheet-handle{background:var(--color-outline, #444)}:root[data-theme=dark] .bottom-sheet-header{border-bottom-color:var(--color-outline, #333)}:root[data-theme=dark] .bottom-sheet-option:hover:not(.disabled){background:var(--color-surface-container-high, #2a2a2a)}:root[data-theme=dark] .bottom-sheet-option-icon{background:var(--color-surface-variant, #2a2a2a)}:root[data-theme=dark] .bottom-sheet-divider{background:var(--color-outline, #333)}@supports (padding-bottom: env(safe-area-inset-bottom)){.bottom-sheet-content{padding-bottom:calc(24px + env(safe-area-inset-bottom))}}.selection-action-bar{position:fixed;bottom:var(--spacing-xl);left:50%;transform:translate(-50%);background:var(--color-inverse-surface);color:var(--color-inverse-on-surface);border-radius:var(--radius-2xl);box-shadow:var(--elevation-4);min-width:320px;max-width:500px;z-index:1001;animation:selectionBarEnter var(--motion-duration-long) var(--motion-easing-emphasized-decelerate)}@keyframes selectionBarEnter{0%{opacity:0;transform:translate(-50%) translateY(100%) scale(.8)}60%{opacity:1;transform:translate(-50%) translateY(-8px) scale(1.02)}to{opacity:1;transform:translate(-50%) translateY(0) scale(1)}}.selection-action-bar-content{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-md) var(--spacing-lg);gap:var(--spacing-md)}.selection-count{font-size:.9rem;font-weight:var(--font-weight-medium);white-space:nowrap;min-width:80px}.selection-actions{display:flex;gap:var(--spacing-xs);flex:1;justify-content:center}.selection-action-btn{display:flex;align-items:center;gap:var(--spacing-xs);background:transparent;border:1px solid rgba(255,255,255,.2);color:var(--color-inverse-on-surface);padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--radius-md);cursor:pointer;transition:all var(--motion-duration-short) var(--motion-easing-standard);min-height:40px}.selection-action-btn:hover{background:#ffffff1a}.selection-action-btn:active{transform:scale(.95)}.selection-action-btn.restore{color:var(--color-primary);border-color:var(--color-primary)}.selection-action-btn.complete{color:var(--color-success);border-color:var(--color-success)}.selection-action-btn.delete{color:var(--color-error);border-color:var(--color-error)}.action-icon{font-size:1rem}.action-label{font-size:.85rem;font-weight:var(--font-weight-medium)}.selection-done-btn{background:var(--color-primary);color:var(--color-on-primary);border:none;padding:var(--spacing-sm) var(--spacing-lg);border-radius:var(--radius-md);font-weight:var(--font-weight-medium);cursor:pointer;transition:all var(--motion-duration-short) var(--motion-easing-standard);min-height:40px}.selection-done-btn:hover{transform:translateY(-1px);box-shadow:var(--elevation-2)}@media(max-width:480px){.selection-action-bar{left:var(--spacing-sm);right:var(--spacing-sm);transform:none;max-width:none;min-width:auto}@keyframes selectionBarEnter{0%{opacity:0;transform:translateY(100%) scale(.8)}60%{opacity:1;transform:translateY(-8px) scale(1.02)}to{opacity:1;transform:translateY(0) scale(1)}}.action-label{display:none}.selection-action-btn{padding:var(--spacing-sm)}.selection-action-bar-content{padding:var(--spacing-sm) var(--spacing-md)}}@supports (padding-bottom: env(safe-area-inset-bottom)){.selection-action-bar{bottom:calc(var(--spacing-xl) + env(safe-area-inset-bottom))}}.subscription-settings{max-width:72rem;margin:0 auto;padding:var(--spacing-2xl) var(--spacing-lg)}.subscription-settings__header{margin-bottom:var(--spacing-2xl)}.subscription-settings__title{font-size:1.875rem;font-weight:var(--font-weight-semibold);color:var(--color-on-surface);margin-bottom:var(--spacing-sm)}.subscription-settings__subtitle{color:var(--color-on-surface-variant);margin-top:var(--spacing-sm)}.subscription-card{background:var(--color-surface);border-radius:var(--radius-xl);box-shadow:var(--elevation-1);border:1px solid var(--color-outline);padding:var(--spacing-xl);margin-bottom:var(--spacing-2xl);transition:box-shadow var(--motion-duration-medium) var(--motion-easing-standard)}.subscription-card:hover{box-shadow:var(--elevation-2)}.subscription-card__header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:var(--spacing-xl)}.subscription-card__title{font-size:1.25rem;font-weight:var(--font-weight-semibold);color:var(--color-on-surface)}.subscription-card__status{color:var(--color-on-surface-variant);margin-top:var(--spacing-xs)}.button-outlined{padding:.625rem 1.5rem;border:2px solid var(--color-outline-variant);border-radius:var(--radius-xl);background:var(--color-surface);color:var(--color-on-surface);font-size:.875rem;font-weight:var(--font-weight-medium);cursor:pointer;transition:all var(--motion-duration-short) var(--motion-easing-standard);box-shadow:var(--elevation-1)}.button-outlined:hover{background:var(--color-surface-variant);border-color:var(--color-outline);box-shadow:var(--elevation-2)}.button-outlined:active{transform:scale(.95)}.usage-progress{margin-bottom:var(--spacing-xl)}.usage-progress__label{display:flex;justify-content:space-between;font-size:.875rem;color:var(--color-on-surface-variant);margin-bottom:var(--spacing-sm)}.usage-progress__count{font-weight:var(--font-weight-medium)}.usage-progress__track{width:100%;background:var(--color-surface-container);border-radius:var(--radius-full);height:10px;overflow:hidden;box-shadow:inset 0 1px 2px #0000001a}.usage-progress__fill{height:100%;border-radius:var(--radius-full);transition:width var(--motion-duration-extra-long) var(--motion-easing-emphasized-decelerate)}.usage-progress__fill--success{background:linear-gradient(90deg,#10b981,#059669)}.usage-progress__fill--warning{background:linear-gradient(90deg,#f59e0b,#d97706)}.usage-progress__fill--error{background:linear-gradient(90deg,#ef4444,#dc2626)}.usage-progress__remaining{font-size:.75rem;color:var(--color-on-surface-variant);margin-top:var(--spacing-sm)}.billing-toggle{display:flex;justify-content:center;margin-bottom:var(--spacing-2xl)}.billing-toggle__container{display:inline-flex;background:var(--color-surface-container);border-radius:var(--radius-xl);padding:var(--spacing-xs);box-shadow:inset 0 1px 3px #0000001a}.billing-toggle__button{padding:.625rem 1.5rem;border-radius:var(--radius-lg);font-size:.875rem;font-weight:var(--font-weight-medium);cursor:pointer;transition:all var(--motion-duration-medium) var(--motion-easing-standard);border:none;background:transparent;color:var(--color-on-surface-variant);position:relative}.billing-toggle__button:hover{color:var(--color-on-surface)}.billing-toggle__button--active{background:var(--color-surface);color:var(--color-on-surface);box-shadow:var(--elevation-2)}.billing-toggle__badge{position:absolute;top:-.5rem;right:-.5rem;background:linear-gradient(135deg,#10b981,#059669);color:#fff;font-size:.75rem;padding:.125rem .5rem;border-radius:var(--radius-full);box-shadow:var(--elevation-1)}.pricing-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--spacing-xl);margin-bottom:var(--spacing-2xl)}.pricing-card{position:relative;border-radius:var(--radius-2xl);padding:var(--spacing-xl);transition:all var(--motion-duration-medium) var(--motion-easing-emphasized);background:var(--color-surface);border:2px solid var(--color-outline);box-shadow:var(--elevation-1)}.pricing-card:hover{box-shadow:var(--elevation-2);border-color:var(--color-outline-variant);transform:translateY(-2px)}.pricing-card--recommended{background:linear-gradient(135deg,#f3e8ff,#fff);border:2px solid #a855f7;box-shadow:var(--elevation-3),0 0 0 2px #a855f733}.pricing-card--recommended:hover{box-shadow:var(--elevation-4),0 0 0 2px #a855f733;transform:translateY(-4px)}.pricing-card--current{background:linear-gradient(135deg,#d1fae5,#fff);border:2px solid #10b981;box-shadow:var(--elevation-2),0 0 0 2px #10b98133}.pricing-card--current:hover{box-shadow:var(--elevation-3),0 0 0 2px #10b98133;transform:translateY(-2px)}.pricing-card__badge{position:absolute;top:-.75rem;left:50%;transform:translate(-50%);background:linear-gradient(135deg,#9333ea,#a855f7);color:#fff;font-size:.75rem;font-weight:var(--font-weight-semibold);padding:.375rem 1rem;border-radius:var(--radius-full);box-shadow:var(--elevation-3),0 0 16px #9333ea40}.pricing-card__header{text-align:center;margin-bottom:var(--spacing-xl)}.pricing-card__name{font-size:1.5rem;font-weight:var(--font-weight-semibold);color:var(--color-on-surface);margin-bottom:var(--spacing-sm)}.pricing-card__price-container{display:flex;align-items:baseline;justify-content:center;gap:.25rem}.pricing-card__price{font-size:2.5rem;font-weight:var(--font-weight-semibold)}.pricing-card__price-period{color:var(--color-on-surface-variant)}.pricing-card__savings{display:inline-flex;align-items:center;gap:.375rem;padding:.25rem .75rem;border-radius:var(--radius-full);background:#d1fae5;border:1px solid #10b981;margin-top:var(--spacing-sm)}.pricing-card__savings-text{font-size:.875rem;font-weight:var(--font-weight-semibold);color:#065f46}.features-list{list-style:none;padding:0;margin:0 0 var(--spacing-2xl) 0}.features-list__item{display:flex;align-items:flex-start;gap:var(--spacing-sm);font-size:.875rem;color:var(--color-on-surface);margin-bottom:var(--spacing-md)}.features-list__icon{color:#22c55e;margin-top:.125rem;flex-shrink:0}.button-cta{width:100%;padding:1rem 1.5rem;border-radius:var(--radius-xl);font-weight:var(--font-weight-semibold);color:#fff;border:none;cursor:pointer;transition:all var(--motion-duration-short) var(--motion-easing-standard);box-shadow:var(--elevation-2);font-size:1rem}.button-cta:hover{box-shadow:var(--elevation-3)}.button-cta:active{transform:scale(.98)}.button-cta--disabled{background:var(--color-surface-variant);color:var(--color-on-surface-variant);box-shadow:none;cursor:not-allowed;opacity:.5}.button-cta--primary{background:linear-gradient(135deg,#1f2937,#374151)}.button-cta--primary:hover{background:linear-gradient(135deg,#111827,#1f2937)}.button-cta--recommended{background:linear-gradient(135deg,#9333ea,#a855f7)}.button-cta--recommended:hover{background:linear-gradient(135deg,#7e22ce,#9333ea);box-shadow:var(--elevation-4),0 0 20px #9333ea40}.button-cta--outlined{background:transparent;color:var(--color-on-surface);border:2px solid var(--color-outline);box-shadow:none}.button-cta--outlined:hover{background:var(--color-surface-variant);border-color:#f59e0b;color:#78350f;box-shadow:var(--elevation-1)}.subscription-banner{position:fixed;bottom:1rem;left:1rem;right:1rem;z-index:1000;background:linear-gradient(135deg,#d97706,#f59e0b);color:#fff;border-radius:var(--radius-2xl);box-shadow:var(--elevation-4);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transition:all var(--motion-duration-medium) var(--motion-easing-emphasized)}.subscription-banner:hover{box-shadow:var(--elevation-5)}.subscription-banner--blocked{background:linear-gradient(135deg,#dc2626,#ef4444)}.subscription-banner__content{padding:var(--spacing-lg)}.subscription-banner__main{display:flex;align-items:flex-start;gap:var(--spacing-md);margin-bottom:var(--spacing-md)}.subscription-banner__message{flex:1;min-width:0}.subscription-banner__title{font-weight:var(--font-weight-semibold);font-size:.875rem;margin-bottom:.25rem}.subscription-banner__description{font-size:.75rem;opacity:.95}.subscription-banner__button{padding:.5rem 1rem;border-radius:var(--radius-xl);font-weight:var(--font-weight-medium);font-size:.875rem;flex-shrink:0;background:#fff;color:#1f2937;border:none;cursor:pointer;box-shadow:var(--elevation-2);transition:all var(--motion-duration-short) var(--motion-easing-standard)}.subscription-banner__button:hover{background:#f9fafb;box-shadow:var(--elevation-3)}.subscription-banner__button:active{transform:scale(.95)}.subscription-banner__pricing{padding-top:var(--spacing-md);border-top:1px solid rgba(255,255,255,.2);font-size:.75rem;opacity:.9}.subscription-banner__pricing>div{margin-bottom:.25rem}.subscription-banner__pricing>div:last-child{margin-bottom:0}.support-message{background:linear-gradient(135deg,#dbeafe,#eff6ff);border:1px solid #3b82f6;border-radius:var(--radius-xl);padding:var(--spacing-xl);text-align:center;box-shadow:var(--elevation-1)}.support-message__text{color:var(--color-on-surface);line-height:1.6}.support-message__emphasis{font-weight:var(--font-weight-medium)}:root[data-theme=dark] .support-message{background:linear-gradient(135deg,#1e3a5f,#0f2741);border:1px solid #3b82f6}:root[data-theme=dark] .support-message__text{color:#e0f2fe}@media(min-width:768px){.subscription-banner{left:auto;right:1rem;max-width:28rem}}@media(max-width:640px){.subscription-settings{padding:var(--spacing-lg) var(--spacing-md)}.subscription-card{padding:var(--spacing-lg)}.subscription-card__header{flex-direction:column;gap:var(--spacing-md)}.pricing-cards{grid-template-columns:1fr}}.upgrade-modal-overlay{position:fixed;inset:0;background-color:#0009;display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px}.upgrade-modal{background:#fff;border-radius:12px;max-width:600px;width:100%;max-height:90vh;overflow-y:auto;position:relative;box-shadow:0 20px 60px #0000004d;animation:upgrade-modal-appear .3s ease-out}@keyframes upgrade-modal-appear{0%{opacity:0;transform:scale(.9) translateY(20px)}to{opacity:1;transform:scale(1) translateY(0)}}.upgrade-modal-close{position:absolute;top:16px;right:16px;background:none;border:none;font-size:24px;cursor:pointer;color:#666;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:all .2s}.upgrade-modal-close:hover{background-color:#f0f0f0;color:#333}.upgrade-modal-content{padding:40px 32px;text-align:center}.upgrade-modal-icon{font-size:48px;margin-bottom:16px}.upgrade-modal-title{font-size:28px;font-weight:600;margin:0 0 8px;color:#1a1a1a}.upgrade-modal-subtitle{font-size:16px;color:#666;margin:0 0 24px;line-height:1.5}.upgrade-modal-benefits{background-color:#f8f9fa;border-radius:8px;padding:20px;margin-bottom:24px;text-align:left}.upgrade-modal-benefits h3{font-size:16px;font-weight:600;margin:0 0 12px;color:#1a1a1a}.upgrade-modal-benefits ul{list-style:none;padding:0;margin:0}.upgrade-modal-benefits li{font-size:15px;color:#333;margin-bottom:8px;line-height:1.5}.upgrade-modal-divider{height:1px;background:linear-gradient(to right,transparent,#e0e0e0,transparent);margin:24px 0}.upgrade-modal-plans{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:32px}.upgrade-plan{border:2px solid #e0e0e0;border-radius:8px;padding:20px 16px;text-align:left;transition:all .2s;position:relative}.upgrade-plan:hover{border-color:#4caf50;box-shadow:0 4px 12px #4caf5026}.upgrade-plan-popular{border-color:#4caf50;background:linear-gradient(to bottom,#f1f8f4,#fff)}.upgrade-plan-badge{position:absolute;top:-10px;left:50%;transform:translate(-50%);background:#4caf50;color:#fff;padding:4px 12px;border-radius:12px;font-size:12px;font-weight:600}.upgrade-plan h4{font-size:18px;font-weight:600;margin:0 0 8px;color:#1a1a1a}.upgrade-plan-price{font-size:24px;font-weight:700;color:#4caf50;margin-bottom:12px}.upgrade-plan-features{list-style:none;padding:0;margin:0}.upgrade-plan-features li{font-size:14px;color:#666;margin-bottom:6px;padding-left:20px;position:relative}.upgrade-plan-features li:before{content:"•";position:absolute;left:0;color:#4caf50;font-weight:700}.upgrade-modal-actions{display:flex;gap:12px;justify-content:center}.upgrade-modal-btn-secondary,.upgrade-modal-btn-primary{padding:12px 32px;border-radius:8px;font-size:16px;font-weight:600;cursor:pointer;transition:all .2s;border:none}.upgrade-modal-btn-secondary{background:#fff;color:#666;border:2px solid #e0e0e0}.upgrade-modal-btn-secondary:hover{background:#f5f5f5;border-color:#ccc}.upgrade-modal-btn-primary{background:linear-gradient(135deg,#4caf50,#45a049);color:#fff;box-shadow:0 4px 12px #4caf504d}.upgrade-modal-btn-primary:hover{background:linear-gradient(135deg,#45a049,#3d8b40);box-shadow:0 6px 16px #4caf5066;transform:translateY(-1px)}@media(max-width:600px){.upgrade-modal-content{padding:32px 24px}.upgrade-modal-title{font-size:24px}.upgrade-modal-plans{grid-template-columns:1fr}.upgrade-modal-actions{flex-direction:column}.upgrade-modal-btn-secondary,.upgrade-modal-btn-primary{width:100%}}.sync-status-badge{display:inline-flex;align-items:center;gap:8px;padding:8px 16px;background:#ffffffeb;border:1px solid rgba(255,255,255,.5);border-radius:20px;cursor:pointer;transition:all .2s;position:relative;font-size:14px;-webkit-user-select:none;user-select:none;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.sync-status-badge:hover{background:#fff;border-color:#4caf50;box-shadow:0 2px 8px #4caf5040}.sync-status-badge.locked{border-color:#ff9800b3;background:#fff3e0eb}.sync-status-badge.locked:hover{border-color:#ff9800;box-shadow:0 2px 8px #ff98004d}.sync-status-badge.syncing{border-color:#2196f3b3;animation:badge-pulse 1.5s ease-in-out infinite}@keyframes badge-pulse{0%,to{opacity:1;box-shadow:0 0 #2196f366}50%{opacity:.85;box-shadow:0 0 0 4px #2196f300}}.sync-status-badge.paused{border-color:#ff9800b3;background:#fff8e1eb}.sync-status-badge.paused:hover{border-color:#f57c00;box-shadow:0 2px 8px #ff98004d}.sync-status-badge.paused .sync-status-text{color:#e65100}.sync-status-badge.sync-disabled{border-color:#9e9e9e80;background:#f5f5f5e0}.sync-status-badge.sync-disabled:hover{border-color:#757575;box-shadow:0 2px 8px #0000001a}.sync-status-badge.sync-disabled .sync-status-text{color:#616161}.sync-status-icon{font-size:16px;display:inline-block}.sync-status-icon.syncing{animation:sync-spin 1s linear infinite}@keyframes sync-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.sync-status-icon:not(.syncing){animation:sync-icon-pulse 2s infinite}@keyframes sync-icon-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.1)}}.sync-status-text{font-weight:500;color:#333}.sync-status-badge.locked .sync-status-text{color:#e65100}.sync-tooltip{position:absolute;top:calc(100% + 10px);right:0;background:#0f172af2;color:#fff;padding:12px 16px;border-radius:8px;white-space:nowrap;z-index:1000;box-shadow:0 4px 16px #0000004d;animation:panel-appear .2s ease-out}.sync-tooltip:before{content:"";position:absolute;bottom:100%;right:18px;border:6px solid transparent;border-bottom-color:#0f172af2}@keyframes panel-appear{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.sync-tooltip-content{text-align:left}.sync-tooltip-content strong{display:block;font-size:14px;margin-bottom:6px;color:#fff}.sync-tooltip-content p{margin:4px 0;font-size:13px;color:#ffffffe6}.sync-tooltip-content small{display:block;margin-top:8px;font-size:11px;color:#fff9;font-style:italic}.sync-settings-dropdown{position:absolute;top:calc(100% + 8px);right:0;background:#fff;border:1px solid #e2e8f0;border-radius:12px;box-shadow:0 4px 20px #0000001f;z-index:1000;min-width:190px;padding:8px;animation:panel-appear .15s ease-out}.sync-settings-title{font-size:11px;font-weight:600;color:#9e9e9e;text-transform:uppercase;letter-spacing:.5px;padding:4px 8px 8px}.sync-settings-option{display:flex;align-items:center;justify-content:space-between;width:100%;padding:8px 12px;border:none;background:none;cursor:pointer;border-radius:8px;font-size:14px;text-align:left;color:#333;transition:background .15s;gap:8px}.sync-settings-option:hover{background:#f5f5f5}.sync-settings-option.selected{background:#e8f5e9;color:#2e7d32;font-weight:500}.sync-settings-queue-count{font-size:11px;color:#e65100;background:#fff3e0;border-radius:10px;padding:2px 7px;font-weight:500;white-space:nowrap}:root[data-theme=dark] .sync-status-badge{background:#ffffff1a;border-color:#ffffff2e;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}:root[data-theme=dark] .sync-status-badge:hover{background:#ffffff29;border-color:#4ade80;box-shadow:0 2px 8px #4ade8033}:root[data-theme=dark] .sync-status-text{color:#e2e8f0}:root[data-theme=dark] .sync-status-badge.locked{background:#7c2d1259;border-color:#fb923c}:root[data-theme=dark] .sync-status-badge.locked:hover{box-shadow:0 2px 8px #fb923c40}:root[data-theme=dark] .sync-status-badge.locked .sync-status-text{color:#fed7aa}:root[data-theme=dark] .sync-status-badge.syncing{border-color:#60a5fa}:root[data-theme=dark] .sync-status-badge.paused{background:#78350f59;border-color:#fbbf24}:root[data-theme=dark] .sync-status-badge.paused:hover{box-shadow:0 2px 8px #fbbf2433}:root[data-theme=dark] .sync-status-badge.paused .sync-status-text{color:#fde68a}:root[data-theme=dark] .sync-status-badge.sync-disabled{background:#1e293b99;border-color:#475569}:root[data-theme=dark] .sync-status-badge.sync-disabled:hover{background:#334155b3;border-color:#64748b;box-shadow:none}:root[data-theme=dark] .sync-status-badge.sync-disabled .sync-status-text{color:#94a3b8}:root[data-theme=dark] .sync-settings-dropdown{background:#1e293b;border-color:#334155;box-shadow:0 4px 20px #00000080}:root[data-theme=dark] .sync-settings-title{color:#64748b}:root[data-theme=dark] .sync-settings-option{color:#e2e8f0}:root[data-theme=dark] .sync-settings-option:hover{background:#334155}:root[data-theme=dark] .sync-settings-option.selected{background:#14532d;color:#4ade80}:root[data-theme=dark] .sync-settings-queue-count{background:#f59e0b33;color:#fbbf24}@media(max-width:768px){.sync-status-badge{padding:6px 12px;font-size:13px}.sync-status-icon{font-size:14px}.sync-tooltip,.sync-settings-dropdown{max-width:240px;white-space:normal}}.data-status-badge{display:flex;align-items:center;gap:4px;padding:4px 8px;border-radius:12px;background-color:var(--md-sys-color-surface-container);font-size:11px;color:var(--md-sys-color-on-surface-variant);cursor:default;position:relative;-webkit-user-select:none;user-select:none;transition:background-color .2s ease}.data-status-badge:hover{background-color:var(--md-sys-color-surface-container-high)}.data-status-badge.offline{background-color:var(--md-sys-color-error-container);color:var(--md-sys-color-on-error-container)}.data-status-icon{font-size:12px;line-height:1}.data-status-text{font-weight:500;white-space:nowrap}.data-status-tooltip{position:absolute;top:calc(100% + 8px);right:0;min-width:200px;max-width:280px;padding:12px;background-color:var(--md-sys-color-inverse-surface);color:var(--md-sys-color-inverse-on-surface);border-radius:8px;box-shadow:var(--md-elevation-2);z-index:1000;animation:tooltip-fade-in .15s ease}.data-status-tooltip:before{content:"";position:absolute;top:-6px;right:16px;width:12px;height:12px;background-color:var(--md-sys-color-inverse-surface);transform:rotate(45deg)}.data-status-tooltip-content strong{display:block;font-size:13px;margin-bottom:6px}.data-status-tooltip-content p{font-size:12px;margin:0 0 4px;opacity:.9;line-height:1.4}.data-status-tooltip-content p:last-child{margin-bottom:0}@keyframes tooltip-fade-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@media(max-width:480px){.data-status-text{display:none}.data-status-badge{padding:4px 6px}.data-status-tooltip{right:-40px}.data-status-tooltip:before{right:56px}}
