:root{--bg:#f4f6f8;--surface:#fff;--surface-2:#eef2f5;--text:#1c2730;--muted:#4f5d6a;--border:#d3dbe2;--accent:#23684a;--accent-contrast:#fff;--accent-soft:#e2f1ea;--warn:#8a4b00;--warn-bg:#fff3df;--err:#a11d1d;--err-bg:#fde9e9;--ok:#1d6b3a;--ok-bg:#e3f4e8;--info:#1f4f8a;--info-bg:#e6eefa;--cook:#23684a;--serve:#6b7a88;--quick:#9a5b00;--sweet:#8a2f6b;--radius:10px;--shadow:0 1px 2px #1018280f, 0 1px 3px #10182814;--focus:0 0 0 3px #23684a59;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root{--bg:#12181d;--surface:#1a2229;--surface-2:#222c35;--text:#e6edf2;--muted:#a9b6c2;--border:#33414d;--accent:#5cc392;--accent-contrast:#0d1a13;--accent-soft:#1c3329;--warn:#ffc56b;--warn-bg:#3a2c12;--err:#ff9b9b;--err-bg:#3b1d1d;--ok:#7fd9a1;--ok-bg:#173323;--info:#9cc3ff;--info-bg:#1b2a40;--cook:#5cc392;--serve:#a9b6c2;--quick:#ffc56b;--sweet:#f3a6d9;--focus:0 0 0 3px #5cc39273;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--text);margin:0;font:16px/1.5 system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}a{color:var(--accent)}a:hover{text-decoration-thickness:2px}h1,h2,h3{margin:0 0 .5rem;line-height:1.25}h1{font-size:1.6rem}h2{margin-top:1.5rem;font-size:1.25rem}h3{font-size:1.05rem}p{margin:.4rem 0}:focus-visible{box-shadow:var(--focus);border-radius:4px;outline:none}.skip-link{background:var(--accent);color:var(--accent-contrast);z-index:100;padding:8px 12px;position:absolute;top:0;left:-999px}.skip-link:focus{left:8px}.app-header{background:var(--surface);border-bottom:1px solid var(--border);z-index:20;position:sticky;top:0}.app-header-inner{align-items:center;gap:16px;max-width:1180px;min-height:56px;margin:0 auto;padding:0 16px;display:flex}.brand{color:var(--text);white-space:nowrap;font-size:1.1rem;font-weight:700;text-decoration:none}.brand span{color:var(--accent)}.nav{scrollbar-width:none;flex:1;gap:2px;display:flex;overflow-x:auto}.nav::-webkit-scrollbar{display:none}.nav a{color:var(--muted);white-space:nowrap;border-radius:8px;padding:8px 10px;font-weight:500;text-decoration:none}.nav a:hover{background:var(--surface-2);color:var(--text)}.nav a[aria-current=page]{background:var(--accent-soft);color:var(--accent)}.offline-banner{background:var(--warn-bg);color:var(--text);border-bottom:1px solid var(--border);text-align:center;padding:8px 16px;font-size:.9rem}.header-user{color:var(--muted);align-items:center;gap:8px;font-size:.9rem;display:flex}main{max-width:1180px;margin:0 auto;padding:20px 16px 64px}@media (max-width:720px){.app-header-inner{flex-wrap:wrap;gap:4px 12px;padding-top:8px}.nav{flex-basis:100%;order:3;padding-bottom:6px}.header-user .who{display:none}main{padding-top:14px}h1{font-size:1.35rem}}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px}.card+.card{margin-top:12px}.grid{gap:12px;display:grid}.grid-2{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}.grid-3{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.grid-4{grid-template-columns:repeat(auto-fit,minmax(170px,1fr))}.stack>*+*{margin-top:12px}.row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.spread{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.muted{color:var(--muted)}.small{font-size:.875rem}.nowrap{white-space:nowrap}.right{text-align:right}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:16px;display:flex}.page-head p{color:var(--muted)}.stat{padding:14px 16px}.stat .label{color:var(--muted);font-size:.85rem}.stat .value{font-size:1.45rem;font-weight:700}.stat .hint{color:var(--muted);font-size:.8rem}.btn{border:1px solid var(--border);background:var(--surface);min-height:40px;color:var(--text);font:inherit;cursor:pointer;border-radius:8px;justify-content:center;align-items:center;gap:6px;padding:8px 14px;font-weight:600;line-height:1.2;text-decoration:none;display:inline-flex}.btn:hover{background:var(--surface-2)}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-contrast)}.btn-primary:hover{filter:brightness(1.08);background:var(--accent)}.btn-danger{color:var(--err);border-color:var(--err)}.btn-small{min-height:32px;padding:4px 10px;font-size:.875rem}.btn[disabled],.btn[aria-disabled=true]{opacity:.55;cursor:not-allowed}.link-btn{color:var(--accent);font:inherit;cursor:pointer;background:0 0;border:none;padding:0;text-decoration:underline}.badge{white-space:nowrap;border:1px solid #0000;border-radius:999px;align-items:center;gap:4px;padding:2px 8px;font-size:.78rem;font-weight:600;display:inline-flex}.badge-ok{background:var(--ok-bg);color:var(--ok)}.badge-warn{background:var(--warn-bg);color:var(--warn)}.badge-err{background:var(--err-bg);color:var(--err)}.badge-info{background:var(--info-bg);color:var(--info)}.badge-neutral{background:var(--surface-2);color:var(--muted);border-color:var(--border)}.badge-cook{background:var(--accent-soft);color:var(--cook)}.badge-sweet{background:var(--surface-2);color:var(--sweet);border-color:var(--sweet)}.badge-quick{background:var(--warn-bg);color:var(--quick)}.alert{border-radius:var(--radius);border:1px solid #0000;padding:12px 14px}.alert ul{margin:6px 0 0 18px;padding:0}.alert-ok{background:var(--ok-bg);color:var(--ok)}.alert-warn{background:var(--warn-bg);color:var(--warn)}.alert-err{background:var(--err-bg);color:var(--err)}.alert-info{background:var(--info-bg);color:var(--info)}.form{gap:14px;display:grid}.field{gap:4px;display:grid}.field>label,.field>.label{font-size:.92rem;font-weight:600}.field .help{color:var(--muted);font-size:.82rem}.field-error{color:var(--err);font-size:.85rem}input[type=text],input[type=email],input[type=password],input[type=number],input[type=date],input[type=search],input[type=url],select,textarea{border:1px solid var(--border);background:var(--surface);width:100%;min-height:40px;color:var(--text);font:inherit;border-radius:8px;padding:8px 10px}textarea{resize:vertical;min-height:120px}input[type=number]{max-width:160px}input[type=range]{width:100%;accent-color:var(--accent)}input[type=checkbox],input[type=radio]{width:18px;height:18px;accent-color:var(--accent)}.check{align-items:flex-start;gap:8px;display:flex}.check input{flex:none;margin-top:3px}fieldset{border:1px solid var(--border);border-radius:var(--radius);margin:0;padding:12px 14px}legend{padding:0 6px;font-weight:700}.chips{flex-wrap:wrap;gap:6px;display:flex}.chip{border:1px solid var(--border);background:var(--surface);cursor:pointer;border-radius:999px;align-items:center;gap:6px;padding:4px 10px;font-size:.9rem;display:inline-flex}.chip:has(input:checked){background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.chip input{width:16px;height:16px}.table-wrap{-webkit-overflow-scrolling:touch;overflow-x:auto}table.table{border-collapse:collapse;width:100%;font-size:.93rem}.table th,.table td{border-bottom:1px solid var(--border);text-align:left;vertical-align:top;padding:8px 10px}.table th{color:var(--muted);text-transform:uppercase;letter-spacing:.02em;font-size:.82rem;font-weight:600}.table tr:last-child td{border-bottom:none}.num{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}.week{gap:12px;display:grid}.meal{border-left:5px solid var(--cook)}.meal.serve-only{border-left-color:var(--serve)}.meal.quick{border-left-color:var(--quick)}.meal.sweet{border-left-color:var(--sweet)}.meal.attention{outline:2px solid var(--warn);outline-offset:-2px}.meal-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:8px;display:flex}.meal-title{margin:2px 0;font-size:1.1rem;font-weight:700}.meal-days{flex-wrap:wrap;gap:6px;margin:6px 0;display:flex}.day-pill{background:var(--surface-2);border:1px solid var(--border);border-radius:6px;padding:2px 8px;font-size:.82rem}.day-pill.cook{background:var(--accent-soft);border-color:var(--accent);color:var(--accent);font-weight:600}.reasons{color:var(--muted);margin:6px 0 0 18px;padding:0;font-size:.88rem}.warnings{color:var(--warn);margin:6px 0 0;padding:0;font-size:.88rem;list-style:none}.warnings li:before{content:"⚠ "}details>summary{cursor:pointer;padding:4px 0;font-weight:600}.meter{background:var(--surface-2);border:1px solid var(--border);border-radius:999px;height:10px;overflow:hidden}.meter>span{background:var(--accent);height:100%;display:block}.meter.over>span{background:var(--err)}.coverage{grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;display:grid}.coverage div{text-align:center;background:var(--surface-2);border:1px solid var(--border);border-radius:6px;padding:6px 2px;font-size:.8rem}.coverage .cook{background:var(--accent-soft);border-color:var(--accent);color:var(--accent);font-weight:700}.coverage .none{color:var(--err);border-style:dashed}.settings-nav{flex-wrap:wrap;gap:6px;margin-bottom:16px;display:flex}.settings-nav a{border:1px solid var(--border);color:var(--text);background:var(--surface);border-radius:8px;padding:6px 10px;font-size:.92rem;text-decoration:none}.settings-nav a[aria-current=page]{border-color:var(--accent);background:var(--accent-soft);color:var(--accent);font-weight:600}.recipe-instructions{white-space:pre-line}.empty{text-align:center;color:var(--muted);padding:32px 16px}.sr-only{clip:rect(0, 0, 0, 0);border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.print-meal{overflow:hidden}.print-thumb{float:right;object-fit:cover;border-radius:6px;width:120px;height:80px;margin:0 0 8px 12px}.print-photo{aspect-ratio:3/2;object-fit:cover;border-radius:6px;width:100%;max-width:320px}@media print{.app-header,.no-print,.btn,form{display:none!important}body{color:#000;background:#fff;font-size:11pt}main{max-width:none;padding:0}.card{box-shadow:none;break-inside:avoid;border:1px solid #999}a{color:#000;text-decoration:none}}.stat .badge,.page-head .badge{white-space:normal}@media (max-width:640px){.table.responsive thead{display:none}.table.responsive tr{border-bottom:1px solid var(--border);padding:8px 0;display:block}.table.responsive td{text-align:left;border:none;padding:2px 0;display:block}.table.responsive td.num{text-align:left}}
