:root{--green-900: #173e31;--green-800: #1f4d3c;--green-700: #275c45;--green-500: #3f7d5f;--green-300: #8fb8a3;--green-100: #e2eee6;--green-050: #f0f6f2;--cream: #f7f3ec;--cream-2: #efe9df;--cream-3: #e8e0d3;--paper: #fffdf9;--ink: #1f2a24;--ink-soft: #3d4a43;--muted: #6b7570;--line: #e6dfd3;--line-strong: #d8cfbf;--accent: #d97b4f;--accent-soft: #f8e6dc;--accent-deep: #b85f36;--amber: #b7791f;--amber-soft: #fbf0d9;--danger: #b3402f;--danger-soft: #f9e4df;--aldi: #1f4e9c;--migros: #e8731a;--coop: #c8102e;--r-sm: 8px;--r: 14px;--r-lg: 22px;--r-pill: 999px;--shadow-xs: 0 1px 2px rgba(45, 34, 20, .05);--shadow-sm: 0 2px 6px rgba(45, 34, 20, .06), 0 1px 2px rgba(45, 34, 20, .04);--shadow: 0 10px 30px -12px rgba(45, 34, 20, .18), 0 2px 6px rgba(45, 34, 20, .05);--shadow-lg: 0 24px 60px -20px rgba(23, 62, 49, .35), 0 6px 16px -8px rgba(45, 34, 20, .12);--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--space-12: 48px;--space-16: 64px;--font-body: "DM Sans", "Helvetica Neue", Arial, system-ui, sans-serif;--font-display: "DM Serif Display", Georgia, "Times New Roman", serif;--font-mono: "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;--sidebar-width: 280px;--topbar-height: 64px;--bottom-nav-height: 64px;--content-max: 1280px;--ease: cubic-bezier(.2, .7, .2, 1);--t-fast: .15s;--t: .2s;--focus-ring: 0 0 0 3px rgba(63, 125, 95, .28);color-scheme:light}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;height:100%}body{margin:0;min-height:100%;background:var(--cream);color:var(--ink);font-family:var(--font-body);font-size:15px;line-height:1.55;font-weight:450;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}#root{min-height:100vh}img,svg,video{display:block;max-width:100%}svg{flex-shrink:0}button,input,select,textarea{font:inherit;color:inherit;letter-spacing:inherit}button{background:none;border:none;padding:0;margin:0;cursor:pointer;color:inherit;text-align:inherit}button:disabled{cursor:not-allowed}a{color:var(--green-700);text-decoration:none}a:hover{text-decoration:underline;text-underline-offset:2px}ul,ol{margin:0;padding:0;list-style:none}p{margin:0}h1,h2,h3,h4,h5,h6{margin:0;font-weight:400;color:var(--ink)}code,pre,kbd{font-family:var(--font-mono);font-size:.86em}code{background:var(--cream-2);border:1px solid var(--line);border-radius:5px;padding:1px 6px;color:var(--green-900)}pre{margin:0;background:var(--cream-2);border:1px solid var(--line);border-radius:var(--r-sm);padding:var(--space-3) var(--space-4);overflow:auto;white-space:pre-wrap;word-break:break-word;line-height:1.5}pre code{background:none;border:none;padding:0}hr{border:none;border-top:1px solid var(--line);margin:var(--space-6) 0}small{font-size:12.5px}strong{font-weight:600}::selection{background:#3f7d5f38;color:var(--ink)}:focus{outline:none}:focus-visible{outline:2px solid var(--green-500);outline-offset:2px}h1{font-family:var(--font-display);font-size:clamp(30px,3.6vw,40px);line-height:1.08;letter-spacing:-.01em}h2{font-family:var(--font-display);font-size:clamp(22px,2.4vw,27px);line-height:1.18;letter-spacing:-.005em}h3{font-family:var(--font-display);font-size:19px;line-height:1.25}h4{font-family:var(--font-body);font-size:15px;font-weight:600;line-height:1.35}h5{font-family:var(--font-body);font-size:11px;font-weight:650;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}h1 em,h2 em,h3 em{font-style:italic;color:var(--accent)}input:where(:not([type=checkbox]):not([type=radio]):not([type=range])),select,textarea{width:100%;background:var(--paper);border:1px solid var(--line-strong);border-radius:var(--r-sm);padding:10px 12px;min-height:42px;color:var(--ink);transition:border-color var(--t-fast) var(--ease),box-shadow var(--t-fast) var(--ease),background-color var(--t-fast) var(--ease)}input::placeholder,textarea::placeholder{color:#9aa39e;opacity:1}input:where(:not([type=checkbox]):not([type=radio])):hover,select:hover,textarea:hover{border-color:#c9bfae}input:where(:not([type=checkbox]):not([type=radio])):focus-visible,select:focus-visible,textarea:focus-visible{outline:none;border-color:var(--green-500);box-shadow:var(--focus-ring)}input:disabled,select:disabled,textarea:disabled{background:var(--cream-2);color:var(--muted);cursor:not-allowed}textarea{resize:vertical;min-height:84px;line-height:1.5}select{appearance:none;-webkit-appearance:none;padding-right:36px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%236b7570' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;cursor:pointer}input[type=date]{cursor:pointer}input[type=date]::-webkit-calendar-picker-indicator{opacity:.6;cursor:pointer}input[type=number]{font-variant-numeric:tabular-nums}input[type=checkbox]{appearance:none;-webkit-appearance:none;width:18px;height:18px;flex-shrink:0;margin:0;border:1.5px solid var(--line-strong);border-radius:5px;background:var(--paper);display:inline-grid;place-items:center;cursor:pointer;transition:background-color var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease)}input[type=checkbox]:after{content:"";width:10px;height:6px;border-left:2px solid var(--paper);border-bottom:2px solid var(--paper);transform:rotate(-45deg) translateY(-1px);opacity:0;transition:opacity var(--t-fast) var(--ease)}input[type=checkbox]:checked{background:var(--green-700);border-color:var(--green-700)}input[type=checkbox]:checked:after{opacity:1}input[type=checkbox]:focus-visible{box-shadow:var(--focus-ring);outline:none}details>summary{cursor:pointer;list-style:none}details>summary::-webkit-details-marker{display:none}table{border-collapse:collapse;width:100%}.button{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:10px 18px;min-height:42px;border-radius:var(--r-pill);border:1px solid transparent;background:transparent;color:var(--ink);font-weight:550;font-size:14.5px;line-height:1.2;white-space:nowrap;text-decoration:none;cursor:pointer;transition:background-color var(--t-fast) var(--ease),color var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease),box-shadow var(--t-fast) var(--ease),transform var(--t-fast) var(--ease)}.button:hover{text-decoration:none;background:var(--cream-2)}.button:active{transform:translateY(1px)}.button:disabled,.button[aria-disabled=true]{opacity:.55;cursor:not-allowed;transform:none;box-shadow:none}.button svg{width:16px;height:16px}.button-primary{background:var(--green-900);color:var(--cream);border-color:var(--green-900);box-shadow:0 6px 16px -8px #173e318c}.button-primary:hover{background:var(--green-700);border-color:var(--green-700);color:#fff}.button-secondary{background:var(--paper);color:var(--green-900);border-color:var(--line-strong);box-shadow:var(--shadow-xs)}.button-secondary:hover{background:var(--green-050);border-color:var(--green-300)}.button-danger{background:var(--danger);color:#fff;border-color:var(--danger)}.button-danger:hover{background:#9a3527;border-color:#9a3527}.button-cream{background:var(--cream);color:var(--green-900);border-color:var(--cream);box-shadow:0 8px 20px -10px #00000059}.button-cream:hover{background:#fff;border-color:#fff}.full-width{width:100%}.icon-button{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;flex-shrink:0;border-radius:var(--r-pill);border:1px solid transparent;background:transparent;color:var(--ink-soft);cursor:pointer;transition:background-color var(--t-fast) var(--ease),color var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease)}.icon-button:hover{background:var(--cream-2);color:var(--green-900)}.icon-button:disabled{opacity:.5;cursor:not-allowed}.icon-button.subtle-danger{color:var(--muted)}.icon-button.subtle-danger:hover{background:var(--danger-soft);color:var(--danger)}.subtle-danger{color:var(--muted)}.text-link{display:inline-flex;align-items:center;gap:5px;background:none;border:none;padding:0;color:var(--green-700);font-weight:550;font-size:14px;cursor:pointer;transition:color var(--t-fast) var(--ease)}.text-link:hover{color:var(--green-900);text-decoration:underline;text-underline-offset:3px}.text-link svg{width:15px;height:15px}.spin{animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.eyebrow{display:inline-block;font-size:11px;font-weight:650;letter-spacing:.14em;text-transform:uppercase;color:var(--green-500);line-height:1.4}.small-pill{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:var(--r-pill);background:var(--green-100);color:var(--green-900);font-size:11px;font-weight:650;letter-spacing:.12em;text-transform:uppercase}.small-tag{display:inline-flex;align-items:center;gap:4px;padding:3px 9px;border-radius:var(--r-pill);background:var(--cream-2);border:1px solid var(--line);color:var(--ink-soft);font-size:11.5px;font-weight:550;letter-spacing:.02em;white-space:nowrap;line-height:1.4}.count-badge{display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:24px;padding:0 8px;border-radius:var(--r-pill);background:var(--green-100);color:var(--green-900);font-size:12px;font-weight:650;font-variant-numeric:tabular-nums}.legend-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--green-500);margin-right:8px;vertical-align:middle}.dot{display:inline-block;margin:0 6px;color:var(--muted)}.muted{color:var(--muted)}.helper-text{color:var(--muted);font-size:13.5px;line-height:1.55}.helper-text em{color:var(--ink);font-style:italic}.info-box,.error-box{display:flex;align-items:flex-start;gap:var(--space-2);padding:12px 14px;border-radius:var(--r-sm);font-size:13.5px;line-height:1.5}.info-box{background:var(--green-050);border:1px solid var(--green-100);color:var(--green-900)}.info-box svg{margin-top:2px;color:var(--green-500)}.error-box{background:var(--danger-soft);border:1px solid rgba(179,64,47,.2);color:var(--danger);font-weight:500}.field{display:flex;flex-direction:column;gap:6px;min-width:0}.field>span{font-size:13px;font-weight:600;color:var(--ink-soft);letter-spacing:.01em}.field>small{color:var(--muted);font-size:12.5px;line-height:1.45}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-4)}form{display:flex;flex-direction:column;gap:var(--space-4)}.form-card{background:var(--paper);border:1px solid var(--line);border-radius:var(--r-lg);padding:var(--space-6);display:flex;flex-direction:column;gap:var(--space-4);box-shadow:var(--shadow-sm)}.form-card>h2{font-size:23px;margin-bottom:2px}.form-card>.button{align-self:flex-start}.optional-checkbox{display:inline-flex;align-items:center;gap:8px;font-size:13.5px;color:var(--ink-soft);cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}.search-box{display:flex;align-items:center;gap:8px;flex:1 1 280px;min-width:0;padding:0 8px 0 14px;min-height:44px;background:var(--paper);border:1px solid var(--line-strong);border-radius:var(--r-pill);color:var(--muted);transition:border-color var(--t-fast) var(--ease),box-shadow var(--t-fast) var(--ease)}.search-box:focus-within{border-color:var(--green-500);box-shadow:var(--focus-ring)}.search-box input{flex:1;min-width:0;min-height:0;border:none;background:transparent;padding:8px 0;color:var(--ink)}.search-box input:focus-visible{box-shadow:none;border:none}.search-box button{width:30px;height:30px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;color:var(--muted);font-size:20px;line-height:1}.search-box button:hover{background:var(--cream-2);color:var(--ink)}.sort-control{display:inline-flex;align-items:center;gap:8px;padding-left:14px;min-height:44px;background:var(--paper);border:1px solid var(--line-strong);border-radius:var(--r-pill);color:var(--muted)}.sort-control select{border:none;background-color:transparent;min-height:0;padding:8px 34px 8px 0;width:auto;font-weight:550;color:var(--ink)}.sort-control select:focus-visible{box-shadow:none}.filter-row{display:flex;flex-wrap:wrap;gap:8px}.filter-chip{display:inline-flex;align-items:center;gap:7px;padding:7px 14px;min-height:36px;border-radius:var(--r-pill);border:1px solid var(--line);background:var(--paper);color:var(--ink-soft);font-size:13.5px;font-weight:550;cursor:pointer;transition:background-color var(--t-fast) var(--ease),color var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease)}.filter-chip:hover{border-color:var(--green-300);color:var(--green-900)}.filter-chip span{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;border-radius:var(--r-pill);background:var(--cream-2);color:var(--muted);font-size:11.5px;font-weight:650}.filter-chip.selected{background:var(--green-900);border-color:var(--green-900);color:var(--cream)}.filter-chip.selected span{background:#ffffff29;color:var(--cream)}.page-header{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--space-6);flex-wrap:wrap;margin-bottom:var(--space-8)}.page-header>div:first-child{display:flex;flex-direction:column;gap:8px;max-width:640px}.page-header h1{margin-top:2px}.page-header p{color:var(--muted);font-size:15.5px;max-width:56ch}.page-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.section-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--space-4);flex-wrap:wrap;margin-bottom:var(--space-4)}.section-heading>div{display:flex;flex-direction:column;gap:6px}.section-heading>span:not(.small-tag):not(.count-badge),.section-heading>svg{color:var(--muted);font-size:13.5px}.section-heading>svg{color:var(--green-500);margin-bottom:6px}.section-heading p{color:var(--muted);font-size:13.5px}.back-link{display:inline-flex;align-items:center;gap:6px;margin-bottom:var(--space-5);color:var(--muted);font-size:13.5px;font-weight:550;transition:color var(--t-fast) var(--ease)}.back-link:hover{color:var(--green-900);text-decoration:none}.back-link svg{transition:transform var(--t-fast) var(--ease)}.back-link:hover svg{transform:translate(-2px)}.loading{display:flex;align-items:center;gap:10px;color:var(--muted);padding:var(--space-6) 0;font-size:14px}.loading svg{color:var(--green-500)}.app-loading{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-4);padding:var(--space-8);text-align:center;color:var(--green-900);background:var(--cream)}.app-loading>svg{color:var(--green-700)}.app-loading h2{font-size:28px}.app-loading p{max-width:48ch;color:var(--muted)}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:10px;padding:var(--space-12) var(--space-6);background:var(--paper);border:1px dashed var(--line-strong);border-radius:var(--r-lg)}.empty-icon{width:60px;height:60px;border-radius:50%;display:grid;place-items:center;background:var(--green-100);color:var(--green-700);margin-bottom:6px}.empty-state h3{font-size:22px}.empty-state p{max-width:44ch;color:var(--muted)}.empty-state .button{margin-top:10px}.modal{position:fixed;inset:0;width:100vw;height:100dvh;max-width:none;max-height:none;margin:0;padding:var(--space-6);border:none;background:#1f2a247a;backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);color:var(--ink);overflow:hidden}.modal[open]{display:grid;place-items:center;animation:modal-fade var(--t) var(--ease)}.modal::backdrop{background:transparent}.modal-inner{width:100%;max-width:560px;max-height:calc(100dvh - 48px);overflow:auto;background:var(--paper);border-radius:var(--r-lg);box-shadow:var(--shadow-lg);padding:var(--space-6) var(--space-8) var(--space-8);display:flex;flex-direction:column;gap:var(--space-4);animation:modal-rise var(--t) var(--ease)}.modal-wide .modal-inner{max-width:860px}.modal-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4);padding-bottom:var(--space-3);border-bottom:1px solid var(--line)}.modal-header h2{font-size:26px}.modal-intro{color:var(--muted);font-size:14.5px;line-height:1.55}.modal-footer{display:flex;align-items:center;justify-content:flex-end;gap:10px;flex-wrap:wrap;padding-top:var(--space-2)}@keyframes modal-fade{0%{opacity:0}to{opacity:1}}@keyframes modal-rise{0%{opacity:0;transform:translateY(14px) scale(.985)}to{opacity:1;transform:none}}.toast{position:fixed;inset:auto auto 28px 50%;margin:0;border:0;width:auto;height:auto;overflow:visible;transform:translate(-50%);z-index:1000;display:flex;align-items:center;gap:10px;max-width:min(92vw,520px);padding:12px 12px 12px 16px;border-radius:var(--r);background:var(--green-900);color:var(--cream);box-shadow:var(--shadow-lg);font-size:14px;font-weight:500;animation:toast-in .26s var(--ease)}.toast>svg:first-child{color:#9fd3b8}.toast span{flex:1;min-width:0}.toast button{width:30px;height:30px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;color:#ffffffbf;transition:background-color var(--t-fast) var(--ease),color var(--t-fast) var(--ease)}.toast button:hover{background:#ffffff24;color:#fff}.toast-error{background:var(--danger);color:#fff}.toast-error>svg:first-child{color:#ffd3c9}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,16px)}to{opacity:1;transform:translate(-50%)}}.macro-strip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.macro-strip>div{display:flex;flex-direction:column;align-items:center;gap:2px;padding:12px 8px;border-radius:var(--r-sm);background:var(--cream);border:1px solid var(--line);text-align:center}.macro-strip strong{font-family:var(--font-display);font-size:21px;font-weight:400;color:var(--green-900);line-height:1.1;font-variant-numeric:tabular-nums}.macro-strip span{font-size:11px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}.app-shell{display:grid;grid-template-columns:var(--sidebar-width) minmax(0,1fr);min-height:100vh;background:var(--cream)}.sidebar{position:sticky;top:0;height:100vh;height:100dvh;overflow-y:auto;display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-6) var(--space-5) var(--space-5);background:var(--green-900);background-image:radial-gradient(120% 60% at 0% 0%,rgba(255,255,255,.06),transparent 60%);color:var(--cream);z-index:40;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.18) transparent}.sidebar :focus-visible,.login-story :focus-visible{outline-color:var(--cream)}.brand{display:inline-flex;align-items:center;gap:10px;font-family:var(--font-display);font-size:30px;line-height:1;color:var(--cream);letter-spacing:-.01em;padding:2px 4px;align-self:flex-start}.brand:hover{text-decoration:none}.brand-icon{width:42px;height:42px;border-radius:13px;display:grid;place-items:center;background:#ffffff1a;border:1px solid rgba(255,255,255,.14);color:#9fd3b8}.brand-period{color:var(--accent);margin-left:-2px}.sidebar-label{margin:var(--space-6) 4px var(--space-2);font-size:10.5px;font-weight:650;letter-spacing:.16em;text-transform:uppercase;color:#f7f3ec8c}.sidebar nav{display:flex;flex-direction:column;gap:3px}.nav-item{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:11px;color:#f7f3eccc;font-weight:500;font-size:14.5px;transition:background-color var(--t-fast) var(--ease),color var(--t-fast) var(--ease)}.nav-item:hover{background:#ffffff12;color:var(--cream);text-decoration:none}.nav-item svg{opacity:.85}.nav-item.active{background:#ffffff1f;color:#fff;font-weight:600;box-shadow:inset 3px 0 0 var(--accent)}.nav-item.active svg{opacity:1;color:#9fd3b8}.nav-item>span:first-of-type{flex:1}.nav-new{flex:0 0 auto;padding:2px 8px;border-radius:var(--r-pill);background:var(--accent);color:#fff;font-size:10px;font-weight:700;letter-spacing:.1em}.sidebar-grow{flex:1;min-height:var(--space-4)}.sidebar-note{display:flex;flex-direction:column;gap:8px;padding:var(--space-4);border-radius:var(--r);background:#ffffff12;border:1px solid rgba(255,255,255,.1);color:var(--cream);transition:background-color var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease)}.sidebar-note:hover{background:#ffffff1c;border-color:#ffffff2e;text-decoration:none}.note-spark{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;background:var(--accent);color:#fff;margin-bottom:2px}.sidebar-note h4{color:#fff;font-size:14.5px}.sidebar-note p{font-size:13px;line-height:1.5;color:#f7f3ecb8}.sidebar-note>span:last-child{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:600;color:#9fd3b8;margin-top:2px}.settings-link{margin-top:var(--space-2)}.profile{display:flex;align-items:center;gap:12px;margin-top:var(--space-2);padding-top:var(--space-4);border-top:1px solid rgba(255,255,255,.12)}.profile>div{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.3}.profile strong{color:#fff;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.profile span{font-size:12px;color:#f7f3ec99}.avatar,.topbar-avatar{width:38px;height:38px;flex-shrink:0;border-radius:50%;display:grid;place-items:center;font-family:var(--font-display);font-size:18px;background:var(--accent);color:#fff}.logout{width:36px;height:36px;flex-shrink:0;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;color:#f7f3ecb3;transition:background-color var(--t-fast) var(--ease),color var(--t-fast) var(--ease)}.logout:hover{background:#ffffff1f;color:#fff}.sidebar-scrim{display:none;position:fixed;inset:0;z-index:35;background:#173e3173;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);cursor:pointer}.main-workspace{min-width:0;display:flex;flex-direction:column;min-height:100vh;background:var(--cream)}.topbar{position:sticky;top:0;z-index:30;height:var(--topbar-height);display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:0 var(--space-8);background:#f7f3ecdb;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}.topbar-left,.topbar-right{display:flex;align-items:center;gap:14px;min-width:0}.mobile-menu{display:none}.breadcrumb{font-size:13.5px;font-weight:550;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.breadcrumb span{color:var(--line-strong);margin:0 6px}.today-date{font-size:13.5px;color:var(--muted);white-space:nowrap}.topbar-avatar{width:34px;height:34px;font-size:16px;background:var(--green-700)}.page-content{width:100%;max-width:var(--content-max);margin:0 auto;padding:var(--space-8) var(--space-8) var(--space-16);flex:1;min-width:0}.page-content.chat-content{display:flex;flex-direction:column;height:calc(100vh - var(--topbar-height));height:calc(100dvh - var(--topbar-height));padding-bottom:var(--space-6);overflow:hidden}.chat-content .page-header{margin-bottom:var(--space-5);flex-shrink:0}.mobile-bottom-nav{display:none;position:fixed;left:0;right:0;bottom:0;z-index:30;height:calc(var(--bottom-nav-height) + env(safe-area-inset-bottom,0px));padding-bottom:env(safe-area-inset-bottom,0px);grid-template-columns:repeat(4,1fr);background:var(--paper);border-top:1px solid var(--line);box-shadow:0 -8px 24px -16px #2d221440}.mobile-bottom-nav a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:var(--muted);font-size:11px;font-weight:600;letter-spacing:.02em;transition:color var(--t-fast) var(--ease)}.mobile-bottom-nav a:hover{text-decoration:none;color:var(--green-700)}.mobile-bottom-nav a.active{color:var(--green-900)}.mobile-bottom-nav a.active svg{color:var(--accent)}.login-page{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);min-height:100vh;min-height:100dvh;background:var(--cream)}.login-story{position:relative;display:flex;flex-direction:column;justify-content:space-between;gap:var(--space-10);padding:var(--space-10) var(--space-12);background:var(--green-900);background-image:radial-gradient(70% 55% at 100% 0%,rgba(217,123,79,.22),transparent 65%),radial-gradient(60% 50% at 0% 100%,rgba(255,255,255,.07),transparent 60%);color:var(--cream);overflow:hidden}.login-story .brand{font-size:32px}.login-story-content{display:flex;flex-direction:column;gap:var(--space-5);max-width:560px;margin:auto 0}.login-story .eyebrow{color:#9fd3b8}.login-story h1{font-size:clamp(44px,5.6vw,76px);line-height:1.02;color:#fff}.login-story h1 em{color:var(--accent)}.login-story-content p{font-size:17px;line-height:1.6;color:#f7f3ecc7;max-width:42ch}.login-bottom{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);font-size:13.5px;color:#f7f3ec99}.login-bottom svg{color:#f7f3ec59}.login-form-side{display:flex;align-items:center;justify-content:center;padding:var(--space-10) var(--space-8);background:var(--cream)}.login-form-wrap{width:100%;max-width:400px;display:flex;flex-direction:column;gap:var(--space-3)}.login-form-wrap .small-pill{align-self:flex-start;margin-bottom:var(--space-3)}.login-form-wrap h2{font-size:38px}.login-form-wrap>p{color:var(--muted);font-size:15.5px;margin-bottom:var(--space-5)}.login-form-wrap form{gap:var(--space-4)}.login-form-wrap input{min-height:46px;background:var(--paper)}.login-submit{margin-top:var(--space-2);min-height:48px;font-size:15.5px}.login-footnote{margin-top:var(--space-6);font-size:13px;color:var(--muted);text-align:center}.plan-layout{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:var(--space-8);align-items:start}.plan-main{min-width:0;display:flex;flex-direction:column;gap:var(--space-4)}.week-toolbar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);flex-wrap:wrap}.week-title{display:flex;align-items:center;gap:10px;color:var(--green-700)}.week-title h2{font-size:24px;color:var(--ink)}.week-controls{display:inline-flex;align-items:center;gap:4px;padding:4px;background:var(--paper);border:1px solid var(--line);border-radius:var(--r-pill);box-shadow:var(--shadow-xs)}.week-controls .icon-button{width:34px;height:34px}.today-button{padding:6px 14px;border-radius:var(--r-pill);font-size:13.5px;font-weight:600;color:var(--green-900);transition:background-color var(--t-fast) var(--ease)}.today-button:hover{background:var(--green-100)}.plan-selector-bar{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:10px 14px;background:var(--paper);border:1px solid var(--line);border-radius:var(--r);font-size:13.5px;color:var(--muted)}.plan-selector-bar select{width:auto;min-width:200px;max-width:100%;min-height:38px;padding-top:7px;padding-bottom:7px;font-weight:550;color:var(--ink);background-color:var(--cream);border-color:transparent}.plan-selector-bar>span{display:inline-flex;align-items:center;gap:6px}.plan-selector-bar .icon-button{width:32px;height:32px}.plan-count{margin-left:auto;padding:4px 10px;border-radius:var(--r-pill);background:var(--green-100);color:var(--green-900);font-weight:600;font-size:12.5px}.calendar-scroll{overflow-x:auto;overscroll-behavior-x:contain;margin:0 calc(var(--space-2) * -1);padding:var(--space-1) var(--space-2) var(--space-3);scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent}.week-grid{display:grid;grid-template-columns:repeat(7,minmax(150px,1fr));gap:10px;min-width:1080px}.day-column{display:flex;flex-direction:column;min-width:0;background:var(--paper);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow-xs);transition:box-shadow var(--t) var(--ease),border-color var(--t) var(--ease),opacity var(--t) var(--ease)}.day-column:hover{box-shadow:var(--shadow-sm)}.day-today{border-color:var(--green-500);box-shadow:0 0 0 1px var(--green-500),var(--shadow-sm)}.day-outside{opacity:.55;background:var(--cream)}.day-heading{position:relative;display:flex;align-items:baseline;gap:6px;padding:12px 14px 10px;border-bottom:1px solid var(--line)}.day-heading span{font-size:11px;font-weight:650;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}.day-heading strong{font-family:var(--font-display);font-size:22px;font-weight:400;color:var(--ink);line-height:1}.day-today .day-heading strong{color:var(--green-700)}.day-heading i{position:absolute;right:14px;top:50%;width:8px;height:8px;margin-top:-4px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 4px var(--accent-soft)}.day-meals{display:flex;flex-direction:column;gap:10px;padding:12px 10px;flex:1}.meal-slot{display:flex;flex-direction:column;gap:6px}.slot-label{font-size:10.5px;font-weight:650;letter-spacing:.12em;text-transform:uppercase;color:var(--green-500);padding:0 2px}.scheduled-meal{position:relative;border-radius:10px;background:var(--cream);border:1px solid var(--line);overflow:hidden;transition:border-color var(--t-fast) var(--ease),box-shadow var(--t-fast) var(--ease),transform var(--t-fast) var(--ease)}.scheduled-meal:hover,.scheduled-meal:focus-within{border-color:var(--green-300);box-shadow:var(--shadow-sm);transform:translateY(-1px)}.scheduled-meal>a{display:flex;flex-direction:column;color:inherit}.scheduled-meal>a:hover{text-decoration:none}.scheduled-meal img{width:100%;aspect-ratio:16 / 9;object-fit:cover;background:var(--cream-2)}.scheduled-meal-text{display:flex;flex-direction:column;gap:3px;padding:8px 10px 10px}.scheduled-meal-text h3{font-family:var(--font-body);font-size:13px;font-weight:600;line-height:1.3;color:var(--ink);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.scheduled-meal-text>span{display:inline-flex;align-items:center;gap:4px;font-size:11.5px;color:var(--muted)}.scheduled-meal-text>span span{margin:0 2px}.remove-meal{position:absolute;top:6px;right:6px;width:26px;height:26px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background:#fffdf9eb;color:var(--danger);box-shadow:var(--shadow-sm);opacity:0;transform:scale(.85);transition:opacity var(--t-fast) var(--ease),transform var(--t-fast) var(--ease),background-color var(--t-fast) var(--ease)}.scheduled-meal:hover .remove-meal,.scheduled-meal:focus-within .remove-meal,.remove-meal:focus-visible{opacity:1;transform:none}.remove-meal:hover{background:var(--danger);color:#fff}.add-meal-cell{display:flex;align-items:center;justify-content:center;gap:6px;min-height:64px;padding:8px;border:1.5px dashed var(--line-strong);border-radius:10px;color:var(--muted);font-size:12.5px;font-weight:550;transition:border-color var(--t-fast) var(--ease),color var(--t-fast) var(--ease),background-color var(--t-fast) var(--ease)}.add-meal-cell:hover:not(:disabled){border-color:var(--green-500);color:var(--green-900);background:var(--green-050)}.add-meal-cell:disabled{opacity:.5}.add-meal-cell.compact{min-height:34px;padding:4px 8px;font-size:11.5px;border-width:1px}.add-meal-cell.compact svg{width:14px;height:14px}.extra-meal{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:8px;background:var(--accent-soft);font-size:12.5px}.extra-meal .slot-label{color:var(--accent-deep)}.extra-meal a{flex:1;min-width:0;color:var(--ink);font-weight:550;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.extra-meal .icon-button{width:26px;height:26px;color:var(--accent-deep)}.day-nutrition{display:flex;flex-direction:column;gap:6px;padding:10px 14px 12px;border-top:1px solid var(--line);background:var(--cream);border-radius:0 0 var(--r) var(--r);font-size:12px;color:var(--muted)}.day-nutrition strong{font-family:var(--font-display);font-size:18px;font-weight:400;color:var(--ink);line-height:1.1}.day-nutrition strong span{font-family:var(--font-body);font-size:11px;color:var(--muted)}.day-progress{width:100%;height:5px;border-radius:var(--r-pill);background:var(--cream-3);overflow:hidden}.day-progress i{display:block;height:100%;border-radius:var(--r-pill);background:linear-gradient(90deg,var(--green-500),var(--green-700));transition:width var(--t) var(--ease)}.calendar-footer{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);flex-wrap:wrap;font-size:13px;color:var(--muted)}.calendar-footer a{display:inline-flex;align-items:center;gap:4px;font-weight:550}.start-plan-banner{display:flex;align-items:center;gap:var(--space-5);flex-wrap:wrap;padding:var(--space-5) var(--space-6);border-radius:var(--r-lg);background:var(--paper);border:1px solid var(--line);box-shadow:var(--shadow-sm)}.start-plan-banner>div:not(.start-plan-icon){flex:1;min-width:220px}.start-plan-banner h3{font-size:22px;margin-bottom:4px}.start-plan-banner p{color:var(--muted);font-size:14px}.start-plan-icon{width:56px;height:56px;flex-shrink:0;border-radius:16px;display:grid;place-items:center;background:var(--green-100);color:var(--green-700)}.inspiration-section{margin-top:var(--space-6)}.inspiration-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-4)}.inspiration-card{position:relative;display:flex;flex-direction:column;background:var(--paper);border:1px solid var(--line);border-radius:var(--r);overflow:hidden;box-shadow:var(--shadow-xs);transition:box-shadow var(--t) var(--ease),transform var(--t) var(--ease)}.inspiration-card:hover{box-shadow:var(--shadow);transform:translateY(-2px)}.inspiration-card>a:first-child{display:block}.inspiration-card img{width:100%;aspect-ratio:16 / 10;object-fit:cover;background:var(--cream-2)}.inspiration-card>div{display:flex;flex-direction:column;gap:4px;padding:12px 60px 14px 14px}.inspiration-card h3{font-size:17px;color:var(--ink)}.inspiration-card>div>a:hover{text-decoration:none}.inspiration-card>div>a:hover h3{color:var(--green-700)}.inspiration-meta{display:inline-flex;align-items:center;gap:4px;font-size:12.5px;color:var(--muted)}.inspiration-card .round-add{position:absolute;right:12px;bottom:14px}.collection-shortcut{display:flex;align-items:center;gap:12px;padding:var(--space-4) var(--space-5);border-radius:var(--r);background:var(--green-050);border:1px dashed var(--green-300);color:var(--green-900);font-weight:550}.collection-shortcut:hover{background:var(--green-100);text-decoration:none}.collection-shortcut svg:last-child{margin-left:auto}.plan-aside{display:flex;flex-direction:column;gap:var(--space-4);position:sticky;top:calc(var(--topbar-height) + var(--space-5))}.week-overview{padding:var(--space-6);border-radius:var(--r-lg);background:var(--green-900);background-image:radial-gradient(80% 60% at 100% 0%,rgba(255,255,255,.08),transparent 60%);color:var(--cream);box-shadow:var(--shadow)}.aside-title{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:var(--space-4);font-size:10.5px;font-weight:650;letter-spacing:.16em;text-transform:uppercase;color:#9fd3b8}.week-overview h2{color:#fff;font-size:28px;margin-bottom:6px}.week-overview>p{color:#f7f3ecb8;font-size:14px;margin-bottom:var(--space-5)}.overview-stat{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 0;border-top:1px solid rgba(255,255,255,.12)}.overview-stat span{display:inline-flex;align-items:center;gap:8px;font-size:13.5px;color:#f7f3eccc}.overview-stat strong{font-family:var(--font-display);font-size:24px;font-weight:400;color:#fff;font-variant-numeric:tabular-nums}.overview-stat small{font-family:var(--font-body);font-size:12px;color:#f7f3ec99}.week-overview-note{display:flex;align-items:flex-start;gap:8px;margin-top:var(--space-4);padding:12px;border-radius:10px;background:#ffffff14;font-size:12.5px;line-height:1.45;color:#f7f3ecd9}.tiny-icon{width:20px;height:20px;flex-shrink:0;border-radius:50%;display:inline-grid;place-items:center;background:#9fd3b8;color:var(--green-900)}.assistant-promo{display:flex;flex-direction:column;gap:10px;padding:var(--space-6);border-radius:var(--r-lg);background:linear-gradient(150deg,var(--green-700) 0%,var(--green-900) 70%);color:var(--cream);box-shadow:var(--shadow)}.assistant-promo .eyebrow{color:#9fd3b8}.assistant-promo h2{color:#fff;font-size:28px}.assistant-promo h2 em{color:var(--accent)}.assistant-promo p{font-size:14px;line-height:1.55;color:#f7f3ecc7}.assistant-promo .button{align-self:flex-start;margin-top:6px}.assistant-orb{width:48px;height:48px;border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle at 30% 30%,#f1a882,var(--accent) 60%,var(--accent-deep));color:#fff;box-shadow:0 10px 24px -10px #d97b4fcc;margin-bottom:6px}.assistant-status{display:inline-flex;align-items:center;gap:8px;font-size:12.5px;color:#f7f3ecb3}.assistant-status i{width:8px;height:8px;border-radius:50%;background:#9fd3b8;box-shadow:0 0 0 3px #9fd3b840}.shop-shortcut{display:flex;align-items:flex-start;gap:12px;padding:var(--space-4) var(--space-5);border-radius:var(--r);background:var(--paper);border:1px solid var(--line);color:var(--green-700)}.shop-shortcut>div{display:flex;flex-direction:column;gap:3px}.shop-shortcut h4{font-size:14.5px}.shop-shortcut p{font-size:13px;color:var(--muted)}.shop-shortcut a{display:inline-flex;align-items:center;gap:4px;margin-top:4px;font-size:13px;font-weight:600}.recipe-picker{display:flex;flex-direction:column;gap:6px;max-height:320px;overflow-y:auto;padding:4px;margin:0 -4px;scrollbar-width:thin}.recipe-picker-item{display:flex;align-items:center;gap:12px;padding:8px 10px;border-radius:12px;border:1px solid var(--line);background:var(--paper);text-align:left;transition:border-color var(--t-fast) var(--ease),background-color var(--t-fast) var(--ease)}.recipe-picker-item:hover{border-color:var(--green-300);background:var(--green-050)}.recipe-picker-item img{width:52px;height:52px;flex-shrink:0;border-radius:10px;object-fit:cover;background:var(--cream-2)}.recipe-picker-item>div{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.recipe-picker-item strong{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.recipe-picker-item>div span{font-size:12.5px;color:var(--muted)}.picker-check{width:32px;height:32px;flex-shrink:0;border-radius:50%;display:inline-grid;place-items:center;border:1px solid var(--line-strong);color:var(--muted);transition:background-color var(--t-fast) var(--ease),color var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease)}.recipe-picker-item.selected{border-color:var(--green-700);background:var(--green-050);box-shadow:0 0 0 1px var(--green-700)}.recipe-picker-item.selected .picker-check{background:var(--green-700);border-color:var(--green-700);color:#fff}.recipe-picker .muted{padding:var(--space-4);text-align:center;font-size:14px}.recipe-library-toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:var(--space-4)}.collection-meta{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);flex-wrap:wrap;margin:var(--space-5) 0 var(--space-4);font-size:13.5px;color:var(--muted)}.collection-meta span{display:inline-flex;align-items:center;gap:6px}.recipe-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:var(--space-5)}.recipe-card{display:flex;flex-direction:column;background:var(--paper);border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--shadow-xs);transition:box-shadow var(--t) var(--ease),transform var(--t) var(--ease),border-color var(--t) var(--ease)}.recipe-card:hover{box-shadow:var(--shadow);transform:translateY(-3px);border-color:var(--line-strong)}.recipe-cover{position:relative;display:block;aspect-ratio:4 / 3;overflow:hidden;background:var(--cream-2)}.recipe-cover img{width:100%;height:100%;object-fit:cover;transition:transform .4s var(--ease)}.recipe-card:hover .recipe-cover img{transform:scale(1.04)}.recipe-time{position:absolute;left:12px;bottom:12px;display:inline-flex;align-items:center;gap:5px;padding:5px 10px;border-radius:var(--r-pill);background:#fffdf9f0;color:var(--green-900);font-size:12px;font-weight:600;box-shadow:var(--shadow-sm)}.recipe-leaf{position:absolute;top:12px;right:12px;width:32px;height:32px;border-radius:50%;display:grid;place-items:center;background:#fffdf9f0;color:var(--green-700);box-shadow:var(--shadow-sm)}.recipe-card-body{display:flex;flex-direction:column;gap:6px;padding:16px 18px 18px;flex:1}.recipe-tags{font-size:11px;font-weight:650;letter-spacing:.12em;text-transform:uppercase;color:var(--accent-deep)}.recipe-title-link{color:inherit}.recipe-title-link:hover{text-decoration:none}.recipe-title-link h3{font-size:20px;line-height:1.2;transition:color var(--t-fast) var(--ease)}.recipe-title-link:hover h3{color:var(--green-700)}.recipe-card-body>p{color:var(--muted);font-size:13.5px;line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.recipe-card-footer{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:auto;padding-top:12px;font-size:12.5px;color:var(--muted)}.recipe-card-footer>span{display:inline-flex;align-items:center;gap:5px}.recipe-card-footer svg{color:var(--accent)}.round-add,.recipe-arrow{width:38px;height:38px;flex-shrink:0;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;transition:background-color var(--t-fast) var(--ease),color var(--t-fast) var(--ease),transform var(--t-fast) var(--ease),box-shadow var(--t-fast) var(--ease)}.round-add{background:var(--green-900);color:var(--cream);font-size:22px;line-height:1;font-weight:400;box-shadow:0 6px 14px -8px #173e3199}.round-add:hover{background:var(--green-700);transform:scale(1.06)}.recipe-arrow{border:1px solid var(--line-strong);color:var(--green-900)}.recipe-arrow:hover{background:var(--green-900);border-color:var(--green-900);color:var(--cream);text-decoration:none}.recipe-detail-layout{display:grid;grid-template-columns:minmax(0,1fr) 380px;gap:var(--space-8);align-items:start}.recipe-detail-main{min-width:0;display:flex;flex-direction:column;gap:var(--space-8)}.detail-hero{position:relative;border-radius:var(--r-lg);overflow:hidden;background:var(--cream-2);box-shadow:var(--shadow)}.detail-hero img{width:100%;aspect-ratio:16 / 9;object-fit:cover}.detail-hero-tags{position:absolute;left:16px;bottom:16px;display:flex;flex-wrap:wrap;gap:6px}.detail-hero-tags span{padding:5px 12px;border-radius:var(--r-pill);background:#fffdf9eb;color:var(--green-900);font-size:12px;font-weight:600;text-transform:capitalize;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.recipe-detail-heading{display:flex;flex-direction:column;gap:10px;max-width:720px}.recipe-detail-heading h1{font-size:clamp(32px,4vw,46px)}.recipe-detail-heading>p{font-size:16.5px;color:var(--ink-soft);line-height:1.6}.recipe-detail-meta{display:flex;flex-wrap:wrap;gap:8px 22px;margin-top:6px;font-size:14px;color:var(--muted)}.recipe-detail-meta span{display:inline-flex;align-items:center;gap:7px}.recipe-detail-meta svg{color:var(--green-500)}.instructions-section .section-heading{margin-bottom:var(--space-5)}.cooking-steps{display:flex;flex-direction:column;counter-reset:step}.cooking-steps li{display:grid;grid-template-columns:56px minmax(0,1fr);gap:var(--space-4);padding:var(--space-5) 0;border-top:1px solid var(--line)}.cooking-steps li:last-child{border-bottom:1px solid var(--line)}.cooking-steps li>span{font-family:var(--font-display);font-size:30px;line-height:1;color:var(--accent)}.cooking-steps p{font-size:16px;line-height:1.65;color:var(--ink)}.recipe-detail-aside{display:flex;flex-direction:column;gap:var(--space-4);position:sticky;top:calc(var(--topbar-height) + var(--space-5))}.recipe-edit-actions{display:flex;align-items:center;gap:8px}.recipe-edit-actions .button{flex:1}.ingredients-panel,.nutrition-panel{padding:var(--space-5);border-radius:var(--r-lg);background:var(--paper);border:1px solid var(--line);box-shadow:var(--shadow-sm)}.ingredients-panel .section-heading h2,.nutrition-panel .section-heading h3{font-size:22px}.servings-control{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 8px 8px 14px;margin-bottom:var(--space-3);border-radius:var(--r);background:var(--cream);font-size:13.5px;font-weight:600;color:var(--ink-soft)}.servings-control>div{display:inline-flex;align-items:center;gap:4px;background:var(--paper);border:1px solid var(--line);border-radius:var(--r-pill);padding:3px}.servings-control button{width:30px;height:30px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;color:var(--green-900);transition:background-color var(--t-fast) var(--ease)}.servings-control button:hover:not(:disabled){background:var(--green-100)}.servings-control button:disabled{opacity:.4}.servings-control input{width:48px;min-height:0;padding:4px 0;text-align:center;border:none;background:transparent;font-weight:650;-moz-appearance:textfield}.servings-control input::-webkit-outer-spin-button,.servings-control input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.servings-control input:focus-visible{box-shadow:none}.ingredient-checklist{display:flex;flex-direction:column}.ingredient-checklist li{display:flex;align-items:flex-start;gap:12px;padding:11px 0;border-top:1px solid var(--line);font-size:14.5px;transition:opacity var(--t-fast) var(--ease)}.ingredient-checklist li:first-child{border-top:none}.ingredient-checklist li>span{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;color:var(--ink)}.ingredient-checklist li>span small{color:var(--muted);font-size:12.5px}.ingredient-checklist li>strong{white-space:nowrap;font-size:13.5px;color:var(--green-900);font-variant-numeric:tabular-nums;padding-top:1px}.ingredient-checkbox{width:24px;height:24px;flex-shrink:0;margin-top:1px;border-radius:7px;border:1.5px solid var(--line-strong);background:var(--paper);display:inline-grid;place-items:center;color:#fff;transition:background-color var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease)}.ingredient-checkbox:hover{border-color:var(--green-500)}.ingredient-checked .ingredient-checkbox{background:var(--green-700);border-color:var(--green-700)}.ingredient-checked>span{text-decoration:line-through;text-decoration-color:var(--line-strong);color:var(--muted)}.ingredient-checked>strong{color:var(--muted)}.ingredients-panel .helper-text{margin-top:var(--space-3);font-size:12.5px}.nutrition-source{display:flex;align-items:center;margin-top:var(--space-3);font-size:12.5px;color:var(--muted)}.nutrition-warning{display:flex;flex-direction:column;gap:6px;margin-top:var(--space-4);padding:12px 14px;border-radius:var(--r-sm);background:var(--amber-soft);border:1px solid rgba(183,121,31,.25);font-size:13px;color:#7a4f10}.nutrition-warning strong{color:#5e3c0a}.nutrition-warning p{line-height:1.45}.nutrition-warning a{display:inline-flex;align-items:center;gap:4px;margin-top:4px;font-weight:600;color:var(--amber)}.recipe-editor{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:var(--space-8);align-items:start}.editor-main{min-width:0;display:flex;flex-direction:column;gap:var(--space-5)}.editor-aside{position:sticky;top:calc(var(--topbar-height) + var(--space-5))}.save-recipe-card{display:flex;flex-direction:column;gap:10px;padding:var(--space-6);border-radius:var(--r-lg);background:var(--green-900);background-image:radial-gradient(80% 60% at 100% 0%,rgba(255,255,255,.08),transparent 60%);color:var(--cream);box-shadow:var(--shadow)}.save-recipe-card h2{color:#fff;font-size:26px}.save-recipe-card p{font-size:13.5px;line-height:1.55;color:#f7f3ecbf;margin-bottom:8px}.save-recipe-card .button-primary{background:var(--accent);border-color:var(--accent);color:#fff;box-shadow:0 10px 22px -10px #d97b4fcc}.save-recipe-card .button-primary:hover{background:var(--accent-deep);border-color:var(--accent-deep)}.save-recipe-card .button:not(.button-primary){color:#f7f3ecd9;border-color:#fff3}.save-recipe-card .button:not(.button-primary):hover{background:#ffffff1a;color:#fff}.ingredient-editor-labels,.ingredient-editor-row{display:grid;grid-template-columns:minmax(0,1fr) 110px 96px 38px;gap:8px 10px;align-items:start}.ingredient-editor-labels{margin-bottom:-6px}.ingredient-editor-labels span{font-size:12px;font-weight:600;letter-spacing:.02em;color:var(--muted)}.ingredient-editor-row{padding:12px 0;border-top:1px solid var(--line)}.ingredient-editor-row>.icon-button{margin-top:2px}.ingredient-autocomplete{position:relative;display:flex;flex-direction:column;gap:4px;min-width:0}.ingredient-autocomplete small{color:var(--amber);font-size:12px}.ingredient-note-input{grid-column:1 / 3}.ingredient-editor-row .optional-checkbox{grid-column:3 / 5;align-self:center;justify-self:start;padding-left:2px}.step-editor-row{display:grid;grid-template-columns:40px minmax(0,1fr) 38px;gap:10px;align-items:start}.step-editor-row>span{font-family:var(--font-display);font-size:24px;line-height:1;color:var(--accent);padding-top:10px}.step-editor-row textarea{min-height:72px}.step-editor-row .icon-button{margin-top:2px}.shopping-layout{display:grid;grid-template-columns:300px minmax(0,1fr);gap:var(--space-8);align-items:start}.shopping-list-sidebar{display:flex;flex-direction:column;gap:8px;position:sticky;top:calc(var(--topbar-height) + var(--space-5))}.shopping-list-sidebar .section-heading{align-items:center;margin-bottom:4px}.shopping-list-sidebar .section-heading h3{font-size:20px}.saved-list-item{display:flex;align-items:flex-start;gap:12px;padding:12px;border-radius:var(--r);border:1px solid var(--line);background:var(--paper);text-align:left;transition:border-color var(--t-fast) var(--ease),box-shadow var(--t-fast) var(--ease),background-color var(--t-fast) var(--ease)}.saved-list-item:hover{border-color:var(--green-300);box-shadow:var(--shadow-sm)}.saved-list-item.active{border-color:var(--green-700);box-shadow:0 0 0 1px var(--green-700);background:var(--green-050)}.saved-list-item>div:last-child{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}.saved-list-item strong{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.saved-list-item>div>span:not(.status-label){font-size:12.5px;color:var(--muted)}.saved-list-icon{width:38px;height:38px;flex-shrink:0;border-radius:11px;display:grid;place-items:center;background:var(--cream-2);color:var(--green-700)}.saved-list-item.active .saved-list-icon{background:var(--green-700);color:#fff}.status-label{align-self:flex-start;margin-top:3px;padding:2px 9px;border-radius:var(--r-pill);font-size:11px;font-weight:650;letter-spacing:.06em;text-transform:uppercase;background:var(--cream-2);color:var(--ink-soft)}.status-draft{background:var(--green-100);color:var(--green-900)}.status-shopping{background:var(--amber-soft);color:var(--amber)}.status-done{background:var(--green-700);color:#fff}.status-abandoned{background:var(--cream-2);color:var(--muted)}.history-memory-note{display:flex;flex-direction:column;gap:6px;margin-top:var(--space-3);padding:var(--space-4) var(--space-5);border-radius:var(--r);background:var(--green-100);color:var(--green-900)}.memory-icon{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;background:var(--paper);color:var(--green-700);margin-bottom:4px}.history-memory-note h4{font-size:14.5px;color:var(--green-900)}.history-memory-note p{font-size:13px;line-height:1.5;color:var(--green-800)}.history-memory-note a{display:inline-flex;align-items:center;gap:4px;margin-top:2px;font-size:13px;font-weight:600}.shopping-main{min-width:0;display:flex;flex-direction:column;gap:var(--space-5)}.shopping-sheet{background:var(--paper);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow);padding:var(--space-6) var(--space-8) var(--space-6);display:flex;flex-direction:column;gap:var(--space-5);background-image:linear-gradient(to bottom,rgba(255,255,255,.6),transparent 120px)}.shopping-sheet-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4)}.shopping-sheet-header>div{display:flex;flex-direction:column;gap:6px}.shopping-sheet-header h2{font-size:30px}.shopping-sheet-header p{color:var(--muted);font-size:14px}.retailer-logo{width:56px;height:56px;flex-shrink:0;border-radius:14px;display:grid;place-items:center;background:var(--green-900);color:#fff;font-weight:700;letter-spacing:.02em;font-size:14px;box-shadow:var(--shadow-sm)}.retailer-aldi_ch{background:var(--aldi);font-size:13px;letter-spacing:.08em}.retailer-migros{background:var(--migros);font-family:var(--font-display);font-size:30px;font-weight:400}.retailer-coop{background:var(--coop);font-size:16px;text-transform:lowercase}.shopping-progress-row{display:flex;align-items:center;gap:14px;font-size:13px;font-weight:600;color:var(--green-900);white-space:nowrap}.shopping-progress{flex:1;height:8px;border-radius:var(--r-pill);background:var(--cream-2);overflow:hidden}.shopping-progress i{display:block;height:100%;border-radius:var(--r-pill);background:linear-gradient(90deg,var(--green-500),var(--green-900));transition:width .3s var(--ease)}.shopping-controls{display:flex;align-items:center;gap:var(--space-4);flex-wrap:wrap}.shopping-controls .search-box{flex:1 1 240px;min-height:40px}.show-checked{display:inline-flex;align-items:center;gap:8px;font-size:13.5px;font-weight:550;color:var(--ink-soft);cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}.shopping-category{display:flex;flex-direction:column}.category-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 0;border-bottom:1px solid var(--line-strong);margin-bottom:4px}.category-heading>span{display:inline-flex;align-items:center;gap:8px;font-size:12px;font-weight:650;letter-spacing:.12em;text-transform:uppercase;color:var(--green-700)}.category-heading small{color:var(--muted);font-weight:600}.shopping-row{display:grid;grid-template-columns:44px minmax(0,1fr) auto 38px;gap:8px 10px;align-items:center;padding:10px 0;border-bottom:1px solid var(--line);transition:opacity var(--t) var(--ease)}.shopping-row:last-child{border-bottom:none}.shopping-checkbox{width:44px;height:44px;display:inline-grid;place-items:center;border-radius:12px;color:#fff;position:relative}.shopping-checkbox:before{content:"";width:26px;height:26px;border-radius:8px;border:1.5px solid var(--line-strong);background:var(--paper);transition:background-color var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease)}.shopping-checkbox svg{position:absolute}.shopping-checkbox:hover:before{border-color:var(--green-500)}.shopping-checkbox:disabled{opacity:.6}.shopping-row-checked .shopping-checkbox:before{background:var(--green-700);border-color:var(--green-700)}.shopping-item-text{min-width:0;display:flex;flex-direction:column;gap:2px}.shopping-item-text strong{font-size:15px;color:var(--ink);transition:color var(--t-fast) var(--ease)}.shopping-item-text>span{font-size:12.5px;color:var(--muted)}.shopping-row-checked .shopping-item-text strong{color:var(--muted);text-decoration:line-through;text-decoration-color:var(--line-strong)}.shopping-row-checked .shopping-item-amount{opacity:.55}.shopping-item-text .unmapped-label{color:var(--amber);font-style:italic}.shopping-item-text .leftover-hint{display:inline-flex;align-items:center;gap:5px;color:var(--green-700);font-weight:550}.shopping-item-text .item-note{display:inline-flex;align-self:flex-start;margin-top:3px;padding:3px 9px;border-radius:6px;background:var(--amber-soft);color:#7a4f10;font-size:12.5px}.note-editor{display:flex;align-items:center;gap:10px;margin-top:6px}.note-editor input{min-height:36px;padding:6px 10px;font-size:13.5px}.shopping-item-amount{display:flex;flex-direction:column;align-items:flex-end;gap:2px;text-align:right;white-space:nowrap}.shopping-item-amount strong{font-size:14px;color:var(--green-900);font-variant-numeric:tabular-nums}.shopping-item-amount span{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}.note-button{width:36px;height:36px;color:var(--muted)}.shopping-sheet-footer{display:flex;align-items:center;gap:10px;padding-top:var(--space-4);border-top:1px dashed var(--line-strong);font-size:12.5px;color:var(--muted)}.shopping-sheet-footer svg{color:var(--green-500)}.shopping-sheet .empty-state{border:none;background:transparent;padding:var(--space-8) var(--space-4)}.shopping-summary{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-6);flex-wrap:wrap;padding:var(--space-6);border-radius:var(--r-lg);background:var(--green-900);background-image:radial-gradient(70% 70% at 100% 0%,rgba(255,255,255,.08),transparent 60%);color:var(--cream);box-shadow:var(--shadow)}.shopping-summary>div:first-child{flex:1 1 280px;display:flex;flex-direction:column;gap:8px}.shopping-summary .eyebrow{color:#9fd3b8}.shopping-summary h3{font-size:24px;color:#fff;max-width:30ch}.price-warning{font-size:13px;line-height:1.5;color:#f4cdb8}.basket-totals{display:flex;gap:var(--space-6);flex-wrap:wrap}.basket-totals>div{display:flex;flex-direction:column;gap:4px;min-width:140px;padding:14px 18px;border-radius:var(--r);background:#ffffff14;border:1px solid rgba(255,255,255,.12)}.basket-totals span{font-size:11px;font-weight:650;letter-spacing:.12em;text-transform:uppercase;color:#f7f3eca6}.basket-totals strong{font-family:var(--font-display);font-size:26px;font-weight:400;color:#fff;font-variant-numeric:tabular-nums}.shopping-bottom-actions{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);flex-wrap:wrap}.export-links{display:flex;gap:8px;flex-wrap:wrap}.export-links a{display:inline-flex;align-items:center;gap:7px;padding:9px 14px;border-radius:var(--r-pill);border:1px solid var(--line-strong);background:var(--paper);color:var(--green-900);font-size:13.5px;font-weight:550;transition:background-color var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease)}.export-links a:hover{background:var(--green-050);border-color:var(--green-300);text-decoration:none}.shopping-status-actions{display:flex;gap:10px;flex-wrap:wrap}.abandon-list{align-self:center;font-size:13px;color:var(--muted);text-decoration:underline;text-decoration-color:var(--line-strong);text-underline-offset:3px;transition:color var(--t-fast) var(--ease)}.abandon-list:hover{color:var(--danger);text-decoration-color:currentColor}.shopping-tip{display:flex;align-items:flex-start;gap:14px;padding:var(--space-4) var(--space-5);border-radius:var(--r);background:var(--paper);border:1px solid var(--line);color:var(--green-700)}.shopping-tip>div{flex:1;min-width:0}.shopping-tip strong{display:block;color:var(--ink);font-size:14px;margin-bottom:2px}.shopping-tip p{font-size:13px;color:var(--muted);line-height:1.5}.shopping-tip>a{display:inline-flex;align-items:center;gap:4px;align-self:center;font-size:13px;font-weight:600;white-space:nowrap}.assistant-config-tag{display:inline-flex;align-items:center;gap:8px;padding:7px 14px;border-radius:var(--r-pill);background:var(--amber-soft);color:var(--amber);font-size:13px;font-weight:600;white-space:nowrap}.assistant-config-tag i{width:8px;height:8px;border-radius:50%;background:var(--amber);box-shadow:0 0 0 3px #b7791f33}.assistant-config-tag.configured{background:var(--green-100);color:var(--green-900)}.assistant-config-tag.configured i{background:var(--green-500);box-shadow:0 0 0 3px #3f7d5f38}.chat-layout{display:grid;grid-template-columns:280px minmax(0,1fr);gap:var(--space-6);flex:1;min-height:0;align-items:stretch}.conversation-sidebar{display:flex;flex-direction:column;gap:var(--space-3);min-height:0}.conversation-label{display:flex;align-items:center;justify-content:space-between;margin-top:var(--space-2);padding:0 4px;font-size:10.5px;font-weight:650;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}.conversation-label span{padding:1px 8px;border-radius:var(--r-pill);background:var(--cream-2);letter-spacing:0;font-size:11px}.conversation-list{display:flex;flex-direction:column;gap:6px;flex:1;min-height:80px;overflow-y:auto;padding:2px;margin:-2px;scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent}.conversation-item{display:flex;align-items:flex-start;gap:10px;padding:10px 12px;border-radius:12px;border:1px solid transparent;color:var(--ink-soft);text-align:left;transition:background-color var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease)}.conversation-item svg{margin-top:3px;color:var(--muted)}.conversation-item:hover{background:var(--paper);border-color:var(--line)}.conversation-item:disabled{opacity:.6}.conversation-item.active{background:var(--paper);border-color:var(--green-300);box-shadow:var(--shadow-sm)}.conversation-item.active svg{color:var(--green-700)}.conversation-item>div{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.conversation-item strong{font-size:13.5px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.conversation-item span{font-size:12px;color:var(--muted)}.conversation-empty{padding:var(--space-4);font-size:13px;color:var(--muted);line-height:1.5;text-align:center;border:1px dashed var(--line-strong);border-radius:var(--r)}.chat-memory-card{display:flex;flex-direction:column;gap:8px;padding:var(--space-5);border-radius:var(--r);background:var(--green-100);color:var(--green-900)}.chat-memory-card>svg{color:var(--green-700);margin-bottom:2px}.chat-memory-card h4{font-size:14.5px;color:var(--green-900)}.chat-memory-card p{font-size:13px;line-height:1.5;color:var(--green-800)}.chat-memory-card span{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;font-weight:550}.chat-memory-card span svg{color:var(--green-500)}.chat-panel{display:flex;flex-direction:column;min-height:0;min-width:0;background:var(--paper);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);overflow:hidden}.chat-panel-header{display:flex;align-items:center;gap:12px;padding:14px var(--space-6);border-bottom:1px solid var(--line);background:var(--paper);flex-shrink:0}.chat-panel-header>div:not(.assistant-mini-avatar){flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.3}.chat-panel-header strong{font-size:14.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-panel-header>div>span{font-size:12.5px;color:var(--muted)}.assistant-mini-avatar{width:38px;height:38px;flex-shrink:0;border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle at 30% 30%,#f1a882,var(--accent) 60%,var(--accent-deep));color:#fff}.chat-saved{display:inline-flex;align-items:center;gap:5px;font-size:12px;color:var(--muted);white-space:nowrap}.chat-setup-banner{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px var(--space-6);background:var(--amber-soft);border-bottom:1px solid rgba(183,121,31,.2);color:#7a4f10;font-size:13.5px;flex-shrink:0}.chat-setup-banner svg{color:var(--amber)}.chat-setup-banner span{flex:1;min-width:200px}.chat-setup-banner a{display:inline-flex;align-items:center;gap:4px;font-weight:600;color:var(--amber)}.chat-messages{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:var(--space-5);padding:var(--space-6);scroll-behavior:smooth;scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent;background:linear-gradient(to bottom,var(--paper),#fdfaf4)}.chat-welcome{margin:auto;max-width:640px;display:flex;flex-direction:column;align-items:center;text-align:center;gap:12px;padding:var(--space-6) 0}.welcome-orb{width:76px;height:76px;border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle at 30% 30%,#f1a882,var(--accent) 55%,var(--accent-deep));color:#fff;box-shadow:0 18px 36px -14px #d97b4fbf;margin-bottom:6px;animation:orb-breathe 4s ease-in-out infinite}@keyframes orb-breathe{0%,to{transform:scale(1)}50%{transform:scale(1.04)}}.chat-welcome h2{font-size:clamp(28px,3vw,36px)}.chat-welcome>p{color:var(--muted);font-size:15px;max-width:48ch}.chat-starters{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;width:100%;margin-top:var(--space-4)}.chat-starters button{display:flex;flex-direction:column;align-items:flex-start;gap:10px;padding:14px;border-radius:var(--r);border:1px solid var(--line);background:var(--paper);color:var(--green-700);text-align:left;transition:border-color var(--t-fast) var(--ease),box-shadow var(--t-fast) var(--ease),transform var(--t-fast) var(--ease)}.chat-starters button:hover{border-color:var(--green-300);box-shadow:var(--shadow-sm);transform:translateY(-2px)}.chat-starters strong{font-size:14px;color:var(--ink);line-height:1.3}.chat-starters button>svg:last-child{margin-top:auto;align-self:flex-end;color:var(--muted)}.chat-message{display:flex;align-items:flex-start;gap:12px;max-width:100%}.message-avatar{width:34px;height:34px;flex-shrink:0;border-radius:50%;display:grid;place-items:center;font-family:var(--font-display);font-size:16px;background:var(--green-700);color:#fff}.message-assistant .message-avatar{background:radial-gradient(circle at 30% 30%,#f1a882,var(--accent) 60%,var(--accent-deep))}.message-body{min-width:0;max-width:min(100%,760px);display:flex;flex-direction:column;gap:10px;padding:12px 16px 14px;border-radius:18px;background:var(--paper);border:1px solid var(--line);box-shadow:var(--shadow-xs)}.message-assistant .message-body{border-top-left-radius:6px;flex:1}.message-user{flex-direction:row-reverse;align-self:flex-end;max-width:78%}.message-user .message-body{background:var(--green-900);border-color:var(--green-900);color:var(--cream);border-top-right-radius:6px}.message-error .message-body{background:var(--danger-soft);border-color:#b3402f40;color:var(--ink)}.message-author{display:flex;align-items:center;gap:10px;font-size:12px;font-weight:650;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}.message-user .message-author{color:#f7f3ec99;justify-content:flex-end}.message-author span{display:inline-flex;align-items:center;gap:5px;padding:2px 8px;border-radius:var(--r-pill);background:var(--accent-soft);color:var(--accent-deep);font-size:11px;letter-spacing:.02em;text-transform:none}.markdown-message{font-size:15px;line-height:1.6;color:var(--ink);overflow-wrap:anywhere}.message-user .markdown-message{color:var(--cream)}.markdown-message>*+*{margin-top:10px}.markdown-message h1,.markdown-message h2,.markdown-message h3,.markdown-message h4{font-family:var(--font-display);font-weight:400;line-height:1.25;margin-top:16px}.markdown-message h1{font-size:24px}.markdown-message h2{font-size:21px}.markdown-message h3{font-size:18px}.markdown-message h4{font-size:16px;font-family:var(--font-body);font-weight:600}.markdown-message ul,.markdown-message ol{padding-left:22px;display:flex;flex-direction:column;gap:4px}.markdown-message ul{list-style:disc}.markdown-message ol{list-style:decimal}.markdown-message li::marker{color:var(--accent)}.markdown-message a{text-decoration:underline;text-underline-offset:2px}.message-user .markdown-message a{color:#9fd3b8}.markdown-message blockquote{margin:0;padding:4px 14px;border-left:3px solid var(--accent);color:var(--ink-soft);font-style:italic}.markdown-message pre{font-size:12.5px}.markdown-message table{display:block;overflow-x:auto;font-size:13.5px;border:1px solid var(--line);border-radius:var(--r-sm)}.markdown-message th,.markdown-message td{padding:8px 12px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}.markdown-message th{background:var(--cream);font-weight:600}.markdown-message tr:last-child td{border-bottom:none}.markdown-message hr{margin:14px 0}.message-user .markdown-message code{background:#ffffff1f;border-color:#ffffff29;color:var(--cream)}.thinking-dots{display:flex;align-items:center;gap:5px;color:var(--muted);font-size:13.5px;padding:4px 0}.thinking-dots i{width:7px;height:7px;border-radius:50%;background:var(--accent);animation:dot-bounce 1.2s ease-in-out infinite}.thinking-dots i:nth-child(2){animation-delay:.15s}.thinking-dots i:nth-child(3){animation-delay:.3s}.thinking-dots span{margin-left:6px}@keyframes dot-bounce{0%,80%,to{transform:translateY(0);opacity:.5}40%{transform:translateY(-5px);opacity:1}}.trace-group{display:flex;flex-direction:column;gap:6px}.tool-trace{border:1px solid var(--line);border-radius:10px;background:var(--cream);font-size:13px;overflow:hidden;transition:border-color var(--t-fast) var(--ease)}.tool-trace[open]{border-color:var(--line-strong)}.tool-trace summary{display:flex;align-items:center;gap:8px;padding:8px 12px;color:var(--ink-soft);-webkit-user-select:none;user-select:none}.tool-trace summary:hover{background:var(--cream-2)}.tool-trace summary>svg:first-child{color:var(--green-500)}.tool-trace summary strong{flex:1;min-width:0;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tool-trace summary>span{font-size:11.5px;color:var(--muted);white-space:nowrap}.tool-trace summary>svg:last-child{color:var(--muted);transition:transform var(--t-fast) var(--ease)}.tool-trace[open] summary>svg:last-child{transform:rotate(180deg)}.tool-trace>p{padding:10px 12px 0;color:var(--ink);line-height:1.5}.trace-tool-name{display:inline-flex;align-items:center;gap:5px;margin:8px 12px 0;padding:2px 8px;border-radius:6px;background:var(--green-900);color:#9fd3b8;font-family:var(--font-mono);font-size:11.5px}.tool-trace h5{margin:12px 12px 4px}.tool-trace pre{margin:0 12px 12px;max-height:260px;overflow:auto;background:var(--paper);font-size:12px}.trace-running{border-color:#b7791f59;background:var(--amber-soft)}.trace-running summary>svg:first-child{color:var(--amber)}.trace-running summary strong:after{content:"";display:inline-block;width:6px;height:6px;margin-left:8px;border-radius:50%;background:var(--amber);vertical-align:middle;animation:pulse 1.2s ease-in-out infinite}.trace-complete summary>svg:first-child{color:var(--green-500)}.trace-error{border-color:#b3402f4d;background:var(--danger-soft)}.trace-error summary>svg:first-child,.trace-error summary>span{color:var(--danger)}@keyframes pulse{0%,to{opacity:.35;transform:scale(.85)}50%{opacity:1;transform:scale(1.15)}}.proposal-card{display:flex;flex-direction:column;gap:12px;padding:var(--space-4) var(--space-5);border-radius:var(--r);border:1px solid var(--accent);background:var(--paper);box-shadow:0 0 0 4px var(--accent-soft);margin:4px 0}.proposal-card>header{display:flex;align-items:flex-start;gap:12px}.proposal-card>header>div{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.proposal-card>header .eyebrow{color:var(--accent-deep)}.proposal-card h3{font-size:20px}.proposal-icon{width:40px;height:40px;flex-shrink:0;border-radius:12px;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent-deep)}.proposal-status{align-self:flex-start;padding:4px 10px;border-radius:var(--r-pill);font-size:11px;font-weight:650;letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;background:var(--cream-2);color:var(--ink-soft)}.proposal-status.pending{background:var(--accent-soft);color:var(--accent-deep)}.proposal-status.accepted{background:var(--green-700);color:#fff}.proposal-status.rejected{background:var(--cream-2);color:var(--muted)}.proposal-card>p{font-size:14px;line-height:1.55;color:var(--ink-soft)}.proposal-card .macro-strip{gap:6px}.proposal-card .macro-strip strong{font-size:18px}.proposal-details{border-top:1px solid var(--line);padding-top:10px;font-size:14px}.proposal-details>summary{display:inline-flex;align-items:center;gap:5px;font-weight:600;color:var(--green-700)}.proposal-details>summary:hover{color:var(--green-900)}.proposal-details>summary svg{transition:transform var(--t-fast) var(--ease)}.proposal-details[open]>summary svg{transform:rotate(180deg)}.proposal-details ul,.proposal-details ol{margin-top:10px;display:flex;flex-direction:column}.proposal-details ul li{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:7px 0;border-bottom:1px solid var(--line)}.proposal-details ul li span{flex:1;min-width:0}.proposal-details ul li strong{white-space:nowrap;color:var(--green-900);font-size:13.5px}.proposal-details ol{list-style:decimal;padding-left:22px;gap:6px;line-height:1.55}.proposal-details ol li::marker{color:var(--accent);font-weight:600}.proposal-details details{margin-top:12px}.proposal-details details>summary{font-size:12.5px;color:var(--muted);font-weight:550}.proposal-details details>summary:hover{color:var(--ink)}.proposal-details details pre{margin-top:8px;max-height:300px;font-size:12px}.proposal-card>footer{display:flex;align-items:center;justify-content:flex-end;gap:10px;flex-wrap:wrap;padding-top:10px;border-top:1px solid var(--line)}.proposal-card>footer>span{flex:1;min-width:140px;font-size:12.5px;color:var(--muted)}.proposal-resolved{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:10px 12px;border-radius:var(--r-sm);background:var(--green-050);color:var(--green-900);font-size:13.5px}.proposal-resolved svg{color:var(--green-500)}.proposal-resolved a{display:inline-flex;align-items:center;gap:4px;margin-left:4px;font-weight:600}.chat-composer-area{flex-shrink:0;display:flex;flex-direction:column;gap:8px;padding:12px var(--space-6) 14px;border-top:1px solid var(--line);background:var(--paper)}.chat-context-row{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;font-size:12.5px;color:var(--muted)}.chat-context-row>span{display:inline-flex;align-items:center;gap:6px}.chat-context-row label{display:inline-flex;align-items:center;gap:8px;font-weight:550}.chat-context-row select{width:auto;max-width:240px;min-height:32px;padding:5px 30px 5px 10px;font-size:12.5px;background-color:var(--cream);border-color:transparent;border-radius:var(--r-pill);background-position:right 10px center}.chat-composer{display:flex;flex-direction:column;gap:6px;padding:10px 10px 8px 14px;border-radius:var(--r-lg);border:1px solid var(--line-strong);background:var(--cream);transition:border-color var(--t-fast) var(--ease),box-shadow var(--t-fast) var(--ease),background-color var(--t-fast) var(--ease)}.chat-composer:focus-within{border-color:var(--green-500);box-shadow:var(--focus-ring);background:var(--paper)}.chat-composer textarea{border:none;background:transparent;padding:4px 0;min-height:52px;max-height:220px;resize:none;line-height:1.5;font-size:15px;field-sizing:content}.chat-composer textarea:focus-visible{box-shadow:none}.chat-composer textarea:disabled{background:transparent}.composer-bottom{display:flex;align-items:center;justify-content:space-between;gap:12px}.composer-bottom>span{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--muted)}.composer-bottom>span svg{color:var(--accent)}.send-button{width:40px;height:40px;flex-shrink:0;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background:var(--green-900);color:var(--cream);box-shadow:0 8px 18px -8px #173e31b3;transition:background-color var(--t-fast) var(--ease),transform var(--t-fast) var(--ease),opacity var(--t-fast) var(--ease)}.send-button:hover:not(:disabled){background:var(--green-700);transform:scale(1.05)}.send-button:disabled{opacity:.4;box-shadow:none}.chat-disclaimer{font-size:11.5px;color:var(--muted);text-align:center}.settings-layout{display:grid;grid-template-columns:220px minmax(0,1fr);gap:var(--space-8);align-items:start}.settings-nav{position:sticky;top:calc(var(--topbar-height) + var(--space-5));display:flex;flex-direction:column;gap:2px;padding:6px;background:var(--paper);border:1px solid var(--line);border-radius:var(--r)}.settings-nav a{padding:9px 12px;border-radius:9px;font-size:14px;font-weight:550;color:var(--ink-soft);transition:background-color var(--t-fast) var(--ease),color var(--t-fast) var(--ease)}.settings-nav a:hover{background:var(--green-050);color:var(--green-900);text-decoration:none}.settings-main{min-width:0;display:flex;flex-direction:column;gap:var(--space-8)}.settings-section{display:flex;flex-direction:column;gap:var(--space-4);padding:var(--space-6) var(--space-8) var(--space-8);background:var(--paper);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);scroll-margin-top:calc(var(--topbar-height) + var(--space-4))}.settings-section>.section-heading{margin-bottom:0;padding-bottom:var(--space-4);border-bottom:1px solid var(--line)}.settings-section .form-card{padding:0;border:none;box-shadow:none;background:transparent}.settings-toolbar{display:flex;flex-direction:column;gap:12px;margin-top:var(--space-2)}.settings-toolbar .search-box{flex:none;max-width:420px}.settings-form-footer{display:flex;align-items:center;justify-content:flex-end;gap:14px;flex-wrap:wrap;padding-top:var(--space-2)}.settings-saved{display:inline-flex;align-items:center;gap:5px;font-size:13px;color:var(--amber);font-weight:550;min-height:20px;transition:color var(--t-fast) var(--ease),opacity var(--t-fast) var(--ease)}.settings-saved.visible{color:var(--green-700);animation:fade-in var(--t) var(--ease)}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.settings-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.settings-warn{color:var(--amber);font-weight:550}.settings-table .settings-warn{color:var(--amber)}.settings-warn a{color:var(--amber);text-decoration:underline;text-underline-offset:2px}.settings-table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r);background:var(--paper);scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent}.settings-table{min-width:720px;font-size:13.5px}.settings-table th,.settings-table td{padding:12px 14px;text-align:left;vertical-align:top;border-bottom:1px solid var(--line)}.settings-table th{background:var(--cream);font-size:11px;font-weight:650;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);white-space:nowrap}.settings-table tbody tr:last-child td{border-bottom:none}.settings-table tbody tr:hover td{background:#fdfaf4}.settings-table td>strong,.settings-table td>span,.settings-table td>small,.settings-table td>a{display:block}.settings-table td>strong{font-size:14px;color:var(--ink);margin-bottom:3px}.settings-table td>span{color:var(--ink-soft);line-height:1.45}.settings-table td>small{margin-top:4px;max-width:260px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.settings-table td>.small-tag{display:inline-flex;margin:2px 0}.settings-table td>.text-link{display:inline-flex;margin-top:4px;font-size:13px}.settings-table td:last-child{white-space:nowrap}.ingredient-row td:first-child{min-width:200px}.product-row td{font-variant-numeric:tabular-nums}.ingredient-usage{display:flex;flex-direction:column;gap:4px;min-width:160px}.ingredient-usage .settings-warn{font-size:12.5px;line-height:1.45}.settings-row-actions{display:flex;align-items:center;justify-content:flex-end;gap:2px}.settings-row-actions .icon-button{width:34px;height:34px}.ai-status-card{display:flex;align-items:flex-start;gap:var(--space-4);padding:var(--space-5) var(--space-6);border-radius:var(--r);border:1px solid var(--line);background:var(--cream)}.ai-status-card>div:last-child{flex:1;min-width:0;display:flex;flex-direction:column;gap:10px}.ai-status-card h3{font-size:22px}.ai-status-card p{font-size:14px;line-height:1.6;color:var(--ink-soft)}.ai-status-icon{width:46px;height:46px;flex-shrink:0;border-radius:14px;display:grid;place-items:center;background:var(--paper);color:var(--green-700);box-shadow:var(--shadow-xs)}.ai-status-ready{background:var(--green-050);border-color:var(--green-100)}.ai-status-ready .ai-status-icon{background:var(--green-700);color:#fff}.ai-status-missing{background:var(--amber-soft);border-color:#b7791f40}.ai-status-missing .ai-status-icon{background:var(--amber);color:#fff}.ai-status-missing h3{color:#5e3c0a}.settings-env{background:var(--green-900);border-color:var(--green-900);color:#dcefe4;font-size:12.5px;line-height:1.6;padding:var(--space-4) var(--space-5)}.settings-facts{margin:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.settings-facts>div{display:flex;flex-direction:column;gap:4px;padding:14px 16px;border-radius:var(--r-sm);background:var(--paper);border:1px solid var(--line)}.settings-facts dt{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:650;letter-spacing:.12em;text-transform:uppercase;color:var(--green-700)}.settings-facts dd{margin:0;font-size:14px;line-height:1.55;color:var(--ink-soft)}.settings-facts dd a{font-weight:600}.settings-section>.settings-facts{grid-template-columns:1fr}.import-panel{display:flex;flex-direction:column;gap:var(--space-4);margin-top:var(--space-4);padding:var(--space-5) var(--space-6);border-radius:var(--r);background:var(--cream);border:1px solid var(--line)}.import-panel .section-heading{margin-bottom:0}.import-panel .section-heading h3{font-size:21px}.import-panel textarea{font-family:var(--font-mono);font-size:12.5px;line-height:1.55;min-height:160px;background:var(--paper);tab-size:2}.import-panel .modal-footer{justify-content:flex-start}.import-summary{display:inline-flex;align-items:center;gap:8px;padding:10px 14px;border-radius:var(--r-sm);background:var(--green-100);color:var(--green-900);font-size:13.5px;font-weight:550}.import-summary svg{color:var(--green-700)}@media(max-width:1099px){.plan-layout,.recipe-detail-layout,.recipe-editor,.shopping-layout,.settings-layout{grid-template-columns:minmax(0,1fr)}.plan-aside,.recipe-detail-aside,.editor-aside,.shopping-list-sidebar,.settings-nav{position:static}.plan-aside{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-4)}.plan-aside .shop-shortcut{grid-column:1 / -1}.recipe-detail-aside{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-4)}.recipe-detail-aside>.button,.recipe-detail-aside>.recipe-edit-actions{grid-column:1 / -1}.shopping-list-sidebar{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.shopping-list-sidebar .section-heading,.shopping-list-sidebar .history-memory-note{grid-column:1 / -1}.settings-nav{flex-direction:row;flex-wrap:wrap;gap:4px;border-radius:var(--r-pill)}.settings-nav a{border-radius:var(--r-pill);font-size:13.5px;padding:8px 14px}.chat-layout{grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr)}.conversation-sidebar{display:grid;grid-template-columns:auto minmax(0,1fr);grid-template-rows:auto auto;gap:10px 14px;align-items:center}.conversation-sidebar>.button{grid-row:1;width:auto}.conversation-label{grid-row:1;grid-column:2;margin:0;justify-content:flex-start;gap:8px}.conversation-list{grid-column:1 / -1;flex-direction:row;overflow-x:auto;overflow-y:hidden;min-height:0;padding-bottom:4px}.conversation-item{flex:0 0 240px;background:var(--paper);border-color:var(--line)}.conversation-empty{flex:1;padding:10px 14px}.chat-memory-card,.chat-content .page-header p{display:none}}@media(max-width:767px){.app-shell{grid-template-columns:minmax(0,1fr)}.sidebar{position:fixed;top:0;left:0;bottom:0;width:min(var(--sidebar-width),84vw);height:100dvh;transform:translate(-100%);transition:transform .24s var(--ease);box-shadow:none}.sidebar.sidebar-open{transform:none;box-shadow:var(--shadow-lg)}.sidebar-scrim{display:block}.mobile-menu{display:inline-flex;margin-left:-8px}.mobile-bottom-nav{display:grid}.topbar{padding:0 var(--space-4);height:56px}.today-date{display:none}.page-content{padding:var(--space-5) var(--space-4) calc(var(--bottom-nav-height) + var(--space-8))}.page-content.chat-content{height:calc(100dvh - 56px - var(--bottom-nav-height));padding-bottom:var(--space-3)}.page-header{margin-bottom:var(--space-5);align-items:flex-start}.page-header h1{font-size:30px}.page-actions{width:100%}.page-actions .button{flex:1 1 auto}.form-grid{grid-template-columns:minmax(0,1fr)}.form-card,.settings-section{padding:var(--space-5) var(--space-4);border-radius:var(--r)}.modal{padding:var(--space-3)}.modal[open]{align-items:end}.modal-inner{padding:var(--space-5) var(--space-4) var(--space-6);max-height:calc(100dvh - 24px);border-radius:var(--r-lg)}.modal-header h2{font-size:22px}.modal-footer .button{flex:1 1 auto}.toast{bottom:calc(var(--bottom-nav-height) + 14px);width:calc(100% - 32px);max-width:none}.login-page{grid-template-columns:minmax(0,1fr)}.login-story{padding:var(--space-6) var(--space-5) var(--space-8);gap:var(--space-6);min-height:0}.login-story h1{font-size:40px}.login-story-content{margin:var(--space-2) 0}.login-bottom{display:none}.login-form-side{padding:var(--space-8) var(--space-5) var(--space-10)}.login-form-wrap h2{font-size:32px}.plan-aside,.recipe-detail-aside,.shopping-list-sidebar{grid-template-columns:minmax(0,1fr)}.week-toolbar{align-items:flex-start}.week-title h2{font-size:20px}.plan-selector-bar select{min-width:0;width:100%}.plan-count{margin-left:0}.week-grid{grid-template-columns:repeat(7,168px);min-width:0;width:max-content}.calendar-scroll{margin:0 calc(var(--space-4) * -1);padding:var(--space-1) var(--space-4) var(--space-3);scroll-snap-type:x proximity}.day-column{scroll-snap-align:start}.inspiration-grid{grid-template-columns:minmax(0,1fr)}.start-plan-banner .button{width:100%}.recipe-grid{grid-template-columns:minmax(0,1fr)}.recipe-library-toolbar .sort-control{width:100%}.sort-control select{flex:1}.detail-hero img{aspect-ratio:4 / 3}.detail-hero{border-radius:var(--r)}.cooking-steps li{grid-template-columns:40px minmax(0,1fr);gap:10px}.cooking-steps li>span{font-size:24px}.ingredient-editor-labels{display:none}.ingredient-editor-row{grid-template-columns:minmax(0,1fr) 38px}.ingredient-editor-row .ingredient-autocomplete{grid-column:1 / 2}.ingredient-editor-row>input[type=number]{grid-column:1 / 2}.ingredient-editor-row>select{grid-column:1 / 2}.ingredient-editor-row>.icon-button{grid-column:2;grid-row:1}.ingredient-note-input{grid-column:1 / 2}.ingredient-editor-row .optional-checkbox{grid-column:1 / -1}.shopping-sheet{padding:var(--space-5) var(--space-4);border-radius:var(--r)}.shopping-sheet-header h2{font-size:24px}.retailer-logo{width:46px;height:46px}.retailer-migros{font-size:24px}.shopping-row{grid-template-columns:44px minmax(0,1fr) 36px;align-items:start}.shopping-item-amount{grid-column:2;flex-direction:row;align-items:baseline;gap:8px;text-align:left;white-space:normal}.note-button{grid-column:3;grid-row:1}.shopping-summary{padding:var(--space-5)}.basket-totals{width:100%}.basket-totals>div{flex:1}.shopping-status-actions,.shopping-status-actions .button,.export-links,.export-links a{width:100%}.export-links a{justify-content:center}.chat-panel{border-radius:var(--r)}.chat-messages{padding:var(--space-4);gap:var(--space-4)}.chat-starters{grid-template-columns:minmax(0,1fr)}.message-user{max-width:92%}.message-avatar{width:28px;height:28px;font-size:14px}.chat-saved{display:none}.chat-composer-area{padding:10px var(--space-4) 12px}.chat-context-row label{flex:1}.chat-context-row select{flex:1;max-width:none}.composer-bottom>span{display:none}.assistant-config-tag{align-self:flex-start}.settings-nav{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin:0 calc(var(--space-4) * -1);padding:6px var(--space-4);border-radius:0;border-left:none;border-right:none}.settings-nav::-webkit-scrollbar{display:none}.settings-nav a{white-space:nowrap;flex-shrink:0}.settings-facts{grid-template-columns:minmax(0,1fr)}.settings-form-footer .button{flex:1}.import-panel{padding:var(--space-4)}.import-panel .modal-footer .button{flex:1}}@media(max-width:400px){body{font-size:14.5px}.page-header h1{font-size:27px}.macro-strip{grid-template-columns:repeat(2,minmax(0,1fr))}.breadcrumb{font-size:12.5px}}@media(min-width:1500px){.page-content{padding-left:var(--space-12);padding-right:var(--space-12)}}@media(hover:none){.remove-meal{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.spin{animation:spin 1.6s linear infinite!important}.chat-messages{scroll-behavior:auto}.recipe-card:hover,.inspiration-card:hover,.scheduled-meal:hover,.chat-starters button:hover{transform:none}}@media print{:root{--cream: #fff;--paper: #fff}body{background:#fff;color:#000;font-size:12pt}.sidebar,.sidebar-scrim,.topbar,.mobile-bottom-nav,.toast,.page-actions,.back-link,.plan-aside,.shopping-list-sidebar,.shopping-bottom-actions,.shopping-controls,.shopping-tip,.abandon-list,.note-button,.chat-composer-area,.conversation-sidebar,.chat-setup-banner,.recipe-edit-actions,.recipe-detail-aside>.button,.editor-aside,.settings-nav,.settings-row-actions,.import-panel,.remove-meal,.add-meal-cell,.round-add,.recipe-arrow{display:none!important}.app-shell,.plan-layout,.shopping-layout,.recipe-detail-layout,.chat-layout,.settings-layout{display:block}.main-workspace,.page-content{min-height:0;max-width:none;padding:0;margin:0}.page-header{margin-bottom:16pt}.shopping-sheet,.shopping-summary,.day-column,.recipe-card,.settings-section,.chat-panel,.ingredients-panel,.nutrition-panel,.form-card{box-shadow:none;border:1px solid #ccc;background:#fff;background-image:none;color:#000;break-inside:avoid}.shopping-summary,.shopping-summary h3,.shopping-summary .eyebrow,.basket-totals span,.basket-totals strong,.price-warning{color:#000}.basket-totals>div{border-color:#ccc;background:none}.shopping-row{break-inside:avoid}.shopping-checkbox:before{border-color:#000}.shopping-row-checked .shopping-checkbox:before{background:#000}.shopping-progress i{background:#000}.chat-messages{overflow:visible;background:none}.message-user .message-body{background:#eee;color:#000;border-color:#ccc}.message-user .markdown-message{color:#000}.calendar-scroll{overflow:visible}.week-grid{min-width:0}a{color:inherit}.export-links a[href]:after{content:""}}.conversation-item{padding:4px 6px 4px 0;align-items:center;gap:2px}.conversation-item .conversation-select{flex:1;min-width:0;display:flex;align-items:flex-start;gap:10px;padding:6px 6px 6px 12px;border:0;background:transparent;color:inherit;text-align:left;font:inherit;cursor:pointer;border-radius:10px}.conversation-item .conversation-select:disabled{opacity:.6;cursor:default}.conversation-item .conversation-select>div{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.conversation-item .conversation-delete{opacity:0;flex:none;color:var(--muted)}.conversation-item .conversation-delete svg{margin-top:0}.conversation-item:hover .conversation-delete,.conversation-item:focus-within .conversation-delete,.conversation-item.active .conversation-delete{opacity:1}@media(hover:none){.conversation-item .conversation-delete{opacity:1}}.timeline{border:1px solid var(--line);border-radius:var(--r);background:color-mix(in srgb,var(--paper) 70%,var(--cream));margin:4px 0 12px}.timeline>summary{list-style:none;display:flex;align-items:center;gap:8px;padding:10px 14px;cursor:pointer;font-size:13px;color:var(--ink)}.timeline>summary::-webkit-details-marker{display:none}.timeline>summary strong{font-weight:600}.timeline>summary>span{color:var(--muted);flex:1}.timeline>summary>svg:last-child{transition:transform .2s ease;color:var(--muted)}.timeline[open]>summary>svg:last-child{transform:rotate(180deg)}.timeline[open]>summary{border-bottom:1px solid var(--line)}.timeline-steps{list-style:none;margin:0;padding:10px 14px 12px;display:flex;flex-direction:column;gap:10px;position:relative}.timeline-steps:before{content:"";position:absolute;left:25px;top:22px;bottom:22px;width:2px;background:var(--line)}.step{display:grid;grid-template-columns:24px minmax(0,1fr);gap:10px;align-items:start;position:relative}.step-index{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;font-size:11px;font-weight:650;background:var(--green-100);color:var(--green-900);border:2px solid var(--paper);position:relative;z-index:1}.step-reasoning .step-index{background:#efe4f7;color:#5b3a80}.step-note .step-index{background:var(--cream-2);color:var(--ink)}.step-tool.trace-error .step-index{background:color-mix(in srgb,var(--danger) 15%,white);color:var(--danger)}.step-body{border:1px solid var(--line);border-radius:var(--r-sm);background:var(--paper);padding:10px 12px;min-width:0}.step-reasoning .step-body{background:#faf6fd;border-color:#e8dcf2}.step-title{display:flex;align-items:center;gap:6px;font-size:12px;margin-bottom:4px}.step-title strong{font-weight:600}.step-title span{color:var(--muted)}.step-reasoning.trace-running .step-title span{color:#7a56a3;animation:timeline-pulse 1.4s ease-in-out infinite}@keyframes timeline-pulse{0%,to{opacity:1}50%{opacity:.45}}.step-text{font-size:14px;line-height:1.5}.step-text p{margin:0 0 6px}.step-text p:last-child{margin-bottom:0}.step-reasoning .step-text{color:#4a3a5c;font-style:italic}.step-tool .tool-trace{margin:0}.answer-label{display:inline-flex;align-items:center;gap:5px;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--green-700);font-weight:650;margin-bottom:6px}.proposal-gaps{display:flex;gap:6px;align-items:flex-start;font-size:13px;color:var(--muted);margin:0 0 8px}@media(prefers-reduced-motion:reduce){.step-reasoning.trace-running .step-title span{animation:none}}.shopping-row-locked .shopping-checkbox{cursor:default;opacity:.8}@media(max-width:640px){.step-tool .tool-trace>summary{flex-wrap:wrap;row-gap:4px}.step-tool .tool-trace>summary strong{white-space:normal;overflow:visible;text-overflow:clip;flex:1 1 100%}.timeline>summary{flex-wrap:wrap}}.proposal-remove span{color:var(--danger)}.proposal-details li span svg{vertical-align:-2px}.list-recipes{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.list-recipes-label{display:inline-flex;align-items:center;gap:6px;margin-right:4px;font-size:12px;font-weight:650;letter-spacing:.12em;text-transform:uppercase;color:var(--green-700)}.list-recipes .muted{font-size:13px}.list-chip{display:inline-flex;align-items:center;gap:6px;padding:5px 11px;border-radius:var(--r-pill);background:var(--green-100);color:var(--green-900);font-size:13px;font-weight:550;text-decoration:none;transition:background-color var(--t-fast) var(--ease)}.list-chip span{color:var(--green-700);font-weight:650;font-variant-numeric:tabular-nums}a.list-chip:hover{background:var(--green-300)}.list-chip-plan{background:var(--cream-2);color:var(--ink-soft)}a.list-chip-plan:hover{background:var(--cream-3)}.chip-add{display:inline-flex;align-items:center;gap:5px;padding:5px 11px;border-radius:var(--r-pill);border:1px dashed var(--line-strong);color:var(--green-700);font-size:13px;font-weight:600;transition:border-color var(--t-fast) var(--ease),background-color var(--t-fast) var(--ease)}.chip-add:hover{border-color:var(--green-500);background:var(--green-050)}.add-item-form{display:grid;grid-template-columns:minmax(0,1fr) 96px 92px auto;gap:8px;padding:12px;border-radius:var(--r);border:1px solid var(--line);background:var(--cream)}.add-item-name{display:flex;align-items:center;gap:8px;min-width:0;padding-left:12px;border-radius:var(--r-sm);border:1px solid var(--line-strong);background:var(--paper);color:var(--green-700);transition:border-color var(--t-fast) var(--ease),box-shadow var(--t-fast) var(--ease)}.add-item-name:focus-within{border-color:var(--green-500);box-shadow:var(--focus-ring)}.add-item-name input,.add-item-name input:hover,.add-item-name input:focus-visible{flex:1;min-width:0;border:none;background:transparent;box-shadow:none;padding-left:0}.add-item-form select{padding-right:30px;background-position:right 8px center}.add-item-form small{grid-column:1 / -1;display:inline-flex;align-items:center;gap:6px;min-height:18px;font-size:12.5px;color:var(--muted)}.add-item-form small svg{flex-shrink:0;color:var(--green-700)}.shopping-row{grid-template-columns:44px minmax(0,1fr) auto auto}.shopping-row-actions{display:flex;align-items:center;gap:2px}.on-list-note{display:flex;align-items:flex-start;gap:6px;margin:-6px 2px 0;font-size:13px;color:var(--green-900)}.on-list-note svg{flex-shrink:0;margin-top:3px;color:var(--green-700)}.on-list-note a{font-weight:600;text-decoration:underline;text-decoration-color:var(--green-300);text-underline-offset:2px}.week-picker{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px;border-radius:var(--r);border:1px solid var(--line);background:var(--paper)}.week-picker>div{display:flex;flex-direction:column;align-items:center;gap:2px;text-align:center}.week-picker strong{font-size:15px;color:var(--green-900)}.week-picker span{font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}.list-options{display:flex;flex-direction:column;gap:6px;max-height:300px;overflow-y:auto;padding:4px;margin:0 -4px;scrollbar-width:thin}.list-option{display:flex;align-items:center;gap:12px;padding:8px 10px;border-radius:12px;border:1px solid var(--line);background:var(--paper);text-align:left;transition:border-color var(--t-fast) var(--ease),background-color var(--t-fast) var(--ease),box-shadow var(--t-fast) var(--ease)}.list-option:hover{border-color:var(--green-300);background:var(--green-050)}.list-option>div{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.list-option strong{font-size:14px}.list-option>div span{font-size:12.5px;color:var(--muted)}.list-option.selected{border-color:var(--green-700);background:var(--green-050);box-shadow:0 0 0 1px var(--green-700)}.list-option.selected .picker-check{background:var(--green-700);border-color:var(--green-700);color:#fff}.list-option.selected .saved-list-icon{background:var(--green-700);color:#fff}.planned-meals-box{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:12px 14px;border-radius:var(--r);background:var(--green-100);color:var(--green-900)}.planned-meals-box>div{min-width:0;display:flex;flex-direction:column;gap:3px}.planned-meals-box strong{display:inline-flex;align-items:center;gap:6px;font-size:14px}.planned-meals-box>div span{font-size:12.5px;color:var(--green-700);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.planned-meals-box .button{flex-shrink:0}@media(max-width:1099px){.recipe-detail-aside>.on-list-note{grid-column:1 / -1}}@media(max-width:767px){.shopping-row{grid-template-columns:44px minmax(0,1fr) auto}.shopping-row-actions{grid-column:3;grid-row:1}.add-item-form{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.add-item-name{grid-column:1 / -1}.add-item-form .button{grid-column:1 / -1;justify-content:center}.planned-meals-box{flex-direction:column;align-items:stretch}.planned-meals-box>div span{white-space:normal}}.chat-fab{position:fixed;right:22px;bottom:22px;z-index:900;width:56px;height:56px;border-radius:50%;border:0;background:var(--green-900);color:var(--cream);box-shadow:var(--shadow-lg);display:grid;place-items:center;cursor:pointer;transition:transform var(--t-fast) var(--ease),background-color var(--t-fast) var(--ease)}.chat-fab:hover{transform:translateY(-2px);background:var(--green-700)}.chat-fab-open{background:var(--green-700)}.chat-popover{position:fixed;right:22px;bottom:90px;z-index:900;width:min(420px,calc(100vw - 32px));height:min(640px,calc(100vh - 120px));display:flex;flex-direction:column;background:var(--paper);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-lg);overflow:hidden;animation:toast-in .2s var(--ease)}.chat-popover-header{display:flex;align-items:center;gap:10px;padding:12px 14px;border-bottom:1px solid var(--line);background:var(--cream)}.chat-popover-title{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}.chat-popover-title strong{font-size:14px}.chat-context-chip{display:inline-flex;align-items:center;gap:5px;font-size:12px;color:var(--green-700);background:var(--green-100);border-radius:var(--r-pill);padding:2px 9px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-popover-expand{color:var(--muted);display:grid;place-items:center;width:32px;height:32px;border-radius:8px}.chat-popover-expand:hover{background:var(--paper);color:var(--ink)}.chat-setup-banner.compact{padding:8px 14px;font-size:13px}.chat-popover-messages{flex:1;overflow-y:auto;padding:14px;display:flex;flex-direction:column;gap:12px}.chat-popover-messages .chat-message,.chat-popover-messages .message-body{max-width:100%}.chat-popover-welcome{font-size:14px;color:var(--ink-soft);line-height:1.5;padding:6px 2px}.chat-popover-composer{display:flex;align-items:flex-end;gap:8px;padding:10px 12px;border-top:1px solid var(--line);background:var(--cream)}.chat-popover-composer textarea{flex:1;resize:none;min-height:44px;max-height:140px;font-size:14px}@media(max-width:767px){.chat-fab{bottom:calc(var(--bottom-nav-height, 64px) + 14px);right:16px;width:52px;height:52px}.chat-popover{right:0;left:0;bottom:0;width:100%;height:min(85vh,100dvh - 40px);border-radius:var(--r-lg) var(--r-lg) 0 0}}@media print{.chat-fab,.chat-popover{display:none}}.scheduled-meal[draggable=true],.extra-meal[draggable=true]{cursor:grab}.scheduled-meal.dragging,.extra-meal.dragging{opacity:.4;cursor:grabbing}.meal-slot.drop-ready{outline:2px dashed var(--green-300);outline-offset:2px;border-radius:var(--r-sm);transition:background-color var(--t-fast) var(--ease)}.meal-slot.drop-over{background:var(--green-100);outline-color:var(--green-500)}.meal-slot.drop-over>*{pointer-events:none}.meal-slot-extra{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 10px;margin-top:8px;font-size:12px;color:var(--muted);background:var(--paper)}
