:root{--primary-color: #e63946;--primary-hover: #cc2f3b;--primary-soft: rgba(230, 57, 70, .12);--accent-color: #457b9d;--sand: #e9b44c;--background: #fbf8f1;--surface: #ffffff;--surface-alt: #f5efe4;--border: #e8e0d2;--text-primary: #3d405b;--text-secondary: #6b6e85;--text-muted: #9a9cad;--success: #6fa287;--warning: #e9b44c;--error: #c1584b;--spacing-xs: .25rem;--spacing-sm: .5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--radius-sm: .5rem;--radius-md: .75rem;--radius-lg: 1rem;--radius-full: 9999px;--shadow-sm: 0 1px 2px rgba(61, 64, 91, .06);--shadow-md: 0 4px 14px rgba(61, 64, 91, .1);--shadow-lg: 0 16px 40px rgba(61, 64, 91, .16);--transition-fast: .14s ease;--transition-base: .22s ease;--font-body: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-head: "Poppins", var(--font-body)}@media(prefers-color-scheme:dark){:root{--primary-soft: rgba(230, 57, 70, .2);--background: #211e1c;--surface: #2b2724;--surface-alt: #332e2a;--border: #423b34;--text-primary: #f4efe7;--text-secondary: #c6bfb4;--text-muted: #8e8579;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .3);--shadow-md: 0 4px 14px rgba(0, 0, 0, .4);--shadow-lg: 0 16px 40px rgba(0, 0, 0, .5)}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;scroll-behavior:smooth}body{font-family:var(--font-body);background-color:var(--background);color:var(--text-primary);line-height:1.6;-webkit-font-smoothing:antialiased}h1,h2,h3,h4{font-family:var(--font-head);line-height:1.25;letter-spacing:-.01em}h1{font-size:1.9rem;font-weight:700}h2{font-size:1.4rem;font-weight:600}h3{font-size:1.15rem;font-weight:600}a{color:var(--primary-color)}.app-container{min-height:100vh;display:flex;flex-direction:column}.main-content{flex:1;padding:var(--spacing-lg);max-width:1200px;margin:0 auto;width:100%}.navbar{background:color-mix(in srgb,var(--surface) 85%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--border);padding:var(--spacing-md) var(--spacing-lg);display:flex;justify-content:space-between;align-items:center;position:sticky;top:0;z-index:100}.navbar-brand{font-family:var(--font-head);font-size:1.35rem;font-weight:700;color:var(--primary-color);text-decoration:none;display:inline-flex;align-items:center;gap:var(--spacing-sm)}.navbar-brand:before{content:"🍽️";font-size:1.2rem}.navbar-actions{display:flex;align-items:center;gap:var(--spacing-sm)}.user-chip{font-size:.85rem;color:var(--text-secondary);background:var(--surface-alt);border:1px solid var(--border);padding:4px 12px;border-radius:var(--radius-full)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--spacing-sm);padding:.6rem 1.2rem;font-family:var(--font-body);font-size:.95rem;font-weight:600;text-decoration:none;border:1px solid transparent;border-radius:var(--radius-md);cursor:pointer;transition:transform var(--transition-fast),background-color var(--transition-fast),box-shadow var(--transition-fast)}.btn:hover{transform:translateY(-1px)}.btn:active{transform:translateY(0)}.btn:disabled{opacity:.55;cursor:not-allowed;transform:none}.btn-primary{background-color:var(--primary-color);color:#fff;box-shadow:var(--shadow-sm)}.btn-primary:hover{background-color:var(--primary-hover);box-shadow:var(--shadow-md)}.btn-secondary{background-color:var(--surface);color:var(--text-primary);border-color:var(--border)}.btn-secondary:hover{background-color:var(--surface-alt)}.btn-danger{background-color:var(--error);color:#fff}.btn-danger:hover{filter:brightness(.95)}.btn-sm{padding:.35rem .75rem;font-size:.8rem}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--spacing-lg);box-shadow:var(--shadow-sm);transition:box-shadow var(--transition-base),transform var(--transition-base)}.card:hover{box-shadow:var(--shadow-md)}.card-header{font-family:var(--font-head);font-size:1.15rem;font-weight:600;margin-bottom:var(--spacing-md)}.card-body{display:flex;flex-direction:column;gap:var(--spacing-md)}.input-group{display:flex;flex-direction:column;gap:var(--spacing-xs)}.input-label{font-size:.85rem;font-weight:600;color:var(--text-secondary)}.input{width:100%;padding:.65rem .85rem;font-family:inherit;font-size:.95rem;border:1px solid var(--border);border-radius:var(--radius-md);background-color:var(--surface);color:var(--text-primary);transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.input:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px var(--primary-soft)}.input::placeholder{color:var(--text-muted)}textarea.input{resize:vertical;line-height:1.5}.auth-shell{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:var(--spacing-lg);background:radial-gradient(1200px 500px at 100% -10%,var(--primary-soft),transparent),var(--background)}.auth-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);padding:var(--spacing-xl);max-width:400px;width:100%}.auth-title{font-family:var(--font-head);text-align:center;margin-bottom:var(--spacing-lg)}.tag-container{display:flex;flex-wrap:wrap;gap:var(--spacing-xs)}.tag{display:inline-flex;align-items:center;gap:var(--spacing-xs);padding:3px 10px;background-color:var(--surface-alt);border:1px solid var(--border);border-radius:var(--radius-full);font-size:.85rem;color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast)}.tag:hover,.tag.selected{border-color:var(--primary-color);color:var(--primary-color);background:var(--primary-soft)}.grid{display:grid;gap:var(--spacing-md)}.grid-cols-1{grid-template-columns:1fr}.grid-cols-2{grid-template-columns:repeat(2,1fr)}.grid-cols-3{grid-template-columns:repeat(3,1fr)}@media(max-width:768px){.grid-cols-2,.grid-cols-3{grid-template-columns:1fr}.navbar{padding:var(--spacing-sm) var(--spacing-md)}.main-content{padding:var(--spacing-md)}h1{font-size:1.6rem}}.alert{padding:var(--spacing-md);border-radius:var(--radius-md);margin-bottom:var(--spacing-md);display:flex;align-items:flex-start;gap:var(--spacing-sm);font-size:.9rem;border:1px solid transparent}.alert-info{background-color:var(--primary-soft);border-color:var(--primary-color);color:var(--text-primary)}.alert-success{background-color:#6fa28726;border-color:var(--success);color:var(--text-primary)}.alert-error{background-color:#c1584b1f;border-color:var(--error);color:var(--text-primary)}.onboarding-section{margin-bottom:var(--spacing-xl)}.onboarding-header{text-align:center;margin-bottom:var(--spacing-xl)}.onboarding-title{font-family:var(--font-head);font-size:1.8rem;font-weight:700;margin-bottom:var(--spacing-sm)}.onboarding-subtitle{font-size:1.05rem;color:var(--text-secondary);max-width:600px;margin:0 auto}.meal-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--spacing-lg)}.week-nav{display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-md);margin-bottom:var(--spacing-lg);flex-wrap:wrap}.week-nav-label{font-family:var(--font-head);font-size:1.1rem;font-weight:600}.week-grid{display:grid;grid-template-columns:repeat(7,minmax(150px,1fr));gap:var(--spacing-md);overflow-x:auto;padding-bottom:var(--spacing-sm)}.day-column{display:flex;flex-direction:column;gap:var(--spacing-sm)}.day-column-header{font-family:var(--font-head);font-weight:700;text-align:center;padding-bottom:var(--spacing-xs);border-bottom:2px solid var(--primary-color)}.meal-slot{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--spacing-sm);min-height:96px;display:flex;flex-direction:column;gap:var(--spacing-xs);cursor:pointer;transition:all var(--transition-fast)}.meal-slot:hover{border-color:var(--primary-color);box-shadow:var(--shadow-sm);transform:translateY(-2px)}.meal-slot--empty{cursor:default;color:var(--text-muted);align-items:center;justify-content:center;font-size:.8rem;background:var(--surface-alt);border-style:dashed}.meal-slot--empty:hover{border-color:var(--border);box-shadow:none;transform:none}.meal-slot-type{font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--primary-color)}.meal-slot-title{font-size:.85rem;font-weight:600;line-height:1.3}.meal-slot-cal{font-size:.72rem;color:var(--text-secondary);margin-top:auto}.recipe-title{font-family:var(--font-head);font-size:1.4rem;font-weight:700;color:var(--primary-color);margin-bottom:var(--spacing-sm)}.recipe-info{display:flex;flex-wrap:wrap;gap:var(--spacing-md);padding-top:var(--spacing-sm)}.info-item{font-size:.85rem;color:var(--text-secondary);background:var(--surface-alt);padding:2px 10px;border-radius:var(--radius-full)}.badge{display:inline-block;padding:4px 12px;border-radius:var(--radius-full);font-size:.75rem;font-weight:600}.badge-offline{background-color:#e9b44c33;color:#8a6d1f}@media(prefers-color-scheme:dark){.badge-offline{color:var(--sand)}}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background-color:#211e1c8c;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;z-index:1000;padding:var(--spacing-md);animation:fadeIn .2s ease-out}.modal-content{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--spacing-xl);max-width:540px;width:100%;max-height:88vh;overflow-y:auto;box-shadow:var(--shadow-lg)}.modal-close{float:right;background:none;border:none;font-size:1.6rem;line-height:1;cursor:pointer;color:var(--text-muted)}.modal-close:hover{color:var(--text-primary)}.star-rating{display:inline-flex;gap:var(--spacing-xs)}.star{background:none;border:none;padding:0;font-size:1.6rem;line-height:1;cursor:pointer;color:var(--text-muted);transition:transform var(--transition-fast),color var(--transition-fast)}.star:hover{transform:scale(1.15)}.star--active{color:var(--sand)}.history-item{display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-md);margin-bottom:var(--spacing-sm)}.history-meta{font-size:.85rem;color:var(--text-secondary)}.inventory-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:var(--spacing-md)}.inventory-item{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--spacing-md);text-align:center;transition:all var(--transition-base)}.inventory-item:hover{border-color:var(--primary-color);transform:translateY(-2px);box-shadow:var(--shadow-sm)}.inventory-name{font-weight:600;margin-bottom:var(--spacing-xs)}.inventory-amount{font-family:var(--font-head);font-size:1.5rem;font-weight:700;color:var(--primary-color)}.skeleton{background:linear-gradient(90deg,var(--surface-alt) 25%,var(--border) 50%,var(--surface-alt) 75%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:var(--radius-md)}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.spinner{width:28px;height:28px;border-radius:50%;border:3px solid var(--border);border-top-color:var(--primary-color);animation:spin .8s linear infinite;margin:0 auto var(--spacing-sm)}@keyframes spin{to{transform:rotate(360deg)}}.empty-state{text-align:center;padding:var(--spacing-xl);color:var(--text-secondary)}.empty-state-emoji{font-size:2.5rem;display:block;margin-bottom:var(--spacing-sm)}.text-center{text-align:center}.text-right{text-align:right}.mt-1{margin-top:var(--spacing-xs)}.mt-2{margin-top:var(--spacing-sm)}.mt-3{margin-top:var(--spacing-md)}.mb-1{margin-bottom:var(--spacing-xs)}.mb-2{margin-bottom:var(--spacing-sm)}.mb-3{margin-bottom:var(--spacing-md)}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:var(--spacing-xs)}.gap-2{gap:var(--spacing-sm)}.hidden{display:none!important}.text-primary{color:var(--text-primary)}.text-secondary{color:var(--text-secondary)}.text-muted{color:var(--text-muted)}.font-bold{font-weight:700}.font-semibold{font-weight:600}.fade-in{animation:fadeIn .3s ease-out}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media print{.navbar{display:none}.meal-card,.card{break-inside:avoid;box-shadow:none}}
