:root{--bg:#f6f3ec;--card:#fffdf8;--ink:#22201b;--soft:#5d584f;--muted:#948d80;--line:#e6e0d4;--hover:#f0ece3;--accent:#2f6b4f;--accent-ink:#fff;--accent-soft:#e2eee6;--warn:#9a4d17;--warn-soft:#fbeee2;--danger:#a33a2c;--toast:#22201b;--toast-ink:#f6f3ec;--meat:#b4493a;--fish:#2d6c9c;--lentils:#c2711f;--beans:#8b6a3e;--grains:#a88613;--veg:#4a8a3a;--serif:"Fraunces", Georgia, serif;--sans:system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--radius:14px;--ease:cubic-bezier(.2, .7, .2, 1);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--bg:#161512;--card:#1f1e1a;--ink:#ece8df;--soft:#b5afa3;--muted:#7d776c;--line:#2f2d28;--hover:#282621;--accent:#7cc39b;--accent-ink:#0f1a14;--accent-soft:#1d2c23;--warn:#e6a066;--warn-soft:#2d2119;--danger:#e58373;--toast:#ece8df;--toast-ink:#161512;--meat:#e07a6a;--fish:#6ba8d8;--lentils:#e6a052;--beans:#c39a64;--grains:#dcbd4c;--veg:#86c26f}}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--ink);font:15px / 1.45 var(--sans);-webkit-font-smoothing:antialiased;margin:0}h1,h2{font-family:var(--serif);margin:0;font-weight:600}button,input,select,textarea{font:inherit;color:inherit}button{border:1px solid var(--line);background:var(--card);cursor:pointer;border-radius:10px;align-items:center;gap:6px;padding:8px 14px;transition:background .15s,border-color .15s;display:inline-flex}button:hover:not(:disabled){background:var(--hover)}button:disabled{opacity:.4;cursor:default}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,a:focus-visible{outline:2px solid var(--accent);outline-offset:2px}button.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:600}button.primary:hover:not(:disabled){background:var(--accent);filter:brightness(1.08)}button.ghost{color:var(--soft);background:0 0;border-color:#0000}button.danger{color:var(--danger)}button.small{padding:4px 10px;font-size:13px}button.link{color:var(--accent);text-underline-offset:3px;background:0 0;border:0;padding:0;text-decoration:underline}button.link:hover:not(:disabled){background:0 0}button.link.quiet{color:var(--muted)}.icon-button{color:var(--soft);background:0 0;border-color:#0000;padding:7px}.icon-button.on{color:var(--accent);background:var(--accent-soft)}input,select,textarea{border:1px solid var(--line);background:var(--card);border-radius:10px;min-width:0;padding:8px 12px}textarea{resize:vertical}select{appearance:none;text-overflow:ellipsis;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23948d80' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 10l5 5 5-5'/%3E%3C/svg%3E");background-position:right 12px center;background-repeat:no-repeat;background-size:16px;padding-right:36px}@media (prefers-color-scheme:dark){select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%237d776c' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 10l5 5 5-5'/%3E%3C/svg%3E")}}a{color:inherit}.app{max-width:760px;padding:max(16px, env(safe-area-inset-top)) 16px 96px;margin:0 auto}.top{justify-content:space-between;align-items:center;gap:12px;margin-bottom:20px;display:flex}.brand{letter-spacing:-.01em;font-size:26px}.tabs{background:var(--hover);border-radius:12px;gap:2px;padding:3px;display:flex}.tabs button{color:var(--soft);background:0 0;border:0;border-radius:9px;padding:6px 14px}.tabs button.on{background:var(--card);color:var(--ink);font-weight:600;box-shadow:0 1px 2px #00000014}.count{color:var(--muted);font-variant-numeric:tabular-nums;font-size:12px}.hint{color:var(--muted);margin:6px 0 0;font-size:13px}.hint.warn{color:var(--warn)}.empty{color:var(--muted);text-align:center;padding:40px 16px}.banner{background:var(--accent-soft);border-radius:12px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 16px;margin:14px 0;padding:10px 14px;font-size:14px;display:flex}.tag{color:var(--accent);background:var(--accent-soft);border-radius:999px;padding:2px 8px;font-size:12px;font-weight:600}.spacer{flex:1}.row{gap:8px;display:flex}.row>*{flex:1}.row.wrap{flex-wrap:wrap}.row.wrap>*{flex:none}.brand{align-items:center;gap:10px;display:flex}.sync-badge{font:500 12px / 1.2 var(--sans);color:var(--muted);background:0 0;border:0;gap:5px;padding:2px 6px}.sync-badge .dot{--c:var(--accent);width:7px;height:7px}.sync-badge.saving .dot,.sync-badge.offline .dot{--c:var(--muted)}.sync-badge.locked,.sync-badge.outdated,.sync-badge.error{color:var(--warn)}.sync-badge.locked .dot,.sync-badge.outdated .dot,.sync-badge.error .dot{--c:var(--warn)}.lead{color:var(--soft);margin:0}.sr-only{clip-path:inset(50%);width:1px;height:1px;position:absolute;overflow:hidden}.dot{background:var(--c,var(--muted));border-radius:50%;flex:none;width:8px;height:8px}.chip{color:var(--c);background:color-mix(in srgb, var(--c) 12%, transparent);white-space:nowrap;border-radius:999px;align-items:center;gap:5px;padding:1px 8px 1px 6px;font-size:12px;font-weight:500;display:inline-flex}.chip.faint{opacity:.75;background:0 0;padding-left:0}.stars{color:#d39b21;letter-spacing:1px;white-space:nowrap;font-size:12px}.stars .off{color:var(--line)}.source{color:var(--soft);white-space:nowrap;align-items:center;gap:3px;font-size:13px;text-decoration:none;display:inline-flex}a.source:hover{color:var(--accent);text-decoration:underline}.source.cookidoo{color:var(--accent);font-weight:500}.source.cookidoo.faint{color:var(--muted);font-weight:400}.occasion{color:var(--muted);font-size:12px}.filters{flex-wrap:wrap;gap:6px;margin:12px 0 0;display:flex}.filters.secondary{align-items:center;margin-top:8px}.filter{border-radius:999px;gap:6px;padding:4px 11px;font-size:13px}.filter.on,.filter.on:hover:not(:disabled){border-color:var(--c,var(--ink));background:color-mix(in srgb, var(--c,var(--ink)) 12%, var(--card));font-weight:600}.filter .n{color:var(--muted);font-variant-numeric:tabular-nums;font-size:12px}.sort{color:var(--muted);align-items:center;gap:8px;margin-left:auto;font-size:13px;display:flex}.sort select{background-position:right 8px center;background-size:14px;padding:4px 30px 4px 8px;font-size:13px}.week-nav{align-items:center;gap:8px;display:flex}.week-title{flex-direction:column;flex:1;align-items:center;gap:4px;display:flex}.week-title h2{font-size:22px}.week-title .link{font-size:13px}.coverage{flex-wrap:wrap;justify-content:center;gap:6px;margin:16px 0;display:flex}.cover{border:1px dashed var(--line);color:var(--muted);border-radius:999px;align-items:center;gap:6px;padding:3px 10px;font-size:12px;display:inline-flex}.cover .dot{border:1.5px solid var(--c);background:0 0}.cover.on{color:var(--c);background:color-mix(in srgb, var(--c) 12%, transparent);border:1px solid #0000;font-weight:500}.cover.on .dot{background:var(--c)}.week-actions{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.week>.hint{text-align:center}.inline-form{gap:8px;max-width:480px;margin:12px auto 0;display:flex}.inline-form input{flex:1}.notes{background:var(--warn-soft);color:var(--warn);border-radius:12px;gap:4px;margin:14px 0 0;padding:10px 14px;font-size:14px;list-style:none;display:grid}.days{gap:8px;margin:18px 0 0;padding:0;list-style:none;display:grid}.day{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);grid-template-columns:52px 1fr;align-items:center;gap:12px;min-height:68px;padding:10px 8px 10px 10px;display:grid}.day.weekend{background:color-mix(in srgb, var(--card) 70%, var(--hover))}.day.off{background:0 0;border-style:dashed;min-height:0}.day-head{flex-direction:column;align-items:center;line-height:1.1;display:flex}.day-name{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-size:12px;font-weight:600}.weekend .day-name{color:var(--accent)}.day-date{font-family:var(--serif);font-size:22px}.add-meal{color:var(--muted);white-space:nowrap;background:0 0;border:0;border-radius:6px;margin-top:4px;padding:1px 6px;font-size:11px}.add-meal:hover:not(:disabled){color:var(--accent);background:var(--accent-soft)}@media (hover:hover){.day:not(:hover):not(:focus-within) .add-meal{opacity:0}}.day-free{flex-wrap:wrap;align-items:center;gap:4px 16px;display:flex}.free-actions{gap:14px;font-size:14px;display:flex}.meals{min-width:0;margin:0;padding:0;list-style:none}.meal{grid-template-columns:1fr auto;align-items:center;gap:8px;padding:2px 0 2px 14px;display:grid;position:relative}.meal:before{content:"";background:var(--c,var(--line));border-radius:2px;width:4px;position:absolute;top:4px;bottom:4px;left:0}.meal+.meal{border-top:1px solid var(--line);margin-top:8px;padding-top:10px}.meal+.meal:before{top:12px}.meal-body{flex-direction:column;align-items:flex-start;gap:4px;min-width:0;display:flex}.rule-hint{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-size:11px}.dish{font-family:var(--serif);text-align:left;background:0 0;border:0;padding:0;font-size:18px;font-weight:500;line-height:1.25}.dish:hover:not(:disabled){text-decoration:underline;-webkit-text-decoration-color:var(--line);text-decoration-color:var(--line);text-underline-offset:4px;background:0 0}.dish.empty,.dish.missing{font-family:var(--sans);color:var(--accent);font-size:15px}.dish.missing{color:var(--warn)}.dish-meta{flex-wrap:wrap;align-items:center;gap:4px 10px;display:flex}.day-actions{gap:0;display:flex}.toolbar{gap:8px;display:flex}.search{flex:1;width:100%}.recipe-list,.pick-list{gap:6px;margin:14px 0 0;padding:0;list-style:none;display:grid}.recipe-row,.pick-row{text-align:left;border-radius:12px;grid-template-columns:1fr auto;grid-template-areas:"title side""meta side";gap:4px 12px;width:100%;padding:10px 14px;display:grid}.recipe-title{font-family:var(--serif);grid-area:title;font-size:17px;font-weight:500}.recipe-meta{flex-wrap:wrap;grid-area:meta;align-items:center;gap:4px 8px;display:flex}.recipe-side{flex-direction:column;grid-area:side;justify-content:center;align-items:flex-end;gap:4px;display:flex}.pick-book{gap:8px;margin-top:10px;display:flex}.pick-book select{flex:1;min-width:0}.pick-book .page{flex:0 0 90px}.sheet-foot .primary{margin-left:auto}.pick-list li{position:relative}.pick-list .source{position:absolute;top:50%;right:14px;transform:translateY(-50%)}.pick-row{grid-template-columns:1fr;grid-template-areas:"title""meta";padding-right:140px}.pick-row.dim .recipe-title{color:var(--soft)}.pick-row.current{border-color:var(--accent)}.sheet{color:var(--ink);background:0 0;border:0;width:min(600px,100vw - 24px);max-height:min(760px,100dvh - 24px);padding:0}.sheet::backdrop{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#14120e66}.sheet[open]{animation:rise .22s var(--ease)}@keyframes rise{0%{opacity:0;transform:translateY(12px)}}.sheet-inner{background:var(--bg);border-radius:18px;flex-direction:column;max-height:min(760px,100dvh - 24px);display:flex;box-shadow:0 20px 60px #00000040}.sheet-head{justify-content:space-between;align-items:center;padding:14px 12px 8px 20px;display:flex}.sheet-head h2{font-size:20px}.sheet-body{padding:4px 20px 20px;overflow-y:auto}.sheet-foot{border-top:1px solid var(--line);gap:8px;padding:12px 20px 16px;display:flex}.form{gap:18px;display:grid}fieldset{border:0;gap:8px;margin:0;padding:0;display:grid}legend,.field>span{color:var(--soft);margin-bottom:8px;padding:0;font-size:13px;font-weight:600}.field{gap:0;display:grid}.field.inline{flex-wrap:wrap;align-items:center;gap:8px;margin-top:12px;display:flex}.field.inline>span{color:var(--ink);margin:0;font-size:15px;font-weight:400}.row>.page{flex:0 0 90px}.segmented{background:var(--hover);border-radius:12px;gap:2px;padding:3px;display:flex}.segmented button{color:var(--soft);background:0 0;border:0;border-radius:9px;flex:1;justify-content:center;padding:6px 8px}.segmented button.on{background:var(--card);color:var(--ink);font-weight:600;box-shadow:0 1px 2px #00000014}.toggles{flex-wrap:wrap;gap:6px;display:flex}.toggle{border-radius:999px;padding:6px 13px;font-size:14px}.toggle.on,.toggle.on:hover:not(:disabled){border-color:var(--c,var(--accent));background:color-mix(in srgb, var(--c,var(--accent)) 16%, var(--card));color:var(--ink);font-weight:600}.toggle.small{padding:3px 10px;font-size:12px}.cookidoo-card{background:var(--accent-soft);border-radius:12px;align-items:center;gap:12px;padding:8px;display:flex}.cookidoo-card img{object-fit:cover;border-radius:8px;flex:none;width:64px;height:52px}.cookidoo-card div{justify-items:start;gap:2px;min-width:0;display:grid}.cookidoo-card .hint{margin:0}.cookidoo-card .link{font-size:13px}.book-suggestions{flex-wrap:wrap;gap:6px;display:flex}.star-input{gap:2px;display:flex}.star-input button{color:var(--line);background:0 0;border:0;padding:0 3px;font-size:26px;line-height:1}.star-input button.on{color:#d39b21}.star-input button:hover:not(:disabled){background:0 0;transform:scale(1.1)}.rules{gap:14px;display:grid}.panel{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px 18px}.panel h2{font-size:19px}.panel>.hint:first-of-type{margin-bottom:12px}.lunch-preset{align-items:center;gap:12px;margin-top:12px;display:flex}.lunch-preset>span{font-weight:500}.lunch-preset .segmented{flex:0 360px}.rule-grid{grid-template-columns:100px 84px 1fr 1fr;align-items:start;gap:8px;display:grid}.rule-grid.dinner-only{grid-template-columns:100px 84px 1fr}.rule-row{display:contents}.rule-col{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-size:12px;font-weight:600}.rule-grid .toggle{justify-content:center;margin-top:5px}.rule-day{padding-top:8px;font-weight:500}.rule-cell{gap:4px;min-width:0;display:grid}.rule-cell select.off{color:var(--muted)}.books{gap:6px;margin:0 0 12px;padding:0;list-style:none;display:grid}.books li{grid-template-columns:2fr 1.2fr auto auto;align-items:center;gap:8px;display:grid}.book-title{font-family:var(--serif);font-size:16px;font-weight:500}.inline-form.start{max-width:none;margin:0}select.from{background-position:right 8px center;background-size:14px;max-width:180px;padding:4px 30px 4px 8px;font-size:13px}.check{align-items:flex-start;gap:10px;margin-top:12px;display:flex}.check input{accent-color:var(--accent);margin-top:4px}.check small{color:var(--muted);font-size:13px;display:block}.set-weeks{gap:12px;margin:12px 0 0;padding:0;list-style:none;display:grid}.set-weeks>li{border-top:1px solid var(--line);grid-template-columns:1fr auto;gap:8px;padding-top:12px;display:grid}.set-weeks>li:first-child{border-top:0;padding-top:0}.set-weeks>li>button{grid-area:1/2;align-self:center}.set-name{font-family:var(--serif);background:0 0;border-color:#0000;padding:2px 4px;font-size:17px;font-weight:500}.set-days{color:var(--soft);columns:2;grid-column:1/-1;margin:0;padding:0 4px;font-size:13px;list-style:none}.set-days span{color:var(--muted);width:34px;display:inline-block}.toast{left:50%;bottom:max(20px, env(safe-area-inset-bottom));background:var(--toast);color:var(--toast-ink);animation:rise .2s var(--ease);z-index:10;border-radius:12px;align-items:center;gap:16px;max-width:calc(100vw - 32px);padding:10px 12px 10px 18px;font-size:14px;display:flex;position:fixed;transform:translate(-50%);box-shadow:0 8px 30px #0003}.toast button{color:inherit;background:0 0;border:0;padding:4px 6px;font-weight:700}.toast button:hover:not(:disabled){background:#7f7f7f33}.star-input.compact{gap:0;margin:-6px 0}.star-input.compact button{padding:6px 2px;font-size:15px}@media (width<=560px){.top{flex-direction:column;align-items:stretch}.brand{justify-content:center}.tabs button{flex:1;justify-content:center}.day{grid-template-columns:40px 1fr;gap:8px}.day-actions .icon-button{padding:5px}.dish{font-size:17px}.toolbar,.lunch-preset{flex-wrap:wrap}.lunch-preset .segmented{flex:100%}.rule-grid,.rule-grid.dinner-only{grid-template-columns:1fr 1fr;gap:6px 8px}.rule-grid>span:empty{display:none}.rule-day{padding-top:14px}.rule-grid .toggle{justify-self:end;margin-top:10px}.rule-grid.dinner-only .rule-cell{grid-column:1/-1}.set-days{columns:1}.books li{grid-template-columns:1fr auto}.book-title{grid-column:1/-1}.pick-row{padding-bottom:28px;padding-right:14px}.pick-list .source{top:auto;bottom:8px;transform:none}.sheet{width:100vw;max-width:100vw;max-height:92dvh;margin:auto 0 0}.sheet-inner{border-radius:18px 18px 0 0;max-height:92dvh}.star-input.compact{margin:-8px 0}.star-input.compact button{padding:8px 4px;font-size:19px}}
