/* Café Victoria Einkauf. Immer hell, kein Dunkelmodus (weder Bildschirm noch Druck). */
:root{
  color-scheme: light only;
  --accent:#F4B6B2; --on:#5A1E1B; --accent-dark:#5A1E1B; --edge:#C8554F; --tint:#F9DBD8;
  --ink:#2A2523; --muted:#6E6461; --line:#E7DEDB; --urgent:#C8102E;
  --ok:#3E8E5A; --warn:#D08A1E; --bad:#B3261E;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0;background:#fff;-webkit-tap-highlight-color:transparent}
body{color:var(--ink);font-family:"Segoe UI",system-ui,-apple-system,Roboto,"Helvetica Neue",Arial,sans-serif;
  font-size:16px;line-height:1.4;touch-action:manipulation}
button,input,select{font:inherit}
[hidden]{display:none !important}

#app{max-width:1060px;margin:0 auto;padding:10px 12px 120px;
  padding-left:max(12px,env(safe-area-inset-left));padding-right:max(12px,env(safe-area-inset-right))}

/* Kopfzeile */
.top{position:sticky;top:0;z-index:20;display:flex;gap:8px;align-items:center;background:#fff;
  padding:max(6px,env(safe-area-inset-top)) 0 8px;margin-bottom:4px}
