:root{--color-primary:#6b9a78;--color-primary-dark:#4d7860;--color-primary-light:#7dac8a;--color-primary-bg:#e8efe4;--color-cream:#f2ede0;--color-cream-dark:#eee8d5;--color-bg:#f8f5ee;--color-surface:#fff;--color-surface-raised:#f8f5ee;--color-surface-overlay:#2a2a2a7a;--color-text:#2a2a2a;--color-text-secondary:#5a5a5a;--color-text-inverse:#fff;--color-text-muted:#737373;--color-success:#4a9a6b;--color-warning:#c4893a;--color-error:#b85c4a;--color-info:#4d7860;--color-accent:var(--color-primary);--color-border:#eee8d5;--color-timer-running:var(--color-primary);--color-timer-done:var(--color-warning);--color-timer-overdue:var(--color-error);--color-grocery-needed:var(--color-text);--color-grocery-checked:var(--color-text-muted);--color-grocery-on-hand:var(--color-primary);--color-admin-warning-bg:#fef3c7;--color-admin-warning-border:#fcd34d;--color-admin-warning-text:#78350f;--color-admin-warning-text-hover:#92400e;--color-tier-pro-bg:#dbeafe;--color-tier-pro-text:#1d4ed8;--color-tier-family-bg:#ede9fe;--color-tier-family-text:#6d28d9;--font-sans:"DM Sans", "Inter", system-ui, -apple-system, sans-serif;--font-serif:"DM Serif Display", Georgia, serif;--font-mono:"DM Mono", "Fira Code", monospace;--text-2xs:.7rem;--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-lg:1.125rem;--text-xl:1.25rem;--text-2xl:1.5rem;--text-3xl:1.875rem;--text-4xl:2.25rem;--text-5xl:3rem;--text-cook:1.375rem;--space-1:.25rem;--space-1-5:.375rem;--space-2:.5rem;--space-2-5:.625rem;--space-3:.75rem;--space-3-5:.875rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-7:1.75rem;--space-8:2rem;--space-10:2.5rem;--space-12:3rem;--space-16:4rem;--radius-sm:.25rem;--radius:.5rem;--radius-md:.625rem;--radius-lg:.75rem;--radius-xl:1rem;--radius-2xl:1.5rem;--radius-full:9999px;--shadow:0 1px 2px #2a2a2a0f;--shadow-md:0 4px 12px #2a2a2a14;--shadow-lg:0 8px 24px #2a2a2a1a;--shadow-xl:0 16px 40px #2a2a2a1f;--shadow-brand:0 4px 16px #4d78603d;--gradient-brand:radial-gradient(ellipse at 50% 28%, #7dac8a 0%, #4d7860 100%);--gradient-card:linear-gradient(180deg, #fff 0%, #f8f5ee 100%);--color-success-bg:#d1fae5;--color-success-text:#065f46;--color-success-border:#a7f3d0;--color-chart-calories:#e07a3b;--color-chart-protein:#6b9a78;--color-chart-carbs:#c8a96e;--color-chart-fat:#d4607a;--color-chart-fiber:#7ba3b8;--color-progress-on-track:#5dae72;--color-progress-warning:#e8b84b;--color-progress-over:#e07a5f;--color-progress-track-bg:var(--color-border);--color-activity-cooked:#e67e22;--color-activity-planned:#3498db;--color-activity-shopped:#27ae60;--color-activity-added:#9b59b6;--color-activity-achievement:#f1c40f;--color-activity-favorited:#e74c3c;--color-activity-reviewed:#f39c12;--color-activity-shared:#1abc9c;--color-activity-morphed:#8e44ad;--color-activity-default:#95a5a6;--color-overlay-dark:#0000008c;--color-overlay-strong:#000000bf;--color-overlay-subtle:#0000000f;--color-overlay-white-low:#ffffff26;--color-overlay-white-mid:#fff3;--color-overlay-white-high:#ffffff59;--color-accent-bg:color-mix(in srgb, var(--color-accent) 10%, var(--color-surface));--color-streak:#f59e0b;--color-streak-bg:#f59e0b1f;--duration-fast:.15s;--duration-base:.2s;--duration-slow:.3s;--size-touch:2.75rem;--nav-height:64px;--header-height:56px;--footer-height:36px;--nav-bottom-clearance:calc(var(--nav-height) + max(.5rem, env(safe-area-inset-bottom)))}[data-theme=dark]{--color-primary:#8bb89a;--color-primary-dark:#6b9a78;--color-primary-light:#a3ceaf;--color-primary-bg:#1e2e1e;--color-cream:#263226;--color-cream-dark:#2d382d;--color-bg:#181d18;--color-surface:#1f261f;--color-surface-raised:#263226;--color-surface-overlay:#080c088c;--color-text:#f0f5f0;--color-text-secondary:#b8c8b8;--color-text-muted:#8aa08a;--color-border:#354535;--color-accent:var(--color-primary);--color-success:#5eb882;--color-warning:#dba856;--color-error:#d98b78;--color-info:#8bb89a;--color-admin-warning-bg:#3b2600;--color-admin-warning-border:#7a5400;--color-admin-warning-text:#fbbf24;--color-admin-warning-text-hover:#fcd34d;--color-tier-pro-bg:#1e3a5f;--color-tier-pro-text:#93c5fd;--color-tier-family-bg:#2e1065;--color-tier-family-text:#c4b5fd;--color-success-bg:#0a3d2e;--color-success-text:#6ee7b7;--color-success-border:#065f46;--color-chart-protein:#8bb89a;--color-progress-on-track:#6bbf80;--color-progress-warning:#dba856;--color-progress-over:#d98b78;--shadow:0 1px 3px #00000040;--shadow-md:0 4px 12px #0000004d;--shadow-lg:0 8px 24px #00000047;--shadow-xl:0 16px 40px #00000059;--shadow-brand:0 4px 16px #6b9a7833;--gradient-card:linear-gradient(180deg, #1f261f 0%, #181d18 100%);--gradient-brand:radial-gradient(ellipse at 50% 28%, #2e4a38 0%, #1a2e22 100%);--color-accent-bg:color-mix(in srgb, var(--color-accent) 18%, var(--color-surface));--color-streak-bg:#f59e0b26}[data-high-contrast=true]{--color-text:#000;--color-text-secondary:#1a1a1a;--color-text-muted:#333;--color-bg:#fff;--color-surface:#fff;--color-surface-raised:#f0f0f0;--color-border:#000;--color-primary:#005a2e;--color-primary-dark:#003d1e;--color-primary-light:#007a3e;--color-primary-bg:#d4edda;--color-error:#8b0000;--color-warning:#8b4513;--color-accent:#8b4513;--shadow:0 0 0 1px #000;--shadow-md:0 0 0 1px #000}[data-high-contrast=true][data-theme=dark]{--color-text:#fff;--color-text-secondary:#e0e0e0;--color-text-muted:#ccc;--color-bg:#000;--color-surface:#0a0a0a;--color-surface-raised:#1a1a1a;--color-border:#fff;--color-primary:#7fd89e;--color-primary-dark:#5fc87e;--color-primary-light:#a0f0b0;--color-primary-bg:#0d2818;--color-error:#ff6b6b;--color-warning:#ffb347;--color-accent:#ffb347}@media (forced-colors:active){:root{--color-primary:LinkText;--color-border:ButtonBorder;--color-text:CanvasText;--color-bg:Canvas;--color-surface:Canvas;--color-error:LinkText}:focus-visible{outline-offset:2px;outline:2px solid highlight!important}.offline-banner{border:1px solid canvastext}}:root{--a11y-font-scale:1}html{font-size:calc(16px * var(--a11y-font-scale,1))}html.reduce-motion *,html.reduce-motion :before,html.reduce-motion :after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}@keyframes slideDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}@keyframes timer-pulse{0%{opacity:1}to{opacity:.4}}@keyframes toastSlideIn{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes toastFadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.route-fade-in{animation:.2s ease-out fadeIn}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes overflowFadeIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@keyframes routeProgress{0%{opacity:1;transform:scaleX(0)}70%{opacity:1;transform:scaleX(1)}to{opacity:0;transform:scaleX(1)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes scalePop{0%{transform:scale(1)}40%{transform:scale(.94)}70%{transform:scale(1.06)}to{transform:scale(1)}}@keyframes checkBounce{0%{opacity:0;transform:scale(0)rotate(-10deg)}60%{opacity:1;transform:scale(1.25)rotate(3deg)}80%{transform:scale(.9)rotate(-1deg)}to{opacity:1;transform:scale(1)rotate(0)}}@keyframes progressFill{0%{width:0}to{width:var(--progress-width,100%)}}@keyframes celebrationFadeIn{0%{opacity:0;transform:translateY(12px)scale(.95)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes cookStepIn{0%{opacity:0;transform:translate(18px)}to{opacity:1;transform:translate(0)}}@keyframes streakPulse{0%,to{box-shadow:0 0 0 0 rgba(var(--color-warning-rgb,245, 158, 11), .35)}50%{box-shadow:0 0 0 6px rgba(var(--color-warning-rgb,245, 158, 11), 0)}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}*{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;font-size:16px}body{font-family:var(--font-sans);background:var(--color-bg);color:var(--color-text);-webkit-tap-highlight-color:transparent;line-height:1.6;overflow-x:hidden}button,a,[role=button],input[type=checkbox],input[type=radio]{min-width:36px;min-height:36px}@supports (padding-bottom:env(safe-area-inset-bottom)){.bottom-nav{padding-bottom:env(safe-area-inset-bottom)}}[data-theme=dark] img{opacity:.92}[data-theme=dark] input,[data-theme=dark] textarea,[data-theme=dark] select{background:var(--color-surface);color:var(--color-text);border-color:var(--color-border)}:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}button:focus-visible,a:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px;border-radius:2px}.app-layout{flex-direction:column;min-height:100dvh;display:flex}.app-header{z-index:10;background:var(--color-primary);color:var(--color-text-inverse);padding:0 var(--space-4);height:var(--header-height);box-shadow:var(--shadow-md);align-items:center;display:flex;position:sticky;top:0}.app-header h1{letter-spacing:-.01em;font-size:1.2rem;font-weight:600}.app-header{justify-content:space-between}.app-main{padding:16px;padding-bottom:calc(var(--nav-bottom-clearance) + var(--footer-height) + 16px);flex:1;width:100%;max-width:960px;margin:0 auto;animation:.18s fadeIn}.app-layout--v2 .app-main{padding-bottom:calc(72px + max(.5rem, env(safe-area-inset-bottom)) + 16px)}.app-footer{bottom:var(--nav-bottom-clearance);z-index:9;height:var(--footer-height);background:var(--color-cream-dark);border-top:1px solid var(--color-border);justify-content:center;align-items:center;display:flex;position:fixed;left:0;right:0}.app-footer-text{font-family:var(--font-serif);color:var(--color-text-secondary);letter-spacing:.04em;font-size:.72rem}.app-nav{z-index:10;background:var(--color-surface);border-top:1px solid var(--color-border);padding:var(--space-2) var(--space-2) 0;padding-bottom:max(var(--space-2), env(safe-area-inset-bottom));min-height:var(--nav-height);justify-content:space-around;display:flex;position:fixed;bottom:0;left:0;right:0}.nav-link{color:var(--color-text-secondary);border-radius:var(--radius-sm);flex-direction:column;flex:1;align-items:center;gap:2px;min-width:0;padding:8px 4px;font-size:.7rem;font-weight:500;text-decoration:none;transition:color .15s;display:flex}.nav-link.active{color:var(--color-primary)}.nav-link svg{width:24px;height:24px}.header-title-link{color:inherit;align-items:center;text-decoration:none;display:flex}.header-logo{width:auto;height:32px}.header-actions{align-items:center;gap:8px;margin-left:auto;display:flex}.header-theme-toggle{color:var(--color-text-inverse);cursor:pointer;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;padding:6px;transition:background .15s;display:flex}.header-theme-toggle:hover{background:var(--color-overlay-white-low)}.header-settings{color:var(--color-text-inverse);opacity:.8;align-items:center;padding:4px;transition:opacity .15s;display:flex}.header-settings:hover{opacity:1}@media (width>=1024px){.app-main{max-width:1200px;padding:24px 32px 24px 96px;padding-bottom:calc(var(--footer-height) + 24px)}.app-footer{bottom:0;left:64px}.ai-fab-trigger{bottom:calc(var(--footer-height) + 16px)!important}}@media (width>=1280px){.app-main{max-width:1400px;padding:28px 48px 28px 112px;padding-bottom:calc(var(--footer-height) + 28px)}}.header-back-btn{color:var(--color-text-inverse);cursor:pointer;background:0 0;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;min-width:40px;min-height:40px;margin-left:-8px;margin-right:4px;padding:8px;transition:background .15s;display:flex}.header-back-btn:hover{background:var(--color-overlay-white-low)}.breadcrumbs{margin-bottom:12px}.breadcrumbs-list{flex-wrap:wrap;align-items:center;gap:2px;margin:0;padding:0;list-style:none;display:flex}.breadcrumbs-item{font-size:var(--text-sm,.875rem);align-items:center;gap:2px;line-height:1.4;display:flex}.breadcrumbs-link{color:var(--color-primary);border-radius:var(--radius-sm,4px);white-space:nowrap;padding:4px 2px;font-weight:500;text-decoration:none;transition:color .15s,background .15s}.breadcrumbs-link:hover{color:var(--color-primary-dark);text-decoration:underline}.breadcrumbs-separator{color:var(--color-text-muted);flex-shrink:0}.breadcrumbs-current{color:var(--color-text-secondary);white-space:nowrap;text-overflow:ellipsis;max-width:200px;padding:4px 2px;font-weight:500;overflow:hidden}.breadcrumbs--compact .breadcrumbs-back-link{color:var(--color-primary);font-size:var(--text-sm,.875rem);cursor:pointer;background:0 0;border:none;align-items:center;gap:2px;padding:6px 0;font-weight:500;text-decoration:none;transition:color .15s;display:inline-flex}.breadcrumbs--compact .breadcrumbs-back-link:hover{color:var(--color-primary-dark)}.pull-to-refresh-indicator{justify-content:center;align-items:center;transition:height .2s;display:flex;overflow:hidden}.pull-to-refresh-indicator svg{color:var(--color-primary);transition:transform .2s,opacity .2s}.pull-to-refresh-indicator--pulling svg{opacity:.6}.pull-to-refresh-indicator--threshold svg{opacity:1;transform:rotate(180deg)}.pull-to-refresh-indicator--refreshing svg{animation:.8s linear infinite ptr-spin}@keyframes ptr-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.btn-primary{background:var(--color-primary);color:var(--color-text-inverse);padding:var(--space-3) var(--space-6);border-radius:var(--radius);font-family:var(--font-sans);font-size:var(--text-base);cursor:pointer;box-shadow:var(--shadow-brand);transition:background var(--duration-fast) ease, transform .1s ease;border:none;font-weight:500}.btn-primary:hover:not(:disabled){background:var(--color-primary-dark);transform:translateY(-1px)}.btn-primary:active:not(:disabled){transform:translateY(0)}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.btn-primary:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.btn-large{padding:var(--space-4) var(--space-8);font-size:var(--text-lg)}.btn-secondary{color:var(--color-primary);border:1.5px solid var(--color-primary);padding:var(--space-3) var(--space-6);border-radius:var(--radius);font-family:var(--font-sans);font-size:var(--text-base);cursor:pointer;transition:background var(--duration-fast) ease;background:0 0;font-weight:500}.btn-secondary:hover{background:var(--color-cream)}.btn-secondary:active{background:var(--color-cream-dark)}.btn-secondary:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}[data-theme=dark] .btn-secondary{background:var(--color-surface);border-color:var(--color-border);color:var(--color-text)}[data-theme=dark] .btn-secondary:hover{background:var(--color-surface-raised)}.btn-sm{padding:var(--space-2) var(--space-4);font-size:var(--text-sm)}.btn-text{color:var(--color-primary);font-size:var(--text-sm);cursor:pointer;padding:var(--space-1) 0;background:0 0;border:none;font-weight:500}.btn-text:hover{text-decoration:underline}.btn-text:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px;border-radius:2px}.btn-reset{font-size:var(--text-xs);color:var(--color-accent)}.btn-danger{background:var(--color-error);color:var(--color-text-inverse);padding:var(--space-3) var(--space-5);border-radius:var(--radius);font-size:var(--text-base);cursor:pointer;transition:background var(--duration-fast) ease, transform .1s ease;border:none;font-weight:600}.btn-danger:hover{opacity:.9}.btn-danger:active{opacity:.85;transform:translateY(1px)}.btn-danger:focus-visible{outline:2px solid var(--color-error);outline-offset:2px}.btn-icon{cursor:pointer;padding:var(--space-3);color:var(--color-primary);min-width:var(--size-touch);min-height:var(--size-touch);background:0 0;border:none;justify-content:center;align-items:center;display:flex}.btn-icon:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px;border-radius:var(--radius-sm)}.btn-icon-danger{color:var(--color-text-muted);padding:var(--space-3);min-width:var(--size-touch);min-height:var(--size-touch);cursor:pointer;border-radius:var(--radius-sm);transition:color var(--duration-fast), background-color var(--duration-fast);background:0 0;border:none;justify-content:center;align-items:center;display:flex}.btn-icon-danger:hover{color:var(--color-error);background:var(--color-accent-bg)}.btn-text.btn-danger{color:var(--color-error);padding:var(--space-1) 0;background:0 0;border:none}.btn-recommend{width:100%;padding:var(--space-2-5)}.btn-favorite-toggle{min-width:var(--size-touch);min-height:var(--size-touch);border:1.5px solid var(--color-border);border-radius:var(--radius-full);background:var(--color-surface);color:var(--color-text-secondary);cursor:pointer;transition:border-color var(--duration-fast), color var(--duration-fast), background-color var(--duration-fast);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.btn-favorite-toggle:hover{border-color:var(--color-primary-light);color:var(--color-primary)}.btn-favorite-toggle.active{background:var(--color-primary-bg);border-color:var(--color-primary);color:var(--color-primary)}.btn-favorite-toggle:disabled{opacity:.4;cursor:not-allowed}.btn-filter-toggle{align-items:center;gap:var(--space-1-5);padding:var(--space-1-5) var(--space-3-5);border:1.5px solid var(--color-border);border-radius:var(--radius-full);background:var(--color-surface);color:var(--color-text-secondary);font-size:var(--text-sm);cursor:pointer;transition:border-color var(--duration-fast), color var(--duration-fast), background-color var(--duration-fast);font-weight:500;display:inline-flex}.btn-filter-toggle:hover{border-color:var(--color-primary-light);color:var(--color-primary)}.btn-filter-toggle.active{background:var(--color-primary-bg);border-color:var(--color-primary);color:var(--color-primary)}.category-badge{color:var(--color-text-inverse);font-size:var(--text-2xs);padding:2px var(--space-2);border-radius:var(--radius-lg);text-transform:uppercase;letter-spacing:.03em;white-space:nowrap;font-weight:600;display:inline-block}[data-theme=dark] .category-badge{opacity:.9}.meal-tag{background:var(--color-primary-bg);color:var(--color-primary);font-size:var(--text-xs);padding:3px var(--space-2-5);border-radius:var(--radius-lg);font-weight:500}.difficulty-badge{font-size:var(--text-2xs);padding:2px var(--space-2);border-radius:var(--radius-md);letter-spacing:.02em;white-space:nowrap;align-items:center;font-weight:600;display:inline-flex}.difficulty-easy{background:color-mix(in srgb, var(--color-success) 12%, var(--color-surface));color:var(--color-success)}.difficulty-medium{background:color-mix(in srgb, var(--color-warning) 10%, var(--color-surface));color:var(--color-warning)}.difficulty-hard{background:color-mix(in srgb, var(--color-error) 10%, var(--color-surface));color:var(--color-error)}[data-theme=dark] .difficulty-easy{background:color-mix(in srgb, var(--color-success) 15%, var(--color-surface));color:var(--color-success)}[data-theme=dark] .difficulty-medium{background:color-mix(in srgb, var(--color-warning) 15%, var(--color-surface));color:var(--color-warning)}[data-theme=dark] .difficulty-hard{background:color-mix(in srgb, var(--color-error) 15%, var(--color-surface));color:var(--color-error)}.filter-pill.difficulty-easy.active{background:var(--color-success);color:var(--color-text-inverse);border-color:var(--color-success)}.filter-pill.difficulty-medium.active{background:var(--color-warning);color:var(--color-text-inverse);border-color:var(--color-warning)}.filter-pill.difficulty-hard.active{background:var(--color-error);color:var(--color-text-inverse);border-color:var(--color-error)}.dietary-tag,.detail-tag{padding:3px var(--space-2-5);border-radius:var(--radius-lg);font-size:var(--text-xs);font-weight:500;display:inline-block}.method-tag{background:color-mix(in srgb, var(--color-info) 10%, var(--color-surface));color:var(--color-info)}.occasion-tag{background:color-mix(in srgb, var(--color-warning) 12%, var(--color-surface));color:var(--color-warning)}.filter-badge{min-width:20px;height:20px;padding:0 var(--space-1-5);border-radius:var(--radius-md);background:var(--color-accent);color:var(--color-text-inverse);font-size:var(--text-2xs);margin-left:var(--space-1-5);vertical-align:middle;justify-content:center;align-items:center;font-weight:700;display:inline-flex}.candidate-grid{grid-template-columns:1fr;gap:12px;display:grid}@media (width>=768px){.candidate-grid{grid-template-columns:repeat(2,1fr)}}@media (width>=1024px){.candidate-grid{grid-template-columns:repeat(3,1fr)}}.candidate-card{background:var(--color-surface);border:2px solid var(--color-border);border-radius:var(--radius);cursor:pointer;-webkit-tap-highlight-color:transparent;transition:border-color .15s,box-shadow .15s;overflow:hidden}.candidate-card:hover{border-color:var(--color-primary-light)}.candidate-card.selected{border-color:var(--color-primary);box-shadow:0 0 0 1px var(--color-primary)}[data-theme=dark] .candidate-card{background:var(--color-surface)}.card-image{aspect-ratio:16/10;background:var(--color-cream);width:100%;position:relative;overflow:hidden}.card-image img{object-fit:cover;width:100%;height:100%}.card-image-placeholder{background:linear-gradient(135deg, var(--color-cream), var(--color-cream-dark));justify-content:center;align-items:center;width:100%;height:100%;display:flex}.card-image-placeholder .category-badge{padding:4px 12px;font-size:.85rem}.card-checkbox{filter:drop-shadow(0 1px 2px #0000004d);position:absolute;top:8px;right:8px}.card-body{padding:12px}.card-title{margin-bottom:6px;font-size:.95rem;font-weight:600;line-height:1.3}.card-meta{flex-wrap:wrap;align-items:center;gap:4px 6px;margin-bottom:4px;display:flex}.card-meta>*{flex-shrink:0}.card-time{color:var(--color-text-secondary);white-space:nowrap;text-overflow:ellipsis;flex-shrink:1;min-width:0;font-size:.78rem;overflow:hidden}.card-last-made{color:var(--color-text-secondary);margin-bottom:6px;font-size:.78rem;display:block}.card-details-toggle{color:var(--color-primary);cursor:pointer;background:0 0;border:none;padding:4px 0;font-size:.8rem;font-weight:500;text-decoration:underline}.card-ingredients{border-top:1px solid var(--color-border);margin-top:8px;padding:8px 0;font-size:.82rem;list-style:none}.card-ingredients li{color:var(--color-text-secondary);padding:2px 0}.card-ingredients .ingredient-header{color:var(--color-text);margin-top:6px;font-weight:600}.card-ingredients .ingredient-note{color:var(--color-primary);margin-top:6px;font-style:italic}.card-bottom-row{justify-content:space-between;align-items:center;gap:8px;display:flex}.card-price{color:var(--color-primary);font-size:.78rem;font-weight:700}.card-calories{color:var(--color-text-muted);background:var(--color-surface-raised,#f3f4f6);border-radius:var(--radius-full,999px);white-space:nowrap;padding:1px 6px;font-size:.72rem;font-weight:600}.section-group{background:var(--color-surface);border-radius:var(--radius);border:1px solid var(--color-border);margin-bottom:12px;overflow:hidden}.section-header{background:var(--color-surface-raised);border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;padding:12px 16px;display:flex}.section-header h3{text-transform:uppercase;letter-spacing:.03em;font-size:.95rem;font-weight:700}.section-count{color:var(--color-text-secondary);font-size:.78rem}.section-items{padding:4px 0}a.recipe-card{color:inherit;flex-direction:column;text-decoration:none;display:flex}.card-image-gradient{pointer-events:none;z-index:1;background:linear-gradient(#0000,#00000059);height:50%;position:absolute;bottom:0;left:0;right:0}.card-fav-btn{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);cursor:pointer;z-index:3;width:32px;height:32px;color:var(--color-text-secondary);background:#ffffffd9;border:none;border-radius:50%;justify-content:center;align-items:center;padding:0;transition:transform .15s,color .15s,background .15s;display:flex;position:absolute;top:8px;right:8px}.card-fav-btn:hover{background:#fffffff2;transform:scale(1.12)}.card-fav-btn--active{color:var(--color-error)}[data-theme=dark] .card-fav-btn{background:#1e1e1ed9}[data-theme=dark] .card-fav-btn:hover{background:#1e1e1ef2}.card-hover-actions{z-index:2;opacity:0;flex-direction:row;gap:4px;transition:opacity .15s,transform .15s;display:flex;position:absolute;bottom:8px;right:8px;transform:translateY(4px)}.recipe-card:hover .card-hover-actions,.recipe-card:focus-within .card-hover-actions{opacity:1;transform:translateY(0)}.card-hover-actions button{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);width:36px;height:36px;color:var(--color-text);cursor:pointer;background:#ffffffe6;border:none;border-radius:50%;justify-content:center;align-items:center;padding:0;transition:background-color .15s,transform .15s;display:flex}.card-hover-actions button:hover{background:#fff;transform:scale(1.1)}.card-hover-actions button:disabled{cursor:default;opacity:.5}.card-hover-actions button.is-active-plan{background:var(--color-primary);color:var(--color-text-inverse)}[data-theme=dark] .card-hover-actions button{color:var(--color-text-inverse);background:#1e1e1ee6}[data-theme=dark] .card-hover-actions button:hover{background:#323232f2}@media (hover:none){.card-hover-actions{opacity:1;transform:translateY(0)}}.card-difficulty-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px;display:inline-block}.card-difficulty-dot--easy{background-color:var(--color-primary,#4caf50)}.card-difficulty-dot--medium{background-color:var(--color-warning,#f5a623)}.card-difficulty-dot--hard{background-color:var(--color-error,#e74c3c)}.card-difficulty-label{color:var(--color-text-secondary);font-size:.75rem;font-weight:500}.card-detail-row{align-items:center;gap:6px;margin-top:2px;display:flex}@keyframes card-btn-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.card-btn-spinner{justify-content:center;align-items:center;animation:.7s linear infinite card-btn-spin;display:flex}.recipe-card--selectable{background:var(--color-surface);border:2px solid var(--color-border);border-radius:var(--radius);-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;flex-direction:column;transition:border-color .15s,box-shadow .15s;display:flex;overflow:hidden}.recipe-card--selectable:hover{border-color:var(--color-primary-light,#6366f166)}.recipe-card--selectable:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.recipe-card--selectable.recipe-card--selected{border-color:var(--color-primary);box-shadow:0 0 0 1px var(--color-primary);background:var(--color-primary-light,#6366f10d)}.modal-overlay{background:var(--color-surface-overlay);justify-content:center;align-items:center;padding:20px;animation:.15s ease-out fadeIn;display:flex;position:fixed;inset:0}.confirm-overlay{z-index:100;background:var(--color-surface-overlay);justify-content:center;align-items:center;padding:20px;animation:.15s ease-out fadeIn;display:flex;position:fixed;inset:0}.confirm-modal{background:var(--color-surface);border-radius:var(--radius);width:100%;max-width:380px;box-shadow:var(--shadow-md);padding:24px}.confirm-title{margin-bottom:8px;font-size:1.1rem;font-weight:600}.confirm-message{color:var(--color-text-secondary);margin-bottom:20px;font-size:.9rem;line-height:1.5}.confirm-actions{justify-content:flex-end;gap:10px;display:flex}.kbd-help-overlay{background:var(--color-surface-overlay);z-index:1000;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.kbd-help-modal{background:var(--color-surface);border:1.5px solid var(--color-border);width:100%;max-width:420px;max-height:80vh;box-shadow:var(--shadow-lg);border-radius:16px;padding:24px;overflow-y:auto}.kbd-help-header{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.kbd-help-header h3{margin:0;font-size:1.05rem;font-weight:700}.kbd-help-close{color:var(--color-text-secondary);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:2px 6px;font-size:1.5rem;line-height:1;transition:color .15s}.kbd-help-close:hover{color:var(--color-text)}.kbd-shortcut-group{margin-bottom:18px}.kbd-shortcut-group:last-child{margin-bottom:0}.kbd-shortcut-group-label{text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-secondary);margin:0 0 8px;font-size:.72rem;font-weight:700}.kbd-shortcut-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.kbd-shortcut-row{align-items:center;gap:12px;display:flex}.kbd-key{font-family:var(--font-mono);background:var(--color-background);border:1.5px solid var(--color-border);color:var(--color-primary);text-align:center;letter-spacing:.05em;white-space:nowrap;border-radius:6px;min-width:80px;padding:3px 8px;font-size:.82rem;font-weight:600}.kbd-desc{color:var(--color-text);font-size:.9rem}.kbd-help-note{color:var(--color-text-secondary);text-align:center;margin:0;font-size:.75rem}.onboarding-backdrop{background:var(--color-surface-overlay);z-index:1000;position:fixed;inset:0}.onboarding-card{z-index:1001;background:var(--color-bg);border:1px solid var(--color-border);padding:var(--space-8) var(--space-6) var(--space-6);width:100%;max-width:380px;box-shadow:var(--shadow-xl);text-align:center;border-radius:16px;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}.onboarding-close{top:var(--space-3);right:var(--space-3);cursor:pointer;opacity:.4;padding:var(--space-1);color:var(--color-text);background:0 0;border:none;font-size:1.25rem;position:absolute}.onboarding-close:hover{opacity:.8}.onboarding-icon{margin-bottom:var(--space-5);justify-content:center;display:flex}.onboarding-title{margin-bottom:var(--space-3);font-size:1.2rem;font-weight:700}.onboarding-body{color:var(--color-text-muted);margin-bottom:var(--space-6);font-size:.9rem;line-height:1.6}.onboarding-actions{gap:var(--space-2);flex-direction:column;display:flex}.onboarding-dots{margin-top:var(--space-5);justify-content:center;gap:6px;display:flex}.onboarding-dot{background:var(--color-border);cursor:pointer;border:none;border-radius:4px;width:8px;height:8px;padding:0;transition:width .2s,background .2s}.onboarding-dot.active{background:var(--color-accent);width:20px}.onboarding-dietary{text-align:left;flex-direction:column;gap:.5rem;margin-bottom:1.25rem;display:flex}.dietary-option{cursor:pointer;align-items:center;gap:.5rem;padding:.3rem 0;font-size:.9rem;display:flex}.dietary-option input[type=checkbox]{width:16px;height:16px;accent-color:var(--color-accent);cursor:pointer}.dietary-custom-input{border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text);border-radius:8px;width:100%;margin-top:.25rem;padding:.45rem .7rem;font-size:.85rem}.dietary-custom-input:focus{border-color:var(--color-accent);outline:none}.servings-adjustment-overlay{background:var(--color-surface-overlay);z-index:200;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.servings-adjustment-panel{background:var(--color-surface);border-radius:16px 16px 0 0;width:100%;max-width:500px;max-height:70vh;padding:24px 20px 32px;overflow-y:auto}.servings-adjustment-panel h3{margin:0 0 4px;font-size:1.1rem}.servings-adjustment-panel .servings-subtitle{color:var(--color-text-secondary);margin:0 0 16px;font-size:.85rem}.servings-recipe-list{flex-direction:column;gap:10px;display:flex}.servings-recipe-row{background:var(--color-bg);border-radius:var(--radius-sm);justify-content:space-between;align-items:center;padding:10px 12px;display:flex}.servings-recipe-name{flex:1;margin-right:12px;font-size:.9rem;font-weight:500}.servings-recipe-default{color:var(--color-text-secondary);margin-left:4px;font-size:.75rem;font-weight:400}.servings-controls{align-items:center;gap:8px;display:flex}.servings-controls button{border:1px solid var(--color-border);background:var(--color-surface);width:30px;height:30px;color:var(--color-text);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;font-size:1.1rem;display:flex}.servings-controls button:disabled{opacity:.3;cursor:not-allowed}.servings-controls .servings-count{text-align:center;min-width:24px;font-size:1rem;font-weight:600}.servings-adjustment-actions{gap:12px;margin-top:20px;display:flex}.servings-adjustment-actions .btn-primary{flex:1}.servings-adjustment-actions .btn-secondary{white-space:nowrap;flex:0}.template-preview-modal{background:var(--color-surface);border-radius:var(--radius);width:100%;max-width:480px;max-height:80vh;box-shadow:var(--shadow-lg);flex-direction:column;padding:0;display:flex;overflow:hidden}.tpm-header{border-bottom:1px solid var(--color-border);flex-shrink:0;justify-content:space-between;align-items:flex-start;gap:12px;padding:20px 20px 16px;display:flex}.tpm-title{color:var(--color-text);margin:0 0 4px;font-size:1.1rem;font-weight:700;line-height:1.3}.tpm-subtitle{color:var(--color-text-secondary);margin:0;font-size:.82rem}.tpm-close{cursor:pointer;color:var(--color-text-secondary);background:0 0;border:none;border-radius:6px;flex-shrink:0;align-items:center;padding:4px;transition:color .15s;display:flex}.tpm-close:hover{color:var(--color-text)}.tpm-body{flex:1;min-height:80px;padding:12px 20px;overflow-y:auto}.tpm-loading{color:var(--color-text-secondary);justify-content:center;align-items:center;gap:10px;padding:24px 0;font-size:.9rem;display:flex}.tpm-empty{text-align:center;color:var(--color-text-secondary);padding:24px 0;font-size:.9rem}.tpm-recipe-list{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.tpm-recipe-row{border-radius:var(--radius-sm);background:var(--color-bg);padding:10px 12px;transition:background .12s}.tpm-recipe-row:hover{background:var(--color-primary-bg,#f0f4f1)}.tpm-recipe-info{flex-direction:column;gap:5px;display:flex}.tpm-recipe-name{color:var(--color-text);font-size:.92rem;font-weight:600;line-height:1.3}.tpm-recipe-meta{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.tpm-category-badge{color:var(--color-primary);background:var(--color-primary-bg,#eef4f0);white-space:nowrap;border-radius:4px;padding:1px 6px;font-size:.72rem;font-weight:500}.tpm-time{color:var(--color-text-secondary);white-space:nowrap;font-size:.75rem}.tpm-actions{border-top:1px solid var(--color-border);flex-shrink:0;justify-content:flex-end;gap:10px;padding:14px 20px;display:flex}.tpm-actions .btn-primary{min-width:130px}.toast-container{bottom:calc(var(--nav-height) + 12px);z-index:1000;pointer-events:none;flex-direction:column;gap:8px;display:flex;position:fixed;left:50%;transform:translate(-50%)}.toast{border-radius:var(--radius);background:var(--color-text);color:var(--color-bg);box-shadow:var(--shadow-md);pointer-events:auto;white-space:nowrap;align-items:center;gap:8px;padding:10px 18px;font-size:.88rem;font-weight:500;animation:.25s ease-out toastSlideIn,.3s ease-in forwards toastFadeOut;display:flex}.toast-action-btn{color:inherit;border-radius:var(--radius-sm);cursor:pointer;background:#fff3;border:1px solid #ffffff4d;margin-left:4px;padding:2px 10px;font-size:.82rem;font-weight:600;transition:background .15s}.toast-action-btn:hover{background:#ffffff59}.toast-close-btn{color:inherit;opacity:.6;cursor:pointer;background:0 0;border:none;align-items:center;margin-left:2px;padding:2px;transition:opacity .15s;display:flex}.toast-close-btn:hover{opacity:1}.toast-success{background:var(--color-primary-dark);color:var(--color-text-inverse)}.toast-error{background:var(--color-error);color:var(--color-text-inverse)}.toast-info{background:var(--color-text);color:var(--color-bg)}.skeleton-shimmer{background:linear-gradient(90deg, var(--color-border) 25%, var(--color-surface) 50%, var(--color-border) 75%);border-radius:var(--radius-sm);background-size:200% 100%;animation:1.5s infinite shimmer}.skeleton-line{margin-bottom:8px}.skeleton-circle{border-radius:50%}.skeleton-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;display:grid}.skeleton-card{border-radius:var(--radius);border:1px solid var(--color-border);overflow:hidden}.skeleton-card-image{aspect-ratio:16/10;border-radius:0}.skeleton-card-body{flex-direction:column;gap:8px;padding:12px;display:flex}.offline-banner{background:color-mix(in srgb, var(--color-warning) 12%, var(--color-surface));color:var(--color-warning);text-align:center;padding:8px 16px;font-size:.85rem;font-weight:500}.sync-status-indicator{background:color-mix(in srgb, var(--color-primary) 12%, var(--color-surface));color:var(--color-primary);text-align:center;justify-content:center;align-items:center;gap:6px;width:100%;padding:6px 14px;font-size:.8rem;font-weight:500;display:inline-flex}.sync-status-indicator svg{animation:1.5s linear infinite spin-sync}@keyframes spin-sync{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.install-prompt{background:var(--color-primary-bg);justify-content:space-between;align-items:center;gap:12px;padding:10px 16px;font-size:.85rem;display:flex}.install-actions{flex-shrink:0;align-items:center;gap:8px;display:flex}.update-toast{bottom:calc(var(--nav-height) + 12px);background:var(--color-text);color:var(--color-text-inverse);border-radius:var(--radius);box-shadow:var(--shadow-md);z-index:100;align-items:center;gap:12px;padding:10px 20px;font-size:.88rem;display:flex;position:fixed;left:50%;transform:translate(-50%)}.update-toast .btn-primary{padding:6px 14px;font-size:.82rem}.route-progress-bar{z-index:9999;background:var(--color-primary);transform-origin:0;height:3px;animation:.4s ease-out forwards routeProgress;position:fixed;top:0;left:0;right:0}.error-boundary-screen{justify-content:center;align-items:center;min-height:60vh;padding:24px;display:flex}.error-boundary-card{background:var(--color-surface);border:1.5px solid var(--color-border);text-align:center;border-radius:16px;flex-direction:column;align-items:center;gap:10px;width:100%;max-width:420px;padding:40px 32px;display:flex}.error-boundary-icon{font-size:2.8rem}.error-boundary-card h2{margin:0;font-size:1.25rem;font-weight:700}.error-boundary-label{color:var(--color-text-secondary);margin:0;font-size:.85rem}.error-boundary-detail{color:var(--color-text-secondary);font-size:.8rem;font-family:var(--font-mono);background:var(--color-background);overflow-wrap:break-word;border-radius:6px;max-width:100%;margin:4px 0 8px;padding:8px 12px}.planning-reminder-banner{background:color-mix(in srgb, var(--color-primary) 10%, transparent);border:1.5px solid color-mix(in srgb, var(--color-primary) 35%, transparent);border-radius:10px;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:16px;padding:10px 14px;display:flex}.reminder-icon{flex-shrink:0;font-size:1.2rem}.reminder-text{color:var(--color-text);flex:1;font-size:.92rem;font-weight:500}.reminder-plan-btn{flex-shrink:0}.reminder-dismiss{color:var(--color-text-secondary);cursor:pointer;background:0 0;border:none;flex-shrink:0;padding:0 2px;font-size:1.3rem;line-height:1;transition:color .15s}.reminder-dismiss:hover{color:var(--color-text)}.not-found-page{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:12px;padding:60px 20px;display:flex}.not-found-icon{opacity:.6;margin-bottom:8px}.not-found-page h2{margin:0;font-size:1.4rem}.not-found-page p{color:var(--color-text-secondary);margin:0 0 16px;font-size:.95rem}.not-found-actions{gap:10px;display:flex}.tab-bar{border-bottom:2px solid var(--color-border);-webkit-overflow-scrolling:touch;scrollbar-width:none;gap:2px;margin-bottom:20px;display:flex;overflow-x:auto}.tab-bar::-webkit-scrollbar{display:none}.tab-item{font-size:var(--text-sm);color:var(--color-text-muted);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000;align-items:center;gap:6px;margin-bottom:-2px;padding:10px 16px;font-weight:500;transition:color .15s,border-color .15s;display:flex}.tab-item:hover{color:var(--color-text-secondary)}.tab-item.active{color:var(--color-primary);border-bottom-color:var(--color-primary)}.tab-item .tab-icon{flex-shrink:0;width:16px;height:16px}.hub-page{padding:0}.hub-header{align-items:center;gap:10px;margin-bottom:4px;display:flex}.hub-header h1{font-family:var(--font-serif);margin:0;font-size:1.5rem;font-weight:400}.hub-content{min-height:50vh}.weekly-planner{padding-bottom:calc(var(--footer-height) + 80px)}.planner-empty{text-align:center;padding:60px 20px}.planner-empty h2{margin-bottom:12px;font-size:1.5rem}.planner-empty p{color:var(--color-text-secondary);max-width:400px;margin-bottom:24px;margin-left:auto;margin-right:auto}.planner-header{flex-wrap:wrap;align-items:baseline;gap:8px 16px;margin-bottom:16px;display:flex}.planner-header h2{font-size:1.3rem}.planner-subtitle{color:var(--color-text-secondary);font-size:.9rem}.error-text{color:var(--color-error);margin-top:8px;font-size:.9rem}.planner-selection-counter{color:var(--color-text-secondary);text-align:right;margin:.25rem 0 .5rem;font-size:.82rem}.selection-footer{bottom:calc(var(--nav-height) + var(--footer-height));z-index:9;background:var(--color-surface);border-top:1px solid var(--color-border);justify-content:space-between;align-items:center;padding:12px 16px;display:flex;position:fixed;left:0;right:0;box-shadow:0 -2px 8px #0000000f}.selection-count{font-size:.95rem;font-weight:500}.planner-filter-section{margin-bottom:16px}.planner-filter-toggle{font-size:.88rem}.planner-filter-pills{flex-wrap:wrap;justify-content:center;gap:6px;margin-top:10px;display:flex}.category-pill.excluded{background:color-mix(in srgb, var(--color-error) 8%, var(--color-surface));border-color:var(--color-accent);color:var(--color-accent);text-decoration:line-through}[data-theme=dark] .category-pill.excluded{background:color-mix(in srgb, var(--color-error) 15%, var(--color-surface))}.planner-header-actions{align-items:center;gap:8px;margin-left:auto;display:flex}.planner-search{margin-bottom:16px;position:relative}.planner-search-results{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow-md);z-index:20;max-height:300px;position:absolute;top:100%;left:0;right:0;overflow-y:auto}.planner-search-result{cursor:pointer;border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;padding:10px 14px;transition:background .1s;display:flex}.planner-search-result:last-child{border-bottom:none}.planner-search-result:hover{background:var(--color-primary-bg)}.planner-search-result-name{color:var(--color-text);font-size:.9rem;font-weight:500}.planner-search-result-cat{color:var(--color-text-secondary);margin-left:8px;font-size:.78rem}.planner-search-result-add{color:var(--color-primary);flex-shrink:0;font-size:.82rem;font-weight:600}.planner-search-loading{color:var(--color-text-secondary);text-align:center;padding:12px 14px;font-size:.88rem}.servings-adjustment-overlay{background:var(--color-surface-overlay);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:1000;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.week-calendar{background:var(--color-bg);border-radius:var(--radius-xl) var(--radius-xl) 0 0;flex-direction:column;width:100%;max-width:600px;max-height:92vh;padding:24px 20px;animation:.35s cubic-bezier(.16,1,.3,1) slideUp;display:flex;overflow-y:auto;box-shadow:0 -8px 32px #0003}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.week-calendar-title{font-size:1.25rem;font-family:var(--font-serif);text-align:center;margin-bottom:4px;font-weight:400}.week-calendar-subtitle{color:var(--color-text-secondary);text-align:center;margin-bottom:24px;font-size:.88rem}.week-calendar-grid{grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:16px;display:grid}.week-calendar-cell{flex-direction:column;align-items:center;display:flex;position:relative}.week-calendar-day-header{flex-direction:column;align-items:center;margin-bottom:6px;display:flex}.week-calendar-day-name{color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.02em;font-size:.72rem;font-weight:600}.week-calendar-day-date{color:var(--color-text-secondary);font-size:.68rem}.week-calendar-assigned{background:var(--color-primary-bg);border:1px solid var(--color-primary-light);border-radius:var(--radius-sm);text-align:center;cursor:pointer;flex-direction:column;justify-content:center;align-items:center;width:100%;min-height:60px;padding:8px 4px;transition:background .15s;display:flex}.week-calendar-assigned:hover{background:var(--color-primary);color:var(--color-text-inverse)}.week-calendar-assigned:hover .week-calendar-meal-name{color:var(--color-text-inverse)}.week-calendar-meal-name{color:var(--color-primary);word-break:break-word;font-size:.72rem;font-weight:600;line-height:1.2}.week-calendar-remove-hint{color:var(--color-text-secondary);margin-top:2px;font-size:.6rem}.week-calendar-empty{border:2px dashed var(--color-border);border-radius:var(--radius-sm);cursor:pointer;justify-content:center;align-items:center;width:100%;min-height:60px;transition:border-color .15s,background .15s;display:flex}.week-calendar-empty:hover{border-color:var(--color-primary-light);background:var(--color-primary-bg)}.week-calendar-plus{color:var(--color-text-secondary);font-size:1.2rem;font-weight:300}.week-calendar-picker{z-index:10;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);box-shadow:var(--shadow-md);min-width:140px;max-width:200px;margin-top:4px;position:absolute;top:100%;left:50%;transform:translate(-50%)}.week-calendar-picker-item{text-align:left;width:100%;color:var(--color-text);cursor:pointer;border:none;border-bottom:1px solid var(--color-border);background:0 0;padding:8px 12px;font-size:.82rem;display:block}.week-calendar-picker-item:last-child{border-bottom:none}.week-calendar-picker-item:hover{background:var(--color-primary-bg);color:var(--color-primary)}.week-calendar-actions{justify-content:center;gap:10px;display:flex}.week-calendar-actions .btn-secondary,.week-calendar-actions .btn-primary{flex:1;max-width:200px}@media (width<=500px){.week-calendar-grid{grid-template-columns:repeat(4,1fr);gap:6px}.week-calendar-picker{min-width:120px}}.planner-templates-section{width:100%;margin-top:16px}.planner-templates-list{flex-direction:column;gap:8px;margin-top:10px;display:flex}.planner-template-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);cursor:pointer;align-items:center;gap:8px;padding:12px 14px;transition:border-color .15s;display:flex}.planner-template-card:hover{border-color:var(--color-primary)}.planner-template-info{flex-direction:column;flex:1;gap:2px;display:flex}.planner-template-name{color:var(--color-text);font-size:.95rem;font-weight:600}.planner-template-meta{color:var(--color-text-secondary);font-size:.8rem}.planner-template-delete{cursor:pointer;color:var(--color-text-secondary);opacity:.5;background:0 0;border:none;padding:4px;transition:opacity .15s}.planner-template-delete:hover{opacity:1;color:var(--color-accent)}.planner-save-template{align-items:center;gap:8px;width:100%;margin-top:8px;display:flex}.save-template-input{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);flex:1;padding:8px 12px;font-size:.9rem}.save-template-input:focus{border-color:var(--color-primary);outline:none}.candidate-card.card-pop{animation:.28s scalePop}.planner-template-hint{color:var(--color-text-muted);text-align:center;max-width:320px;margin:0 auto 16px;font-size:.78rem;line-height:1.4}@media (width>=768px){.planner-header{gap:12px 24px}.planner-filter-pills{justify-content:flex-start}.selection-footer{padding:14px 32px;left:64px}.week-calendar{max-width:640px}.week-calendar-grid{grid-template-columns:repeat(7,1fr);gap:8px}.planner-templates-list{grid-template-columns:repeat(2,1fr);gap:8px;display:grid}}.shopping-empty,.shopping-done{text-align:center;padding:60px 20px}.shopping-done .done-icon{margin-bottom:16px}.shopping-done .done-icon-animated{animation:.6s checkBounce}.shopping-done h2{margin-bottom:8px;font-size:1.5rem}.shopping-done p{color:var(--color-text-secondary);margin-bottom:24px}.done-actions{flex-wrap:wrap;justify-content:center;gap:12px;display:flex}.shopping-header{margin-bottom:16px}.shopping-header h2{font-size:1.3rem}.shopping-subtitle{color:var(--color-text-secondary);margin-bottom:8px;font-size:.9rem}.shopping-meals{flex-wrap:wrap;gap:6px;display:flex}.shopping-instructions{color:var(--color-text-secondary);margin-bottom:12px;font-size:.9rem}.shopping-item{cursor:pointer;-webkit-tap-highlight-color:transparent;align-items:flex-start;gap:12px;min-height:44px;padding:10px 16px;transition:background .1s,opacity .25s;display:flex}.shopping-item:hover{background:var(--color-surface-raised)}.shopping-item.checked{opacity:.45}.shopping-item.checked .item-name{text-decoration:line-through}.shopping-item input[type=checkbox]{width:22px;height:22px;accent-color:var(--color-primary);flex-shrink:0;margin-top:1px}.item-text{flex-direction:column;gap:1px;display:flex}.item-name{font-size:.92rem}.item-recipes{color:var(--color-text-secondary);font-size:.75rem}.shopping-staples-note{color:var(--color-text-secondary);border-top:1px solid var(--color-border);margin-top:8px;padding:12px 0;font-size:.8rem;font-style:italic}.shopping-save-error{background:color-mix(in srgb, var(--color-error) 8%, var(--color-surface));color:var(--color-error);border:1px solid color-mix(in srgb, var(--color-error) 25%, var(--color-surface));border-radius:8px;justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px;padding:10px 14px;font-size:.9rem;display:flex}.shopping-save-error .btn-text{color:var(--color-error);padding:0 4px;font-size:1.2rem;line-height:1}[data-theme=dark] .shopping-save-error{background:color-mix(in srgb, var(--color-error) 8%, var(--color-surface));color:var(--color-error);border-color:color-mix(in srgb, var(--color-error) 20%, var(--color-surface))}[data-theme=dark] .shopping-save-error .btn-text{color:var(--color-error)}.shopping-actions{bottom:calc(var(--nav-height,64px) + env(safe-area-inset-bottom,0px));background:var(--color-bg);border-top:1px solid var(--color-border);z-index:10;flex-wrap:wrap;justify-content:center;gap:12px;margin:0 -16px;padding:12px 16px;display:flex;position:sticky}.shopping-list-page{padding-bottom:80px}.shopping-list-actions{align-items:center;gap:6px;display:flex}.shopping-day-assignments{flex-wrap:wrap;gap:6px;margin-top:6px;display:flex}.shopping-day-chip{background:var(--color-primary-bg);border:1px solid var(--color-primary-light);border-radius:var(--radius-sm);align-items:center;gap:6px;padding:4px 10px;font-size:.82rem;display:flex}.shopping-day-label{color:var(--color-primary);text-transform:uppercase;font-size:.72rem;font-weight:700}.shopping-day-meal{color:var(--color-text);font-weight:500}.shopping-unassigned-meals{border-top:1px dashed var(--color-border);flex-wrap:wrap;gap:6px;width:100%;margin-top:4px;padding-top:4px;display:flex}.cost-estimate-banner{background:var(--color-primary-bg);border:1px solid var(--color-primary-light);border-radius:var(--radius-sm);color:var(--color-text);align-items:center;gap:8px;margin-bottom:12px;padding:10px 14px;font-size:.88rem;display:flex}.cost-estimate-banner svg{color:var(--color-primary);flex-shrink:0}.cost-info-icon,.rec-info-icon{opacity:.5;cursor:help;flex-shrink:0}.cost-info-icon:hover,.rec-info-icon:hover{opacity:1}.shopping-progress-bar-track{background:var(--color-border);border-radius:99px;height:5px;margin:0 0 10px;overflow:hidden}.shopping-progress-bar-fill{height:100%;width:var(--progress-width,0%);background:var(--color-primary);border-radius:99px;transition:width .4s}.shopping-progress-bar-fill.all-done{background:var(--color-success,#22c55e)}.shopping-all-checked-celebration{background:color-mix(in srgb, var(--color-success,#22c55e) 10%, var(--color-surface));border:1px solid color-mix(in srgb, var(--color-success,#22c55e) 35%, transparent);border-radius:var(--radius);align-items:center;gap:12px;margin-bottom:12px;padding:14px 16px;animation:.35s celebrationFadeIn;display:flex}.shopping-celebration-icon{flex-shrink:0;font-size:1.8rem;animation:.5s checkBounce}.shopping-all-checked-celebration strong{color:var(--color-success,#22c55e);margin-bottom:2px;font-size:.95rem;display:block}.shopping-all-checked-celebration p{color:var(--color-text-secondary);margin:0;font-size:.82rem}@media (width>=768px){.shopping-list-page{grid-template-columns:1fr 320px;align-items:start;gap:24px;display:grid}.shopping-list-page>.shopping-header,.shopping-list-page>.shopping-progress-bar-track,.shopping-list-page>.shopping-all-checked-celebration,.shopping-list-page>.cost-estimate-banner,.shopping-list-page>.shopping-actions,.shopping-list-page>.shopping-done,.shopping-list-page>.shopping-empty{grid-column:1/-1}.shopping-actions{position:sticky;bottom:0}}.recipe-browser{padding-bottom:20px}.browser-header{margin-bottom:8px}.browser-header h2{font-size:var(--text-xl)}.browser-title{margin:0;font-weight:700;font-size:var(--text-lg,1.05rem)!important}.search-bar{margin-bottom:6px;position:relative}.search-icon{color:var(--color-text-secondary);pointer-events:none;position:absolute;top:50%;left:12px;transform:translateY(-50%)}.search-input{border:2px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);width:100%;color:var(--color-text);outline:none;padding:10px 40px;font-size:.95rem;transition:border-color .15s}.search-input:focus{border-color:var(--color-primary)}.search-input::placeholder{color:var(--color-text-muted)}.search-clear{color:var(--color-text-secondary);cursor:pointer;padding:var(--space-3);background:0 0;border:none;justify-content:center;align-items:center;min-width:44px;min-height:44px;display:flex;position:absolute;top:50%;right:0;transform:translateY(-50%)}.category-bar{-webkit-overflow-scrolling:touch;scrollbar-width:none;gap:6px;padding:4px 0 12px;display:flex;overflow-x:auto}.category-pill{border:1.5px solid var(--color-border);background:var(--color-surface);color:var(--color-text-secondary);cursor:pointer;white-space:nowrap;-webkit-tap-highlight-color:transparent;border-radius:20px;flex-shrink:0;padding:6px 14px;font-size:.82rem;font-weight:500;transition:border-color .15s,color .15s,background-color .15s}.category-pill:hover{border-color:var(--color-primary-light);color:var(--color-primary)}.category-pill:active{background:var(--color-cream-dark)}.category-pill.active{background:var(--color-primary);color:var(--color-text-inverse);border-color:var(--color-primary)}.result-count{color:var(--color-text-secondary);margin-bottom:8px;font-size:.78rem}.dedup-toggle{cursor:pointer;margin-left:8px;font-size:.78rem;text-decoration:underline}.browser-empty{text-align:center;color:var(--color-text-secondary);padding:40px 20px}.browser-empty p{margin-bottom:16px}.browser-header{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.header-add-btn{color:var(--color-primary)}.filter-row{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:12px;display:flex}.sort-toggle{border:1.5px solid var(--color-border);border-radius:20px;display:inline-flex;overflow:hidden}.toggle-btn{background:var(--color-surface);color:var(--color-text-secondary);cursor:pointer;border:none;padding:5px 14px;font-size:.8rem;font-weight:500;transition:background-color .15s,color .15s}.toggle-btn.active{background:var(--color-primary);color:var(--color-text-inverse)}.filter-group{align-items:center;gap:4px;display:flex}.filter-label{color:var(--color-text-secondary);margin-right:2px;font-size:.78rem;font-weight:500}.filter-pill{border:1.5px solid var(--color-border);background:var(--color-surface);color:var(--color-text-secondary);cursor:pointer;white-space:nowrap;border-radius:16px;flex-shrink:0;padding:4px 10px;font-size:.75rem;font-weight:500;transition:border-color .15s,color .15s,background-color .15s}.filter-pill:hover{border-color:var(--color-primary-light);color:var(--color-primary)}.filter-pill.active{background:var(--color-primary);color:var(--color-text-inverse);border-color:var(--color-primary)}.filter-controls{flex-wrap:wrap;justify-content:flex-start;align-items:center;gap:6px;margin-bottom:6px;display:flex}.active-filter-chips{flex-wrap:wrap;gap:4px;margin-bottom:6px;padding:2px 0;animation:.15s ease-out slideDown;display:flex}.active-chip{border:1.5px solid var(--color-primary);background:var(--color-primary-bg);color:var(--color-primary);cursor:pointer;white-space:nowrap;border-radius:16px;align-items:center;gap:4px;padding:3px 10px;font-size:.75rem;font-weight:500;transition:border-color .15s,color .15s,background-color .15s;display:inline-flex}.active-chip:hover{background:var(--color-primary);color:var(--color-text-inverse)}.active-chip-x{font-size:.9rem;font-weight:600;line-height:1}.active-chip-clear{border-color:var(--color-border);background:var(--color-surface);color:var(--color-text-secondary)}.active-chip-clear:hover{background:var(--color-error);border-color:var(--color-error);color:var(--color-text-inverse)}.filter-panel{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);flex-direction:column;gap:14px;margin-bottom:12px;padding:14px 16px;animation:.15s ease-out slideDown;display:flex}.filter-panel .filter-group{flex-direction:column;gap:6px;display:flex}.filter-panel .filter-label{text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-secondary);font-size:.72rem;font-weight:600}.filter-row{grid-template-columns:1fr 1fr;gap:14px;display:grid}@media (width<=400px){.filter-row{grid-template-columns:1fr;gap:10px}}.filter-group-flex{flex-direction:column;gap:6px;min-width:0;display:flex}.filter-select{border:1.5px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23666' stroke-width='2'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-position:right 8px center;background-repeat:no-repeat;width:100%;padding:6px 28px 6px 10px;font-size:.82rem;font-weight:500}.filter-pills{flex-wrap:wrap;gap:6px;display:flex}.filter-clear-all{color:var(--color-accent);align-self:flex-start;font-size:.82rem}.filter-number-input{border:1.5px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);width:72px;color:var(--color-text);text-align:center;-moz-appearance:textfield;padding:5px 8px;font-size:.82rem;font-weight:500}.filter-number-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.filter-number-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.filter-number-input:focus{border-color:var(--color-primary);outline:none}.recipe-grouped{flex-direction:column;gap:8px;display:flex}.recipe-category-group{border:1px solid var(--color-border);border-radius:var(--radius);overflow:hidden}.recipe-category-group-header{background:var(--color-surface);cursor:pointer;width:100%;color:var(--color-text);text-align:left;border:none;justify-content:space-between;align-items:center;padding:12px 16px;font-size:1rem;font-weight:700;transition:background .12s;display:flex}.recipe-category-group-header:hover{background:color-mix(in srgb, var(--color-primary) 5%, var(--color-surface))}.recipe-category-group-count{color:var(--color-text-secondary);margin-left:6px;font-size:.78rem;font-weight:500}.recipe-category-chevron{color:var(--color-text-muted);flex-shrink:0;transition:transform .2s}.recipe-category-chevron.collapsed{transform:rotate(-90deg)}.recipe-category-group .candidate-grid{border-top:1px solid var(--color-border);padding:12px 12px 16px}.header-group-btn{color:var(--color-text-secondary)}.header-group-btn.active{color:var(--color-primary);background:var(--color-primary-bg)}.category-index-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px;display:grid}.category-tile{color:inherit;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);cursor:pointer;text-align:left;flex-direction:column;padding:0;text-decoration:none;transition:box-shadow .2s,transform .2s;display:flex;overflow:hidden}.category-tile:hover{transform:scale(1.03);box-shadow:0 8px 24px #0000001a}.category-tile:active{transform:scale(1.01)}.category-tile-images{aspect-ratio:16/10;background:var(--color-bg);border-radius:var(--radius) var(--radius) 0 0;gap:2px;width:100%;display:grid;position:relative;overflow:hidden}.category-tile-images.count-1{grid-template-columns:1fr}.category-tile-images.count-2{grid-template-columns:1fr 1fr}.category-tile-images.count-3{grid-template-rows:1fr 1fr;grid-template-columns:1fr 1fr}.category-tile-images.count-3 .category-tile-img:first-child{grid-row:1/-1}.category-tile-images.count-4{grid-template-rows:1fr 1fr;grid-template-columns:1fr 1fr}.category-tile-images.count-0{justify-content:center;align-items:center;display:flex}.category-tile-img{object-fit:cover;width:100%;height:100%}.category-tile-placeholder{justify-content:center;align-items:center;width:100%;height:100%;display:flex}.category-tile-initial{font-family:var(--font-serif);color:#0003;-webkit-user-select:none;user-select:none;font-size:2.5rem;font-weight:700;line-height:1}[data-theme=dark] .category-tile-initial{color:#ffffff40}.category-tile-count-pill{color:#fff;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0009;border-radius:10px;padding:2px 8px;font-size:.72rem;font-weight:600;line-height:1.4;position:absolute;bottom:8px;right:8px}.category-tile-body{padding:10px 12px 12px}.category-tile-name{color:var(--color-text);font-size:.95rem;font-weight:700;line-height:1.3}.category-tile-preview{color:var(--color-text-muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-top:4px;font-size:.75rem;line-height:1.35;display:-webkit-box;overflow:hidden}.recipe-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);cursor:pointer;-webkit-tap-highlight-color:transparent;transition:border-color .2s,box-shadow .2s,transform .2s;overflow:hidden}.recipe-card:hover{border-color:var(--color-primary-light);transform:scale(1.02);box-shadow:0 8px 24px #0000001a}.recipe-card .card-body{padding:10px 12px 12px}.recipe-card .card-title{-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-bottom:4px;font-size:.9rem;display:-webkit-box;overflow:hidden}.recipe-detail{padding-bottom:40px}.detail-back{color:var(--color-primary);cursor:pointer;background:0 0;border:none;align-items:center;gap:4px;margin-bottom:8px;padding:8px 0;font-size:.9rem;font-weight:500;display:inline-flex}.detail-hero{border-radius:var(--radius);box-shadow:var(--shadow-md);aspect-ratio:16/10;margin-bottom:16px;overflow:hidden}.detail-hero img{aspect-ratio:16/10;object-fit:cover;width:100%;display:block}.detail-title{font-family:var(--font-serif);margin-bottom:10px;font-size:1.4rem;font-weight:700;line-height:1.25}.detail-meta{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:12px;display:flex}.detail-meta-item{color:var(--color-text-secondary);font-size:.85rem}.detail-times{gap:20px;margin-bottom:16px;display:flex}.time-block{flex-direction:column;display:flex}.time-label{text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-secondary);font-size:.72rem;font-weight:600}.time-value{font-size:.95rem;font-weight:500}.servings-scaler{align-items:center;gap:6px;display:inline-flex}.scaler-btn{border:1.5px solid var(--color-border);background:var(--color-surface);width:44px;height:44px;color:var(--color-primary);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;padding:0;font-size:1.25rem;font-weight:600;line-height:1;transition:background .15s,border-color .15s;display:flex}.scaler-btn:hover:not(:disabled){background:var(--color-primary-bg);border-color:var(--color-primary)}.scaler-btn:disabled{opacity:.35;cursor:not-allowed}.scaler-count{text-align:center;min-width:24px;font-size:.95rem;font-weight:600}.scaler-reset{color:var(--color-accent);cursor:pointer;background:0 0;border:none;margin-left:2px;padding:2px 0;font-size:.78rem;font-weight:500}.scaler-reset:hover{text-decoration:underline}.ingredient-scaled{color:var(--color-primary)!important}.detail-seasonal{color:var(--color-accent);background:color-mix(in srgb, var(--color-error) 10%, var(--color-surface));border-radius:var(--radius-sm);margin-bottom:16px;padding:4px 10px;font-size:.8rem;display:inline-block}.detail-section{margin-bottom:20px}.detail-section h2{border-bottom:2px solid var(--color-primary-bg);margin-bottom:10px;padding-bottom:6px;font-size:1.05rem;font-weight:700}.detail-ingredients{list-style:none}.detail-ingredients li{border-bottom:1px solid var(--color-border);padding:5px 0;font-size:.9rem}.detail-ingredients li:last-child{border-bottom:none}.detail-ingredients .ingredient-section-header{color:var(--color-primary);text-transform:uppercase;letter-spacing:.02em;border-bottom:none;padding-top:12px;font-size:.85rem;font-weight:700}.detail-instructions{padding-left:24px;list-style-type:decimal}.detail-instructions li{border-bottom:1px solid var(--color-border);padding:8px 0 8px 4px;font-size:.9rem;line-height:1.55}.detail-instructions li:last-child{border-bottom:none}.detail-instructions li::marker{color:var(--color-primary);font-weight:700}.detail-notes{background:var(--color-primary-bg);border-radius:var(--radius);padding:14px 16px}.detail-notes h2{color:var(--color-primary);margin-bottom:6px;font-size:.9rem;font-weight:700}.detail-notes p{font-size:.88rem;line-height:1.5}.detail-loading,.detail-error{text-align:center;color:var(--color-text-secondary);padding:60px 20px}.detail-error button{margin-top:16px}.detail-top-bar{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.detail-last-made,.detail-top-actions{align-items:center;gap:8px;display:flex}.detail-section-header{border-bottom:2px solid var(--color-primary-bg);justify-content:space-between;align-items:center;gap:8px;margin-bottom:10px;padding-bottom:6px;display:flex}.detail-section-header h2{border-bottom:none;margin-bottom:0;padding-bottom:0}.detail-rating-row{align-items:center;gap:10px;margin-bottom:12px;display:flex}.detail-rating-label{color:var(--color-text-secondary);font-size:.82rem;font-weight:500}.detail-price{color:var(--color-primary);font-size:.9rem;font-weight:700}.detail-tags-row{flex-wrap:wrap;gap:6px;margin-bottom:12px;display:flex}.pairings-section{margin-top:8px}.pairing-group{margin-bottom:12px}.pairing-group-label{text-transform:uppercase;letter-spacing:.03em;color:var(--color-text-secondary);margin-bottom:6px;font-size:.82rem;font-weight:600}.pairing-chips{flex-wrap:wrap;gap:6px;display:flex}.pairing-chip{cursor:pointer;border-radius:16px;padding:5px 12px;font-size:.82rem;font-weight:500;transition:transform .1s,box-shadow .1s;display:inline-block}.pairing-chip:hover{box-shadow:var(--shadow);transform:translateY(-1px)}.pairing-side{background:var(--color-primary-bg);color:var(--color-primary)}.pairing-cocktail{background:color-mix(in srgb, var(--color-error) 8%, var(--color-surface));color:var(--color-error)}.pairing-wine{background:color-mix(in srgb, var(--color-info) 8%, var(--color-surface));color:var(--color-info);cursor:default}.pairing-wine:hover{box-shadow:none;transform:none}.recommend-section{margin-bottom:10px}.recommend-card{background:var(--color-primary-bg);border:2px solid var(--color-primary);border-radius:var(--radius);cursor:pointer;margin-top:10px;padding:12px;transition:box-shadow .15s}.recommend-card:hover{box-shadow:var(--shadow-md)}.recommend-label{color:var(--color-primary);text-transform:uppercase;letter-spacing:.04em;margin-bottom:6px;font-size:.78rem;font-weight:700}.recommend-body{align-items:center;gap:12px;display:flex}.recommend-img{object-fit:cover;border-radius:var(--radius-sm);width:72px;height:48px}.recommend-info h3{margin-bottom:2px;font-size:1rem;font-weight:600}.ingredient-text{flex:1}.detail-ingredients li{align-items:flex-start;gap:6px;display:flex}.sub-icon-wrapper{flex-shrink:0;position:relative}.sub-icon{color:var(--color-primary);cursor:pointer;opacity:.6;background:0 0;border:none;border-radius:50%;align-items:center;padding:2px;transition:opacity .15s;display:flex}.sub-icon:hover{opacity:1;background:var(--color-primary-bg)}.sub-popover{z-index:20;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);box-shadow:var(--shadow-md);min-width:180px;padding:8px 12px;font-size:.82rem;position:absolute;top:100%;right:0}.sub-popover-title{text-transform:uppercase;color:var(--color-text-secondary);margin-bottom:4px;font-size:.75rem;font-weight:600}.sub-popover-item{color:var(--color-text);padding:3px 0}.family-warning-banner{background:color-mix(in srgb, var(--color-warning) 12%, var(--color-surface));border:1px solid var(--color-warning);border-radius:var(--radius-sm);color:var(--color-warning);align-items:center;gap:8px;margin-bottom:12px;padding:8px 12px;font-size:.84rem;display:flex}[data-theme=dark] .family-warning-banner{background:color-mix(in srgb, var(--color-warning) 15%, var(--color-surface));border-color:var(--color-warning);color:var(--color-warning)}.detail-collection-row{margin-bottom:12px}.collection-picker-wrapper{display:inline-block;position:relative}.collection-picker-dropdown{z-index:20;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);box-shadow:var(--shadow-md);min-width:200px;max-height:200px;position:absolute;top:100%;left:0;overflow-y:auto}.collection-picker-item{text-align:left;width:100%;color:var(--color-text);cursor:pointer;background:0 0;border:none;padding:8px 12px;font-size:.88rem;transition:background .1s;display:block}.collection-picker-item:hover{background:var(--color-primary-bg)}.collection-picker-item.in-collection{color:var(--color-text-secondary);cursor:default}.collection-picker-empty{color:var(--color-text-secondary);padding:12px;font-size:.85rem}.ingredient-checkbox{width:18px;height:18px;accent-color:var(--color-primary);vertical-align:middle;cursor:pointer;margin-right:8px}.auto-image-status{background:var(--color-primary-bg);color:var(--color-primary);border-radius:var(--radius);text-align:center;margin-bottom:12px;padding:10px 16px;font-size:.88rem;font-weight:500}.sort-select{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23666' stroke-width='2'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-position:right 8px center;background-repeat:no-repeat;padding:6px 28px 6px 10px;font-size:.82rem;font-weight:500}.category-bar-wrapper{margin-bottom:10px;position:relative;overflow:hidden}.category-bar-wrapper:after{content:"";background:linear-gradient(to right, transparent, var(--color-bg));pointer-events:none;width:32px;position:absolute;top:0;bottom:0;right:0}.category-bar{-webkit-overflow-scrolling:touch;scrollbar-width:none;white-space:nowrap;padding-bottom:4px;overflow-x:auto}.category-bar::-webkit-scrollbar{display:none}.btn-favorite{cursor:pointer;color:var(--color-text-secondary);background:0 0;border:none;align-items:center;padding:4px;transition:color .2s,transform .2s;display:flex}.btn-favorite:hover{transform:scale(1.15)}.btn-favorite.is-favorite{color:var(--color-error)}.card-favorite-toggle{width:28px;height:28px;color:var(--color-error);cursor:pointer;opacity:.85;background:#ffffffe6;border:none;border-radius:50%;justify-content:center;align-items:center;padding:0;transition:opacity .15s,transform .15s;display:flex;position:absolute;top:6px;right:6px}.card-favorite-toggle:hover{opacity:1;transform:scale(1.15)}[data-theme=dark] .card-favorite-toggle{background:#1e1e1ee6}.card-private-badge{background:var(--color-overlay-dark);width:26px;height:26px;color:var(--color-text-inverse);z-index:3;border-radius:50%;justify-content:center;align-items:center;display:flex;position:absolute;top:8px;left:8px}.card-private-badge--below-variant{top:34px}.card-variant-badge{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);color:var(--color-text);letter-spacing:.02em;cursor:pointer;z-index:3;background:#ffffffe6;border:none;border-radius:10px;align-items:center;gap:4px;padding:2px 8px;font-size:.72rem;font-weight:700;transition:transform .15s;display:flex;position:absolute;top:8px;left:8px}.card-variant-badge:hover{transform:scale(1.08)}[data-theme=dark] .card-variant-badge{color:var(--color-text-inverse);background:#1e1e1ee6}.recipe-private-badge{color:var(--color-text-secondary);background:var(--color-surface-raised);border:1px solid var(--color-border);border-radius:20px;align-items:center;gap:.4rem;margin-bottom:.75rem;padding:.2rem .6rem;font-size:.78rem;display:inline-flex}.star-rating{align-items:center;gap:2px;display:inline-flex}.star-rating.read-only{pointer-events:none}.star-rating-sm{gap:1px}.star{transition:transform .1s}.star:hover{transform:scale(1.15)}.cooking-log{margin-top:20px}.cooking-log h2{border-bottom:2px solid var(--color-primary-bg);margin-bottom:10px;padding-bottom:6px;font-size:1.05rem;font-weight:700}.cooking-log-empty{color:var(--color-text-secondary);margin-bottom:12px;font-size:.88rem;font-style:italic}.cooking-log-entry{background:var(--color-surface-raised);border:1px solid var(--color-border);border-radius:var(--radius-sm);margin-bottom:8px;padding:10px 12px}.cooking-log-text{margin-bottom:4px;font-size:.9rem;line-height:1.45}.cooking-log-footer{justify-content:space-between;align-items:center;display:flex}.cooking-log-date{color:var(--color-text-secondary);font-size:.75rem}.cooking-log-delete{cursor:pointer;color:var(--color-text-secondary);background:0 0;border:none;border-radius:4px;align-items:center;padding:2px;transition:color .15s;display:flex}.cooking-log-delete:hover{color:var(--color-accent)}.cooking-log-form{gap:8px;margin-top:4px;display:flex}.cooking-log-form input{border:1.5px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);outline:none;flex:1;padding:8px 12px;font-size:.88rem;transition:border-color .15s}.cooking-log-form input:focus{border-color:var(--color-primary)}.recipe-variants{background:var(--color-card-bg);border:1px solid var(--color-border);border-radius:var(--radius-card);margin:20px 0 4px;padding:14px 16px}.recipe-variants-scroll{-webkit-overflow-scrolling:touch;gap:10px;padding-bottom:4px;display:flex;overflow-x:auto}.variant-card{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-card);cursor:pointer;text-align:left;flex-shrink:0;width:120px;padding:0;transition:border-color .15s;overflow:hidden}.variant-card:hover{border-color:var(--color-primary)}.variant-card-img{object-fit:cover;width:100%;height:72px;display:block}.variant-card-placeholder{background:var(--color-border);width:100%;height:72px}.variant-card-name{text-overflow:ellipsis;white-space:nowrap;color:var(--color-text);padding:6px 8px 2px;font-size:.78rem;font-weight:600;line-height:1.2;display:block;overflow:hidden}.variant-card-rating{color:var(--color-text-secondary);padding:0 8px 6px;font-size:.7rem;display:block}.related-recipes{background:var(--color-card-bg);border:1px solid var(--color-border);border-radius:var(--radius-card);margin:20px 0 4px;padding:14px 16px}.related-recipes-title{text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-secondary);margin:0 0 10px;font-size:.82rem;font-weight:700}.related-recipes-chips{flex-wrap:wrap;gap:8px;display:flex}.related-chip{background:var(--color-bg);border:1px solid var(--color-border);color:var(--color-text);cursor:pointer;border-radius:20px;padding:5px 12px;font-size:.85rem;transition:background .15s,border-color .15s}.related-chip:hover{background:var(--color-primary-bg);border-color:var(--color-primary-light);color:var(--color-primary)}.btn-ingredient-filter{border:1.5px solid var(--color-border);background:var(--color-surface);color:var(--color-text-secondary);cursor:pointer;white-space:nowrap;border-radius:20px;align-items:center;gap:6px;padding:6px 12px;font-size:.85rem;transition:border-color .15s,color .15s,background .15s;display:flex}.btn-ingredient-filter.active{border-color:var(--color-primary);color:var(--color-primary);background:color-mix(in srgb, var(--color-primary) 8%, transparent)}.btn-ingredient-filter:hover{border-color:var(--color-primary);color:var(--color-primary)}.ingredient-filter-row{flex-wrap:wrap;align-items:flex-start;gap:10px;padding:12px 0 4px;display:flex}.ingredient-filter-label{color:var(--color-text-secondary);white-space:nowrap;padding-top:9px;font-size:.85rem;font-weight:600}.ingredient-filter-input-wrapper{flex-direction:column;flex:1;gap:6px;min-width:180px;display:flex;position:relative}.ingredient-filter-input-wrapper>div{align-items:center;gap:6px;display:flex}.ingredient-filter-input{border:1.5px solid var(--color-border);background:var(--color-background);color:var(--color-text);border-radius:8px;flex:1;padding:7px 10px;font-size:.88rem;transition:border-color .15s}.ingredient-filter-input:focus{border-color:var(--color-primary);outline:none}.ingredient-filter-hint{color:var(--color-text-secondary);font-size:.78rem}.quick-log-header{justify-content:space-between;align-items:baseline;margin-bottom:8px;display:flex}.quick-log-header h3{margin:0}.quick-log-progress{color:var(--color-primary-light);font-size:.8rem;font-weight:600}.quick-log-progress.all-done{color:var(--color-primary);background:linear-gradient(135deg, var(--color-primary), #a8d5b0);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:.85rem;animation:2s ease-in-out infinite pulse-glow}@keyframes pulse-glow{0%,to{opacity:1}50%{opacity:.75}}.recommend-view-label{color:var(--color-primary);margin-top:4px;font-size:.78rem;font-weight:600;display:block}.form-help-text{color:var(--color-text-muted);margin:4px 0 0;font-size:.75rem;line-height:1.4}.header-select-btn{color:var(--color-text-secondary)}.header-select-btn.active{color:var(--color-primary);background:var(--color-primary-bg)}@media (width>=768px){.recipe-detail{grid-template-columns:1fr 1fr;gap:0 32px;display:grid}.recipe-detail>.detail-top-bar,.recipe-detail>.detail-error,.recipe-detail>[role=status],.recipe-detail>div:not(.detail-top-bar):not(.detail-hero):not(.detail-content):not(.detail-error){grid-column:1/-1}.detail-hero{top:calc(var(--header-height) + 16px);grid-column:1;align-self:start;min-width:0;position:sticky}.detail-content{grid-column:2;min-width:0}.browser-header{justify-content:space-between;align-items:center;gap:16px;display:flex}.category-bar{flex-wrap:wrap}}.search-mode-toggle{background:var(--color-surface);border-radius:8px;gap:4px;margin-bottom:8px;padding:3px;display:flex}.search-mode-toggle__btn{cursor:pointer;color:var(--color-text-secondary);background:0 0;border:none;border-radius:6px;flex:1;padding:6px 12px;font-size:.82rem;font-weight:600;transition:all .2s}.search-mode-toggle__btn--active{background:var(--color-primary);color:#fff}.search-mode-toggle__label{align-items:center;gap:4px;display:inline-flex}.btn-ai-toggle{border:1.5px solid var(--color-border);background:var(--color-surface);color:var(--color-text-secondary);cursor:pointer;white-space:nowrap;letter-spacing:.02em;border-radius:12px;align-items:center;gap:4px;padding:4px 8px;font-size:.72rem;font-weight:700;transition:all .15s;display:inline-flex}.btn-ai-toggle.active{border-color:var(--color-primary);background:var(--color-primary);color:#fff}.btn-ai-toggle:hover:not(.active){border-color:var(--color-primary);color:var(--color-primary)}.filter-macgyver-link{color:var(--color-text-secondary);cursor:pointer;white-space:nowrap;opacity:.75;background:0 0;border:none;margin-left:auto;padding:0;font-size:.72rem;text-decoration:none}.filter-macgyver-link:hover{color:var(--color-primary);opacity:1;text-decoration:underline}.recipe-sub-nav{margin-bottom:8px}.magic-wand-btn{position:relative;overflow:hidden}.magic-wand-btn:active{transform:scale(.98)}.magic-icon{animation:3s ease-in-out infinite magicFloat}@keyframes magicFloat{0%,to{transform:rotate(-5deg)translateY(0)}50%{transform:rotate(5deg)translateY(-2px)}}.magic-card-reveal{border:2px solid var(--color-primary);background:var(--color-surface);position:relative;overflow:hidden}.magic-card-reveal:before{content:"";pointer-events:none;background:linear-gradient(45deg,#0000 40%,#fff6 50%,#0000 60%) 0 0/200% 200%;animation:2s infinite magicShimmer;position:absolute;inset:0}@keyframes magicShimmer{0%{background-position:-100% -100%}to{background-position:100% 100%}}.smart-search__interpretation{background:var(--color-primary-light,#6366f11a);color:var(--color-primary);text-overflow:ellipsis;border-radius:16px;align-items:center;gap:6px;max-width:100%;margin-bottom:8px;padding:4px 12px;font-size:.78rem;font-weight:500;display:inline-flex;overflow:hidden}.smart-search__loading{flex-direction:column;align-items:center;gap:12px;padding:32px 16px;display:flex}.smart-search__dots{align-items:center;gap:6px;display:flex}.smart-search__dot{background:var(--color-primary);border-radius:50%;width:8px;height:8px;animation:1.4s ease-in-out infinite smartSearchPulse}@keyframes smartSearchPulse{0%,80%,to{opacity:.3;transform:scale(.8)}40%{opacity:1;transform:scale(1.2)}}.smart-search__loading-text{color:var(--color-text-secondary);font-size:.85rem}.smart-search__error{background:var(--color-error-bg,#ef44441a);color:var(--color-error,#ef4444);text-align:center;border-radius:8px;margin-bottom:8px;padding:12px 16px;font-size:.85rem}.smart-search__relevance{color:var(--color-text-secondary);background:var(--color-surface);border-top:1px solid var(--color-border,#0000000f);border-radius:0 0 8px 8px;margin-top:-4px;padding:4px 10px;font-size:.72rem;line-height:1.3}.smart-search__placeholder{text-align:center;color:var(--color-text-secondary);padding:24px 16px;font-size:.85rem}.smart-search__placeholder-title{margin-bottom:12px;font-weight:500}.smart-search__suggestions{flex-wrap:wrap;justify-content:center;gap:6px;display:flex}.smart-search__suggestion-chip{border:1px solid var(--color-border,#0000001a);background:var(--color-bg);color:var(--color-text-secondary);cursor:pointer;border-radius:16px;padding:6px 12px;font-size:.78rem;transition:all .2s}.smart-search__suggestion-chip:hover{border-color:var(--color-primary);color:var(--color-primary)}.bulk-action-bar{background:var(--color-surface);border:1px solid var(--color-border,#0000001a);z-index:200;border-radius:12px;align-items:center;gap:10px;min-width:320px;max-width:calc(100vw - 32px);padding:10px 16px;display:flex;position:fixed;bottom:72px;left:50%;transform:translate(-50%);box-shadow:0 4px 20px #0000002e}.bulk-action-bar__count{color:var(--color-text);flex:1;font-size:.875rem;font-weight:600}.bulk-action-bar__btn{border:1px solid var(--color-border,#0000001f);background:var(--color-bg);color:var(--color-text-secondary);cursor:pointer;border-radius:8px;align-items:center;gap:6px;padding:7px 12px;font-size:.82rem;font-weight:500;display:flex}.bulk-action-bar__btn:hover{border-color:var(--color-primary);color:var(--color-primary)}.bulk-action-bar__btn--danger{background:var(--color-error,#ef4444);color:#fff;border:none;font-weight:600}.bulk-action-bar__btn--danger:hover{background:var(--color-error,#ef4444);color:#fff;filter:brightness(1.1)}.bulk-action-bar__btn--danger:disabled{cursor:default;opacity:.6}.ingredient-autocomplete{flex-direction:column;gap:6px;display:flex;position:relative}.ingredient-autocomplete__tags{flex-wrap:wrap;gap:4px;display:flex}.ingredient-autocomplete__tag{background:var(--color-primary-bg,#6b9a781a);color:var(--color-primary);border-radius:14px;align-items:center;gap:4px;padding:3px 8px;font-size:.78rem;font-weight:500;display:inline-flex}.ingredient-autocomplete__tag-remove{cursor:pointer;color:inherit;opacity:.7;background:0 0;border:none;align-items:center;padding:0;transition:opacity .15s;display:flex}.ingredient-autocomplete__tag-remove:hover{opacity:1}.ingredient-autocomplete__input-wrapper{align-items:center;display:flex;position:relative}.ingredient-autocomplete__dropdown{z-index:20;background:var(--color-surface,#fff);border:1px solid var(--color-border);border-radius:var(--radius-sm,8px);max-height:200px;margin:0;padding:4px 0;list-style:none;position:absolute;top:100%;left:0;right:0;overflow-y:auto;box-shadow:0 4px 12px #0000001a}.ingredient-autocomplete__option{cursor:pointer;padding:8px 12px;font-size:.85rem;transition:background .1s}.ingredient-autocomplete__option:hover,.ingredient-autocomplete__option--highlighted{background:var(--color-primary-bg,#6b9a781a)}.recently-cooked__card-wrapper{position:relative}.recently-cooked__badge{z-index:3;color:#fff;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);pointer-events:none;background:#000000a6;border-radius:12px;align-items:center;gap:4px;padding:3px 8px;font-size:.7rem;font-weight:500;display:inline-flex;position:absolute;top:8px;left:8px}.quick-view-drawer__image{border-radius:var(--radius,12px);width:100%;height:200px;margin-bottom:14px;overflow:hidden}.quick-view-drawer__image img{object-fit:cover;width:100%;height:100%}.quick-view-drawer__title{font-family:var(--font-serif,"DM Serif Display"), serif;color:var(--color-text);margin:0 0 8px;font-size:1.3rem;font-weight:400}.quick-view-drawer__meta{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:16px;display:flex}.quick-view-drawer__time{color:var(--color-text-secondary);font-size:.85rem}.quick-view-drawer__ingredients{margin-bottom:20px}.quick-view-drawer__section-title{text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-secondary);margin:0 0 8px;font-size:.78rem;font-weight:600}.quick-view-drawer__ingredient-list{color:var(--color-text);margin:0;padding:0 0 0 20px;font-size:.9rem;line-height:1.7}.quick-view-drawer__more{color:var(--color-text-muted);margin-top:4px;font-size:.8rem;display:block}.quick-view-drawer__actions{gap:10px;display:flex}.quick-view-drawer__actions .btn-primary,.quick-view-drawer__actions .btn-secondary{flex:1}.category-page{max-width:1100px;margin:0 auto;padding:0 16px 40px}.category-page-back{color:var(--color-text-secondary);align-items:center;gap:4px;padding:10px 0 6px;font-size:.88rem;font-weight:500;text-decoration:none;transition:color .15s;display:inline-flex}.category-page-back:hover{color:var(--color-primary)}.category-page-hero{background:linear-gradient(135deg, color-mix(in srgb, var(--category-color) 8%, transparent) 0%, transparent 60%);border-radius:16px;margin-bottom:8px;padding:28px 24px 24px;position:relative}.category-page-hero-title{font-family:var(--font-serif,"DM Serif Display", serif);color:var(--color-text);margin:0 0 8px;font-size:2rem;font-weight:400;line-height:1.15}.category-page-hero-desc{color:var(--color-text-secondary);max-width:600px;margin:0 0 14px;font-size:.95rem;line-height:1.55}.category-page-hero-count{color:var(--color-text-secondary);background:var(--color-surface);border:1px solid var(--color-border);border-radius:20px;padding:3px 12px;font-size:.78rem;font-weight:600;display:inline-block}.category-page-hero-accent{background:var(--category-color);opacity:.5;border-radius:3px;height:3px;position:absolute;bottom:0;left:24px;right:24px}.category-page-filters{flex-wrap:wrap;align-items:center;gap:10px;padding:14px 0 18px;display:flex}.category-filter-select{border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text);cursor:pointer;appearance:auto;border-radius:8px;padding:6px 28px 6px 10px;font-size:.82rem;font-weight:500}.category-filter-chips{gap:4px;display:flex}.category-filter-chip{border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text-secondary);cursor:pointer;border-radius:20px;padding:5px 12px;font-size:.8rem;font-weight:500;transition:all .15s}.category-filter-chip:hover{border-color:var(--color-text-muted)}.category-filter-chip--active{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.category-filter-chip--active:hover{border-color:var(--color-primary)}@media (width<=600px){.category-page-hero-title{font-size:1.6rem}.category-page-hero{padding-left:16px;padding-right:16px}.category-page-hero-accent{left:16px;right:16px}.category-page-filters{gap:8px}}.cook-mode{background:var(--color-bg);z-index:100;flex-direction:column;padding:16px;display:flex;position:fixed;inset:0;overflow-y:auto}.cook-mode-header{justify-content:space-between;align-items:center;gap:8px;margin-bottom:16px;display:flex}.cook-exit{color:var(--color-text);cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:none;align-items:center;gap:4px;min-width:44px;min-height:44px;padding:10px 14px;font-size:.88rem;display:flex}.cook-exit:hover{background:var(--color-border)}.cook-recipe-name{text-align:center;text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:1rem;font-weight:600;overflow:hidden}.cook-ingredients-toggle{border:1px solid var(--color-border);color:var(--color-text);cursor:pointer;border-radius:var(--radius-sm);background:0 0;align-items:center;min-width:44px;min-height:44px;padding:10px;display:flex}.cook-ingredients-toggle.active{background:var(--color-primary-bg);border-color:var(--color-primary);color:var(--color-primary)}.cook-servings-stepper{background:var(--color-surface-raised);border:1px solid var(--color-border);border-radius:8px;align-items:center;gap:4px;padding:2px 4px;display:flex}.cook-servings-btn{cursor:pointer;color:var(--color-accent);background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;min-width:44px;min-height:44px;padding:0;font-size:1rem;font-weight:700;display:flex}.cook-servings-btn:hover{background:var(--color-border)}.cook-servings-count{text-align:center;min-width:20px;color:var(--color-text);font-size:.82rem;font-weight:600}.cook-ingredients-panel{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);max-height:min(40vh,300px);margin-bottom:16px;padding:14px 16px;overflow-y:auto}.cook-ingredients-panel h3{margin-bottom:8px;font-size:.9rem;font-weight:600}.cook-ingredients-panel ul{padding-left:18px;font-size:.88rem;line-height:1.6;list-style:outside}.cook-step-counter{text-align:center;color:var(--color-text-secondary);margin-bottom:8px;font-size:.82rem}.cook-step-content{flex:1;justify-content:center;align-items:center;padding:24px 16px;animation:.22s cookStepIn;display:flex}.cook-step-text{font-size:var(--text-cook);text-align:center;color:var(--color-text);line-height:1.6}.cook-step-progress{flex-wrap:wrap;justify-content:center;gap:6px;margin-bottom:16px;display:flex}.cook-progress-dot{background:var(--color-border);cursor:pointer;background-clip:content-box;border-radius:50%;width:10px;height:10px;padding:12px;transition:background .15s}.cook-progress-dot.current{background:var(--color-primary);transform:scale(1.3)}.cook-progress-dot.done{background:var(--color-primary-light)}.cook-nav-buttons{gap:12px;margin-bottom:16px;display:flex}.cook-nav-btn{flex:1;padding:14px;font-size:1rem}.cook-nav-btn.cook-done{background:var(--color-accent)}.cook-timer-section{text-align:center;border-top:1px solid var(--color-border);padding:12px 0}.cook-timer-btn{border:1px solid var(--color-border);color:var(--color-text);cursor:pointer;border-radius:var(--radius);background:0 0;align-items:center;gap:6px;padding:8px 16px;font-size:.9rem;display:inline-flex}.cook-timer-btn:hover{background:var(--color-primary-bg)}.cook-timer-input{justify-content:center;align-items:center;gap:8px;display:flex}.cook-timer-input input{border:1px solid var(--color-border);border-radius:var(--radius-sm);text-align:center;width:80px;padding:8px;font-size:1rem}.cook-timer-active{justify-content:center;align-items:center;gap:12px;display:flex}.cook-timer-display{font-variant-numeric:tabular-nums;color:var(--color-primary);font-size:2rem;font-weight:700}.cook-timer-display.timer-done{color:var(--color-timer-done);animation:.5s infinite alternate timer-pulse}.cook-mode-start-btn{justify-content:center;align-items:center;gap:8px;width:100%;margin:16px 0;padding:14px;font-size:1rem;display:flex}.cook-fab{bottom:calc(var(--nav-height) + var(--footer-height) + var(--space-4));right:var(--space-4);z-index:50;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-5);background:var(--color-primary);color:var(--color-text-inverse);border-radius:var(--radius-full);font-size:var(--text-sm);cursor:pointer;box-shadow:var(--shadow-lg);border:none;font-weight:600;transition:background .15s,transform .15s;display:flex;position:fixed}.cook-fab:hover{background:var(--color-primary-dark);transform:translateY(-1px)}.cook-fab:active{transform:translateY(0)}.cook-step-completed-count{color:var(--color-text-secondary);margin-left:8px;font-size:.8rem;font-weight:400}.cook-step-text{transition:opacity .2s;position:relative}.cook-step-text.step-completed{opacity:.5}.cook-step-text.step-completed p{color:var(--color-text-secondary);text-decoration:line-through}@media (width>=768px){.cook-step-text p{font-size:1.35rem;line-height:1.7}.cook-recipe-name{font-size:1.2rem}.cook-step-counter{font-size:.95rem}}.step-check-btn{cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;min-width:44px;min-height:44px;margin:12px auto 0;padding:10px;transition:transform .15s;display:flex}.step-check-btn:hover{transform:scale(1.1)}.step-auto-timer{background:var(--color-primary-bg);color:var(--color-primary);border:1px solid var(--color-primary);cursor:pointer;border-radius:20px;align-items:center;gap:6px;margin:12px auto 0;padding:8px 16px;font-size:.85rem;font-weight:500;transition:background-color .15s,color .15s;display:flex}.step-auto-timer:hover{background:var(--color-primary);color:var(--color-text-inverse)}.cook-progress-dot.completed{background:var(--color-primary)}.cook-ingredients-panel li{align-items:center;gap:8px;padding:4px 0;display:flex}.cook-ingredients-panel li.ingredient-checked{opacity:.5}.ingredient-check-icon{color:var(--color-grocery-needed);flex-shrink:0;align-items:center;display:flex}.ingredient-checked .ingredient-check-icon{color:var(--color-grocery-on-hand)}.text-strikethrough{color:var(--color-text-secondary);text-decoration:line-through}.cook-celebration-screen{background:var(--color-bg);justify-content:center;align-items:center}.cook-celebration-content{flex-direction:column;align-items:center;gap:12px;animation:.4s celebrationFadeIn;display:flex}.cook-celebration-icon{font-size:4rem;animation:.6s checkBounce}.cook-celebration-title{color:var(--color-primary);background:linear-gradient(135deg, var(--color-primary), var(--color-accent));-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;margin:0;font-size:2rem;font-weight:700}.cook-celebration-recipe{color:var(--color-text-secondary);text-align:center;margin:0;font-size:1rem}.session-review-overlay{flex-direction:column;align-items:center;gap:20px;max-width:480px;margin:0 auto;padding:24px 16px;animation:.3s celebrationFadeIn;display:flex}.session-review-overlay h2{margin:0;font-size:1.5rem}.session-review-recipe{color:var(--color-text-secondary);margin:0;font-size:1.1rem}.session-review-header-icon{background:color-mix(in srgb, var(--color-primary) 15%, var(--color-surface));border:2px solid var(--color-primary);width:52px;height:52px;color:var(--color-primary);border-radius:50%;justify-content:center;align-items:center;font-size:1.5rem;font-weight:700;animation:.5s checkBounce;display:flex}.session-review-stars{gap:4px;display:flex}.review-star{cursor:pointer;color:var(--color-text-muted);background:0 0;border:none;justify-content:center;align-items:center;min-width:44px;min-height:44px;padding:10px;transition:transform .1s;display:flex}.review-star:hover{transform:scale(1.15)}.review-star.filled{color:var(--color-warning)}.session-review-tags{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.review-tag-pill{border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text);cursor:pointer;border-radius:20px;padding:6px 14px;font-size:.82rem;transition:border-color .15s,color .15s,background-color .15s}.review-tag-pill.active{background:var(--color-primary-bg);border-color:var(--color-primary);color:var(--color-primary);font-weight:500}.session-review-note{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);width:100%;color:var(--color-text);resize:vertical;padding:10px 12px;font-family:inherit;font-size:.9rem}.session-review-actions{gap:12px;width:100%;display:flex}.session-review-actions .btn-primary{flex:1}.session-review-actions .btn-secondary{white-space:nowrap;flex:0}.unit-toggle{color:var(--color-text-secondary);align-items:center;gap:6px;font-size:.8rem;display:flex}.unit-toggle-switch{cursor:pointer;background:0 0;border:none;flex-shrink:0;width:44px;height:44px;padding:0;position:relative}.unit-toggle-switch:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px;border-radius:var(--radius-sm)}.unit-toggle-switch:before{content:"";background:var(--color-border);border-radius:11px;width:40px;height:22px;transition:background .2s;position:absolute;top:11px;left:2px}.unit-toggle-switch.active:before{background:var(--color-primary)}.unit-toggle-switch:after{content:"";background:var(--color-surface);border-radius:50%;width:18px;height:18px;transition:transform .2s;position:absolute;top:13px;left:4px}.unit-toggle-switch.active:after{transform:translate(18px)}.home-quick-log{background:var(--color-surface);border-radius:var(--radius);box-shadow:var(--shadow);margin-top:20px;padding:16px}.home-quick-log h3{color:var(--color-text);margin:0 0 12px;font-size:1rem;font-weight:600}.quick-log-list{flex-direction:column;gap:8px;display:flex}.quick-log-item{border-radius:var(--radius-sm);background:var(--color-bg);justify-content:space-between;align-items:center;padding:8px 12px;transition:opacity .2s;display:flex}.quick-log-item.logged{opacity:.6}.quick-log-name{cursor:pointer;color:var(--color-text);flex:1;font-size:.9rem}.quick-log-name:hover{color:var(--color-primary);text-decoration:underline}.quick-log-check{color:var(--color-primary);align-items:center;display:flex}.quick-log-btn{flex-shrink:0}.cook-hint-overlay{z-index:200;background:var(--color-overlay-dark);justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.cook-hint-card{background:var(--color-surface-raised);border-radius:var(--radius-lg);width:100%;max-width:340px;box-shadow:var(--shadow-lg);padding:28px 24px 24px}.cook-hint-card h3{margin:0 0 16px;font-size:1.1rem}.cook-hint-card ul{flex-direction:column;gap:8px;margin:0 0 20px;padding-left:18px;display:flex}.cook-hint-card li{color:var(--color-text);font-size:.9rem;line-height:1.45}@media (orientation:landscape) and (height<=500px){.cook-mode{grid-template-rows:auto 1fr auto;grid-template-columns:300px 1fr;padding:0;display:grid;overflow:hidden}.cook-mode-header{border-bottom:1px solid var(--color-border);background:var(--color-surface);grid-column:1/-1;margin-bottom:0;padding:8px 16px}.cook-ingredients-panel{border:none;border-right:1px solid var(--color-border);border-radius:0;grid-area:2/1/4;max-height:none;margin:0;display:block!important}.cook-step-content{grid-area:2/2;padding:16px;overflow-y:auto}.cook-nav-buttons{background:var(--color-surface);border-top:1px solid var(--color-border);grid-area:3/2;margin:0;padding:12px 16px}.cook-timer-section{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);padding:8px 12px;position:absolute;bottom:80px;right:16px}.cook-step-text{text-align:left;font-size:1.2rem}}.home-page{text-align:center;box-sizing:border-box;max-width:100vw;padding:24px 0;overflow-x:hidden}.home-page h2{color:var(--color-text);margin-bottom:0;font-size:1.3rem}.home-greeting-row{flex-wrap:wrap;justify-content:center;align-items:center;gap:10px;margin-bottom:24px;display:flex}.home-streak-badge{color:var(--color-streak);background:var(--color-streak-bg);border:1px solid color-mix(in srgb, var(--color-streak) 35%, transparent);border-radius:var(--radius-full);cursor:default;white-space:nowrap;align-items:center;gap:4px;padding:3px 10px;font-size:.78rem;font-weight:700;animation:2.5s infinite streakPulse;display:inline-flex}.home-cards{flex-direction:column;gap:12px;display:flex}.home-card{background:var(--color-surface);border:2px solid var(--color-border);border-radius:var(--radius);cursor:pointer;-webkit-tap-highlight-color:transparent;color:var(--color-primary);font-family:inherit;font-size:inherit;flex-direction:column;align-items:center;gap:6px;padding:24px 16px;transition:border-color .15s,box-shadow .15s,transform .1s;display:flex}.home-card:hover{border-color:var(--color-primary);box-shadow:var(--shadow-md);transform:translateY(-2px)}.home-card svg{color:var(--color-primary);margin-bottom:4px}.home-card-title{color:var(--color-text);font-size:1.1rem;font-weight:700}.home-card-desc{color:var(--color-text-secondary);font-size:.85rem}.home-learn-more{border-top:1px solid var(--color-border);justify-content:center;gap:24px;max-width:400px;margin-top:32px;margin-left:auto;margin-right:auto;padding-top:24px;display:flex}.home-learn-link{color:var(--color-primary);cursor:pointer;background:0 0;border:none;align-items:center;gap:6px;padding:6px 2px;font-family:inherit;font-size:.9rem;font-weight:500;transition:opacity .15s;display:inline-flex}.home-learn-link:hover{opacity:.75;text-decoration:underline}.home-recently-viewed{margin:20px 0 0;overflow:hidden}.recently-viewed-header{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.recently-viewed-header h3{color:var(--color-text);margin:0;font-size:1rem;font-weight:600}.recently-viewed-clear{color:var(--color-text-secondary);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:2px 6px;font-size:.78rem;transition:color .15s}.recently-viewed-clear:hover{color:var(--color-primary)}.recently-viewed-chips{scrollbar-width:none;gap:8px;max-width:100%;padding-bottom:4px;display:flex;overflow-x:auto}.recently-viewed-chips::-webkit-scrollbar{display:none}.recent-chip{background:var(--color-surface);border:1.5px solid var(--color-border);cursor:pointer;white-space:nowrap;text-align:left;border-radius:10px;flex-direction:column;flex-shrink:0;align-items:flex-start;gap:2px;padding:8px 12px;transition:border-color .15s,background .15s;display:flex}.recent-chip:hover{border-color:var(--color-primary);background:color-mix(in srgb, var(--color-primary) 6%, transparent)}.recent-chip-name{color:var(--color-text);font-size:.88rem;font-weight:600}.recent-chip-category{color:var(--color-text-secondary);font-size:.72rem}.home-recommendation{background:var(--color-surface);border:1.5px solid var(--color-border);border-radius:14px;margin-top:20px;margin-bottom:0;padding:14px 16px}.home-rec-label{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.home-rec-content{justify-content:space-between;align-items:center;gap:12px;display:flex}.home-rec-img{object-fit:cover;border-radius:10px;flex-shrink:0;width:60px;height:60px}.home-rec-info{flex:1;min-width:0}.home-rec-name{color:var(--color-text);white-space:nowrap;text-overflow:ellipsis;margin-bottom:4px;font-size:1.05rem;font-weight:700;display:block;overflow:hidden}.home-rec-meta{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.home-rec-category{color:var(--color-text-secondary);font-size:.78rem}.home-rec-difficulty{border-radius:10px;padding:2px 7px;font-size:.72rem;font-weight:600}.home-rec-difficulty.difficulty-easy{background:color-mix(in srgb, var(--color-success) 15%, var(--color-surface));color:var(--color-success)}.home-rec-difficulty.difficulty-medium{background:color-mix(in srgb, var(--color-warning) 15%, var(--color-surface));color:var(--color-warning)}.home-rec-difficulty.difficulty-hard{background:color-mix(in srgb, var(--color-error) 12%, var(--color-surface));color:var(--color-error)}.home-rec-time{color:var(--color-text-secondary);font-size:.78rem}.home-rec-label-left{text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-muted);align-items:center;gap:5px;margin-bottom:0;font-size:.72rem;font-weight:700;display:flex}.home-rec-refresh{cursor:pointer;color:var(--color-text-muted);border-radius:var(--radius-sm);background:0 0;border:none;align-items:center;padding:4px;transition:color .15s;display:flex}.home-rec-refresh:hover{color:var(--color-primary)}.home-rec-clickable{text-align:left;cursor:pointer;background:0 0;border:none;border-radius:0;width:100%;padding:0}.home-rec-clickable:hover .home-rec-name{color:var(--color-primary)}.home-rec-arrow{color:var(--color-text-muted);flex-shrink:0;transition:transform .15s}.home-rec-clickable:hover .home-rec-arrow{color:var(--color-primary);transform:translate(2px)}.spinning{animation:.7s linear infinite spin}.home-empty-state{text-align:center;background:var(--color-surface);border-radius:var(--radius);border:1px dashed var(--color-border);margin-top:16px;padding:24px 16px}.home-bootstrap-banner{text-align:center;background:var(--color-primary-bg);border-radius:var(--radius);border:1px solid var(--color-primary-light);margin:16px 0;padding:28px 20px}.home-bootstrap-icon{color:var(--color-primary);margin-bottom:12px}.home-bootstrap-title{margin-bottom:8px;font-size:1.1rem;font-weight:600}.home-bootstrap-desc{color:var(--color-text-secondary);margin-bottom:16px;font-size:.9rem}.home-bootstrap-actions{flex-wrap:wrap;justify-content:center;gap:10px;display:flex}.home-empty-state p{color:var(--color-text-secondary);margin-bottom:12px}.home-sections{text-align:left;flex-direction:column;gap:8px;margin-top:8px;display:flex}.home-section{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden}.home-section-header{cursor:pointer;width:100%;font-family:var(--font-sans);color:var(--color-text);background:0 0;border:none;justify-content:space-between;align-items:center;padding:14px 16px;transition:background .15s;display:flex}.home-section-header:hover{background:var(--color-primary-bg)}.home-section-title{color:var(--color-text);align-items:center;gap:8px;font-size:.95rem;font-weight:600;display:flex}.home-section-title svg{color:var(--color-primary);flex-shrink:0}.home-section-chevron{color:var(--color-text-muted);flex-shrink:0;transition:transform .2s}.home-section-chevron.open{transform:rotate(180deg)}.home-section-body{border-top:1px solid var(--color-border);padding:0 12px 14px}.hub-links-grid{flex-direction:column;gap:2px;margin-top:8px;display:flex}.hub-link-card{border-radius:var(--radius);cursor:pointer;text-align:left;width:100%;font-family:var(--font-sans);color:var(--color-text);background:0 0;border:none;align-items:center;gap:12px;padding:10px 8px;transition:background .15s;display:flex}.hub-link-card:hover{background:var(--color-primary-bg)}.hub-link-icon{color:var(--color-primary);flex-shrink:0;justify-content:center;align-items:center;width:32px;display:flex}.hub-link-text{flex-direction:column;gap:1px;display:flex}.hub-link-title{color:var(--color-text);font-size:.9rem;font-weight:600}.hub-link-desc{color:var(--color-text-secondary);font-size:.75rem}.hub-steps{flex-direction:column;gap:16px;margin-top:12px;display:flex}.hub-step{align-items:flex-start;gap:14px;display:flex}.hub-step-num{border-radius:var(--radius-full);background:var(--color-primary);width:28px;height:28px;color:var(--color-text-inverse);flex-shrink:0;justify-content:center;align-items:center;margin-top:2px;font-size:.85rem;font-weight:700;display:flex}.hub-step-content{flex:1}.hub-step-content strong{color:var(--color-text);margin-bottom:2px;font-size:.95rem;font-weight:600;display:block}.hub-step-content p{color:var(--color-text-secondary);margin:0;font-size:.82rem;line-height:1.5}.hub-feature-chips{flex-wrap:wrap;gap:8px;padding-top:12px;display:flex}.hub-feature-chip{background:var(--color-primary-bg);color:var(--color-primary-dark);border:1px solid color-mix(in srgb, var(--color-primary) 30%, transparent);cursor:pointer;text-align:left;border-radius:12px;flex-direction:column;gap:4px;padding:4px 12px;font-size:.78rem;font-weight:500;transition:background .15s,border-color .15s;display:flex}.hub-feature-chip.expanded{background:color-mix(in srgb, var(--color-primary) 12%, var(--color-surface));border-color:var(--color-primary);white-space:normal;border-radius:12px}.hub-feature-chip:not(.expanded){white-space:nowrap}.hub-feature-chip-title{font-weight:600}.hub-feature-chip-desc{color:var(--color-primary-dark);opacity:.85;font-size:.75rem;font-weight:400;line-height:1.4}.home-sections-divider{color:var(--color-text-muted);letter-spacing:.08em;text-transform:uppercase;align-items:center;gap:12px;margin:28px 0 0;font-size:.72rem;font-weight:600;display:flex}.home-sections-divider:before,.home-sections-divider:after{content:"";background:var(--color-border);flex:1;height:1px}.home-rec-staleness{color:var(--color-text-muted);margin-top:3px;font-size:.7rem;font-style:italic;display:block}.home-rec-seasonal-hint{opacity:.85;cursor:default;font-size:.85rem;line-height:1}.home-recs-section{text-align:left;margin-top:20px}.home-recs-heading{color:var(--color-text);margin:0 0 10px;font-size:1rem;font-weight:600}.home-recs-scroll-wrapper{scrollbar-width:none;padding:0 20px 12px;overflow:auto visible}.home-recs-scroll-wrapper::-webkit-scrollbar{display:none}.home-recs-scroll{gap:12px;width:max-content;display:flex}.home-recs-card{background:var(--color-surface);border:1.5px solid var(--color-border);cursor:pointer;text-align:left;color:inherit;border-radius:12px;flex-direction:column;flex:0 0 140px;padding:0;font-family:inherit;transition:border-color .15s,box-shadow .15s,transform .1s;display:flex;overflow:hidden}.home-recs-card:hover{border-color:var(--color-primary);box-shadow:var(--shadow-md);transform:translateY(-2px)}.home-recs-card-img{object-fit:cover;width:100%;height:90px;display:block}.home-recs-card-placeholder{background:var(--color-primary-bg);width:100%;height:90px;color:var(--color-text-muted);justify-content:center;align-items:center;display:flex}.home-recs-card-body{flex-direction:column;gap:2px;padding:8px 10px 10px;display:flex}.home-recs-card-name{color:var(--color-text);white-space:nowrap;text-overflow:ellipsis;font-size:.82rem;font-weight:600;overflow:hidden}.home-recs-card:hover .home-recs-card-name{color:var(--color-primary)}.home-recs-card-category{color:var(--color-text-secondary);font-size:.7rem}.home-recs-card-skeleton{border-radius:12px;flex-direction:column;flex:0 0 140px;gap:6px;display:flex;overflow:hidden}.rec-info-icon-btn{cursor:pointer;color:var(--color-text-muted);vertical-align:middle;background:0 0;border:none;align-items:center;padding:0 2px;line-height:1;display:inline-flex}.rec-info-icon-btn:hover{color:var(--color-primary)}.rec-info-popover{z-index:20;background:var(--color-surface-raised);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text);max-width:260px;box-shadow:var(--shadow-md);padding:8px 32px 8px 10px;font-size:.78rem;line-height:1.4;position:absolute;top:100%;left:0}.rec-info-close{cursor:pointer;color:var(--color-text-muted);background:0 0;border:none;padding:2px;font-size:.75rem;position:absolute;top:4px;right:6px}.home-rec-label-left{position:relative}.week-meal-overflow .overflow-menu-trigger{background:0 0;border:none;width:28px;height:28px}@media (width<=480px){.home-page{padding:24px 4px}.home-page h2{font-size:1.15rem}.home-recs-scroll{gap:10px;margin-left:-4px;margin-right:-4px;padding-left:4px;padding-right:4px}.home-recs-card{flex:0 0 120px}.home-recs-card-img{height:75px}.home-recs-card-body{padding:6px 8px 8px}.home-recs-card-name{font-size:.78rem}.home-recs-card-category{font-size:.65rem}.home-rec-name{font-size:.95rem}.home-rec-img{border-radius:8px;width:50px;height:50px}.home-greeting-row{margin-bottom:16px}.home-recommendation{padding:12px 14px}.recently-viewed-chips{margin-left:-12px;margin-right:-12px;padding-left:12px;padding-right:12px}.home-learn-more{gap:16px}}.pantry-manager{padding-bottom:calc(var(--nav-height) + var(--footer-height) + 80px)}.pantry-manager h2{margin-bottom:4px;font-size:1.3rem}.pantry-subtitle{color:var(--color-text-secondary);margin-bottom:16px;font-size:.88rem}.pantry-category{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);margin-bottom:12px;padding:14px 16px}.pantry-cat-header{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.pantry-cat-header h3{text-transform:capitalize;font-size:.95rem;font-weight:700}.pantry-items{flex-wrap:wrap;gap:6px;margin-bottom:10px;display:flex}.pantry-item{background:var(--color-primary-bg);border-radius:14px;align-items:center;gap:4px;padding:4px 10px;font-size:.82rem;display:inline-flex}.pantry-item-remove{cursor:pointer;color:var(--color-text-secondary);background:0 0;border:none;align-items:center;padding:0;display:flex}.pantry-item-remove:hover{color:var(--color-accent)}.pantry-add-row{gap:8px;display:flex}.pantry-add-input{border:1.5px solid var(--color-border);border-radius:var(--radius-sm);outline:none;flex:1;padding:6px 10px;font-size:.85rem}.pantry-add-input:focus{border-color:var(--color-primary)}.pantry-search-bar{align-items:center;margin-bottom:16px;display:flex;position:relative}.pantry-search-icon{color:var(--color-text-secondary);pointer-events:none;flex-shrink:0;position:absolute;left:10px}.pantry-search-input{border:1.5px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);width:100%;color:var(--color-text);outline:none;padding:8px 36px 8px 34px;font-size:.88rem}.pantry-search-input:focus{border-color:var(--color-primary)}.pantry-search-clear{cursor:pointer;color:var(--color-text-secondary);background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;padding:2px;line-height:1;display:flex;position:absolute;right:8px}.pantry-search-clear:hover{color:var(--color-accent);background:var(--color-primary-bg)}.pantry-search-highlight{background:var(--color-primary-bg);color:var(--color-primary);border-radius:2px;padding:0 1px;font-weight:600}.pantry-new-category{gap:8px;margin-top:8px;margin-bottom:20px;display:flex}.pantry-save-bar{bottom:calc(var(--nav-height) + var(--footer-height));background:var(--color-surface);border-top:1px solid var(--color-border);text-align:center;z-index:9;padding:12px 16px;position:fixed;left:0;right:0}.settings-nav-links{border-bottom:1px solid var(--color-border);gap:16px;margin-bottom:20px;padding:12px 0;display:flex}.settings-nav-links .btn-text{color:var(--color-primary);font-size:.88rem}.analytics-page{max-width:700px}.analytics-stats-grid{grid-template-columns:repeat(2,1fr);gap:10px;margin-bottom:24px;display:grid}@media (width>=500px){.analytics-stats-grid{grid-template-columns:repeat(4,1fr)}}.analytics-stat-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);text-align:center;padding:16px}.analytics-stat-number{color:var(--color-primary);font-size:1.8rem;font-weight:700;display:block}.analytics-stat-label{color:var(--color-text-secondary);margin-top:4px;font-size:.75rem;display:block}.analytics-section{margin-bottom:24px}.analytics-section h3{color:var(--color-text);margin-bottom:12px;font-size:1rem;font-weight:600}.analytics-bar-chart{flex-direction:column;gap:6px;display:flex}.analytics-bar-row,.analytics-rating-row{align-items:center;gap:8px;display:flex}.analytics-bar-label{width:120px;color:var(--color-text);text-overflow:ellipsis;white-space:nowrap;flex-shrink:0;font-size:.82rem;overflow:hidden}.analytics-bar-track{background:var(--color-border);border-radius:4px;flex:1;height:20px;overflow:hidden}.analytics-bar-fill{background:var(--color-primary);border-radius:4px;min-width:4px;height:100%;transition:width .3s}.analytics-bar-fill.bar-alt{background:var(--color-primary-light)}.analytics-bar-fill.bar-rating{background:var(--color-warning)}.analytics-bar-value{width:35px;color:var(--color-text-secondary);text-align:right;flex-shrink:0;font-size:.8rem}.analytics-rating-star{width:30px;color:var(--color-warning);flex-shrink:0;font-size:.82rem}.analytics-nav-links{text-align:center;border-top:1px solid var(--color-border);padding-top:16px}.analytics-empty-state{text-align:center;flex-direction:column;align-items:center;gap:12px;padding:48px 20px;display:flex}.analytics-empty-state h3{margin:0;font-size:1.1rem}.analytics-empty-state p{color:var(--color-text-secondary);margin:0 0 12px}.collections-page{max-width:700px}.collections-subtitle{color:var(--color-text-secondary);margin-bottom:16px;font-size:.9rem}.collection-create-form{gap:8px;margin-bottom:20px;display:flex}.collection-create-form input{border:1px solid var(--color-border);border-radius:var(--radius-sm);flex:1;padding:8px 12px;font-size:.9rem}.collections-empty{color:var(--color-text-secondary);text-align:center;padding:24px;font-size:.9rem}.collections-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px;display:grid}.collection-card{background:var(--color-surface);border:1px solid var(--color-border);cursor:pointer;border-radius:14px;flex-direction:column;transition:border-color .15s,box-shadow .15s;display:flex;overflow:hidden}.collection-card:hover{border-color:var(--color-primary-light);box-shadow:var(--shadow)}.collection-card-image-area{background:var(--color-bg-secondary,#f5f5f5);flex-shrink:0;width:100%;height:120px;position:relative;overflow:hidden}.collection-thumb-grid{grid-template-rows:1fr 1fr;grid-template-columns:1fr 1fr;gap:2px;width:100%;height:100%;display:grid}.collection-thumb-img{object-fit:cover;width:100%;height:100%}.collection-thumb-empty{background:var(--color-bg-secondary,#f0f0f0)}[data-theme=dark] .collection-thumb-empty{background:var(--color-surface-raised,#2a2a2a)}.collection-card-image-placeholder{width:100%;height:100%;color:var(--color-text-muted,#999);opacity:.5;justify-content:center;align-items:center;display:flex}.collection-card-actions{opacity:0;gap:4px;transition:opacity .15s;display:flex;position:absolute;top:8px;right:8px}.collection-card:hover .collection-card-actions,.collection-card:focus-within .collection-card-actions{opacity:1}.collection-card-action-btn{width:28px;height:28px;color:var(--color-text-secondary);cursor:pointer;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#ffffffe6;border:none;border-radius:50%;justify-content:center;align-items:center;padding:0;transition:background .15s,color .15s;display:flex}.collection-card-action-btn:hover{color:var(--color-accent,#e74c3c);background:#fff}.collection-card-body{flex-direction:column;flex:1;gap:2px;padding:12px 14px 14px;display:flex}.collection-card-title{color:var(--color-text);margin:0;font-size:1rem;font-weight:600}.collection-card-description{color:var(--color-text-muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:2px 0 0;font-size:.8rem;line-height:1.4;display:-webkit-box;overflow:hidden}.collection-card-count{color:var(--color-text-secondary);margin-top:6px;font-size:.82rem;display:block}.collection-rename-input{box-sizing:border-box;width:100%}@media (width<=480px){.collections-grid{grid-template-columns:repeat(2,1fr);gap:10px}.collection-card-image-area{height:90px}.collection-card-body{padding:10px 10px 12px}.collection-card-title{text-overflow:ellipsis;white-space:nowrap;font-size:.88rem;overflow:hidden}.collection-card-description{-webkit-line-clamp:1;font-size:.75rem}.collection-card-count{font-size:.75rem}.collection-card-actions{opacity:1}.collection-card-action-btn{width:32px;min-width:44px;height:32px;min-height:44px;padding:8px}}@media (width<=340px){.collections-grid{grid-template-columns:1fr}}.collection-detail-count{color:var(--color-text-secondary);margin-bottom:16px;font-size:.9rem}.collection-recipe-list{flex-direction:column;gap:4px;display:flex}.collection-recipe-item{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);justify-content:space-between;align-items:center;padding:10px 12px;display:flex}.collection-recipe-name{color:var(--color-primary);cursor:pointer;font-weight:500}.collection-recipe-name:hover{text-decoration:underline}.collection-recipe-remove{color:var(--color-text-secondary);cursor:pointer;opacity:.5;background:0 0;border:none;padding:4px}.collection-recipe-remove:hover{opacity:1;color:var(--color-accent)}.profile-page{flex-direction:column;align-items:center;gap:16px;padding:24px 16px 100px;display:flex}.profile-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:12px;flex-direction:column;gap:8px;width:100%;max-width:520px;padding:20px;display:flex}.profile-success{background:var(--color-success-bg);color:var(--color-success-text);border:1px solid var(--color-success-border);font-size:var(--text-sm);border-radius:8px;padding:8px 12px}:root{--v2-bg:#f8f5ee;--v2-bg-2:#f2ede0;--v2-cream:#fffdf7;--v2-ink:#2a2a2a;--v2-ink-2:#5a5a5a;--v2-ink-3:#8a8377;--v2-line:#e6dfce;--v2-line-2:#d9d1bc;--v2-primary:#4d7860;--v2-primary-2:#6b9a78;--v2-primary-soft:#e8efe4;--v2-amber:#c4893a;--v2-amber-soft:#f3e5c9;--v2-coral:#b85c4a;--v2-coral-soft:#f3d9d1;--v2-coral-line:#b85c4a40;--v2-streak-bg:#f59e0b1f;--v2-streak-ink:#b45309;--v2-shadow-sm:0 1px 2px #2a2a2a0d;--v2-shadow-md:0 6px 24px #2a2a2a14;--v2-shadow-lg:0 22px 60px #2a2a2a29;--v2-bronze:#8b6f47;--v2-bronze-soft:#8b6f4724;--v2-moss-deep:#3d6350;--v2-paper-grain:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 240 240'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.55 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");--v2-rule-hand:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 6' preserveAspectRatio='none'%3E%3Cpath d='M 2 3.6 Q 28 1.2 56 3 T 118 3.2' stroke='black' stroke-width='1.4' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");--v2-duration-settle:.32s;--v2-ease-settle:cubic-bezier(.25, .46, .45, .94);--v2-type-micro:10px;--v2-type-caption:12px;--v2-type-body-sm:13px;--v2-type-body:14px;--v2-type-h3:18px;--v2-type-h2:22px;--v2-type-h1:26px;--v2-type-display:34px;--v2-space-1:4px;--v2-space-2:8px;--v2-space-3:12px;--v2-space-4:16px;--v2-space-5:24px;--v2-space-6:32px;--v2-space-7:48px;--v2-radius-sm:8px;--v2-radius-md:10px;--v2-radius-lg:14px;--v2-radius-pill:999px;--v2-duration-fast:.1s;--v2-duration-base:.15s;--v2-duration-slow:.24s;--v2-ease-out:cubic-bezier(.16, 1, .3, 1);--v2-z-nav:100;--v2-z-sticky:200;--v2-z-overlay:900;--v2-z-modal:1000;--v2-z-toast:1100}[data-theme=dark]{--v2-bg:#1a1712;--v2-bg-2:#221d16;--v2-cream:#2b2319;--v2-ink:#f2ebe0;--v2-ink-2:#bdb5a6;--v2-ink-3:#8a8278;--v2-line:#38322a;--v2-line-2:#4a4238;--v2-primary:#7aab8c;--v2-primary-2:#9dc4ab;--v2-primary-soft:#1e2e23;--v2-amber:#d9a556;--v2-amber-soft:#2e240f;--v2-coral:#d47b6a;--v2-coral-soft:#2e1810;--v2-coral-line:#d47b6a59;--v2-bronze:#c8a679;--v2-bronze-soft:#c8a67929;--v2-moss-deep:#5d8a72;--v2-streak-bg:#f59e0b33;--v2-streak-ink:#e8a540;--v2-shadow-sm:0 1px 2px #00000047;--v2-shadow-md:0 6px 24px #00000061;--v2-shadow-lg:0 22px 60px #0000008c}[data-theme=dark] .v2-tabbar{background:#1a1712f0}[data-theme=dark] .v2-sheet-backdrop{background:#000000ad}[data-theme=dark] .v2-root .v2-btn-primary:hover{background:#e8dfc8}.v2-root{background:var(--v2-bg);color:var(--v2-ink);-webkit-font-smoothing:antialiased;min-height:100vh;font-family:DM Sans,system-ui,-apple-system,sans-serif}.v2-root .serif{font-variation-settings:"opsz" 36;letter-spacing:-.015em;font-family:Newsreader,Georgia,serif;font-weight:400}.v2-root .serif-display{font-variation-settings:"opsz" 72;letter-spacing:-.022em;font-family:Newsreader,Georgia,serif;font-weight:500}.v2-root .v2-onum{font-variant-numeric:oldstyle-nums}.v2-root .v2-paper{position:relative}.v2-root .v2-paper:after{content:"";background-image:var(--v2-paper-grain);opacity:.035;pointer-events:none;mix-blend-mode:multiply;border-radius:inherit;background-repeat:repeat;background-size:240px 240px;position:absolute;inset:0}[data-theme=dark] .v2-root .v2-paper:after{opacity:.06;mix-blend-mode:screen}.v2-root .v2-rule-hand{width:64px;height:5px;-webkit-mask-image:var(--v2-rule-hand);-webkit-mask-image:var(--v2-rule-hand);mask-image:var(--v2-rule-hand);opacity:.7;background-color:currentColor;display:block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.v2-root .mono{font-family:DM Mono,ui-monospace,monospace}.v2-root button{font:inherit;cursor:pointer;color:inherit;background:0 0;border:none;padding:0}.v2-root .v2-stage{flex-direction:column;min-height:100vh;display:flex}.v2-root .v2-app{background:var(--v2-bg);width:100%;max-width:480px;padding-top:env(safe-area-inset-top);flex-direction:column;flex:1;margin:0 auto;display:flex;position:relative}@media (width>=768px){.v2-root{background:var(--v2-bg-2)}.v2-root .v2-app{max-width:480px;box-shadow:var(--v2-shadow-md)}}.v2-root .v2-scroll{flex:1;padding-bottom:88px;overflow-y:auto}.v2-tabbar{height:calc(72px + env(safe-area-inset-bottom));padding-bottom:calc(8px + env(safe-area-inset-bottom));-webkit-backdrop-filter:blur(14px);border-top:1px solid var(--v2-line);z-index:100;background:#fffdf7f0;display:flex;position:fixed;bottom:0;left:0;right:0}.v2-tabbar-inner{width:100%;max-width:480px;margin:0 auto;display:flex}.v2-tab{color:var(--v2-ink-3);cursor:pointer;background:0 0;border:none;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:4px;font-family:inherit;font-size:10px;transition:color .15s;display:flex}.v2-tab.active{color:var(--v2-primary)}.v2-tab svg{width:22px;height:22px}.v2-root .v2-btn{border-radius:999px;justify-content:center;align-items:center;gap:8px;width:100%;padding:14px 20px;font-size:14px;font-weight:600;transition:transform .1s,background .15s;display:flex}.v2-root .v2-btn:active{transform:scale(.98)}.v2-root .v2-btn-primary{background:var(--v2-ink);color:#fff}.v2-root .v2-btn-primary:hover{background:#0f0f0f}.v2-root .v2-btn-secondary{background:var(--v2-cream);color:var(--v2-ink);border:1px solid var(--v2-line-2)}.v2-root .v2-btn-ghost{color:var(--v2-ink-2)}.v2-root .v2-btn-accent{background:var(--v2-primary);color:#fff}.v2-root .v2-btn-sm{padding:10px 16px;font-size:13px}.v2-root .v2-card{background:var(--v2-cream);border:1px solid var(--v2-line);border-radius:14px}.v2-root .v2-chip{border:1px solid var(--v2-line-2);background:var(--v2-cream);color:var(--v2-ink);border-radius:999px;align-items:center;gap:6px;padding:8px 14px;font-size:12.5px;font-weight:600;transition:all .15s;display:inline-flex}.v2-root .v2-chip.on{background:var(--v2-ink);color:#fff;border-color:var(--v2-ink)}.v2-root .v2-chip:hover:not(.on){border-color:var(--v2-ink-3)}.v2-root .v2-ph{background-position:50%;background-size:cover;position:relative;overflow:hidden}.v2-root .v2-ph-salmon{background-image:radial-gradient(circle at 35% 45%,#e89d68,#c97b55 40%,#8a4a38 100%)}.v2-root .v2-ph-chicken{background-image:radial-gradient(circle at 40% 40%,#e0a24e,#b77a33 45%,#6b4a24 100%)}.v2-root .v2-ph-pasta{background-image:radial-gradient(circle,#c8a96e,#8f7b4a 60%,#4a3f28 100%)}.v2-root .v2-ph-tacos{background-image:radial-gradient(circle at 40%,#d97a5a,#a54a38 50%,#5c2818 100%)}.v2-root .v2-ph-soup{background-image:radial-gradient(circle,#b8551f,#8f3e14 55%,#4a1f0a 100%)}.v2-root .v2-ph-bowl{background-image:radial-gradient(circle at 30% 40%,#7aa68a,#4d7860 55%,#2a4532 100%)}.v2-root .v2-ph-hero{background-image:radial-gradient(circle at 30% 30%,#e8a060 0%,#b97540 40%,#6e3f20 100%)}.v2-root .v2-ph-generic{background-image:radial-gradient(circle,#c8a96e,#8f7b4a 60%,#4a3f28 100%)}.v2-root .v2-kicker{text-transform:uppercase;letter-spacing:.12em;color:var(--v2-bronze);font-family:DM Mono,monospace;font-size:10px}.v2-root .v2-muted{color:var(--v2-ink-3)}.v2-root .v2-fade-in{animation:.24s ease-out v2FadeIn}@keyframes v2FadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes v2-skeleton-pulse{0%{opacity:.4}50%{opacity:.85}to{opacity:.4}}.v2-root .v2-scroll::-webkit-scrollbar{width:0}html:not([data-theme=dark]) .app-layout--v2{--color-border:var(--v2-line);--color-surface:var(--v2-cream);--color-bg:var(--v2-bg);--color-accent:var(--v2-primary);--color-surface-raised:var(--v2-cream)}.app-layout--v2{background:var(--v2-bg);--font-serif:"Newsreader", Georgia, serif}.app-layout--v2 .hub-header{margin-bottom:10px;padding:6px 0 4px}.app-layout--v2 .hub-header h1,.app-layout--v2 .hub-title{font-family:var(--font-serif);letter-spacing:-.018em;color:var(--v2-ink);font-variation-settings:"opsz" 60;font-size:26px;font-weight:500;line-height:1.1}.app-layout--v2 .tab-bar{border-bottom:1px solid var(--v2-line);gap:22px;margin-bottom:16px;padding:0}.app-layout--v2 .tab-item{color:var(--v2-ink-3);letter-spacing:0;background:0 0;border-bottom:2px solid #0000;padding:10px 0 12px;font-size:12px;font-weight:400}.app-layout--v2 .tab-item.active{color:var(--v2-ink);border-bottom-color:var(--v2-ink);font-weight:600}.app-layout--v2 .section-group,.app-layout--v2 .card:not(.v2-card),.app-layout--v2 .stat-card,.app-layout--v2 .household-card,.app-layout--v2 .settings-card{background:var(--v2-cream);border:1px solid var(--v2-line);border-radius:14px}.app-layout--v2 .btn-primary,.app-layout--v2 .auth-submit{background:var(--v2-ink);color:#fff;box-shadow:none;border-radius:999px;font-weight:600}.app-layout--v2 .btn-primary:hover:not(:disabled),.app-layout--v2 .auth-submit:hover:not(:disabled){background:#0f0f0f;transform:none}.app-layout--v2 .btn-secondary{background:var(--v2-cream);border:1px solid var(--v2-line-2);color:var(--v2-ink);border-radius:999px}.app-layout--v2 .form-row input,.app-layout--v2 .form-row select,.app-layout--v2 .form-row textarea,.app-layout--v2 input[type=text]:not(.v2-input),.app-layout--v2 input[type=email]:not(.v2-input),.app-layout--v2 input[type=search]:not(.v2-input),.app-layout--v2 input[type=number]:not(.v2-input),.app-layout--v2 .auth-input{background:var(--v2-cream);border:1px solid var(--v2-line);border-radius:10px;font-size:13px}.app-layout--v2 .form-row input:focus,.app-layout--v2 .form-row select:focus,.app-layout--v2 .form-row textarea:focus,.app-layout--v2 .auth-input:focus{border-color:var(--v2-primary);outline:none}.app-layout--v2 .checkbox-chip{background:var(--v2-cream);border:1px solid var(--v2-line-2);border-radius:999px;padding:8px 14px;font-size:12.5px;font-weight:500}.app-layout--v2 .checkbox-chip.checked,.app-layout--v2 .checkbox-chip[aria-checked=true]{background:var(--v2-ink);color:#fff;border-color:var(--v2-ink)}.app-layout--v2 .route-progress-bar{background:var(--v2-ink)}.app-layout--v2 button[role=tab][aria-selected=true]{color:var(--v2-ink)!important;border-bottom-color:var(--v2-ink)!important}.app-layout--v2 button[role=tab]:not([aria-selected=true]){color:var(--v2-ink-3)!important}html:not([data-theme=dark]) .app-layout--v2{--color-primary:var(--v2-primary);--color-primary-bg:var(--v2-primary-soft);--color-primary-dark:#3d6350}.app-layout--v2 button[style*="border-radius: 8"][style*=padding]:not([style*="padding: 0"]):not([style*=padding\:0]):not(.v2-btn):not(.v2-tab):not(.tab-item),.app-layout--v2 button[style*="border-radius: 6"][style*=padding]:not([style*="padding: 0"]):not([style*=padding\:0]):not(.v2-btn):not(.v2-tab):not(.tab-item),.app-layout--v2 button[style*=border-radius\:8][style*=padding]:not([style*="padding: 0"]):not([style*=padding\:0]):not(.v2-btn):not(.v2-tab):not(.tab-item),.app-layout--v2 button[style*=border-radius\:6][style*=padding]:not([style*="padding: 0"]):not([style*=padding\:0]):not(.v2-btn):not(.v2-tab):not(.tab-item){border-radius:999px!important}.app-layout--v2 input[style*="border-radius: 8"],.app-layout--v2 input[style*="border-radius: 6"],.app-layout--v2 input[style*=border-radius\:8],.app-layout--v2 input[style*=border-radius\:6],.app-layout--v2 textarea[style*="border-radius: 8"],.app-layout--v2 textarea[style*="border-radius: 6"],.app-layout--v2 select[style*="border-radius: 8"],.app-layout--v2 select[style*="border-radius: 6"]{border-radius:10px!important}.app-layout--v2 select:not([style*=border]){border:1px solid var(--v2-line);background:var(--v2-cream);color:var(--v2-ink);border-radius:8px;padding:6px 10px;font-family:inherit;font-size:13px}.app-layout--v2 .settings-section-title,.app-layout--v2 .section-title,.app-layout--v2 .section-header,.app-layout--v2 .hub-section-title,.app-layout--v2 .household-section-title{letter-spacing:.12em;color:var(--v2-amber);text-transform:uppercase;margin-bottom:8px;font-family:DM Mono,monospace;font-size:10px;font-weight:400}.app-layout--v2 span[style*="border-radius: 12px"],.app-layout--v2 span[style*="border-radius: 10px"],.app-layout--v2 span[style*=border-radius\:12px],.app-layout--v2 span[style*=border-radius\:10px]{letter-spacing:.1em;text-transform:uppercase;font-family:DM Mono,monospace;border-radius:999px!important;font-size:10px!important}.app-layout--v2 .household-role-badge{letter-spacing:.12em;text-transform:uppercase;font-family:DM Mono,monospace;background:var(--v2-primary-soft)!important;color:var(--v2-primary)!important;border:1px solid #4d786059!important}.app-layout--v2 .profile-toggle-btn.active{background:var(--v2-ink);color:#fff}.app-layout--v2 .profile-toggle-group{border-radius:999px;overflow:hidden}.app-layout--v2 .profile-card{border:1px solid var(--v2-line);box-shadow:none;border-radius:14px}.app-layout--v2 .profile-avatar-fallback{background:var(--v2-primary-soft);color:var(--v2-primary)}.app-layout--v2 .profile-avatar-img{border-color:var(--v2-line)}.app-layout--v2 .household-role-select{border:1px solid var(--v2-line);background:var(--v2-cream);color:var(--v2-ink);border-radius:8px;padding:6px 10px;font-size:13px}.app-layout--v2 .admin-tab.active{color:var(--v2-ink)!important;border-bottom-color:var(--v2-ink)!important}.app-layout--v2 .schedule-view-toggle{border-radius:999px}.app-layout--v2 .schedule-view-toggle button.active{background:var(--v2-ink);color:#fff}.app-layout--v2 .schedule-current-badge{background:var(--v2-ink);color:#fff;letter-spacing:.1em;font-family:DM Mono,monospace}.app-layout--v2 .schedule-future-badge{background:var(--v2-primary-soft);color:var(--v2-primary)}.app-layout--v2 button[style*="border-radius: 8px"][style*=padding]:not([style*="padding: 0"]):not([style*=padding\:0]):not(.v2-btn):not(.v2-tab):not(.tab-item),.app-layout--v2 button[style*="border-radius: 6px"][style*=padding]:not([style*="padding: 0"]):not([style*=padding\:0]):not(.v2-btn):not(.v2-tab):not(.tab-item),.app-layout--v2 a[style*="border-radius: 8px"]:not(.v2-btn),.app-layout--v2 a[style*="border-radius: 6px"]:not(.v2-btn){border-radius:999px!important}.app-layout--v2 input[style*="border-radius: 8px"],.app-layout--v2 input[style*="border-radius: 6px"],.app-layout--v2 textarea[style*="border-radius: 8px"],.app-layout--v2 textarea[style*="border-radius: 6px"],.app-layout--v2 select[style*="border-radius: 8px"],.app-layout--v2 select[style*="border-radius: 6px"]{border-radius:10px!important}.app-layout--v2 .collection-create-form input{background:var(--v2-cream);border:1px solid var(--v2-line);border-radius:10px}.app-layout--v2 .analytics-bar-fill.bar-alt{background:var(--v2-primary-soft)}.app-layout--v2 button[aria-label][style*="padding: 8"]:not(.v2-btn):not(.v2-tab){border-radius:999px!important}.app-layout--v2 a:not(.v2-btn):not(.tab):not(.nav-tab){color:var(--v2-primary)}.app-layout--v2 input:focus,.app-layout--v2 textarea:focus,.app-layout--v2 select:focus,.app-layout--v2 button:focus-visible{outline:2px solid var(--v2-ink);outline-offset:2px}.app-layout--v2 .card:not(.v2-card),.app-layout--v2 .section-group{box-shadow:none}.v2-avatar-anchor{pointer-events:none;max-width:480px;height:0;z-index:var(--v2-z-nav);margin:0 auto;transition:max-width .3s;position:fixed;top:0;left:0;right:0}@media (width>=768px){.v2-avatar-anchor{max-width:1024px}}.v2-avatar-anchor>*{pointer-events:auto}.v2-avatar-btn{top:calc(12px + env(safe-area-inset-top));background:var(--v2-primary);width:36px;height:36px;color:var(--v2-bg);border:1px solid var(--v2-line);letter-spacing:.02em;box-shadow:var(--v2-shadow-sm);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;padding:0;font-size:11px;font-weight:600;transition:transform .12s,box-shadow .12s;display:flex;position:absolute;right:14px;overflow:hidden}.v2-avatar-btn:hover{box-shadow:var(--v2-shadow-md);transform:translateY(-1px)}.v2-avatar-btn:focus-visible{outline:2px solid var(--v2-primary);outline-offset:2px}.v2-avatar-btn img{object-fit:cover;border-radius:50%;width:100%;height:100%}@keyframes v2AvatarFade{0%{opacity:0}to{opacity:1}}@keyframes v2SheetUp{0%{transform:translateY(16%)}to{transform:translateY(0)}}.v2-avatar-sheet-header{align-items:center;gap:12px;padding:4px 2px 8px;display:flex}.v2-avatar-sheet-avatar{background:var(--v2-primary);width:44px;height:44px;color:var(--v2-bg);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:14px;font-weight:600;display:flex;overflow:hidden}.v2-avatar-sheet-avatar img{object-fit:cover;width:100%;height:100%}.v2-avatar-sheet-name{color:var(--v2-ink);text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:600;overflow:hidden}.v2-avatar-sheet-email{color:var(--v2-ink-3);text-overflow:ellipsis;white-space:nowrap;margin-top:1px;font-size:12px;overflow:hidden}.v2-avatar-sheet-list{background:var(--v2-bg);border:1px solid var(--v2-line);border-radius:12px;flex-direction:column;display:flex;overflow:hidden}.v2-avatar-sheet-list button{text-align:left;width:100%;color:var(--v2-ink);cursor:pointer;background:0 0;border:none;align-items:center;gap:10px;padding:12px 14px;font-family:inherit;font-size:13.5px;display:flex}.v2-avatar-sheet-list button+button{border-top:1px solid var(--v2-line)}.v2-avatar-sheet-list button:hover{background:var(--v2-primary-soft)}.v2-avatar-sheet-ic{background:var(--v2-primary-soft);width:28px;height:28px;color:var(--v2-primary);border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.v2-avatar-sheet-signout{text-align:center;border:1px solid var(--v2-line);color:var(--v2-ink-2);cursor:pointer;background:0 0;border-radius:12px;margin-top:4px;padding:12px 14px;font-family:inherit;font-size:13px;font-weight:500}.v2-avatar-sheet-signout:hover{background:var(--v2-primary-soft);color:var(--v2-primary);border-color:var(--v2-primary)}.v2-sheet-backdrop{z-index:var(--v2-z-overlay);background:#2a2a2a8c;justify-content:center;align-items:flex-end;animation:.14s ease-out v2AvatarFade;display:flex;position:fixed;inset:0}.v2-sheet{background:var(--v2-cream);width:100%;max-width:480px;padding:0 0 calc(20px + env(safe-area-inset-bottom));box-shadow:var(--v2-shadow-lg);border-top-left-radius:20px;border-top-right-radius:20px;outline:none;flex-direction:column;animation:.2s cubic-bezier(.2,.8,.2,1) v2SheetUp;display:flex;overflow-y:auto}.v2-sheet-header{border-bottom:1px solid var(--v2-line);background:var(--v2-cream);z-index:1;flex-shrink:0;justify-content:space-between;align-items:center;padding:18px 18px 12px;display:flex;position:sticky;top:0}.v2-sheet-title{font-size:var(--v2-type-h3,18px);color:var(--v2-ink);margin:0;font-weight:600}.v2-sheet-close{width:32px;height:32px;color:var(--v2-ink-3);cursor:pointer;background:0 0;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex}.v2-sheet-close:hover{background:var(--v2-primary-soft);color:var(--v2-primary)}.more-page{padding-bottom:40px}.more-page h2{text-align:center;margin-bottom:20px;font-size:1.3rem}.more-links-grid{flex-direction:column;gap:8px;max-width:500px;margin:0 auto;display:flex}.more-link-card{background:var(--color-surface);border:1.5px solid var(--color-border);border-radius:var(--radius);cursor:pointer;text-align:left;color:inherit;align-items:center;gap:14px;padding:14px 16px;font-family:inherit;transition:border-color .15s,box-shadow .15s;display:flex}.more-link-card:hover{border-color:var(--color-primary-light);box-shadow:var(--shadow)}.more-link-icon{width:36px;height:36px;color:var(--color-primary);flex-shrink:0;justify-content:center;align-items:center;display:flex}.more-link-text{flex-direction:column;gap:2px;display:flex}.more-link-title{color:var(--color-text);font-size:.95rem;font-weight:600}.more-link-desc{color:var(--color-text-secondary);font-size:.8rem}.info-page{padding-bottom:40px}.info-page h2{margin-bottom:8px;font-size:1.4rem;font-weight:700}.info-intro{color:var(--color-text-secondary);margin-bottom:24px;font-size:.92rem;line-height:1.6}.info-section{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);margin-bottom:14px;padding:18px 20px}.info-section-icon{color:var(--color-primary);margin-bottom:8px}.info-section h3{color:var(--color-primary);margin-bottom:8px;font-size:1.05rem;font-weight:700}.info-section p{color:var(--color-text);margin-bottom:8px;font-size:.9rem;line-height:1.6}.info-tips{flex-direction:column;gap:8px;margin-top:10px;list-style:none;display:flex}.info-tips li{color:var(--color-text);padding-left:16px;font-size:.88rem;line-height:1.5;position:relative}.info-tips li:before{content:"•";color:var(--color-primary);font-weight:700;position:absolute;left:0}.features-page{padding-bottom:40px}.features-page h2{margin-bottom:8px;font-size:1.4rem;font-weight:700}.features-intro{color:var(--color-text-secondary);margin-bottom:20px;font-size:.92rem}.features-grid{grid-template-columns:1fr;gap:12px;display:grid}@media (width>=600px){.features-grid{grid-template-columns:repeat(2,1fr)}}@media (width>=900px){.features-grid{grid-template-columns:repeat(3,1fr)}}.feature-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:18px 20px;transition:border-color .15s,box-shadow .15s}.feature-card:hover{border-color:var(--color-primary-light);box-shadow:var(--shadow)}.feature-card-icon{color:var(--color-primary);margin-bottom:10px}.feature-card-title{color:var(--color-text);margin-bottom:6px;font-size:.95rem;font-weight:700}.feature-card-desc{color:var(--color-text-secondary);font-size:.82rem;line-height:1.5}.features-cta{text-align:center;border-top:1px solid var(--color-border);margin-top:24px;padding-top:20px}.auth-page{justify-content:center;align-items:center;min-height:calc(100vh - 120px);padding:24px 16px;display:flex}.auth-card{background:var(--color-surface);border:1px solid var(--color-border);width:100%;max-width:420px;box-shadow:var(--shadow-md);border-radius:16px;padding:36px 32px}.auth-title{font-family:var(--font-serif);font-size:var(--text-2xl);color:var(--color-text);margin:0 0 4px}.auth-subtitle{font-size:var(--text-sm);color:var(--color-text-secondary);margin:0 0 24px}.auth-form{flex-direction:column;gap:16px;display:flex}.auth-label{font-size:var(--text-sm);color:var(--color-text);flex-direction:column;gap:6px;font-weight:500;display:flex}.auth-input{border:1px solid var(--color-border);font-size:var(--text-base);background:var(--color-surface);color:var(--color-text);border-radius:8px;padding:10px 12px;transition:border-color .15s}.auth-input:focus{border-color:var(--color-primary);outline:none}.auth-error{background:color-mix(in srgb, var(--color-error) 8%, var(--color-surface));border:1px solid color-mix(in srgb, var(--color-error) 25%, var(--color-surface));font-size:var(--text-sm);color:var(--color-error);border-radius:8px;justify-content:space-between;align-items:center;gap:8px;margin-bottom:16px;padding:10px 14px;display:flex}.auth-forgot{text-align:right;font-size:var(--text-sm)}.auth-forgot a{color:var(--color-primary);text-decoration:none}.auth-submit{width:100%;font-size:var(--text-base);background:var(--color-primary);color:var(--color-text-inverse);border-radius:var(--radius);font-family:var(--font-sans);cursor:pointer;box-shadow:var(--shadow-brand);transition:background var(--duration-fast) ease, transform .1s ease;border:none;margin-top:4px;padding:12px;font-weight:500}.auth-submit:hover:not(:disabled){background:var(--color-primary-dark);transform:translateY(-1px)}.auth-submit:active:not(:disabled){transform:translateY(0)}.auth-submit:disabled{opacity:.5;cursor:not-allowed}.auth-submit:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.auth-switch{text-align:center;font-size:var(--text-sm);color:var(--color-text-secondary);margin:20px 0 0}.auth-switch a{color:var(--color-primary);font-weight:500;text-decoration:none}.view-as-banner{background:var(--color-admin-warning-bg);border-bottom:1px solid var(--color-admin-warning-border);font-size:var(--text-sm);color:var(--color-admin-warning-text);flex-wrap:wrap;justify-content:center;align-items:center;gap:16px;padding:8px 16px;display:flex}.view-as-banner-text{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.view-as-banner-exit{background:var(--color-admin-warning-text);color:#fff;font-size:var(--text-sm);cursor:pointer;white-space:nowrap;border:none;border-radius:6px;flex-shrink:0;padding:4px 12px;font-weight:500}.view-as-banner-exit:hover{background:var(--color-admin-warning-text-hover)}.admin-page{max-width:1100px;margin:0 auto;padding:24px 16px}.admin-header{margin-bottom:24px}.admin-title{font-family:var(--font-serif);font-size:var(--text-2xl);color:var(--color-text);margin:0}.admin-tabs{border-bottom:2px solid var(--color-border);scrollbar-width:none;gap:12px;margin-bottom:24px;display:flex;overflow-x:auto}.admin-tab{font-size:var(--text-sm);color:var(--color-text-secondary);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-2px;padding:8px 16px;font-weight:500;transition:color .15s,border-color .15s}.admin-tab.active{color:var(--color-primary);border-bottom-color:var(--color-primary)}.admin-loading{text-align:center;color:var(--color-text-secondary);padding:40px}.admin-table-wrap{border:1px solid var(--color-border);border-radius:10px;overflow-x:auto}.admin-table{border-collapse:collapse;width:100%;font-size:var(--text-sm)}.admin-table th{text-align:left;background:var(--color-surface-raised);color:var(--color-text-secondary);border-bottom:1px solid var(--color-border);white-space:nowrap;padding:10px 14px;font-weight:600}.admin-table td{border-bottom:1px solid var(--color-border);color:var(--color-text);padding:10px 14px}.admin-table-row:last-child td{border-bottom:none}.admin-table-row{cursor:pointer;transition:background .12s}.admin-table-row:hover{background:var(--color-surface-raised)}.admin-badge{background:var(--color-primary-bg);color:var(--color-primary-dark);font-size:var(--text-xs);border-radius:4px;padding:2px 7px;font-weight:600}.admin-error-dismiss{cursor:pointer;color:var(--color-error);background:0 0;border:none;font-size:1.2rem;line-height:1}.admin-overlay{background:var(--color-surface-overlay);z-index:200;justify-content:flex-end;display:flex;position:fixed;inset:0}.admin-slideover{background:var(--color-surface);width:100%;max-width:420px;height:100%;box-shadow:var(--shadow-lg);flex-direction:column;display:flex;overflow-y:auto}.admin-slideover-header{border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;padding:20px 24px 16px;display:flex}.admin-slideover-header h2{font-size:var(--text-lg);text-overflow:ellipsis;white-space:nowrap;margin:0;font-weight:600;overflow:hidden}.admin-slideover-close{cursor:pointer;color:var(--color-text-secondary);background:0 0;border:none;flex-shrink:0;padding:4px;font-size:1.5rem;line-height:1}.admin-slideover-body{flex-direction:column;flex:1;gap:16px;padding:20px 24px;display:flex}.admin-slideover-meta{font-size:var(--text-sm);color:var(--color-text-secondary);flex-direction:column;gap:4px;display:flex}.admin-checkbox-label{font-size:var(--text-sm);cursor:pointer;align-items:center;gap:8px;display:flex}.admin-memberships{font-size:var(--text-sm);color:var(--color-text)}.admin-memberships ul{flex-direction:column;gap:4px;margin:6px 0 0;padding:0;list-style:none;display:flex}.admin-memberships li{align-items:center;gap:8px;display:flex}.admin-slideover-actions{border-top:1px solid var(--color-border);gap:8px;padding:16px 24px 24px;display:flex}.admin-locked{min-height:calc(100vh - 180px);color:var(--color-text-secondary);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:16px;padding:24px;display:flex}.admin-locked-icon{opacity:.4}.admin-locked h2{font-family:var(--font-serif);font-size:var(--text-xl);color:var(--color-text);margin:0}.event-calendar{max-width:800px;font-family:var(--font-sans,system-ui, sans-serif);color:var(--color-text);background-color:var(--color-bg);min-height:100vh;margin:0 auto;padding:16px 16px 100px}.event-calendar__loading-wrapper{flex-direction:column;justify-content:center;align-items:center;gap:16px;min-height:60vh;display:flex}.event-calendar__spinner{border:3px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;width:40px;height:40px;animation:.8s linear infinite spin}.event-calendar__loading-text{color:var(--color-text-secondary);font-size:14px}.event-calendar__header{text-align:center;margin-bottom:20px}.event-calendar__title{font-family:var(--font-serif,"DM Serif Display", serif);color:var(--color-text);margin:0 0 4px;font-size:32px;font-weight:400}.event-calendar__subtitle{color:var(--color-text-secondary);margin:0;font-size:15px}.event-calendar__tab-row{border-bottom:2px solid var(--color-border);gap:4px;margin-bottom:16px;display:flex;overflow-x:auto}.event-calendar__tab-row--no-scroll{overflow-x:visible}.event-calendar__tab{color:var(--color-text-secondary);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000;align-items:center;gap:6px;margin-bottom:-2px;padding:10px 18px;font-size:14px;font-weight:500;display:flex}.event-calendar__tab--active{border-bottom-color:var(--color-primary);color:var(--color-primary);font-weight:700}.event-calendar__tab-badge{background-color:var(--color-primary-bg);min-width:20px;height:20px;color:var(--color-primary);border-radius:10px;justify-content:center;align-items:center;font-size:11px;font-weight:700;display:inline-flex}.event-timeline__week-header{cursor:pointer;align-items:center;gap:12px;margin:20px 0 12px;padding:8px 0;display:flex}.event-timeline__week-label{font-family:var(--font-serif,"DM Serif Display", serif);color:var(--color-text);white-space:nowrap;flex-shrink:0;font-size:18px;font-weight:400}.event-timeline__week-count{color:var(--color-text-secondary);white-space:nowrap;flex-shrink:0;font-size:12px}.event-timeline__week-dates{color:var(--color-text-muted);white-space:nowrap;flex-shrink:0;font-size:13px;font-weight:400}.event-timeline__divider-line{background-color:var(--color-border);flex:1;height:1px}.event-timeline__chevron{color:var(--color-text-secondary);font-size:12px}.event-timeline__empty-week{color:var(--color-text-muted);margin:8px 0 16px;font-size:13px}.event-timeline{position:relative}.event-timeline__group{margin-bottom:8px}.event-card{gap:12px;margin-bottom:0;animation:.35s ease-out both event-card-enter;display:flex}.event-card:first-child{animation-delay:0s}.event-card:nth-child(2){animation-delay:60ms}.event-card:nth-child(3){animation-delay:.12s}.event-card:nth-child(4){animation-delay:.18s}.event-card:nth-child(5){animation-delay:.24s}.event-card:nth-child(6){animation-delay:.3s}@keyframes event-card-enter{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.event-card__dot-col{flex-direction:column;flex-shrink:0;align-items:center;width:24px;padding-top:16px;display:flex}.event-card__dot{width:12px;height:12px;box-shadow:0 0 0 3px var(--color-bg);border-radius:50%;flex-shrink:0}.event-card__line{background:linear-gradient(to bottom, var(--color-border), transparent);border-radius:1.5px;flex:1;width:3px;margin-top:4px}.event-card__content{border:1px solid var(--color-border);background-color:var(--color-surface);border-radius:16px;flex:1;margin-bottom:12px;overflow:hidden;box-shadow:0 1px 4px #0000000a}.event-card__header{cursor:pointer;align-items:center;gap:12px;padding:14px 16px;display:flex}.event-card__body{border-top:1px solid var(--color-border);padding:0 16px 16px}.event-card__icon{flex-shrink:0;font-size:28px;line-height:1}.event-card__info{flex:1;min-width:0}.event-card__name{color:var(--color-text);margin-bottom:2px;font-size:15px;font-weight:700}.event-card__date{font-size:var(--text-sm,13px);color:var(--color-text-secondary)}.event-card__right{flex-shrink:0;align-items:center;gap:8px;display:flex}.event-card__countdown{white-space:nowrap;border-radius:12px;padding:3px 10px;font-size:12px;font-weight:600}.event-card__countdown--soon{background-color:var(--color-warning-bg);color:var(--color-warning)}.event-card__countdown--past{background-color:var(--color-border);color:var(--color-text-muted)}.event-card__countdown--future{background-color:var(--color-success-bg);color:var(--color-success)}.event-card__description{color:var(--color-text-secondary);margin:0 0 10px;font-size:13px}.event-card__inline-plan{border:1px solid var(--color-primary);background-color:var(--color-primary-bg);cursor:pointer;border-radius:10px;justify-content:space-between;align-items:center;gap:12px;margin-top:12px;padding:10px 14px;display:flex}.event-card__inline-plan-info{align-items:center;gap:8px;display:flex}.event-card__inline-plan-title{color:var(--color-text);font-size:13px;font-weight:600}.event-card__inline-plan-meta{color:var(--color-text-secondary);font-size:12px}.event-card__inline-plan-link{color:var(--color-primary);font-size:12px;font-weight:600}.event-menu__section{margin-top:12px}.event-menu__section-title{text-transform:uppercase;color:var(--color-primary);letter-spacing:.5px;margin-top:0;margin-bottom:6px;font-size:13px;font-weight:700}.event-menu__item-list{flex-direction:column;gap:4px;display:flex}.event-menu__item{font-size:14px;line-height:1.5}.event-menu__item-linked{color:var(--color-primary);cursor:pointer;font-weight:500;text-decoration:underline}.event-menu__item-unlinked{color:var(--color-text-secondary)}.event-menu__add-hint{font-size:var(--text-xs,11px);color:var(--color-text-muted);margin-left:6px;font-style:italic}.event-section{margin-bottom:24px}.event-section__subtitle{font-family:var(--font-serif,"DM Serif Display", serif);color:var(--color-text);margin-top:0;margin-bottom:10px;font-size:18px;font-weight:400}.event-grid{flex-direction:column;gap:12px;display:flex}.plan-card{border:1px solid var(--color-border);background-color:var(--color-surface);cursor:pointer;border-radius:16px;padding:14px 16px;transition:box-shadow .15s;box-shadow:0 1px 4px #0000000a}.plan-card__header{align-items:center;gap:12px;margin-bottom:10px;display:flex}.plan-card__footer{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.plan-card__progress{color:var(--color-text);font-size:13px;font-weight:600}.plan-card__guests{color:var(--color-text-secondary);font-size:13px}.event-past__date-filter{border:1px solid var(--color-border);background-color:var(--color-surface);border-radius:12px;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:16px;padding:14px 16px;display:grid}.plan-detail__header{border-bottom:1px solid var(--color-border);align-items:center;gap:14px;margin-bottom:20px;padding-bottom:16px;display:flex}.plan-detail__icon{font-size:40px;line-height:1}.plan-detail__title{font-family:var(--font-serif,"DM Serif Display", serif);color:var(--color-text);margin:0 0 4px;font-size:26px;font-weight:400}.plan-detail__meta{color:var(--color-text-secondary);margin:0;font-size:13px}.event-back-btn{border:1px solid var(--color-border);border-radius:var(--radius,8px);color:var(--color-text-secondary);cursor:pointer;background:0 0;align-items:center;gap:4px;margin-bottom:16px;padding:6px 12px;font-size:13px;display:inline-flex}.plan-menu__list{flex-direction:column;gap:8px;display:flex}.plan-menu__card{border:1px solid var(--color-border);background-color:var(--color-surface);border-radius:12px;padding:12px 14px}.plan-menu__main{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.plan-menu__name{flex:1;min-width:120px;font-size:14px;font-weight:600}.plan-menu__assignee{font-size:13px}.plan-menu__assignee-chip{background-color:var(--color-primary-bg);color:var(--color-primary);border-radius:12px;padding:2px 10px;font-size:12px;font-weight:600;display:inline-block}.plan-menu__unassigned{color:var(--color-text-muted);font-size:12px;font-style:italic}.plan-menu__actions{margin-top:8px}.plan-menu__assign-form{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.event-status-badge{font-size:var(--text-xs,11px);white-space:nowrap;border-radius:12px;padding:2px 10px;font-weight:600;display:inline-block}.plan-guest__list{flex-direction:column;gap:8px;margin-top:16px;display:flex}.plan-guest__card{border:1px solid var(--color-border);background-color:var(--color-surface);border-radius:12px;justify-content:space-between;align-items:flex-start;padding:12px 14px;display:flex}.plan-guest__info{flex:1}.plan-guest__name{margin-bottom:2px;font-size:14px;font-weight:600}.plan-guest__email{color:var(--color-text-secondary);font-size:12px}.plan-guest__dietary{color:var(--color-warning);margin-top:4px;font-size:12px;font-style:italic}.plan-guest__head-count{color:var(--color-text-secondary);margin-top:2px;font-size:12px}.plan-guest__actions{flex-direction:column;flex-shrink:0;align-items:flex-end;display:flex}.plan-dietary__list{flex-direction:column;gap:12px;display:flex}.plan-dietary__card{border:1px solid var(--color-warning);background-color:var(--color-warning-bg);border-radius:12px;overflow:hidden}.plan-dietary__header{align-items:center;gap:8px;padding:12px 14px;font-size:14px;display:flex}.plan-dietary__icon{color:var(--color-warning);flex-shrink:0;font-size:18px}.plan-dietary__title{color:var(--color-warning)}.plan-dietary__body{padding:0 14px 14px}.plan-dietary__label{color:var(--color-warning);margin-top:0;margin-bottom:4px;font-size:12px;font-weight:600}.plan-dietary__item-list{margin:0 0 8px;padding-left:18px}.plan-dietary__item{color:var(--color-warning);font-size:13px;line-height:1.6}.plan-dietary__suggestion{color:var(--color-warning);margin:0;font-size:12px;font-style:italic}.plan-guest__invite-form{border:1px solid var(--color-border);background-color:var(--color-surface);border-radius:12px;margin-bottom:16px;padding:16px}.plan-create__wrapper{border:1px solid var(--color-border);background-color:var(--color-surface);border-radius:16px;padding:20px;box-shadow:0 1px 4px #0000000a}.event-form__grid{grid-template-columns:1fr 1fr;gap:12px;display:grid}.event-form__label{font-weight:600;font-size:var(--text-sm,13px);color:var(--color-text);margin-bottom:4px;display:block}.event-form__input{border:1px solid var(--color-border);border-radius:var(--radius,8px);box-sizing:border-box;width:100%;color:var(--color-text);background-color:#0000;padding:9px 12px;font-size:14px}.event-form__input--small{border:1px solid var(--color-border);border-radius:var(--radius,8px);box-sizing:border-box;min-width:100px;padding:6px 10px;font-size:13px}.event-form__textarea{border:1px solid var(--color-border);border-radius:var(--radius,8px);box-sizing:border-box;resize:vertical;width:100%;color:var(--color-text);background-color:#0000;padding:9px 12px;font-family:inherit;font-size:14px}.event-btn--primary{background-color:var(--color-primary);color:#fff;border-radius:var(--radius,8px);cursor:pointer;border:none;padding:10px 20px;font-size:14px;font-weight:600}.event-btn--primary-sm{background-color:var(--color-primary);color:#fff;cursor:pointer;border:none;border-radius:6px;padding:5px 12px;font-size:12px;font-weight:600}.event-btn--ghost-sm{color:var(--color-primary);border:1px solid var(--color-border);cursor:pointer;background-color:#0000;border-radius:6px;padding:5px 12px;font-size:12px;font-weight:500}.event-btn--disabled{opacity:.5;cursor:not-allowed}.event-btn--full-width{width:100%}.event-empty{text-align:center;padding:48px 24px}.event-empty__icon{margin:0 0 8px;font-size:40px}.event-empty__text{color:var(--color-text-secondary);margin:0 0 4px;font-size:15px}.event-empty__subtext{color:var(--color-text-muted);margin:0;font-size:13px}.event-error{background:var(--color-error-bg);color:var(--color-error);border-radius:var(--radius,8px);margin-bottom:16px;padding:10px 14px;font-size:14px}.event-error--with-action{justify-content:space-between;align-items:center;gap:12px;display:flex}.event-error__retry{background:var(--color-error);color:#fff;border-radius:var(--radius,6px);cursor:pointer;white-space:nowrap;border:none;padding:6px 14px;font-size:13px;font-weight:600}.event-overlay-loading{z-index:100;background-color:#fff9;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.icon-picker{grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.icon-picker__item{border:2px solid var(--color-border);background:var(--color-surface);cursor:pointer;border-radius:10px;flex-direction:column;align-items:center;gap:4px;padding:10px 4px;transition:border-color .15s,box-shadow .15s;display:flex}.icon-picker__item:hover{border-color:var(--color-primary)}.icon-picker__item--selected{border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-primary-bg);background-color:var(--color-primary-bg)}.icon-picker__label{color:var(--color-text-secondary);text-transform:capitalize;text-align:center;font-size:11px;line-height:1.2}.custom-menu-editor{margin-top:8px}.custom-menu-editor__empty{color:var(--color-text-muted);margin:4px 0 8px;font-size:13px;font-style:italic}.custom-menu-editor__list{flex-direction:column;gap:6px;margin-bottom:8px;display:flex}.custom-menu-editor__row{align-items:center;gap:8px;display:flex}.custom-menu-editor__row .event-form__input{flex:1}.custom-menu-editor__remove{border:1px solid var(--color-border);width:32px;height:32px;color:var(--color-error);cursor:pointer;background:0 0;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.custom-menu-editor__remove:hover{background:var(--color-error-bg)}.custom-menu-editor__add{border:1px dashed var(--color-border);border-radius:var(--radius,8px);color:var(--color-primary);cursor:pointer;background:0 0;padding:6px 14px;font-size:13px;font-weight:500}.custom-menu-editor__add:hover{border-color:var(--color-primary);background:var(--color-primary-bg)}.plan-create__mode-toggle{background:var(--color-border);border-radius:var(--radius,8px);gap:4px;margin-bottom:16px;padding:4px;display:flex}.plan-create__mode-btn{color:var(--color-text-secondary);cursor:pointer;background:0 0;border:none;border-radius:6px;flex:1;padding:8px 12px;font-size:13px;font-weight:500;transition:all .15s}.plan-create__mode-btn--active{background:var(--color-surface);color:var(--color-primary);font-weight:700;box-shadow:0 1px 3px #00000014}.plan-edit-modal__overlay{z-index:200;background:#0006;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.plan-edit-modal{background:var(--color-bg);border-radius:16px;flex-direction:column;width:100%;max-width:600px;max-height:85vh;display:flex;box-shadow:0 8px 32px #00000026}.plan-edit-modal__header{border-bottom:1px solid var(--color-border);flex-shrink:0;justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.plan-edit-modal__title{font-family:var(--font-serif,"DM Serif Display", serif);color:var(--color-text);margin:0;font-size:20px;font-weight:400}.plan-edit-modal__close{width:32px;height:32px;color:var(--color-text-secondary);cursor:pointer;background:0 0;border:none;border-radius:8px;justify-content:center;align-items:center;display:inline-flex}.plan-edit-modal__close:hover{background:var(--color-border)}.plan-edit-modal__body{flex:1;padding:20px;overflow-y:auto}.plan-edit-modal__footer{border-top:1px solid var(--color-border);flex-shrink:0;justify-content:flex-end;align-items:center;gap:8px;padding:12px 20px;display:flex}.plan-edit-modal__menu-item-name{color:var(--color-text);flex:1;padding:9px 12px;font-size:14px}.plan-edit-modal__add-item{align-items:center;gap:8px;margin-top:8px;display:flex}.plan-edit-modal__add-item .event-form__input{flex:1}.plan-menu__bulk-bar{border:1px solid var(--color-border);background:var(--color-surface);border-radius:10px;justify-content:space-between;align-items:center;margin-bottom:12px;padding:10px 14px;display:flex}.plan-menu__bulk-count{color:var(--color-text-secondary);font-size:13px}.bulk-assign__controls{align-items:center;gap:8px;margin-bottom:12px;display:flex}.bulk-assign__count{color:var(--color-text-secondary);flex:1;font-size:13px}.bulk-assign__list{flex-direction:column;gap:4px;max-height:200px;display:flex;overflow-y:auto}.bulk-assign__item{border:1px solid var(--color-border);cursor:pointer;border-radius:8px;align-items:center;gap:10px;padding:8px 12px;display:flex}.bulk-assign__item:hover{background:var(--color-primary-bg)}.bulk-assign__checkbox{width:16px;height:16px;accent-color:var(--color-primary);flex-shrink:0}.bulk-assign__item-name{color:var(--color-text);font-size:14px}.bulk-assign__guest-chips{flex-wrap:wrap;gap:6px;display:flex}.bulk-assign__guest-chip{border:1px solid var(--color-border);color:var(--color-text-secondary);cursor:pointer;background:0 0;border-radius:16px;padding:4px 12px;font-size:12px}.bulk-assign__guest-chip:hover{border-color:var(--color-primary)}.bulk-assign__guest-chip--active{border-color:var(--color-primary);background:var(--color-primary-bg);color:var(--color-primary);font-weight:600}.event-icon-circle{transition:transform .15s}.event-card__header:hover .event-icon-circle{transform:scale(1.08)}.event-card__progress-bar{margin-top:6px}.event-card__progress-track{background-color:var(--color-border);border-radius:2px;width:100%;height:4px;overflow:hidden}.event-card__progress-fill{background-color:var(--color-primary);border-radius:2px;height:100%;transition:width .3s}.event-status-badge--with-icon{align-items:center;gap:4px;display:inline-flex}.event-timeline__today-marker{align-items:center;gap:8px;margin:12px 0;padding:0 4px;display:flex}.event-timeline__today-dot{background-color:var(--color-error);border-radius:50%;flex-shrink:0;width:8px;height:8px}.event-timeline__today-line{background-color:var(--color-error);opacity:.5;flex:1;height:2px}.event-timeline__today-label{color:var(--color-error);text-transform:uppercase;letter-spacing:.5px;flex-shrink:0;font-size:11px;font-weight:700}.plan-guest__avatar{-webkit-user-select:none;user-select:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;font-size:14px;font-weight:700;display:inline-flex}.plan-guest__card{gap:12px}@media (width<=480px){.event-calendar{padding:12px 12px 100px}.event-calendar__title{font-size:24px}.event-form__grid{grid-template-columns:1fr}.plan-detail__title{font-size:20px}.plan-detail__header{flex-wrap:wrap}.plan-detail__meta{font-size:12px}.event-calendar__tab-row{gap:0}.event-calendar__tab{padding:10px;font-size:12px}.plan-menu__main{flex-direction:column;align-items:flex-start;gap:6px}.plan-menu__assign-form{flex-direction:column;gap:8px}.plan-menu__assign-form input{box-sizing:border-box;width:100%;min-width:0}.plan-guest__card{flex-direction:column;gap:8px}.plan-guest__actions{flex-direction:row;align-items:flex-start}.event-past__date-filter{grid-template-columns:1fr}}@media (width>=768px){.grid-responsive{grid-template-columns:repeat(2,1fr)}}@media (width>=1024px){.grid-responsive{grid-template-columns:repeat(3,1fr)}}@media (width>=768px){.layout-sidebar{grid-template-columns:1fr 320px;align-items:start;gap:24px;display:grid}}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.empty-state{text-align:center;padding:var(--space-12) var(--space-6)}.empty-state-icon{margin-bottom:var(--space-4);color:var(--color-text-muted)}.empty-state-icon svg{width:48px;height:48px}.empty-state-title{font-size:var(--text-lg);margin-bottom:var(--space-2);color:var(--color-text);font-weight:600}.empty-state-desc{font-size:var(--text-sm);color:var(--color-text-secondary);max-width:360px;margin:0 auto var(--space-6);line-height:1.6}.empty-state-actions{gap:var(--space-3);flex-wrap:wrap;justify-content:center;display:flex}.overflow-menu{display:inline-flex;position:relative}.overflow-menu-trigger{border-radius:var(--radius);border:1.5px solid var(--color-border);background:var(--color-surface);width:36px;height:36px;color:var(--color-text-secondary);cursor:pointer;justify-content:center;align-items:center;transition:background .15s,border-color .15s;display:flex}.overflow-menu-trigger:hover{background:var(--color-cream);border-color:var(--color-primary-light);color:var(--color-primary)}.overflow-menu-dropdown{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);min-width:180px;box-shadow:var(--shadow-lg);z-index:50;margin-top:4px;padding:4px 0;animation:.15s ease-out overflowFadeIn;position:absolute;top:100%;right:0}.overflow-menu-item{width:100%;color:var(--color-text);cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:8px;padding:8px 14px;font-size:.88rem;transition:background .1s;display:flex}.overflow-menu-item:hover:not(:disabled){background:var(--color-surface-raised)}.overflow-menu-item:disabled{opacity:.4;cursor:not-allowed}.overflow-menu-item-destructive{color:var(--color-error)}.overflow-menu-item-destructive:hover:not(:disabled),[data-theme=dark] .overflow-menu-item-destructive:hover:not(:disabled){background:color-mix(in srgb, var(--color-error) 8%, var(--color-surface))}.overflow-menu-item-icon{color:var(--color-text-secondary);align-items:center;display:flex}.overflow-menu-item-destructive .overflow-menu-item-icon{color:var(--color-error)}.field-error{color:var(--color-error);margin-top:2px;font-size:.78rem}.field-error-input{border-color:var(--color-error)!important}@media print{.nav-bar,.nav-bottom,.detail-header,.detail-hero,.family-warnings,.servings-scaler,.detail-ingredient-actions,.detail-cooking-log,.recipe-notes-section,.detail-footer,.home-cards,.home-quick-log,.home-recently-viewed,.home-learn-more,.planning-reminder-banner{display:none!important}body,.detail-page,.detail-content{font-size:12pt;background:var(--color-surface)!important;color:#000!important;max-width:100%!important;margin:0!important;padding:0!important}.detail-title{margin-bottom:6pt;font-size:18pt;font-weight:700}.detail-meta{flex-wrap:wrap;gap:12pt;margin-bottom:12pt;font-size:10pt;display:flex;color:var(--color-text-secondary)!important}.ingredients-list{margin-bottom:16pt}.ingredients-list li,.instructions-list li{margin-bottom:4pt;font-size:11pt;color:#000!important}h2,h3{page-break-after:avoid;margin-top:14pt;margin-bottom:6pt;font-size:13pt}li{page-break-inside:avoid}}
