:root{--bg-0:#e8f0ea;--bg-1:#f4faf5;--ink:#153028;--ink-soft:#3d5a50;--muted:#5f766c;--line:#1530281f;--surface:#ffffffb8;--surface-strong:#fff;--accent:#1f6b4f;--accent-deep:#134836;--accent-soft:#d7eee3;--warm:#d97706;--danger:#b42318;--danger-soft:#fde8e6;--shadow:0 18px 50px #1334281f;--radius:18px;--font-display:"Fraunces", Georgia, serif;--font-body:"Manrope", sans-serif}*{box-sizing:border-box}html,body,#root{min-height:100%}html{scrollbar-gutter:stable}body{color:var(--ink);font-family:var(--font-body);background:radial-gradient(1200px 600px at 10% -10%, #cfe8d8 0%, transparent 55%), radial-gradient(900px 500px at 100% 0%, #f6e7c8 0%, transparent 45%), linear-gradient(180deg, var(--bg-1), var(--bg-0));background-attachment:fixed;margin:0}h1,h2,h3{font-family:var(--font-display);letter-spacing:-.02em;margin:0;font-weight:700}button,input,select,textarea{font:inherit}a{color:inherit;text-decoration:none}.app-shell{max-width:1180px;margin:0 auto;padding:24px 20px 64px}.boot-screen{place-items:center;min-height:100vh;padding:24px;display:grid}.boot-screen__card{border:1px solid var(--line);background:var(--surface-strong);width:min(420px,100%);box-shadow:var(--shadow);text-align:center;border-radius:24px;justify-items:center;gap:12px;padding:28px 24px;display:grid}.boot-screen__title{font-family:var(--font-display);margin:0;font-size:1.6rem}.sync-banner{border-radius:14px;margin:0 0 16px;padding:10px 14px;font-size:.92rem}.sync-banner--info{background:var(--accent-soft);color:var(--accent-deep)}.sync-banner--error{background:var(--danger-soft);color:var(--danger)}.linkish{color:inherit;font:inherit;cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline}.topbar{border:1px solid var(--line);background:var(--surface);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:var(--shadow);border-radius:24px;justify-content:space-between;align-items:center;gap:20px;margin-bottom:28px;padding:16px 18px;animation:.55s both rise-in;display:flex}.brand{align-items:center;gap:14px;display:flex}.brand__mark{background:linear-gradient(145deg, var(--accent), var(--accent-deep)), radial-gradient(circle at 30% 30%, #ffffff59, transparent 50%);border-radius:14px;width:42px;height:42px;box-shadow:inset 0 0 0 1px #ffffff40}.brand__name{font-family:var(--font-display);margin:0;font-size:1.35rem;line-height:1.1}.brand__tag{color:var(--muted);margin:2px 0 0;font-size:.85rem}.nav{flex-wrap:wrap;gap:8px;display:flex}.nav__link{color:var(--ink-soft);border-radius:999px;padding:10px 14px;transition:background .2s,color .2s,transform .2s}.nav__link:hover{background:var(--accent-soft);transform:translateY(-1px)}.nav__link--active{background:var(--accent);color:#fff}.page{animation:.65s 50ms both rise-in}.stack{flex-direction:column;gap:20px;display:flex}.page-header{justify-content:space-between;align-items:flex-end;gap:16px;display:flex}.eyebrow{text-transform:uppercase;letter-spacing:.08em;color:var(--accent);margin:0 0 4px;font-size:.72rem;font-weight:700}.muted{color:var(--muted)}.small{font-size:.85rem}.date-bar{border-radius:calc(var(--radius) + 6px);border:1px solid var(--line);box-shadow:var(--shadow);background:linear-gradient(135deg,#ffffffe6,#d7eee3a6),url("data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cg fill='%231f6b4f' fill-opacity='0.04'%3E%3Cpath d='M36 34v-4h-2v4h-4v2h4v4h2v-4h4v-2h-4zm0-30V0h-2v4h-4v2h4v4h2V6h4V4h-4zM6 34v-4H4v4H0v2h4v4h2v-4h4v-2H6zM6 4V0H4v4H0v2h4v4h2V6h4V4H6z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");justify-content:space-between;align-items:end;gap:20px;padding:22px 24px;display:flex}.date-bar__title{text-transform:capitalize;font-size:clamp(1.6rem,3vw,2.2rem)}.date-bar__controls{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.date-input{border:1px solid var(--line);background:#fff;border-radius:12px;padding:10px 12px}.day-summary{grid-template-columns:repeat(3,1fr);gap:12px;display:grid}.day-summary>div{border-radius:var(--radius);border:1px solid var(--line);background:var(--surface-strong);flex-direction:column;gap:6px;padding:16px 18px;display:flex}.btn{cursor:pointer;border:none;border-radius:12px;padding:11px 16px;font-weight:600;transition:transform .15s,background .15s,box-shadow .15s}.btn:hover{transform:translateY(-1px)}.btn--primary{background:var(--accent);color:#fff;box-shadow:0 8px 20px #1f6b4f40}.btn--primary:hover{background:var(--accent-deep)}.btn--ghost{border:1px solid var(--line);color:var(--ink);background:#ffffffb3}.btn--danger{background:var(--danger-soft);color:var(--danger)}.btn--sm{padding:7px 11px;font-size:.9rem}.icon-btn{cursor:pointer;color:var(--muted);background:0 0;border:none;font-size:1.5rem;line-height:1}.meal-list__toolbar{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.meal-block{border-radius:var(--radius);border:1px solid var(--line);background:var(--surface);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);margin-top:14px;padding:16px;transition:box-shadow .2s,transform .2s;box-shadow:0 10px 30px #1334280f}.meal-block:hover{box-shadow:var(--shadow)}.meal-block__header{align-items:center;gap:10px;margin-bottom:12px;display:flex}.meal-block__header h2{flex:1;font-size:1.35rem}.meal-block__actions{gap:6px;display:flex}.drag-handle{background:var(--accent-soft);color:var(--accent-deep);cursor:grab;letter-spacing:-2px;border:none;border-radius:10px;width:36px;height:36px;font-weight:700}.drag-handle:active{cursor:grabbing}.empty-hint{border:1px dashed var(--line);color:var(--muted);text-align:center;border-radius:14px;margin:0;padding:18px}.dish-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px;display:grid}.dish-grid--compact{grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}.dish-card{border:1px solid var(--line);background:var(--surface-strong);border-radius:16px;flex-direction:column;transition:transform .2s,box-shadow .2s;display:flex;overflow:hidden}.dish-card:hover{box-shadow:var(--shadow);transform:translateY(-3px)}.dish-card__photo{height:140px;color:var(--muted);background:linear-gradient(145deg,#d7eee3,#c5d8cc) 50%/cover no-repeat;place-items:center;display:grid;position:relative}.dish-card--compact .dish-card__photo{height:100px}.dish-card--missing{background:#fff6f6;border:1px dashed #c45c5c;justify-content:space-between;align-items:flex-start;gap:8px;padding:4px;display:flex}.dish-card__type{color:#fff;background:#134836e0;border-radius:999px;padding:4px 10px;font-size:.75rem;font-weight:600;position:absolute;bottom:10px;left:10px}.dish-card__body{flex-direction:column;gap:6px;padding:14px;display:flex}.dish-card__body h3{font-size:1.05rem}.dish-card__recipe{color:var(--ink-soft);white-space:pre-wrap;max-height:7.5em;margin:4px 0 0;font-size:.9rem;overflow:hidden}.dish-card__actions{flex-wrap:wrap;gap:6px;margin-top:8px;display:flex}.portions-control{color:var(--ink-soft);flex-direction:column;flex:1;gap:6px;margin-top:6px;font-size:.85rem;font-weight:600;display:flex}.portions-row{align-items:flex-end;gap:10px;margin-top:6px;display:flex}.portions-row .portions-control{margin-top:0}.cook-btn{flex-shrink:0;align-self:flex-end}.portions-stepper{align-items:center;gap:6px;display:flex}.portions-stepper input{border:1px solid var(--line);text-align:center;background:#fff;border-radius:10px;width:72px;padding:7px 8px}.cost-hint{color:var(--muted);font-size:.85em}.cook-mode{z-index:11000;color:#f4faf5;overscroll-behavior:contain;background:#0d1f18;width:100vw;height:100dvh;animation:.25s fade;position:fixed;inset:0;overflow:auto}.cook-mode__glow{pointer-events:none;background:radial-gradient(800px 400px at 15% 0,#38a06e59,#0000 55%),radial-gradient(700px 380px at 90% 10%,#d977062e,#0000 50%);position:fixed;inset:0}.cook-mode--breakfast .cook-mode__glow{background:radial-gradient(900px 420px at 20% -5%,#facc1547,#0000 55%),radial-gradient(700px 360px at 100% 0,#fb923c33,#0000 50%)}.cook-mode--lunch .cook-mode__glow{background:radial-gradient(900px 420px at 10% 0,#34d39947,#0000 55%),radial-gradient(700px 360px at 95% 15%,#0ea5e92e,#0000 50%)}.cook-mode--dinner .cook-mode__glow{background:radial-gradient(900px 420px at 15% 0,#6366f138,#0000 55%),radial-gradient(700px 360px at 90% 10%,#f472b629,#0000 50%)}.cook-mode--snack .cook-mode__glow{background:radial-gradient(900px 420px at 20% 0,#fb923c47,#0000 55%),radial-gradient(700px 360px at 100% 20%,#facc1526,#0000 50%)}.cook-mode--afternoon .cook-mode__glow{background:radial-gradient(900px 420px at 15% 0,#a78bfa38,#0000 55%),radial-gradient(700px 360px at 95% 10%,#7dd3fc2e,#0000 50%)}.cook-mode__top,.cook-mode__layout{z-index:1;position:relative}.cook-mode__top{justify-content:space-between;align-items:flex-start;gap:16px;padding:28px 28px 12px;animation:.45s both rise;display:flex}.cook-mode__vibe{text-transform:uppercase;letter-spacing:.1em;color:#9fd0b8;margin:0 0 8px;font-size:.75rem;font-weight:700}.cook-mode__hello{font-family:var(--font-display);margin:0;font-size:clamp(2rem,5vw,3.4rem);line-height:1.05}.cook-mode__sub{color:#c5ddd2;max-width:40rem;margin:10px 0 0;font-size:1.1rem}.cook-mode__close{color:#fff;background:#ffffff14;border-color:#ffffff2e}.cook-mode__layout{grid-template-columns:1.1fr 1fr;gap:18px;padding:12px 28px 40px;animation:.55s 50ms both rise;display:grid}.cook-mode__hero{grid-row:span 2}.cook-mode__photo{color:#9fd0b8;background:linear-gradient(145deg,#1a3d30,#0f2820) 50%/cover no-repeat;border-radius:28px;place-items:center;min-height:360px;display:grid;position:relative;overflow:hidden;box-shadow:0 24px 60px #00000059}.cook-mode__photo-meta{flex-wrap:wrap;gap:8px;display:flex;position:absolute;bottom:16px;left:16px}.cook-mode__badge{background:#0f2820d1;border-radius:999px;padding:6px 12px;font-size:.82rem;font-weight:600}.cook-mode__badge--soft{background:#ffffff29}.cook-mode__dish-name{margin:18px 0 8px;font-size:clamp(1.6rem,3vw,2.2rem)}.cook-mode__stats{color:#9fd0b8;margin:0}.cook-mode__panel{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffff0f;border:1px solid #ffffff1a;border-radius:22px;padding:20px}.cook-mode__panel h3{margin:0 0 14px;font-size:1.25rem}.cook-ings{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.cook-ings li{background:#00000038;border-radius:14px;justify-content:space-between;gap:12px;padding:12px 14px;display:flex}.cook-ings__prep{text-transform:uppercase;letter-spacing:.04em;background:#38a06e59;border-radius:999px;margin-left:8px;padding:2px 8px;font-size:.72rem;font-weight:700}.cook-ings__amount{text-align:right;white-space:nowrap}.cook-ings__amount em{color:#fbbf24;margin-top:2px;font-size:.88rem;font-style:normal;display:block}.cook-ings__note{color:#8aada0;margin:12px 0 0;font-size:.8rem}.cook-steps{counter-reset:none;flex-direction:column;gap:12px;margin:0;padding:0;list-style:none;display:flex}.cook-steps li{align-items:flex-start;gap:12px;display:flex}.cook-steps__num{background:#38a06e59;border-radius:10px;flex-shrink:0;place-items:center;width:32px;height:32px;font-weight:700;display:grid}.cook-steps p{color:#e4f2eb;margin:4px 0 0;line-height:1.5}@media (width<=900px){.cook-mode__layout{grid-template-columns:1fr}.cook-mode__hero{grid-row:auto}.cook-mode__photo{min-height:220px}.cook-mode__top{flex-direction:column}}.filters{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.search,.form input,.form select,.form textarea,.filters select,.meal-list__toolbar select,.settings-card select,.settings-card textarea{border:1px solid var(--line);background:#fff;border-radius:12px;width:100%;padding:11px 12px}.search{max-width:360px}.form{flex-direction:column;gap:14px;display:flex}.form label,.settings-card label{flex-direction:column;gap:6px;font-size:.92rem;font-weight:600;display:flex}.form-row{grid-template-columns:repeat(auto-fit,minmax(120px,1fr));align-items:end;gap:10px;display:grid}.form-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.checkbox{align-items:center;flex-direction:row!important;gap:8px!important;font-weight:500!important;display:flex!important}.checkbox input{width:auto!important}.ingredient-picker{border:1px dashed var(--line);border-radius:14px;padding:12px}.chip-list{flex-wrap:wrap;gap:8px;margin:0 0 10px;padding:0;list-style:none;display:flex}.chip{background:var(--accent-soft);border-radius:999px;align-items:center;gap:8px;padding:6px 10px;font-size:.88rem;display:inline-flex}.chip button{cursor:pointer;color:var(--accent-deep);background:0 0;border:none;font-size:1rem}.chip em{margin-left:4px;font-style:normal}.photo-preview{border:1px solid var(--line);background-position:50%;background-size:cover;border-radius:14px;height:160px}.table-wrap{border-radius:var(--radius);border:1px solid var(--line);background:var(--surface-strong);overflow:auto}.data-table{border-collapse:collapse;width:100%;min-width:720px}.data-table th,.data-table td{border-bottom:1px solid var(--line);text-align:left;vertical-align:middle;padding:12px 14px}.data-table th{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);background:#f3f8f5;font-size:.8rem}.row-actions{justify-content:flex-end;gap:6px;display:flex}.modal-backdrop{z-index:10000;overscroll-behavior:contain;background:#0f231c8c;place-items:center;padding:20px;animation:.2s fade;display:grid;position:fixed;inset:0}.modal{width:min(560px,100%);max-height:min(90vh,900px);box-shadow:var(--shadow);z-index:10001;background:#fff;border-radius:20px;animation:.25s pop;position:relative;overflow:auto}.modal--wide{width:min(920px,100%)}.modal__header{border-bottom:1px solid var(--line);z-index:1;background:#fff;justify-content:space-between;align-items:center;padding:16px 18px;display:flex;position:sticky;top:0}.modal__body{padding:18px}.settings-card{border-radius:var(--radius);border:1px solid var(--line);background:var(--surface-strong);flex-direction:column;gap:12px;padding:20px;display:flex}.prompt-box{color:#d7eee3;white-space:pre-wrap;background:#10261f;border-radius:14px;max-height:320px;margin:0;padding:14px;font-size:.82rem;line-height:1.45;overflow:auto}.import-msg{background:var(--accent-soft);color:var(--accent-deep);border-radius:12px;margin:0;padding:10px 12px}@keyframes rise-in{0%{opacity:0}to{opacity:1}}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes pop{0%{opacity:0;transform:translateY(12px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}@media (width<=800px){.topbar,.date-bar,.page-header{flex-direction:column;align-items:stretch}.day-summary{grid-template-columns:1fr}.nav{justify-content:flex-start}}
