:root{--bg-main: #FBF9F5;--bg-surface: #FFFFFF;--bg-surface-subtle: #F5F2EB;--bg-card: #FFFFFF;--bg-hover: #F2EFE8;--brand-primary: #244B34;--brand-primary-hover: #1D3D2A;--brand-primary-active: #152E1F;--brand-primary-light: #EBF1ED;--brand-sage: #8DA792;--brand-sage-light: #E8EFE9;--brand-sage-border: #D1DFD4;--accent-terracotta: #D95D39;--accent-terracotta-light: #FAECE8;--accent-terracotta-hover: #C64E2C;--text-primary: #1C1917;--text-secondary: #57534E;--text-muted: #8C877F;--text-inverse: #FFFFFF;--border-light: #ECE8E0;--border-subtle: #DFD9CE;--border-focus: #244B34;--status-match-high-bg: #EAF4EE;--status-match-high-text: #1E5434;--status-match-high-border: #C2E2CC;--status-match-90-bg: #F0F6F1;--status-match-90-text: #235538;--status-match-90-border: #D0E4D5;--status-match-mid-bg: #FEF6EC;--status-match-mid-text: #B45309;--status-match-mid-border: #F8D9B2;--status-match-low-bg: #F5F2EB;--status-match-low-text: #78716C;--status-match-low-border: #ECE8E0;--radius-xs: 4px;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-xl: 20px;--radius-pill: 9999px;--shadow-sm: 0 1px 3px rgba(28, 25, 23, .04), 0 1px 2px rgba(28, 25, 23, .02);--shadow-md: 0 4px 12px rgba(28, 25, 23, .06), 0 1px 3px rgba(28, 25, 23, .03);--shadow-lg: 0 12px 28px rgba(28, 25, 23, .08), 0 4px 10px rgba(28, 25, 23, .03);--shadow-drawer: 0 -8px 30px rgba(28, 25, 23, .12);--font-sans: "Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-serif: "Fraunces", Georgia, serif;--transition-fast: .15s cubic-bezier(.4, 0, .2, 1);--transition-normal: .22s cubic-bezier(.4, 0, .2, 1);--transition-slow: .32s cubic-bezier(.4, 0, .2, 1);--max-content-width: 1240px;--header-height: 64px;--mobile-nav-height: 62px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-family:var(--font-sans);background-color:var(--bg-main);color:var(--text-primary);line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;scroll-behavior:smooth}body{min-height:100vh;display:flex;flex-direction:column;background-color:var(--bg-main);color:var(--text-primary);overflow-x:hidden}#root{display:flex;flex-direction:column;min-height:100vh}img,picture,video,canvas,svg{display:block;max-width:100%}input,button,textarea,select{font:inherit;color:inherit}button{cursor:pointer;background:none;border:none}a{color:inherit;text-decoration:none}ul,ol{list-style:none}:focus-visible{outline:2px solid var(--brand-primary);outline-offset:2px}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--bg-main)}::-webkit-scrollbar-thumb{background:var(--border-subtle);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--brand-sage)}.container{width:100%;max-width:var(--max-content-width);margin-left:auto;margin-right:auto;padding-left:20px;padding-right:20px}@media (min-width: 768px){.container{padding-left:32px;padding-right:32px}}.main-content{flex:1;padding-bottom:60px}@media (max-width: 768px){.main-content{padding-bottom:calc(var(--mobile-nav-height) + 36px)}}.section-header{margin-bottom:24px}.section-tagline{font-size:.8125rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--brand-primary);margin-bottom:6px;display:block}.section-title{font-family:var(--font-serif);font-size:1.875rem;font-weight:600;color:var(--text-primary);line-height:1.25;letter-spacing:-.01em}.section-subtitle{font-size:.95rem;color:var(--text-secondary);margin-top:6px;max-width:600px;line-height:1.5}@media (min-width: 768px){.section-title{font-size:2.25rem}}.site-header{position:sticky;top:0;z-index:50;background-color:#fbf9f5f5;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--border-light);height:var(--header-height);display:flex;align-items:center;transition:background-color var(--transition-normal)}.header-inner{display:flex;align-items:center;justify-content:space-between;width:100%}.header-brand{display:flex;align-items:center;gap:10px;font-family:var(--font-serif);font-size:1.4rem;font-weight:700;color:var(--text-primary);letter-spacing:-.02em}.brand-icon-wrapper{width:36px;height:36px;border-radius:var(--radius-sm);background-color:var(--brand-primary);color:#fff;display:flex;align-items:center;justify-content:center;transition:transform var(--transition-fast)}.header-brand:hover .brand-icon-wrapper{transform:rotate(-4deg) scale(1.04)}.brand-title{display:flex;align-items:center}.brand-title-accent{color:var(--brand-primary)}.header-nav{display:none;align-items:center;gap:4px}@media (min-width: 992px){.header-nav{display:flex}}.nav-link{padding:7px 14px;font-size:.9rem;font-weight:500;color:var(--text-secondary);border-radius:var(--radius-pill);transition:all var(--transition-fast);display:flex;align-items:center;gap:6px}.nav-link:hover{color:var(--text-primary);background-color:var(--bg-surface-subtle)}.nav-link.active{color:var(--brand-primary);background-color:var(--brand-primary-light);font-weight:600}.nav-badge{font-size:.72rem;background-color:var(--brand-primary);color:#fff;padding:1px 6px;border-radius:var(--radius-pill);font-weight:700}.header-actions{display:flex;align-items:center;gap:10px}.search-trigger-btn{display:flex;align-items:center;gap:8px;background-color:var(--bg-surface);border:1px solid var(--border-light);padding:7px 14px;border-radius:var(--radius-pill);color:var(--text-secondary);font-size:.85rem;transition:all var(--transition-fast)}.search-trigger-btn:hover{border-color:var(--border-subtle);background-color:#fff;color:var(--text-primary);box-shadow:var(--shadow-sm)}.search-shortcut{font-size:.72rem;background:var(--bg-surface-subtle);border:1px solid var(--border-light);padding:2px 6px;border-radius:4px;color:var(--text-muted)}@media (max-width: 640px){.search-shortcut,.search-trigger-text{display:none}.search-trigger-btn{padding:8px;border-radius:50%}}.user-profile-btn{display:flex;align-items:center;gap:8px;padding:5px 12px;border-radius:var(--radius-pill);border:1px solid var(--border-light);background-color:var(--bg-surface);font-size:.85rem;font-weight:500;color:var(--text-primary);transition:all var(--transition-fast)}.user-profile-btn:hover{border-color:var(--brand-sage);box-shadow:var(--shadow-sm)}.user-avatar-initial{width:26px;height:26px;border-radius:50%;background-color:var(--brand-primary);color:#fff;display:flex;align-items:center;justify-content:center;font-size:.78125rem;font-weight:600}.mobile-nav-bar{display:none;position:fixed;bottom:0;left:0;right:0;height:var(--mobile-nav-height);background-color:#fffffff7;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-top:1px solid var(--border-light);z-index:45;box-shadow:var(--shadow-drawer)}@media (max-width: 991px){.mobile-nav-bar{display:flex;align-items:center;justify-content:space-around;padding:0 8px}}.mobile-nav-item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:var(--text-secondary);font-size:.72rem;font-weight:500;padding:6px 8px;border-radius:var(--radius-sm);transition:color var(--transition-fast);position:relative;flex:1;text-align:center}.mobile-nav-item.active{color:var(--brand-primary);font-weight:600}.mobile-badge{position:absolute;top:4px;right:20%;background-color:var(--brand-primary);color:#fff;font-size:.65rem;padding:1px 5px;border-radius:var(--radius-pill);font-weight:700}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;font-weight:600;font-size:.9rem;padding:9px 18px;border-radius:var(--radius-pill);transition:all var(--transition-fast);white-space:nowrap;-webkit-user-select:none;user-select:none;min-height:42px}.btn-primary{background-color:var(--brand-primary);color:#fff;border:1px solid transparent}.btn-primary:hover{background-color:var(--brand-primary-hover);box-shadow:var(--shadow-md);transform:translateY(-1px)}.btn-primary:active{background-color:var(--brand-primary-active);transform:translateY(0)}.btn-secondary{background-color:var(--bg-surface);color:var(--text-primary);border:1px solid var(--border-light)}.btn-secondary:hover{background-color:var(--bg-surface-subtle);border-color:var(--border-subtle);box-shadow:var(--shadow-sm)}.btn-accent{background-color:var(--accent-terracotta);color:#fff;border:1px solid transparent}.btn-accent:hover{background-color:var(--accent-terracotta-hover);box-shadow:var(--shadow-md)}.btn-ghost{background:transparent;color:var(--text-secondary)}.btn-ghost:hover{background-color:var(--bg-surface-subtle);color:var(--text-primary)}.btn-sm{padding:6px 13px;font-size:.8125rem;min-height:32px}.btn-lg{padding:13px 26px;font-size:1rem;min-height:48px}.btn-icon-only{padding:8px;width:38px;height:38px;border-radius:50%}.badge{display:inline-flex;align-items:center;gap:5px;padding:4px 9px;border-radius:var(--radius-pill);font-size:.775rem;font-weight:600;letter-spacing:.01em;transition:all var(--transition-fast)}.badge-match-100{background-color:var(--status-match-high-bg);color:var(--status-match-high-text);border:1px solid var(--status-match-high-border)}.badge-match-90{background-color:var(--status-match-90-bg);color:var(--status-match-90-text);border:1px solid var(--status-match-90-border)}.badge-match-almost{background-color:var(--status-match-mid-bg);color:var(--status-match-mid-text);border:1px solid var(--status-match-mid-border)}.badge-match-explore{background-color:var(--status-match-low-bg);color:var(--status-match-low-text);border:1px solid var(--status-match-low-border)}.badge-dietary{background-color:var(--bg-surface-subtle);color:var(--text-secondary);border:1px solid var(--border-light)}.badge-terracotta{background-color:var(--accent-terracotta-light);color:var(--accent-terracotta);border:1px solid rgba(217,93,57,.2)}.recipe-card{background-color:var(--bg-card);border:1px solid var(--border-light);border-radius:var(--radius-lg);overflow:hidden;display:flex;flex-direction:column;box-shadow:var(--shadow-sm);transition:transform var(--transition-normal),box-shadow var(--transition-normal),border-color var(--transition-normal);position:relative;height:100%}.recipe-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-lg);border-color:var(--border-subtle)}.recipe-card:hover .recipe-img-container img{transform:scale(1.03)}.recipe-card-media{position:relative;width:100%;aspect-ratio:4 / 3;background-color:var(--bg-surface-subtle);overflow:hidden}.card-top-badges{position:absolute;top:10px;left:10px;display:flex;flex-direction:column;gap:6px;z-index:2}.card-save-btn{position:absolute;top:10px;right:10px;width:36px;height:36px;border-radius:50%;background-color:#fffffff0;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;color:var(--text-secondary);border:1px solid rgba(0,0,0,.06);box-shadow:var(--shadow-sm);transition:all var(--transition-fast);z-index:2}.card-save-btn:hover{background-color:#fff;color:var(--accent-terracotta);transform:scale(1.08)}.card-save-btn.saved{color:var(--accent-terracotta);background-color:#fff}.recipe-card-body{padding:16px 18px 18px;display:flex;flex-direction:column;flex:1}.recipe-card-meta{display:flex;align-items:center;gap:10px;font-size:.8rem;color:var(--text-muted);margin-bottom:6px}.meta-item{display:flex;align-items:center;gap:4px}.recipe-card-title{font-family:var(--font-serif);font-size:1.2rem;font-weight:600;color:var(--text-primary);line-height:1.35;margin-bottom:6px}.recipe-card-desc{font-size:.85rem;color:var(--text-secondary);line-height:1.45;margin-bottom:14px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.recipe-card-match-info{margin-top:auto;padding-top:10px;border-top:1px solid var(--border-light);font-size:.8rem}.match-status-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}.match-summary-text{font-weight:600;color:var(--text-primary)}.missing-ingredients-preview{color:var(--text-muted);font-size:.775rem;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}.missing-tag{color:var(--accent-terracotta);font-weight:500}.recipe-grid{display:grid;grid-template-columns:1fr;gap:24px}@media (min-width: 640px){.recipe-grid{grid-template-columns:repeat(2,1fr)}}@media (min-width: 1024px){.recipe-grid{grid-template-columns:repeat(3,1fr)}}.recipe-section-block{margin-bottom:44px}.section-badge-header{display:flex;align-items:center;gap:12px;margin-bottom:16px;flex-wrap:wrap}.section-badge-header h3{font-family:var(--font-serif);font-size:1.4rem;font-weight:600;color:var(--text-primary)}.ingredient-search-box{background-color:#fff;border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:16px 20px;box-shadow:var(--shadow-md);position:relative}.search-input-row{display:flex;align-items:center;gap:12px;width:100%}.search-input-field{flex:1;border:none;outline:none;font-size:1.05rem;background:transparent;color:var(--text-primary)}.search-input-field::placeholder{color:var(--text-muted)}.autocomplete-dropdown{position:absolute;top:calc(100% + 6px);left:0;right:0;background:#fff;border:1px solid var(--border-light);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);z-index:30;max-height:280px;overflow-y:auto}.autocomplete-item{display:flex;align-items:center;justify-content:space-between;padding:10px 18px;font-size:.92rem;cursor:pointer;transition:background-color var(--transition-fast)}.autocomplete-item:hover{background-color:var(--bg-surface-subtle)}.autocomplete-cat{font-size:.72rem;color:var(--text-muted);background:var(--bg-surface-subtle);padding:2px 8px;border-radius:var(--radius-pill)}.ingredient-chips-container{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}.ingredient-chip{display:inline-flex;align-items:center;gap:6px;background-color:var(--brand-primary-light);color:var(--brand-primary);border:1px solid var(--brand-sage-border);padding:5px 12px;border-radius:var(--radius-pill);font-size:.85rem;font-weight:600;transition:all var(--transition-fast);animation:chipEnter .18s ease-out forwards}@keyframes chipEnter{0%{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}}.chip-remove-btn{display:flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;color:var(--brand-primary);opacity:.75;transition:all var(--transition-fast)}.chip-remove-btn:hover{opacity:1;background-color:#244b3426}.quick-picks-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:14px}.quick-pick-label{font-size:.8rem;font-weight:600;color:var(--text-secondary)}.quick-pick-btn{background-color:var(--bg-surface);border:1px solid var(--border-light);padding:4px 10px;border-radius:var(--radius-pill);font-size:.8rem;color:var(--text-secondary);transition:all var(--transition-fast)}.quick-pick-btn:hover{background-color:var(--brand-primary-light);color:var(--brand-primary);border-color:var(--brand-sage-border)}.filter-bar{background-color:#fff;border:1px solid var(--border-light);border-radius:var(--radius-lg);padding:14px 18px;box-shadow:var(--shadow-sm);margin-bottom:28px;display:flex;flex-direction:column;gap:12px}.filter-row-primary{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.filter-row-secondary{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding-top:10px;border-top:1px solid var(--border-light)}.filter-select{padding:6px 12px;border-radius:var(--radius-pill);border:1px solid var(--border-light);background-color:var(--bg-main);font-size:.85rem;color:var(--text-primary);outline:none;cursor:pointer;transition:border-color var(--transition-fast)}.filter-select:focus{border-color:var(--brand-primary)}.cooking-mode-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:var(--bg-main);z-index:100;display:flex;flex-direction:column;overflow-y:auto}.cooking-mode-header{height:64px;padding:0 24px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--border-light);background-color:#fbf9f5f5}.cooking-mode-title{font-family:var(--font-serif);font-size:1.1rem;font-weight:600;color:var(--text-primary)}.cooking-mode-content{flex:1;max-width:800px;width:100%;margin:0 auto;padding:36px 24px 100px;display:flex;flex-direction:column;justify-content:center}.step-indicator{font-size:.85rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--brand-primary);margin-bottom:12px}.cooking-step-heading{font-family:var(--font-serif);font-size:1.85rem;font-weight:700;line-height:1.25;color:var(--text-primary);margin-bottom:18px}.cooking-step-instruction{font-size:1.15rem;line-height:1.65;color:var(--text-secondary);margin-bottom:28px}.cooking-step-tip{background-color:var(--brand-primary-light);border-left:4px solid var(--brand-primary);padding:14px 18px;border-radius:0 var(--radius-md) var(--radius-md) 0;font-size:.9rem;color:var(--brand-primary);margin-bottom:28px}.step-timer-box{display:flex;align-items:center;gap:16px;background:#fff;border:1px solid var(--border-light);border-radius:var(--radius-lg);padding:14px 18px;box-shadow:var(--shadow-sm);margin-bottom:28px;width:fit-content}.timer-digits{font-family:var(--font-sans);font-size:1.6rem;font-weight:700;color:var(--brand-primary);min-width:75px}.cooking-mode-footer{position:fixed;bottom:0;left:0;right:0;height:74px;background:#fff;border-top:1px solid var(--border-light);display:flex;align-items:center;justify-content:space-between;padding:0 24px;box-shadow:var(--shadow-drawer)}.modal-backdrop{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#1c191773;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:90;display:flex;align-items:center;justify-content:center;padding:20px;animation:fadeIn .16s ease-out}.modal-dialog{background-color:#fff;border-radius:var(--radius-xl);max-width:560px;width:100%;max-height:90vh;overflow-y:auto;box-shadow:var(--shadow-lg);position:relative;animation:slideUp .18s ease-out}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:18px 22px;border-bottom:1px solid var(--border-light)}.modal-title{font-family:var(--font-serif);font-size:1.3rem;font-weight:600;color:var(--text-primary)}.modal-body{padding:22px}.toast-container{position:fixed;bottom:24px;right:24px;display:flex;flex-direction:column;gap:10px;z-index:110;max-width:380px;width:calc(100% - 48px)}@media (max-width: 768px){.toast-container{bottom:calc(var(--mobile-nav-height) + 16px);right:16px;left:16px;width:auto}}.toast-item{background-color:var(--text-primary);color:#fff;padding:12px 18px;border-radius:var(--radius-md);box-shadow:var(--shadow-lg);display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:.875rem;animation:toastSlide .2s ease-out}@keyframes toastSlide{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.toast-action-btn{color:#8da792;font-weight:600;font-size:.8125rem;text-decoration:underline}.skeleton{background:linear-gradient(90deg,#f0ede6 25%,#f7f5f0,#f0ede6 75%);background-size:200% 100%;animation:skeletonPulse 1.5s infinite;border-radius:var(--radius-sm)}@keyframes skeletonPulse{0%{background-position:200% 0}to{background-position:-200% 0}}.site-footer{background-color:var(--bg-surface-subtle);border-top:1px solid var(--border-light);padding:50px 0 28px;margin-top:auto}.footer-top{display:grid;grid-template-columns:1fr;gap:36px;margin-bottom:40px}@media (min-width: 768px){.footer-top{grid-template-columns:2fr 1fr 1fr}}.footer-brand-title{font-family:var(--font-serif);font-size:1.3rem;font-weight:700;color:var(--text-primary);margin-bottom:8px}.footer-brand-desc{font-size:.9rem;color:var(--text-secondary);line-height:1.5;max-width:360px}.footer-nav-title{font-size:.78125rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);margin-bottom:14px}.footer-links{display:flex;flex-direction:column;gap:9px}.footer-link{font-size:.85rem;color:var(--text-secondary);transition:color var(--transition-fast)}.footer-link:hover{color:var(--brand-primary)}.footer-bottom{padding-top:20px;border-top:1px solid var(--border-light);display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:16px;font-size:.8rem;color:var(--text-muted)}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
