:root{--bg:#f7f5f0;--surface:#fff;--text:#1f2328;--muted:#59636e;--accent:#2f6f4f;--accent-text:#fff;--error:#b42318;--border:#d8d4cc;color:var(--text);background:var(--bg);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:17px;line-height:1.5}@media (prefers-color-scheme:dark){:root{--bg:#161a1d;--surface:#20262b;--text:#e8eaed;--muted:#a3acb5;--accent:#7cc4a0;--accent-text:#0f1a14;--error:#ff8a80;--border:#39424a}}*{box-sizing:border-box}body{background:var(--bg);margin:0}.topbar{border-bottom:1px solid var(--border);background:var(--surface);justify-content:space-between;align-items:center;padding:.75rem 1rem;display:flex}.topbar h1{margin:0;font-size:1.4rem}main{max-width:48rem;margin:0 auto;padding:1.5rem 1rem}.card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:1.25rem}.card h2{margin-top:0}.muted{color:var(--muted)}.error{color:var(--error);font-weight:600}button{font:inherit;border:1px solid var(--accent);background:var(--accent);min-height:44px;color:var(--accent-text);cursor:pointer;border-radius:8px;padding:.6rem 1.2rem}button.secondary{color:var(--accent);background:0 0}button:focus-visible{outline:3px solid var(--accent);outline-offset:2px}main{max-width:72rem}.greeting{margin:0 0 1rem;font-size:1.1rem}.areas{grid-template-columns:repeat(auto-fit,minmax(18rem,1fr));align-items:start;gap:1rem;display:grid}.area-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;display:flex}.area-head h2{margin:0}.small{font-size:.9rem}.ok{color:var(--accent);font-weight:600}.warning{color:#8a5a00;font-weight:600}@media (prefers-color-scheme:dark){.warning{color:#fc6}}.days{margin:1rem 0 0;padding:0;list-style:none}.day{color:var(--muted);margin:1rem 0 .25rem;font-size:1rem}.events{margin:0;padding:0;list-style:none}.event{border-top:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;gap:.5rem;padding:.4rem 0;display:flex}.when{font-variant-numeric:tabular-nums;color:var(--muted)}.badge{border:1px solid var(--border);color:var(--muted);border-radius:999px;margin-left:.4rem;padding:.05rem .4rem;font-size:.75rem}.event-actions{gap:.25rem;display:flex}button.link{color:var(--accent);background:0 0;border:none;min-height:32px;padding:.2rem .4rem;text-decoration:underline}button.link.danger{color:var(--error)}button.destructive{background:var(--error);border-color:var(--error);color:#fff}button:disabled{opacity:.55;cursor:not-allowed}.event-form,.preview{border:1px solid var(--border);border-radius:10px;margin-top:1rem;padding:1rem}.event-form h3,.preview h3{margin-top:0}.event-form label{flex-direction:column;gap:.25rem;margin-bottom:.75rem;font-weight:600;display:flex}.event-form label.inline,.preview label.inline{flex-direction:row;align-items:center;gap:.5rem;font-weight:400}.preview label.inline{margin:.75rem 0}.event-form input,.event-form textarea{font:inherit;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:6px;padding:.5rem}.row{flex-wrap:wrap;gap:.75rem;display:flex}.row label{flex:8rem}.actions{flex-wrap:wrap;gap:.5rem;display:flex}.preview.danger{border-color:var(--error)}.compare{grid-template-columns:repeat(auto-fit,minmax(12rem,1fr));gap:.75rem;display:grid}.summary p{margin:.15rem 0}.note{white-space:pre-wrap}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.mainnav{flex-wrap:wrap;gap:.25rem;margin-bottom:1rem;display:flex}.mainnav a{color:var(--text);border:1px solid var(--border);background:var(--surface);border-radius:999px;padding:.5rem .9rem;text-decoration:none}.mainnav a[aria-current=page]{background:var(--accent);color:var(--accent-text);border-color:var(--accent)}.mainnav a:focus-visible,a:focus-visible{outline:3px solid var(--accent);outline-offset:2px}a{color:var(--accent)}.filters label,.import-panel label,.recipe-editor label{flex-direction:column;gap:.25rem;font-weight:600;display:flex}.filters input,.filters select,.import-panel input,.import-panel textarea,.recipe-editor input,.recipe-editor select,.recipe-editor textarea{font:inherit;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:6px;padding:.45rem}.chips{flex-wrap:wrap;gap:.4rem;display:flex}label.chip{border:1px solid var(--border);border-radius:999px;align-items:center;gap:.35rem;padding:.25rem .6rem;flex-direction:row!important;font-weight:400!important}.recipe-grid{grid-template-columns:repeat(auto-fill,minmax(15rem,1fr));gap:.75rem;padding:0;list-style:none;display:grid}.recipe-grid .card{padding:.9rem}.recipe-link{color:var(--text);text-decoration:none}.recipe-link:hover{text-decoration:underline}.import-panel{flex-direction:column;gap:.75rem;margin:1rem 0;display:flex}.tabs{gap:.4rem;display:flex}.recipe-editor{flex-direction:column;gap:.8rem;display:flex}.recipe-editor fieldset{border:1px solid var(--border);border-radius:8px;padding:.75rem}.ingredient-row{grid-template-columns:5rem 6rem 1fr 1fr auto;align-items:center;gap:.4rem;margin-bottom:.4rem;display:grid}@media (width<=40rem){.ingredient-row{grid-template-columns:4.5rem 5.5rem 1fr auto}.ingredient-row .note{grid-column:1/-1}}.ingredient-row.uncertain input,.ingredient-row.uncertain select{background:#ffc4001f;border-color:#c77700}.flag-text{color:#8a5a00;grid-column:1/-1;margin:0;font-size:.9rem}@media (prefers-color-scheme:dark){.flag-text{color:#fc6}}label.flag>input,label.flag>textarea,fieldset.flag{background:#ffc40014;border-color:#c77700!important}.review-box{background:#ffc40014;border-left:4px solid #c77700;border-radius:6px;padding:.75rem 1rem}.review-box ul{margin:.25rem 0 0}.recipe h3{margin-bottom:.3rem}.ingredients{padding:0;list-style:none}.ingredients li{border-bottom:1px dashed var(--border);padding:.2rem 0}.ingredients .amount{font-variant-numeric:tabular-nums;min-width:6rem;display:inline-block}.ingredients .group{margin-top:.5rem;display:block}.steps li{margin-bottom:.5rem}.week{grid-template-columns:repeat(auto-fill,minmax(14rem,1fr));gap:.75rem;padding:0;list-style:none;display:grid}.day-card h3{margin:0 0 .4rem;font-size:1rem}.day-card.today{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent) inset}.day-card p{margin:.2rem 0}input.servings{width:4rem;font:inherit;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:6px;margin-left:.3rem;padding:.25rem}.picker{flex-direction:column;gap:.4rem;display:flex}.picker label{flex-direction:column;font-weight:600;display:flex}.picker input{font:inherit;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:6px;padding:.4rem}.picker ul{max-height:14rem;margin:0;padding:0;list-style:none;overflow:auto}.suggestions{padding:0;list-style:none}.suggestions li{border-top:1px solid var(--border);padding:.5rem 0}.week-ingredients{padding:0;list-style:none}.week-ingredients li{border-bottom:1px dashed var(--border);padding:.25rem 0}.week-ingredients .amount{font-variant-numeric:tabular-nums;min-width:6rem;display:inline-block}.week-ingredients li.in-pantry summary{color:var(--muted)}.badge.warn{color:#8a5a00;border-color:#c77700}@media (prefers-color-scheme:dark){.badge.warn{color:#fc6}}.pantry{padding:0;list-style:none}.pantry li{border-bottom:1px solid var(--border);justify-content:space-between;padding:.3rem 0;display:flex}.pantry-form{align-items:end}.pantry-form label{flex-direction:column;font-weight:600;display:flex}.pantry-form input{font:inherit;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:6px;padding:.45rem}.dinner-list{margin:.5rem 0 0;padding:0;list-style:none}.dinner-list li{border-top:1px solid var(--border);padding:.3rem 0}.dinner-list li.today{font-weight:600}.shop-list{margin:.25rem 0 .75rem;padding:0;list-style:none}.shop-item{border-bottom:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;gap:.25rem .75rem;padding:.35rem 0;display:flex}.shop-item.excluded span{color:var(--muted)}.shop-item details{flex-basis:100%}.shop-item .edit-fields{flex-wrap:wrap;gap:.3rem;display:flex}.shop-item input:not([type=checkbox]),.add-item input,.add-item select{font:inherit;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:6px;padding:.35rem}.qty{width:5rem}.item-actions{flex-wrap:wrap;align-items:center;gap:.25rem;display:flex}.add-item{align-items:end;margin:.5rem 0 1rem}.add-item label{flex-direction:column;font-weight:600;display:flex}.add-item .grow{flex:12rem}a.button-link{background:var(--accent);color:var(--accent-text);border-radius:8px;padding:.6rem 1.2rem;font-weight:600;text-decoration:none;display:inline-block}.task-list{margin:.5rem 0 0;padding:0;list-style:none}.task-list li{border-top:1px solid var(--border);padding:.35rem 0}.status-list{grid-template-columns:max-content 1fr;gap:.35rem 1rem;margin:0;display:grid}.status-list dt{font-weight:600}.status-list dd{margin:0}.code{letter-spacing:.15em;font-family:ui-monospace,monospace;font-size:1.6rem}.code-block{word-break:break-all;background:var(--bg);border-radius:6px;padding:.5rem;font-family:ui-monospace,monospace}.week-nav{flex-wrap:wrap;align-items:center;gap:.5rem;margin:.75rem 0;display:flex}.week-nav form{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.week-nav input.kw{width:4rem}.week-nav input.year{width:5.5rem}.week-overview{gap:.5rem;margin-bottom:.75rem;padding-bottom:.25rem;display:flex;overflow-x:auto}.week-overview a{border:1px solid var(--border);background:var(--surface);min-width:7.5rem;color:var(--text);border-radius:.5rem;flex-direction:column;padding:.4rem .6rem;text-decoration:none;display:flex}.week-overview a[aria-current=page]{border-color:var(--accent);outline:2px solid var(--accent)}.filters{flex-wrap:wrap;align-items:center;gap:.75rem;margin:.75rem 0;display:flex}.filters fieldset{border:0;flex-wrap:wrap;gap:.5rem;margin:0;padding:0;display:flex}.segmented{gap:0;display:inline-flex}.segmented button{border-radius:0}.segmented button:first-child{border-radius:.5rem 0 0 .5rem}.segmented button:last-child{border-radius:0 .5rem .5rem 0}.board{grid-template-columns:repeat(auto-fit,minmax(15rem,1fr));align-items:start;gap:.75rem;display:grid}.board-column{background:var(--surface);border:1px solid var(--border);border-radius:.75rem;padding:.75rem}.board-column h3{margin:0 0 .5rem;font-size:1rem}.task-card{border:1px solid var(--border);border-left:4px solid var(--border);background:var(--bg);border-radius:.5rem;margin-bottom:.5rem;padding:.5rem .6rem}.task-card h4{margin:0 0 .25rem;font-size:1rem}.task-card p{margin:.2rem 0}.task-card.status-doing{border-left-color:var(--accent)}.task-card.status-blocked{border-left-color:#b26b00}.task-card.status-done{opacity:.75}.task-card .row{flex-wrap:wrap;gap:.5rem;display:flex}.dep-list{flex-direction:column;gap:.25rem;max-height:10rem;display:flex;overflow-y:auto}.task-table{border-collapse:collapse;background:var(--surface);width:100%}.task-table th,.task-table td{text-align:left;border-bottom:1px solid var(--border);vertical-align:top;padding:.4rem}@media (width<=40rem){.task-table th:nth-child(5),.task-table td:nth-child(5){display:none}}.caps{margin:.5rem 0;padding:0;list-style:none}.cap.ok{color:var(--accent)}.cap.no{color:var(--muted)}.sync-group{border-top:1px solid var(--border);margin-top:.75rem;padding-top:.5rem}.sync-group h4{margin:0 0 .25rem}.sync-group ul{padding-left:1.2rem}
