:root{--brand-primary: #2D5016;--brand-secondary: #4A7C2A;--brand-accent: #7FB069;--brand-light: #E8F5E8;--brand: var(--brand-primary);--brand-600: #3b3c44;--text-primary: #1F2937;--text-secondary: #6B7280;--text-muted: #9CA3AF;--text-inverse: #FFFFFF;--text: var(--text-primary);--muted: var(--text-secondary);--bg-primary: #FAFAFA;--bg-secondary: #F8F9FA;--bg: var(--bg-primary);--surface: #FFFFFF;--surface-hover: #F9F9F9;--border-light: #E5E7EB;--border-medium: #D1D5DB;--border: var(--border-light);--success: #10b981;--warning: #f59e0b;--error: #ef4444;--info: #3b82f6;--shadow-xs: 0 1px 2px 0 rgba(0, 0, 0, .05);--shadow-sm: 0 1px 3px 0 rgba(0, 0, 0, .1), 0 1px 2px 0 rgba(0, 0, 0, .06);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -1px rgba(0, 0, 0, .06);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -2px rgba(0, 0, 0, .05);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .1), 0 10px 10px -5px rgba(0, 0, 0, .04);--shadow: var(--shadow-md);--shadow-focus: 0 0 0 3px rgba(127, 176, 105, .3);--ease-in-out: cubic-bezier(.4, 0, .2, 1);--ease-in: cubic-bezier(.4, 0, 1, 1);--ease-out: cubic-bezier(0, 0, .2, 1);--bounce: cubic-bezier(.68, -.55, .265, 1.55);--transition-fast: .15s var(--ease-out);--transition-normal: .25s var(--ease-in-out);--transition-slow: .4s var(--ease-in-out);--transition-bounce: .35s var(--bounce);--radius-sm: .25rem;--radius-md: .5rem;--radius-lg: .75rem;--radius-xl: 1rem;--radius: var(--radius-lg);--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", sans-serif;--font-mono: "Fira Code", "Monaco", "Cascadia Code", "Roboto Mono", monospace;--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: 1.875rem;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--max-width: 1200px;--space-xs: .25rem;--space-sm: .5rem;--space-md: 1rem;--space-lg: 1.5rem;--space-xl: 2rem;--space-2xl: 3rem;--space-3xl: 4rem;--transition-fast: .15s ease-out;--transition-normal: .3s ease-out;--transition-slow: .5s ease-out;--z-dropdown: 10;--z-sticky: 20;--z-modal: 50;--z-toast: 100}@keyframes fadeIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInFromLeft{0%{opacity:0;transform:translate(-30px)}to{opacity:1;transform:translate(0)}}@keyframes slideInFromRight{0%{opacity:0;transform:translate(30px)}to{opacity:1;transform:translate(0)}}@keyframes bounceIn{0%{opacity:0;transform:scale(.8)}50%{opacity:1;transform:scale(1.05)}to{opacity:1;transform:scale(1)}}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes shimmer{0%{background-position:-200px 0}to{background-position:calc(200px + 100%) 0}}.fade-in{animation:fadeIn .6s var(--ease-out) forwards}.slide-in-left{animation:slideInFromLeft .5s var(--ease-out) forwards}.slide-in-right{animation:slideInFromRight .5s var(--ease-out) forwards}.bounce-in{animation:bounceIn .7s var(--bounce) forwards}.pulse{animation:pulse 2s infinite}.stagger-animation>*{opacity:0;animation:fadeIn .6s var(--ease-out) forwards}.stagger-animation>*:nth-child(1){animation-delay:.1s}.stagger-animation>*:nth-child(2){animation-delay:.2s}.stagger-animation>*:nth-child(3){animation-delay:.3s}.stagger-animation>*:nth-child(4){animation-delay:.4s}.stagger-animation>*:nth-child(5){animation-delay:.5s}.stagger-animation>*:nth-child(6){animation-delay:.6s}*,*:before,*:after{box-sizing:border-box}html{height:100%;scroll-behavior:smooth}body{margin:0;padding:0;height:100%;font-family:var(--font-sans);color:var(--text);background:var(--bg);line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{height:100%;min-height:100vh}.app-container{min-height:100vh;display:flex;flex-direction:column}.main-content{flex:1;width:min(var(--max-width),92vw);margin:0 auto;padding:var(--space-lg)}.container{width:min(var(--max-width),92vw);margin:0 auto;padding:var(--space-lg)}h1,h2,h3,h4,h5,h6{margin:0 0 var(--space-md);font-weight:600;line-height:1.3}h1{font-size:2rem}h2{font-size:1.5rem}h3{font-size:1.25rem}h4{font-size:1.125rem}p{margin:0 0 var(--space-md)}.text-muted{color:var(--muted)}.text-center{text-align:center}.hamburger{display:inline-flex;flex-direction:column;gap:4px;width:36px;height:32px;justify-content:center;align-items:center;background:transparent;border:0;cursor:pointer;color:inherit}.hamburger span{width:22px;height:2px;background:currentColor;border-radius:2px}.nav{position:absolute;left:0;right:0;top:56px;display:none;flex-direction:column;gap:.25rem;padding:.5rem;background:var(--brand);border-top:1px solid var(--brand-600)}.nav.is-open{display:flex}.nav a{color:#fff;text-decoration:none;padding:.6rem .75rem;border-radius:8px}.nav a:hover,.nav a.active{background:#ffffff1f}@media (min-width: 768px){.hamburger{display:none}.nav{position:static;display:flex!important;flex-direction:row;gap:.75rem;padding:0;background:transparent;border:0}}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.btn,.btn-secondary{border:0;cursor:pointer;border-radius:var(--radius-md);padding:.75rem 1.25rem;font-weight:600;font-size:.95rem;transition:all var(--transition-normal);position:relative;overflow:hidden;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:.5rem;box-shadow:var(--shadow-sm);transform:translateY(0)}.btn{background:linear-gradient(135deg,var(--brand-primary),var(--brand-secondary));color:#fff;border:2px solid transparent}.btn:hover{background:linear-gradient(135deg,var(--brand-secondary),var(--brand-accent));transform:translateY(-2px);box-shadow:var(--shadow-lg)}.btn:active{transform:translateY(0);transition:all var(--transition-fast)}.btn-secondary,.btn--secondary{background:var(--surface);color:var(--text-primary);border:2px solid var(--border-medium)}.btn-secondary:hover,.btn--secondary:hover{background:var(--surface-hover);border-color:var(--brand-accent);transform:translateY(-2px);box-shadow:var(--shadow-lg)}.btn--outline{background:transparent;color:var(--brand-primary);border:2px solid var(--brand-primary);box-shadow:none}.btn--outline:hover{background:var(--brand-primary);color:#fff;transform:translateY(-2px);box-shadow:var(--shadow-md)}.btn--sm{padding:.5rem 1rem;font-size:.875rem}.btn--lg{padding:1rem 2rem;font-size:1.1rem}.link{background:none;border:0;cursor:pointer;color:#2563eb;padding:.25rem .35rem;border-radius:8px}.link:hover{background:#eef2ff}.link.danger{color:#b91c1c}.link.danger:hover{background:#fee2e2}@keyframes spin{to{transform:rotate(360deg)}}@keyframes dots{0%,20%{color:transparent;text-shadow:.25em 0 0 transparent,.5em 0 0 transparent}40%{color:currentColor;text-shadow:.25em 0 0 transparent,.5em 0 0 transparent}60%{text-shadow:.25em 0 0 currentColor,.5em 0 0 transparent}80%,to{text-shadow:.25em 0 0 currentColor,.5em 0 0 currentColor}}.loading-spinner{display:inline-block;width:24px;height:24px;border:2px solid rgba(255,255,255,.3);border-radius:50%;border-top-color:currentColor;animation:spin 1s ease-in-out infinite}.loading-spinner--sm{width:16px;height:16px;border-width:2px}.loading-spinner--lg{width:32px;height:32px;border-width:3px}.loading-dots:after{content:"...";animation:dots 1.5s steps(5,end) infinite}.btn:disabled{opacity:.6;cursor:not-allowed;transform:none!important}.btn--loading{color:transparent;pointer-events:none;position:relative}.btn--loading:after{content:"";position:absolute;width:14px;height:14px;top:50%;left:50%;margin-left:-7px;margin-top:-7px;border:1.5px solid rgba(255,255,255,.3);border-radius:50%;border-top-color:currentColor;animation:spin 1s ease-in-out infinite;z-index:1}.hover-lift{transition:transform var(--transition-normal)}.hover-lift:hover{transform:translateY(-4px)}.hover-scale{transition:transform var(--transition-normal)}.hover-scale:hover{transform:scale(1.05)}.hover-glow{transition:box-shadow var(--transition-normal)}.hover-glow:hover{box-shadow:0 0 20px #7fb06966}input,select{border:1px solid var(--border);background:#fff;border-radius:10px;padding:.6rem .75rem;font-size:.95rem;outline:none}input:focus,select:focus{border-color:#93c5fd;box-shadow:0 0 0 3px #93c5fd59}.pantry-form{display:grid;grid-template-columns:1.4fr .6fr .8fr auto auto;gap:.75rem;margin:1.25rem 0 1rem}.pantry-toolbar{display:flex;justify-content:space-between;align-items:center;margin:.75rem 0 1rem}.pantry-list{list-style:none;padding:0;margin:0;display:grid;gap:.9rem}.pantry-row{display:flex;justify-content:space-between;align-items:center;padding:.85rem 1rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow)}.pantry-info{display:grid;gap:.2rem}.pantry-info strong{font-size:1rem}.pantry-info .muted{font-size:.9rem}.row-actions{display:flex;gap:.5rem}@media (max-width: 640px){.pantry-form{grid-template-columns:1fr 1fr}.pantry-form input:nth-child(3){grid-column:span 2}.pantry-form .btn{grid-column:span 1}}.pantry-categories{display:grid;gap:1.5rem}.category-section{border-radius:var(--radius);overflow:hidden}.category-title{padding:.5rem 1rem;margin:0;background:#f8fafc;border:1px solid var(--border);border-radius:8px 8px 0 0}.empty-pantry{text-align:center;padding:2rem;background:#f9fafb;border-radius:var(--radius);border:1px dashed #d1d5db}.prefs-form{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-top:1rem;padding:1rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.field{display:grid;gap:.4rem}.field span{font-size:.9rem;color:var(--muted)}.field-wide{grid-column:1 / -1}.actions{grid-column:1 / -1;display:flex;gap:.75rem;align-items:center}.helper-text{font-size:.8rem;color:#6b7280;font-style:italic;margin-top:.2rem}.prefs-form{background:linear-gradient(to bottom,#fff,#f9fafb);box-shadow:var(--shadow)}.grid{display:grid;gap:1rem;grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.card-body{padding:.9rem}.recipe-img{width:100%;height:160px;object-fit:cover;display:block}.search-bar{display:flex;gap:.5rem;margin:.75rem 0 1rem}.search-bar input{flex:1}.filters{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.75rem;margin-bottom:1rem}.filters label{display:flex;flex-direction:column;gap:.25rem}.plan-header{display:flex;align-items:center;justify-content:space-between}.plan-actions{display:flex;gap:.5rem}.plan-grid{margin-top:1rem;display:grid;grid-template-columns:120px repeat(7,1fr);grid-auto-rows:minmax(86px,auto);gap:8px}.plan-day,.plan-slot{background:#eef1f6;color:#0f172a;border:1px solid var(--border);border-radius:10px;display:flex;align-items:center;justify-content:center;font-weight:600}.plan-day{height:44px}.plan-slot{height:86px;position:sticky;left:0}.plan-cell{background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow);padding:.6rem .7rem;display:flex}.cell-empty{width:100%;height:100%;background:transparent;border:2px dashed #d7dbe5;color:#6b7280;border-radius:10px;cursor:pointer}.cell-empty:hover{background:#f5f7fb}.cell-filled{display:flex;flex-direction:column;gap:.4rem;width:100%;cursor:grab;transition:opacity .2s ease}.cell-filled .title{font-weight:600}.cell-actions{display:flex;gap:.5rem}.dragging{opacity:.5;cursor:grabbing}.plan-cell.hover{border:2px dashed #3b82f6;background-color:#3b82f60d}.plan-editor{margin-top:1rem}.editor-card{padding:.9rem;display:grid;gap:.6rem}.editor-card input{width:100%;border:1px solid var(--border);border-radius:10px;padding:.6rem .75rem}.editor-actions{display:flex;gap:.5rem}.small{font-size:.85rem}.modal-backdrop{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:1rem}.modal{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a;padding:1.5rem;width:min(420px,90vw);max-height:85vh;overflow-y:auto;display:flex;flex-direction:column;position:relative;animation:modal-enter .2s ease-out}@media (max-width: 640px){.modal{width:95vw;padding:1rem;margin:1rem}.modal-actions{flex-direction:column}.modal-actions .btn{width:100%}}@keyframes modal-enter{0%{opacity:0;transform:scale(.95) translateY(-10px)}to{opacity:1;transform:scale(1) translateY(0)}}.modal .row{display:flex;gap:.75rem;align-items:center;flex-wrap:wrap}.modal h3{margin:0 0 .5rem;font-size:1.25rem;font-weight:600;color:var(--text-primary)}.modal .muted{margin:0 0 1rem;color:var(--text-secondary);font-size:.875rem}.modal-form-group{margin-bottom:1rem}.modal-form-group label{display:block;margin-bottom:.5rem;font-weight:500;color:var(--text-primary);font-size:.875rem}.modal-form-group .form-select{width:100%;padding:.75rem;border:1px solid var(--border-light);border-radius:var(--radius);background:var(--surface);font-size:.875rem;transition:border-color var(--transition-fast)}.modal-form-group .form-select:focus{outline:none;border-color:var(--brand-primary);box-shadow:0 0 0 3px #2d50161a}.modal-form-group .form-select:disabled{opacity:.6;cursor:not-allowed}.modal-actions{display:flex;gap:.75rem;margin-top:1.5rem;justify-content:flex-end}.modal-actions .btn{min-width:100px}.recipe-img{background:#f1f3f8}.grid:empty+.muted{display:block}.recipe-details{display:grid;gap:1rem;max-height:80vh;overflow-y:auto;padding-right:.5rem}.details-head{display:grid;grid-template-columns:120px 1fr;gap:1rem;align-items:center}.details-img{width:120px;height:120px;object-fit:cover;border-radius:10px;background:#f1f3f8;box-shadow:0 2px 4px #0000001a}.details-body{display:grid;gap:1.5rem}.ingredients{list-style:none;padding:0;margin:0;display:grid;gap:.4rem}.ingredients li{display:flex;justify-content:space-between;gap:.5rem;padding:.4rem .8rem;border-radius:8px;background:#f8fafc;transition:background .2s ease}.ingredients li:hover{background:#f1f5fa}.steps{margin:0;padding-left:1.2rem;display:grid;gap:.8rem}.steps li{margin-bottom:.5rem;line-height:1.5}.skeleton{background:linear-gradient(90deg,#eee 25%,#f5f5f5 37%,#eee 63%);background-size:400% 100%;animation:shimmer 1.2s infinite}.skeleton.line{height:14px;border-radius:6px}@keyframes shimmer{0%{background-position:100% 0}to{background-position:0 0}}.skeleton-meta{display:flex;gap:1rem;margin-top:.8rem}.skeleton-tags{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.8rem}.skeleton.tag{height:20px;border-radius:10px}.ingredients-skeleton{display:grid;gap:.4rem}.ingredient-skeleton-row{display:flex;justify-content:space-between;padding:.4rem .5rem}.step-skeleton-row{margin-bottom:.8rem}.nutrition-section{margin-top:.5rem}.nutrition-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:.8rem}.nutrient-item{display:flex;justify-content:space-between;background:#f8fafc;padding:.6rem .8rem;border-radius:6px}.nutrient-name{font-weight:500;font-size:.9rem}.nutrient-value{color:#4b5563;font-size:.9rem}.recipe-meta{display:flex;flex-wrap:wrap;gap:.8rem;margin:.5rem 0;color:#4b5563;font-size:.95rem}.recipe-meta-item{display:flex;align-items:center;gap:.4rem}.recipe-meta-item:after{content:"•";margin-left:.8rem;color:#9ca3af}.recipe-meta-item:last-child:after{content:"";margin:0}.recipe-source{font-size:.85rem;margin-top:.5rem;color:#6b7280}.recipe-source a{color:#3b82f6;text-decoration:underline}.recipe-source a:hover{color:#2563eb}.data-source{font-size:.75rem;color:#6b7280;margin-left:.5rem;font-style:italic}.recipe-tags{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.5rem}.tag-group{display:flex;flex-wrap:wrap;gap:.4rem}.recipe-tag{display:inline-block;padding:.25rem .6rem;border-radius:16px;font-size:.8rem;font-weight:500}.dish-tag{background:#e7f5ff;color:#0069db;border:1px solid #b3d7ff}.diet-tag{background:#ecfdf5;color:#047857;border:1px solid #a7f3d0}.error-container{padding:1rem;text-align:center;display:grid;gap:1rem}.recipe-details::-webkit-scrollbar{width:8px}.recipe-details::-webkit-scrollbar-track{background:#f1f1f1;border-radius:4px}.recipe-details::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:4px}.recipe-details::-webkit-scrollbar-thumb:hover{background:#a1a1a1}.preferences-toggle{margin:.5rem 0 1rem;padding:.8rem 1rem;background:#f0f7ff;border:1px solid #cce3fe;border-radius:8px}.toggle-label{display:flex;align-items:center;cursor:pointer;font-weight:500;margin-bottom:.5rem}.toggle-label input{margin-right:.5rem}.applied-preferences{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.5rem}.pref-tag{display:inline-block;padding:.3rem .6rem;border-radius:16px;font-size:.8rem;background:#fff}.diet-tag{color:#0069db;border:1px solid #b3d7ff}.cal-tag{color:#b45309;border:1px solid #fcd34d}.allergy-tag{color:#be123c;border:1px solid #fda4af}.time-tag{color:#047857;border:1px solid #a7f3d0}.size-tag{color:#7c3aed;border:1px solid #c4b5fd}.quick-searches{margin:1rem 0 1.5rem}.quick-search-buttons{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.5rem}.btn-tag{background:#f0f5ff;color:#2563eb;border:1px solid #d1e0ff;border-radius:20px;padding:.4rem 1rem;font-size:.9rem;cursor:pointer;transition:all .2s ease}.btn-tag:hover{background:#e1ebff;border-color:#93c5fd}.section-title{margin-top:1.5rem;margin-bottom:1rem;font-size:1.35rem;color:var(--text);border-bottom:1px solid var(--border);padding-bottom:.5rem}.auth-form{max-width:400px;margin:0 auto;padding:2rem;background-color:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow)}.auth-form .form-group{margin-bottom:1rem}.auth-form label{display:block;margin-bottom:.5rem;font-weight:500}.auth-form input{width:100%;padding:.75rem;border:1px solid var(--border);border-radius:calc(var(--radius) / 2);font-size:1rem}.auth-form .btn{width:100%;margin-top:1rem}.auth-form .error-message{color:#dc2626;margin-top:1rem;padding:.5rem;border-radius:calc(var(--radius) / 2);background-color:#fee2e2}.nav-button{background:none;border:none;cursor:pointer;color:inherit;font:inherit;padding:0;margin:0;text-decoration:none}.favorites-page h1{margin-bottom:2rem}.empty-state{padding:3rem 1rem;text-align:center;background:var(--surface);border-radius:var(--radius);border:1px solid var(--border);max-width:600px;margin:2rem auto}.empty-state h2{margin-bottom:1rem;font-size:1.5rem}.empty-state .btn{margin-top:1.5rem}.favorite-btn-container{position:absolute;top:.5rem;right:.5rem;z-index:2}.favorite-btn{background:#fffc;border:none;border-radius:50%;width:2.5rem;height:2.5rem;font-size:1.5rem;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 5px #0000001a}.favorite-btn:hover{background:#fff;transform:scale(1.05)}.favorite-btn.favorite-active{color:#ef4444}.favorite-recipes-section{margin-top:3rem}.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem}.section-header h3{margin:0;font-size:1.5rem}.btn-link{color:var(--brand-600);text-decoration:none;font-weight:500;transition:all .2s}.btn-link:hover{text-decoration:underline}.favorite-recipes-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:1.5rem}.manual-add-section{background:var(--surface);border-radius:var(--radius-lg);padding:1.5rem;margin-bottom:2rem;border:2px solid var(--border-light);transition:all var(--transition-normal);position:relative;overflow:hidden}.manual-add-section:before{content:"";position:absolute;top:0;left:0;right:0;height:4px;background:linear-gradient(135deg,var(--brand-primary),var(--brand-accent));opacity:0;transition:opacity var(--transition-normal)}.manual-add-section h3{color:var(--text-secondary);margin:0 0 1rem;font-size:1rem;font-weight:600;display:flex;align-items:center;gap:.5rem}.manual-add-section h3:before{content:"✏️";font-size:1.1rem}.manual-add-section:hover{border-color:var(--brand-accent);box-shadow:var(--shadow-lg);transform:translateY(-2px)}.manual-add-section:hover:before{opacity:1}.manual-add-section:focus-within{border-color:var(--brand-primary);box-shadow:0 0 0 3px #2d50161a}[data-theme=dark] .manual-add-section{background:var(--card-bg-dark);border-color:var(--border-color-dark)}[data-theme=dark] .manual-add-section h3{color:var(--text-secondary-dark)}[data-theme=dark] .manual-add-section:hover{border-color:var(--brand-accent)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-lg);border:none;border-radius:var(--radius-md);font-family:inherit;font-size:var(--font-size-base);font-weight:var(--font-weight-medium);line-height:1.5;text-decoration:none;cursor:pointer;transition:all var(--transition-fast);-webkit-user-select:none;user-select:none;white-space:nowrap;min-height:44px}.btn:focus{outline:none;box-shadow:var(--shadow-focus)}.btn:disabled{opacity:.6;cursor:not-allowed;pointer-events:none}.btn--primary{background-color:var(--brand-primary);color:var(--text-inverse);box-shadow:var(--shadow-sm)}.btn--primary:hover:not(:disabled){background-color:var(--brand-secondary);box-shadow:var(--shadow-md);transform:translateY(-1px)}.btn--secondary{background-color:var(--surface);color:var(--brand-primary);border:2px solid var(--brand-primary);box-shadow:var(--shadow-sm)}.btn--secondary:hover:not(:disabled){background-color:var(--brand-light);box-shadow:var(--shadow-md)}.btn--outline{background-color:transparent;color:var(--brand-primary);border:1px solid var(--border-medium)}.btn--outline:hover:not(:disabled){background-color:var(--brand-light);border-color:var(--brand-primary)}.btn--ghost{background-color:transparent;color:var(--text-secondary);border:none;box-shadow:none}.btn--ghost:hover:not(:disabled){background-color:var(--surface-hover);color:var(--text-primary)}.btn--danger{background-color:var(--error);color:var(--text-inverse)}.btn--danger:hover:not(:disabled){background-color:#dc2626;transform:translateY(-1px)}.btn--sm{padding:var(--space-xs) var(--space-md);font-size:var(--font-size-sm);min-height:36px}.btn--lg{padding:var(--space-md) var(--space-xl);font-size:var(--font-size-lg);min-height:52px}.btn--full{width:100%}.card{background:var(--surface);border:1px solid var(--border-light);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);overflow:hidden;transition:all var(--transition-normal)}.card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.card--interactive{cursor:pointer}.card--interactive:hover{box-shadow:var(--shadow-lg);transform:translateY(-4px)}.card__header{padding:var(--space-lg);border-bottom:1px solid var(--border-light);background:var(--bg-secondary)}.card__body{padding:var(--space-lg)}.card__footer{padding:var(--space-lg);border-top:1px solid var(--border-light);background:var(--bg-secondary)}.card__title{margin:0 0 var(--space-sm) 0;font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);color:var(--text-primary)}.card__subtitle{margin:0;font-size:var(--font-size-sm);color:var(--text-secondary)}.card__description{margin:var(--space-sm) 0 0 0;color:var(--text-secondary);line-height:1.6}.form-group{margin-bottom:var(--space-lg)}.form-label{display:block;margin-bottom:var(--space-sm);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--text-primary)}.form-input,.form-textarea,.form-select{width:100%;padding:var(--space-sm) var(--space-md);border:1px solid var(--border-medium);border-radius:var(--radius-md);font-family:inherit;font-size:var(--font-size-base);line-height:1.5;color:var(--text-primary);background-color:var(--surface);transition:all var(--transition-fast);min-height:44px}.form-input:focus,.form-textarea:focus,.form-select:focus{outline:none;border-color:var(--brand-accent);box-shadow:var(--shadow-focus)}.form-input::placeholder,.form-textarea::placeholder{color:var(--text-muted)}.form-textarea{min-height:100px;resize:vertical}.form-error{margin-top:var(--space-xs);font-size:var(--font-size-sm);color:var(--error)}.form-help{margin-top:var(--space-xs);font-size:var(--font-size-sm);color:var(--text-muted)}.loading-spinner{display:inline-block;width:24px;height:24px;border:3px solid var(--border-light);border-top:3px solid var(--brand-primary);border-radius:50%;animation:spin 1s linear infinite}.loading-spinner--lg{width:48px;height:48px;border-width:4px}.skeleton{background:linear-gradient(90deg,var(--bg-secondary) 25%,var(--surface-hover) 50%,var(--bg-secondary) 75%);background-size:200% 100%;animation:loading 1.5s infinite;border-radius:var(--radius-md)}.skeleton--text{height:1em;margin-bottom:var(--space-sm)}.skeleton--title{height:1.5em;margin-bottom:var(--space-md)}.skeleton--avatar{width:48px;height:48px;border-radius:50%}.skeleton--card{height:200px;margin-bottom:var(--space-lg)}@keyframes loading{0%{background-position:200% 0}to{background-position:-200% 0}}.grid{display:grid;gap:var(--space-lg)}.grid--2{grid-template-columns:repeat(2,1fr)}.grid--3{grid-template-columns:repeat(3,1fr)}.grid--4{grid-template-columns:repeat(4,1fr)}.grid--auto{grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}.grid--responsive{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}@media (max-width: 768px){.grid--2,.grid--3,.grid--4{grid-template-columns:1fr}}.flex{display:flex}.flex--center{align-items:center;justify-content:center}.flex--between{align-items:center;justify-content:space-between}.flex--wrap{flex-wrap:wrap}.flex--column{flex-direction:column}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-3xl) var(--space-lg);text-align:center;color:var(--text-secondary)}.empty-state__icon{width:64px;height:64px;margin-bottom:var(--space-lg);opacity:.5}.empty-state__title{margin:0 0 var(--space-sm) 0;font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);color:var(--text-primary)}.empty-state__description{margin:0 0 var(--space-lg) 0;max-width:400px;line-height:1.6}.badge{display:inline-flex;align-items:center;padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-full);font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);text-transform:uppercase;letter-spacing:.05em}.badge--primary{background-color:var(--brand-light);color:var(--brand-primary)}.badge--success{background-color:#10b9811a;color:var(--success)}.badge--warning{background-color:#f59e0b1a;color:var(--warning)}.badge--error{background-color:#ef44441a;color:var(--error)}.badge--info{background-color:#3b82f61a;color:var(--info)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hover-lift{transition:transform var(--transition-fast)}.hover-lift:hover{transform:translateY(-2px)}.fade-in{animation:fadeIn var(--transition-normal) ease-out}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.header{display:flex;justify-content:space-between;align-items:center;padding:var(--space-md) var(--space-xl);background:linear-gradient(135deg,var(--brand-primary) 0%,var(--brand-secondary) 100%);color:var(--text-inverse);position:sticky;top:0;z-index:var(--z-sticky);box-shadow:var(--shadow-lg);border-bottom:1px solid rgba(255,255,255,.1)}.logo{font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);letter-spacing:-.025em;background:linear-gradient(45deg,#fff,#e8f5e8);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.logo-link{color:inherit;text-decoration:none;transition:all var(--transition-fast);display:flex;align-items:center;gap:var(--space-sm)}.logo-link:hover{transform:scale(1.05)}.logo-link:before{content:"🍽️";font-size:var(--font-size-lg);filter:drop-shadow(0 2px 4px rgba(0,0,0,.2))}.hamburger{display:none;flex-direction:column;gap:4px;width:40px;height:40px;justify-content:center;align-items:center;background:#ffffff1a;border:none;border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.hamburger:hover{background:#fff3;transform:scale(1.05)}.hamburger:focus{outline:none;box-shadow:0 0 0 2px #ffffff4d}.hamburger span{width:20px;height:2px;background:currentColor;border-radius:2px;transition:all var(--transition-fast)}.hamburger[aria-expanded=true] span:nth-child(1){transform:rotate(45deg) translate(5px,5px)}.hamburger[aria-expanded=true] span:nth-child(2){opacity:0}.hamburger[aria-expanded=true] span:nth-child(3){transform:rotate(-45deg) translate(7px,-6px)}.nav{display:flex;align-items:center;gap:var(--space-sm)}.nav-link{color:var(--text-inverse);text-decoration:none;padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);font-weight:var(--font-weight-medium);font-size:var(--font-size-sm);transition:all var(--transition-fast);position:relative;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.nav-link:before{content:"";position:absolute;bottom:0;left:50%;width:0;height:2px;background:var(--brand-accent);transition:all var(--transition-fast);transform:translate(-50%)}.nav-link:hover,.nav-link--active{background:#ffffff26;transform:translateY(-1px)}.nav-link--active:before{width:80%}.nav-button{background:#ffffff1a;border:1px solid rgba(255,255,255,.2);color:var(--text-inverse);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);cursor:pointer;font-weight:var(--font-weight-medium);font-size:var(--font-size-sm);text-align:center;transition:all var(--transition-fast);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.nav-button:hover{background:#fff3;transform:translateY(-1px);box-shadow:var(--shadow-sm)}.nav-button:focus{outline:none;box-shadow:0 0 0 2px #ffffff4d}.nav-button--logout{background:#ef444433;border-color:#ef444466}.nav-button--logout:hover{background:#ef44444d;border-color:#ef444499}@media (max-width: 768px){.header{padding:var(--space-md) var(--space-lg)}.hamburger{display:flex}.nav{position:absolute;top:100%;left:0;right:0;flex-direction:column;gap:var(--space-xs);padding:var(--space-lg);background:linear-gradient(135deg,var(--brand-primary) 0%,var(--brand-secondary) 100%);border-top:1px solid rgba(255,255,255,.1);box-shadow:var(--shadow-xl);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transform:translateY(-100%);opacity:0;visibility:hidden;transition:all var(--transition-normal)}.nav.is-open{transform:translateY(0);opacity:1;visibility:visible}.nav-link,.nav-button{width:100%;text-align:left;padding:var(--space-md)}.nav-link:before{display:none}}@media (min-width: 1200px){.header{padding:var(--space-lg) var(--space-2xl)}.nav{gap:var(--space-md)}.nav-link{padding:var(--space-sm) var(--space-lg)}}.dashboard{max-width:var(--max-width);margin:0 auto;padding:var(--space-lg) 0}.dashboard__welcome{text-align:center;margin-bottom:var(--space-3xl);padding:var(--space-2xl) var(--space-lg);background:linear-gradient(135deg,var(--brand-light) 0%,var(--surface) 100%);border-radius:var(--radius-xl);border:1px solid var(--border-light)}.dashboard__title{font-size:var(--font-size-3xl);font-weight:var(--font-weight-bold);color:var(--text-primary);margin-bottom:var(--space-md);background:linear-gradient(135deg,var(--brand-primary),var(--brand-secondary));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.dashboard__subtitle{font-size:var(--font-size-lg);max-width:600px;margin:0 auto;line-height:var(--line-height-relaxed)}.dashboard__stats{margin-bottom:var(--space-3xl)}.dashboard__stat-card{transition:all var(--transition-normal);border:1px solid var(--border-light);background:var(--surface)}.dashboard__stat-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg);border-color:var(--brand-accent)}.dashboard__stat-title{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;margin:0 0 var(--space-xs) 0}.dashboard__stat-number{font-size:var(--font-size-3xl);font-weight:var(--font-weight-bold);color:var(--brand-primary);margin:0 0 var(--space-xs) 0;line-height:1}.dashboard__stat-description{font-size:var(--font-size-sm);margin:0}.dashboard__stat-icon{font-size:var(--font-size-3xl);opacity:.8;transition:all var(--transition-fast)}.dashboard__stat-card:hover .dashboard__stat-icon{transform:scale(1.1);opacity:1}.dashboard__actions{margin-bottom:var(--space-3xl)}.dashboard__section-title{font-size:var(--font-size-2xl);font-weight:var(--font-weight-semibold);color:var(--text-primary);margin-bottom:var(--space-xl);text-align:center;position:relative}.dashboard__section-title:after{content:"";position:absolute;bottom:-8px;left:50%;transform:translate(-50%);width:60px;height:3px;background:linear-gradient(90deg,var(--brand-primary),var(--brand-accent));border-radius:var(--radius-full)}.dashboard__action-grid{gap:var(--space-lg)}.dashboard__action-card{transition:all var(--transition-normal);border:1px solid var(--border-light);background:var(--surface);text-decoration:none;color:inherit}.dashboard__action-card:hover{transform:translateY(-6px);box-shadow:var(--shadow-xl);border-color:var(--brand-accent);text-decoration:none;color:inherit}.dashboard__action-icon{font-size:var(--font-size-3xl);margin-bottom:var(--space-md);transition:all var(--transition-fast)}.dashboard__action-card:hover .dashboard__action-icon{transform:scale(1.2)}.dashboard__action-title{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--text-primary);margin:0 0 var(--space-sm) 0}.dashboard__action-description{font-size:var(--font-size-sm);line-height:var(--line-height-normal);margin:0}.dashboard__favorites{margin-bottom:var(--space-3xl)}.dashboard__tips{margin-bottom:var(--space-xl)}.dashboard__tips-grid{gap:var(--space-lg)}.dashboard__tip{padding:var(--space-lg);background:var(--bg-secondary);border-radius:var(--radius-lg);border:1px solid var(--border-light);transition:all var(--transition-fast)}.dashboard__tip:hover{background:var(--surface);box-shadow:var(--shadow-sm)}.dashboard__tip-title{font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);color:var(--text-primary);margin:0 0 var(--space-sm) 0}.dashboard__tip-description{font-size:var(--font-size-sm);color:var(--text-secondary);line-height:var(--line-height-normal);margin:0}@media (max-width: 1024px){.dashboard__action-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width: 768px){.dashboard{padding:var(--space-md) 0}.dashboard__welcome{margin-bottom:var(--space-2xl);padding:var(--space-xl) var(--space-md)}.dashboard__title{font-size:var(--font-size-2xl)}.dashboard__subtitle{font-size:var(--font-size-base)}.dashboard__action-grid{grid-template-columns:1fr;gap:var(--space-md)}.dashboard__tips-grid{grid-template-columns:1fr}}@media (max-width: 480px){.dashboard__stat-number,.dashboard__action-icon{font-size:var(--font-size-2xl)}}.dashboard-welcome{margin-bottom:2rem}.dashboard-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1.5rem;margin-bottom:2rem}.dashboard-card{background:var(--surface);border-radius:var(--radius);padding:1.5rem;box-shadow:var(--shadow)}.dashboard-card h2{margin-bottom:1rem}.dashboard-card p{margin-bottom:1.5rem}.tips-section{background:var(--surface);border-radius:var(--radius);padding:1.5rem;margin-top:2rem}.tips-list{padding-left:1.5rem;margin:1rem 0}.tips-list li{margin-bottom:.75rem}.profile-form,.preferences-form{display:flex;flex-direction:column;gap:1.5rem}.form-group{display:flex;flex-direction:column;gap:.5rem}.form-group label{font-weight:500}.form-group input,.form-group textarea,.form-group select{padding:.75rem;border:1px solid var(--border);border-radius:calc(var(--radius) / 2);font-size:1rem;width:100%}.form-actions{display:flex;gap:1rem;align-items:center;margin-top:1rem}.message{padding:.75rem;border-radius:calc(var(--radius) / 2);margin-bottom:1rem}.message.success{background-color:#d1fae5;color:#047857}.message.error{background-color:#fee2e2;color:#dc2626}.form-section{margin-bottom:1.5rem}.form-section h3{margin-bottom:.75rem}.checkbox-group,.radio-group{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:.75rem}.checkbox-label,.radio-label{display:flex;align-items:center;gap:.5rem}.checkbox-label input,.radio-label input{margin:0}.card{background:var(--surface);border-radius:var(--radius);padding:1.5rem;box-shadow:var(--shadow);margin-bottom:1.5rem}.loading{display:flex;justify-content:center;align-items:center;min-height:200px;font-weight:500;color:var(--muted)}.loading-spinner{width:30px;height:30px;border:3px solid rgba(0,0,0,.1);border-top:3px solid var(--brand);border-radius:50%;animation:spin 1s linear infinite;margin-left:10px;display:inline-block}.loading-container{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:3rem 1rem;text-align:center;gap:1rem}.loading-container .loading-spinner{width:50px;height:50px;border-width:4px;margin:0 0 1rem}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.preferences-page{padding:1rem}.preferences-container{max-width:800px;margin:0 auto}.preferences-section{margin-bottom:2rem;padding:1.5rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.preferences-section h2{margin-bottom:1rem;color:var(--text)}.checkbox-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:.75rem}.checkbox-item{display:flex;align-items:center;gap:.5rem;cursor:pointer;padding:.5rem;border-radius:8px;transition:background-color .2s ease}.checkbox-item:hover{background-color:#f8fafc}.checkbox-item input[type=checkbox]{margin:0}.goals-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem}.goal-item{display:flex;flex-direction:column;gap:.5rem}.goal-item label{font-weight:600;color:var(--text)}.goal-item input{padding:.75rem;border:1px solid var(--border);border-radius:8px;font-size:1rem}.preferences-actions{margin-top:2rem;display:flex;justify-content:center}.save-button{background:var(--brand);color:#fff;border:none;padding:.75rem 2rem;border-radius:8px;font-size:1rem;font-weight:600;cursor:pointer;transition:background-color .2s ease}.save-button:hover:not(:disabled){background:var(--brand-600)}.save-button:disabled{opacity:.6;cursor:not-allowed}.sync-status{display:inline-block;padding:.5rem 1rem;margin-right:1rem;background-color:var(--bg);border-radius:var(--radius);font-size:.875rem;color:var(--muted);animation:fadeIn .3s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.plan-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem}.plan-actions{display:flex;align-items:center;gap:.5rem}.plan-actions button{flex-shrink:0}.plan-grid{display:grid;grid-template-columns:120px repeat(7,1fr);grid-template-rows:repeat(4,auto);gap:8px;margin-top:1rem}.plan-corner{background:transparent}.plan-day{background:var(--surface);padding:10px;font-weight:600;text-align:center;border-radius:var(--radius)}.plan-slot{display:flex;flex-direction:column;justify-content:center;text-align:center;padding:10px;background:var(--surface);border-radius:var(--radius);font-weight:500}.plan-cell{display:flex;justify-content:center;align-items:center;min-height:100px}.cell-empty{border:2px dashed var(--border);border-radius:var(--radius);padding:20px;background-color:var(--bg-alt);cursor:pointer;width:100%;height:100%;min-height:100px;transition:all .2s ease}.cell-empty:hover{background-color:var(--surface-hover);border-color:var(--primary)}.cell-filled{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;height:100%;min-height:100px;padding:8px;border-radius:var(--radius);background-color:var(--bg)}.cell-filled .title{font-weight:500;margin-bottom:8px;text-align:center}.cell-actions{margin-top:10px;display:flex;gap:10px}.plan-editor{position:fixed;inset:0;background-color:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000}.cell-filled.dragging{opacity:.5;transform:rotate(2deg)}.plan-cell.hover{background-color:var(--surface-hover);border:2px solid var(--primary);transform:scale(1.02)}.cell-drop-target{background-color:var(--surface-hover);border:2px dashed var(--primary);animation:pulse 1s infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.7}}.editor-card{width:100%;max-width:500px;padding:20px}.editor-card input{margin:15px 0;width:100%}.editor-actions{display:flex;gap:10px;margin-top:15px}.recipe-card{position:relative;overflow:hidden;transition:all var(--transition-normal);border:1px solid var(--border-light);background:var(--surface);border-radius:var(--radius-lg);transform:translateY(0)}.recipe-card:hover{transform:translateY(-4px);box-shadow:0 8px 25px #00000014,0 0 0 1px #7fb0691a;border-color:var(--brand-accent)}.recipe-card:before{content:"";position:absolute;top:0;left:0;right:0;height:4px;background:linear-gradient(90deg,var(--brand-primary),var(--brand-accent));opacity:0;transition:opacity var(--transition-normal)}.recipe-card:hover:before{opacity:1}.recipe-card__image-container{position:relative;height:200px;overflow:hidden;background:var(--bg-secondary)}.recipe-card__image{width:100%;height:100%;object-fit:cover;transition:all var(--transition-slow);opacity:0}.recipe-card__image.loaded{opacity:1}.recipe-card:hover .recipe-card__image{transform:scale(1.02)}.recipe-card__image-skeleton{width:100%;height:100%}.recipe-card__image-placeholder{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;background:var(--bg-secondary);color:var(--text-muted)}.recipe-card__image-icon{font-size:var(--font-size-3xl);margin-bottom:var(--space-sm)}.recipe-card__favorite-btn{position:absolute;top:var(--space-md);right:var(--space-md);width:40px;height:40px;border:none;border-radius:50%;background:#ffffffe6;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);cursor:pointer;transition:all var(--transition-fast);display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-md)}.recipe-card__favorite-btn:hover{transform:scale(1.1);background:#fff}.recipe-card__favorite-btn:focus{outline:none;box-shadow:var(--shadow-focus)}.recipe-card__favorite-btn.active{background:#ef44441a}.recipe-card__favorite-icon{font-size:var(--font-size-lg);transition:all var(--transition-fast)}.recipe-card__title{margin-bottom:var(--space-md);font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);line-height:var(--line-height-tight);color:var(--text-primary)}.recipe-card__meta{display:flex;flex-wrap:wrap;gap:var(--space-xs);margin-bottom:var(--space-md)}.recipe-card__summary{color:var(--text-secondary);font-size:var(--font-size-sm);line-height:var(--line-height-normal);margin:0}.recipe-card__actions{display:flex;gap:var(--space-sm);justify-content:space-between;padding:var(--space-md);background:linear-gradient(to top,rgba(0,0,0,.02),transparent)}.recipe-card__actions .btn{flex:1;position:relative;font-weight:600;transition:all var(--transition-normal)}.recipe-card__actions .btn--outline{background:#fffc;color:var(--brand-primary);border:1px solid var(--border-light);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.recipe-card__actions .btn--outline:hover{background:var(--brand-primary);color:#fff;border-color:var(--brand-primary);transform:translateY(-1px);box-shadow:0 4px 12px #2d501633}.recipe-card__actions .btn--primary{background:linear-gradient(135deg,var(--brand-primary),var(--brand-secondary));color:#fff;border:2px solid transparent}.recipe-card__actions .btn--primary:hover{background:linear-gradient(135deg,var(--brand-secondary),var(--brand-accent));transform:translateY(-1px);box-shadow:0 4px 12px #2d501640}.recipe-card__actions .btn--primary:before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,transparent,rgba(255,255,255,.1),transparent);transform:translate(-100%);transition:transform .6s ease}.recipe-card:hover .btn--primary:before{transform:translate(100%)}.recipes-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:var(--space-xl);padding:var(--space-lg) 0}@media (max-width: 768px){.recipes-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--space-lg)}.recipe-card__image-container{height:180px}.recipe-card__actions{flex-direction:column}.recipe-card__actions .btn{width:100%}}@media (max-width: 480px){.recipes-grid{grid-template-columns:1fr;gap:var(--space-md)}.recipe-card__image-container{height:200px}}.recipe-search{margin-bottom:var(--space-xl)}.recipe-search__input{width:100%;max-width:600px;margin:0 auto var(--space-lg);display:block}.recipe-filters{display:flex;flex-wrap:wrap;gap:var(--space-md);align-items:center;justify-content:center;margin-bottom:var(--space-xl)}.recipe-filters__group{display:flex;flex-wrap:wrap;gap:var(--space-sm);align-items:center}.recipe-filters__label{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--text-secondary);margin-right:var(--space-sm)}.recipe-details{max-width:800px;margin:0 auto}.recipe-details__header{position:relative;margin-bottom:var(--space-xl)}.recipe-details__image{width:100%;height:300px;object-fit:cover;border-radius:var(--radius-lg);box-shadow:var(--shadow-lg)}.recipe-details__meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:var(--space-lg);margin:var(--space-xl) 0;padding:var(--space-lg);background:var(--bg-secondary);border-radius:var(--radius-lg)}.recipe-details__meta-item{text-align:center}.recipe-details__meta-label{display:block;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--text-secondary);margin-bottom:var(--space-xs)}.recipe-details__meta-value{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--brand-primary)}.recipe-details__section{margin-bottom:var(--space-xl)}.recipe-details__section-title{font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);color:var(--text-primary);margin-bottom:var(--space-lg);padding-bottom:var(--space-sm);border-bottom:2px solid var(--brand-light)}.recipe-details__ingredients{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:var(--space-md)}.recipe-details__ingredient{display:flex;align-items:center;padding:var(--space-sm) var(--space-md);background:var(--surface);border:1px solid var(--border-light);border-radius:var(--radius-md);transition:all var(--transition-fast)}.recipe-details__ingredient:hover{background:var(--brand-light);border-color:var(--brand-accent)}.recipe-details__ingredient-check{margin-right:var(--space-sm);color:var(--brand-primary)}.recipe-details__instructions{counter-reset:step-counter}.recipe-details__instruction{counter-increment:step-counter;position:relative;padding:var(--space-lg);margin-bottom:var(--space-lg);background:var(--surface);border:1px solid var(--border-light);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.recipe-details__instruction:before{content:counter(step-counter);position:absolute;top:var(--space-md);left:var(--space-md);width:32px;height:32px;background:var(--brand-primary);color:var(--text-inverse);border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:var(--font-weight-bold);font-size:var(--font-size-sm)}.recipe-details__instruction-text{margin-left:48px;line-height:var(--line-height-relaxed)}.recipes-loading{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:var(--space-xl);padding:var(--space-lg) 0}.recipe-card-skeleton{background:var(--surface);border:1px solid var(--border-light);border-radius:var(--radius-lg);overflow:hidden}.recipe-card-skeleton__image{height:200px;background:var(--bg-secondary)}.recipe-card-skeleton__content{padding:var(--space-lg)}.recipe-card-skeleton__title{height:24px;margin-bottom:var(--space-md)}.recipe-card-skeleton__meta{display:flex;gap:var(--space-sm);margin-bottom:var(--space-md)}.recipe-card-skeleton__badge{height:20px;width:80px;border-radius:var(--radius-full)}.recipe-card-skeleton__summary{height:16px;margin-bottom:var(--space-sm)}.recipe-card-skeleton__actions{display:flex;gap:var(--space-sm);margin-top:var(--space-lg)}.recipe-card-skeleton__button{height:36px;flex:1;border-radius:var(--radius-md)}.recipes-empty{text-align:center;padding:var(--space-3xl) var(--space-lg)}.recipes-empty__icon{font-size:4rem;margin-bottom:var(--space-lg);opacity:.5}.recipes-empty__title{font-size:var(--font-size-2xl);font-weight:var(--font-weight-semibold);color:var(--text-primary);margin-bottom:var(--space-md)}.recipes-empty__description{color:var(--text-secondary);max-width:400px;margin:0 auto var(--space-xl);line-height:var(--line-height-relaxed)}@media (max-width: 640px){.recipe-filters{flex-direction:column;align-items:stretch}.recipe-filters__group{justify-content:center}.recipe-details__meta{grid-template-columns:repeat(2,1fr)}.recipe-details__ingredients{grid-template-columns:1fr}}.recipe-card{position:relative}.favorite-btn-container{position:absolute;top:10px;right:10px;z-index:5}.favorite-btn{background-color:#fffc;border:none;border-radius:50%;width:36px;height:36px;display:flex;align-items:center;justify-content:center;font-size:20px;cursor:pointer;transition:all .2s ease;box-shadow:0 2px 4px #0000001a}.favorite-btn:hover{background-color:#fff;transform:scale(1.1)}.favorite-btn.favorite-active{color:#f59e0b}.meal-tracking{display:flex;justify-content:center;margin-top:8px}.meal-tracking-btn{background:#f9fafb;border:1px solid #e5e7eb;border-radius:50%;width:32px;height:32px;margin:0 4px;font-size:16px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease;box-shadow:0 1px 2px #0000000d}.meal-tracking-btn:hover{transform:translateY(-2px);box-shadow:0 2px 4px #0000001a}.meal-tracking-btn.made{border-color:#10b981;background-color:#d1fae5;color:#047857;box-shadow:0 0 0 2px #10b98133}.meal-tracking-btn.eaten{border-color:#6366f1;background-color:#e0e7ff;color:#4338ca;box-shadow:0 0 0 2px #6366f133}.sync-status{display:inline-block;padding:4px 8px;border-radius:4px;font-size:12px;margin-left:8px;background-color:#0000000d}.sync-status.syncing{background-color:#3b82f61a;color:#3b82f6}.sync-status.success{background-color:#10b9811a;color:#10b981}.sync-status.error{background-color:#ef44441a;color:#ef4444}.meal-tracking-summary{margin:20px 0;padding:16px;background-color:#f9fafb;border-radius:8px;box-shadow:0 1px 3px #0000000d}.meal-tracking-summary h3{margin-top:0;margin-bottom:12px;font-size:18px;color:#374151}.progress-stats{display:flex;flex-direction:column;gap:12px}.stat-item{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.stat-label{min-width:80px;font-weight:500;color:#6b7280}.stat-value{font-weight:600;color:#374151}.progress-bar{flex-grow:1;height:8px;background-color:#e5e7eb;border-radius:4px;overflow:hidden;margin-left:8px;min-width:100px}.progress-fill{height:100%;transition:width .3s ease}.progress-fill.made{background-color:#10b981}.progress-fill.eaten{background-color:#6366f1}.recipe-card{position:relative;transition:all .3s ease;border-radius:8px;overflow:hidden}.recipe-card.pantry-full{border:2px solid #34d399!important;box-shadow:0 4px 12px #34d39933!important}.recipe-card.pantry-partial{border:2px solid #fbbf24!important;box-shadow:0 4px 12px #fbbf2433!important}.recipe-card.pantry-missing{opacity:.85}.compatibility-badges{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:.5rem}.badge{font-size:.7rem;padding:.15rem .4rem;border-radius:4px;font-weight:600;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}.pantry-badge{background-color:#d1fae5;color:#047857;border:1px solid #34d399}.missing-badge{background-color:#fef3c7;color:#92400e;border:1px solid #fbbf24}.allergen-badge{background-color:#fee2e2;color:#b91c1c;border:1px solid #ef4444}.diet-badge{background-color:#e0f2fe;color:#075985;border:1px solid #38bdf8}.calories{font-size:.875rem;font-weight:400;color:#6b7280}.calorie-exceeded{color:#b91c1c}.calorie-diff{margin-left:4px;font-weight:500}.ingredient-substitutions{margin-top:1rem;padding:1rem;background-color:#f3f4f6;border-radius:8px}.substitutions-list{padding-left:1.5rem;margin:.5rem 0}.text-sm{font-size:.875rem}.muted{color:#6b7280}.filter-controls{display:flex;flex-wrap:wrap;gap:1rem;margin-bottom:1.5rem;align-items:center}.filter-control{display:flex;align-items:center;gap:.5rem}.filter-control input[type=checkbox]{width:1rem;height:1rem}.filter-group{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}.filter-group label{margin:0}.filter-divider{height:1.5rem;width:1px;background-color:#d1d5db;margin:0 .5rem}.missing-ingredients{margin-top:.5rem;padding:.5rem;background-color:#fef3c7;border-radius:4px;font-size:.8rem}.missing-ingredient-item{display:flex;align-items:center;gap:.25rem;margin-bottom:.25rem}.missing-ingredient-item:last-child{margin-bottom:0}.quick-select{background:var(--card-bg);border-radius:16px;padding:1.5rem;margin-bottom:2rem;border:2px solid var(--border-color);transition:all .3s ease}.quick-select:hover{box-shadow:var(--shadow-glow);border-color:var(--primary-color)}.quick-select-header{margin-bottom:1.5rem;text-align:center}.quick-select-header h3{color:var(--primary-color);margin:0 0 .5rem;font-size:1.25rem;font-weight:600}.quick-select-header p{margin:0;font-size:.9rem}.quick-select-controls{margin-bottom:1.5rem}.quick-select-search{width:100%;padding:.75rem 1rem;border:2px solid var(--border-color);border-radius:12px;font-size:.95rem;background:var(--input-bg);color:var(--text-color);transition:all .3s ease}.quick-select-search:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px var(--primary-color-alpha);transform:translateY(-1px)}.quick-select-categories{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1.5rem;padding-bottom:1rem;border-bottom:2px solid var(--border-color)}.category-tab{padding:.5rem 1rem;border:2px solid var(--border-color);border-radius:20px;background:var(--card-bg);color:var(--text-secondary);font-size:.85rem;font-weight:500;cursor:pointer;transition:all .3s ease;white-space:nowrap}.category-tab:hover{background:var(--primary-color-light);border-color:var(--primary-color);color:var(--primary-color);transform:translateY(-2px);box-shadow:var(--shadow-float)}.category-tab.active{background:var(--primary-color);border-color:var(--primary-color);color:#fff;box-shadow:var(--shadow-glow)}.category-tab.active:hover{background:var(--primary-color-dark);transform:translateY(-2px)}.quick-select-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:.75rem;margin-bottom:1rem}.quick-select-item{display:flex;flex-direction:column;align-items:center;padding:1rem .75rem;border:2px solid var(--border-color);border-radius:12px;background:var(--card-bg);cursor:pointer;transition:all .3s ease;text-align:center;gap:.25rem;min-height:100px}.quick-select-item:hover{background:var(--primary-color-light);border-color:var(--primary-color);transform:translateY(-3px) scale(1.02);box-shadow:var(--shadow-glow)}.quick-select-item:active{transform:translateY(-1px) scale(.98)}.quick-select-item:disabled{opacity:.6;cursor:not-allowed;transform:none}.quick-select-item:disabled:hover{background:var(--card-bg);border-color:var(--border-color);transform:none;box-shadow:none}.item-emoji{font-size:1.75rem;margin-bottom:.25rem;display:block}.item-name{font-weight:600;color:var(--text-color);font-size:.85rem;line-height:1.2;margin-bottom:.125rem}.item-quantity{font-size:.75rem;color:var(--text-secondary);font-weight:500}.quick-select-tip{background:linear-gradient(135deg,var(--accent-color-light),var(--accent-color-alpha));border:2px solid var(--accent-color);border-radius:12px;padding:.75rem 1rem;font-size:.9rem;color:var(--text-color);margin-top:1rem;animation:pulse-gentle 2s ease-in-out infinite}.quick-select-tip strong{color:var(--accent-color)}@media (max-width: 768px){.quick-select{padding:1rem;margin-bottom:1.5rem}.quick-select-grid{grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:.5rem}.quick-select-item{padding:.75rem .5rem;min-height:90px}.item-emoji{font-size:1.5rem}.item-name{font-size:.8rem}.item-quantity{font-size:.7rem}.category-tab{font-size:.8rem;padding:.4rem .8rem}.quick-select-categories{gap:.25rem}}@media (max-width: 480px){.quick-select-grid{grid-template-columns:repeat(auto-fill,minmax(100px,1fr))}.quick-select-item{min-height:80px;padding:.5rem .25rem}.item-emoji{font-size:1.25rem}.item-name{font-size:.75rem}.item-quantity{font-size:.65rem}}.quick-select-item.loading{opacity:.7;pointer-events:none}.quick-select-item.loading:after{content:"";position:absolute;top:50%;left:50%;width:20px;height:20px;margin:-10px 0 0 -10px;border:2px solid var(--primary-color-light);border-radius:50%;border-top-color:var(--primary-color);animation:spin 1s ease-in-out infinite}[data-theme=dark] .quick-select{background:var(--card-bg-dark);border-color:var(--border-color-dark)}[data-theme=dark] .quick-select:hover{border-color:var(--primary-color);box-shadow:var(--shadow-glow-dark)}[data-theme=dark] .quick-select-search{background:var(--input-bg-dark);border-color:var(--border-color-dark);color:var(--text-color-dark)}[data-theme=dark] .category-tab{background:var(--card-bg-dark);border-color:var(--border-color-dark);color:var(--text-secondary-dark)}[data-theme=dark] .category-tab:hover{background:var(--primary-color-dark);border-color:var(--primary-color);color:var(--primary-color-light)}[data-theme=dark] .quick-select-item{background:var(--card-bg-dark);border-color:var(--border-color-dark)}[data-theme=dark] .quick-select-item:hover{background:var(--primary-color-dark);border-color:var(--primary-color)}[data-theme=dark] .item-name{color:var(--text-color-dark)}[data-theme=dark] .item-quantity{color:var(--text-secondary-dark)}.notification-toast{position:fixed;top:20px;right:20px;padding:1rem 1.5rem;border-radius:12px;color:#fff;font-weight:500;z-index:1000;animation:slideInRight .3s ease,fadeOut .5s ease 2.5s forwards;box-shadow:0 4px 20px #00000026;max-width:350px}.notification-toast.success{background:linear-gradient(135deg,#4caf50,#45a049)}.notification-toast.error{background:linear-gradient(135deg,#f44336,#d32f2f)}.notification-toast.info{background:linear-gradient(135deg,#2196f3,#1976d2)}@keyframes slideInRight{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes fadeOut{to{opacity:0;transform:translate(100%)}}.quick-select-item.clicked{background:var(--primary-color)!important;color:#fff!important;transform:scale(.95);animation:clickPulse .6s ease;position:relative}.quick-select-item.clicked .item-name,.quick-select-item.clicked .item-quantity{color:#fff!important}.quick-select-item.loading{opacity:.6;pointer-events:none}@keyframes clickPulse{0%{transform:scale(1);box-shadow:0 0 0 0 var(--primary-color)}50%{transform:scale(.95);box-shadow:0 0 0 10px transparent}to{transform:scale(1);box-shadow:0 0 0 0 transparent}}.added-checkmark{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:2rem;color:#fff;font-weight:700;animation:checkmarkPop .6s ease}@keyframes checkmarkPop{0%{transform:translate(-50%,-50%) scale(0);opacity:0}50%{transform:translate(-50%,-50%) scale(1.2);opacity:1}to{transform:translate(-50%,-50%) scale(1);opacity:1}}.pantry-item-card.recently-added{animation:newItemHighlight 3s ease;position:relative}@keyframes newItemHighlight{0%{transform:scale(1);box-shadow:0 0 0 0 var(--primary-color)}10%{transform:scale(1.05);box-shadow:0 0 0 10px #4caf504d}20%{transform:scale(1);box-shadow:0 0 0 20px transparent}to{transform:scale(1);box-shadow:0 0 0 0 transparent}}.new-badge{position:absolute;top:-5px;right:-5px;background:linear-gradient(135deg,#4caf50,#45a049);color:#fff;font-size:.7rem;font-weight:700;padding:.2rem .5rem;border-radius:12px;animation:badgePulse 2s ease infinite;box-shadow:0 2px 8px #4caf504d}@keyframes badgePulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.1);opacity:.8}}.pantry-item-card{transition:all .3s ease,transform .2s ease}.pantry-item-card:hover{transform:translateY(-2px);box-shadow:0 8px 25px #00000026}.quick-select.loading:after{content:"";position:absolute;inset:0;background:#fffc;border-radius:16px;display:flex;align-items:center;justify-content:center}
