.meal-card[data-v-c330d08e]{background:var(--bg-card);border:1.5px solid var(--border);border-radius:var(--radius);padding:0;transition:border-color var(--transition),box-shadow var(--transition),transform var(--transition);position:relative;overflow:hidden}.meal-card[data-v-c330d08e]:hover{border-color:#d4c4b0;box-shadow:var(--shadow-sm)}.meal-card.has-plan[data-v-c330d08e]{border-color:#e8ddd0}.meal-card.has-plan[data-v-c330d08e]:hover{box-shadow:var(--shadow-md);transform:translateY(-1px)}.meal-card.is-done[data-v-c330d08e]{background:linear-gradient(135deg,var(--bg-card) 0%,var(--bg-done) 100%);border-color:#c8e6c9}.meal-card.is-skipped[data-v-c330d08e]{opacity:.7}.meal-card__accent[data-v-c330d08e]{position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--border);transition:background var(--transition)}.meal-card.has-plan .meal-card__accent[data-v-c330d08e]{background:linear-gradient(180deg,var(--accent-alt),var(--accent))}.meal-card.is-done .meal-card__accent[data-v-c330d08e]{background:var(--green)}.meal-card__header[data-v-c330d08e]{display:flex;align-items:center;justify-content:space-between;padding:16px 20px 12px 24px}.meal-card__title[data-v-c330d08e]{display:flex;align-items:center;gap:8px}.meal-icon[data-v-c330d08e]{font-size:1.1rem;line-height:1}.meal-card__body[data-v-c330d08e]{padding:0 20px 14px 24px}.dish-list[data-v-c330d08e]{display:flex;flex-direction:column;gap:8px}.dish-item[data-v-c330d08e]{display:flex;align-items:baseline;gap:8px}.dish-name[data-v-c330d08e]{font-family:var(--font-serif);font-size:1.15rem;font-weight:600;color:var(--ink);line-height:1.3}.dish-remark[data-v-c330d08e]{font-size:.8rem;color:var(--ink-muted);font-style:italic}.dish-remark[data-v-c330d08e]:before{content:"· ";font-style:normal}.dish-placeholder[data-v-c330d08e]{font-size:.9rem;color:var(--ink-muted);font-style:italic;padding:4px 0}.empty-text[data-v-c330d08e]{font-size:.9rem;color:var(--ink-muted);padding:4px 0}.meal-card__actions[data-v-c330d08e]{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px 20px 16px 24px;border-top:1px solid var(--border)}.actions-left[data-v-c330d08e]{display:flex;align-items:center;gap:8px}.actions-right[data-v-c330d08e]{display:flex;align-items:center;gap:4px;opacity:0;transition:opacity var(--transition)}.meal-card:hover .actions-right[data-v-c330d08e]{opacity:1}@media (hover: none){.actions-right[data-v-c330d08e]{opacity:1}}.action-primary[data-v-c330d08e]{font-size:.85rem;padding:7px 16px}.done-link[data-v-c330d08e]{display:inline-flex;align-items:center;gap:6px;font-size:.85rem;color:var(--green);font-weight:600;text-decoration:none;padding:4px 0;transition:opacity var(--transition)}.done-link[data-v-c330d08e]:hover{opacity:.75}.done-check[data-v-c330d08e]{width:18px;height:18px;background:var(--green);color:#fff;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:.7rem;font-weight:700}.icon-btn[data-v-c330d08e]{display:inline-flex;align-items:center;gap:4px;background:none;border:1.5px solid var(--border);border-radius:8px;padding:5px 10px;cursor:pointer;font-size:.8rem;color:var(--ink-muted);transition:all var(--transition);white-space:nowrap}.icon-btn[data-v-c330d08e]:hover{border-color:var(--accent);color:var(--accent);background:var(--bg-warm)}.icon-btn[data-v-c330d08e]:active{transform:scale(.96)}.icon-btn[data-v-c330d08e]:disabled{cursor:default;opacity:.5}.icon-btn-emoji[data-v-c330d08e]{font-size:.85rem;line-height:1}.icon-btn-text[data-v-c330d08e]{font-size:.75rem;font-weight:600}.dish-edit-list[data-v-c330d08e]{display:flex;flex-direction:column;gap:8px;width:100%}.dish-edit-row[data-v-c330d08e]{display:flex;align-items:flex-start;gap:8px}.dish-edit-inputs[data-v-c330d08e]{flex:1;display:flex;flex-direction:column;gap:6px}.dish-input[data-v-c330d08e]{width:100%}.remark-input[data-v-c330d08e]{width:100%;font-size:.85rem}.remove-btn[data-v-c330d08e]{background:none;border:1.5px solid var(--border);border-radius:50%;width:28px;height:28px;cursor:pointer;font-size:1.1rem;color:var(--ink-muted);display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:6px;transition:all var(--transition)}.remove-btn[data-v-c330d08e]:hover{color:#b91c1c;border-color:#fca5a5;background:#fff0ee}.add-dish-btn[data-v-c330d08e]{display:inline-flex;align-items:center;gap:6px;background:none;border:1.5px dashed var(--border);border-radius:var(--radius-sm);padding:8px 14px;cursor:pointer;font-size:.85rem;color:var(--ink-muted);transition:all var(--transition);width:100%;justify-content:center}.add-dish-btn[data-v-c330d08e]:hover{border-color:var(--accent);color:var(--accent);background:var(--bg-warm)}.add-dish-icon[data-v-c330d08e]{font-size:1rem;font-weight:700;line-height:1}.edit-actions[data-v-c330d08e]{display:flex;gap:8px;margin-top:12px}@media (max-width: 480px){.meal-card__header[data-v-c330d08e]{padding:14px 16px 10px 20px}.meal-card__body[data-v-c330d08e]{padding:0 16px 12px 20px}.meal-card__actions[data-v-c330d08e]{padding:10px 16px 14px 20px;flex-wrap:wrap}.actions-right[data-v-c330d08e]{opacity:1;width:100%;justify-content:flex-end;margin-top:4px}.dish-edit-row[data-v-c330d08e]{flex-direction:column}.remove-btn[data-v-c330d08e]{align-self:flex-end;margin-top:0}}.empty-state[data-v-ea25dcf4]{text-align:center;padding:48px 24px}.empty-icon[data-v-ea25dcf4]{font-size:3rem;display:block;margin-bottom:12px}.empty-title[data-v-ea25dcf4]{font-family:var(--font-serif);font-size:1.1rem;font-weight:600;color:var(--ink);margin-bottom:6px}.empty-hint[data-v-ea25dcf4]{font-size:.85rem;color:var(--ink-muted);line-height:1.6}.skeleton[data-v-23425dc0]{display:flex;gap:12px;padding:16px}.skeleton-card[data-v-23425dc0]{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:24px}.skeleton-avatar[data-v-23425dc0]{width:40px;height:40px;border-radius:50%;background:var(--border);flex-shrink:0;animation:shimmer-23425dc0 1.5s ease-in-out infinite}.skeleton-lines[data-v-23425dc0]{flex:1;display:flex;flex-direction:column;gap:10px}.skeleton-line[data-v-23425dc0]{height:14px;border-radius:6px;background:var(--border);animation:shimmer-23425dc0 1.5s ease-in-out infinite}.skeleton-line[data-v-23425dc0]:nth-child(2){animation-delay:.15s}.skeleton-line[data-v-23425dc0]:nth-child(3){animation-delay:.3s}@keyframes shimmer-23425dc0{0%,to{opacity:.4}50%{opacity:.8}}.home[data-v-b3537584]{padding-top:4px}.pull-indicator[data-v-b3537584]{display:flex;align-items:center;justify-content:center;gap:6px;padding:8px 0;color:var(--ink-muted);font-size:.8rem}.pull-icon[data-v-b3537584]{transition:transform .2s ease}.pull-ready[data-v-b3537584]{color:var(--accent);transform:rotate(180deg)}.pull-text[data-v-b3537584]{font-weight:500}.home-header[data-v-b3537584]{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:24px;gap:16px;padding-bottom:20px;border-bottom:1px solid var(--border)}.home-greeting[data-v-b3537584]{font-family:var(--font-serif);font-size:1.6rem;font-weight:700;color:var(--ink);line-height:1.2;letter-spacing:-.01em}.home-subtitle[data-v-b3537584]{font-family:var(--font-serif);font-size:1.1rem;color:var(--ink-soft);margin-top:4px;font-weight:400}.generate-btn[data-v-b3537584]{flex-shrink:0;padding:10px 22px;font-size:.9rem;box-shadow:var(--shadow-sm)}.generate-btn[data-v-b3537584]:hover{box-shadow:var(--shadow-md)}@media (max-width: 480px){.home-header[data-v-b3537584]{flex-direction:column;align-items:flex-start}.generate-btn[data-v-b3537584]{width:100%;justify-content:center}.home-greeting[data-v-b3537584]{font-size:1.35rem}.home-subtitle[data-v-b3537584]{font-size:1rem}}.date-nav[data-v-b3537584]{display:flex;align-items:center;gap:6px;margin-bottom:20px;position:relative}.date-nav-btn[data-v-b3537584]{background:var(--bg-card);border:1.5px solid var(--border);border-radius:10px;width:44px;height:44px;font-size:1.2rem;cursor:pointer;color:var(--ink-soft);display:flex;align-items:center;justify-content:center;transition:all var(--transition);flex-shrink:0}.date-nav-btn[data-v-b3537584]:hover{border-color:var(--accent);color:var(--accent);background:var(--bg-warm)}.date-nav-btn[data-v-b3537584]:active{transform:scale(.95)}.date-nav-center[data-v-b3537584]{flex:1;display:flex;align-items:baseline;gap:8px;padding:6px 12px;background:var(--bg-card);border:1.5px solid var(--border);border-radius:10px;min-height:36px}.date-nav-label[data-v-b3537584]{font-family:var(--font-serif);font-size:.95rem;font-weight:600;color:var(--ink)}.date-nav-weekday[data-v-b3537584]{font-size:.8rem;color:var(--ink-muted)}.date-today-btn[data-v-b3537584]{position:absolute;right:44px;font-size:.75rem;font-weight:600;background:var(--bg-warm);border:1.5px solid var(--accent);color:var(--accent);border-radius:99px;padding:4px 12px;cursor:pointer;white-space:nowrap;transition:all var(--transition)}.date-today-btn[data-v-b3537584]:hover{background:var(--accent);color:#fff}.pill-enter-active[data-v-b3537584],.pill-leave-active[data-v-b3537584]{transition:all .25s ease}.pill-enter-from[data-v-b3537584],.pill-leave-to[data-v-b3537584]{opacity:0;transform:translate(8px) scale(.9)}.error-banner[data-v-b3537584]{display:flex;align-items:center;gap:10px;background:var(--bg-error);border:1.5px solid var(--border-error);color:var(--ink-error);border-radius:var(--radius-sm);padding:12px 16px;font-size:.875rem;margin-bottom:16px}.error-icon[data-v-b3537584]{width:20px;height:20px;background:var(--ink-error);color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:700;flex-shrink:0}.meals-grid[data-v-b3537584]{display:flex;flex-direction:column;gap:14px}.meal-card-enter[data-v-b3537584]{animation:cardSlideIn-b3537584 .4s ease both}@keyframes cardSlideIn-b3537584{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.progress-card[data-v-b3537584]{margin-top:20px;padding:18px 20px;background:linear-gradient(135deg,var(--bg-card) 0%,var(--bg-warm) 100%);border-color:transparent}.progress-header[data-v-b3537584]{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:12px}.progress-title[data-v-b3537584]{font-size:.85rem;color:var(--ink-muted);font-weight:500}.progress-count[data-v-b3537584]{font-family:var(--font-serif);font-size:1.1rem;font-weight:700;color:var(--ink)}.progress-sep[data-v-b3537584]{color:var(--ink-muted);font-weight:400;margin:0 2px}.progress-bar[data-v-b3537584]{height:8px;background:var(--border);border-radius:99px;overflow:hidden}.progress-fill[data-v-b3537584]{height:100%;background:linear-gradient(90deg,var(--accent-alt),var(--accent));border-radius:99px;transition:width .5s cubic-bezier(.4,0,.2,1);position:relative;overflow:hidden}.fade-enter-active[data-v-b3537584],.fade-leave-active[data-v-b3537584]{transition:opacity .25s ease}.fade-enter-from[data-v-b3537584],.fade-leave-to[data-v-b3537584]{opacity:0}.toast-stack[data-v-cb3b8aa3]{position:fixed;top:16px;right:16px;z-index:500;display:flex;flex-direction:column;gap:8px;pointer-events:none;max-width:360px}.toast-item[data-v-cb3b8aa3]{display:flex;align-items:center;gap:10px;padding:12px 16px;background:var(--bg-card);border-radius:var(--radius);box-shadow:var(--shadow-md);pointer-events:auto;cursor:pointer;border-left:4px solid var(--border);transition:background-color .35s ease,border-color .35s ease}.toast-success[data-v-cb3b8aa3]{border-left-color:var(--green)}.toast-success .toast-icon[data-v-cb3b8aa3]{color:var(--green)}.toast-error[data-v-cb3b8aa3]{border-left-color:var(--ink-error)}.toast-error .toast-icon[data-v-cb3b8aa3]{color:var(--ink-error)}.toast-warning[data-v-cb3b8aa3]{border-left-color:var(--accent-alt)}.toast-warning .toast-icon[data-v-cb3b8aa3]{color:var(--accent-alt)}.toast-info[data-v-cb3b8aa3]{border-left-color:var(--ink-badge-cool)}.toast-info .toast-icon[data-v-cb3b8aa3]{color:var(--ink-badge-cool)}.toast-icon[data-v-cb3b8aa3]{flex-shrink:0}.toast-msg[data-v-cb3b8aa3]{font-size:.875rem;color:var(--ink);line-height:1.4}.toast-enter-active[data-v-cb3b8aa3]{transition:all .4s cubic-bezier(.175,.885,.32,1.275)}.toast-leave-active[data-v-cb3b8aa3]{transition:all .25s ease}.toast-enter-from[data-v-cb3b8aa3]{opacity:0;transform:translate(80px) scale(.9)}.toast-leave-to[data-v-cb3b8aa3]{opacity:0;transform:translate(40px)}.toast-move[data-v-cb3b8aa3]{transition:transform .3s ease}@media (max-width: 600px){.toast-stack[data-v-cb3b8aa3]{top:auto;bottom:80px;left:16px;right:16px;max-width:none}.toast-enter-from[data-v-cb3b8aa3]{transform:translateY(40px) scale(.9)}.toast-leave-to[data-v-cb3b8aa3]{transform:translateY(20px)}}.nav-user{display:flex;align-items:center;gap:6px;margin-left:auto;flex-shrink:0}.nav-username{font-size:.8rem;color:var(--ink-muted);max-width:80px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-decoration:none;transition:color var(--transition);display:none}.nav-username:hover{color:var(--accent)}.nav-logout{width:32px;height:32px;background:none;border:1.5px solid var(--border);border-radius:50%;color:var(--ink-muted);cursor:pointer;transition:all var(--transition);display:flex;align-items:center;justify-content:center;flex-shrink:0}.nav-logout:hover{border-color:var(--accent);color:var(--accent);background:var(--bg-warm)}.nav-links{display:none}.nav{display:flex;align-items:center;justify-content:space-between;padding:14px 0 16px;border-bottom:1px solid var(--border);margin-bottom:20px}.nav-logo{font-family:var(--font-serif);font-size:1.2rem;font-weight:700;color:var(--ink);text-decoration:none;display:flex;align-items:center;gap:8px;flex-shrink:0}.logo-icon{font-size:1.3rem;line-height:1}.logo-text{color:var(--accent)}.fade-enter-active,.fade-leave-active{transition:opacity .2s ease}.slide-left-enter-active,.slide-left-leave-active{transition:all .25s ease}.slide-left-enter-from{opacity:0;transform:translate(20px)}.slide-left-leave-to{opacity:0;transform:translate(-20px)}.slide-up-enter-active,.slide-up-leave-active{transition:all .25s ease}.slide-up-enter-from{opacity:0;transform:translateY(16px)}.slide-up-leave-to{opacity:0;transform:translateY(-16px)}.bottom-nav{display:flex;position:fixed;bottom:0;left:0;right:0;background:#faf7f2d9;border-top:1px solid var(--border);z-index:100;padding-bottom:env(safe-area-inset-bottom,0px);box-shadow:0 -2px 16px #321e0a0f;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.bottom-nav-item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:8px 2px 6px;text-decoration:none;color:var(--ink-muted);transition:color var(--transition);-webkit-tap-highlight-color:transparent;position:relative}.bottom-nav-item.active{color:var(--accent)}.bottom-nav-item.active:before{content:"";position:absolute;top:0;left:50%;transform:translate(-50%);width:20px;height:2.5px;background:var(--accent);border-radius:0 0 2px 2px}.bottom-nav-icon{line-height:1;transition:transform var(--transition)}.bottom-nav-item.active .bottom-nav-icon{transform:scale(1.1)}.bottom-nav-label{font-size:.6rem;font-weight:500;white-space:nowrap}@media (prefers-color-scheme: dark){.bottom-nav{background:#1a1208e0}}@media (min-width: 601px){.nav-links{display:flex;border-left:1.5px solid var(--border);padding-left:16px;margin-left:4px;gap:2px}.nav-username{display:inline}.nav{padding:20px 0 24px;margin-bottom:28px}.bottom-nav{display:none}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #faf7f2;--bg-card: #ffffff;--bg-warm: #fff8ee;--bg-done: #f2faf4;--bg-skipped: #f7f7f8;--ink: #1a1208;--ink-soft: #5a4a35;--ink-muted: #9e8e78;--accent: #d4501a;--accent-alt: #e8a030;--green: #3a7d44;--border: #ede5d8;--shadow-sm: 0 2px 8px rgba(50,30,10,.07);--shadow-md: 0 6px 24px rgba(50,30,10,.1);--bg-error: #fff0ee;--border-error: #fca5a5;--ink-error: #b91c1c;--bg-badge-warm: #fef3c7;--ink-badge-warm: #92400e;--bg-badge-cool: #e0e7ff;--ink-badge-cool: #3730a3;--bg-badge-green: #f0fdf4;--ink-badge-green: #166534;--border-badge-green: #bbf7d0;--radius: 14px;--radius-sm: 8px;--font-serif: "Noto Serif SC", serif;--font-sans: "DM Sans", sans-serif;--transition: .18s ease}html.dark{--bg: #1a1510;--bg-card: #241e17;--bg-warm: #2a2118;--bg-done: #182a1c;--bg-skipped: #1e1e22;--ink: #f0e8d8;--ink-soft: #c8b898;--ink-muted: #8a7a65;--accent: #e86030;--accent-alt: #f0b040;--green: #4a9d5a;--border: #3a2e22;--shadow-sm: 0 2px 8px rgba(0,0,0,.3);--shadow-md: 0 6px 24px rgba(0,0,0,.4);--bg-error: #3a1a15;--border-error: #7f1d1d;--ink-error: #fca5a5;--bg-badge-warm: #3d2800;--ink-badge-warm: #f0a030;--bg-badge-cool: #1e1b4b;--ink-badge-cool: #a5b4fc;--bg-badge-green: #052e16;--ink-badge-green: #86efac;--border-badge-green: #166534}html.dark .badge-planned{background:#3d2800;color:#f0a030}html.dark .badge-done{background:#1a3020;color:#5cb870}html.dark .badge-skipped{background:#2a2a2a;color:#888}html.dark .star,html.dark .star-sm{color:#444}html.dark .input{background:var(--bg-card)}html.dark .input:focus{background:var(--bg-warm)}@media (prefers-color-scheme: dark){:root:not(.light){--bg: #1a1510;--bg-card: #241e17;--bg-warm: #2a2118;--bg-done: #182a1c;--bg-skipped: #1e1e22;--ink: #f0e8d8;--ink-soft: #c8b898;--ink-muted: #8a7a65;--accent: #e86030;--accent-alt: #f0b040;--green: #4a9d5a;--border: #3a2e22;--shadow-sm: 0 2px 8px rgba(0,0,0,.3);--shadow-md: 0 6px 24px rgba(0,0,0,.4);--bg-error: #3a1a15;--border-error: #7f1d1d;--ink-error: #fca5a5;--bg-badge-warm: #3d2800;--ink-badge-warm: #f0a030;--bg-badge-cool: #1e1b4b;--ink-badge-cool: #a5b4fc;--bg-badge-green: #052e16;--ink-badge-green: #86efac;--border-badge-green: #166534}:root:not(.light) .badge-planned{background:#3d2800;color:#f0a030}:root:not(.light) .badge-done{background:#1a3020;color:#5cb870}:root:not(.light) .badge-skipped{background:#2a2a2a;color:#888}:root:not(.light) .star,:root:not(.light) .star-sm{color:#444}:root:not(.light) .input{background:var(--bg-card)}:root:not(.light) .input:focus{background:var(--bg-warm)}}html{font-size:16px;scroll-behavior:smooth}body{font-family:var(--font-sans);background:var(--bg);color:var(--ink);min-height:100vh;-webkit-font-smoothing:antialiased}body,.card,.btn,.input,.bottom-nav,.nav,.confirm-overlay,.confirm-card{transition:background-color .35s ease,color .35s ease,border-color .35s ease,box-shadow .35s ease}.app-shell{max-width:680px;margin:0 auto;padding:0 20px calc(64px + env(safe-area-inset-bottom,0px))}@media (min-width: 601px){.app-shell{padding-bottom:80px}}.nav{display:flex;align-items:center;justify-content:space-between;padding:20px 0 24px;border-bottom:1px solid var(--border);margin-bottom:28px}.nav-logo{font-family:var(--font-serif);font-size:1.25rem;font-weight:700;color:var(--ink);text-decoration:none;display:flex;align-items:center;gap:8px}.nav-logo span{color:var(--accent)}.nav-links{display:flex;gap:4px}.nav-link{font-size:.875rem;font-weight:500;color:var(--ink-soft);text-decoration:none;padding:6px 12px;border-radius:99px;transition:background var(--transition),color var(--transition)}.nav-link:hover,.nav-link.active{background:var(--bg-warm);color:var(--accent)}.card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:24px;box-shadow:var(--shadow-sm)}.btn{display:inline-flex;align-items:center;gap:6px;font-family:var(--font-sans);font-size:.9rem;font-weight:600;padding:10px 20px;border-radius:99px;border:none;cursor:pointer;transition:all var(--transition);white-space:nowrap}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{background:#b84015;transform:translateY(-1px);box-shadow:var(--shadow-md)}.btn:active{transform:scale(.97)}.btn-ghost{background:transparent;color:var(--ink-soft);border:1px solid var(--border)}.btn-ghost:hover{background:var(--bg-warm);color:var(--ink)}.btn-sm{font-size:.8rem;padding:6px 14px}.btn:disabled{opacity:.5;pointer-events:none}.input{width:100%;font-family:var(--font-sans);font-size:.95rem;padding:10px 14px;border:1.5px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);color:var(--ink);transition:border-color var(--transition);outline:none}.input:focus{border-color:var(--accent);background:var(--bg-card);color:var(--ink)}textarea.input{resize:vertical;min-height:80px}.badge{display:inline-flex;align-items:center;font-size:.75rem;font-weight:600;padding:3px 10px;border-radius:99px;letter-spacing:.02em}.badge-planned{background:#fff3e0;color:#b45309}.badge-done{background:#e8f5e9;color:var(--green)}.badge-skipped{background:#f3f4f6;color:#6b7280}.stars{display:flex;gap:3px}.star{font-size:1.2rem;cursor:pointer;transition:transform .1s;color:#ddd}.star.active{color:var(--accent-alt)}.star:hover{transform:scale(1.2)}.divider{height:1px;background:var(--border);margin:20px 0}.text-muted{color:var(--ink-muted);font-size:.875rem}.text-accent{color:var(--accent)}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-2{gap:8px}.gap-3{gap:12px}.mt-2{margin-top:8px}.mt-3{margin-top:12px}.mt-4{margin-top:16px}.meal-label{font-family:var(--font-serif);font-size:.8rem;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-muted);margin-bottom:4px}.page-title{font-family:var(--font-serif);font-size:1.6rem;font-weight:700;color:var(--ink);line-height:1.2}.page-subtitle{font-size:.9rem;color:var(--ink-muted);margin-top:4px}@media (max-width: 480px){.app-shell{padding:0 14px calc(64px + env(safe-area-inset-bottom,0px))}.nav{padding:14px 0 18px;margin-bottom:20px}.page-title{font-size:1.35rem}.card{padding:16px}}.fade-enter-active,.fade-leave-active{transition:opacity .25s ease}.fade-enter-from,.fade-leave-to{opacity:0}.spinner{width:28px;height:28px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite;margin:40px auto}@keyframes spin{to{transform:rotate(360deg)}}.loading-wrap{display:flex;justify-content:center;padding:60px 0}.loading-dots{display:flex;gap:6px;align-items:center}.loading-dots span{width:8px;height:8px;background:var(--accent);border-radius:50%;animation:dotPulse 1.2s ease-in-out infinite}.loading-dots span:nth-child(2){animation-delay:.15s}.loading-dots span:nth-child(3){animation-delay:.3s}@keyframes dotPulse{0%,80%,to{opacity:.3;transform:scale(.8)}40%{opacity:1;transform:scale(1)}}.progress-shine{position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.3),transparent);animation:progressShine 2s ease-in-out infinite}@keyframes progressShine{0%{left:-100%}to{left:200%}}.btn-loading{display:inline-flex;align-items:center;gap:6px}.btn-loading:after{content:"";width:14px;height:14px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .6s linear infinite}.empty-state{text-align:center;padding:48px 20px;color:var(--ink-muted)}.empty-state .emoji{font-size:3rem;margin-bottom:12px}.empty-state p{font-size:.95rem}.section-card{margin-bottom:16px}.section-header{display:flex;align-items:baseline;gap:8px;margin-bottom:16px}.section-title{font-family:var(--font-serif);font-size:.95rem;font-weight:700;color:var(--ink)}.section-count{font-size:.75rem;color:var(--ink-muted)}.checklist{list-style:none;padding:0;margin:0 0 16px;display:flex;flex-direction:column;gap:2px}.checklist-item{display:flex;align-items:center;gap:10px;padding:10px 8px;border-radius:var(--radius-sm);cursor:pointer;transition:background var(--transition);-webkit-user-select:none;-moz-user-select:none;user-select:none}.checklist-item:hover{background:var(--bg-warm)}.checklist-item:active{background:var(--border);transform:scale(.99)}.checklist-item.is-checked .checklist-text{text-decoration:line-through;color:var(--ink-muted)}.checklist-check{width:20px;height:20px;border-radius:50%;border:2px solid var(--border);display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all var(--transition);background:#fff}.checklist-item.is-checked .checklist-check{background:var(--accent);border-color:var(--accent)}.checklist-mark{color:#fff;font-size:.7rem;font-weight:700;line-height:1}.checklist-text{flex:1;font-size:.93rem;color:var(--ink)}.checklist-hint{font-size:.75rem;color:var(--ink-muted);white-space:nowrap}.field-group{display:flex;flex-direction:column;gap:6px}.field-label{font-size:.75rem;font-weight:600;color:var(--ink-muted);text-transform:uppercase;letter-spacing:.04em}.field-error{font-size:.8rem;color:#dc2626;margin-top:4px}.progress-bar{height:8px;background:var(--border);border-radius:99px;overflow:hidden}.progress-fill{height:100%;background:linear-gradient(90deg,var(--accent-alt),var(--accent));border-radius:99px;transition:width .5s cubic-bezier(.4,0,.2,1)}
