:root{
-webkit-text-size-adjust:100%;
color-scheme:light dark;
--bg:#f8f5ef;
--surface:#fff;
--soft:#e9efe4;
--text:#27332a;
--muted:#626b60;
--border:#e2e3d8;
--accent:#527653;
--accent-strong:#385d3e;
--on-accent:#fff;
--terracotta:#dd9254;
--shadow:0 2px 4px #27332a08, 0 8px 24px #27332a04;
--warm:#f3ece3;
--danger:#a62f27;
}
body{min-height:100dvh;background:radial-gradient(ellipse at top right,var(--warm),transparent 65%),var(--bg);font-family:Inter, ui-rounded, "SF Pro Rounded", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;line-height:1.5;}
h1{font-size:clamp(1.8rem, 4vw, 2.5rem);overflow-wrap:anywhere;line-height:1.2;}
h2{font-size:1.15rem;line-height:1.4;}
h3{font-size:1rem;margin:0 0 8px;}
button, input, select, textarea{font:inherit;}
button{min-height:48px;border-radius:12px;padding:10px 14px;white-space:normal;overflow-wrap:anywhere;color:var(--on-accent);}
button:disabled{background:var(--soft);color:var(--muted);cursor:not-allowed;}
button.secondary, .secondary{background:var(--surface);color:var(--text);border-color:var(--border);}
button:hover:not(:disabled){border-color:var(--accent);}
button[aria-pressed="true"]{background:var(--soft);border-color:var(--accent);color:var(--text);}
a{color:var(--accent-strong);}
:focus-visible{outline:3px solid var(--accent);outline-offset:3px;}
summary{overflow-wrap:anywhere;min-height:44px;padding:10px 0;cursor:pointer;font-weight:600;}
.hidden, [hidden]{display:none !important;}
.brand{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;}
.brand a{display:flex;gap:10px;align-items:center;font-size:1.8rem;font-weight:750;color:var(--text);text-decoration:none;}
.brand img{border-radius:12px;flex-shrink:0;}
.app-shell{width:auto;max-width:1180px;padding:12px 16px calc(9rem + env(safe-area-inset-bottom));margin:auto;}
.main-nav{position:fixed;bottom:calc(12px + env(safe-area-inset-bottom));left:12px;right:12px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px;padding:8px;background:color-mix(in srgb,var(--surface) 95%,transparent);border:1px solid var(--border);border-radius:24px;z-index:10;backdrop-filter:blur(16px);box-shadow:0 8px 30px #27332a18;}
.main-nav button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:8px 2px;min-width:0;border:0;background:transparent;color:var(--text);font-size:.8rem;font-weight:600;}
.icon{display:inline-block;width:24px;height:24px;flex:0 0 auto;background:currentColor;mask:var(--icon) center / contain no-repeat;-webkit-mask:var(--icon) center / contain no-repeat;}
.icon-plan{--icon:url("icons/plan.svg");}
.icon-ideas{--icon:url("icons/ideas.svg");}
.icon-history{--icon:url("icons/history.svg");}
.icon-discover{--icon:url("icons/discover.svg");}
.icon-basket{--icon:url("icons/basket.svg");}
.icon-settings{--icon:url("icons/settings.svg");}
.icon-plate{--icon:url("icons/plate.svg");}
.icon-leaf{--icon:url("icons/leaf.svg");}
.icon-chevron{--icon:url("icons/chevron.svg");}
.main-nav button[aria-current]{background:var(--accent);color:var(--on-accent);}
.view-header{display:flex;align-items:flex-start;justify-content:space-between;flex-wrap:wrap;gap:16px;margin-bottom:22px;}
.view-header p{color:var(--muted);margin-bottom:8px;}
.eyebrow{font-size:.75rem;text-transform:uppercase;letter-spacing:.08em;color:var(--accent);}
.field{margin:0 0 12px;}
.field input, .field select, .field textarea{color:var(--text);background:var(--surface);min-height:48px;border-radius:12px;max-width:100%;}
.check-field{display:flex;align-items:center;min-height:44px;gap:8px;margin-bottom:4px;}
.check-field input{width:22px;height:22px;flex-shrink:0;accent-color:var(--accent);}
fieldset{border:1px solid var(--border);border-radius:12px;min-width:0;margin-bottom:16px;}
.hint, small{color:var(--muted);}
.view-header > button, .view-header .actions button:first-child{background:var(--accent);color:var(--on-accent);}
.plan-header .week-navigation button, .plan-header .week-navigation button:first-child{background:var(--surface);color:var(--text);}
.plan-header .week-navigation button:last-child{background:var(--accent);color:var(--on-accent);}
.planning-progress{display:flex;flex-wrap:wrap;align-items:center;gap:12px 22px;margin-bottom:22px;}
.planning-progress progress{position:absolute;width:1px;height:1px;clip-path:inset(50%);}
.progress-segments{display:flex;flex:0 1 350px;gap:5px;height:12px;}
.progress-segments span{flex:1;background:var(--border);border-radius:6px;}
.progress-segments .filled{background:linear-gradient(90deg,var(--accent),var(--accent-strong));}
.week-layout{display:grid;gap:22px;}
.basket{padding:18px;background:linear-gradient(135deg,var(--soft),var(--warm));border:1px solid var(--border);border-radius:18px;min-width:0;}
.basket summary{color:var(--text);display:flex;gap:12px;align-items:center;list-style:none;padding:0;}
.basket summary > .icon{width:28px;height:28px;color:var(--accent-strong);}
.basket summary::after{content:"›";font-size:24px;line-height:1;margin-left:auto;color:var(--accent-strong);}
.basket details[open] > summary::after{transform:rotate(90deg);}
.basket-body{padding-top:16px;}
.basket-body > button{width:100%;border-style:dashed;}
.basket summary small{display:block;font-weight:400;margin-top:4px;}
.week-days{display:grid;gap:16px;min-width:0;}
.day-card{box-shadow:var(--shadow);background:var(--surface);border:1px solid var(--border);border-radius:18px;padding:18px;min-width:0;}
.dish-card{display:flex;align-items:flex-start;gap:12px;padding:12px;border:1px solid var(--border);border-radius:18px;min-width:0;margin-bottom:12px;}
.dish-info{flex:1;min-width:0;}
.dish-photo{position:relative;flex:0 0 64px;width:64px;height:64px;display:grid;place-items:center;background:var(--soft);color:var(--accent);border-radius:12px;overflow:hidden;}
.dish-photo > .icon{width:32px;height:32px;opacity:.5;}
.dish-photo img{position:absolute;width:100%;height:100%;object-fit:cover;inset:0;}
.dish-photo.large{flex-basis:auto;width:100%;height:180px;margin-bottom:16px;}
.title-button{min-width:44px;border:0;background:transparent;color:var(--text);font-weight:700;padding:0;min-height:44px;text-align:left;overflow-wrap:anywhere;}
.pill{width:fit-content;display:inline-block;border-radius:8px;background:var(--soft);color:var(--text);padding:2px 8px;font-size:.85rem;}
.empty{display:grid;justify-items:start;gap:8px;border:1px dashed var(--border);border-radius:18px;padding:22px;background:var(--surface);}
.empty > span{font-size:2rem;color:var(--accent);}
.library-grid{display:grid;gap:16px;}
.library-grid > .dish-card{margin:0;}
.filters{display:flex;flex-wrap:wrap;align-items:end;gap:12px;margin:22px 0;}
.filters .field{flex:1 1 170px;margin:0;}
#planly-status:not(:empty), #connection{padding:12px 16px;background:var(--soft);border-radius:12px;margin-bottom:16px;overflow-wrap:anywhere;}
#connection{border:2px solid var(--terracotta);}
#settings{scroll-margin-top:16px;}
dialog{width:min(620px,calc(100% - 24px));max-height:calc(100dvh - 32px);padding:22px;border:1px solid var(--border);border-radius:24px;background:var(--surface);color:var(--text);overflow-y:auto;overscroll-behavior:contain;}
dialog::backdrop{background:#19231888;}
.sheet-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:18px;}
.sheet-header h2{font-size:1.4rem;margin:8px 0;overflow-wrap:anywhere;}
.sheet-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:18px;}
#sheet-error{color:var(--text);overflow-wrap:anywhere;}
.image-preview{max-width:100%;max-height:200px;object-fit:contain;border-radius:12px;}
.plan-header{margin-bottom:12px;align-items:center;}
.week-toolbar .field > span{position:absolute;width:1px;height:1px;clip-path:inset(50%);}
.plan-header h1{margin-bottom:6px;}
.plan-header p{margin:0;}
.week-toolbar{min-width:0;display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;margin-bottom:20px;gap:8px;}
.week-toolbar input{min-height:44px;min-width:0;}
.week-secondary button{font-size:.8rem;font-weight:500;border-color:transparent;background:transparent;}
.day-card h2{display:flex;gap:4px 8px;align-items:baseline;flex-wrap:wrap;}
.day-weekday{font-weight:750;}
.day-date{font-size:.9rem;font-weight:500;}
.day-card.today{border-color:var(--accent);}
.day-card.today h2{color:var(--accent-strong);}
.plan-entry{display:grid;grid-template-columns:72px minmax(0,1fr) 44px;gap:8px 10px;padding:0;border:0;box-shadow:none;align-items:center;}
.plan-entry .dish-photo{width:72px;height:64px;}
.plan-entry .title-button{display:block;padding:6px 0;line-height:1.3;}
.plan-entry .dish-info{display:grid;justify-items:start;align-content:center;}
.plan-entry small{font-size:.7rem;}
.plan-entry .entry-more{padding:0;border:0;background:transparent;color:var(--text);width:44px;min-height:48px;}
.entry-action{grid-column:1 / -1;}
.entry-action button{width:100%;border-color:var(--accent);color:var(--accent-strong);font-weight:500;padding:6px 10px;}
.meal-entries > button{border:1px dashed var(--border);width:100%;background:transparent;color:var(--accent-strong);font-weight:500;}
.season-card{background:linear-gradient(135deg,var(--warm),var(--surface));border:1px solid var(--border);border-radius:18px;padding:18px;margin-top:18px;}
.season-card h2{display:flex;align-items:center;gap:8px;}
.season-card .icon{color:var(--terracotta);}
.season-card p{font-size:.9rem;}
.season-card button{width:100%;}
.matrix-heading{display:none;}
.recommendation{display:flex;align-items:flex-start;gap:14px;margin:0;box-shadow:var(--shadow);}
.recommendation-body{min-width:0;flex:1;}
.recommendation p{color:var(--muted);font-size:.9rem;}
.discovery-heading{margin-top:28px;}
.mealie-result{display:flex;align-items:flex-start;gap:14px;}
.mealie-result > div{min-width:0;display:grid;justify-items:start;gap:10px;}
.mealie-result button{margin-top:4px;}
button.danger{color:var(--danger);}
@media (min-width:900px) {
.quick-add{display:none;}
body{background:linear-gradient(90deg,var(--warm) 210px,var(--bg) 210px);color:var(--text);}
.brand{position:fixed;top:20px;left:0;width:210px;flex-direction:column;align-items:flex-start;padding:24px 22px;}
.main-nav{top:140px;bottom:auto;left:12px;right:auto;width:186px;display:flex;flex-direction:column;box-shadow:none;background:transparent;border:0;backdrop-filter:none;padding:0;gap:8px;}
.main-nav button{flex-direction:row;justify-content:flex-start;padding:12px;gap:14px;font-size:1rem;font-weight:500;min-height:56px;}
.main-nav button[aria-current]{background:var(--soft);color:var(--text);font-weight:700;}
.app-shell{margin-left:210px;padding:36px 28px 48px;}
.week-layout{grid-template-columns:minmax(0,1fr) minmax(215px,27%);align-items:start;gap:18px;}
.week-aside{grid-column:2;grid-row:1;}
.basket summary{align-items:start;}
.basket summary strong{font-size:1.3rem;line-height:1.2;}
.basket-count{display:block;font-size:.8rem;font-weight:400;margin-top:4px;}
.basket-entry{grid-template-columns:minmax(0,1fr) 44px;background:var(--surface);padding:8px;border:1px solid var(--border);box-shadow:var(--shadow);}
.basket-entry .dish-photo{grid-column:1 / -1;width:100%;height:100px;}
.basket-entry .pill{display:none;}
.week-days{grid-column:1;grid-row:1;gap:0;border:1px solid var(--border);border-radius:18px;background:var(--surface);box-shadow:var(--shadow);overflow:hidden;}
.matrix-heading, .day-card{display:grid;grid-template-columns:58px minmax(0,1fr) minmax(0,1.35fr);gap:0;}
.matrix-heading{background:var(--warm);font-weight:650;text-align:center;padding:14px 0;}
.day-card{border:0;border-bottom:1px solid var(--border);border-radius:0;padding:0;box-shadow:none;background:transparent;min-height:96px;}
.day-card:last-child{border-bottom:0;}
.day-card h2{flex-direction:column;align-items:flex-start;justify-content:center;gap:0;padding:12px 8px;margin:0;}
.day-weekday{font-size:1.1rem;}
.day-date{font-size:.7rem;color:var(--muted);}
.lunch, .dinner{border:0;border-left:1px solid var(--border);padding:10px;margin:0;min-width:0;}
.lunch > summary, .dinner > h3{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);padding:0;}
.lunch > summary:focus-visible{position:static;width:auto;height:auto;clip-path:none;}
.plan-entry{grid-template-columns:64px minmax(0,1fr) 44px;gap:8px;margin-bottom:8px;}
.plan-entry .dish-photo{width:64px;height:56px;}
.plan-entry:not(.basket-entry) .entry-action{display:none;}
.basket-entry{grid-template-columns:minmax(0,1fr) 44px;}
.basket-entry .dish-photo{width:100%;height:100px;}
.meal-entries > button{font-size:.85rem;}
.meal-entries > .plan-entry ~ button{min-height:44px;border:0;font-size:.75rem;padding:2px;}
.library-grid{grid-template-columns:repeat(auto-fit,minmax(min(340px,100%),1fr));}
}
@media (min-width:900px) and (max-width:1150px) {
.week-layout{grid-template-columns:minmax(0,1fr) 210px;}
.matrix-heading, .day-card{grid-template-columns:48px minmax(0,1fr) minmax(0,1.35fr);}
.plan-entry:not(.basket-entry){grid-template-columns:minmax(0,1fr) 44px;}
.plan-entry:not(.basket-entry) .dish-photo{display:none;}
.plan-entry .dish-info{grid-column:1;}
.week-label{display:none;}
}
@media (max-width:899px) {
.brand{padding:calc(18px + env(safe-area-inset-top)) 18px 12px;}
.plan-header{display:grid;grid-template-columns:48px minmax(0,1fr) 48px;gap:12px;align-items:center;}
.plan-header > div:first-child{grid-column:2;grid-row:1;text-align:center;min-width:0;}
.plan-header p{font-size:.85rem;}
.week-navigation > button:first-child{grid-column:1;grid-row:1;}
.week-navigation > button:nth-child(2){grid-column:3;grid-row:1;}
.week-navigation > button:last-child{display:none;}
.plan-header h1{font-size:1.5rem;letter-spacing:-.03em;}
.week-navigation{display:contents;}
.week-navigation .week-label{display:none;}
.week-toolbar .field{width:128px;min-width:0;margin:0;}
.week-secondary button{padding:8px;}
.planning-progress{gap:8px;}
.progress-segments{flex-basis:100%;}
.season-card{display:none;}
.lunch{border:0;margin-bottom:8px;padding:0;}
.lunch summary{font-size:.85rem;font-weight:500;}
.day-card{padding:14px;}
.dinner h3{font-size:.8rem;font-weight:500;padding:1px 8px;border-radius:6px;background:var(--warm);width:fit-content;margin-bottom:8px;}
.basket{padding:14px;}
.basket summary small{display:none;}
.week-days{gap:12px;}
}
@media (max-width:600px){dialog{margin:auto 0 0;width:100%;max-width:none;max-height:92dvh;padding-bottom:calc(24px + env(safe-area-inset-bottom));border-radius:24px 24px 0 0;}}
@media (prefers-color-scheme:dark) {
:root:not([data-theme="light"]){--bg:#191d18;--surface:#242b23;--soft:#303b2b;--text:#f1f4ec;--muted:#bbc5b5;--border:#46513f;--accent:#b2cda1;--accent-strong:#b2cda1;--on-accent:#192318;--terracotta:#e7aa79;--warm:#302b25;--danger:#ffb3ab;--shadow:0 2px 8px #0002;}
}
@media (prefers-reduced-motion:no-preference){button{transition:background-color 140ms, border-color 140ms;}}
@media (prefers-reduced-motion:reduce){*, *::before, *::after{animation:none !important;transition:none !important;scroll-behavior:auto !important;}}

:root[data-theme="dark"]{color-scheme:dark;--bg:#191d18;--surface:#242b23;--soft:#303b2b;--text:#f1f4ec;--muted:#bbc5b5;--border:#46513f;--accent:#b2cda1;--accent-strong:#b2cda1;--on-accent:#192318;--terracotta:#e7aa79;--warm:#302b25;--danger:#ffb3ab;--shadow:0 2px 8px #0002;}
:root[data-theme="light"]{color-scheme:light;}
.recipe-link{border:1px solid var(--border);border-radius:18px;padding:18px;margin:12px 0;}
