.recipes-page{padding:16px;display:flex;flex-direction:column;gap:12px}.recipes-search-card{background:#fff;border:1px solid var(--color-border-light);border-radius:16px;padding:10px 12px;box-shadow:0 12px 32px #1f2a3614}.recipes-actions{display:flex;flex-wrap:wrap;gap:8px}.manage-folders-btn{border:1px solid var(--color-border-light);background:#fff;color:#1f2a36;border-radius:14px;padding:10px 12px;font-weight:700;cursor:pointer;box-shadow:none}.action-btn{border:1px solid var(--color-border-light);background:#fff;color:#1f2a36;border-radius:12px;padding:10px 12px;font-weight:700;cursor:pointer;box-shadow:none}.action-btn--primary{background:var(--color-primary);color:#0f172a;box-shadow:none}@media (max-width: 520px){.recipes-actions{gap:6px}.action-btn{font-size:.75rem;padding:8px 10px;border-radius:10px}}.quick-add-btn{border:none;background:transparent;color:#0f172a;width:auto;padding:0 12px;height:38px;border-radius:12px;font-weight:800;font-size:18px;cursor:pointer;box-shadow:none;display:inline-flex;align-items:center;justify-content:center}.category-stack{display:flex;flex-direction:column;gap:10px}.folder-card{background:#fff;border-radius:22px;padding:14px 16px;border:1px solid var(--color-border-light);box-shadow:0 12px 32px #1f2a3614;display:flex;justify-content:space-between;align-items:center;cursor:pointer;transition:transform .1s ease,box-shadow .1s ease}.folder-card:hover{transform:translateY(-1px);box-shadow:0 14px 38px #1f2a361f}.folder-card--active{background:var(--color-primary)!important;border-color:var(--color-primary)!important;box-shadow:0 10px 26px #a4c1a252;transform:translateY(-1px)}.folder-card--active .folder-name{color:#f3f7e7}.folder-card--active .folder-meta{color:#fff;font-weight:600}.folder-name{font-weight:700;color:var(--color-text-main);display:flex;align-items:center;gap:8px}.folder-icon,.folder-emoji{width:40px;height:40px;display:inline-flex;align-items:center;justify-content:center}.folder-meta{color:var(--color-text-muted);font-size:13px}.subfolder-row{display:flex;flex-wrap:wrap;gap:8px}.subfolder-chip{border:1px solid #e2e8f0;background:transparent;border-radius:20px;padding:6px 12px;font-weight:600;color:#1e293b;cursor:pointer;transition:background-color .2s ease,color .2s ease,border .2s ease}.subfolder-chip--active{background:#6e8976;color:#f3f7e7;border:1px solid #334155}.search-input{width:100%;border:1px solid var(--color-border-light);background:var(--input-bg);border-radius:999px;padding:12px 14px;font-size:14px;outline:none}.search-input:focus{border-color:var(--color-primary)}.tag-row{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}.tag-chip{border:none;background:#fff;color:#1f2a36;border-radius:14px;padding:8px 12px;font-weight:600;font-size:13px;cursor:pointer}.tag-filters-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;margin-bottom:8px}.tag-label{font-weight:700;color:#1f2a36}.tag-controls{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.tag-search-input{min-width:180px;border:1px solid var(--color-border-light);border-radius:12px;padding:8px 12px;font-size:14px;background:#fff}.tag-collapse-btn{border:1px solid var(--color-border-light);background:#f5f1e8;border-radius:12px;padding:8px 12px;font-weight:600;cursor:pointer}html.dark .tag-collapse-btn{border-color:var(--border-dark-subtle);background:var(--bg-dark-surface);color:var(--text-dark-primary)}.recipe-card{background:#fff;border-radius:18px;padding:14px;border:1px solid var(--color-border-light);box-shadow:0 12px 32px #1f2a3614;display:flex;gap:12px;align-items:center}.recipe-main{display:flex;flex-direction:column;gap:4px;align-items:flex-start;text-align:left;flex:1;justify-content:flex-start;width:100%}.recipe-delete{border:none;background:#efefe5;color:#383838;font-weight:700;cursor:pointer;padding:0;align-self:center;width:40px;height:40px;border-radius:14px;display:inline-flex;align-items:center;justify-content:center;margin-left:auto}.recipe-delete:hover{background:#a0be9e;color:#fff}.recipe-title{font-weight:700;color:var(--color-text-main)}.recipe-sub{color:var(--color-text-muted);font-size:13px}.recipe-tag-pill{background:#e2e2e2;color:#1f2a36;border-radius:999px;padding:4px 10px;font-size:12px;font-weight:600}.confirm-actions{display:flex;gap:10px;margin-top:14px;justify-content:flex-end}.confirm-btn{border:1px solid #e2e8f0;background:#fff;border-radius:12px;padding:10px 14px;font-weight:700;cursor:pointer;color:#1e293b;transition:transform .1s ease,box-shadow .1s ease}.confirm-btn:hover{transform:translateY(-1px);box-shadow:0 6px 18px #00000014}.confirm-btn.danger{background:#fee2e2;border-color:#fca5a5;color:#991b1b}.today-meal-card{background:#fff;border:1px solid #e2e8f0;border-radius:12px;padding:14px 16px;margin-bottom:8px;cursor:pointer}.today-meal-header{display:flex;align-items:center;gap:10px;margin-bottom:0;justify-content:space-between}.today-meal-main{display:flex;align-items:center;gap:10px;flex:1;min-width:0}.meal-emoji{display:inline-flex;align-items:center;justify-content:center;width:50px;height:50px;line-height:1;font-size:0}.meal-title{font-weight:700;color:#1e293b;letter-spacing:.01em;line-height:1.2}.meal-label{display:block;font-size:12px;color:#2f855a;font-weight:700;margin-bottom:2px}.today-meal-text{display:flex;flex-direction:column;min-width:0;gap:2px}.cooked-pill{background:#ecfeff;color:#0f766e;border:1px solid #0f766e;border-radius:12px;padding:4px 8px;font-size:12px;font-weight:700;margin-right:8px}.today-meal-menu-btn{border:1px solid #e2e8f0;background:#f8fafc;border-radius:10px;padding:6px 10px;cursor:pointer}.today-meal-actions{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding-top:6px}.today-meal-actions button{margin-right:8px;border:1px solid #e2e8f0;background:#f8fafc;border-radius:8px;padding:8px 12px;cursor:pointer}.today-servings-adjust{margin-top:8px;display:flex;align-items:center;justify-content:space-between;gap:12px}.today-servings-label{font-size:14px;font-weight:600;color:#1e293b}.today-servings-control{display:inline-flex;align-items:center;gap:8px;border:1px solid #e2e8f0;border-radius:999px;padding:4px 8px}.today-servings-control button{border:none;background:transparent;font-weight:700;font-size:18px;cursor:pointer;padding:0 6px}.today-servings-save{margin-left:12px;border:none;background:var(--color-primary);color:#0f172a;border-radius:999px;padding:6px 14px;font-weight:700;cursor:pointer}.today-meal-empty{background:#fff;border:1px dashed #e2e8f0;border-radius:12px;padding:14px;text-align:center;color:#475569;cursor:pointer;margin-bottom:8px}.today-meal-empty-label{font-weight:700;margin-bottom:4px}.today-meal-empty-sub{font-size:13px;color:#94a3b8}.today-nutrition-card{background:var(--color-bg-elevated);border:1px solid var(--color-border-light);border-radius:12px;padding:14px 16px}.today-nutrition-title{font-weight:800;color:var(--color-text-main);margin-bottom:10px}.today-nutrition-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.today-nutrition-item{border:1px solid var(--color-border-light);border-radius:12px;padding:10px 12px;background:transparent}.today-nutrition-label{font-size:12px;color:var(--color-text-muted);font-weight:700}.today-nutrition-value{margin-top:4px;font-size:18px;font-weight:800;color:var(--color-text-main)}.progress-ring{position:relative;width:72px;height:72px;flex:0 0 auto}.progress-ring-svg{transform:rotate(-90deg);display:block}.progress-ring-track{stroke:var(--color-border-light)}.progress-ring-bar{transition:stroke-dashoffset .22s ease}.progress-ring-center{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;color:var(--color-text-main)}.progress-ring-current{font-size:14px;font-weight:900;line-height:1}.progress-ring-goal{font-size:10px;color:var(--color-text-muted);margin-top:2px;font-weight:700}.progress-ring-label{font-size:10px;font-weight:800;color:var(--color-text-main);opacity:.9;margin-top:4px}.today-progress-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;justify-items:center;margin-bottom:12px}.progress-ring-sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.today-progress-empty{margin-bottom:12px;border:1px dashed var(--color-border-light);border-radius:12px;padding:12px;font-size:13px;font-weight:700;color:var(--color-text-muted);text-align:center}.mark-cooked-btn{padding:10px 14px;background-color:var(--color-primary);border:none;border-radius:8px;color:#1e293b;font-weight:600;box-shadow:0 4px 12px #0000000f;cursor:pointer}.mark-cooked-btn.cooked{background-color:var(--color-secondary)}.last-cooked,.recipe-last-cooked{font-size:.8rem;color:#64748b;margin-top:4px}.time-row{display:flex;gap:12px}.time-field label{font-size:.75rem;color:#64748b}.total-time{margin-top:6px;font-size:.85rem;font-weight:500;color:#334155}.recipe-times div{font-size:.9rem;color:#475569}.btn-add{margin-top:8px;width:100%;border:none;border-radius:999px;background:#6e8976;color:#0f172a;padding:14px;font-weight:700;box-shadow:0 14px 38px #6f9f7b59;cursor:pointer}.empty-state{text-align:center;color:var(--color-text-muted);font-size:14px;padding:10px 0}html.dark .recipes-page{background:var(--bg-dark-page)}html.dark .recipes-search-card{background:var(--bg-dark-surface);border-color:var(--border-dark-subtle);box-shadow:var(--shadow-dark-elevated)}html.dark .manage-folders-btn,html.dark .action-btn{background:var(--bg-dark-surface);border-color:var(--border-dark-subtle);color:var(--text-dark-primary);transition:transform .12s ease,border-color .12s ease,background-color .12s ease}html.dark .manage-folders-btn:hover,html.dark .action-btn:hover{border-color:var(--border-dark-strong);transform:translateY(-1px)}html.dark .manage-folders-btn:active,html.dark .action-btn:active{transform:translateY(1px)}html.dark .folder-card{background:var(--bg-dark-surface);border-color:var(--border-dark-subtle);color:var(--text-dark-secondary);box-shadow:none;transition:transform .12s ease,border-color .12s ease,background-color .12s ease}html.dark .folder-card:hover{border-color:var(--border-dark-strong);transform:translateY(-1px)}html.dark .tag-row,html.dark .tag-controls{background:var(--bg-dark-surface);border-radius:14px;padding:8px 10px;border:1px solid var(--border-dark-subtle);box-shadow:none}html.dark .tag-chip,html.dark .subfolder-chip{background:var(--bg-dark-surface-elevated);color:var(--text-dark-secondary);border:1px solid var(--border-dark-subtle);transition:transform .12s ease,border-color .12s ease,color .12s ease}html.dark .tag-chip:hover,html.dark .subfolder-chip:hover{color:var(--text-dark-primary);border-color:var(--border-dark-strong);transform:translateY(-1px)}html.dark .tag-chip:active,html.dark .subfolder-chip:active{transform:translateY(1px)}html.dark .chip-active{background:var(--bg-dark-surface);color:var(--text-dark-primary);border-color:var(--border-dark-strong)}html.dark .tag-search-input{background:var(--bg-dark-surface);border-color:var(--border-dark-subtle);color:var(--text-dark-primary);box-shadow:inset 0 0 0 1px #ffffff05}html.dark .recipe-card{background:var(--bg-dark-surface-elevated);border-color:var(--border-dark-subtle);box-shadow:var(--shadow-dark-elevated);transition:transform .12s ease,border-color .12s ease,background-color .12s ease}html.dark .recipe-card:hover{transform:translateY(-1px);border-color:var(--border-dark-strong)}html.dark .recipe-card:active{transform:translateY(1px)}html.dark .recipe-emoji{opacity:.9}html.dark .recipe-title{color:var(--text-dark-primary)}html.dark .recipe-sub,html.dark .recipe-meta{color:var(--text-dark-secondary)}html.dark .recipe-tag-pill{background:var(--bg-dark-surface);color:var(--text-dark-primary)}html.dark .recipe-delete{background:var(--bg-dark-surface);color:#fca5a5;border:1px solid var(--border-dark-subtle)}html.dark .recipe-delete:hover{background:var(--border-dark-subtle);color:#fca5a5}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a73;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);display:flex;align-items:flex-end;justify-content:center;z-index:2000;padding:12px;padding-bottom:calc(12px + var(--bottom-nav-clearance, 0px) + env(safe-area-inset-bottom,0px))}.modal-container{background:var(--color-bg-elevated);border-radius:24px 24px 20px 20px;box-shadow:0 18px 40px #0f172a33;border:1px solid var(--color-border-light);width:100%;max-width:480px;padding:16px;animation:modalEnter .2s ease;max-height:90vh;display:flex;flex-direction:column}.modal-sm{max-height:60vh}.modal-lg{max-height:95vh}.modal-header{display:flex;align-items:center;justify-content:space-between;gap:8px}.modal-title{margin:0;font-size:18px;font-weight:800;color:var(--color-text-main)}.modal-close{border:none;background:transparent;font-size:20px;cursor:pointer;color:var(--color-text-main)}.modal-body{margin-top:10px;overflow-y:auto;flex:1;color:var(--color-text-main)}.modal-enter{animation:modalEnter .2s ease}@keyframes modalEnter{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.recipe-icon-wrap{display:inline-flex;align-items:center;justify-content:center;background-color:#86efac40;border-radius:12px;padding:6px;line-height:1}.recipe-icon-image{width:1em;height:1em;object-fit:contain;display:block}.recipe-icon-placeholder{width:1em;height:1em;display:block;border-radius:.2em;background:currentColor;opacity:.2}.add-planner-body{display:flex;flex-direction:column;gap:12px}.preview-row{display:flex;align-items:center;gap:10px;background:#f5f1e8;border:1px solid #e2e8f0;border-radius:14px;padding:10px 12px}.preview-emoji{font-size:24px}.preview-title,.section-label{font-weight:700;color:#1e293b}.pill-row{display:flex;flex-wrap:wrap;gap:8px}.pill{border:1px solid #e2e8f0;background:var(--color-bg-elevated);color:var(--color-text-main);border-radius:16px;padding:8px 12px;font-weight:700;cursor:pointer;transition:background .15s ease,border-color .15s ease,box-shadow .15s ease}.pill.active{background:var(--color-primary);color:#0f172a;border-color:var(--color-primary);box-shadow:0 10px 22px #0f172a2e;transform:translateY(-1px)}html.dark .pill{border-color:var(--border-dark-subtle);background:var(--bg-dark-surface);color:var(--text-dark-primary)}html.dark .pill.active{background:#9fc4a0;border-color:#9fc4a0;color:#0b1221;box-shadow:0 12px 26px #00000059}.actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:4px}.btn{border:none;border-radius:999px;padding:12px 16px;font-weight:700;cursor:pointer;box-shadow:0 6px 16px #00000014}.btn.primary{background:#86efac;color:#0f172a}.btn:disabled{opacity:.5;cursor:not-allowed}.recipe-detail-page{padding:16px;display:flex;flex-direction:column;gap:12px;background:#faf8f3;min-height:100vh}.detail-header{display:flex;align-items:center;justify-content:space-between}.detail-actions{display:flex;align-items:center;gap:px}.duplicate-btn{border:1px solid #e2e8f0;border-radius:12px;font-weight:700}.icon-btn{border:none;background:transparent;color:#1e293b;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:6px}.icon-btn .icon-label{line-height:1}.fav-btn{background:none;border:none;font-size:1.4rem;cursor:pointer;color:#94a3b8;transition:.2s}.fav-btn svg{width:26px;height:26px;display:block}.fav-btn--active{color:#ffd54b;transform:scale(1.05)}.detail-actions .fav-btn{position:static!important;top:auto!important;right:auto!important;padding:5px;order:-1}.title-block{display:flex;align-items:flex-start;gap:12px}.emoji{font-size:40px}.title-text{display:flex;flex-direction:column;gap:6px;width:100%}.recipe-title{margin:0;font-size:24px;color:#1e293b}.title-top-row{display:flex;align-items:flex-start;gap:10px;flex-wrap:wrap}.title-top-row .recipe-title{flex:1 1 auto}.recipe-type-pill{align-self:center;background:#fde68a;color:#1f2937;border-radius:999px;padding:4px 10px;font-size:12px;font-weight:800;letter-spacing:.3px;text-transform:uppercase}.meta-row{display:flex;align-items:center;gap:6px;width:100%;justify-content:flex-end}.servings-meta{display:inline-flex;flex-direction:column;align-items:flex-end;gap:6px;flex-wrap:wrap;margin-left:auto;text-align:right}.multiplier-control{display:inline-flex;gap:6px;padding:2px 4px;border:1px solid #e2e8f0;border-radius:10px;background:#fff;align-self:flex-end}.multiplier-btn{border:1px solid transparent;background:transparent;padding:6px 8px;border-radius:10px;font-weight:700;cursor:pointer;color:#1e293b}.multiplier-btn.is-active{background:#e7e3ff;border-color:#cbd5e1}.add-to-planner-btn{background:#a4c1a2;color:#0f172a;border:none;border-radius:999px;padding:8px 22px;box-shadow:none;font-weight:700}.multiplier-add-btn{padding:8px 12px;height:36px}.save-notice{margin-top:8px;display:inline-block;background:#d9f2e0;color:#1e293b;padding:6px 10px;border-radius:10px;font-weight:600;box-shadow:0 6px 14px #00000014}.save-notice.is-error{background:#f871712e;color:#7f1d1d}.dot{opacity:.6}.timing-block{display:flex;flex-direction:row;align-items:flex-start;gap:12px}.timing-info{display:flex;flex-direction:column;gap:4px;align-items:flex-start}.recipe-times{display:flex;flex-direction:column;gap:2px;align-items:flex-start}.tag-row{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}.recipe-cover-image{border-radius:12px;overflow:hidden;border:0px solid #e2e8f0;width:100%;background:var(--color-bg-elevated);position:relative;height:100%;aspect-ratio:4 / 3}.recipe-cover-image img{width:100%;height:100%;object-fit:cover;display:block;opacity:0;transition:opacity .4s ease}.recipe-cover-img.is-loaded{opacity:1}.recipe-cover-placeholder{position:absolute;top:0;right:0;bottom:0;left:0;background:#94a3b81f}.recipe-cover-status{position:absolute;bottom:10px;left:50%;transform:translate(-50%);font-size:.75rem;color:var(--color-text-muted);background:#ffffffb3;padding:2px 10px;border-radius:999px}.recipe-cover-container{position:absolute;top:0;left:0;right:0;height:var(--cover-height);z-index:1;pointer-events:none;will-change:transform,opacity}.recipe-cover-stage{position:relative;width:100%;max-width:520px;margin:4px auto 6px;--cover-height: 260px}.recipe-cover-spacer{height:var(--cover-height)}.recipe-content{position:relative;z-index:2;display:flex;flex-direction:column;gap:12px}.recipe-detail-page .tag-row,.recipe-detail-page .title-block,.recipe-detail-page .detail-header{position:relative;z-index:2}.recipe-cover-actions{display:flex;align-items:center;gap:10px;margin:6px 0 2px}.recipe-image-failed{font-size:.75rem;color:var(--color-text-muted)}@media (min-width: 768px){.recipe-cover-spacer{height:var(--cover-height)}.recipe-cover-stage{--cover-height: 320px}}.tag-chip{background:#e7e3ff;color:#1f2937;border-radius:14px;padding:8px 12px;font-weight:700;box-shadow:0 4px 12px #00000014}.card{background:#fff;border-radius:22px;border:1px solid #e2e8f0;box-shadow:0 4px 12px #00000014;padding:14px}.detail-card{display:flex;flex-direction:column;gap:8px}.recipe-notes{white-space:pre-wrap;color:#1e293b;line-height:1.5}.list{margin:0;padding-left:18px;color:#1e293b;display:grid;gap:6px}.steps-list li{line-height:1.5}.ingredients-list li{line-height:1.4}.nutrition-row{display:flex;gap:8px;flex-wrap:wrap}.nutrition-pill{background:#fdeedd;color:#1f2937;border-radius:999px;padding:8px 12px;font-weight:700}.nutrition-card{background:#fafafa;border-color:#e2e8f0;color:#1e293b}.nutrition-header,.nutrition-header-row{display:flex;flex-direction:column;gap:8px}.nutrition-title{font-weight:700;font-size:20px;color:#1e293b}.nutrition-title-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.nutrition-toggle-btn{border:1px solid #e2e8f0;background:transparent;color:#1e293b;border-radius:10px;padding:6px 10px;font-weight:700;cursor:pointer;font-size:12px}.nutrition-action-btn{border:1px solid #a4c1a2;background:#a4c1a2;color:#0f172a;border-radius:12px;padding:10px 12px;font-weight:700;cursor:pointer;width:100%;min-width:200px;flex:0 0 auto;text-align:center}.nutrition-action-btn:disabled{opacity:.65;cursor:not-allowed}.nutrition-serving-stepper{display:inline-flex;align-items:center;gap:6px;background:#fff;border:1px solid #e2e8f0;border-radius:10px;padding:3px 5px;margin-left:auto}.nutrition-step-btn{border:none;background:transparent;color:#0f172a;border-radius:8px;width:32px;height:32px;font-weight:800;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.nutrition-step-btn:disabled{opacity:.5;cursor:not-allowed}.nutrition-serving-label{font-weight:700;color:#1e293b}.nutrition-serving-control{display:flex;align-items:center;gap:8px;border:1px solid #e2e8f0;background:#fff;border-radius:12px;padding:6px 10px;width:100%;min-width:200px}html.dark .nutrition-serving-control{background:#0f172a;border-color:#334155}.nutrition-serving-input{width:56px;border:1px solid #e2e8f0;border-radius:8px;padding:6px 8px;font-weight:700;color:#1e293b;background:#fff;text-align:center}.nutrition-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px}.nutrition-cell{border:1px solid #e2e8f0;border-radius:14px;padding:10px 12px;background:#fafafa}.nutrition-label{font-size:12px;color:#1e293b;opacity:.75}.nutrition-value{font-weight:800;color:#1e293b;margin-top:4px}.nutrition-disclaimer{font-size:12px;color:#1e293b;opacity:.75;margin-top:6px}.nutrition-serving-note{font-size:12px;color:#1e293b;opacity:.75;margin-top:4px}.nutrition-error{margin-top:6px;color:#b91c1c;font-size:13px;font-weight:600}.button-row{display:flex;gap:10px;flex-wrap:wrap}.delete-recipe-section{margin-top:20px;display:flex;justify-content:center}.delete-recipe-btn{width:100%;max-width:420px;padding:14px 18px;font-size:15px;border-radius:999px;border:1px solid #fca5a5;background:#fee2e2;color:#991b1b;font-weight:700;box-shadow:0 12px 24px #b91c1c2e}.delete-recipe-btn:hover{filter:brightness(.98)}.btn{border:none;border-radius:30px;padding:12px 18px;font-weight:700;cursor:pointer;box-shadow:0 4px 12px #00000014}.btn.outline{background:transparent;border:1px solid #e2e8f0;color:#1e293b}.ask-ai-btn{display:inline-flex;align-items:center;gap:8px}.ask-ai-btn svg{display:block}.empty-state{margin-top:20px;color:#475569}.fade-in{animation:fadeIn .25s ease}.tag-editor{display:flex;flex-direction:column;gap:10px}.tag-editor-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px}.tag-editor-block{display:flex;flex-direction:column;gap:6px}.tag-editor-label-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:space-between}.tag-editor-label{font-weight:700;color:#1e293b}.tag-editor-controls{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.tag-search-input{min-width:160px;padding:8px 12px;border:1px solid #e2e8f0;border-radius:12px;font-size:14px}.tag-collapse-btn{border:1px solid #e2e8f0;background:#f5f1e8;border-radius:12px;padding:8px 12px;cursor:pointer;font-weight:600}.tag-editor-chips{display:flex;flex-wrap:wrap;gap:8px}.tag-chip-count{background:#fff;color:#475569;border-radius:999px;padding:2px 8px;font-size:12px;border:1px solid #e2e8f0}.tag-editor-hint{color:#64748b;font-size:12px;margin-top:2px}.tag-editor-add{display:flex;gap:8px}.tag-suggest{position:relative;flex:1}.tag-suggest-list{position:absolute;top:calc(100% + 4px);left:0;right:0;background:#fff;border:1px solid #e2e8f0;border-radius:12px;box-shadow:0 12px 24px #0000001f;display:flex;flex-direction:column;gap:4px;padding:6px;z-index:10}.tag-suggest-item{border:none;background:transparent;padding:8px 10px;border-radius:10px;text-align:left;cursor:pointer;color:#1e293b;font-weight:600;transition:background-color .1s ease,color .1s ease}.tag-suggest-item:hover,.tag-suggest-item.is-active{background:var(--color-primary);color:#0f172a}.tag-suggest-item.is-create{font-weight:700}.tag-editor-actions{display:flex;gap:8px;flex-wrap:wrap}html.dark .recipe-detail-page{background:var(--bg-dark-page);color:var(--text-dark-primary)}html.dark .tag-suggest-list{background:var(--bg-dark-surface);border-color:var(--border-dark-subtle);box-shadow:var(--shadow-dark-elevated)}html.dark .tag-suggest-item{color:var(--text-dark-primary)}html.dark .tag-suggest-item:hover,html.dark .tag-suggest-item.is-active{background:var(--border-dark-strong);color:var(--text-dark-primary)}html.dark .icon-btn,html.dark .fav-btn{color:var(--text-dark-secondary)}html.dark .duplicate-btn{border-color:var(--border-dark-subtle);color:var(--text-dark-primary)}html.dark .recipe-title,html.dark .section-title,html.dark .title-text{color:var(--text-dark-primary)}html.dark .meta-row,html.dark .dot,html.dark .list,html.dark .ingredients-list li,html.dark .steps-list li,html.dark .empty-state{color:var(--text-dark-secondary)}html.dark .multiplier-control{background:var(--bg-dark-surface);border-color:var(--border-dark-subtle)}html.dark .multiplier-btn{color:var(--text-dark-primary)}html.dark .multiplier-btn.is-active{background:var(--bg-dark-surface-elevated);border-color:var(--border-dark-strong)}html.dark .multiplier-add-btn{color:var(--text-dark-primary);border-color:var(--border-dark-subtle)}html.dark .add-to-planner-btn{background:#6f9f7b;color:#0b1221}html.dark .save-notice{background:var(--bg-dark-surface);color:var(--text-dark-primary);border:1px solid var(--border-dark-subtle)}html.dark .save-notice.is-error{background:#f8717129;color:#fecaca;border-color:#f8717159}html.dark .delete-recipe-btn{background:#f871712e;color:#fecaca;border-color:#f8717159;box-shadow:0 12px 24px #07030a59}html.dark .card{background:var(--bg-dark-surface-elevated);border-color:var(--border-dark-subtle);box-shadow:var(--shadow-dark-elevated)}html.dark .tag-chip{background:var(--bg-dark-surface);color:var(--text-dark-primary);box-shadow:none;border:1px solid var(--border-dark-subtle)}html.dark .nutrition-pill{background:var(--bg-dark-surface);color:var(--text-dark-primary)}html.dark .nutrition-card{background:#0f172a;border-color:#334155;color:#e2e8f0}html.dark .nutrition-title,html.dark .nutrition-header{color:#e2e8f0}html.dark .nutrition-toggle-btn{background:#0f172a;color:#e2e8f0;border-color:#334155}html.dark .nutrition-action-btn{background:#a4c1a2;color:#0f172a;border-color:#a4c1a2}html.dark .nutrition-serving-label{color:#e2e8f0}html.dark .nutrition-serving-stepper{background:#0f172a;border-color:#334155}html.dark .nutrition-step-btn{background:transparent;color:#e2e8f0;border-color:transparent}html.dark .nutrition-serving-input{background:#0f172a;color:#e2e8f0;border-color:#334155}html.dark .nutrition-cell{background:#0f172a;border-color:#334155}html.dark .nutrition-label,html.dark .nutrition-value,html.dark .nutrition-disclaimer,html.dark .nutrition-serving-note{color:#e2e8f0}html.dark .nutrition-label,html.dark .nutrition-disclaimer,html.dark .nutrition-serving-note{opacity:.8}html.dark .nutrition-error{color:#fca5a5}html.dark .btn.outline{border-color:var(--border-dark-subtle);color:var(--text-dark-primary)}.editor-page{background:#faf8f3;min-height:100vh;padding:16px;display:flex;flex-direction:column;gap:12px}.editor-header{display:flex;align-items:center;justify-content:space-between}.editor-title{font-weight:700;color:#1e293b}.editor-card{background:#fff;border-radius:22px;border:1px solid #e2e8f0;box-shadow:0 10px 28px #00000014;padding:16px;display:flex;flex-direction:column;gap:14px}.section-title{font-weight:700;color:#1e293b}.recipe-type-row{display:flex;flex-wrap:wrap;gap:10px}.recipe-type-pill{border:1px solid #e2e8f0;background:#fff;color:#1e293b;border-radius:999px;padding:8px 14px;font-weight:700;cursor:pointer}.recipe-type-pill--active{background:#fde68a;border-color:#f59e0b;color:#1f2937}.recipe-type-pill:disabled{opacity:.65;cursor:not-allowed}.recipe-type-note{font-size:12px;color:#64748b}.cover-image-section{display:flex;flex-direction:column;gap:10px}.cover-image-preview{width:100%;height:auto;border-radius:16px;border:1px solid #e2e8f0;box-shadow:0 6px 14px #00000014;display:block}.cover-image-actions{display:flex;flex-wrap:wrap;gap:10px}.cover-image-seed{display:flex;flex-direction:column;gap:8px;border:1px dashed #e2e8f0;border-radius:14px;padding:10px 12px;background:#f8fafc}.cover-image-seed-toggle{display:inline-flex;align-items:center;gap:8px;font-size:13px;font-weight:600;color:#1e293b}.cover-image-seed-input{width:100%}.seed-error{background:#f8717126;border:1px solid rgba(248,113,113,.35);color:#7f1d1d;padding:8px 10px;border-radius:12px;font-size:12px;font-weight:700}.emoji-display{font-size:36px;background:#f5f1e8;border-radius:16px;padding:12px 14px;width:fit-content}.emoji-toggle{display:inline-flex;align-items:center;gap:10px;border:1px solid #e2e8f0;background:#fff;border-radius:16px;padding:10px 12px;cursor:pointer;box-shadow:0 6px 14px #0000000f}.emoji-toggle-text{font-weight:700;color:#1e293b}.emoji-panel{margin-top:8px;background:#fff;border:1px solid #e2e8f0;border-radius:18px;padding:10px;box-shadow:0 10px 24px #00000014;max-height:260px;overflow:hidden}.emoji-search-row{margin:8px 0}.emoji-search-input{width:100%;border:1px solid #e2e8f0;border-radius:10px;padding:8px 10px;font-size:14px}.suggest-emoji-btn{padding:6px 10px;background:var(--color-primary);border:none;border-radius:8px;color:#1e293b;font-weight:500;margin-left:8px;cursor:pointer}.emoji-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(52px,1fr));gap:8px;max-height:190px;overflow-y:auto}.emoji-option{border:1px solid #e2e8f0;border-radius:14px;background:#fff;padding:10px;font-size:20px;cursor:pointer;box-shadow:0 4px 10px #0000000f;transition:border-color .1s ease,transform .1s ease}.emoji-option--active{border-color:var(--color-primary);transform:translateY(-1px)}.input{width:100%;border-radius:16px;border:1px solid #e2e8f0;padding:12px 14px;font-size:14px;outline:none;background:#fff}.select{background:#fff}.row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.servings-field{display:flex;flex-direction:column;gap:6px;max-width:240px}.field-label{font-weight:700;color:#1e293b}.tags-row{display:flex;flex-wrap:wrap;gap:8px}.chips{margin-bottom:6px}.tag-chip{display:inline-flex;align-items:center;gap:6px;background:#a0be9e;border-color:none;color:#2f4a3f;border-radius:14px;padding:6px 10px;font-weight:700;box-shadow:0 4px 12px #00000014}.tag-chip--active{background:#ffeddc}.tag-remove{border:none;background:transparent;cursor:pointer;font-weight:700;color:#1f2937}.tag-input-form{flex:1;min-width:140px;display:flex;gap:8px}.tag-input{padding:10px 12px;flex:1}.suggested-tags{display:flex;flex-direction:column;gap:6px}.tag-suggestions-row{display:flex;flex-wrap:wrap;gap:8px}.tag-chip--suggested{background:#f5f1e8;border:1px dashed #c084fc;box-shadow:none}.clean-button{margin-bottom:8px;background:transparent;border:1px solid #e2e8f0;color:#1e293b;padding:12px 16px;border-radius:999px;font-size:.9rem;cursor:pointer;box-shadow:0 4px 12px #00000014}.action-row .clean-button{margin-left:auto;margin-bottom:0}.dynamic-list{display:flex;flex-direction:column;gap:10px}.dynamic-row{display:flex;gap:8px;align-items:center;padding:4px;border-radius:12px;transition:background-color .1s ease,border-color .1s ease}.dynamic-row.drag-over{background:#f5f1e8;border:1px solid #e2e8f0}.nutrition-btn{border:1px solid #e2e8f0;background:#f5f1e8;border-radius:10px;width:34px;height:34px;display:inline-flex;align-items:center;justify-content:center;font-weight:800;cursor:pointer;box-shadow:0 4px 10px #0000000f;transition:transform .1s ease,box-shadow .1s ease,border-color .1s ease,background-color .1s ease}.nutrition-btn--active{background:var(--color-primary);border-color:var(--color-primary);color:#0f172a;box-shadow:0 8px 18px #a4c1a259}.nutrition-apply-row{display:flex;flex-direction:column;gap:6px;margin-top:6px}.nutrition-apply-note{color:var(--color-text-muted);font-size:13px}.drag-handle{border:1px solid #e2e8f0;background:#fff;border-radius:10px;width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;cursor:grab;box-shadow:0 4px 10px #0000000f;font-size:16px;touch-action:none}.drag-handle:active{cursor:grabbing}.textarea{min-height:70px;resize:vertical}.btn{border:none;border-radius:999px;padding:12px 16px;font-weight:700;cursor:pointer;box-shadow:0 4px 12px #00000014}.btn.primary{background:var(--color-primary);color:#0f172a}.tag-add-btn{background:#f5f1e8;color:#1e293b;border:1px solid #e2e8f0;box-shadow:none;border-radius:14px}.btn.ghost{background:transparent;border:1px solid #e2e8f0;color:#1e293b}.text-btn{border:none;background:transparent;color:#1e293b;font-weight:700;cursor:pointer}.icon-btn{border:none;background:transparent;color:#1e293b;cursor:pointer;font-weight:700}.action-row{display:flex;gap:10px}.error-text{color:#dc2626;font-weight:700}.meal-type-row{display:flex;flex-wrap:wrap;gap:8px}.meal-pill{border:1px solid #e2e8f0;background:#faf8f3;color:#1e293b;border-radius:999px;padding:10px 14px;font-weight:700;cursor:pointer;transition:transform .1s ease,box-shadow .1s ease,background-color .1s ease;box-shadow:0 4px 12px #0000000f}.meal-pill--active{background:var(--color-primary);border-color:var(--color-primary);color:#0f172a;box-shadow:0 8px 18px #a4c1a266}.nutrition-drawer-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000004d;display:flex;justify-content:center;align-items:flex-end;z-index:1200}.nutrition-drawer{background:#fff;width:100%;max-width:520px;border-top-left-radius:18px;border-top-right-radius:18px;padding:18px;box-shadow:0 -10px 28px #00000026;animation:nutritionSlideUp .18s ease;position:relative}.nutrition-drawer-header{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.nutrition-drawer-title{font-weight:700;font-size:16px}.nutrition-drawer-subtitle{margin-top:4px;color:var(--color-text-muted);font-size:13px}.nutrition-drawer-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin:14px 0}.nutrition-field{display:flex;flex-direction:column;gap:6px}.nutrition-field--wide{grid-column:1 / -1}.nutrition-label{font-weight:700;color:#1e293b;font-size:14px}.nutrition-drawer-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:6px}.nutrition-camera-btn{position:absolute;left:16px;bottom:16px;width:40px;height:40px;border-radius:12px;border:1px dashed #d1d5db;background:#fff;color:#94a3b8;display:inline-flex;align-items:center;justify-content:center;font-size:18px;opacity:.8}html.dark .editor-page{background:var(--bg-dark-page);color:var(--text-dark-primary)}html.dark .editor-title,html.dark .section-title,html.dark .emoji-toggle-text{color:var(--text-dark-primary)}html.dark .cover-image-preview{border-color:var(--border-dark-subtle);box-shadow:none}html.dark .cover-image-seed{border-color:var(--border-dark-subtle);background:var(--bg-dark-surface)}html.dark .cover-image-seed-toggle{color:var(--text-dark-primary)}html.dark .seed-error{color:#fecaca;border-color:#f8717180}html.dark .editor-card{background:var(--bg-dark-surface-elevated);border-color:var(--border-dark-subtle);box-shadow:var(--shadow-dark-elevated)}html.dark .emoji-display{background:var(--bg-dark-surface);color:var(--text-dark-primary)}html.dark .emoji-toggle,html.dark .emoji-panel,html.dark .emoji-option{background:var(--bg-dark-surface);border-color:var(--border-dark-subtle);color:var(--text-dark-primary);box-shadow:none}html.dark .emoji-option:hover{border-color:var(--border-dark-strong)}html.dark .emoji-option--active{border-color:var(--color-primary)}html.dark .emoji-search-input{background:var(--bg-dark-surface);border-color:var(--border-dark-subtle);color:var(--text-dark-primary)}html.dark .input,html.dark .select,html.dark .textarea{background:var(--bg-dark-surface);border-color:var(--border-dark-subtle);color:var(--text-dark-primary);box-shadow:inset 0 0 0 1px #ffffff05}html.dark .dynamic-row.drag-over{background:var(--bg-dark-surface);border-color:var(--border-dark-strong)}html.dark .drag-handle{background:var(--bg-dark-surface);border-color:var(--border-dark-subtle);color:var(--text-dark-primary);box-shadow:none}.recipe-editor-drag-ghost{position:fixed;z-index:1000;pointer-events:none;background:#fff;color:#1e293b;border:1px solid #e2e8f0;border-radius:999px;padding:10px 16px;font-weight:700;box-shadow:0 12px 30px #0003}html.dark .recipe-editor-drag-ghost{background:var(--bg-dark-surface);color:var(--text-dark-primary);border-color:var(--border-dark-subtle);box-shadow:0 12px 30px #00000073}html.dark .input::placeholder,html.dark .textarea::placeholder{color:var(--text-dark-secondary)}html.dark .tag-chip,html.dark .tag-chip--suggested{background:var(--bg-dark-surface);color:var(--text-dark-primary);border:1px solid var(--border-dark-subtle);box-shadow:none}html.dark .tag-chip--active{background:var(--bg-dark-surface-elevated)}html.dark .field-label{color:var(--text-dark-primary)}html.dark .clean-button{border-color:var(--border-dark-subtle);color:var(--text-dark-primary);box-shadow:none}html.dark .tag-remove{color:var(--text-dark-secondary)}html.dark .nutrition-btn{background:var(--bg-dark-surface);border-color:var(--border-dark-subtle);color:var(--text-dark-primary);box-shadow:none}html.dark .nutrition-btn--active{background:var(--color-primary);border-color:var(--color-primary);color:#0f172a}html.dark .nutrition-apply-note{color:var(--text-dark-secondary)}html.dark .nutrition-drawer{background:var(--bg-dark-surface);color:var(--text-dark-primary);border:1px solid var(--border-dark-subtle);box-shadow:0 -10px 28px #00000073}html.dark .nutrition-camera-btn{background:var(--bg-dark-surface);border-color:var(--border-dark-subtle);color:var(--text-dark-secondary)}html.dark .nutrition-drawer-subtitle{color:var(--text-dark-secondary)}html.dark .nutrition-drawer-backdrop{background:#0000008c}html.dark .nutrition-label{color:var(--text-dark-primary)}@keyframes nutritionSlideUp{0%{transform:translateY(12px);opacity:0}to{transform:translateY(0);opacity:1}}.planner-page{padding:16px;display:flex;flex-direction:column;gap:12px}.planner-header-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-start}.planner-header-actions .btn{padding:6px 12px;font-size:13px;border-radius:999px}.planner-header-actions .btn.btn-ghost{background:#fff9}@media (max-width: 520px){.planner-header-actions{width:100%;justify-content:flex-start}}.planner-header-icon{font-size:18px;display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:10px;background:var(--color-bg-elevated);border:1px solid var(--color-border-light)}html.dark .planner-header-icon{background:var(--bg-dark-surface);border-color:var(--border-dark-strong)}html.dark .planner-header-actions .btn.btn-ghost{background:var(--bg-dark-surface)}.planner-card{background:#fff;border-radius:18px;border:1px solid var(--color-border-light);box-shadow:0 14px 38px #1f2a3614;padding:14px}.planner-card.soft{background:#fdf6ed;border-color:#f0d7be}.planner-drawer-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000004d;display:flex;justify-content:center;align-items:flex-end;z-index:1000}.planner-drawer{background:#fff;width:100%;max-width:480px;border-top-left-radius:16px;border-top-right-radius:16px;padding:16px;box-shadow:0 -8px 24px #00000026}.planner-drawer-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.planner-drawer-title{font-weight:700;font-size:16px}.planner-drawer-body{display:flex;flex-direction:column;gap:12px}.planner-drawer-label{font-size:14px;color:var(--color-text-muted)}.planner-drawer-input{width:100%;padding:10px;border:1px solid var(--color-border-light);border-radius:10px;font-size:14px}.planner-template-section{display:flex;flex-direction:column;gap:10px}.planner-template-divider{height:1px;background:var(--color-border-light);opacity:.6}.planner-template-list{display:flex;flex-direction:column;gap:8px}.planner-template-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;border-radius:12px;border:1px solid var(--color-border-light);background:var(--color-bg)}.planner-template-name{font-weight:600;color:var(--color-text-main);flex:1;min-width:0}.planner-template-actions{display:inline-flex;align-items:center;gap:8px}.planner-template-input{width:100%;border-radius:10px;border:1px solid var(--color-border-light);padding:8px 10px;font-size:14px;background:var(--input-bg);color:var(--color-text-main)}.planner-template-notice,.planner-template-note{font-size:13px;color:var(--color-text-muted)}.planner-template-conflicts p{margin:0 0 10px;color:var(--color-text-main)}.planner-template-conflict-list{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}.planner-template-conflict-row{display:flex;justify-content:space-between;gap:12px;font-size:13px;color:var(--color-text-muted)}.planner-template-conflict-recipe{font-weight:600;color:var(--color-text-main)}.planner-template-conflict-actions{display:flex;flex-wrap:wrap;gap:8px}.planner-template-confirm{display:flex;flex-direction:column;gap:10px}.planner-template-confirm p{margin:0}.planner-nav{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.planner-week-label{font-weight:700;color:var(--color-text-main)}.planner-days{display:flex;flex-direction:column;gap:12px}.planner-day{border:1px solid var(--color-border-light);border-radius:16px;padding:10px;background:var(--color-bg);box-shadow:0 10px 28px #1f2a360d}.planner-day-header{display:flex;align-items:center;gap:8px;margin-bottom:8px}.planner-day-icon{font-size:18px}.planner-day-title{font-weight:700;color:var(--color-text-main);display:inline-flex;align-items:center;gap:6px}.planner-day-date{font-weight:600;color:var(--color-text-muted);font-size:12px}.planner-meals{display:grid;gap:8px}.planner-slot{background:#fff;border:1px dashed var(--color-border-light);border-radius:12px;padding:10px 12px;cursor:pointer;transition:border-color .1s ease,transform .1s ease,box-shadow .1s ease;-webkit-user-select:none;user-select:none;touch-action:pan-y}.planner-slot:hover{border-color:#6f9f7b99;transform:translateY(-1px)}.planner-slot-title{font-weight:600;margin-bottom:2px;color:var(--color-text-main)}.planner-slot-row{display:flex;align-items:center;gap:12px;width:100%}.planner-slot-row span{flex:1;min-width:0;display:block}.planner-slot-actions{display:inline-flex;align-items:center;gap:6px}.planner-slot-drag{border:1px solid var(--color-border-light);background:#fff;color:var(--color-text-main);border-radius:8px;padding:6px 10px;font-size:14px;cursor:grab;box-shadow:inset 0 0 0 1px #1f2a360a;letter-spacing:1px;-webkit-user-select:none;user-select:none;touch-action:none}.planner-slot-drag:active{cursor:grabbing}.planner-slot-sub{color:var(--color-text-muted);font-size:13px}.planner-slot-delete{border:.5px solid var(--color-border-light);background:var(--color-bg);color:var(--color-text-main);border-radius:10px;padding:5px 6px;font-size:13px;cursor:pointer;transition:background .15s ease,border-color .15s ease,color .15s ease;margin-left:auto;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;gap:6px}.planner-slot-delete:hover{background:#86c095;border-color:#6f9f7b66;color:var(--color-text-main)}.planner-slot--drag-over{border-color:var(--color-primary);background:#a4c1a21a}.planner-slot--drag-source{opacity:.9;transform:scale(.98);box-shadow:0 12px 28px #1f2a362e}.planner-drag-ghost{position:fixed;pointer-events:none;transform:translate(-50%,-50%);background:#fff;border:1px solid var(--color-border-light);border-radius:12px;padding:8px 10px;box-shadow:0 14px 32px #1f2a3638;display:inline-flex;gap:8px;align-items:center;z-index:1500}.planner-drag-ghost-emoji{font-size:18px}.planner-drag-ghost-text{font-weight:600;color:var(--color-text-main)}.planner-swap-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a59;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);display:flex;align-items:flex-end;justify-content:center;z-index:1200}.planner-swap-sheet{width:min(520px,calc(100% - 24px));background:#fff;border-radius:22px 22px 12px 12px;border:1px solid #e2e8f0;box-shadow:0 -18px 40px #0f172a2e;padding:18px 18px 20px;margin:0 12px 16px;animation:planner-slide-up .22s ease-out}.planner-swap-title{font-size:16px;font-weight:800;color:#0f172a}.planner-swap-subtitle{font-size:13px;color:#475569;margin-top:4px}.planner-swap-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:14px}@keyframes planner-slide-up{0%{transform:translateY(16px);opacity:.2}to{transform:translateY(0);opacity:1}}html.dark .planner-swap-backdrop{background:#0206178c}html.dark .planner-swap-sheet{background:#111827;border-color:#94a3b840;box-shadow:0 -18px 40px #00000073}html.dark .planner-swap-title{color:#f8fafc}html.dark .planner-swap-subtitle{color:#e2e8f0b3}html.dark .planner-drawer{background:var(--bg-dark-surface);border-color:var(--border-dark-strong);box-shadow:var(--shadow-dark-elevated)}html.dark .planner-drawer-title{color:var(--text-dark-primary)}html.dark .planner-drawer-label{color:var(--text-dark-secondary)}html.dark .planner-drawer-input{background:var(--bg-dark-surface-elevated);border-color:var(--border-dark-subtle);color:var(--text-dark-primary);color-scheme:dark}html.dark .planner-template-row{background:var(--bg-dark-surface-elevated);border-color:var(--border-dark-subtle)}html.dark .planner-template-name{color:var(--text-dark-primary)}html.dark .planner-template-input{background:var(--bg-dark-surface);border-color:var(--border-dark-subtle);color:var(--text-dark-primary)}html.dark .planner-template-divider{background:var(--border-dark-subtle)}html.dark .planner-template-notice,html.dark .planner-template-note,html.dark .planner-template-conflict-row{color:var(--text-dark-secondary)}html.dark .planner-template-conflict-recipe{color:var(--text-dark-primary)}.cta-row{display:flex;gap:10px;margin-top:12px}.recipe-picker-page{padding:16px;display:flex;flex-direction:column;gap:16px}.recipe-picker-page .page-header{position:relative;justify-content:center;align-items:center;text-align:center}.recipe-picker-page .page-header .icon-btn{position:absolute;left:0}.recipe-picker-page .page-header .page-title,.recipe-picker-page .page-header .page-subtitle{text-align:center}.recipe-picker-header{display:flex;align-items:center;gap:12px}.recipe-picker-header .page-title{font-size:20px;font-weight:600}.recipe-picker-header .page-subtitle{font-size:14px;opacity:.7}.recipes-toolbar{display:flex;flex-direction:column;gap:10px}.recipes-toolbar .toolbar-buttons{display:flex;flex-wrap:wrap;gap:8px}.recent-recipes-row{display:flex;align-items:center;gap:8px;padding:8px 12px;overflow-x:auto;margin-top:6px;margin-bottom:10px}.recent-empty{font-size:.8rem;color:#94a3b8}.recent-chip{flex-shrink:0;display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:999px;border:1px solid #e2e8f0;background-color:#fff;font-size:.8rem;cursor:pointer;white-space:nowrap;transition:.2s ease}.recent-chip:hover{background-color:var(--color-primary);border-color:var(--color-primary)}.recent-emoji{font-size:1rem}.recent-title{max-width:150px;overflow:hidden;text-overflow:ellipsis}html.dark .recent-chip{background:var(--bg-dark-surface);border-color:var(--border-dark-subtle);color:var(--text-dark-primary);box-shadow:0 4px 12px #00000059}html.dark .recent-chip:hover{background:var(--bg-dark-surface-elevated);border-color:var(--border-dark-strong)}.modal-search-input,.recipe-picker-search{width:100%;padding:12px;border-radius:10px;border:1px solid #E2E8F0;font-size:16px;outline:none;background:#fafafa}.modal-search-input:focus,.recipe-picker-search:focus{border-color:var(--color-primary);box-shadow:0 0 0 2px #a4c1a24d}.recipe-picker-list{display:flex;flex-direction:column;gap:12px}.recipe-picker-item{display:flex;align-items:center;background:#fff;border-radius:12px;padding:14px;border:1px solid #E2E8F0;font-size:17px;cursor:pointer;transition:background .15s ease}.recipe-picker-item:active{background:#f1f5f9}.recipe-picker-item .emoji{font-size:22px;margin-right:12px}.recipe-picker-item .title{flex:1}html.dark .recipe-picker-item{background:#0f172a;border-color:#334155;color:#e2e8f0}html.dark .recipe-picker-item:active{background:#1e293b}.custom-note-body{display:flex;flex-direction:column;gap:10px}.custom-note-label{display:flex;flex-direction:column;gap:6px;font-weight:600;color:var(--color-text-main)}.custom-note-input,.custom-note-textarea{width:100%;padding:10px;border:1px solid var(--color-border-light);border-radius:12px;font-size:16px;background:var(--input-bg);color:var(--color-text-main)}.custom-note-textarea{min-height:90px;resize:vertical}.custom-note-actions{display:flex;gap:8px;justify-content:flex-end}.custom-emoji-row{display:flex;flex-direction:column;gap:8px;align-items:stretch}.emoji-picker-shell{border:1px solid var(--color-border-light);border-radius:12px;padding:8px;background:var(--color-bg-elevated);box-shadow:var(--shadow-dark-elevated, 0 10px 28px rgba(31, 42, 54, .1))}.custom-note-suggestions{display:flex;flex-direction:column;gap:6px}.custom-note-hint{font-size:13px;color:var(--color-text-muted)}.custom-note-chip-row{display:flex;flex-wrap:wrap;gap:6px}.custom-note-chip{border:1px solid var(--color-border-light);background:var(--color-bg-elevated);border-radius:12px;padding:6px 10px;display:inline-flex;align-items:center;gap:6px;cursor:pointer;transition:background .15s ease,border-color .15s ease}.custom-note-chip:hover{background:#a4c1a21f;border-color:var(--color-primary)}.custom-note-chip-emoji{font-size:16px}.custom-note-chip-text{font-size:14px;color:var(--color-text-main)}.cook-mode-page{min-height:100vh;background:var(--color-bg);color:var(--color-text-main);display:flex;flex-direction:column;padding:16px;gap:12px}.cook-mode-header{display:flex;align-items:center;justify-content:space-between}.cook-back{border:none;background:transparent;color:var(--color-text-main);font-weight:700;cursor:pointer}.cook-title{margin:0;font-size:20px;text-align:center}.cook-body{display:flex;flex-direction:column;gap:14px;flex:1}.cook-meta{display:flex;align-items:center;gap:10px}.cook-emoji{font-size:30px}.cook-meta-text{display:flex;gap:8px;color:var(--color-text-muted);font-weight:600}.cook-section{background:var(--color-bg-elevated);border:1px solid var(--color-border-light);border-radius:16px;box-shadow:var(--shadow-dark-elevated, 0 10px 24px rgba(15, 23, 42, .08));padding:12px}.cook-accordion{width:100%;border:none;background:transparent;display:flex;align-items:center;justify-content:space-between;font-weight:700;font-size:16px;cursor:pointer;padding:0}.cook-ingredients{margin-top:10px;display:flex;flex-direction:column;gap:8px}.cook-ingredient{display:flex;align-items:center;gap:10px;font-size:16px}.cook-ingredient--done span{text-decoration:line-through;opacity:.6}.cook-step-meta{font-weight:700;color:var(--color-text-main);margin-bottom:8px}.cook-step-card{background:var(--color-secondary);border-radius:14px;padding:16px;border:1px solid var(--color-border-light)}.cook-step-text{font-size:20px;line-height:1.6;color:var(--cook-step-text-color)}.cook-footer{position:sticky;bottom:0;display:flex;gap:10px;background:var(--color-bg-elevated);padding:8px 0}.cook-nav-btn{flex:1;border:1px solid var(--color-border-light);border-radius:12px;padding:12px;font-weight:700;background:var(--color-bg-elevated);cursor:pointer}.cook-nav-btn.primary{background:var(--color-primary);border-color:var(--color-primary);color:var(--color-text-main)}.cook-empty{text-align:center;padding:20px;color:var(--color-text-muted)}.chat-container{display:flex;flex-direction:column;height:100%;overflow:hidden;padding:0 12px;background:var(--color-bg);color:#0f172a}.chat-header{padding:16px 4px 8px 48px;background:transparent;position:relative;z-index:2;display:flex;flex-direction:column;gap:4px}.chat-header h1{margin:0;font-size:20px;letter-spacing:-.02em}.chat-header p{margin:4px 0 0;color:#475569;font-size:14px}.back-btn{position:absolute;left:4px;top:14px;border:none;background:#fff;color:#1e293b;padding:10px 12px;border-radius:12px;box-shadow:0 6px 14px #00000014;cursor:pointer;font-weight:700;line-height:1}.back-btn:active{transform:translateY(1px)}html.dark .back-btn{background:#a0be9e;color:#0b1221}.chat-messages{flex:1;overflow-y:auto;padding:8px 0 16px;scroll-behavior:smooth;display:flex;flex-direction:column;gap:12px;scrollbar-width:thin;overscroll-behavior-y:contain;-webkit-overflow-scrolling:touch}.chat-row{display:block;width:100%;margin-bottom:16px;animation:bubbleIn .28s ease forwards;opacity:0;transform:translateY(8px)}.assistant-markdown{font-size:15px;line-height:1.65;word-wrap:break-word;overflow-wrap:break-word}.assistant-markdown h1,.assistant-markdown h2,.assistant-markdown h3{margin:10px 0 6px;font-weight:800}.assistant-markdown p{margin:10px 0}.assistant-markdown ul,.assistant-markdown ol{margin:10px 0 10px 18px;padding-left:16px}.assistant-markdown li{margin:6px 0}.message{width:100%;box-sizing:border-box;word-break:break-word}.message.assistant{background:#fff;border:1px solid #e2e8f0;padding:1rem;border-radius:.75rem;color:#1e293b}.message.user{background:#f1f5f9;padding:1rem;border-radius:.75rem;color:#0f172a;white-space:pre-wrap}.typing-indicator{display:inline-block;font-size:1.5rem;letter-spacing:.2rem}.typing-indicator span{animation:blink 1s infinite;opacity:.3}.typing-indicator span:nth-child(2){animation-delay:.2s}.typing-indicator span:nth-child(3){animation-delay:.4s}@keyframes blink{0%{opacity:.2}50%{opacity:1}to{opacity:.2}}.message.assistant h1,.message.assistant h2,.message.assistant h3{font-weight:600;margin:12px 0 6px}.message.assistant ul,.message.assistant ol{padding-left:20px;margin:8px 0}.message.assistant li{margin-bottom:4px}.existing-recipes{display:flex;flex-direction:column;gap:10px}.existing-recipes-message{font-weight:600}.existing-recipes-list{display:flex;flex-direction:column;gap:8px}.existing-recipes-item{border:none;text-align:left;cursor:pointer;font:inherit;display:flex;align-items:center;gap:12px;padding:8px 10px;border-radius:10px;border:1px solid #e2e8f0;background:#f8fafc}.existing-recipes-thumb{width:48px;height:48px;border-radius:10px;overflow:hidden;background:#e2e8f0;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.existing-recipes-thumb-image{width:100%;height:100%;display:block;object-fit:cover}.existing-recipes-emoji{font-size:22px}.existing-recipes-text{display:flex;flex-direction:column;gap:2px}.existing-recipes-title{font-weight:600}.existing-recipes-item:hover{border-color:#cbd5f5;background:#eef2ff}.existing-recipes-item:focus-visible{outline:2px solid #94a3ff;outline-offset:2px}html.dark .assistant-markdown,html.dark .message.assistant{color:#e2e8f0}.message.assistant p{margin:6px 0;line-height:1.45}.message.assistant code{background:#f3f4f6;padding:2px 4px;border-radius:4px;font-size:.9rem}.message.assistant pre{background:#f5f7fb;color:#0f172a;padding:12px;border:1px solid #e2e8f0;border-radius:12px;overflow:auto;margin:12px 0;max-height:260px;font-size:.9rem}html.dark .chat-container{background:#050814;color:#e2e8f0}html.dark .message.assistant{background:#111b2a;border-color:#1e293b;color:#f1f5f9}html.dark .assistant-markdown ul,html.dark .assistant-markdown ol,html.dark .message.assistant ul,html.dark .message.assistant ol,html.dark .assistant-markdown li,html.dark .message.assistant li{color:#e2e8f0}html.dark .existing-recipes-item{background:#0b1324;border-color:#1e293b}html.dark .existing-recipes-item:hover{border-color:#334155;background:#101b2f}html.dark .existing-recipes-thumb{background:#1e293b}.chat-quick-actions{display:flex;gap:8px;padding:8px 0;margin-top:4px;overflow-x:auto;-webkit-overflow-scrolling:touch}.chat-quick-actions-header{font-size:.72rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--color-text-subtle, #94a3b8);margin-top:8px}.chat-quick-action-btn{flex:0 0 auto;border:1px solid var(--color-border-light);background:var(--color-bg-elevated);color:var(--color-text-main);padding:8px 10px;border-radius:999px;font-size:.85rem;font-weight:600;white-space:nowrap;cursor:pointer}html.dark .chat-quick-action-btn{border-color:var(--color-border-dark);background:var(--color-bg);color:var(--color-text-main)}.chat-placeholder-suggestions{display:flex;flex-wrap:wrap;gap:8px;padding:4px 0 8px}.chat-placeholder-btn{border:1px solid var(--color-border-light);background:#fff;color:#0f172a;padding:8px 14px;border-radius:999px;font-weight:600;cursor:pointer}html.dark .chat-placeholder-btn{border-color:var(--color-border-dark);background:var(--bg-dark-surface);color:var(--text-dark-primary)}.chat-suggested-actions{display:flex;flex-wrap:wrap;gap:8px;padding:8px 0 4px}.chat-toast{background:#d9f2e0;border:1px solid var(--color-primary);color:#2f5b3c;border-radius:14px;padding:10px 12px;font-weight:700;box-shadow:0 8px 18px #0000000f;margin:6px 0 4px;display:flex;align-items:center;justify-content:space-between;gap:12px}.chat-toast-text{flex:1}.chat-toast-btn{border:1px solid rgba(47,91,60,.35);background:transparent;color:inherit;border-radius:999px;padding:6px 12px;font-weight:700;cursor:pointer}.chat-swap-actions{display:flex;flex-wrap:wrap;gap:8px;padding:6px 0 2px}.chat-swap-btn{border:1px solid var(--color-border-light);background:var(--color-bg-elevated);color:var(--color-text-main);padding:8px 12px;border-radius:12px;font-size:.9rem;font-weight:700;cursor:pointer}.chat-swap-btn-secondary{background:transparent}.chat-suggested-action-btn{border:1px solid var(--color-border-light);background:var(--color-bg-elevated);color:var(--color-text-main);padding:8px 12px;border-radius:12px;font-size:.9rem;font-weight:700;cursor:pointer}html.dark .chat-suggested-action-btn{border-color:var(--color-border-dark);background:var(--color-bg);color:var(--color-text-main)}html.dark .chat-toast{background:#193124;border-color:#2a5b3d;color:#d3f0da}html.dark .chat-toast-btn{border-color:#d3f0da59}html.dark .chat-swap-btn{border-color:var(--color-border-dark);background:var(--color-bg);color:var(--color-text-main)}html.dark .add-to-planner-btn{background:#f8e6d5;color:#0f172a}html.dark .meal-plan-preview{background:var(--bg-dark-surface);border-color:var(--border-dark-subtle);box-shadow:var(--shadow-dark-elevated)}.chat-input-bar{display:flex;align-items:center;gap:8px;padding:12px 0;background:transparent;position:relative}.image-upload-btn{border:1px solid #e2e8f0;background:#fff;color:#1e293b;border-radius:12px;padding:10px 12px;cursor:pointer;font-weight:700;line-height:1;box-shadow:0 6px 14px #00000014}.image-upload-btn:disabled{opacity:.6;cursor:not-allowed;box-shadow:none}.chat-image-preview{display:flex;align-items:center;gap:10px;margin:8px 0 4px}.chat-image-preview img{width:64px;height:64px;border-radius:12px;object-fit:cover;border:1px solid #e2e8f0;background:#fff}.chat-image-remove{border:1px solid #e2e8f0;background:#fff;color:#1e293b;border-radius:12px;padding:8px 12px;font-weight:700;cursor:pointer}.chat-input-bar textarea{flex:1;border:1px solid #e2e8f0;border-radius:18px;padding:12px 14px;min-height:44px;max-height:180px;resize:none;font-size:15px;line-height:1.5;background:#fff;outline:none;box-shadow:inset 0 1px #ffffff4d,0 4px 10px #0000000d}.chat-input-bar textarea::placeholder{color:#94a3b8}.send-btn{border:none;background:var(--color-primary);color:#1e293b;border-radius:999px;padding:12px 16px;font-weight:700;cursor:pointer;box-shadow:0 10px 24px #a4c1a299;transition:transform .12s ease,box-shadow .12s ease}.send-btn:active{transform:translateY(1px);box-shadow:0 6px 16px #a4c1a280}.send-btn:disabled{opacity:.6;cursor:not-allowed;transform:none;box-shadow:0 8px 18px #a4c1a266}.save-recipe-btn{margin-top:8px;padding:8px 12px;background:var(--color-primary);border:none;border-radius:8px;color:#0f172a;font-weight:600;cursor:pointer}.save-recipe-btn:hover{opacity:.9}.add-to-planner-btn{margin-top:8px;padding:8px 12px;background:#f8e6d5;border:none;border-radius:8px;color:#0f172a;font-weight:600;cursor:pointer}.add-to-planner-btn:hover{opacity:.9}.add-to-planner-btn+.save-recipe-btn,.save-recipe-btn+.add-to-planner-btn{margin-left:8px}.apply-plan-btn{margin-top:6px;padding:8px 12px;background:var(--color-primary);border:none;border-radius:8px;font-weight:600;cursor:pointer;color:#0f172a}.apply-plan-btn:hover{opacity:.9}.meal-plan-preview{margin-top:10px;background:var(--color-bg-elevated);border:1px solid var(--color-border-light);border-radius:14px;padding:10px 12px;box-shadow:0 10px 24px #0000000f}.meal-plan-day+.meal-plan-day{margin-top:10px}.meal-plan-day-title{font-weight:700;color:var(--color-text-main);margin-bottom:6px}.meal-plan-meals{display:flex;flex-direction:column;gap:4px}.meal-plan-item{display:flex;gap:6px;align-items:baseline;color:var(--color-text-main)}.meal-plan-item-label{font-weight:700;color:var(--color-text-muted)}.meal-plan-item-title{font-weight:600}.apply-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:50}.apply-modal{background:#fff;padding:20px;border-radius:14px;width:85%;max-width:380px;animation:fadeIn .2s ease}.apply-modal h2{margin-top:0}.apply-modal p{color:var(--color-text-muted)}.apply-option-btn{width:100%;background:var(--color-primary);border:none;padding:10px;margin:8px 0;border-radius:10px;font-weight:600;cursor:pointer}.apply-option-btn:hover{opacity:.9}.close-btn{width:100%;background:#e2e8f0;border:none;padding:10px;border-radius:10px;margin-top:10px;cursor:pointer}html.dark .apply-overlay{background:#040a14b8}html.dark .apply-modal{background:var(--bg-dark-surface);color:var(--text-dark-primary);border:1px solid var(--border-dark-subtle);box-shadow:var(--shadow-dark-elevated)}html.dark .apply-modal h2{color:var(--text-dark-primary)}html.dark .apply-modal p{color:var(--text-dark-secondary)}html.dark .apply-option-btn{color:#0f172a}html.dark .close-btn{background:var(--bg-dark-surface-elevated);color:var(--text-dark-primary);border:1px solid var(--border-dark-subtle)}.new-chat-btn{align-self:flex-end;margin-top:4px;padding:8px 12px;border:none;border-radius:10px;background:#a5c1a3;cursor:pointer;font-weight:600;color:#0f172a;box-shadow:0 6px 12px #0000000a}.new-chat-btn:hover{background:#f8fafc}html.dark .chat-container{background:var(--bg-dark-page);color:var(--text-dark-primary)}html.dark .chat-header p{color:var(--text-dark-secondary)}html.dark .chat-messages{gap:10px}html.dark .chat-row{margin-bottom:10px}html.dark .message{max-width:86%}html.dark .message.assistant{background:var(--bg-dark-surface);border:1px solid var(--border-dark-subtle);color:var(--text-dark-primary);margin-right:auto}html.dark .message.user{background:var(--bg-dark-surface-elevated);border:1px solid var(--border-dark-subtle);color:var(--text-dark-primary);margin-left:auto}html.dark .message.system,html.dark .message.welcome{background:var(--bg-dark-surface);border:1px dashed var(--border-dark-subtle);color:var(--text-dark-secondary);margin-right:auto}html.dark .assistant-markdown code,html.dark .message.assistant code{background:#ffffff0d;color:var(--text-dark-primary)}html.dark .message.assistant pre{background:var(--bg-dark-surface-elevated);border-color:var(--border-dark-subtle);color:var(--text-dark-primary)}html.dark .chat-messages:empty:before{content:"Ask me anything about your pantry or meals.";color:var(--text-dark-secondary);font-size:14px;padding:12px 0;display:block;text-align:center;background:linear-gradient(90deg,#ffffff05,#ffffff0a,#ffffff05);border-radius:12px}html.dark .chat-input-bar{padding:12px 0 14px;background:linear-gradient(180deg,#0b122100,#0b1221cc 70%)}html.dark .chat-input-bar textarea{border-color:var(--border-dark-subtle);background:var(--bg-dark-surface);color:var(--text-dark-primary);box-shadow:inset 0 1px #ffffff0a,0 8px 22px #00000059}html.dark .chat-input-bar textarea::placeholder{color:var(--text-dark-secondary)}html.dark .chat-input-bar textarea:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px;box-shadow:0 0 0 2px #92be9740}html.dark .image-upload-btn,html.dark .chat-image-remove{background:var(--bg-dark-surface);border-color:var(--border-dark-subtle);color:var(--text-dark-primary);box-shadow:none}html.dark .chat-image-preview img{border-color:var(--border-dark-subtle);background:var(--bg-dark-surface)}html.dark .send-btn{box-shadow:0 12px 28px #00000059}html.dark .chat-quick-actions,html.dark .chat-suggested-actions{gap:6px}html.dark .chat-quick-action-btn,html.dark .chat-suggested-action-btn{background:var(--bg-dark-surface);border-color:var(--border-dark-subtle);color:var(--text-dark-secondary);box-shadow:none}html.dark .chat-quick-action-btn:hover,html.dark .chat-suggested-action-btn:hover{color:var(--text-dark-primary);border-color:var(--border-dark-strong)}html.dark .chat-quick-action-btn,html.dark .chat-suggested-action-btn{font-weight:600}@keyframes bubbleIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.grocery-page{padding:16px;--grocery-check-fill: #8fbe9a;--grocery-check-bg: rgba(169, 204, 153, .25);--grocery-check-border: #9aa3af;--grocery-check-focus: rgba(106, 150, 123, .35);--grocery-mode-pill-bg: rgba(143, 190, 154, .18);--grocery-mode-pill-text: #2f4f3a;--grocery-mode-toggle-bg: #ffffff;--grocery-mode-toggle-border: #e2e8f0}.grocery-category{margin-top:20px;font-weight:700;font-size:1.1rem;color:var(--text-dark)}.grocery-section-card{border:1px solid #e2e8f0;border-radius:18px;padding:0;overflow:hidden;margin-bottom:12px;background:var(--color-bg-elevated)}.grocery-section-header{width:100%;display:flex;align-items:center;justify-content:space-between;gap:8px;background:var(--section-accent-soft, #f1f5f9);border:none;padding:12px 14px;cursor:pointer;border-top-left-radius:18px;border-top-right-radius:18px}.grocery-section-header.is-completed{opacity:.85}.grocery-section-icon{width:20px;height:20px;display:inline-flex;align-items:center;justify-content:center;color:var(--section-accent-icon, #64748b);flex-shrink:0}.grocery-section-icon svg{width:20px;height:20px;display:block}.grocery-section-title{font-weight:700;font-size:1rem;color:var(--color-text-main)}.grocery-section-count{font-size:.85rem;color:var(--color-text-muted)}.grocery-section-status{font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-muted);background:#fff9;padding:3px 8px;border-radius:999px}.grocery-section-toggle{transition:transform .2s ease}.grocery-section-toggle.is-collapsed{transform:rotate(-90deg)}.grocery-section-body{overflow:hidden;transition:max-height .2s ease,opacity .2s ease;max-height:1000px;opacity:1;padding:8px 12px}.grocery-section-body.is-collapsed{max-height:0;opacity:0}.grocery-item{display:flex;align-items:center;justify-content:space-between;padding:8px 10px;gap:8px;border-radius:999px;transition:opacity .2s ease,transform .2s ease,background .2s ease}.grocery-item-label{display:inline-flex;align-items:center;gap:8px;flex:1;position:relative;width:100%}.grocery-item-text{transition:color .2s ease}.grocery-item.is-checked{opacity:.85;transform:scale(.995);background:var(--grocery-check-bg, rgba(169, 204, 153, .25));margin:4px 0}.grocery-checkbox-input{position:absolute;opacity:0;width:1px;height:1px;pointer-events:none}.grocery-check{width:20px;height:20px;border-radius:50%;border:2px solid var(--grocery-check-border, #9aa3af);display:inline-flex;align-items:center;justify-content:center;background:transparent;transition:background .2s ease,border-color .2s ease,transform .2s ease;flex-shrink:0}.grocery-check-icon{width:8px;height:4px;border-left:2px solid #ffffff;border-bottom:2px solid #ffffff;transform:rotate(-45deg) scale(.9);opacity:0;transition:opacity .2s ease,transform .2s ease}.grocery-checkbox-input:focus-visible+.grocery-check{box-shadow:0 0 0 3px var(--grocery-check-focus, rgba(106, 150, 123, .35))}.grocery-item.is-checked .grocery-check{background:var(--grocery-check-fill, #8fbe9a);border-color:var(--grocery-check-fill, #8fbe9a);transform:scale(1.05)}.grocery-item.is-checked .grocery-check-icon{opacity:1;transform:rotate(-45deg) scale(1)}.grocery-shopping-mode .grocery-item{padding:10px 12px}.grocery-shopping-mode .grocery-check{width:24px;height:24px}.grocery-shopping-mode .grocery-item.is-checked{opacity:.6;padding:6px 10px;margin:2px 0}.grocery-shopping-mode .grocery-edit-btn{padding:8px 12px;font-size:.8rem}.grocery-edit-btn{border:1px solid #e2e8f0;background:#fff;color:#1e293b;padding:6px 10px;border-radius:999px;font-weight:600;font-size:.75rem;cursor:pointer}.grocery-edit-btn:hover{background:#f3f4f6}.bottom-actions{margin-top:32px;display:flex;flex-direction:column;gap:12px}button.grocery-btn{padding:12px;border-radius:8px;background:#a9cc99;color:#ffffffc9;font-weight:600;border:none;cursor:pointer}button.grocery-btn.secondary{background:#e5e7eb;color:#111}.grocery-edit-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a73;display:flex;align-items:center;justify-content:center;z-index:200;padding:16px}.grocery-edit-modal{width:100%;max-width:360px;background:#fff;border-radius:18px;border:1px solid #e2e8f0;padding:16px;box-shadow:0 18px 40px #0f172a33;display:flex;flex-direction:column;gap:12px}.grocery-edit-title{font-weight:700;font-size:1rem;color:#1e293b}.grocery-edit-field{display:flex;flex-direction:column;gap:6px;font-size:.85rem;color:#1e293b}.grocery-edit-field input{border:1px solid #e2e8f0;border-radius:12px;padding:10px;background:#f8fafc;font-size:.9rem}.grocery-edit-actions{display:flex;flex-wrap:wrap;gap:10px}.grocery-edit-error{color:#b91c1c;font-weight:600;font-size:.85rem}.grocery-mode-row{display:flex;align-items:center;gap:12px;margin:6px 0 16px}.grocery-mode-toggle{display:inline-flex;align-items:center;gap:10px;padding:8px 12px;border-radius:999px;border:1px solid var(--grocery-mode-toggle-border, #e2e8f0);background:var(--grocery-mode-toggle-bg, #ffffff);color:var(--color-text-main);font-weight:600;cursor:pointer}.grocery-mode-toggle.is-active{border-color:#9fc5a6}.grocery-mode-switch{width:36px;height:20px;border-radius:999px;background:#d1d5db;display:inline-flex;align-items:center;padding:2px;transition:background .2s ease}.grocery-mode-toggle.is-active .grocery-mode-switch{background:#8fbe9a}.grocery-mode-knob{width:16px;height:16px;border-radius:50%;background:#fff;transform:translate(0);transition:transform .2s ease}.grocery-mode-toggle.is-active .grocery-mode-knob{transform:translate(16px)}.grocery-mode-pill{background:var(--grocery-mode-pill-bg, rgba(143, 190, 154, .18));color:var(--grocery-mode-pill-text, #2f4f3a);padding:6px 10px;border-radius:999px;font-size:.8rem;font-weight:600;letter-spacing:.02em}html.dark .grocery-edit-modal{background:var(--bg-dark-surface-elevated);border-color:var(--border-dark-subtle);color:var(--text-dark-primary)}html.dark .grocery-edit-field input,html.dark .grocery-edit-btn{background:var(--bg-dark-surface);border-color:var(--border-dark-subtle);color:var(--text-dark-primary)}html.dark .grocery-section-card{border-color:var(--border-dark-subtle)}html.dark .grocery-section-header{background:var(--section-accent-soft-dark, #1f2c43)}html.dark .grocery-section-icon{color:var(--section-accent-icon-dark, #b4c2d7)}html.dark .grocery-section-status{background:#0b122166;color:var(--text-dark-secondary)}html.dark .grocery-mode-toggle{background:var(--bg-dark-surface);border-color:var(--border-dark-subtle);color:var(--text-dark-primary)}html.dark .grocery-mode-switch{background:#2a3a55}html.dark .grocery-mode-toggle.is-active .grocery-mode-switch{background:#4aa37e}html.dark .grocery-mode-pill{background:#4aa37e2e;color:#cfe6d7}.settings-container{background:var(--color-bg);min-height:100vh;padding:16px;display:flex;flex-direction:column;gap:16px}.settings-header h1{margin:0;color:#1e293b;font-size:24px;font-weight:800}.settings-subtitle{margin:4px 0 0;color:#475569;font-size:13px}.settings-toast{background:#d9f2e0;border:1px solid var(--color-primary);color:#2f5b3c;border-radius:14px;padding:10px 12px;font-weight:700;box-shadow:0 8px 18px #0000000f}.top-block{background:var(--color-bg-elevated);border-radius:22px;border:1px solid var(--color-border-light);box-shadow:0 10px 28px #00000014;padding:14px;display:flex;flex-direction:column;gap:12px}.top-row{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.row-left{display:flex;flex-direction:column;gap:6px}.label{font-weight:700;color:var(--color-text-main);font-size:14px}.id-inline{display:inline-flex;align-items:center;gap:6px;padding:10px 12px;border-radius:16px;background:#f5f1e8;border:1px solid var(--color-border-light);color:var(--color-text-main);font-family:monospace;box-shadow:inset 0 2px 4px #0000000a}html.dark .id-inline{background:#1b2a44;border-color:var(--border-dark-subtle);color:var(--text-dark-primary)}.settings-card{background:var(--color-bg-elevated);border-radius:24px;border:1px solid var(--color-border-light);box-shadow:0 12px 32px #00000014;padding:16px;display:flex;flex-direction:column;gap:10px}.dev-seeder-card{border:1px solid rgba(148,163,184,.18);background:radial-gradient(120% 140% at 100% 0%,rgba(59,130,246,.18),transparent 55%),radial-gradient(120% 160% at 0% 100%,rgba(99,102,241,.14),transparent 60%),linear-gradient(160deg,#0b1220,#0b162b 55%,#0b1021);box-shadow:0 24px 60px #03061499,inset 0 1px #94a3b81f;padding:28px;gap:14px;width:100%;position:relative;overflow:hidden}.dev-seeder-header{display:flex;align-items:center;justify-content:space-between;gap:10px}.dev-seeder-card .settings-section-title{font-size:18px;font-weight:700;color:#f8fafc}.dev-seeder-card .settings-section-sub{color:#e2e8f0}html:not(.dark) .dev-seeder-card .settings-section-title,html:not(.dark) .dev-seeder-card .settings-section-sub,html:not(.dark) .dev-seeder-subtext,html:not(.dark) .dev-seeder-label,html:not(.dark) .dev-seeder-help,html:not(.dark) .dev-seeder-upload-filename{color:#1e293b}html:not(.dark) .dev-seeder-input::placeholder{color:#475569}.dev-seeder-badge{background:#38bdf824;color:#7dd3fc;font-weight:700;font-size:11px;letter-spacing:.12em;padding:6px 12px;border-radius:999px;border:1px solid rgba(56,189,248,.3)}.dev-seeder-subtext{margin-top:-6px;color:#e2e8f0eb}.dev-seeder-stack{display:flex;flex-direction:column;gap:16px;width:100%}.dev-seeder-field{display:flex;flex-direction:column;gap:8px;width:100%}.dev-seeder-label{font-size:13px;color:#e2e8f0f0;font-weight:600;letter-spacing:.01em}.dev-seeder-help{font-size:12px;color:#cbd5e1e6}.dev-seeder-upload-field{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:16px;border:1px solid rgba(148,163,184,.18);background:linear-gradient(180deg,#0f172af2,#0f172acc);box-shadow:inset 0 1px #ffffff0a,0 10px 20px #02061773;position:relative;overflow:hidden;min-height:56px;width:100%}.dev-seeder-upload-field.is-disabled{opacity:.6;cursor:not-allowed}.dev-seeder-file-input{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;opacity:0;cursor:pointer}.dev-seeder-upload-icon{width:36px;height:36px;border-radius:12px;display:grid;place-items:center;color:#cbd5f5;background:#1e293bbf;border:1px solid rgba(148,163,184,.2);flex:0 0 auto}.dev-seeder-upload-icon svg{width:18px;height:18px}.dev-seeder-upload-button{padding:8px 14px;border-radius:999px;background:linear-gradient(120deg,#1e293be6,#0f172ab3);color:#e2e8f0;font-weight:600;font-size:13px;border:1px solid rgba(148,163,184,.2);box-shadow:0 6px 12px #02061759;flex:0 0 auto}.dev-seeder-upload-filename{color:#e2e8f0d9;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dev-seeder-input{width:100%;border-radius:16px;border:1px solid rgba(148,163,184,.2);padding:12px 14px;font-size:14px;background:linear-gradient(180deg,#0f172aeb,#0f172ac7);color:#e2e8f0;outline:none;box-shadow:inset 0 1px #ffffff08,0 10px 18px #02061759}.dev-seeder-input::placeholder{color:#cbd5e1d9}.dev-seeder-input:focus{border-color:#818cf899;box-shadow:0 0 0 3px #3b82f633}.dev-seeder-input:disabled{opacity:.6;cursor:not-allowed}.dev-seeder-textarea{resize:vertical;min-height:110px}.dev-seeder-actions{display:flex;justify-content:center}.dev-seeder-submit{width:100%;border-radius:999px;padding:14px 18px;font-size:15px;font-weight:700;background:linear-gradient(110deg,#3b82f6,#6366f1);color:#f8fafc;box-shadow:0 18px 28px #3b82f659,0 0 24px #6366f140;transition:transform .15s ease,box-shadow .2s ease}.dev-seeder-submit:disabled{opacity:.65;cursor:not-allowed;transform:none;box-shadow:none}.dev-seeder-preview{display:flex;flex-direction:column;gap:12px;margin-top:8px;padding:16px;border-radius:18px;border:1px solid rgba(148,163,184,.16);background:#0f172aa6;box-shadow:inset 0 1px #ffffff08}.dev-seeder-preview-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:16px;align-items:start}.dev-seeder-preview-image{width:100%;height:190px;object-fit:cover;border-radius:16px;border:1px solid rgba(148,163,184,.2);box-shadow:0 14px 24px #0206178c}.dev-seeder-meta{display:flex;flex-direction:column;gap:12px}.dev-seeder-chip-row{display:flex;flex-direction:column;gap:6px}.dev-seeder-chip-label{font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:#94a3b8b3;font-weight:600}.dev-seeder-chip-list{display:flex;flex-wrap:wrap;gap:6px}.dev-seeder-chip{padding:6px 10px;border-radius:999px;border:1px solid rgba(148,163,184,.2);background:#0f172abf;color:#e2e8f0;font-size:12px;font-weight:600}.dev-seeder-chip.is-muted{color:#94a3b8d9}.dev-seeder-chip.is-code{font-family:SFMono-Regular,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.dev-seeder-error{padding:10px 12px;border-radius:12px;background:#ef44441f;color:#fca5a5;border:1px solid rgba(248,113,113,.35);font-size:13px;font-weight:600}@media (max-width: 720px){.dev-seeder-preview-grid{grid-template-columns:1fr}.dev-seeder-card{padding:22px}.dev-seeder-upload-field{flex-wrap:wrap;align-items:flex-start}.dev-seeder-upload-filename{width:100%}}.settings-section-title{font-size:16px;font-weight:800;color:var(--color-text-main)}.settings-section-sub{font-weight:700;color:var(--color-text-main)}.settings-subtext{margin:0;color:var(--color-text-muted);font-size:13px}.input{width:100%;border-radius:14px;border:1px solid var(--color-border-light);padding:12px;font-size:14px;background:var(--color-bg-elevated);outline:none;box-shadow:0 6px 16px #0000000f}.btn{border:none;border-radius:999px;padding:12px;font-weight:700;cursor:pointer;box-shadow:0 6px 16px #00000014}.copy-button,.sync-button{background:var(--color-primary);color:#0f172a}.ghost-button{background:#f87171;border:1px solid #F87171;color:#0f172a;box-shadow:none;width:100%;text-align:center}.ghost-button:hover{filter:brightness(.97)}.divider{height:1px;background:#e2e8f0;margin:6px 0}.theme-inline{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.theme-pill{border:1px solid var(--color-border-light);border-radius:12px;padding:10px;background:var(--color-bg-elevated);color:var(--color-text-main);font-weight:700;cursor:pointer;transition:background .15s ease,box-shadow .15s ease,border-color .15s ease}.theme-pill.active{background:var(--color-primary);color:#0f172a;border-color:var(--color-primary);box-shadow:0 6px 14px #0000001a}.sync-inline{display:flex;flex-direction:column;gap:8px}.settings-actions{display:flex;flex-direction:row;justify-content:space-between;gap:8px}.settings-actions .action-row-btn{flex:1 1 0}.action-row-btn{border:1px solid var(--color-border-light);background:var(--color-bg-elevated);color:var(--color-text-main);padding:12px;border-radius:14px;display:flex;align-items:center;justify-content:center;font-weight:700;cursor:pointer;box-shadow:0 6px 14px #0000000f;transition:transform .1s ease;white-space:nowrap;min-width:140px}.action-row-btn:hover{transform:translateY(-1px)}.memory-helper{margin-top:10px}.memory-clear-button{background:#fee2e2;border-color:#fca5a5;color:#7f1d1d;box-shadow:none}.memory-clear-button:hover{filter:brightness(.98)}.memory-modal-list{margin:12px 0 0;padding-left:18px;color:var(--color-text-muted);font-size:13px}.memory-modal-list li{margin:6px 0}.memory-modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:16px}.memory-modal-btn{border-radius:999px;padding:10px 14px;font-weight:700;border:1px solid var(--color-border-light);background:var(--color-bg-elevated);color:var(--color-text-main);cursor:pointer}.memory-modal-btn.primary{background:#fca5a5;border-color:#f87171;color:#7f1d1d;box-shadow:none}.preference-list{display:flex;flex-direction:column;gap:8px;margin-top:8px}.preference-option{border:1px solid var(--color-border-light);background:var(--color-bg-elevated);color:var(--color-text-main);padding:12px;border-radius:14px;text-align:left;display:flex;align-items:center;justify-content:flex-start;gap:8px;font-weight:700;cursor:pointer;box-shadow:0 6px 14px #0000000f;transition:transform .1s ease,background .1s ease,border-color .1s ease}.preference-option .preference-icon{margin-right:8px}.preference-option:hover{transform:translateY(-1px)}.preference-option.active{background:var(--color-primary);border-color:var(--color-primary);color:#0f172a;box-shadow:0 8px 18px #a4c1a259}.preference-option:disabled{cursor:not-allowed;opacity:.65;transform:none}.preference-actions{display:flex;justify-content:space-between;gap:12px;margin-top:10px}.preference-actions .btn.btn-primary{background:var(--color-primary);color:#0f172a;border:none}html.dark .preference-actions .btn.btn-primary{background:#b2d1b1;color:#0c1827;border:1px solid #8ab090;box-shadow:0 12px 28px #0000005c}.preference-actions .btn.btn-primary:hover{opacity:.95}html.dark .preference-actions .btn.btn-primary:hover{background:#c1daba;border-color:#9bc29c}.settings-error{margin-top:8px;color:#dc2626;font-weight:700}.goal-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.goal-toggle-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border-radius:16px;border:1px solid var(--color-border-light);background:var(--color-bg-elevated);box-shadow:0 6px 14px #0000000f}.goal-toggle-label{font-weight:700;color:var(--color-text-main);font-size:14px}.settings-switch{position:relative;display:inline-flex;align-items:center;width:44px;height:26px;flex:0 0 auto}.settings-switch input{opacity:0;width:0;height:0}.settings-switch-slider{position:absolute;top:0;right:0;bottom:0;left:0;cursor:pointer;background-color:#cbd5e1;border-radius:999px;transition:background-color .2s ease}.settings-switch-slider:before{content:"";position:absolute;height:20px;width:20px;left:3px;top:3px;background-color:#fff;border-radius:50%;transition:transform .2s ease;box-shadow:0 2px 6px #0003}.settings-switch input:checked+.settings-switch-slider{background-color:#86efac}.settings-switch input:checked+.settings-switch-slider:before{transform:translate(18px)}html.dark .settings-switch-slider{background-color:#475569}html.dark .settings-switch input:checked+.settings-switch-slider{background-color:#86efac}.goal-field{display:flex;flex-direction:column;gap:6px}.goal-label{font-size:13px;color:var(--color-text-muted);font-weight:600}.goal-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:10px;align-items:center}.goal-actions>.btn,.goal-actions-right .btn{width:100%}.goal-actions-right{display:contents}.admin-card{border:1px dashed rgba(15,23,42,.2)}.dish-type-toolbar{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.dish-type-list{display:flex;flex-direction:column;gap:8px}.dish-type-row{border:1px solid var(--color-border-light);background:var(--color-bg-elevated);color:var(--color-text-main);padding:12px;border-radius:16px;text-align:left;display:flex;flex-direction:column;gap:6px;cursor:pointer;transition:border-color .15s ease,transform .1s ease}.dish-type-row:hover{transform:translateY(-1px)}.dish-type-row.active{border-color:var(--color-primary);box-shadow:0 8px 18px #00000014}.dish-type-name{font-weight:800;font-family:monospace;font-size:13px}.dish-type-meta{color:var(--color-text-muted);font-size:12px}.dish-type-detail-card{border:1px solid var(--color-border-light);border-radius:18px;padding:14px;display:flex;flex-direction:column;gap:12px;background:#f8fafcb3}html.dark .dish-type-detail-card{background:var(--bg-dark-surface);border-color:var(--border-dark-subtle)}.dish-type-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px}.dish-type-field{display:flex;flex-direction:column;gap:6px}.dish-type-textarea{resize:vertical}.dish-type-actions{display:flex;justify-content:flex-end}.admin-seed-card,.manual-seed-card{border:1px solid var(--color-border-light);border-radius:16px;padding:12px;display:flex;flex-direction:column;gap:10px;background:#f8fafc8c;margin-bottom:14px}html.dark .admin-seed-card,html.dark .manual-seed-card{background:var(--bg-dark-surface);border-color:var(--border-dark-subtle)}.manual-seed-notes{resize:vertical}.canonical-hint{font-size:12px;color:var(--color-text-muted)}.canonical-warning{background:#fbbf2433;border:1px solid rgba(251,191,36,.4);color:#92400e;padding:8px 10px;border-radius:12px;font-size:12px;font-weight:700}.canonical-error{background:#f8717126;border:1px solid rgba(248,113,113,.35);color:#7f1d1d;padding:8px 10px;border-radius:12px;font-size:12px;font-weight:700}.canonical-suggestions{display:flex;flex-direction:column;gap:6px}.canonical-suggestion{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 10px;border-radius:12px;border:1px solid var(--color-border-light);background:var(--color-bg-elevated);cursor:pointer;text-align:left;font-size:13px}.canonical-suggestion-value{font-family:monospace;font-weight:700}.canonical-suggestion-kind{font-size:11px;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.3px;font-weight:700}.canonical-confirm{display:inline-flex;align-items:center;gap:8px;font-size:12px;font-weight:700;color:var(--color-text-main)}.admin-toolbar{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.admin-cache-list{display:flex;flex-direction:column;gap:8px}.admin-cache-row{border:1px solid var(--color-border-light);background:var(--color-bg-elevated);color:var(--color-text-main);padding:12px;border-radius:16px;text-align:left;display:flex;flex-direction:column;gap:6px;cursor:pointer;transition:border-color .15s ease,transform .1s ease}.admin-cache-row:hover{transform:translateY(-1px)}.admin-cache-row.active{border-color:var(--color-primary);box-shadow:0 8px 18px #00000014}.admin-cache-key{font-weight:800;font-family:monospace;font-size:13px}.admin-cache-meta{color:var(--color-text-muted);font-size:12px}.admin-empty{color:var(--color-text-muted);font-size:13px;text-align:center;padding:12px}.admin-error{background:#f8717126;border:1px solid rgba(248,113,113,.35);color:#7f1d1d;padding:10px 12px;border-radius:12px;font-size:13px;font-weight:700}.admin-detail-card{border:1px solid var(--color-border-light);border-radius:18px;padding:14px;display:flex;flex-direction:column;gap:12px;background:#f8fafcb3}.admin-detail-header{display:flex;gap:12px;align-items:flex-start;justify-content:space-between}.admin-detail-title{font-weight:800;font-size:14px;word-break:break-word}.admin-image-preview{width:100%;border-radius:16px;object-fit:cover;max-height:240px}.admin-meta-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px;font-size:12px;color:var(--color-text-muted)}.admin-actions-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:8px}.admin-note-label{font-weight:700;color:var(--color-text-main)}.admin-note{min-height:90px;resize:vertical}.recipe-card{background:#faf8f3;border-radius:22px;border:1px solid #e2e8f0;box-shadow:0 4px 12px #0000000f;padding:16px;display:flex;align-items:center;justify-content:space-between;gap:12px;cursor:pointer;transition:transform .12s ease,box-shadow .12s ease;position:relative}.recipe-card:hover{transform:translateY(-2px);box-shadow:0 8px 18px #00000014}.recipe-card-main{display:flex;align-items:center;gap:12px}.recipe-card--with-image .recipe-card-main{flex:1;min-width:0}.recipe-thumb{width:84px;height:84px;flex:0 0 84px;border-radius:12px;overflow:hidden;border:1px solid var(--color-border-light);background:var(--color-bg-elevated)}.recipe-thumb-image{width:100%;height:100%;object-fit:cover;display:block;opacity:0;transition:opacity .35s ease}.recipe-thumb-image.is-loaded{opacity:1}.recipe-thumb-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:#94a3b81f}.recipe-thumb-emoji{font-size:32px}.recipe-emoji{font-size:36px}.recipe-text{display:flex;flex-direction:column;gap:6px}.recipe-card--with-image .recipe-text{min-width:0}.recipe-title{font-weight:700;color:#1e293b;font-size:16px}.recipe-type-badge{display:inline-flex;align-items:center;margin-left:8px;padding:2px 8px;border-radius:999px;background:#fde68a;color:#1f2937;font-size:11px;font-weight:800;letter-spacing:.2px;text-transform:uppercase}.recipe-card--with-image .recipe-title{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;line-height:1.2}.recipe-title-emoji{margin-right:6px}.recipe-serves{font-size:.85rem;color:var(--color-text-muted);font-weight:600}.recipe-image-status{font-size:.75rem;color:var(--color-text-muted)}.recipe-meta{margin-top:4px;font-size:.8rem;display:flex;align-items:center;gap:4px;color:#64748b}.recipe-meta-item{white-space:nowrap}.recipe-meta-separator{opacity:.7}.recipe-meta-quick{font-weight:700;color:#6b7280}.recipe-time{color:#475569;font-size:13px}.recipe-last-cooked{font-size:.8rem;color:#64748b}.recipe-tags{display:flex;gap:6px;flex-wrap:wrap}.recipe-tag{background:#c084fc;color:#1f2937;border-radius:12px;padding:4px 8px;font-weight:700;font-size:12px;box-shadow:0 4px 10px #0000000f}.recipe-tag.extra{background:#e2e8f0;color:#1f2937}.recipe-chevron{font-size:20px;color:#94a3b8}.fav-btn{background:none;border:none;font-size:1.3rem;cursor:pointer;color:#94a3b8;transition:.2s;position:absolute;top:8px;right:8px}.fav-btn--active{color:#fbbf24;transform:scale(1.1)}.fade-in{animation:fadeIn .2s ease}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.categories-page{min-height:100%;padding:18px 16px calc(26px + env(safe-area-inset-bottom));background:var(--color-bg);display:flex;flex-direction:column;gap:14px}.categories-top{display:flex;align-items:center;gap:12px;justify-content:space-between}.categories-heading{display:flex;flex-direction:column;gap:4px}.categories-heading h1{margin:0;font-size:24px;letter-spacing:-.02em;color:#1e293b}.categories-heading p{margin:0;color:#475569;font-size:14px}.back-chip{border:1px solid #e2e8f0;background:#fff;color:#1e293b;border-radius:14px;padding:10px 12px;display:inline-flex;align-items:center;gap:8px;cursor:pointer;box-shadow:0 8px 20px #0000000f;transition:transform .14s ease,box-shadow .14s ease,background .14s ease}.back-chip:hover{transform:translateY(-1px);box-shadow:0 12px 24px #00000014}.back-chip:active{transform:translateY(0);background:#c084fc1f}.category-list{display:flex;flex-direction:column;gap:12px;margin-top:8px}.category-card,.subcategory-card{width:100%;border:1px solid #dbe7dc;border-left:6px solid var(--color-primary);border-radius:18px;background:#fff;padding:14px 14px 14px 16px;display:flex;align-items:center;justify-content:space-between;box-shadow:0 12px 28px #0f172a0f;cursor:pointer;transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease,background-color .16s ease}.subcategory-card{padding:12px 14px}.category-card:hover,.subcategory-card:hover{transform:translateY(-2px);box-shadow:0 18px 36px #0f172a14;border-color:var(--color-primary)}.category-card:active,.subcategory-card:active{transform:translateY(0);background:#ffeedab3}.category-card-left{display:flex;align-items:center;gap:12px}.category-icon,.subcategory-icon{width:40px;height:40px;border-radius:12px;background:#f3fbf6;border:1px solid #cdecd7;display:inline-flex;align-items:center;justify-content:center;font-size:18px}.subcategory-icon{width:34px;height:34px}.category-label{font-size:16px;font-weight:700;color:#1e293b}.subcategory-label{font-size:15px;font-weight:600;color:#1e293b}.category-chevron{color:#94a3b8;font-size:18px;font-weight:700}.categories-page .subheader{font-size:15px;color:#475569;margin:0}.recipes-placeholder{display:flex;flex-direction:column;gap:12px}.recipe-list{display:flex;flex-direction:column;gap:10px}.empty-note{padding:16px;border-radius:16px;background:#f5f1e8;border:1px dashed #e2e8f0;color:#475569;text-align:center;line-height:1.4}.recipe-placeholder-card{width:100%;background:var(--color-secondary);border:1px solid #e2e8f0;border-left:6px solid var(--color-primary);border-radius:18px;padding:14px;display:flex;align-items:center;justify-content:space-between;gap:10px;box-shadow:0 12px 28px #0f172a0d}.recipe-placeholder-main{display:flex;align-items:center;gap:12px}.recipe-placeholder-emoji{font-size:34px}.recipe-placeholder-text{display:flex;flex-direction:column;gap:6px}.recipe-placeholder-title{font-weight:700;font-size:16px;color:#1e293b}.recipe-placeholder-time{font-size:13px;color:#475569}.recipe-placeholder-tags{display:flex;flex-wrap:wrap;gap:6px}.recipe-placeholder-tag{background:#c084fc;color:#1f2937;border-radius:12px;padding:4px 9px;font-size:12px;font-weight:700;box-shadow:0 6px 14px #c084fc38}.recipe-placeholder-chevron{color:#c084fc;font-size:18px;font-weight:700}.card-grid{display:grid;grid-template-columns:1fr;gap:12px}@media (min-width: 640px){.card-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.view-shell{background:#ffffffbf;border:1px solid #e2e8f0;border-radius:20px;padding:14px 12px;box-shadow:inset 0 1px #fff9,0 8px 22px #0f172a0d}.categories-page .fade-in{animation:fadeIn .3s ease}@keyframes fadeIn{0%{opacity:0;translate:0 10px}to{opacity:1;translate:0 0}}.folder-page{min-height:100vh;background:#faf8f3;padding:16px;display:flex;flex-direction:column;gap:12px}.folder-header{display:flex;align-items:center;justify-content:space-between}.folder-title{font-weight:700;font-size:20px;color:#1e293b}.folder-card{background:#fff;border:1px solid #e2e8f0;border-radius:20px;box-shadow:0 12px 30px #0f172a14;padding:14px}.folder-list{display:flex;flex-direction:column;gap:10px}.folder-row{width:100%;border:1px solid #e2e8f0;background:#faf8f3;border-radius:16px;padding:12px;display:flex;align-items:center;justify-content:space-between;text-align:left;cursor:pointer;gap:10px;transition:transform .1s ease,box-shadow .1s ease}.folder-row:hover{transform:translateY(-1px);box-shadow:0 10px 22px #0f172a14}.folder-row-main{display:flex;flex-direction:column;gap:4px}.folder-row-name{font-weight:700;color:#1e293b}.folder-row-sub{color:#475569;font-size:13px}.folder-row-delete{border:none;background:#fff1f2;color:#b91c1c;border-radius:12px;padding:8px 10px;cursor:pointer;box-shadow:0 6px 14px #b91c1c26}.form-stack{display:flex;flex-direction:column;gap:12px;margin-top:6px}.form-label{display:flex;flex-direction:column;gap:6px;font-weight:600;color:#1e293b;font-size:14px}.input.select{background:#fff}.folder-actions{display:flex;flex-direction:column;gap:8px;margin-top:12px}.btn.danger{color:#b91c1c;border-color:#fecdd3;background:#fff1f2;box-shadow:none}.empty-note{text-align:center;color:#475569;padding:16px 10px;border-radius:14px;background:#f5f1e8;border:1px dashed #e2e8f0}.import-recipe-page{padding:16px;background:var(--color-bg);min-height:100vh}.import-recipe-page .back-btn{position:static;margin-bottom:12px;display:inline-flex}html.dark .import-recipe-page .back-btn{background:#a0be9e;color:#0b1221}.import-title{font-size:1.4rem;margin:12px 0;color:var(--color-text-main)}.import-header{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.import-toggle{display:inline-flex;gap:6px;background:#f4efe5;border:1px solid var(--color-border-light);border-radius:12px;padding:4px}.import-toggle-btn{border:none;background:transparent;padding:8px 10px;border-radius:10px;font-weight:700;cursor:pointer;color:#1f2937}.import-toggle-btn.active{background:#fff;box-shadow:0 4px 12px #00000014}.import-textarea{width:100%;height:280px;padding:12px;border-radius:12px;border:1px solid var(--color-border-light);font-size:1rem;background:#fff;resize:vertical}.import-url-input{width:100%;padding:12px;border-radius:12px;border:1px solid var(--color-border-light);font-size:1rem;background:#fff}.import-helper{margin-top:8px;color:var(--color-text-muted);font-size:.9rem}html.dark .import-textarea,html.dark .import-url-input{background:var(--bg-dark-surface);border-color:var(--border-dark-subtle);color:var(--text-dark-primary)}html.dark .import-toggle{background:var(--bg-dark-surface);border-color:var(--border-dark-subtle)}html.dark .import-toggle-btn{color:var(--text-dark-primary)}html.dark .import-toggle-btn.active{background:var(--bg-dark-surface-elevated)}html.dark .import-helper{color:var(--text-dark-secondary)}.import-btn{margin-top:16px;padding:12px;width:100%;background:var(--color-primary);color:#0f172a;border-radius:12px;font-weight:700;border:none;cursor:pointer}.import-btn:disabled{opacity:.6;cursor:not-allowed}.import-image-shell{display:flex;flex-direction:column;gap:10px}.import-image-btn{border:1px solid var(--color-border-light);background:#fff;color:#1f2937;border-radius:12px;padding:10px 12px;font-weight:700;cursor:pointer}.import-image-btn:disabled{opacity:.6;cursor:not-allowed}.import-image-preview{display:flex;align-items:center;gap:10px}.import-image-preview img{width:96px;height:96px;border-radius:12px;object-fit:cover;border:1px solid var(--color-border-light);background:#fff}.import-image-remove{border:1px solid var(--color-border-light);background:#fff;color:#1f2937;border-radius:12px;padding:8px 12px;font-weight:700;cursor:pointer}.error-box{margin-top:12px;padding:10px;background:#fee2e2;color:#991b1b;border-radius:8px}html.dark .import-image-btn,html.dark .import-image-remove{background:var(--bg-dark-surface);border-color:var(--border-dark-subtle);color:var(--text-dark-primary)}html.dark .import-image-preview img{background:var(--bg-dark-surface);border-color:var(--border-dark-subtle)}.bottom-nav-wrapper{position:fixed;bottom:0;left:0;right:0;z-index:50;display:flex;justify-content:center;pointer-events:none;padding:0 12px 10px}.bottom-nav-bar{pointer-events:auto;position:relative;display:grid;grid-template-columns:repeat(4,1fr);align-items:center;padding:10px 14px;background:var(--color-bg-elevated);border:1px solid var(--color-border-light);border-radius:20px;box-shadow:0 14px 32px #1f2a361a;gap:4px;width:100%;max-width:520px}.nav-slider{position:absolute;top:4px;bottom:4px;left:14px;width:calc((100% - 28px)/4);background:var(--color-primary);border-radius:16px;transition:transform .3s ease;z-index:0;pointer-events:none}.nav-item{display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 4px;justify-content:center;border-radius:16px;text-decoration:none;color:var(--nav-icon-inactive);font-size:12px;font-weight:700;position:relative;z-index:1}.nav-item-active{color:var(--nav-icon-active)}.nav-icon{font-size:18px;line-height:1}.nav-date-icon{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:7px;border:2px solid currentColor;font-size:12px;font-weight:800;letter-spacing:-.02em}.nav-recipe-icon{width:20px;height:20px;display:block}.nav-recipe-icon svg{width:100%;height:100%;display:block}.nav-planner-icon{width:20px;height:20px;display:block}.nav-planner-icon svg{width:100%;height:100%;display:block}.nav-settings-icon{width:20px;height:20px;display:block}.nav-settings-icon svg{width:100%;height:100%;display:block}.nav-chat{position:absolute;left:50%;top:-25px;transform:translate(-50%);width:60px;height:60px;border-radius:999px;border:none;background:var(--color-primary);color:#f7f7f2;font-size:20px;display:flex;align-items:center;justify-content:center;box-shadow:0 12px 28px #6f9f7b52;cursor:pointer;transition:transform .15s ease,box-shadow .15s ease}.nav-chat:hover{transform:translate(-50%) translateY(-1px);box-shadow:0 18px 40px #6f9f7b73}html.dark .bottom-nav-bar{background:#10192de6;border-color:var(--border-dark-strong);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:0 18px 46px #0009}html.dark .nav-slider{background:#9fc4a0;box-shadow:0 10px 26px #00000073}html.dark .nav-item{color:#8ea3bf;transition:color .12s ease,transform .12s ease}html.dark .nav-item:hover,html.dark .nav-item-active{color:var(--text-dark-primary)}html.dark .nav-item:active{transform:translateY(1px)}html.dark .nav-chat{background:#9fc4a0;color:#0b1221;box-shadow:0 16px 42px #00000080}html.dark .nav-chat:hover{box-shadow:0 20px 48px #0000008c}*,*:before,*:after{box-sizing:border-box}html,body,#root{margin:0;padding:0;height:100%}body{font-family:system-ui,-apple-system,BlinkMacSystemFont,SF Pro Text,Segoe UI,sans-serif}:root{--color-bg: #f0efe5;--color-bg-elevated: #ffffff;--color-primary: #a4c1a2;--color-secondary: #ffeeda;--color-accent: #f2b487;--color-text-main: #1f2a36;--color-text-muted: #6c7481;--color-border-light: #e1d9cc;--color-border-dark: #2f3a46;--nav-bg: rgba(31, 42, 54, .05);--nav-pill-bg: #ffffff;--nav-icon-inactive: #696969;--nav-icon-active: #f2f2f2;--bottom-nav-clearance: 90px;--chat-bg-user: #a4c1a2;--chat-bg-ai: #fdfaf5;--chip-bg: #e7f7ee;--input-bg: #fff4e5;--cook-step-text-color: #0f172a}html.dark{--bg-dark-page: #0b1221;--bg-dark-surface: #10192d;--bg-dark-surface-elevated: #16243c;--text-dark-primary: #e6edf7;--text-dark-secondary: #9fb1c9;--border-dark-subtle: #1f2c43;--border-dark-strong: #30405c;--shadow-dark-elevated: 0 16px 42px rgba(0, 0, 0, .4);--color-bg: var(--bg-dark-page);--color-bg-elevated: var(--bg-dark-surface-elevated);--color-text-main: var(--text-dark-primary);--color-text-muted: var(--text-dark-secondary);--color-border-light: var(--border-dark-subtle);--color-border-dark: var(--border-dark-strong);--nav-bg: rgba(11, 18, 33, .8);--nav-pill-bg: var(--bg-dark-surface);--nav-icon-inactive: #8095b2;--nav-icon-active: var(--text-dark-primary);--bottom-nav-clearance: 90px;--chat-bg-user: #2ec77d;--chat-bg-ai: var(--bg-dark-surface);--chip-bg: #1b2a44;--input-bg: var(--bg-dark-surface);--cook-step-text-color: #0f172a}body{background-color:var(--color-bg);color:var(--color-text-main)}.app-root{height:100vh;max-width:480px;margin:0 auto;display:flex;flex-direction:column;background:var(--color-bg);border-radius:28px;box-shadow:0 18px 50px #0f172a14;overflow:hidden}.app-content{flex:1;overflow-y:auto;padding:16px 16px 110px}.page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.page-title{font-size:22px;font-weight:700}.page-subtitle{font-size:13px;color:var(--color-text-muted)}.card{background:var(--color-bg-elevated);border-radius:18px;padding:16px;box-shadow:0 14px 40px #0f172a0f;border:1px solid var(--color-border-light)}.card+.card{margin-top:12px}.section-title{font-size:16px;font-weight:600;margin:0 0 8px}.btn{border-radius:999px;padding:10px 18px;border:none;cursor:pointer;font-size:14px;font-weight:500}.btn-primary{background:var(--color-primary);color:#0f172a}.btn-peach{background:var(--color-accent);color:#1f2937}.btn-ghost{background:transparent;border:1px solid var(--color-border-light);color:var(--color-text-main)}.input{width:100%;border-radius:12px;border:1px solid var(--color-border-light);padding:10px 12px;font-size:14px;outline:none;background:var(--input-bg)}.input:focus{border-color:var(--color-primary)}.screen{padding:16px;display:flex;flex-direction:column;gap:12px}.meal-slot{margin-bottom:12px}.meal-slot-label{font-size:13px;font-weight:600;margin-bottom:4px}.meal-slot-body{border-radius:14px;padding:10px 12px;border:1px dashed var(--color-border-light);background:#f8fafce6}.meal-slot-placeholder{font-size:13px;color:var(--color-text-muted)}.meal-slot-title{font-size:14px;font-weight:600}.meal-slot-sub{font-size:12px;color:var(--color-text-muted)}.recipe-card{background:var(--color-bg-elevated);border-radius:18px;padding:14px 14px 10px;border:1px solid var(--color-border-light);box-shadow:0 12px 35px #0f172a0d;margin-bottom:10px;cursor:pointer;transition:transform .1s ease,box-shadow .1s ease}.recipe-card:hover{transform:translateY(-2px);box-shadow:0 16px 45px #0f172a14}.chat-messages{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}.chat-bubble{max-width:80%;padding:10px 12px;border-radius:18px;font-size:14px}.chat-bubble-user{align-self:flex-end;background:var(--chat-bg-user);color:#0f172a;border-radius:18px 18px 4px}.chat-bubble-ai{align-self:flex-start;background:var(--chat-bg-ai);border-radius:18px 18px 18px 4px}.chat-input-wrapper{position:fixed;bottom:88px;left:50%;transform:translate(-50%);max-width:480px;width:100%;padding:0 16px 8px}.chat-input-inner{display:flex;gap:8px;background:var(--color-bg-elevated);padding:6px;border-radius:999px;border:1px solid var(--color-border-light)}.tag{display:inline-block;padding:4px 10px;border-radius:999px;background-color:var(--color-accent);color:#1f2933;font-size:12px;font-weight:500;margin-right:6px;margin-bottom:6px}.soft-card{background:var(--color-bg-elevated);border:1px solid var(--color-border-light);box-shadow:0 14px 40px #1f2a3614}.list-stack{display:flex;flex-direction:column;gap:10px}.block-btn{width:100%}.muted{color:var(--color-text-muted);font-size:14px}.stack{display:flex;flex-direction:column}.gap-sm{gap:10px}.today-page{padding:16px;display:flex;flex-direction:column;gap:12px}.today-header{display:flex;align-items:center;justify-content:space-between}.today-title{font-size:26px;font-weight:700;color:var(--color-text-main)}.date-pill{background:var(--color-primary);color:#f7f7f2;border-radius:18px;padding:30px;font-weight:700;text-align:center;font-size:18px}.date-pill.date-pill-nav{display:flex;align-items:center;justify-content:space-between;gap:12px}.date-pill-btn{border:none;background:#fff3;color:#f7f7f2;width:36px;height:36px;border-radius:12px;cursor:pointer;font-weight:700;display:inline-flex;align-items:center;justify-content:center;box-shadow:0 10px 22px #0a18242e;transition:transform .2s ease,background .2s ease,box-shadow .2s ease}.date-pill-btn:hover{background:#ffffff47;transform:translateY(-1px);box-shadow:0 12px 26px #0a18243d}.date-pill-btn:active{transform:translateY(0);box-shadow:0 8px 16px #0a182433}.date-pill-icon{width:20px;height:20px}.date-pill-icon-prev{transform:rotate(180deg)}.date-pill-label{flex:1;text-align:center}.meal-list{display:flex;flex-direction:column;gap:8px}.meal-card{display:flex;align-items:center;gap:14px;background:#fff;border-radius:18px;padding:12px 14px;border:1px solid var(--color-border-light);box-shadow:0 12px 35px #1f2a360f}.meal-icon{width:44px;height:44px;border-radius:12px;background:#6f9f7b33;display:flex;align-items:center;justify-content:center;font-size:20px}.meal-label{font-size:17px;font-weight:600;color:var(--color-text-main)}.ai-card{background:#f8e6d5;border-radius:18px;padding:14px 16px;border:1px solid #f0d7be}.ai-card-title{font-weight:700;color:var(--color-text-main);margin-bottom:4px}.ai-card-sub{color:var(--color-text-muted);font-size:14px}.chat-page{padding:16px 16px 70px}.chat-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.chat-header-text{text-align:center}.chat-title{font-size:22px;font-weight:700}.chat-subtitle{font-size:13px;color:var(--color-text-muted)}.icon-btn{border:none;background:transparent;font-size:18px;cursor:pointer;color:var(--color-text-main)}.chat-body{display:flex;flex-direction:column;gap:12px}.prompt-pill{background:var(--color-primary);color:#f7f7f2;padding:14px 16px;border-radius:18px;font-weight:600}.chat-card{background:var(--color-bg-elevated);border:1px solid var(--color-border-light);border-radius:20px;padding:16px;box-shadow:0 14px 40px #0f172a0f}.chat-card-title{display:flex;align-items:center;gap:10px;font-weight:700;font-size:18px;margin-bottom:6px}.chat-card-emoji{font-size:22px}.chat-card-heading{color:var(--color-text-main)}.chat-meta{color:var(--color-text-muted);font-size:14px;display:flex;flex-direction:column;gap:4px;margin-bottom:10px}.chat-section{margin-top:12px}.chat-section-title{font-weight:700;margin-bottom:6px}.chat-list{margin:0;padding-left:18px;color:var(--color-text-main)}.chat-card-actions{display:flex;gap:10px;margin-top:14px}.chip-row{display:flex;gap:8px;flex-wrap:wrap}.chip{border:none;background:var(--chip-bg);color:#1f2a36;border-radius:14px;padding:8px 12px;font-weight:600;font-size:13px;cursor:pointer}.chat-input-bar{position:fixed;bottom:12px;left:50%;transform:translate(-50%);width:100%;max-width:480px;display:flex;align-items:center;gap:8px;padding:0 16px}.chat-input{flex:1;border-radius:16px;border:1px solid var(--color-border-light);background:var(--input-bg);padding:12px 14px;font-size:14px;outline:none}.chat-input:focus{border-color:var(--color-primary)}.filter-row{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}.chip-active{background:#6f9f7b38;color:#1f2a36}.recipe-detail-title{display:flex;align-items:center;gap:8px;font-weight:700}.recipe-emoji{font-size:26px}.meta-row{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:10px}.meta-item{background:var(--color-bg);border-radius:12px;padding:10px;text-align:center;border:1px solid var(--color-border-light)}.meta-label{display:block;font-size:12px;color:var(--color-text-muted)}.meta-value{font-weight:700;color:var(--color-text-main)}.tag-row{display:flex;flex-wrap:wrap;gap:6px}.divider{height:1px;background:var(--color-border-light);margin:12px 0}.section-block{display:flex;flex-direction:column;gap:6px}.section-label{font-weight:700;color:var(--color-text-main)}.simple-list{margin:0;padding-left:18px;color:var(--color-text-main);display:grid;gap:4px}.cta-row{display:flex;gap:10px;margin-top:14px}.planner-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.planner-week-label{font-weight:700}.planner-week{display:flex;flex-direction:column;gap:12px}.planner-day{border:1px solid var(--color-border-light);border-radius:16px;padding:10px;background:var(--color-bg)}.planner-day-head{display:flex;align-items:center;gap:8px;margin-bottom:6px}.planner-day-label{font-weight:700}.planner-slots{display:grid;gap:8px}.planner-slot{background:#fff;border-radius:12px;border:1px dashed var(--color-border-light);padding:10px 12px}.planner-slot-label{font-weight:600;margin-bottom:2px}.planner-slot-empty{color:var(--color-text-muted);font-size:13px}.settings-card{background:#fff;border:1px solid var(--color-border-light);border-radius:16px;padding:12px 14px;box-shadow:0 12px 35px #1f2a3612;display:flex;align-items:center;justify-content:space-between;text-align:left;cursor:pointer}.settings-text{display:flex;flex-direction:column;gap:4px}.settings-title{font-weight:700;color:var(--color-text-main)}.settings-desc{color:var(--color-text-muted);font-size:13px}.settings-arrow{font-weight:700;color:var(--color-text-muted)}.pill-list{display:flex;flex-wrap:wrap;gap:8px}.pill{display:inline-flex;align-items:center;gap:8px;background:var(--color-bg);border:1px solid var(--color-border-light);border-radius:14px;padding:8px 10px;box-shadow:0 8px 25px #1f2a360f}.pill-remove{border:none;background:transparent;color:var(--color-text-muted);cursor:pointer}.id-block{margin-top:10px;padding:12px;border-radius:12px;background:var(--input-bg);font-family:monospace;font-size:14px;border:1px dashed var(--color-border-light)}html.dark{color-scheme:dark}html.dark body{background-color:var(--bg-dark-page);color:var(--text-dark-secondary)}html.dark .app-root,html.dark .app-content,html.dark .screen,html.dark .today-page,html.dark .chat-page{background:var(--bg-dark-page)}html.dark p,html.dark label,html.dark .page-subtitle,html.dark .chat-subtitle,html.dark .chat-meta,html.dark .muted,html.dark .meal-slot-placeholder,html.dark .planner-slot-empty,html.dark .settings-desc,html.dark .meal-slot-sub,html.dark .meta-label,html.dark .divider{color:var(--text-dark-secondary)}html.dark h1,html.dark h2,html.dark h3,html.dark h4,html.dark h5,html.dark h6,html.dark .page-title,html.dark .section-title,html.dark .today-title,html.dark .planner-week-label,html.dark .planner-day-label,html.dark .planner-slot-label,html.dark .meal-slot-label,html.dark .meal-label,html.dark .chat-title,html.dark .chat-card-heading,html.dark .chat-section-title,html.dark .settings-title,html.dark .section-label,html.dark .recipe-title{color:var(--text-dark-primary)}html.dark .card,html.dark .soft-card,html.dark .planner-card,html.dark .planner-day,html.dark .settings-card,html.dark .chat-card{background:var(--bg-dark-surface);border-color:var(--border-dark-strong);box-shadow:var(--shadow-dark-elevated)}html.dark .recipe-card,html.dark .meal-card,html.dark .planner-slot,html.dark .meal-slot-body,html.dark .meta-item,html.dark .ai-card,html.dark .today-meal-card,html.dark .pill,html.dark .tag,html.dark .pill-list .pill{background:var(--bg-dark-surface-elevated);border-color:var(--border-dark-subtle);box-shadow:var(--shadow-dark-elevated);color:var(--text-dark-primary)}html.dark .chat-input-inner,html.dark .chat-input,html.dark .input,html.dark .id-block{background:var(--bg-dark-surface);border-color:var(--border-dark-subtle);box-shadow:var(--shadow-dark-elevated);color:var(--text-dark-primary)}html.dark .today-meal-actions button,html.dark .today-meal-menu-btn{background:var(--bg-dark-surface);border-color:var(--border-dark-subtle);color:var(--text-dark-primary)}html.dark .today-servings-adjust{border-top:1px solid var(--border-dark-subtle);padding-top:8px}html.dark .today-servings-label{color:var(--text-dark-primary)}html.dark .today-servings-control{border-color:var(--border-dark-subtle)}html.dark .today-meal-empty{background:var(--bg-dark-surface);border-color:var(--border-dark-subtle);color:var(--text-dark-secondary)}html.dark .today-meal-empty-label{color:var(--text-dark-primary)}html.dark .today-meal-empty-sub{color:var(--text-dark-secondary)}html.dark .meal-slot-body,html.dark .planner-slot{border-style:dashed}html.dark .meal-title{color:var(--text-dark-primary)}html.dark .today-meal-text{color:var(--text-dark-secondary)}html.dark .folder-row{background:var(--bg-dark-surface);border-color:var(--border-dark-subtle);color:var(--text-dark-primary)}html.dark .folder-row-name{color:var(--text-dark-primary)}html.dark .folder-row-sub{color:var(--text-dark-secondary)}html.dark .folder-row:hover{border-color:var(--border-dark-strong)}html.dark .folder-card{background:var(--bg-dark-surface);border-color:var(--border-dark-subtle);color:var(--text-dark-primary)}html.dark .folder-card:hover{border-color:var(--border-dark-strong)}html.dark .folder-name{color:var(--text-dark-primary)}html.dark .folder-meta{color:var(--text-dark-secondary)}html.dark .divider{background:var(--border-dark-subtle)}html.dark ::placeholder{color:var(--text-dark-secondary);opacity:.85}html.dark .recipes-search-card{background:var(--bg-dark-surface);border-color:var(--border-dark-subtle)}html.dark .search-input,html.dark .tag-search-input{background:var(--input-bg);border-color:var(--border-dark-subtle);color:var(--text-dark-primary);box-shadow:inset 0 0 0 1px #ffffff05}html.dark .btn{color:var(--text-dark-primary);box-shadow:none;transition:transform .12s ease,background-color .12s ease,border-color .12s ease}html.dark .btn:not(.btn-primary):not(.btn-peach):not(.btn-ghost){background:var(--bg-dark-surface-elevated);border:1px solid var(--border-dark-subtle)}html.dark .btn:not(.btn-primary):not(.btn-peach):not(.btn-ghost):hover{background:var(--bg-dark-surface);border-color:var(--border-dark-strong)}html.dark .btn-primary{background:#b2d1b1;color:#0c1827;border:1px solid #8ab090;box-shadow:0 12px 28px #0000005c}html.dark .btn-primary:hover{background:#c1daba;border-color:#9bc29c}html.dark .btn-primary:active{background:#a1c59c;transform:translateY(1px)}html.dark .btn-peach{background:#f4ba8f;color:#0f172a;border:1px solid #dca277;box-shadow:0 12px 28px #00000052}html.dark .btn-peach:hover{background:#f6c69f;border-color:#e0ac86}html.dark .btn-ghost{background:var(--bg-dark-surface);color:var(--text-dark-primary);border:1px solid var(--border-dark-strong)}html.dark .btn-ghost:hover{background:var(--bg-dark-surface-elevated);border-color:var(--border-dark-strong)}html.dark .btn-ghost:active,html.dark .btn:active{transform:translateY(1px)}html.dark .btn:focus-visible,html.dark .icon-btn:focus-visible,html.dark .planner-slot-delete:focus-visible,html.dark .planner-slot-drag:focus-visible,html.dark .pill-remove:focus-visible,html.dark .input:focus-visible,html.dark .chat-input:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px;box-shadow:0 0 0 2px #92be9740}html.dark .icon-btn,html.dark .planner-slot-delete,html.dark .planner-slot-drag,html.dark .pill-remove{color:var(--text-dark-secondary);transition:color .15s ease,background .15s ease,border-color .15s ease}html.dark .planner-slot-drag{background:var(--bg-dark-surface);border-color:var(--border-dark-subtle);color:var(--text-dark-primary);box-shadow:inset 0 0 0 1px #ffffff08}html.dark .icon-btn:hover,html.dark .planner-slot-delete:hover,html.dark .planner-slot-drag:hover,html.dark .pill-remove:hover{color:var(--text-dark-primary);background:#ffffff08;border-color:var(--border-dark-strong)}html.dark .planner-slot-delete{border-color:var(--border-dark-subtle)}html.dark .recipe-emoji,html.dark .chat-card-emoji,html.dark .planner-day-icon,html.dark .meal-icon{opacity:.9;color:var(--text-dark-primary)}html.dark .card,html.dark .recipe-card,html.dark .meal-card,html.dark .today-meal-card,html.dark .planner-slot,html.dark .settings-card,html.dark .chat-card{transition:transform .12s ease,background-color .12s ease,border-color .12s ease}html.dark .recipe-card:hover,html.dark .meal-card:hover,html.dark .today-meal-card:hover,html.dark .planner-slot:hover,html.dark .settings-card:hover,html.dark .chat-card:hover,html.dark .card:hover{transform:translateY(-1px);border-color:var(--border-dark-strong)}html.dark .recipe-card:active,html.dark .meal-card:active,html.dark .today-meal-card:active,html.dark .planner-slot:active,html.dark .settings-card:active,html.dark .chat-card:active,html.dark .card:active{transform:translateY(1px);background:var(--bg-dark-surface)}html.dark .planner-day{transition:border-color .12s ease,background-color .12s ease,transform .12s ease}html.dark .planner-day:hover{border-color:var(--border-dark-strong)}html.dark .planner-day:focus-within,html.dark .planner-day.active{border-color:var(--border-dark-strong);background:var(--bg-dark-surface-elevated)}html.dark .chip{transition:background-color .12s ease,border-color .12s ease,color .12s ease,transform .12s ease}html.dark .chip:hover{transform:translateY(-1px)}html.dark .chip-active{background:var(--bg-dark-surface-elevated);color:var(--text-dark-primary);border:1px solid var(--border-dark-strong);box-shadow:none}html.dark .chat-bubble-user,html.dark .chat-bubble-ai{transition:transform .12s ease,background-color .12s ease,border-color .12s ease}html.dark .chat-bubble-user:hover,html.dark .chat-bubble-ai:hover{transform:translateY(-1px)}html.dark .chat-bubble-user:active,html.dark .chat-bubble-ai:active{transform:translateY(1px);background:#ffffff0a}.fade-in{animation:fade-in .25s ease-out}@keyframes fade-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}
