:root{--bg:#f7f3ec;--card:#fff;--ink:#2a2420;--muted:#7a6f66;--line:#e6ddd1;--accent:#b23a2a;--accent-ink:#fff;--ok:#2f7d4b;--warn:#b7791f;--radius:12px;--font:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
@media(prefers-color-scheme:dark){:root{--bg:#1c1816;--card:#262120;--ink:#f1ebe3;--muted:#a69a90;--line:#3a322e;--accent:#e2604c}}
*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.45 var(--font)}
a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}
main{max-width:980px;margin:0 auto;padding:12px 16px 60px}
h1{font-size:1.5rem;margin:.4em 0 .2em}h2{font-size:1.15rem;margin:.6em 0 .3em}h3{font-size:1.05rem;margin:.3em 0}
h2.kind{color:var(--muted);text-transform:uppercase;letter-spacing:.08em;font-size:.8rem;margin-top:1.4em}
.muted{color:var(--muted)}.small{font-size:.85rem}.warn{color:var(--warn)}.center{text-align:center}
.top{display:flex;align-items:center;gap:12px;padding:8px 16px;background:var(--card);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:5;flex-wrap:wrap}
.brand{font-weight:700;color:var(--ink);font-size:1.1rem}.me{margin-left:auto;color:var(--muted);font-size:.85rem;white-space:nowrap}
.tabs{display:flex;gap:2px;overflow-x:auto;scrollbar-width:none}.tabs a{padding:6px 10px;border-radius:8px;color:var(--ink);white-space:nowrap;font-size:.95rem}.tabs a.on{background:var(--bg);font-weight:600}
.flash{background:#fff4d6;color:#5a4200;padding:10px 16px;margin:8px auto 0;max-width:948px;border-radius:8px}.flash.warn{margin:8px 0}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:14px;margin:10px 0}
.card.narrow{max-width:420px;margin:40px auto}
.grid{display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}
.ev{display:block;color:var(--ink)}.ev:hover{text-decoration:none;border-color:var(--accent)}.ev-name{font-weight:700;font-size:1.1rem}
.pills{margin-top:6px;display:flex;gap:6px;flex-wrap:wrap}
.pill{display:inline-block;font-size:.72rem;padding:2px 8px;border-radius:999px;background:var(--line);color:var(--muted);vertical-align:middle;font-weight:600;text-transform:uppercase;letter-spacing:.04em}
.pill.finalized,.pill.selected{background:#dff3e5;color:var(--ok)}.pill.dropped{background:#f6dcd8;color:var(--accent)}
label{display:block;margin:8px 0 4px;font-size:.9rem;color:var(--muted)}label.check{display:flex;align-items:center;gap:8px;color:var(--ink)}
input,select,textarea{width:100%;padding:10px;border:1px solid var(--line);border-radius:8px;background:var(--bg);color:var(--ink);font:inherit;margin-top:3px}
input[type=checkbox]{width:auto;margin:0}textarea{resize:vertical}
.row{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap}.row>*{flex:1 1 140px}.row>button{flex:0 0 auto}
.stack>*{margin:4px 0}
button,.btn{display:inline-block;padding:10px 16px;border:1px solid var(--line);border-radius:8px;background:var(--card);color:var(--ink);font:inherit;cursor:pointer;white-space:nowrap}
button.primary,.btn.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}button.ok{color:var(--ok)}button.danger{color:var(--accent)}
button.small,.btn.small,summary.btn.small{padding:6px 10px;font-size:.85rem}
button.tiny{padding:3px 8px;font-size:.75rem}
.btn:hover{text-decoration:none}
form{margin:0}summary{cursor:pointer;list-style:none}summary::-webkit-details-marker{display:none}details>summary{font-weight:600}
details.inline{display:inline-block;position:relative}details.inline[open] form{position:absolute;right:0;top:110%;background:var(--card);border:1px solid var(--line);padding:10px;border-radius:8px;z-index:4;min-width:280px;box-shadow:0 6px 20px rgba(0,0,0,.12)}
.ev-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;flex-wrap:wrap}.ev-head h1{margin:.2em 0}
.actions{display:flex;gap:6px;flex-wrap:wrap;align-items:center}.actions form{display:inline-flex;gap:6px}
.dish-head{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap}
.recipes{display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));margin-top:8px}
.recipe{display:flex;flex-direction:column;background:var(--bg);border:1px solid var(--line);border-radius:10px;overflow:hidden;color:var(--ink)}.recipe:hover{text-decoration:none;border-color:var(--accent)}
.recipe img,.recipe .noimg{width:100%;aspect-ratio:16/9;}.recipe .noimg{aspect-ratio:5/1;font-size:1.3rem;object-fit:cover;display:flex;align-items:center;justify-content:center;font-size:2rem;background:var(--line)}
.recipe.selected{border-color:var(--ok);box-shadow:0 0 0 2px #dff3e5}.recipe.dropped{opacity:.5}
.rbody{padding:8px 10px}.rtitle{font-weight:600;line-height:1.25}
.activity ul{margin:0;padding-left:18px}
.recipe-page .meta{margin:4px 0 10px}.notes{background:#fff4d6;color:#5a4200;padding:8px 12px;border-radius:8px}
.photos{display:flex;gap:8px;overflow-x:auto}.photos img{height:220px;border-radius:10px;object-fit:cover;max-width:100%}
.cols{display:grid;gap:12px;grid-template-columns:1fr}@media(min-width:760px){.cols{grid-template-columns:1fr 1.4fr}}
.ings{list-style:none;padding:0;margin:0}.ings li{padding:5px 0;border-bottom:1px dashed var(--line)}.ings label{display:flex;gap:8px;color:var(--ink);font-size:1rem;margin:0}
.ings input:checked+*{opacity:.5;text-decoration:line-through}
.steps li{margin:8px 0}
.menurow{display:flex;gap:10px;align-items:center;padding:8px 0;border-bottom:1px dashed var(--line);flex-wrap:wrap}.menurow>a{flex:1 1 200px;color:var(--ink)}.menurow.dropped>a{text-decoration:line-through;opacity:.6}
.shop{list-style:none;padding:0;margin:0}.shop li{display:flex;gap:10px;align-items:center;padding:8px 0;border-bottom:1px solid var(--line)}
.shop .body{flex:1;min-width:0}.shop .tick{width:34px;height:34px;border-radius:50%;padding:0;font-size:1.1rem;flex:none;color:var(--ok)}
.shop li.done .name{text-decoration:line-through;opacity:.5}.shop li.done .tick{background:#dff3e5;border-color:var(--ok)}
.shop li.have{opacity:.55}.shop li.have .name::after{content:" · in pantry";color:var(--muted);font-size:.8rem}
.shop details ul{margin:4px 0 0;padding-left:16px}.shop a.tiny{padding:3px 6px;border:1px solid var(--line);border-radius:6px;font-size:.9rem}
table.runbook{width:100%;border-collapse:collapse;background:var(--card);border-radius:var(--radius);overflow:hidden}
.runbook th{text-align:left;font-size:.75rem;text-transform:uppercase;color:var(--muted);padding:8px;border-bottom:1px solid var(--line)}
.runbook td{padding:10px 8px;border-bottom:1px solid var(--line);vertical-align:top}.runbook .time{white-space:nowrap;font-weight:700;font-variant-numeric:tabular-nums}
.runbook tr.done{opacity:.45}.runbook tr.done td:nth-child(2) b{text-decoration:line-through}
/* live */
body.bare{background:#141110;color:#f3ede5}body.bare main{max-width:1400px}
.live-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap;padding:8px 0 16px;border-bottom:1px solid #332b27}
.live-title{font-size:1.8rem;font-weight:800}#clock{font-size:3.2rem;font-weight:800;font-variant-numeric:tabular-nums;line-height:1}.clock{text-align:right}
.live-cols{display:grid;gap:16px;grid-template-columns:1fr;margin-top:12px}@media(min-width:900px){.live-cols{grid-template-columns:1.3fr 1fr .8fr}}
.live h2{color:#c9bdb2;font-size:1rem;text-transform:uppercase;letter-spacing:.08em}
.ls{background:#221c1a;border:1px solid #3a302b;border-radius:12px;padding:12px 14px;margin:8px 0;cursor:pointer;display:flex;gap:12px;align-items:center;font-size:1.15rem}
.ls .t{font-weight:800;font-variant-numeric:tabular-nums;min-width:84px;color:#ffb199}.ls .b{flex:1}.ls .d{color:#a89c92;font-size:.85rem}.ls .w{font-size:.8rem;color:#c9bdb2}
.ls.now{border-color:#e2604c;box-shadow:0 0 0 2px rgba(226,96,76,.35);font-size:1.35rem}.ls.now .t{color:#fff}.ls.late{border-color:#f0b429}.ls.late .t{color:#f0b429}
.ls.done{opacity:.45;font-size:.95rem}.ls.done .b{text-decoration:line-through}
.bar{height:6px;background:#3a302b;border-radius:3px;overflow:hidden;margin-top:6px}.bar i{display:block;height:100%;background:#e2604c}
@media print{.top,.actions,form{display:none}}
