/* Schriften: Aus Datenschutzgründen (DSGVO) keine Google-Fonts-Einbindung.
   Optional selbst hosten (z. B. über google-webfonts-helper) und hier einbinden:
   @font-face{font-family:Fraunces;src:url(../fonts/fraunces-600.woff2) format("woff2");font-weight:600;font-display:swap}
   @font-face{font-family:"DM Sans";src:url(../fonts/dm-sans-400.woff2) format("woff2");font-weight:400;font-display:swap}
   Ohne Dateien greifen die Systemschriften unten. */
:root{--bg:#F6F1E7;--ink:#2A2A24;--muted:#6B665A;--olive:#3F5B3A;--olive-t:#E6EDDC;--tomato:#8A2E16;--tomato-t:#F8E1D8;--line:#DDD3BF;--line2:#8F8670;--ok:#2E7D3E;
--serif:Fraunces,Georgia,"Times New Roman",serif;--sans:"DM Sans",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;--nav:calc(84px + env(safe-area-inset-bottom,0px))}
*{box-sizing:border-box}
html,body{margin:0;height:100%;background:#EDE6D6;color:var(--ink);font-family:var(--sans);-webkit-tap-highlight-color:transparent}
h1,h2{font-family:var(--serif);font-weight:600;margin:0}
a{color:inherit}button{font:inherit;cursor:pointer}
svg{fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex:none}
.pill{display:inline-block;align-self:flex-start;width:fit-content;font-size:12px;font-weight:500;color:var(--olive);background:var(--olive-t);border-radius:99px;padding:3px 10px}
.empty{color:var(--muted);font-size:15px}

/* App-Rahmen (auf dem Desktop als Handy-Spalte) */
#app{position:relative;max-width:520px;height:100dvh;margin:0 auto;overflow:hidden;background:var(--bg)}
#track{display:flex;height:100%;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;overscroll-behavior-x:contain;scrollbar-width:none}
#track::-webkit-scrollbar{display:none}
#recipe-slides{display:contents}
.page{flex:0 0 100%;width:100%;height:100%;overflow-y:auto;scroll-snap-align:start;scroll-snap-stop:always;padding:calc(env(safe-area-inset-top,0px) + 40px) 20px calc(var(--nav) + 44px)}
.page>h1{font-size:32px}

/* Navigation */
.nv{position:absolute;left:0;right:0;bottom:0;height:var(--nav);padding:10px 0 env(safe-area-inset-bottom,0px);background:#fff;border-top:1px solid var(--line);display:flex;justify-content:space-around;z-index:5}
.nv[hidden]{display:none}
.nv>*{width:56px;height:56px;border:0;border-radius:18px;background:none;color:var(--muted);display:flex;align-items:center;justify-content:center;text-decoration:none}
.nv .on{background:var(--olive-t);color:var(--olive)}
.nv .pr{background:var(--olive);color:#fff}
#dots{position:absolute;left:0;right:0;bottom:calc(var(--nav) + 14px);display:flex;justify-content:center;gap:8px;pointer-events:none;z-index:4}
#dots[hidden]{display:none}
#dots span{height:8px;width:8px;border-radius:4px;background:#CFC6B2;transition:width .2s}
#dots span.on{width:20px;background:var(--olive)}

/* Seite 1 */
.filters{display:flex;flex-direction:column;gap:12px;margin-top:16px}
.search{display:flex;align-items:center;gap:10px;height:48px;padding:0 14px;background:#fff;border:1px solid var(--line);border-radius:14px;color:var(--muted)}
.search input{flex:1;min-width:0;border:0;outline:0;background:none;font:inherit;font-size:16px;color:var(--ink)}
.fsel{display:flex;gap:8px}
.sel{position:relative;flex:1;min-width:0;height:44px;border:1.5px solid var(--line2);border-radius:12px;display:flex;align-items:center}
.sel select{appearance:none;-webkit-appearance:none;width:100%;height:100%;padding:0 28px 0 12px;border:0;background:none;font:inherit;font-size:14px;font-weight:500;color:var(--ink);text-overflow:ellipsis}
.sel svg{position:absolute;right:6px;pointer-events:none}
.sel.active{border-color:var(--olive);background:var(--olive-t);color:var(--olive)}
.reset{display:inline-block;margin-top:10px;font-size:14px;color:var(--olive)}
.cards{display:flex;flex-direction:column;gap:12px;margin-top:20px}
.card{display:flex;gap:14px;padding:10px;background:#fff;border:1px solid #E6DDC9;border-radius:20px;text-decoration:none}
.thumb{width:84px;height:84px;border-radius:14px;overflow:hidden;background:#E5D5B5;flex:none}
.thumb img,.hero img{width:100%;height:100%;object-fit:cover;display:block}
.meta{flex:1;min-width:0;display:flex;flex-direction:column;justify-content:center;gap:8px}
.meta h2{font-size:18px;line-height:1.2}

/* Seite 2 */
.hero-page{padding:0 0 calc(var(--nav) + 44px)}
.hero{aspect-ratio:1/1;width:100%;background:#E5D5B5}
.info{padding:22px 20px 0;display:flex;flex-direction:column;gap:12px}
.source{margin:2px 0 0;font-size:12px;line-height:1.4;color:var(--muted)}.source a{color:inherit}
.step[data-type=ingredient] .irow2 .btns{display:none}
.info h1{font-size:30px;line-height:1.15}
.facts{width:100%;border-collapse:collapse;margin-top:6px;background:#fff;border:1px solid #E6DDC9;border-radius:16px;overflow:hidden;font-size:15px}
.facts td{padding:11px 16px;border-bottom:1px solid #E6DDC9}
.facts tr:last-child td{border-bottom:0}
.facts td:first-child{color:var(--muted)}.facts td:last-child{text-align:right;font-weight:700}

/* Seite 3 */
.sub{color:var(--muted);font-size:14px;margin-top:2px}
.shop{margin-top:16px;background:#EEF3E6;border:1.5px solid var(--olive);border-radius:18px;padding:12px 16px 4px}
.shop h2{font-size:19px;color:var(--olive)}
.rest{margin-top:18px;padding:0 4px}.rest h2{font-size:19px}
.ilist{list-style:none;margin:0;padding:0}
.ilist li{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid #E6DDC9;cursor:pointer}
.ilist li:last-child{border-bottom:0}
.ilist .nm{flex:1;font-size:16px}.ilist .am{font-size:14px;color:var(--muted)}
.cb{width:28px;height:28px;padding:0;border-radius:8px;border:1.8px solid var(--line2);background:#fff;color:#fff;display:flex;align-items:center;justify-content:center;flex:none}
.cb svg{visibility:hidden}
li.on .cb{background:var(--olive);border-color:var(--olive)}li.on .cb svg{visibility:visible}
.ilist small{display:block;font-size:12px;color:var(--muted)}
.hint{font-size:14px;margin:0 0 12px}.hint a,.hint button{color:var(--olive);background:none;border:0;padding:0;font:inherit;text-decoration:underline}
.shop .empty{margin:6px 0 12px}

/* Seite 4 */
.steps{display:flex;flex-direction:column;gap:10px;margin-top:12px}
.bx{border:1.5px solid var(--line2);border-radius:16px;background:#fff;overflow:hidden}
.row{display:flex;align-items:center;gap:12px;padding:10px}
.row+.row{border-top:1px solid #E6DDC9}
.in{display:flex;align-items:center;gap:8px;flex:1;min-width:0}
.ic{width:40px;height:40px;border-radius:12px;background:var(--olive-t);color:var(--olive);display:flex;align-items:center;justify-content:center;flex:none}
.ic.pi{width:32px;height:32px;border-radius:10px;background:none;border:1.5px solid #CFC6B2;color:var(--muted)}
.tx{flex:1;min-width:0;margin-left:4px}
.n{font-weight:700;font-size:16px}.p{font-size:13px;color:var(--muted)}.a{font-size:14px;font-weight:500;white-space:nowrap}
.ck{width:44px;height:44px;padding:0;border:0;border-radius:12px;background:var(--ok);color:#fff;display:flex;align-items:center;justify-content:center;flex:none}
.row.done .in{opacity:.4;filter:grayscale(1)}
.row.done .ck{visibility:hidden}
.tm{display:flex;align-items:center;gap:10px;padding:12px 14px;border-radius:14px;background:var(--tomato-t);color:var(--tomato);font-weight:500;font-size:15px}
.tm b{margin-left:auto}
.tm.as{background:#E1EAF4;color:#1F4E79}

/* Verwaltung (Login, Stammdaten, Rezept bearbeiten) */
body.admin-body{height:auto;min-height:100%;background:var(--bg)}
.admin{max-width:720px;margin:0 auto;padding:24px 20px 80px}
.admin h1{font-size:28px;margin:8px 0 16px}
.admin h2{font-size:20px;margin:0 0 12px}
.topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:14px}
.topbar a{color:var(--olive)}
.box{background:#fff;border:1px solid #E6DDC9;border-radius:18px;padding:16px;margin-bottom:16px}
.admin label.f{display:flex;flex-direction:column;gap:4px;font-size:13px;font-weight:500;color:var(--muted);margin-bottom:12px}
.admin input[type=text],.admin input[type=number],.admin input[type=password],.admin input:not([type]),.admin select{font:inherit;font-size:16px;color:var(--ink);min-height:44px;padding:8px 12px;border:1px solid var(--line);border-radius:12px;background:#fff;min-width:0;width:100%}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.btn{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 18px;border-radius:12px;border:1.5px solid var(--line2);background:#fff;color:var(--ink);font-weight:700;text-decoration:none}
.btn.pr{background:var(--olive);border-color:var(--olive);color:#fff}
.btn.dg{border-color:var(--tomato);color:var(--tomato)}
.btn.sm{min-height:36px;padding:0 12px;font-size:14px}
.msg{padding:12px 14px;border-radius:12px;margin:12px 0;font-size:15px}
.msg.err{background:var(--tomato-t);color:var(--tomato)}.msg.ok{background:var(--olive-t);color:var(--olive)}
.tabs{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0 16px}
.tabs a{padding:8px 14px;border-radius:99px;border:1.5px solid var(--line2);text-decoration:none;font-size:14px;font-weight:500}
.tabs a.on{background:var(--olive);border-color:var(--olive);color:#fff}
.mrow{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:10px}
.ss-native{display:none!important}
.ss-btn{display:flex;align-items:center;justify-content:space-between;gap:6px;text-align:left;font:inherit;color:var(--ink);cursor:pointer}
.ss-btn span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ss-btn.ss-empty span{color:var(--muted)}
.admin .ss-btn{font-size:16px;min-height:44px;padding:8px 12px;border:1px solid var(--line);border-radius:12px;background:#fff;min-width:0;width:100%}
.sel .ss-btn{width:100%;height:100%;padding:0 28px 0 12px;border:0;background:none;font-size:14px;font-weight:500;color:inherit}
.sel .ss-btn svg{display:none}
.ss-wrap{position:fixed;inset:0;z-index:100;display:flex;justify-content:center;align-items:flex-start;padding:max(12px,env(safe-area-inset-top)) 12px 12px;font-family:var(--sans)}
.ss-back{position:absolute;inset:0;background:rgba(42,42,36,.45)}
.ss-panel{position:relative;width:100%;max-width:440px;margin-top:6vh;background:#fff;border-radius:20px;padding:16px;box-shadow:0 12px 40px rgba(0,0,0,.25);color:var(--ink)}
.ss-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}
.ss-x{width:40px;height:40px;border:0;background:none;color:var(--muted);font-size:18px;border-radius:12px}
.ss-q{width:100%;min-height:46px;padding:8px 14px;font:inherit;font-size:16px;border:1.5px solid var(--line2);border-radius:12px;background:#fff;color:var(--ink)}
.ss-list{list-style:none;margin:10px 0 0;padding:0;max-height:min(45dvh,360px);overflow-y:auto}
.ss-list li{padding:12px 12px;border-radius:10px;font-size:16px;cursor:pointer}
.ss-list li.act{background:var(--olive-t)}
.ss-list li[aria-selected=true]{font-weight:700;color:var(--olive)}
.ss-list .ss-none{color:var(--muted);cursor:default}
.uimg{object-fit:contain;display:block;flex:none}
.hint-list{margin:0;padding-left:20px;font-size:14px;line-height:1.5}.hint-list li{margin-bottom:6px}
.chk{display:flex;align-items:center;gap:6px;font-size:14px}
.mrow>form{display:contents}
.mrow .ic{width:36px;height:36px}
.checks{display:flex;flex-wrap:wrap;gap:8px 16px}
.checks label{display:flex;align-items:center;gap:6px;font-size:15px}
.bar{display:flex;gap:10px;flex-wrap:wrap;margin-top:8px}
.irow,.irow2{display:grid;gap:8px;margin-bottom:10px;align-items:center}
.irow{grid-template-columns:1fr 80px 100px auto}
.irow2{grid-template-columns:1fr 1fr 80px 100px auto}
@media(max-width:560px){.irow{grid-template-columns:1fr 1fr auto}.irow .nm{grid-column:1/-1}.irow2{grid-template-columns:1fr 1fr auto}.irow2 .nm,.irow2 .pp{grid-column:1/-1}.grid3{grid-template-columns:1fr}}
.btns{display:flex;gap:6px}
.x,.btns button,.step-h button{min-width:44px;min-height:44px;border:1px solid var(--line);border-radius:12px;background:#fff;color:var(--muted);font-size:16px}
.step{border:1.5px solid var(--line2);border-radius:16px;padding:12px;margin-bottom:12px;background:#FCFAF5}
.step-h{display:flex;gap:6px;align-items:center;margin-bottom:10px}
.step-h select{flex:1}.step-h .grow{display:none}
.step .add-item{display:none}.step[data-type=group] .add-item{display:inline-flex}
.step[data-type=timer] .st-items,.step[data-type=note] .st-items{display:none}
.step[data-type=ingredient] .st-text,.step[data-type=group] .st-text{display:none}
.step[data-type=note] .mi{display:none}
.st-text{display:flex;gap:8px}.st-text .mi{width:110px}
