:root{--bg:#f6f5f1;--card:#fff;--text:#1f2421;--muted:#6b726e;--accent:#3f7d5a;--accent-soft:#e3f0e8;--border:#dedbd2}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#161a18;--card:#202522;--text:#e8ece9;--muted:#9aa39e;--accent:#6fbf8e;--accent-soft:#263a2e;--border:#353c37}}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.4}.topbar{z-index:10;background:var(--card);border-bottom:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 16px;padding:12px 16px;display:flex;position:sticky;top:0}.topbar h1{margin:0;font-size:1.2rem}.topbar nav{flex-wrap:wrap;gap:6px;display:flex}main{max-width:1200px;margin:0 auto;padding:16px}.view{display:none}.view.active{display:block}button,select,input{font:inherit;color:inherit}button{border:1px solid var(--border);background:var(--card);cursor:pointer;border-radius:8px;padding:6px 12px}button.active{background:var(--accent);color:#fff;border-color:var(--accent)}button.ghost{background:0 0}select,input[type=search]{border:1px solid var(--border);background:var(--card);border-radius:8px;padding:8px 10px}.week-controls{justify-content:flex-end;margin-bottom:12px;display:flex}.week{grid-template-columns:1fr;gap:12px;display:grid}.day{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:12px}.day h2{margin:0 0 8px;font-size:1rem}.meal{margin-bottom:8px}.meal label{color:var(--muted);margin-bottom:3px;font-size:.8rem;display:block}.meal select{width:100%}.meal .kcal{color:var(--muted);font-size:.8rem}@media (min-width:900px){.week{grid-template-columns:repeat(7,1fr)}}.filters{flex-wrap:wrap;gap:8px;margin-bottom:14px;display:flex}.filters input{flex:220px}.recipe-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;display:grid}.card{background:var(--card);border:1px solid var(--border);cursor:pointer;text-align:left;border-radius:12px;padding:0;overflow:hidden}.card img{aspect-ratio:4/5;object-fit:cover;background:var(--accent-soft);width:100%;display:block}.card .body{padding:10px 12px}.card .title{margin-bottom:4px;font-weight:600}.card .meta{color:var(--muted);font-size:.8rem}.recipe-dialog{background:var(--card);width:min(720px,100vw - 32px);max-height:88vh;color:var(--text);border:none;border-radius:14px;padding:0}.recipe-dialog::backdrop{background:#00000073}.recipe-detail{max-height:72vh;padding:18px;overflow-y:auto}.recipe-detail img{border-radius:10px;width:100%;margin-bottom:12px}.recipe-detail h2{margin:0 0 6px}.recipe-detail h3{margin:16px 0 6px;font-size:1rem}.recipe-detail ul,.recipe-detail ol{margin:0;padding-left:20px}.recipe-detail li{margin-bottom:4px}.recipe-dialog form{padding:0 18px 16px}.close{width:100%}.hint{color:var(--muted);margin:0}.shopping{background:var(--card);border:1px solid var(--border);border-radius:12px;margin:0;padding:0;list-style:none}.shopping li{border-bottom:1px solid var(--border);padding:10px 14px}.shopping li:last-child{border-bottom:none}.shopping li label{cursor:pointer;flex-wrap:wrap;align-items:baseline;gap:10px;display:flex}.shopping .item-name{font-weight:600}.shopping .item-amount{color:var(--accent);margin-left:auto}.shopping .src{color:var(--muted);margin-left:26px;font-size:.8rem;display:block}.shopping li.done{opacity:.45}.shopping li.done .item-name{text-decoration:line-through}.toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px;display:flex}.check{cursor:pointer;color:var(--muted);align-items:center;gap:6px;display:inline-flex}.muted{color:var(--muted)}.badges{flex-wrap:wrap;gap:4px;margin:4px 0;display:flex}.badge{border:1px solid var(--border);color:var(--muted);border-radius:999px;padding:2px 8px;font-size:.72rem}.meal-badge{background:var(--accent-soft);color:var(--accent);border-color:#0000}.effort-einfach{color:#2e7d4f}.effort-mittel{color:#a06a00}.effort-aufwendig{color:#b23a3a}.info{flex-wrap:wrap;align-items:center;gap:4px;margin-top:4px;font-size:.8rem;display:flex}.kcal{color:var(--muted);margin-left:auto}.filters select{min-width:150px}.assign{background:var(--accent-soft);border-radius:10px;margin:12px 0;padding:12px}.assign h3{margin-top:0}.assign-row{flex-wrap:wrap;gap:8px;display:flex}.assign-row select{flex:140px}.slots{margin:8px 0 0;padding:0;font-size:.9rem;list-style:none}.slots li{margin-bottom:4px}button.link{color:var(--accent);background:0 0;border:none;padding:0 4px;text-decoration:underline}.slot-actions{flex-wrap:wrap;align-items:center;gap:6px;margin-top:4px;display:flex}.slot-actions .link{text-align:left;padding:0;font-size:.85rem}button.cook{background:var(--accent);color:#fff;border-color:var(--accent);padding:4px 10px;font-size:.85rem}button.cook.big{margin:6px 0 10px;padding:10px 16px;font-size:1rem}button.big{padding:12px 18px;font-size:1.1rem}button:disabled{opacity:.4;cursor:default}.kiosk{background:var(--bg);width:100vw;max-width:100vw;height:100vh;max-height:100vh;color:var(--text);border:none;margin:0;padding:0}.kiosk::backdrop{background:var(--bg)}.kiosk-inner{box-sizing:border-box;flex-direction:row;gap:20px;height:100vh;padding:16px clamp(16px,3vw,32px);display:flex}.kiosk-main{flex-direction:column;flex:1;gap:12px;min-width:0;display:flex}.kiosk-top{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.kiosk-title{color:var(--muted);font-size:1.1rem;font-weight:600}.kiosk-top-buttons{gap:6px;display:flex}.kiosk-count{color:var(--accent);font-size:1rem;font-weight:600}.kiosk-step{flex:1;align-items:center;max-width:48ch;font-size:clamp(1.4rem,4.2vw,2.6rem);line-height:1.35;display:flex;overflow-y:auto}.kiosk-timer{align-items:center;gap:14px;min-height:0;font-size:1.6rem;display:flex}.kiosk-timer:empty{display:none}.timer-time{font-variant-numeric:tabular-nums;color:var(--accent);font-weight:700}.kiosk-ingredients{background:var(--card);border:1px solid var(--border);box-sizing:border-box;border-radius:14px;flex-shrink:0;width:min(320px,34vw);height:100%;padding:16px 18px;overflow-y:auto}.kiosk-ingredients h3{margin:0 0 10px;font-size:1.2rem}.kiosk-ingredients li{margin-bottom:8px;font-size:1.1rem}@media (max-width:760px){.kiosk-inner{flex-direction:column;height:100vh}.kiosk-ingredients{width:100%;height:auto;max-height:26vh}}.kiosk-ingredients h3{margin:0 0 6px}.kiosk-ingredients ul{margin:0;padding-left:20px}.kiosk-nav{grid-template-columns:1fr 1fr;gap:12px;display:grid}.kiosk-nav button{padding:22px 12px}.kiosk-amounts{flex-wrap:wrap;align-items:center;gap:6px;min-height:0;display:flex}.kiosk-amounts:empty{display:none}.amounts-label{color:var(--muted);margin-right:4px;font-size:.9rem}.chip{background:var(--accent-soft);color:var(--accent);border-radius:999px;padding:4px 12px;font-size:1rem;font-weight:600}.kiosk-timers-wrap{flex-direction:column;gap:8px;display:flex}.timer-add{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.timer-add input{font:inherit;border:1px solid var(--border);background:var(--card);color:var(--text);border-radius:8px;padding:6px 10px}#timer-step{color:var(--accent)}.kiosk-timers{flex-direction:column;gap:6px;display:flex}.kiosk-timers:empty{display:none}.timer{background:var(--card);border:1px solid var(--border);border-radius:10px;flex-wrap:wrap;align-items:center;gap:10px;padding:8px 12px;display:flex}.timer-label{color:var(--muted)}.timer .timer-time{min-width:6ch;font-size:1.5rem}.timer.running{border-color:var(--accent)}.timer.done{background:#b23a3a22;border-color:#b23a3a;animation:1s ease-in-out infinite alternate pulse}.timer.done .timer-time{color:#b23a3a}@keyframes pulse{0%{opacity:1}to{opacity:.55}}.kiosk button{min-height:56px;font-size:1.2rem}.kiosk .kiosk-top button{min-height:48px;font-size:1.05rem}.kiosk .timer-add button,.kiosk .timer button{min-height:56px;padding:10px 18px;font-size:1.15rem}.kiosk .timer button.ghost{min-height:48px}#timer-step{background:var(--accent);color:#fff;border-color:var(--accent);font-weight:700}.kiosk .kiosk-nav button{min-height:96px;font-size:1.8rem;font-weight:700}.kiosk .timer-add input{min-height:56px;font-size:1.15rem}.account{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.account form{margin:0}.account .status,.account .user{color:var(--muted);font-size:.85rem}.week-nav{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.week-label{text-align:center;min-width:11ch;font-weight:600}.error{color:#b23a3a;margin-top:4px;font-size:.9rem}.login{text-align:center;max-width:420px;margin:15vh auto;padding:24px}.login h1{margin-bottom:4px}.login .big{margin-top:16px}