.modes{flex:1;display:flex;gap:4px;background:#F4EFEE;padding:4px;border-radius:999px}
.modes button{flex:1;font-weight:700;cursor:pointer;border:none;background:none;color:var(--muted);
  padding:9px 10px;border-radius:999px}
.modes button[aria-selected="true"]{background:#fff;color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.14)}
.count{display:inline-block;min-width:22px;padding:0 6px;margin-left:6px;border-radius:999px;
  background:var(--ink);color:#fff;font-size:.78rem;line-height:20px;vertical-align:1px}
.count.zero{background:#CFC7C4}
.sync{display:flex;align-items:center;gap:6px;cursor:pointer;border:1px solid var(--line);background:#fff;
  color:var(--muted);border-radius:999px;padding:8px 12px;font-size:.8rem;font-weight:600;white-space:nowrap}
.sync .dot{width:9px;height:9px;border-radius:50%;background:#CFC7C4}
.sync.ok .dot{background:var(--ok)}
.sync.busy .dot{background:var(--warn)}
.sync.off .dot{background:var(--warn)}
.sync.err .dot,.sync.auth .dot{background:var(--bad)}
.sync.auth{color:var(--bad);border-color:#E9C2BF}

/* Listen-Reiter */
.tabs{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0 10px}
.tab{font-weight:700;cursor:pointer;padding:7px 16px;border-radius:999px;
  border:2px solid var(--edge);background:#fff;color:var(--accent-dark)}
.tab[aria-selected="true"]{background:var(--accent);color:var(--on)}

.toolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:4px 0 8px}
.btn{font-weight:600;cursor:pointer;padding:8px 13px;border-radius:9px;
  border:1px solid var(--line);background:#fff;color:var(--ink)}
.btn.primary{background:var(--ink);border-color:var(--ink);color:#fff}
.btn.on{background:var(--ink);border-color:var(--ink);color:#fff}
.btn.danger{color:var(--bad);border-color:#E9C2BF}
.btn.danger.armed{background:var(--bad);border-color:var(--bad);color:#fff}
.btn:disabled{opacity:.45;cursor:default}
.swatch{display:flex;align-items:center;gap:8px;padding:4px 8px 4px 13px}
.swatch select{border:none;background:none;cursor:pointer;padding:4px}
.sws{display:flex;gap:6px}
.sw{width:28px;height:28px;border-radius:50%;border:2px solid;padding:0;cursor:pointer}
.sw[aria-pressed="true"]{box-shadow:0 0 0 2px #fff,0 0 0 4px var(--ink)}
#stockBar [data-edit]{display:none}
body.editing #stockBar [data-edit]{display:flex}
.hint{color:var(--muted);font-size:.85rem;margin:4px 0 14px;max-width:70ch}

/* Gruppen und Kacheln */
.group{margin:0 0 20px}
.ghead{display:flex;align-items:center;gap:10px;margin:0 0 8px}
.ghead b{font-size:1rem;font-weight:800;color:var(--accent-dark)}
.ghead .rule{flex:1;height:2px;background:var(--tint)}
.mini{font-size:.8rem;font-weight:600;cursor:pointer;color:var(--muted);background:#fff;
  border:1px solid var(--line);padding:3px 9px;border-radius:7px}
.mini:disabled{opacity:.35;cursor:default}

.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(108px,1fr));gap:8px}
@media (min-width:600px){ .grid{grid-template-columns:repeat(auto-fill,minmax(124px,1fr))} }
.tile{position:relative;text-align:center;cursor:pointer;user-select:none;-webkit-user-select:none;
  -webkit-touch-callout:none;touch-action:manipulation;
  background:var(--accent);color:var(--on);border:2px solid var(--edge);border-radius:11px;
  min-height:74px;padding:10px 6px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;
  transition:transform .08s}
.tile:active{transform:scale(.97)}
.tile.off{background:#fff;color:var(--accent-dark)}
.tile .name{font-weight:700;font-size:.92rem;line-height:1.15;overflow-wrap:anywhere;hyphens:auto}
.tile .note{font-size:.76rem;opacity:.92;line-height:1.15}
.tile .emoji{font-size:1.25rem;line-height:1}
.no-emoji .tile .emoji{display:none}
.tile .badge{position:absolute;top:-7px;left:-7px;min-width:28px;height:28px;border-radius:999px;
  background:var(--ink);color:#fff;font-size:.85rem;font-weight:800;line-height:28px;padding:0 7px;
  border:2px solid #fff}
.tile .badge[data-act]{cursor:pointer}
.tile .badge[data-act]::before{content:"";position:absolute;inset:-9px}  /* größere Trefferfläche */
.tile .bang{position:absolute;top:-9px;right:-6px;height:22px;padding:0 7px;border-radius:999px;
  background:var(--urgent);color:#fff;font-size:.7rem;font-weight:800;letter-spacing:.02em;line-height:18px;
  border:2px solid #fff;cursor:pointer}
.tile .bang.off{background:#fff;color:#A89E9B;border:1px solid #DDD5D2;line-height:20px;font-weight:700}
.tile.urgent{box-shadow:0 0 0 3px #fff,0 0 0 5px var(--urgent)}
.tile.done{background:#F4F1F0;border-color:#E4DEDC;color:#8A817E}
.tile.done .name{text-decoration:line-through}
.tile.done .badge{background:#B9B0AD}
.tile.bought .badge::after{content:" ✓"}

.arrows{position:absolute;left:0;right:0;bottom:3px;display:flex;justify-content:space-between;padding:0 4px}
body.sorting .tile{padding-bottom:26px}
.arrows button{font-size:1rem;font-weight:800;cursor:pointer;color:var(--accent-dark);border:1px solid var(--edge) !important;
  background:#fff;border:none;border-radius:7px;width:34px;height:22px;padding:0;line-height:22px}
.arrows button:disabled{opacity:.3}
.add{background:#fff;color:var(--accent-dark);border:2px dashed var(--edge);
  font-size:1.6rem;font-weight:700;cursor:pointer;border-radius:11px;min-height:74px}

.empty{color:var(--muted);padding:40px 12px;text-align:center}
.block-done{margin-top:28px;padding-top:12px;border-top:1px dashed var(--line)}
.block-done .ghead b{color:var(--muted)}

/* Dialoge */
.overlay{position:fixed;inset:0;background:rgba(42,37,35,.45);display:flex;align-items:center;
  justify-content:center;padding:16px;z-index:50}
.card{background:#fff;border-radius:16px;padding:20px;width:min(440px,100%);max-height:88vh;
  overflow:auto;box-shadow:0 18px 50px rgba(0,0,0,.25)}
.card h3{margin:0 0 14px;font-size:1.12rem;font-weight:800}
.card p{margin:0 0 12px}
.field{display:block;margin-bottom:12px}
.field span{display:block;font-size:.82rem;color:var(--muted);font-weight:600;margin-bottom:4px}
.field input,.field select,.card textarea{width:100%;padding:10px;border:1px solid var(--line);
  border-radius:9px;background:#fff;color:var(--ink);font-size:16px}
.row{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px;align-items:center}
.row .spacer{flex:1}
.msg{font-size:.88rem;border-radius:9px;padding:8px 10px;margin:0 0 12px}
.msg.err{background:#FBE9E7;color:var(--bad)}
.msg.warn{background:#FFF4DF;color:#7A4E00}
.facts{font-size:.9rem;color:var(--muted);margin:0 0 8px;padding:0;list-style:none}
.facts li{padding:3px 0}

.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);background:var(--ink);color:#fff;
  display:flex;align-items:center;gap:12px;width:max-content;max-width:calc(100vw - 32px);
  padding:10px 12px 10px 16px;border-radius:14px;font-size:.9rem;z-index:70;box-shadow:0 6px 20px rgba(0,0,0,.25)}
.toast button{flex:none;font-weight:800;cursor:pointer;border:none;border-radius:9px;padding:7px 12px;
  background:#fff;color:var(--ink)}

/* Statistik */
.vtitle{font-size:1.2rem;font-weight:800;margin:6px 0 4px}
.kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:0 0 16px}
.kpi{border:1px solid var(--line);border-radius:12px;padding:10px 12px}
.kpi b{display:block;font-size:1.5rem;font-weight:800;line-height:1.1}
.kpi span{font-size:.78rem;color:var(--muted)}
.srows{display:flex;flex-direction:column}
.srow{padding:10px 2px;border-bottom:1px solid var(--line)}
.sline{display:flex;justify-content:space-between;gap:10px;align-items:baseline}
.sname{font-weight:700;min-width:0}
.sgone{font-weight:400;color:var(--muted)}
.sval{white-space:nowrap;color:var(--muted);font-size:.85rem}
.sval b{color:var(--ink);font-size:1.05rem}
.sbar{height:6px;margin:6px 0 5px;background:#F4EFEE;border-radius:4px;overflow:hidden}
.sbar i{display:block;height:100%;background:var(--edge);border-radius:4px}
.smeta{font-size:.8rem;color:var(--muted)}

/* ------------------------------------------------------------------ Druck
   Die Druckblätter liegen in #print. Umgeschaltet wird über body.pv (Vorschau am Bildschirm),
   @media print zeigt dasselbe Layout, auch wenn direkt mit Strg+P gedruckt wird. */
@page{size:A4 portrait;margin:11mm}
#print{display:none}
.pvbar{display:none}
body.pv #app,body.pv .overlay{display:none !important}
body.pv #print{display:block}
body.pv .pvbar{display:flex}

.p-sheet{font-size:10.5pt;color:var(--ink)}
.p-head{display:flex;align-items:baseline;justify-content:space-between;
  border-bottom:2.5pt solid var(--edge);padding-bottom:2mm;margin-bottom:3.5mm}
.p-head b{font-size:15pt;font-weight:800;color:var(--accent-dark)}
.p-head span{font-size:9pt;color:#666}
.p-group{margin-bottom:2.5mm;break-inside:avoid;page-break-inside:avoid}
.p-ghead{display:flex;align-items:center;gap:2mm;margin-bottom:1.4mm;font-size:10.5pt;font-weight:800;color:var(--accent-dark)}
.p-ghead::after{content:"";flex:1;height:.5mm;background:var(--tint)}
.p-grid{display:grid;grid-template-columns:repeat(var(--cols,7),1fr);gap:1.8mm}
/* Quadratische Kachel: oben der Name, unten ein großes weißes Feld für die Menge (45 % der Höhe) */
.p-tile{position:relative;height:var(--tile-h,25mm);overflow:hidden;border-radius:2mm;border:.35mm solid var(--edge);
  background:var(--accent);color:var(--on);text-align:center;
  -webkit-print-color-adjust:exact;print-color-adjust:exact}
.p-label{position:absolute;left:0;right:0;top:0;bottom:45%;padding:.5mm .6mm;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.3mm}
.p-name{font-size:10pt;font-weight:700;line-height:1.08;hyphens:auto;-webkit-hyphens:auto;
  hyphenate-limit-chars:6 3 3;overflow-wrap:break-word;max-width:100%}
.p-small .p-name{font-size:9pt}
.p-small .p-note{font-size:7.5pt}
.p-note{font-size:8pt;line-height:1.05}
.p-field{position:absolute;left:0;right:0;bottom:0;height:45%;background:#fff;
  border-top:.3mm solid rgba(0,0,0,.18);-webkit-print-color-adjust:exact;print-color-adjust:exact}
#print.ink-light .p-tile{background:#fff;color:var(--on)}
#print.ink-light .p-field{border-top-color:var(--edge)}

@media screen{
  body.pv{background:#E9E5E3}
  body.pv #print{padding:14px 0 110px}
  body.pv .p-sheet{width:210mm;min-height:297mm;padding:11mm;margin:0 auto 18px;background:#fff;
    box-shadow:0 2px 14px rgba(0,0,0,.18)}
  .pvbar{position:fixed;left:0;right:0;bottom:0;z-index:60;gap:10px;flex-wrap:wrap;
    justify-content:center;align-items:center;padding:10px 12px max(10px,env(safe-area-inset-bottom));
    background:var(--ink);color:#fff}
  .pvbar label{display:flex;align-items:center;gap:6px;font-size:.9rem;cursor:pointer}
  .pvbar input{width:18px;height:18px}
  .pvbar button{font-weight:700;cursor:pointer;border:none;border-radius:9px;padding:8px 14px;background:#fff;color:var(--ink)}
  .pvbar .pvhint{font-size:.8rem;opacity:.8;flex-basis:100%;text-align:center;order:9}
}

@media print{
  html,body{background:#fff !important}
  #app,.pvbar,.overlay,.toast{display:none !important}
  #print{display:block !important;zoom:1 !important;padding:0 !important}
  .p-sheet{width:auto;min-height:0;padding:0;margin:0;box-shadow:none;break-after:page;page-break-after:always}
  .p-sheet:last-child{break-after:auto;page-break-after:auto}
}
