.spinner{justify-content:center;align-items:center;height:100vh;display:flex}.loader{border:8px solid var(--color-gray-200);border-top:8px solid var(--color-primary);border-radius:50%;width:60px;height:60px;animation:1.5s linear infinite spin}.toast-container{bottom:var(--space-6);z-index:10000;gap:var(--space-2);pointer-events:none;max-width:420px;width:calc(100% - var(--space-8));flex-direction:column;display:flex;position:fixed;left:50%;transform:translate(-50%)}.layout:not(.sidebar-collapsed):not(.sidebar-hidden)~.toast-container{left:calc(var(--sidebar-width) + (100vw - var(--sidebar-width)) / 2)}.layout.sidebar-collapsed:not(.sidebar-hidden)~.toast-container{left:calc(var(--sidebar-width-collapsed) + (100vw - var(--sidebar-width-collapsed)) / 2)}@media (width<=768px){.layout~.toast-container{left:50%}}.toast{align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--radius-lg);background:var(--bg-surface);border:1px solid var(--border-color);box-shadow:var(--shadow-lg);color:var(--text-primary);font-family:var(--font-family-base);font-size:var(--font-size-sm);pointer-events:auto;cursor:pointer;-webkit-backdrop-filter:blur(var(--blur-md));animation:.3s cubic-bezier(.34,1.56,.64,1) toast-enter;display:flex}.toast-exit{animation:.3s forwards toast-exit}.toast-icon{flex-shrink:0;width:20px;height:20px}.toast-success .toast-icon{color:var(--color-success)}.toast-error .toast-icon{color:var(--color-danger)}.toast-info .toast-icon{color:var(--color-info)}.toast-message{line-height:var(--line-height-snug);flex:1}.toast-close{color:var(--text-muted);cursor:pointer;padding:var(--space-1);border-radius:var(--radius-sm);transition:color var(--transition-fast), background var(--transition-fast);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;display:flex}.toast-close:hover{color:var(--text-primary);background:var(--bg-tertiary)}@keyframes toast-enter{0%{opacity:0;transform:translateY(16px)scale(.95)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes toast-exit{0%{opacity:1;transform:translateY(0)scale(1)}to{opacity:0;transform:translateY(8px)scale(.95)}}:root{--color-primary:#d4745f;--color-primary-hover:#b55d4a;--color-primary-active:#964736;--color-primary-light:#fceee9;--color-primary-subtle:#fff5f2;--color-accent:#e8a962;--color-accent-hover:#d19250;--color-danger:#ef4444;--color-danger-hover:#dc2626;--color-danger-light:#fee2e2;--color-success:#10b981;--color-info:#3b82f6;--color-info-light:#eff6ff;--color-warning:#f59e0b;--color-gray-50:#faf9f6;--color-gray-100:#f2f0ed;--color-gray-200:#e8e4df;--color-gray-300:#d6d1cc;--color-gray-400:#a8a4a0;--color-gray-500:#7d7975;--color-gray-600:#5c5855;--color-gray-700:#42403e;--color-gray-800:#2c2c2c;--color-gray-900:#2c2c2c;--color-gray-950:#1a1a1a;--bg-body:var(--color-gray-50);--bg-surface:#fff;--bg-surface-subtle:var(--color-gray-50);--glass-bg:#ffffffb3;--glass-border:#ffffff80;--glass-shadow:0 8px 32px 0 #1f26870d;--blur-md:12px;--blur-lg:20px;--space-0-5:.125rem;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--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;--space-20:5rem;--radius-xs:.25rem;--radius-sm:.375rem;--radius-md:.5rem;--radius-lg:.75rem;--radius-xl:1rem;--radius-2xl:1.5rem;--radius-3xl:2rem;--radius-full:9999px;--shadow-sm:0 1px 2px 0 #0000000d;--shadow-md:0 4px 6px -1px #0000000d, 0 2px 4px -2px #0000000d;--shadow-lg:0 10px 15px -3px #00000014, 0 4px 6px -4px #0000000a;--shadow-xl:0 20px 25px -5px #00000014, 0 8px 10px -6px #00000005;--shadow-inner:inset 0 2px 4px 0 #0000000d;--shadow-primary-sm:0 4px 6px -1px #d4745f40;--shadow-primary-md:0 8px 10px -2px #d4745f66;--shadow-primary-lg:0 6px 20px #d4745f3b;--shadow-glow:0 0 0 3px #d4745f33;--font-family-base:"Inter", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-family-heading:"Outfit", var(--font-family-base);--font-family-display:"Playfair Display", Georgia, "Times New Roman", serif;--font-size-xs:.75rem;--font-size-sm:.875rem;--font-size-base:1rem;--font-size-lg:1.125rem;--font-size-xl:1.25rem;--font-size-2xl:1.5rem;--font-size-3xl:2rem;--font-size-4xl:2.5rem;--font-size-5xl:3rem;--line-height-tight:1.1;--line-height-snug:1.3;--line-height-base:1.5;--line-height-relaxed:1.75;--transition-fast:.15s cubic-bezier(.4, 0, .2, 1);--transition-base:.25s cubic-bezier(.4, 0, .2, 1);--transition-slow:.35s cubic-bezier(.4, 0, .2, 1);--transition-bounce:.5s cubic-bezier(.34, 1.56, .64, 1);--recipe-image-aspect-ratio:16 / 9;--header-height:64px;--sidebar-width:280px;--sidebar-width-collapsed:70px;--bg-primary:var(--bg-surface);--bg-secondary:var(--color-gray-50);--bg-tertiary:var(--color-gray-100);--text-primary:var(--color-gray-900);--text-secondary:var(--color-gray-600);--text-muted:var(--color-gray-400);--border-color:var(--color-gray-200);--accent-color:var(--color-primary);--accent-hover:var(--color-primary-hover);--accent-light:var(--color-primary-light);--sidebar-bg:var(--glass-bg);--sidebar-hover:var(--color-gray-100);--sidebar-active:var(--color-primary-subtle);--sidebar-text:var(--color-gray-600);--sidebar-text-light:var(--color-gray-900);--sidebar-border:var(--color-gray-200);--sidebar-input-bg:#ffffff80;--skeleton-base:var(--color-gray-200);--skeleton-highlight:var(--color-gray-50);--color-diff-added-bg:#d4745f33;--color-diff-removed-bg:#ef444433;--content-max-width:900px;--bg-gradient:radial-gradient(circle at top right, #d4745f0d, transparent 40%), radial-gradient(circle at bottom left, #e8a9620d, transparent 40%)}[data-theme=dark]{--bg-primary:#1a1a1a;--bg-secondary:#212121;--bg-tertiary:#2a2a2a;--bg-surface:#2a2a2a;--bg-surface-subtle:#212121;--text-primary:#f5f5f0;--text-secondary:#d6d1cc;--text-muted:#a8a4a0;--border-color:#3a3a3a;--accent-color:#c98b78;--accent-hover:#b07666;--accent-light:#4a302a;--sidebar-bg:#1a1a1acc;--sidebar-hover:#2a2a2a;--sidebar-active:#d4745f26;--sidebar-text:#a8a4a0;--sidebar-text-light:#f5f5f0;--sidebar-border:#ffffff0d;--sidebar-input-bg:#0003;--skeleton-base:#2a2a2a;--skeleton-highlight:#3a3a3a;--color-diff-added-bg:#10b98140;--color-diff-removed-bg:#ef444440;--bg-gradient:linear-gradient(to bottom, #00000080 0%, transparent 150px), radial-gradient(circle at top right, #c98b781a, transparent 40%), radial-gradient(circle at bottom left, #1a1a1a, transparent 100%);--color-danger-light:#ef44441a;--color-info-light:#3b82f61a;--glass-bg:#1a1a1acc;--glass-border:#ffffff14;--glass-shadow:0 8px 32px 0 #0000004d}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes scaleUp{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes fadeInUp-hero{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes gentleBob{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes rotateWand{0%{transform:rotate(0)}25%{transform:rotate(-10deg)}75%{transform:rotate(10deg)}to{transform:rotate(0)}}@keyframes pulseBulb{0%,to{opacity:1;transform:scale(1)}50%{opacity:.85;transform:scale(1.15)}}@keyframes ambientDrift{0%,to{opacity:.4;transform:translate(0)scale(1)}33%{opacity:.6;transform:translate(15px,-10px)scale(1.05)}66%{opacity:.35;transform:translate(-10px,8px)scale(.95)}}*{font-family:var(--font-family-base);box-sizing:border-box}::selection{background-color:var(--color-primary-light);color:var(--color-primary-dark)}body{background-color:var(--bg-primary);background-image:var(--bg-gradient);color:var(--text-primary);transition:background-color var(--transition-base), color var(--transition-base);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-attachment:fixed;flex-direction:column;min-height:100vh;margin:0;display:flex}html{background-color:var(--bg-primary);min-height:100%}body.no-scroll{width:100%;height:var(--visual-viewport-height,100%);touch-action:none;overflow:hidden}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--color-gray-300);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--color-gray-400)}[data-theme=dark] ::-webkit-scrollbar-thumb{background:var(--color-gray-700)}[data-theme=dark] ::-webkit-scrollbar-thumb:hover{background:var(--color-gray-600)}.recipe{text-align:left;background-color:var(--bg-secondary);padding:var(--space-6);border-radius:var(--radius-xl);border:1px solid var(--border-color);box-shadow:var(--shadow-sm);transition:var(--transition-base);position:relative;overflow:hidden}@media screen and (width<=768px){.recipe{box-shadow:none;background-color:#0000;border:none;border-radius:0;padding:0}}.recipe-image{margin:var(--space-6) 0;width:100%;aspect-ratio:var(--recipe-image-aspect-ratio);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);overflow:hidden}.recipe-image img{width:100%;aspect-ratio:var(--recipe-image-aspect-ratio);object-fit:cover;transition:transform .5s;display:block}.recipe-image:hover img{transform:scale(1.02)}.recipe-image-loading{width:100%;aspect-ratio:var(--recipe-image-aspect-ratio);color:var(--text-muted);background-color:var(--bg-tertiary);border-radius:var(--radius-lg);justify-content:center;align-items:center;font-style:italic;display:flex}.error{color:var(--color-danger);background-color:var(--color-danger-light);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);font-size:var(--font-size-sm);margin-top:var(--space-4);border:1px solid #ef444433;align-items:center;gap:.5rem;animation:.5s cubic-bezier(.36,.07,.19,.97) both shake;display:flex}[data-theme=dark] .error{background-color:#ef44441a;border-color:#ef444433}@keyframes shake{10%,90%{transform:translate(-1px)}20%,80%{transform:translate(2px)}30%,50%,70%{transform:translate(-4px)}40%,60%{transform:translate(4px)}}button:active:not(:disabled),a:active,.clickable:active,[role=button]:active,input[type=submit]:active,input[type=checkbox]:active,.instructions-list li:active{transition:transform .15s cubic-bezier(.4,0,.2,1)!important;transform:scale(.98)!important}.ingredient-item,.personal-note-item,.recipe-action-btn{transform-style:preserve-3d}.recipe-print-brand{display:none}@media print{:root,[data-theme=dark]{--bg-primary:#fff!important;--bg-secondary:#fff!important;--bg-surface:#fff!important;--bg-tertiary:#f9f9f9!important;--text-primary:#000!important;--text-secondary:#333!important;--text-muted:#666!important;--border-color:#eee!important;--shadow-sm:none!important;--shadow-md:none!important;--shadow-lg:none!important;--shadow-xl:none!important;--glass-bg:#fff!important;--glass-border:#eee!important}nav,aside,footer,header,.sidebar,.sidebar-overlay,.mobile-menu-toggle,.theme-toggle,.sidebar-toggle,.new-recipe-btn,.sidebar-filters,.sidebar-footer,.recipe-mobile-header,.recipe-action-buttons,.recipe-action-buttons-desktop,.recipe-action-buttons-container,.recipe-management-section,.update-section,.personal-note-add,.personal-note-delete,.ingredient-checkbox,.close-overlay-btn,.streaming-indicator,.recipe-image-overlay,.recipe-image-actions,.scroll-to-top-btn,.toast-container,button,[role=button]{display:none!important}body,html{color:#000!important;-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important;background:#fff!important;margin:0!important;padding:0!important}.layout{background:#fff!important;min-height:auto!important;padding:0!important;display:block!important}.main-content{background:#fff!important;width:100%!important;max-width:100%!important;margin-left:0!important;padding:0!important;display:block!important}*{box-shadow:none!important;text-shadow:none!important;-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important;transition:none!important;animation:none!important}.recipe-print-brand{align-items:center!important;gap:var(--space-3)!important;margin-bottom:var(--space-8)!important;padding-bottom:var(--space-4)!important;border-bottom:2px solid #333!important;display:flex!important}.recipe-print-brand .brand-name{font-family:var(--font-family-heading)!important;color:#000!important;font-size:1.5rem!important;font-weight:800!important}.recipe-view{background:#fff!important;margin:0!important;padding:0!important}.recipe-stats,.ingredient-groups,.instructions-list{padding:var(--space-4)!important;margin-bottom:var(--space-6)!important;background:#fff!important;border:1px solid #eee!important}.recipe-view h2{color:#000!important;border-bottom:2px solid #eee!important}.ingredient-item{background:0 0!important;border-bottom:1px solid #f9f9f9!important}.ingredient-text{opacity:1!important;color:#000!important;text-decoration:none!important}.instructions-list li:before{color:#000!important;background-color:#eee!important;border:1px solid #ccc!important}.personal-notes-section{border-top:1px solid #eee!important}.personal-note-item{background:0 0!important;border-bottom:1px solid #f9f9f9!important}img{page-break-inside:avoid!important;max-width:100%!important}}
