/* ############################################################
   ##                                                        ##
   ##      K E I N E   E C K I G E N   K N O E P F E         ##
   ##                                                        ##
   ##   Jeder Knopf ist eine KAPSEL:  border-radius: 999px   ##
   ##   Jedes Eingabefeld auch. Jeder Chip. Jede Taste.      ##
   ##                                                        ##
   ##   Nur FLAECHEN duerfen Ecken haben - Karten, Bloecke,  ##
   ##   Blaetter. Karte 24px, Kachel darin 17px. Nie         ##
   ##   weniger, und innen immer kleiner als aussen.         ##
   ##                                                        ##
   ##   Wer in einer Seite eine eigene .k-Regel schreibt,    ##
   ##   macht diese Datei kaputt. Knoepfe gehoeren HIERHER   ##
   ##   und nirgendwo sonst.                                 ##
   ##                                                        ##
   ############################################################

   ============================================================
   KUSHT DESIGN-SYSTEM
   Eine Datei. Wer hier eine Farbe aendert, aendert sie ueberall.

   REGEL 1  Kundenseiten sind IMMER hell. Das ist die Marke, und
            Essensfotos wirken auf hellem Grund appetitlicher.
   REGEL 2  Personalseiten starten hell und haben einen Schalter.
            Sie richten sich NIE automatisch nach dem Geraet -
            sonst sieht dieselbe Seite auf zwei Geraeten anders aus.
            Dunkel gibt es nur ueber  <html data-thema="dunkel">.
   REGEL 3  Neue Bauteile kommen hierher, nicht in die Seite.
            Sie heissen  k-...  , damit sie nie mit einer
            Seitenklasse kollidieren.
   REGEL 4  EIN Rot pro Bild. Rot ist die eine Haupttaste
            oder die Gefahr - nie beides gleichzeitig, nie
            Schmuck. Alles andere ist Tinte auf Flaeche.
   ============================================================ */

:root{
  /* ---- Marke ---------------------------------------------- */
  --rot:        #E8442A;   /* Tandir-Glut, die eine Akzentfarbe */
  --rot-tief:   #C9331B;
  --rot-schein: rgba(232,68,42,.16);
  --rot-sanft:  rgba(232,68,42,.10);

  /* ---- Flaechen, waermlich getoent statt neutralgrau ------- */
  --grund:      #F5F3EF;
  --flaeche:    #FFFFFF;
  --flaeche-2:  #EDE9E3;
  --flaeche-3:  #E3DDD5;

  /* ---- Schrift -------------------------------------------- */
  --tinte:      #17120F;
  --tinte-2:    #79706A;
  --tinte-3:    #A79E96;

  /* ---- Linien --------------------------------------------- */
  --linie:      rgba(23,18,15,.07);
  --linie-stark:#D2C8BC;

  /* ---- Bedeutung, bewusst getrennt vom Marken-Rot ---------- */
  --ok:        #1F7A52;  --ok-grund:      #E6F3EC;
  --achtung:   #9A5B00;  --achtung-grund: #FBEFDD;
  --alarm:     #B3261E;  --alarm-grund:   #FBE9E7;
  --weg:       #1D5FA8;  --weg-grund:     #E7EFF9;

  /* ---- Ecken ---------------------------------------------- */
  --r-1: 9px; --r-2: 12px; --r-3: 15px; --r-4: 19px;
  --r-5: 24px;      /* Karten - die weiche, ruhige Ecke */
  --r-innen: 17px;  /* Kacheln IN einer Karte, immer kleiner als die Karte */
  --r-voll: 999px;

  /* ---- Abstaende ------------------------------------------ */
  --a-1: 4px; --a-2: 8px; --a-3: 12px; --a-4: 16px; --a-5: 22px; --a-6: 30px;

  /* ---- Schriftstufen -------------------------------------- */
  --s-mikro: 10.5px; --s-klein: 12.5px; --s-text: 15px;
  --s-gross: 17px;   --s-titel: 21px;   --s-riesig: 34px;

  /* ---- Hebung --------------------------------------------- */
  --heb-1: 0 1px 2px rgba(30,24,21,.05);
  --heb-2: 0 1px 2px rgba(30,24,21,.05), 0 6px 20px rgba(30,24,21,.06);
  --heb-karte: 0 1px 1px rgba(23,18,15,.03), 0 10px 30px rgba(23,18,15,.06);

  /* ---- Bewegung: kurz, weich, nie verspielt ---------------- */
  --zeit: 150ms;
  --kurve: cubic-bezier(.22,.61,.36,1);

  --schrift: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, system-ui,
             "Noto Sans Armenian", "Noto Sans", sans-serif;

  color-scheme: light;
}

/* ---- Dunkel: NUR wenn es ausdruecklich gesetzt wird.
   Fast schwarz und NEUTRAL - kein Braungrau, kein Rotstich.
   Hell bleibt warm, dunkel wird kuehl: genau wie bei Apple. ---- */
:root[data-thema="dunkel"]{
  --rot:        #FF6A4D;
  --rot-tief:   #E8442A;
  --rot-schein: rgba(255,106,77,.22);
  --rot-sanft:  rgba(255,106,77,.15);

  --grund:      #000000;   /* wirklich schwarz */
  --flaeche:    #131315;
  --flaeche-2:  #1D1D20;
  --flaeche-3:  #2A2A2E;

  --tinte:      #F7F7F8;
  --tinte-2:    #9B9BA2;
  --tinte-3:    #6C6C74;

  --linie:      rgba(255,255,255,.07);
  --linie-stark:#34343A;

  --ok:        #4FC98A;  --ok-grund:      rgba(79,201,138,.15);
  --achtung:   #E5A73C;  --achtung-grund: rgba(229,167,60,.14);
  --alarm:     #FF7A6B;  --alarm-grund:   rgba(255,122,107,.14);
  --weg:       #7FB3F0;  --weg-grund:     rgba(127,179,240,.14);

  --heb-1: 0 1px 2px rgba(0,0,0,.4);
  --heb-2: 0 1px 2px rgba(0,0,0,.4), 0 8px 24px rgba(0,0,0,.35);
  --heb-karte: none;   /* im Dunkeln trennt Helligkeit, kein Schatten */

  color-scheme: dark;
}

/* ============================================================
   Grundgerüst
   ============================================================ */
*{ box-sizing:border-box; -webkit-tap-highlight-color:transparent }
html, body{
  margin:0; background:var(--grund); color:var(--tinte);
  font:var(--s-text)/1.5 var(--schrift);
  -webkit-font-smoothing:antialiased;
  text-size-adjust:100%;
}
button, input, select, textarea{ font:inherit; color:inherit }

/* ############################################################
   ##  DER BROWSER GIBT JEDEM <button> VON SICH AUS EINEN     ##
   ##  GRAUEN RAND (2px outset) UND EINEN GRAUEN GRUND.       ##
   ##  Das ist der "graue Rand", den Tigo am 10.09. gesehen   ##
   ##  hat. Frueher fiel es nicht auf, weil NUR .k den Rand   ##
   ##  abgeraeumt hat. Diese Regel raeumt ihn fuer ALLE ab.   ##
   ##  NIEMALS entfernen.                                     ##
   ############################################################ */
button{
  cursor:pointer;
  appearance:none; -webkit-appearance:none;
  border:0;
  background:none;
  padding:0;
  text-align:inherit;
}
[hidden]{ display:none !important }

/* Scrollbalken: duenn und still wie bei Apple - nie ein dicker grauer Balken. */
*{ scrollbar-width:thin; scrollbar-color:color-mix(in srgb, var(--tinte) 24%, transparent) transparent }
::-webkit-scrollbar{ width:10px; height:10px }
::-webkit-scrollbar-track{ background:transparent }
::-webkit-scrollbar-thumb{ background-color:color-mix(in srgb, var(--tinte) 22%, transparent);
  border-radius:999px; border:3px solid transparent; background-clip:content-box }
::-webkit-scrollbar-thumb:hover{ background-color:color-mix(in srgb, var(--tinte) 38%, transparent) }

/* Zahlen, die untereinanderstehen, muessen buendig sein. */
.mono{ font-variant-numeric:tabular-nums; font-feature-settings:"tnum" }

/* Sichtbarer Fokus fuer Tastatur - unsichtbar fuer die Maus. */
:focus-visible{ outline:2px solid var(--rot); outline-offset:2px; border-radius:6px }
:focus:not(:focus-visible){ outline:none }

@media (prefers-reduced-motion: reduce){
  *{ animation-duration:.01ms !important; transition-duration:.01ms !important }
}

/* ============================================================
   Knopf  —  .k
   Drei Stufen, mehr braucht keine Seite:
     .k.haupt   die eine Handlung, die weiterführt
     .k         alles Übrige
     .k.still   Rückzieher, Abbrechen, Nebensache
   Zustandsfarben: .gut  .weg
   Größen:         .gross  .klein
   ============================================================ */
.k{
  --k-grund: var(--flaeche-2);
  --k-tinte: var(--tinte);
  appearance:none; border:0;                 /* Rahmen machen Knoepfe dick */
  text-decoration:none;                      /* ein <a class="k"> ist ein Knopf, kein Link */
  display:inline-flex; align-items:center; justify-content:center; gap:var(--a-2);
  min-height:44px;                           /* Daumen, nicht Mauszeiger */
  padding:11px 20px;
  border-radius:var(--r-voll);               /* Kapsel. Immer. */
  background:var(--k-grund);
  color:var(--k-tinte);
  font-size:15.5px; font-weight:600;         /* 600 spricht, fett schreit */
  letter-spacing:-.01em; line-height:1.2;
  transition:transform var(--zeit) var(--kurve),
             background-color var(--zeit) var(--kurve),
             opacity var(--zeit) var(--kurve),
             filter var(--zeit) var(--kurve);
  -webkit-user-select:none; user-select:none;
}
.k:active{ transform:scale(.97) }
.k[disabled], .k[aria-disabled="true"]{ opacity:.35; cursor:default; transform:none }
@media (hover:hover){
  .k:hover:not([disabled]){ filter:brightness(.97) }
  :root[data-thema="dunkel"] .k:hover:not([disabled]){ filter:brightness(1.15) }
}

.k.haupt{ --k-grund:var(--rot);        --k-tinte:#fff }
/* Im Dunkeln ist --rot hell (#FF6A4D) - Weiss darauf hat nur 2,8:1.
   Die Haupttaste nimmt deshalb das Marken-Rot, wie im Hellen (4:1). */
:root[data-thema="dunkel"] .k.haupt{ --k-grund:var(--rot-tief) }
.k.sanft{ --k-grund:var(--rot-sanft);  --k-tinte:var(--rot) }
.k.gut  { --k-grund:var(--ok);         --k-tinte:#fff }
/* Im Dunkeln ist Gruen hell - dann muss die Schrift dunkel sein. */
:root[data-thema="dunkel"] .k.gut{ --k-tinte:#06251A }
.k.weg  { --k-grund:var(--alarm-grund);--k-tinte:var(--alarm) }
.k.still{ --k-grund:transparent;       --k-tinte:var(--tinte-2); padding-inline:12px }
/* Gefahr fragt erst nach: still, und erst beim "Точно?" faerbt sie sich. */
.k.gefahr{ --k-grund:transparent;      --k-tinte:var(--alarm) }
.k.gefahr.sicher{ --k-grund:var(--alarm-grund) }

.k.gross{ min-height:52px; padding:15px 26px; font-size:var(--s-gross) }
.k.klein{ min-height:34px; padding:7px 14px;  font-size:13.5px }
.k.breit{ width:100% }
.k .em{ font-size:1.3em; line-height:1 }

/* Symbol-Knopf: immer quadratisch, damit die Kopfzeile ruhig bleibt. */
.ikon{
  appearance:none; border:0;
  width:40px; height:40px; padding:0; flex:none;
  display:grid; place-items:center;
  background:var(--flaeche-2); color:var(--tinte);
  border-radius:var(--r-voll);
  transition:transform var(--zeit) var(--kurve), background-color var(--zeit) var(--kurve);
}
.ikon:active{ transform:scale(.94) }
.ikon.an{ background:var(--rot); border-color:var(--rot); color:#fff }

/* ============================================================
   Flächen
   ============================================================ */
.karte{
  background:var(--flaeche);
  border:0;
  border-radius:var(--r-5);
  box-shadow:var(--heb-karte);
}
/* Im Dunkeln KEIN Rahmen: die Flaeche ist heller als der Grund, das reicht. */
:root[data-thema="dunkel"] .karte{ box-shadow:none; border:0 }

/* Chip: ein Wort, eine Zahl, kein Knopf. */
.chip{
  display:inline-flex; align-items:center; gap:5px;
  font-size:var(--s-klein); font-weight:600; white-space:nowrap;
  color:var(--tinte-2); background:var(--flaeche-2);
  border:0; border-radius:var(--r-voll);
  padding:4px 11px;
}
.chip.gut    { color:var(--ok);      background:var(--ok-grund) }
.chip.achtung{ color:var(--achtung); background:var(--achtung-grund) }
.chip.alarm  { color:var(--alarm);   background:var(--alarm-grund) }
.chip.weg    { color:var(--weg);     background:var(--weg-grund) }

/* ============================================================
   Reiterleiste
   ============================================================ */
.reiter{
  display:flex; overflow-x:auto; scrollbar-width:none;
  border-bottom:1px solid var(--linie);
}
.reiter::-webkit-scrollbar{ display:none }
.rt{
  appearance:none; border:0; background:none;
  padding:12px 0 10px; margin-right:20px; white-space:nowrap;
  font-size:var(--s-text); font-weight:600; color:var(--tinte-2);
  border-bottom:2.5px solid transparent;
  transition:color var(--zeit) var(--kurve), border-color var(--zeit) var(--kurve);
}
.rt:last-child{ margin-right:0 }
.rt.an{ color:var(--tinte); border-bottom-color:var(--rot) }
.rt .n{
  display:inline-block; min-width:20px; margin-left:6px; padding:1px 7px;
  border-radius:var(--r-voll); background:var(--flaeche-3); color:var(--tinte-2);
  font-size:var(--s-klein); font-weight:700;
  transition:background-color var(--zeit) var(--kurve), color var(--zeit) var(--kurve);
}
.rt.an .n{ background:var(--rot); color:#fff }
.rt.an .n.leer{ background:var(--flaeche-3); color:var(--tinte-2) }

/* ============================================================
   Eingaben
   ============================================================ */
.eingabe{
  width:100%; min-height:50px;
  padding:13px 15px;
  border:1px solid var(--linie-stark); border-radius:var(--r-2);
  background:var(--flaeche); color:var(--tinte);
  font-size:16px;                  /* unter 16px zoomt iOS beim Antippen */
  transition:border-color var(--zeit) var(--kurve), box-shadow var(--zeit) var(--kurve);
}
.eingabe:focus{
  outline:none; border-color:var(--rot); box-shadow:0 0 0 4px var(--rot-schein);
}
.eingabe::placeholder{ color:var(--tinte-3) }

.waehler{
  appearance:none; height:40px; padding:0 26px 0 10px;
  border:1px solid var(--linie-stark); border-radius:var(--r-1);
  background:var(--flaeche) no-repeat right 9px center/9px 6px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='9' height='6'%3E%3Cpath d='M1 1l3.5 3.5L8 1' fill='none' stroke='%237B7168' stroke-width='1.6' stroke-linecap='round'/%3E%3C/svg%3E");
  font-size:var(--s-klein); font-weight:700; letter-spacing:.03em;
}

/* ============================================================
   Kopf- und Fußleiste
   ============================================================ */
.leiste-oben{
  position:sticky; top:0; z-index:30;
  background:var(--flaeche); border-bottom:1px solid var(--linie);
  padding-block:10px; padding-top:calc(10px + env(safe-area-inset-top));
}
.leiste-unten{
  position:fixed; left:0; right:0; bottom:0; z-index:40;
  background:var(--flaeche); border-top:1px solid var(--linie);
  padding-block:11px; padding-bottom:calc(11px + env(safe-area-inset-bottom));
}
.mitte{ max-width:860px; margin:0 auto; padding-inline:16px }
.mitte.schmal{ max-width:560px }

/* ------------------------------------------------------------
   Wortmarke
   Nie getippt. Immer die echte Datei. Sie faerbt sich ueber
   currentColor mit - deshalb funktioniert sie hell wie dunkel.
   Seitenverhaeltnis 1238:354, Hoehe steuert alles.
   ------------------------------------------------------------ */
.marke{ display:flex; align-items:center; gap:9px; flex:none; color:var(--tinte) }
.marke .zeichen{
  height:19px; width:calc(19px * 3.497);
  background:currentColor;
  -webkit-mask:url("/kusht-logo.svg") no-repeat center/contain;
          mask:url("/kusht-logo.svg") no-repeat center/contain;
  flex:none;
}
.marke .zusatz{
  font-size:9px; letter-spacing:.2em; color:var(--rot); font-weight:800;
  align-self:center; padding-top:1px;
}
.marke.gross .zeichen{ height:26px; width:calc(26px * 3.497) }
.marke.klein .zeichen{ height:15px; width:calc(15px * 3.497) }

/* ============================================================
   Leere Zustände — nie eine weiße Fläche ohne Erklärung
   ============================================================ */
.nichts{ text-align:center; padding:52px 20px; color:var(--tinte-3) }
.nichts b{
  display:block; font-size:var(--s-gross); color:var(--tinte-2);
  margin-bottom:4px; font-weight:650;
}

/* Zeile ganz unten: Stand, Uhrzeit, Fehler */
.stand{ text-align:center; font-size:var(--s-klein); color:var(--tinte-3); padding:14px 0 26px }
.stand.fehler{ color:var(--alarm); font-weight:600 }

/* ============================================================
   Auftritt — einmal beim Erscheinen, danach nie wieder
   ============================================================ */
@keyframes kusht-auf{
  from{ opacity:0; transform:translateY(6px) }
  to  { opacity:1; transform:none }
}
.auf{ animation:kusht-auf 220ms var(--kurve) both }


/* ############################################################
   ##                                                        ##
   ##            R U H E - B A U S T E I N E                 ##
   ##                                                        ##
   ##  Alles hier drin faengt mit  k-  an. Wer in einer      ##
   ##  Seite eine eigene  .k-...  Regel schreibt, macht      ##
   ##  diese Datei kaputt. Neue Bauteile: HIERHER.           ##
   ##                                                        ##
   ##  Herkunft: der abgenommene Ruhe-Entwurf (Apple-Vor-    ##
   ##  bilder: App Store, tvOS-Reiter, Kontrollzentrum).     ##
   ##                                                        ##
   ############################################################ */

/* ---- Seite: eine schmale Spalte, mehr braucht ein Handy nicht -- */
.k-seite{ max-width:430px; margin:0 auto; padding:0 18px 120px }

/* ---- Kopfzeile: Logo und EIN stilles Symbol. Sonst NICHTS. -----
   Sprache, Ton, Hell/Dunkel, Abmelden liegen im Blatt darunter.  */
.k-kopf{ display:flex; align-items:center; gap:10px; padding:22px 0 4px }
.k-mehr{
  margin-left:auto; width:38px; height:38px; border-radius:var(--r-voll);
  background:var(--flaeche-2); color:var(--tinte-2);
  display:grid; place-items:center;
  transition:transform var(--zeit) var(--kurve), background-color var(--zeit) var(--kurve);
}
.k-mehr:active{ transform:scale(.92) }
.k-punkte{ display:flex; gap:3px }
.k-punkte i{ width:3.5px; height:3.5px; border-radius:50%; background:currentColor }

/* ---- Tageszahlen: EINE stille Zeile, keine vier Kaesten ------- */
.k-tagzeile{
  color:var(--tinte-2); font-size:14px; margin-bottom:22px;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
.k-tagzeile b{ color:var(--tinte); font-weight:600 }

/* ---- Reiter als Segment (tvOS), nicht als Unterstrich --------- */
.k-segment{
  display:flex; gap:3px; background:var(--flaeche-2);
  border-radius:var(--r-voll); padding:3px; margin-bottom:20px;
}
.k-seg{
  flex:1; padding:9px 4px; border-radius:var(--r-voll); text-align:center;
  font-size:13.5px; font-weight:600; color:var(--tinte-2); white-space:nowrap;
  transition:background-color var(--zeit) var(--kurve), color var(--zeit) var(--kurve);
}
.k-seg.an{ background:var(--flaeche); color:var(--tinte); box-shadow:0 1px 3px rgba(0,0,0,.07) }
:root[data-thema="dunkel"] .k-seg.an{ background:var(--flaeche-3); box-shadow:none }
.k-seg .n{ opacity:.55; font-weight:600; margin-left:3px }
.k-seg.an .n{ opacity:1 }
/* Eine wartende Bestellung muss von JEDEM Reiter aus zu sehen sein. */
.k-seg .n.neu{ opacity:1; color:var(--rot); font-weight:750;
  animation:k-atmen 2.4s var(--kurve) infinite }
@keyframes k-atmen{ 0%,100%{opacity:1} 50%{opacity:.4} }

/* ---- Tafel: was zu einem Reiter gehoert ---------------------- */
.k-tafel{ display:none }
.k-tafel.an{ display:block; animation:kusht-auf 260ms var(--kurve) both }

/* ---- Kopf einer Bestellkarte -------------------------------- */
.k-kzeile{ display:flex; align-items:center; gap:8px; margin-bottom:14px }
.k-knr{ font-size:14px; font-weight:650; color:var(--tinte-2) }
.k-neu{
  font-size:11.5px; font-weight:700; letter-spacing:.04em; padding:4px 9px;
  border-radius:var(--r-voll); background:var(--rot-sanft); color:var(--rot);
}
/* Die Wartezeit faerbt sich erst, wenn sie weh tut. */
.k-uhr{
  margin-left:auto; font-size:var(--s-klein); font-weight:650;
  padding:5px 11px; border-radius:var(--r-voll);
  background:var(--flaeche-2); color:var(--tinte-2);
}
.k-uhr.achtung{ background:var(--achtung-grund); color:var(--achtung) }
.k-uhr.alarm  { background:var(--alarm-grund);   color:var(--alarm) }

.k-adr{ font-size:19px; font-weight:650; letter-spacing:-.022em; line-height:1.3 }
.k-kun{ font-size:14px; color:var(--tinte-2); margin-top:3px }

/* ---- Handgriffe: anrufen, Karte. Ein Tipp statt Abtippen. ---- */
.k-griffe{ display:flex; gap:8px; margin-top:13px; flex-wrap:wrap }
.k-griff{
  display:inline-flex; align-items:center; gap:7px; min-height:36px; padding:0 15px;
  border-radius:var(--r-voll); background:var(--flaeche-2); color:var(--tinte);
  font-size:14px; font-weight:600; text-decoration:none;
  transition:transform var(--zeit) var(--kurve);
}
.k-griff:active{ transform:scale(.96) }
.k-griff svg{ width:15px; height:15px; flex:none; opacity:.6 }

/* ---- Posten: die Zahl muss aus Armlaenge lesbar sein --------- */
.k-posten{
  margin:18px 0; padding:16px 0;
  border-top:1px solid var(--linie); border-bottom:1px solid var(--linie);
}
.k-p{ display:flex; align-items:center; gap:12px; padding:6px 0; font-size:15.5px }
.k-p .a{
  min-width:34px; height:26px; padding:0 8px; border-radius:var(--r-voll); background:var(--flaeche-2);
  color:var(--tinte); font-size:14px; font-weight:700;
  display:flex; align-items:center; justify-content:center; flex:none;
}
/* Das × sagt: das ist die MENGE. Ohne sah "1 · 2 · 1 · 3" aus wie eine kaputte Nummerierung. */
.k-p .a i{ font-style:normal; font-weight:600; opacity:.5; margin-left:1px }
.k-p .n{ flex:1; line-height:1.3 }
.k-p .s{ color:var(--tinte-2); font-size:14px }
/* Heute ausverkauft: durchgestrichen, nicht versteckt. */
.k-p.aus .n{ color:var(--tinte-3); text-decoration:line-through }

.k-geld{ display:flex; align-items:baseline; gap:10px; margin-bottom:20px; flex-wrap:wrap }
.k-art{ font-size:13px; color:var(--tinte-2); min-width:0 }
.k-gs{ margin-left:auto; font-size:22px; font-weight:700; letter-spacing:-.03em;
  white-space:nowrap }   /* eine Summe bricht NIE um */

/* ---- Wer faehrt: Name, Stand, eigener Anruf-Knopf ------------ */
.k-fahrer{
  display:flex; align-items:center; gap:11px; padding:13px 14px;
  border-radius:var(--r-innen); background:var(--flaeche-2); margin-bottom:16px;
}
.k-kuerzel{
  width:32px; height:32px; border-radius:var(--r-voll);
  background:var(--weg-grund); color:var(--weg);
  display:grid; place-items:center; font-size:13px; font-weight:750; flex:none;
}
.k-fahrer .wer{ flex:1; line-height:1.25 }
.k-fahrer .wer b{ font-size:14.5px; font-weight:650; display:block }
.k-fahrer .wer span{ font-size:var(--s-klein); color:var(--tinte-2) }
.k-ruf{
  width:34px; height:34px; border-radius:var(--r-voll);
  background:var(--flaeche); color:var(--tinte);
  display:grid; place-items:center; flex:none;
  transition:transform var(--zeit) var(--kurve);
}
:root[data-thema="dunkel"] .k-ruf{ background:var(--flaeche-3) }
.k-ruf:active{ transform:scale(.9) }
.k-ruf svg{ width:15px; height:15px }

/* ---- Tasten unter der Karte: gestapelt, gross, Daumen unten -- */
.k-tat{ display:flex; flex-direction:column; gap:9px }
.k-zwei{ display:flex; gap:9px }
.k-zwei .k{ flex:1 }

/* ---- Zubereitungszeit (Kueche) -------------------------------
   Das Segment sitzt in der Tastenspalte, also ohne den Reiter-Abstand.
   Die Zeile "Готовим 30 мин · до 19:42 · изменить" ist eine Flaeche IN der
   Karte - innen kleiner als aussen (--r-innen), Grund flaeche-2. */
.k-tat .k-segment, .k-dtat .k-segment{ margin-bottom:0 }
.k-zeitzeile{
  display:flex; align-items:center; justify-content:space-between; gap:12px;
  background:var(--flaeche-2); border-radius:var(--r-innen);
  padding:11px 14px; font-size:14.5px; font-weight:600; color:var(--tinte);
}
/* ---- Kurier-Liste (Konsole) ---------------------------------
   Punkt, Name, Zustand. Die Farbe sagt den Zustand - Blau faehrt, Gruen ist frei,
   Gelb macht Pause. Kein Rot: hier ist nichts gefaehrlich. */
/* Die Ueberschrift der Liste sieht ueberall gleich aus - im Blatt, in einer Karte,
   im Musterbogen. Deshalb ohne Elternteil davor. */
.k-gz.kopf{ min-height:0; padding:2px 14px 8px }
.k-gz.kopf .t{ font-size:12px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:var(--tinte-3) }
.k-kurier{ display:flex; align-items:center; gap:11px; padding:9px 14px }
.k-kurier .pkt{ width:9px; height:9px; border-radius:999px; background:var(--tinte-3); flex:none }
.k-kurier .pkt.frei{ background:var(--ok) }
.k-kurier .pkt.weg{ background:var(--weg) }
.k-kurier .pkt.pause{ background:var(--achtung) }
.k-kurier .n{ min-width:0; flex:1 }
.k-kurier .n b{ display:block; font-size:14.5px; font-weight:600 }
.k-kurier .n span{ display:block; font-size:13px; color:var(--tinte-2) }
.k-kurier.leer{ color:var(--tinte-3); font-size:13.5px; padding:4px 14px 10px }
/* Im Leitstand steht dieselbe Liste in der linken Spalte, unter den Tageszahlen. */
.k-pkuriere{ background:var(--flaeche); border-radius:var(--r-4); padding:12px 4px 8px; box-shadow:var(--heb-karte) }
:root[data-thema="dunkel"] .k-pkuriere{ box-shadow:none }
.k-pkuriere h3{ font-size:11px; font-weight:700; letter-spacing:.09em; text-transform:uppercase;
  color:var(--tinte-3); margin:0 0 6px; padding:0 12px }
.k-pkuriere .k-kurier{ padding:5px 12px }
.k-pkuriere .k-kurier.leer{ padding:2px 12px 6px }

/* ---- Zahlart waehlen ----------------------------------------
   Zwei Kapseln pro Zeile, "Не оплачено" still darunter - es ist der Ausnahmefall. */
.k-zarten{ display:grid; grid-template-columns:1fr 1fr; gap:9px; margin-bottom:4px }
/* Das Blatt der Auswahl hat schon flaeche-2 - ein Knopf in derselben Farbe waere
   unsichtbar. Hier hebt er sich ab, genau wie das aktive Segment. */
.k-zarten .k{ width:100%; --k-grund:var(--flaeche) }
/* Bar und Karte sind der Alltag - die stehen nebeneinander. Ueberweisung und
   "nicht bezahlt" sind seltener und bekommen die ganze Zeile, statt halb leer zu stehen. */
.k-zarten .k[data-za="ueberweisung"]{ grid-column:1 / -1 }
:root[data-thema="dunkel"] .k-zarten .k{ --k-grund:var(--flaeche-3) }
.k-zarten .k.still{ grid-column:1 / -1; --k-grund:transparent }

/* ---- Es hakt: der Fahrer steht fest, die Bestellung lebt ------
   Bernstein, nicht Rot. Rot ist der Weg nach vorn ("Касса", "Принять") und bleibt
   auf einer hakenden Karte, wo es ist - der Fahrer kann weiterhin abschliessen.
   Bernstein sagt: hier stockt es, jemand muss ran. Alarm-Rot ist fuer den echten
   Ausfall reserviert (Kueche aus, Bot tot). */
.k-hakt{
  display:flex; align-items:center; gap:10px;
  background:var(--achtung-grund); border-radius:var(--r-innen);
  padding:11px 14px; margin-bottom:13px;
}
.k-hakt .pkt{
  width:8px; height:8px; border-radius:var(--r-voll); background:var(--achtung); flex:none;
  animation:k-atmen 2.4s var(--kurve) infinite;
}
.k-hakt .t{ min-width:0; flex:1; font-size:14.5px; font-weight:650; color:var(--achtung) }
.k-hakt .z{ font-size:13px; font-weight:600; color:var(--achtung); opacity:.7; white-space:nowrap }
@media (prefers-reduced-motion:reduce){ .k-hakt .pkt{ animation:none } }
/* Der Griff sitzt bei "Karte" und "Anruf" - da, wo der Fahrer steht, wenn es passiert.
   Rechts abgesetzt und nur Kontur: man findet ihn, er schreit nicht. Bricht die
   Zeile um, steht er allein rechts - das sieht gewollt aus, nicht kaputt. */
.k-griff.hakt{ margin-left:auto; background:transparent; box-shadow:inset 0 0 0 1px var(--linie-stark); color:var(--tinte-2) }
.k-griff.hakt svg{ opacity:.75 }
/* Hakt es, traegt die Zeile das Signal - die Uhr daneben wird still. Die lange
   Wartezeit ist die Folge, nicht die Nachricht. */
.karte.hakt .k-uhr.alarm, .karte.hakt .k-uhr.achtung{ background:var(--flaeche-2); color:var(--tinte-2) }
/* Zwei Antworten des Chefs: weiter (gefuellt) oder Schluss (nur Kontur - fuehrt
   ohnehin erst in die Grundfrage). */
/* Am Reiter / in der Mac-Navigation: hinter diesem Reiter hakt etwas. */
.k-seg .hakt, .k-nav-punkt .hakt{
  display:inline-block; width:7px; height:7px; border-radius:var(--r-voll);
  background:var(--achtung); margin-left:6px; vertical-align:middle;
  animation:k-atmen 2.4s var(--kurve) infinite;
}
.k-nav-punkt .hakt{ margin-left:0; margin-right:2px }
/* ---- Стоп-лист: die Kueche schaltet ein Gericht ab, in zwei Tipps ----
   Kein Rot: "aus" ist ein Zustand, keine Warnung. Der Schalter ist der bekannte
   (an = Tinte). Aus = durchgestrichen, nicht versteckt - wie .k-p.aus auf der Karte. */
.k-gz .n, .k-einst .n{ margin-left:auto; min-width:24px; height:24px; padding:0 8px; border-radius:var(--r-voll);
  background:var(--flaeche); color:var(--tinte); font-size:13px; font-weight:700;
  display:inline-flex; align-items:center; justify-content:center }
:root[data-thema="dunkel"] .k-gz .n{ background:var(--flaeche-3) }
.k-einst .n{ background:var(--flaeche-2) }
.k-gz .n:empty, .k-einst .n:empty{ display:none }
button.k-gz{ width:100%; text-align:left; color:inherit }
/* Das Blatt: ganzer Schirm am Handy (wie die Akte), am Mac eine Spalte in der Mitte */
.k-stop{ position:fixed; inset:0; z-index:56; background:var(--grund); overflow-y:auto;
  -webkit-overflow-scrolling:touch; transform:translateY(100%); visibility:hidden;
  transition:transform 300ms var(--kurve), visibility 0s linear 300ms }
.k-stop.offen{ transform:none; visibility:visible; transition:transform 300ms var(--kurve) }
.k-stop-kopf{ position:sticky; top:0; z-index:2; max-width:430px; margin:0 auto; background:var(--grund);
  padding:calc(14px + env(safe-area-inset-top)) 18px 10px }
.k-stop-kopf .zeile{ display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:12px }
.k-stop-kopf h2{ margin:0; font-size:26px; font-weight:750; letter-spacing:-.035em }
.k-stop-kopf h2 small{ display:block; margin-top:2px; font-size:13.5px; font-weight:500; letter-spacing:0; color:var(--tinte-2) }
.k-stop-inhalt{ max-width:430px; margin:0 auto; padding:4px 18px calc(40px + env(safe-area-inset-bottom)) }
/* Die Lupe nur im Suchfeld - nicht in jedem Feld eines Blattes (Name, Betrag, Notiz) */
.k-stop .eingabe[type="search"]{ border-radius:var(--r-voll); padding-left:44px;
  background:var(--flaeche) url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2379706A' stroke-width='2.2' stroke-linecap='round'><circle cx='11' cy='11' r='7'/><path d='m20 20-3.5-3.5'/></svg>") no-repeat 16px center / 18px }
:root[data-thema="dunkel"] .k-stop .eingabe{ background-color:var(--flaeche-2) }
.k-stop textarea.eingabe{ border-radius:var(--r-innen); min-height:78px; resize:none; font:inherit; line-height:1.4 }
/* Eine Gruppe = eine Kategorie; Zeilen wie in "Готово" - Liste, kein Knopfhaufen */
.k-stop-gruppe{ background:var(--flaeche); border-radius:var(--r-innen); padding:5px; margin-bottom:12px; box-shadow:var(--heb-karte) }
:root[data-thema="dunkel"] .k-stop-gruppe{ box-shadow:none; background:var(--flaeche-2) }
.k-stop-gruppe.nein{ background:var(--flaeche-2) }   /* "Сейчас нет" oben: eine Stufe zurueck */
:root[data-thema="dunkel"] .k-stop-gruppe.nein{ background:var(--flaeche-3) }
/* Nur die AUS-Bahn bekommt eine eigene Flaeche - AN bleibt Tinte, wie ueberall */
.k-stop-gruppe.nein [aria-checked="false"] > .k-schalter{ background:var(--flaeche-3) }
:root[data-thema="dunkel"] .k-stop-gruppe [aria-checked="false"] > .k-schalter{ background:var(--flaeche-3) }
:root[data-thema="dunkel"] .k-stop-gruppe.nein [aria-checked="false"] > .k-schalter{ background:var(--grund) }
/* Jede Zeile eine Kapsel, wie die Liste im Leitstand - das Gesetz gilt auch hier */
.k-stop-zeile{ display:flex; align-items:center; gap:12px; min-height:52px; padding:7px 8px 7px 13px; width:100%; text-align:left;
  color:var(--tinte); border-radius:var(--r-voll); transition:background-color var(--zeit) var(--kurve) }
.k-stop-zeile:active{ background:var(--flaeche-2); opacity:1 }
:root[data-thema="dunkel"] .k-stop-zeile:active{ background:var(--flaeche-3) }
@media (hover:hover){ .k-stop-zeile:hover{ background:var(--flaeche-2) } :root[data-thema="dunkel"] .k-stop-zeile:hover{ background:var(--flaeche-3) } }
.k-stop-zeile .wo{ flex:1; min-width:0; line-height:1.3 }
/* Der Name darf zwei Zeilen haben - "Аджарский хачапури с бастурмой" muss lesbar bleiben */
.k-stop-zeile .wo b{ display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:2; overflow:hidden;
  font-size:15px; font-weight:600; line-height:1.25 }
.k-stop-zeile .wo span{ display:block; font-size:12.5px; color:var(--tinte-2) }
.k-stop-zeile.aus .wo b{ color:var(--tinte-3); text-decoration:line-through }
.k-stop-zeile.aus .wo span{ color:var(--tinte-3) }
.k-stop-zeile[disabled]{ opacity:.5 }
.k-stop-leer{ padding:28px 0; text-align:center; color:var(--tinte-3); font-size:14.5px }
/* ---- Ausfall: Pause, Bot tot. Alarm-Rot - das ist der echte Ausfall. ----
   Ein Streifen oben, der bleibt, bis es wieder geht - mit dem einen Knopf,
   der es wieder gut macht. Ohne Knopf, wenn kein Tipp hilft. */
.k-ausfall{ display:flex; align-items:center; gap:12px; padding:11px 11px 11px 14px; margin:0 0 14px;
  border-radius:var(--r-innen); background:var(--alarm-grund); color:var(--alarm) }
.k-ausfall .pkt{ width:9px; height:9px; border-radius:var(--r-voll); background:var(--alarm); flex:none;
  animation:k-atmen 2.4s var(--kurve) infinite }
.k-ausfall.still .pkt{ animation:none }
.k-ausfall .t{ flex:1; min-width:0; line-height:1.3 }
.k-ausfall .t b{ display:block; font-size:15px; font-weight:700; white-space:nowrap }
.k-ausfall .t span{ display:block; font-size:13px; opacity:.85; margin-top:1px }
.k-ausfall .k{ flex:none; --k-grund:var(--flaeche); --k-tinte:var(--alarm); min-height:36px; padding:7px 12px; font-size:13.5px }
:root[data-thema="dunkel"] .k-ausfall .k{ --k-grund:var(--flaeche-3) }
@media (prefers-reduced-motion:reduce){ .k-ausfall .pkt{ animation:none } }
/* Der Grund fuer die Pause: dieselbe Frage wie beim Storno, oben statt in der Karte */
.k-grund.pause{ margin:0 0 14px }
.k-pult-liste .k-ausfall, .k-pult-liste .k-grund.pause{ margin:14px 4px 4px }
/* ---- Сотрудники: wer darf rein. Dieselben Gruppen und Kapsel-Zeilen wie der
   Стоп-лист, kein Rot. Der Code ist die eine grosse Zahl - einmal, dann nie wieder. */
.k-leute-zeile{ display:flex; align-items:center; gap:12px; min-height:56px; padding:7px 8px 7px 13px; width:100%; text-align:left;
  color:var(--tinte); border-radius:var(--r-voll); transition:background-color var(--zeit) var(--kurve) }
.k-leute-zeile:active{ background:var(--flaeche-2) }
@media (hover:hover){ .k-leute-zeile:hover{ background:var(--flaeche-2) } :root[data-thema="dunkel"] .k-leute-zeile:hover{ background:var(--flaeche-3) } }
.k-leute-zeile .kz{ width:36px; height:36px; border-radius:var(--r-voll); background:var(--flaeche-2); color:var(--tinte);
  display:grid; place-items:center; font-size:14px; font-weight:750; flex:none }
:root[data-thema="dunkel"] .k-leute-zeile .kz{ background:var(--flaeche-3) }
.k-leute-zeile .wo{ flex:1; min-width:0; line-height:1.3 }
.k-leute-zeile .wo b{ display:block; font-size:15px; font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis }
.k-leute-zeile .wo span{ display:block; font-size:12.5px; color:var(--tinte-2) }
.k-leute-zeile .pfeil{ color:var(--tinte-3); font-size:22px; line-height:1; margin-right:4px }
.k-leute-zeile.aus .wo b{ color:var(--tinte-3); text-decoration:line-through }
.k-leute-zeile.aus .kz{ opacity:.45 }
.k-leute-zeile .jetzt{ width:8px; height:8px; border-radius:var(--r-voll); background:var(--ok); flex:none; margin-right:2px }
.k-code{ margin:14px 0; padding:22px 18px; border-radius:var(--r-innen); background:var(--flaeche-2); text-align:center }
:root[data-thema="dunkel"] .k-code{ background:var(--flaeche-3) }
.k-code b{ display:block; font-size:38px; font-weight:750; letter-spacing:.18em; font-variant-numeric:tabular-nums }
.k-code span{ display:block; margin-top:6px; font-size:13px; color:var(--tinte-2) }
.k-leute-eingaben{ display:grid; gap:10px; margin:4px 0 14px }
.k-leute-log{ padding:6px 16px }
.k-leute-log div{ font-size:14px; padding:8px 0; color:var(--tinte-2); box-shadow:inset 0 -1px var(--linie) }
.k-leute-log div:last-child{ box-shadow:none }
.k-leute-log div.schlecht{ color:var(--alarm) }

/* ---- Касса (2.1): das Bargeld der Kuriere. Dieselben Bausteine wie Сотрудники:
   Bilanz-Karte, Kapsel-Zeilen, ein Rot pro Bild. Bernstein heisst "wartet",
   Gruen heisst "abgerechnet" - Alarm-Rot gibt es hier nicht, Geld ist kein Ausfall. ---- */
/* Kurier: die Geld-Karte - die grosse Zahl, der Knopf, darunter eine Zeile, was Sache ist */
.k-bargeld{ background:var(--flaeche); border-radius:var(--r-5); box-shadow:var(--heb-karte); padding:18px 20px; margin-bottom:16px }
:root[data-thema="dunkel"] .k-bargeld{ box-shadow:none; background:var(--flaeche-2) }
.k-bargeld .oben{ display:flex; align-items:center; gap:14px }
.k-bargeld .zahl{ flex:1; min-width:0 }
.k-bargeld i{ display:block; font-style:normal; font-size:11px; letter-spacing:.07em; text-transform:uppercase; color:var(--tinte-3); font-weight:700; margin-bottom:6px }
.k-bargeld b{ display:block; font-size:32px; font-weight:750; letter-spacing:-.035em; line-height:1 }
.k-bargeld .k{ flex:none }
:root[data-thema="dunkel"] .k-bargeld .k:not(.haupt){ --k-grund:var(--flaeche-3) }   /* eine Stufe heller als die Karte */
.k-bargeld .stand{ display:flex; align-items:center; gap:9px; margin-top:14px; padding-top:12px; box-shadow:inset 0 1px var(--linie); font-size:13.5px; color:var(--tinte-2) }
.k-bargeld .stand .pkt{ width:8px; height:8px; border-radius:var(--r-voll); background:var(--tinte-3); flex:none }
.k-bargeld .stand .t{ flex:1; min-width:0; line-height:1.35 }
.k-bargeld .stand b{ display:inline; font-size:inherit; letter-spacing:0; font-weight:700 }
.k-bargeld .stand.wartet{ color:var(--achtung) } .k-bargeld .stand.wartet .pkt{ background:var(--achtung) }
.k-bargeld .stand.fehlt{ color:var(--achtung) } .k-bargeld .stand.fehlt .pkt{ background:var(--achtung) }
.k-bargeld .stand.ok{ color:var(--ok) } .k-bargeld .stand.ok .pkt{ background:var(--ok) }
/* Die grosse Zahl beim Abgeben (Kurier) und Annehmen (Chef) */
.k-kasse-summe{ margin:6px 0 14px; padding:22px 18px; border-radius:var(--r-innen); background:var(--flaeche-2); text-align:center }
:root[data-thema="dunkel"] .k-kasse-summe{ background:var(--flaeche-3) }
.k-kasse-summe i{ display:block; font-style:normal; font-size:11.5px; letter-spacing:.06em; text-transform:uppercase; color:var(--tinte-2); font-weight:700 }
.k-kasse-summe b{ display:block; font-size:40px; font-weight:750; letter-spacing:-.035em; margin-top:4px; font-variant-numeric:tabular-nums }
.k-kasse-summe span{ display:block; margin-top:6px; font-size:13px; color:var(--tinte-2) }
.k-kasse-summe.wartet b{ color:var(--achtung) }
.k-kasse-hin{ font-size:13.5px; color:var(--tinte-2); line-height:1.45; margin:0 6px 14px }
.k-kasse-hin.ok{ color:var(--ok) } .k-kasse-hin.achtung{ color:var(--achtung) }
/* Chef: eine Zeile je Kurier - Name links, Geld rechts, dazwischen was er gerade tut */
.k-kasse-zeile{ display:flex; align-items:center; gap:12px; min-height:56px; padding:7px 8px 7px 13px; width:100%; text-align:left;
  color:var(--tinte); border-radius:var(--r-voll); transition:background-color var(--zeit) var(--kurve) }
.k-kasse-zeile:active{ background:var(--flaeche-2) }
@media (hover:hover){ .k-kasse-zeile:hover{ background:var(--flaeche-2) } :root[data-thema="dunkel"] .k-kasse-zeile:hover{ background:var(--flaeche-3) } }
.k-kasse-zeile .kz{ width:36px; height:36px; border-radius:var(--r-voll); background:var(--flaeche-2); color:var(--tinte); display:grid; place-items:center; font-size:14px; font-weight:750; flex:none }
:root[data-thema="dunkel"] .k-kasse-zeile .kz{ background:var(--flaeche-3) }
.k-kasse-zeile .wo{ flex:1; min-width:0; line-height:1.3 }
.k-kasse-zeile .wo b{ display:block; font-size:15px; font-weight:600 }
.k-kasse-zeile .wo span{ display:block; font-size:12.5px; color:var(--tinte-2) }
.k-kasse-zeile .geld{ text-align:right; line-height:1.3; flex:none }
.k-kasse-zeile .geld b{ display:block; font-size:15px; font-weight:700; font-variant-numeric:tabular-nums }
.k-kasse-zeile .geld span{ display:block; font-size:12px; color:var(--tinte-2) }
.k-kasse-zeile .geld.wartet b, .k-kasse-zeile .geld.wartet span{ color:var(--achtung) }
.k-kasse-zeile .geld.ok b, .k-kasse-zeile .geld.ok span{ color:var(--ok) }
.k-kasse-zeile .geld.nix b{ color:var(--tinte-3); font-weight:500 }
.k-kasse-zeile .pfeil{ color:var(--tinte-3); font-size:22px; line-height:1; margin-right:4px }
/* Verlauf: was wann angenommen wurde */
.k-kasse-log{ padding:6px 16px }
.k-kasse-log div{ display:flex; justify-content:space-between; gap:12px; font-size:14px; padding:9px 0; color:var(--tinte-2); box-shadow:inset 0 -1px var(--linie) }
.k-kasse-log div:last-child{ box-shadow:none }
.k-kasse-log b{ color:var(--tinte); font-weight:600; font-variant-numeric:tabular-nums; white-space:nowrap }
.k-kasse-log .fehlt{ color:var(--achtung) }
/* Tag geschlossen: ein stiller gruener Streifen - kein Alarm */
.k-tag-zu{ display:flex; align-items:center; gap:12px; padding:11px 14px; margin:0 0 14px; border-radius:var(--r-innen); background:var(--ok-grund); color:var(--ok) }
.k-tag-zu .pkt{ width:9px; height:9px; border-radius:var(--r-voll); background:var(--ok); flex:none }
.k-tag-zu .t{ flex:1; min-width:0; line-height:1.3 }
.k-tag-zu .t b{ display:block; font-size:15px; font-weight:700 }
.k-tag-zu .t span{ display:block; font-size:13px; opacity:.85 }
/* Grund-Chips (Недостача / Излишек / Fehler im Auftrag) - dieselbe Frage wie beim Storno */
.k-chips{ display:flex; flex-wrap:wrap; gap:8px; margin:10px 0 }
.k-chips .k{ min-height:38px; padding:6px 14px; font-size:13.5px }
.k-chips .k.an{ --k-grund:var(--tinte); --k-tinte:var(--flaeche) }
/* Betrag eintippen: eine Zahl, mittig, gross */
.k-kasse-betrag{ text-align:center; font-size:20px; font-weight:700; border-radius:var(--r-voll); font-variant-numeric:tabular-nums }
/* Im Blatt am Handy braucht die Bilanz drei gleiche Spalten - "61 400 ֏" und "4 386 ֏" duerfen sich nicht beruehren */
.k-stop-inhalt .k-bilanz-zahlen{ grid-template-columns:repeat(3, minmax(0, 1fr)); gap:8px }
.k-stop-inhalt .k-bilanz-zahlen b{ font-size:19px }
/* Der Zaehler im ••• und am Mac in Bernstein, wenn jemand wartet */
.k-gz .n.achtung, .k-einst .n.achtung{ background:var(--achtung-grund); color:var(--achtung) }

/* ---- Архив (2.2): alle Tage davor. Zeitraum als Segment oder kleiner Kalender, Suche wie im
   Стоп-лист, Bilanz wie in der Kasse, Zeilen wie in "Готово". Jeder Tag ist eine Kapsel-Zeile
   mit seinen Zahlen - antippen klappt ihn auf. Nichts hier ist rot: nur lesen. ---- */
.k-bilanz-zahlen.zwei{ grid-template-columns:minmax(0,.7fr) minmax(0,1.3fr) }
.k-bilanz-zahlen.zwei b{ font-size:21px }
.k-archiv-tag{ display:flex; align-items:center; gap:10px; width:100%; text-align:left; color:var(--tinte); min-height:48px;
  padding:6px 8px 6px 14px; border-radius:var(--r-voll); margin:12px 0 4px; transition:background-color var(--zeit) var(--kurve) }
.k-archiv-tag:active{ background:var(--flaeche-2) }
@media (hover:hover){ .k-archiv-tag:hover{ background:var(--flaeche-2) } :root[data-thema="dunkel"] .k-archiv-tag:hover{ background:var(--flaeche-3) } }
.k-archiv-tag .d{ flex:1; min-width:0; line-height:1.3 }
.k-archiv-tag .d b{ display:block; font-size:15px; font-weight:700 }
.k-archiv-tag .d span{ display:block; font-size:12.5px; color:var(--tinte-2) }
.k-archiv-tag .zu{ width:8px; height:8px; border-radius:var(--r-voll); background:var(--ok); flex:none }
.k-archiv-tag .pfeil{ color:var(--tinte-3); font-size:20px; line-height:1; transition:transform var(--zeit) var(--kurve) }
.k-archiv-tag.auf .pfeil{ transform:rotate(90deg) }
.k-archiv-mehr{ display:block; width:100%; text-align:center; padding:12px; font-size:13.5px; color:var(--tinte-2); border-radius:var(--r-voll) }
.k-lz .wo .tag{ color:var(--tinte-3) }
.k-stop .k-liste{ padding:2px 16px }
.k-stop-inhalt > .eingabe{ margin-bottom:12px }      /* 2.6: die Suche klebt nicht an der Bilanz */
/* Zugeklappt: eine Kapsel-Zeile mit dem Zeitraum - antippen oeffnet den Kalender */
.k-kal-zu{ display:flex; align-items:center; gap:10px; width:100%; text-align:left; color:var(--tinte); min-height:46px; padding:6px 10px 6px 16px;
  border-radius:var(--r-voll); background:var(--flaeche); box-shadow:var(--heb-karte); margin:2px 0 12px }
:root[data-thema="dunkel"] .k-kal-zu{ background:var(--flaeche-2); box-shadow:none }
.k-kal-zu svg{ width:18px; height:18px; color:var(--tinte-3); flex:none }
.k-kal-zu b{ flex:1; font-size:14.5px; font-weight:700 } .k-kal-zu b span{ font-weight:500; color:var(--tinte-2) }
.k-kal-zu .pfeil{ color:var(--tinte-3); font-size:22px; line-height:1 }
/* Der Kalender: erster Tipp Anfang, zweiter Tipp Ende. Anfang und Ende sind Tinte,
   dazwischen ein weiches Band, heute hat den roten Punkt, die Zukunft ist blass. */
.k-kal{ background:var(--flaeche); border-radius:var(--r-innen); box-shadow:var(--heb-karte); padding:10px 10px 12px; margin:2px 0 12px }
:root[data-thema="dunkel"] .k-kal{ box-shadow:none; background:var(--flaeche-2) }
.k-kal-kopf{ display:flex; align-items:center; justify-content:space-between; gap:8px; padding:2px 4px 8px }
.k-kal-kopf b{ font-size:15px; font-weight:700; letter-spacing:-.01em }
.k-kal-kopf .k{ min-height:34px; width:34px; padding:0; --k-grund:var(--flaeche-2); font-size:18px }
.k-kal-kopf .k[disabled]{ opacity:.35 }
:root[data-thema="dunkel"] .k-kal-kopf .k{ --k-grund:var(--flaeche-3) }
.k-kal-wt{ display:grid; grid-template-columns:repeat(7,1fr); text-align:center; font-size:10.5px; letter-spacing:.06em; text-transform:uppercase; color:var(--tinte-3); font-weight:700; margin-bottom:4px }
.k-kal-tage{ display:grid; grid-template-columns:repeat(7,1fr); row-gap:4px }
/* Die Zelle traegt das Band, der Knopf darin ist die Kapsel - das Gesetz gilt auch im Kalender */
.k-kal-zelle{ position:relative; height:38px; display:grid; place-items:center }
.k-kal-zelle::before{ content:""; position:absolute; inset:2px 0; background:transparent }
.k-kal-zelle.dazw::before{ background:var(--flaeche-2) }
.k-kal-zelle.anfang::before{ left:50%; background:var(--flaeche-2) } .k-kal-zelle.ende::before{ right:50%; background:var(--flaeche-2) }
.k-kal-zelle.anfang.ende::before{ display:none }
:root[data-thema="dunkel"] .k-kal-zelle.dazw::before, :root[data-thema="dunkel"] .k-kal-zelle.anfang::before, :root[data-thema="dunkel"] .k-kal-zelle.ende::before{ background:var(--flaeche-3) }
.k-kal-tag{ position:relative; z-index:1; width:34px; height:34px; border-radius:var(--r-voll); display:grid; place-items:center; padding:0;
  font-size:14.5px; font-weight:600; color:var(--tinte); font-variant-numeric:tabular-nums }
.k-kal-tag.an{ background:var(--tinte); color:var(--flaeche) }
.k-kal-tag.heute::after{ content:""; position:absolute; bottom:4px; width:4px; height:4px; border-radius:var(--r-voll); background:var(--rot) }
.k-kal-tag.an.heute::after{ background:var(--flaeche) }
.k-kal-tag[disabled]{ color:var(--tinte-3); font-weight:500; opacity:.55 }
.k-kal-fuss{ display:flex; align-items:center; justify-content:space-between; gap:10px; padding:10px 4px 0; font-size:13px; color:var(--tinte-2) }
.k-kal-fuss b{ color:var(--tinte); font-weight:700 }
.k-kal-fuss .k{ min-height:34px; padding:0 14px; font-size:13px }
:root[data-thema="dunkel"] .k-kal-fuss .k{ --k-grund:var(--flaeche-3) }
/* Die Akte aus dem Archiv heraus liegt ueber dem Blatt */
.k-akte.archivakte{ z-index:58 }
/* Die Akte aus dem Pult heraus (2.5): dieselbe Karte in der Mitte */
.k-akte.pultakte{ z-index:58 }

/* ---- Транзакции (2.3, nur Chef): jedes Geld als eine Zeile. Der Filter sind die Zahlen selbst -
   die vier Teilsummen der Bilanz sind Kapseln, angetippt = Tinte, nochmal = alles. Die Zeilen
   tragen ein einfarbiges Zeichen (Schein, Karte, Pfeile, Kreuz), der geschlossene Tag den Haken
   in Tinte. Nichts hier ist rot: nur lesen. Bernstein nur bei einer Fehlsumme - "hakt". ---- */
.k-bilanz-teile.filter{ display:grid; grid-template-columns:1fr 1fr; gap:7px }
.k-bilanz-teile.filter .k{ display:flex; flex-direction:column; align-items:flex-start; justify-content:center; gap:1px; min-height:46px;
  padding:6px 15px 7px; font-size:12px; font-weight:500; line-height:1.2; white-space:nowrap; --k-grund:var(--flaeche-2); --k-tinte:var(--tinte-2) }
.k-bilanz-teile.filter .k b{ color:var(--tinte); font-weight:700; font-size:14.5px; font-variant-numeric:tabular-nums }
.k-bilanz-teile.filter .k.leer b{ color:var(--tinte-3); font-weight:500 }
.k-bilanz-teile.filter .k.an{ --k-grund:var(--tinte); --k-tinte:var(--flaeche) }
.k-bilanz-teile.filter .k.an b{ color:var(--flaeche) }
:root[data-thema="dunkel"] .k-bilanz-teile.filter .k:not(.an){ --k-grund:var(--flaeche-3) }
/* Ein Tag: Ueberschrift mit Tagessumme, darunter die Karte mit den Zeilen */
.k-tz-tag{ display:flex; align-items:baseline; justify-content:space-between; gap:10px; margin:16px 6px 6px; font-size:11px; font-weight:700;
  letter-spacing:.08em; text-transform:uppercase; color:var(--tinte-3) }
.k-tz-tag b{ font-size:12.5px; letter-spacing:0; text-transform:none; color:var(--tinte-2); font-weight:600; font-variant-numeric:tabular-nums }
.k-tz{ display:flex; align-items:center; gap:12px; padding:12px 0; box-shadow:inset 0 -1px var(--linie); width:100%; text-align:left; color:var(--tinte) }
.k-tz:last-child{ box-shadow:none }
button.k-tz:active{ opacity:.55 }
.k-tz .ikon{ width:28px; height:28px; border-radius:var(--r-voll); display:grid; place-items:center; flex:none; background:var(--flaeche-2); color:var(--tinte-2) }
.k-tz .ikon svg{ width:14px; height:14px }
.k-tz .ikon.tag{ background:var(--tinte); color:var(--flaeche) }
:root[data-thema="dunkel"] .k-tz .ikon:not(.tag){ background:var(--flaeche-3) }
.k-tz .wo{ flex:1; min-width:0; line-height:1.3 }
.k-tz .wo b{ display:block; font-size:14.5px; font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis }
.k-tz .wo span{ display:block; font-size:12.5px; color:var(--tinte-2) }
.k-tz .sum{ font-size:15px; font-weight:650; white-space:nowrap; font-variant-numeric:tabular-nums }
.k-tz .sum.minus{ color:var(--achtung) }
.k-tz .sum.still{ color:var(--tinte-3); font-weight:500 }
/* Der stille Download-Knopf: ganz unten, eine Kapsel in Flaeche, mit Pfeil nach unten */
.k-lade{ display:flex; align-items:center; justify-content:center; gap:8px; width:100%; margin:14px 0 0 }
.k-lade svg{ width:16px; height:16px }
.k-lade[disabled]{ opacity:.55 }

/* ---- Показатели (2.4, nur Chef): vier Zahlen mit Vergleich, Balken-Bilder, Gerichte, Kuriere.
   Nur lesen, kein Rot. Der Vergleich ist grau; gruen erst, wenn es gut ist (mehr Umsatz, kuerzere
   Lieferung), Bernstein, wenn es nachlaesst - ab 5 % oder 2 Minuten, Kleinkram bleibt grau. ---- */
.k-kz{ display:grid; grid-template-columns:1fr 1fr; gap:14px 12px; margin-top:2px }
.k-kz > div{ min-width:0 }
.k-kz b{ display:block; font-size:22px; font-weight:700; letter-spacing:-.03em; line-height:1.15; white-space:nowrap; font-variant-numeric:tabular-nums }
.k-kz span{ display:block; margin-top:2px; font-size:12.5px; color:var(--tinte-2) }
.k-kz .d{ display:inline-flex; align-items:center; gap:3px; margin-top:5px; font-size:12px; font-weight:600; font-style:normal; color:var(--tinte-2);
  padding:2px 8px; border-radius:var(--r-voll); background:var(--flaeche-2); font-variant-numeric:tabular-nums }
.k-kz .d.auf{ color:var(--ok); background:var(--ok-grund) }
.k-kz .d.ab{ color:var(--achtung); background:var(--achtung-grund) }
:root[data-thema="dunkel"] .k-kz .d{ background:var(--flaeche-3) }
:root[data-thema="dunkel"] .k-kz .d.auf{ background:var(--ok-grund) } :root[data-thema="dunkel"] .k-kz .d.ab{ background:var(--achtung-grund) }
/* Das Bild: eine Karte, oben Titel und die eine Zahl, die Balken als SVG, unten die Beschriftung */
.k-bild{ background:var(--flaeche); border-radius:var(--r-5); box-shadow:var(--heb-karte); padding:16px 18px 12px; margin-bottom:14px }
:root[data-thema="dunkel"] .k-bild{ box-shadow:none }
.k-bild-kopf{ display:flex; align-items:baseline; justify-content:space-between; gap:12px; margin-bottom:10px }
.k-bild-kopf h3{ margin:0; font-size:11px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:var(--tinte-3); white-space:nowrap }
.k-bild-kopf span{ font-size:12.5px; color:var(--tinte-2); white-space:nowrap }
.k-bild-kopf span b{ color:var(--tinte); font-weight:600 }
.k-bild svg{ display:block; width:100%; height:auto; overflow:visible }
.k-bild .balken{ fill:var(--tinte) }
.k-bild .balken.still{ fill:var(--tinte-3); opacity:.45 }
.k-bild .balken.vor{ fill:var(--flaeche-2) }
:root[data-thema="dunkel"] .k-bild .balken.vor{ fill:var(--flaeche-3) }
.k-bild .wert{ font-size:11px; font-weight:700; fill:var(--tinte); font-variant-numeric:tabular-nums }
.k-bild .achse{ font-size:10.5px; fill:var(--tinte-3); font-weight:600; letter-spacing:.02em }
.k-bild .achse.an{ fill:var(--tinte); font-weight:700 }
.k-bild .linie{ stroke:var(--linie); stroke-width:1 }
.k-bild-fuss{ display:flex; gap:14px; margin-top:8px; font-size:12px; color:var(--tinte-2) }
.k-bild-fuss i{ display:inline-block; width:9px; height:9px; border-radius:2px; background:var(--tinte); margin-right:5px; vertical-align:-1px }
.k-bild-fuss i.vor{ background:var(--flaeche-2); box-shadow:inset 0 0 0 1px var(--linie) }
:root[data-thema="dunkel"] .k-bild-fuss i.vor{ background:var(--flaeche-3) }
/* Gerichte: Name, Anzahl, ein stiller Balken darunter */
.k-top{ display:flex; flex-direction:column; gap:2px }
.k-top > div{ padding:10px 0; box-shadow:inset 0 -1px var(--linie) } .k-top > div:last-child{ box-shadow:none }
.k-top .z{ display:flex; align-items:baseline; justify-content:space-between; gap:10px }
.k-top .z .n{ font-size:14.5px; font-weight:600; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap }
.k-top .z .r{ font-size:13px; color:var(--tinte-2); font-weight:500; white-space:nowrap; flex:none } .k-top .z .r b{ color:var(--tinte); font-weight:700 }
.k-top .b{ height:6px; border-radius:var(--r-voll); background:var(--flaeche-2); margin-top:7px; overflow:hidden }
.k-top .b i{ display:block; height:100%; border-radius:var(--r-voll); background:var(--tinte) }
:root[data-thema="dunkel"] .k-top .b{ background:var(--flaeche-3) }
/* Zahlarten: ein Streifen aus Tinte, Grau und Flaeche - Beschriftung darunter */
.k-anteil{ display:flex; height:10px; border-radius:var(--r-voll); overflow:hidden; gap:2px; margin:4px 0 8px }
.k-anteil i{ display:block; height:100%; background:var(--tinte) } .k-anteil i.zwei{ background:var(--tinte-3); opacity:.5 } .k-anteil i.drei{ background:var(--flaeche-3) }
.k-anteil-text{ display:flex; flex-wrap:wrap; gap:6px 16px; font-size:13px; color:var(--tinte-2) } .k-anteil-text b{ color:var(--tinte); font-weight:600 }
.k-anteil-text i{ display:inline-block; width:9px; height:9px; border-radius:2px; background:var(--tinte); margin-right:5px; vertical-align:-1px }
.k-anteil-text i.zwei{ background:var(--tinte-3); opacity:.5 } .k-anteil-text i.drei{ background:var(--flaeche-3); box-shadow:inset 0 0 0 1px var(--linie) }
/* Kuriere: eine Zeile je Kurier - Lieferungen, Zeit, Bargeld */
.k-kur{ display:flex; align-items:center; gap:12px; padding:11px 0; box-shadow:inset 0 -1px var(--linie) } .k-kur:last-child{ box-shadow:none }
.k-kur .wo{ flex:1; min-width:0; line-height:1.3 } .k-kur .wo b{ display:block; font-size:14.5px; font-weight:600 } .k-kur .wo span{ display:block; font-size:12.5px; color:var(--tinte-2) }
.k-kur .n{ font-size:15px; font-weight:650; white-space:nowrap; font-variant-numeric:tabular-nums }
.k-hloesung{ display:flex; gap:8px; margin:-2px 0 15px }
.k-hloesung .k{ white-space:nowrap }
.k-hloesung .k:first-child{ flex:1 }   /* "weiter" bekommt den Platz, "Schluss" bleibt schmal */

/* ---- Umhaengen: einen anderen Kurier waehlen -----------------
   Dieselbe Zeile wie in der Kurier-Liste, nur tippbar. Kapsel, kein Rot -
   das ist eine Entscheidung, keine Gefahr. */
.k-umliste{ display:flex; flex-direction:column; gap:7px; margin-bottom:4px }
.k-kurier.waehlbar{
  width:100%; text-align:left; background:var(--flaeche); border-radius:var(--r-voll);
  padding:10px 16px 10px 14px; gap:11px;
  transition:transform var(--zeit) var(--kurve), background-color var(--zeit) var(--kurve);
}
.k-kurier.waehlbar:active{ transform:scale(.97) }
:root[data-thema="dunkel"] .k-kurier.waehlbar{ background:var(--flaeche-3) }
.k-kurier.waehlbar:hover{ filter:brightness(.98) }
.k-kurier.waehlbar .nimm{ font-size:13.5px; font-weight:700; color:var(--weg); flex:none }
.k-umhin{ font-size:12.5px; color:var(--tinte-2); line-height:1.45; margin:10px 2px 0 }

/* ---- Dienst-Status des Fahrers ------------------------------
   Drei Kapseln im Segment, oder - wenn er faehrt - eine ruhige Feststellung
   mit blauem Punkt. Kein Rot: das ist kein Alarm, sondern ein Zustand. */
.k-dienst{ padding:14px 16px 13px; margin-bottom:14px }
.k-dienst .k-segment{ margin:0 }
.k-dienst-hin{ font-size:13px; color:var(--tinte-2); line-height:1.4; margin:9px 2px 0 }
.k-dienst-weg{ display:flex; align-items:center; gap:9px; padding:2px 2px 0 }
.k-dienst-weg b{ font-size:15.5px; font-weight:700; color:var(--weg); flex:1 }
.k-dienst-weg .pkt{ width:9px; height:9px; border-radius:999px; background:var(--weg); flex:none }
.k-dienst-weg .n{ font-size:14px; font-weight:700; color:var(--tinte-2) }

/* frei in einer Karte (Fahrer): Abstand nach oben wie die anderen Bloecke; in der
   Tastenspalte (Konsole, Akte) regelt das gap der Spalte den Abstand. */
.k-zeitzeile{ margin-top:14px }
.k-tat .k-zeitzeile, .k-dtat .k-zeitzeile{ margin-top:0 }
.k-zeitzeile .zt{ display:flex; flex-direction:column; gap:2px; min-width:0 }
.k-zeitzeile .zt b{ font-weight:600 }
.k-zeitzeile .zt small{ font-size:13px; font-weight:500; color:var(--tinte-2) }
.k-zeitzeile.leer{ color:var(--tinte-2); font-weight:500 }
.k-zeitzeile .k.still{ height:auto; min-height:0; padding:0; font-size:13.5px; color:var(--weg); flex:none }

/* ---- Erledigt: EINE Flaeche, Zeilen darin -------------------- */
.k-liste{
  background:var(--flaeche); border-radius:var(--r-5); box-shadow:var(--heb-karte);
  padding:4px 20px; margin-bottom:14px;
}
.k-lz{ display:flex; align-items:center; gap:12px; padding:15px 0;
  border-bottom:1px solid var(--linie) }
.k-lz:last-child{ border-bottom:0 }
.k-lz .haken{
  width:26px; height:26px; border-radius:var(--r-voll);
  background:var(--ok-grund); color:var(--ok); display:grid; place-items:center; flex:none;
}
.k-lz .haken svg{ width:13px; height:13px }
.k-lz .wo{ flex:1; line-height:1.3; min-width:0 }
.k-lz .wo b{ font-size:14.5px; font-weight:600; display:block;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis }
.k-lz .wo span{ font-size:var(--s-klein); color:var(--tinte-2) }
.k-lz .sum{ font-size:15px; font-weight:650; white-space:nowrap }

/* ---- Nichts da: ruhig sagen, nicht mit einer leeren Flaeche -- */
.k-leer{ text-align:center; padding:54px 20px; color:var(--tinte-3); font-size:14.5px }
.k-leer b{ display:block; font-size:var(--s-gross); font-weight:650;
  color:var(--tinte-2); margin-bottom:5px }

/* ---- Blatt von unten + Kontrollzentrum aus Kacheln ----------- */
.k-veil{
  position:fixed; inset:0; background:rgba(0,0,0,.4);
  opacity:0; pointer-events:none; z-index:40;
  transition:opacity var(--zeit) var(--kurve);
  -webkit-backdrop-filter:blur(3px); backdrop-filter:blur(3px);
}
.k-veil.offen{ opacity:1; pointer-events:auto }
.k-blatt{
  position:fixed; left:0; right:0; bottom:0; z-index:50;
  background:var(--flaeche); border-radius:30px 30px 0 0;
  padding:10px 14px calc(20px + env(safe-area-inset-bottom));
  transform:translateY(101%); transition:transform 300ms var(--kurve);
  max-width:430px; margin:0 auto;
}
.k-blatt.offen{ transform:none }
.k-handgriff{ width:38px; height:5px; border-radius:var(--r-voll);
  background:var(--flaeche-3); margin:0 auto 16px }

.k-kacheln{ display:grid; grid-template-columns:1fr 1fr; gap:9px; margin-bottom:9px }
.k-kachel{
  background:var(--flaeche-2); border-radius:var(--r-innen); padding:14px 15px;
  min-height:84px; display:flex; flex-direction:column;
  align-items:flex-start; justify-content:space-between;
  color:var(--tinte); text-align:left;
  transition:background-color var(--zeit) var(--kurve), color var(--zeit) var(--kurve),
             transform var(--zeit) var(--kurve);
}
.k-kachel:active{ transform:scale(.97) }
.k-kachel svg{ width:20px; height:20px; opacity:.55 }
.k-kachel .t{ font-size:14px; font-weight:600; line-height:1.25 }
.k-kachel .u{ font-size:12px; color:var(--tinte-2); font-weight:500 }
/* AN ist Tinte, nicht Rot. Rot bleibt der Gefahr und der Haupttaste. */
.k-kachel.an{ background:var(--tinte); color:var(--flaeche) }
.k-kachel.an svg{ opacity:1 }
.k-kachel.an .u{ opacity:.66 }

.k-gruppe{ background:var(--flaeche-2); border-radius:var(--r-innen);
  padding:0 15px; margin-bottom:9px }
.k-gz{ display:flex; align-items:center; gap:14px; padding:14px 0;
  border-bottom:1px solid var(--linie) }
.k-gz:last-child{ border-bottom:0 }
.k-gz .t{ flex:1; font-size:15.5px; font-weight:550 }
.k-gz svg{ width:19px; height:19px; opacity:.5; flex:none }
.k-gz.raus{ color:var(--alarm) }
.k-gz.raus svg{ opacity:.8 }

.k-wahl{ display:flex; gap:3px; background:var(--flaeche); border-radius:var(--r-voll); padding:3px }
:root[data-thema="dunkel"] .k-wahl{ background:var(--grund) }
.k-wahl button{
  padding:7px 13px; border-radius:var(--r-voll); font-size:13px; font-weight:650;
  color:var(--tinte-2); transition:background-color var(--zeit) var(--kurve);
}
.k-wahl button.an{ background:var(--flaeche-3); color:var(--tinte) }

/* ---- Rueckgaengig: 6 Sekunden lang laesst sich alles zurueckholen */
.k-streifen{
  position:fixed; left:14px; right:14px; bottom:calc(16px + env(safe-area-inset-bottom));
  max-width:402px; margin:0 auto; z-index:60;
  background:var(--tinte); color:var(--grund); border-radius:var(--r-voll);
  display:flex; align-items:center; gap:12px; padding:12px 12px 12px 20px;
  box-shadow:0 8px 30px rgba(0,0,0,.22);
  /* ganz weg, samt Schatten - 140% liess unten einen grauen Schleier stehen */
  transform:translateY(calc(100% + 48px)); transition:transform 300ms var(--kurve);
}
.k-streifen.offen{ transform:none }
.k-streifen .t{ flex:1; font-size:14.5px; font-weight:550 }
.k-streifen button{
  background:var(--grund); color:var(--tinte); border-radius:var(--r-voll);
  padding:8px 16px; font-size:14px; font-weight:650;
}

/* ############################################################
   ##                                                        ##
   ##              G R O S S E   S C H I R M E               ##
   ##              Z W E I   W E L T E N                     ##
   ##                                                        ##
   ##  Es gibt genau ZWEI Welten und genau EINEN Schalter.   ##
   ##                                                        ##
   ##  HANDY-WELT  alles, was nicht Mac-Welt ist:            ##
   ##              Handy hoch, Handy QUER, iPad hoch.        ##
   ##              Das ist der Normalfall dieser Datei.      ##
   ##                                                        ##
   ##  MAC-WELT    @media (min-width:900px) and              ##
   ##                     (min-height:500px)                 ##
   ##              Mac, Laptop, iPad quer.                   ##
   ##                                                        ##
   ##  Dieser Satz steht WOERTLICH so in jeder Seite, die    ##
   ##  eine Mac-Regel braucht. Keine anderen Breiten - kein  ##
   ##  700, kein 720, kein 1100. Die Pruefung zaehlt nach.   ##
   ##                                                        ##
   ##  Am Mac wird NICHT breitgezogen, sondern angeordnet:   ##
   ##  Brett statt Reiter, Kontrollzentrum statt Blatt.      ##
   ##                                                        ##
   ##  Die Mac-Regeln stehen GANZ UNTEN, nach dem Sicher-    ##
   ##  heitsnetz. Stuenden sie davor, gewaenne das Netz -    ##
   ##  so entstand am 10.09. das unten eckige Blatt.         ##
   ##                                                        ##
   ############################################################ */

/* ============================================================
   SICHERHEITSNETZ
   Falls irgendwo doch eine eckige Regel auftaucht: hier gewinnt
   die Kapsel. Steht ganz unten, damit es das letzte Wort hat.
   ============================================================ */
.k, .k.klein, .k.gross, .ikon,
button.k, a.k,
.chip, .rt .n,
.eingabe, input[type="text"], input[type="password"], input[type="number"],
.waehler, select,
.k-mehr, .k-segment, .k-seg, .k-griff, .k-uhr, .k-neu, .k-p .a,
.k-kuerzel, .k-ruf, .k-lz .haken, .k-wahl, .k-wahl button, .k-streifen,
.k-streifen button, .k-handgriff, .k-kundensicht-pfeil{
  border-radius: 999px !important;
}
/* Kein Knopf, kein Feld, kein Waehler traegt je einen Browser-Rand. */
button, .k, .ikon, .k-seg, .k-griff, .k-ruf, .k-mehr, .k-kachel,
.k-wahl button, .k-streifen button{
  appearance: none !important; -webkit-appearance: none !important;
}
/* Ein Knopf, der ein Link ist, wird NIE unterstrichen. */
a.k, a.ikon, a.chip, a.k-griff, a.k-seg, .k-gruppe a, .k-liste a, .k-tat a, a.k-kundensicht{
  text-decoration: none !important;
}
button:not(.ikon){ border-style: none !important }
/* Flaechen bleiben Flaechen - nur weich, nie eckig. */
.karte, .k-liste{ border-radius: var(--r-5) }
.k-kachel, .k-gruppe, .k-fahrer{ border-radius: var(--r-innen) }
.k-blatt{ border-radius: 30px 30px 0 0 }

/* ############################################################
   ##                                                        ##
   ##                   M A C - W E L T                      ##
   ##                                                        ##
   ##  Steht nach dem Netz, damit sie das letzte Wort hat.   ##
   ##  Eine Seite sagt in ihrem <style> nur ihre Masse:      ##
   ##     :root{ --k-seite:<Spaltenbreite>; --k-rand:<Rand> }##
   ##  damit das Kontrollzentrum unter IHREM "•••" haengt.   ##
   ##                                                        ##
   ############################################################ */

/* ---- Tippbare Zeile in "Готово": oeffnet den ganzen Auftrag ----
   Ein <button> verliert durch das Netz seinen Rand - die Trennlinie
   ist deshalb ein Schatten, kein border. */
.k-lz-tipp{ width:100%; text-align:left; color:inherit; box-shadow:inset 0 -1px var(--linie) }
.k-lz-tipp:last-child{ box-shadow:none }
.k-lz-tipp:active{ opacity:.55 }
.k-lz .pfeil{ color:var(--tinte-3); font-size:22px; line-height:1; margin-left:2px; flex:none }
.k-lz.storno .haken{ background:var(--alarm-grund); color:var(--alarm) }
.k-lz.storno .sum{ text-decoration:line-through; color:var(--tinte-3) }
.k-abschnitt{ margin:24px 6px 10px; font-size:11px; font-weight:700; letter-spacing:.08em;
  text-transform:uppercase; color:var(--tinte-3) }
.k-abschnitt span{ margin-left:5px }
/* Leer ist nie das Ende: Knoepfe dahin, wo etwas liegt */
.k-sprung{ display:flex; flex-wrap:wrap; justify-content:center; gap:8px; margin-top:18px }

/* ---- Tagesbilanz: was an einem Tag geliefert wurde - fuer die Kasse am Abend ---- */
.k-bilanz{ background:var(--flaeche); border-radius:var(--r-5); box-shadow:var(--heb-karte);
  padding:18px 20px 16px; margin-bottom:14px }
:root[data-thema="dunkel"] .k-bilanz{ box-shadow:none }
.k-bilanz h3{ margin:0 0 12px; font-size:11px; font-weight:700; letter-spacing:.08em;
  text-transform:uppercase; color:var(--tinte-3) }
.k-bilanz-zahlen{ display:grid; grid-template-columns:minmax(0,.8fr) minmax(0,1fr) minmax(0,1.35fr); gap:10px }
.k-bilanz-zahlen b{ display:block; font-size:21px; font-weight:700; letter-spacing:-.03em; line-height:1.15; white-space:nowrap }
.k-bilanz-zahlen span{ display:block; margin-top:2px; font-size:12.5px; color:var(--tinte-2) }
/* 2.6: die Teilsummen als ruhige Zeilen - Wort links, Zahl rechts, eine unter der anderen (am Mac zwei Spalten) */
.k-bilanz-teile{ display:grid; grid-template-columns:1fr; gap:7px 22px; margin-top:14px; padding-top:12px;
  box-shadow:inset 0 1px var(--linie); font-size:13px; color:var(--tinte-2) }
.k-bilanz-teile b{ color:var(--tinte); font-weight:600 }
.k-bilanz-teile > span{ display:flex; align-items:baseline; justify-content:space-between; gap:10px; min-width:0 }
.k-bilanz-teile > span b{ white-space:nowrap; font-variant-numeric:tabular-nums }
.k-bilanz-kopf{ display:flex; align-items:baseline; justify-content:space-between; gap:12px; margin:0 0 12px }
.k-bilanz-kopf h3{ margin:0 }
.k-bilanz-kopf span{ font-size:12.5px; color:var(--tinte-2); white-space:nowrap }
.k-bilanz-kopf b{ color:var(--tinte); font-weight:600 }

/* ---- Tag waehlen in "Готово": zurueck zu heute ---- */
.k-tagwahl{ display:flex; align-items:center; gap:10px; margin:2px 0 12px }
.k-gestern .k-lz-tipp{ padding:15px 0 }
.k-gestern .wo b{ font-weight:600 }

/* ---- Karte: Adresse und Kunde oeffnen den ganzen Auftrag ---- */
.k-kopfknopf{ display:grid; grid-template-columns:minmax(0,1fr) auto; column-gap:10px; width:100%;
  text-align:left; color:inherit; padding:0; background:none }
.k-kopfknopf .k-adr, .k-kopfknopf .k-kun{ grid-column:1 }
.k-kopfknopf .pfeil{ grid-column:2; grid-row:1 / span 2; align-self:center; color:var(--tinte-3);
  font-size:26px; line-height:1 }
.k-kopfknopf:active{ opacity:.55 }

/* ---- Was der Kunde gerade sieht - dieselben Worte wie auf seiner Seite ---- */
.k-kundensicht{ display:flex; align-items:center; gap:12px; margin-top:16px; padding:13px 14px 13px 16px;
  border-radius:var(--r-innen); background:var(--flaeche-2) }
.k-kundensicht .t{ flex:1; min-width:0; line-height:1.3 }
.k-kundensicht i{ display:block; font-style:normal; font-size:10.5px; font-weight:700; letter-spacing:.08em;
  text-transform:uppercase; color:var(--tinte-3) }
.k-kundensicht b{ display:block; margin-top:3px; font-size:15.5px; font-weight:650 }
.k-kundensicht .eta{ display:block; margin-top:1px; font-size:13px; color:var(--tinte-2) }
a.k-kundensicht{ color:inherit; transition:background-color var(--zeit) var(--kurve), transform var(--zeit) var(--kurve) }
a.k-kundensicht:active{ transform:scale(.99) }
@media (hover:hover){ a.k-kundensicht:hover{ background:var(--flaeche-3) } }
.k-kundensicht-pfeil{ width:34px; height:34px; flex:none; border-radius:var(--r-voll); display:grid; place-items:center;
  background:var(--flaeche); color:var(--tinte); font-size:15px; font-weight:700 }
:root[data-thema="dunkel"] .k-kundensicht-pfeil{ background:var(--flaeche-3) }

/* ---- Ход заказа: wer hat wann was getan. Punkte an einer stillen Linie. ---- */
.k-verlauf{ list-style:none; margin:0; padding:0 }
.k-verlauf li{ position:relative; display:grid; grid-template-columns:44px 20px minmax(0,1fr);
  align-items:start; padding-bottom:13px; font-size:14px; line-height:1.35 }
.k-verlauf li:last-child{ padding-bottom:0 }
.k-verlauf li:not(:last-child)::before{ content:""; position:absolute; left:54px; top:15px; bottom:-2px;
  width:1.5px; background:var(--flaeche-3) }
.k-verlauf .zeit{ font-size:13px; font-weight:600; color:var(--tinte-2); padding-top:1px }
.k-verlauf .punkt{ justify-self:center; width:9px; height:9px; margin-top:5px; border-radius:50%;
  background:var(--tinte-3); position:relative; z-index:1 }
.k-verlauf .was{ min-width:0 }
.k-verlauf .was b{ font-weight:600 }
.k-verlauf .wer{ color:var(--tinte-2) }
.k-verlauf .mehr{ display:block; margin-top:1px; font-size:12.5px; color:var(--tinte-2) }
.k-verlauf li.weg .punkt{ background:var(--weg) }
.k-verlauf li.gut .punkt{ background:var(--ok) }
.k-verlauf li.storno .punkt{ background:var(--alarm) }
.k-verlauf li.achtung .punkt{ background:var(--achtung) }
.k-verlauf li.jetzt .punkt{ box-shadow:0 0 0 4px var(--flaeche-2) }

/* ---- Stornieren nur mit Grund - das Kassenbuch muss "warum" wissen ---- */
.k-grund{ margin-top:18px; padding:16px; border-radius:var(--r-innen); background:var(--flaeche-2);
  scroll-margin:96px 0 calc(24px + env(safe-area-inset-bottom)) 0 }
.k-grund h3{ margin:0; font-size:11px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:var(--tinte-3) }
.k-gruende{ display:flex; flex-direction:column; margin:12px 0 14px; padding:0 14px;
  border-radius:var(--r-innen); background:var(--flaeche) }
:root[data-thema="dunkel"] .k-gruende{ background:var(--flaeche-3) }
/* Zeilen wie in "Готово" - eine Liste, kein Knopfhaufen. Trennlinie als Schatten (das Netz nimmt Raender). */
.k-gruende button{ display:flex; align-items:center; gap:12px; min-height:48px; padding:6px 0; width:100%;
  text-align:left; color:var(--tinte); font-size:15px; font-weight:550; line-height:1.3;
  box-shadow:inset 0 -1px var(--linie) }
.k-gruende button:last-child{ box-shadow:none }
.k-gruende button:active{ opacity:.55 }
.k-gruende button span{ flex:1 }
.k-gruende button i{ width:22px; height:22px; flex:none; border-radius:50%; display:grid; place-items:center;
  box-shadow:inset 0 0 0 1.5px var(--linie-stark); transition:background-color var(--zeit) var(--kurve) }
.k-gruende button[aria-checked="true"] i{ background:var(--tinte); box-shadow:none }
.k-gruende button[aria-checked="true"] i::after{ content:""; width:9px; height:5px; margin-top:-2px;
  border:solid var(--flaeche); border-width:0 0 2px 2px; transform:rotate(-45deg) }
.k-grund .k-zwei .k.gefahr{ flex:1.4 }

/* ---- Akte: EIN Auftrag im Ganzen. Handy: von unten, ganzer Schirm. ---- */
.k-akte{ position:fixed; inset:0; z-index:55; background:var(--grund); overflow-y:auto;
  -webkit-overflow-scrolling:touch; transform:translateY(100%); visibility:hidden;
  transition:transform 300ms var(--kurve), visibility 0s linear 300ms }
.k-akte.offen{ transform:none; visibility:visible; transition:transform 300ms var(--kurve) }
.k-akte-kopf{ position:sticky; top:0; z-index:2; display:flex; align-items:center; justify-content:space-between;
  gap:10px; max-width:430px; margin:0 auto; background:var(--grund);
  padding:calc(14px + env(safe-area-inset-top)) 18px 12px }
.k-akte-inhalt{ max-width:430px; margin:0 auto; padding:0 18px calc(40px + env(safe-area-inset-bottom)) }
.k-akte-karte{ padding:20px }

/* Inhalt einer Akte - gleich auf Handy und Mac */
.k-dkopf{ display:flex; align-items:center; gap:10px; margin-bottom:14px; flex-wrap:wrap }
.k-status{ font-size:12px; font-weight:700; letter-spacing:.02em; padding:4px 10px; border-radius:var(--r-voll);
  background:var(--flaeche-2); color:var(--tinte-2) }
.k-status.s-neu{ background:var(--rot-sanft); color:var(--rot) }
.k-status.s-weg{ background:var(--weg-grund); color:var(--weg) }
.k-status.s-fertig{ background:var(--ok-grund); color:var(--ok) }
.k-status.s-storno{ background:var(--alarm-grund); color:var(--alarm) }
.k-dadr{ margin:0; font-size:21px; font-weight:700; letter-spacing:-.025em; line-height:1.28; text-wrap:balance }
.k-dkun{ margin-top:4px; font-size:14.5px; color:var(--tinte-2) }
.k-draster{ display:grid; gap:0 36px; margin-top:20px; padding-top:16px; box-shadow:inset 0 1px var(--linie) }
.k-dblock h3{ margin:18px 0 8px; font-size:11px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:var(--tinte-3) }
.k-dblock:first-child h3:first-child{ margin-top:0 }
.k-dposten{ margin:0; padding:0; border:0 }
.k-dzeile{ display:flex; justify-content:space-between; align-items:baseline; gap:12px; padding:6px 0; font-size:14.5px; color:var(--tinte-2) }
.k-dzeile.gesamt{ margin-top:6px; padding-top:12px; box-shadow:inset 0 1px var(--linie); color:var(--tinte) }
.k-dzeile.gesamt span:last-child{ font-size:22px; font-weight:700; letter-spacing:-.03em; white-space:nowrap }
.k-dzahl{ display:flex; align-items:center; gap:10px; font-size:15px }
.k-dzahl b{ font-weight:600 }
.k-dtat{ display:flex; flex-direction:column; gap:9px; margin-top:24px }

/* Warte-Ring: fuellt sich in 15 Minuten. Grau wartet, Gelb draengt, Rot brennt. */
.k-ring .spur{ stroke:var(--flaeche-2); stroke-width:3.5 }
.k-ring .wert{ stroke:var(--tinte-3); stroke-width:3.5; stroke-linecap:round }
.k-ring.achtung .wert{ stroke:var(--achtung) }
.k-ring.alarm .wert{ stroke:var(--alarm) }

/* Schalter (iOS): an ist Tinte, nicht Rot */
.k-schalter{ position:relative; width:42px; height:26px; flex:none; border-radius:var(--r-voll);
  background:var(--flaeche-3); transition:background-color 200ms var(--kurve) }
.k-schalter i{ position:absolute; top:3px; left:3px; width:20px; height:20px; border-radius:50%;
  background:#fff; box-shadow:0 1px 3px rgba(0,0,0,.22); transition:transform 200ms var(--kurve) }
[aria-checked="true"] > .k-schalter{ background:var(--tinte) }
[aria-checked="true"] > .k-schalter i{ transform:translateX(16px) }
:root[data-thema="dunkel"] [aria-checked="true"] > .k-schalter i{ background:#000 }

/* ############################################################
   ##                                                        ##
   ##              L E I T S T A N D   (Mac)                 ##
   ##                                                        ##
   ##  Das Panel am Mac ist eine eigene Oberflaeche, keine   ##
   ##  gestreckte Handy-Seite: links Stufen, Zahlen und      ##
   ##  Einstellungen - in der Mitte die Liste - rechts der   ##
   ##  ganze Auftrag. Kein "•••", kein Popup.                ##
   ##                                                        ##
   ############################################################ */
.k-pult{ position:fixed; inset:0; z-index:10; background:var(--grund);
  grid-template-columns:clamp(220px, 19vw, 268px) clamp(300px, 28vw, 400px) minmax(0, 1fr) }

.k-pult-nav{ display:flex; flex-direction:column; gap:12px; min-height:0; overflow-y:auto; padding:14px 14px 12px }
.k-pult-marke{ display:flex; align-items:center; justify-content:space-between; gap:10px; padding:4px 10px 6px }
.k-live{ display:inline-flex; align-items:center; gap:7px; font-size:12.5px; font-weight:600; color:var(--tinte-2);
  font-variant-numeric:tabular-nums; white-space:nowrap }
.k-live i{ width:8px; height:8px; border-radius:50%; background:var(--ok); animation:k-puls 2.4s var(--kurve) infinite }
.k-live.fehler{ color:var(--alarm) }
.k-live.fehler i{ background:var(--alarm); animation:none }
@keyframes k-puls{ 0%{ box-shadow:0 0 0 0 color-mix(in srgb, var(--ok) 45%, transparent) }
  70%,100%{ box-shadow:0 0 0 7px transparent } }

.k-nav{ display:flex; flex-direction:column; gap:2px }
/* 3.1: Пульт | Карта als Paar in einer Zeile - zwei Blicke auf dieselben Bestellungen, kein Platz mehr in der Spalte */
.k-nav-zwei{ display:grid; grid-template-columns:1fr 1fr; gap:2px }
.k-nav-zwei .k-nav-punkt{ padding:0 12px 0 16px; min-width:0; gap:8px }
.k-nav-zwei .k-nav-punkt .t{ overflow:hidden; text-overflow:ellipsis; white-space:nowrap }
.k-nav-punkt{ display:flex; align-items:center; gap:10px; width:100%; min-height:42px; padding:0 18px;
  border-radius:var(--r-voll); font-size:15.5px; font-weight:600; color:var(--tinte-2); text-align:left;
  transition:background-color var(--zeit) var(--kurve), color var(--zeit) var(--kurve) }
.k-nav-punkt .t{ flex:1 }
.k-nav-punkt .n{ font-size:15px; font-weight:650; color:var(--tinte-3) }
.k-nav-punkt .n.neu{ color:var(--rot); font-weight:750; animation:k-atmen 2.4s var(--kurve) infinite }
.k-nav-punkt.an{ background:var(--flaeche); color:var(--tinte); box-shadow:0 1px 3px rgba(23,18,15,.07) }
.k-nav-punkt.an .n{ color:var(--tinte) }
.k-nav-punkt.an .n.neu{ color:var(--rot) }
:root[data-thema="dunkel"] .k-nav-punkt.an{ background:var(--flaeche-2); box-shadow:none }
@media (hover:hover){ .k-nav-punkt:not(.an):hover{ background:var(--flaeche-2); color:var(--tinte) } }

/* 2.6: die Tageszahlen zu zweit nebeneinander, die Einstellungen kompakter - die linke Spalte soll auf einen 13"-Schirm passen */
.k-heute{ display:grid; grid-template-columns:1fr 1fr; gap:9px 8px; padding:12px 18px 12px; border-radius:var(--r-innen); background:var(--flaeche) }
.k-heute h3{ grid-column:1 / -1 }
.k-heute-zahl{ min-width:0 }
.k-einst-zwei{ display:grid; grid-template-columns:1fr 1fr; gap:6px }
.k-einst-zwei .k-einst{ padding:0 6px 0 12px; font-size:13px; gap:6px }
.k-einst-zwei .k-einst .t{ white-space:nowrap; overflow:hidden; text-overflow:ellipsis }
.k-heute h3{ margin:0; font-size:11px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:var(--tinte-3) }
.k-heute-zahl b{ display:block; font-size:18px; font-weight:700; letter-spacing:-.025em; line-height:1.15; white-space:nowrap }
.k-heute-zahl span{ display:block; font-size:12.5px; color:var(--tinte-2); margin-top:1px }
.k-pult-meldung{ padding:0 10px; font-size:13px; font-weight:600; color:var(--alarm) }
.k-pult-meldung:empty{ display:none }

.k-pult-einst{ margin-top:auto; display:flex; flex-direction:column; gap:2px; padding-top:12px; box-shadow:inset 0 1px var(--linie) }
.k-einst{ display:flex; align-items:center; gap:10px; width:100%; min-height:38px; padding:0 8px 0 18px;
  border-radius:var(--r-voll); font-size:14.5px; font-weight:550; color:var(--tinte); text-align:left }
.k-einst .t{ flex:1 }
.k-einst.raus{ color:var(--alarm) }
@media (hover:hover){ button.k-einst:hover{ background:var(--flaeche-2) } }
.k-einst .k-wahl{ background:var(--flaeche-2) }
/* Sprache: Wort oben, Wahl darunter ueber die ganze Breite - "Language" + ENG passt nie nebeneinander in 268 px */
.k-einst.sprache{ flex-direction:column; align-items:stretch; gap:8px; min-height:0; padding:10px 8px 12px 18px }
.k-einst.sprache .k-wahl{ display:flex }
.k-einst.sprache .k-wahl button{ flex:1; padding-inline:6px }
.k-einst .k-wahl button.an{ background:var(--flaeche) }
:root[data-thema="dunkel"] .k-einst .k-wahl button.an{ background:var(--flaeche-3) }

.k-pult-liste{ min-height:0; overflow-y:auto; background:var(--flaeche); padding:0 10px 28px }
.k-pl-kopf{ position:sticky; top:0; z-index:2; display:flex; align-items:baseline; gap:10px;
  padding:26px 14px 12px; background:var(--flaeche) }
.k-pl-kopf h2{ margin:0; font-size:26px; font-weight:750; letter-spacing:-.035em }
.k-pl-kopf span{ font-size:16px; font-weight:650; color:var(--tinte-3) }
.k-pl-gruppe{ padding:18px 14px 6px; font-size:11px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:var(--tinte-3) }
.k-pl-leer{ padding:48px 14px; text-align:center; font-size:14.5px; color:var(--tinte-3) }
.k-pult-liste .k-bilanz{ margin:2px 4px 8px; padding:16px 16px 14px; background:var(--grund); box-shadow:none }
.k-pult-liste .k-bilanz-zahlen b{ font-size:19px }
.k-pl-kopf .k{ margin-left:auto; align-self:center }
.k-zeile.mehrtage{ margin-top:10px; box-shadow:inset 0 1px var(--linie); border-radius:0 }
.k-zeile.mehrtage .wo b{ font-weight:600 }
.k-zeile.mehrtage .pfeil{ color:var(--tinte-3); font-size:22px; margin-right:4px }
.k-zeile{ display:flex; align-items:center; gap:12px; width:100%; padding:11px 18px 11px 11px; margin-bottom:2px;
  border-radius:var(--r-voll); text-align:left; color:var(--tinte); transition:background-color var(--zeit) var(--kurve) }
@media (hover:hover){ .k-zeile:not(.an):hover{ background:var(--flaeche-2) } }
.k-zeile.an{ background:var(--tinte); color:var(--flaeche) }
.k-zeile .wo{ flex:1; min-width:0; line-height:1.3 }
.k-zeile .wo b{ display:block; font-size:15px; font-weight:650; white-space:nowrap; overflow:hidden; text-overflow:ellipsis }
.k-zeile .wo span{ display:block; font-size:12.5px; color:var(--tinte-2); white-space:nowrap; overflow:hidden; text-overflow:ellipsis }
.k-zeile.an .wo span{ color:inherit; opacity:.62 }
.k-zeile .sum{ font-size:14.5px; font-weight:650; white-space:nowrap }
.k-zeile.storno .sum{ text-decoration:line-through; opacity:.6 }
.k-zring{ position:relative; width:42px; height:42px; flex:none; display:grid; place-items:center }
.k-zring svg{ position:absolute; inset:0; width:42px; height:42px }
.k-zring b{ position:relative; font-size:12.5px; font-weight:750; letter-spacing:-.02em }
.k-zeile.an .k-ring .spur{ stroke:color-mix(in srgb, var(--flaeche) 22%, transparent) }
.k-zeile.an .k-ring:not(.achtung):not(.alarm) .wert{ stroke:var(--flaeche) }
.k-zhaken{ width:42px; height:42px; flex:none; border-radius:var(--r-voll); display:grid; place-items:center;
  background:var(--ok-grund); color:var(--ok) }
.k-zhaken svg{ width:16px; height:16px }
.k-zhaken.storno{ background:var(--alarm-grund); color:var(--alarm) }

/* ---- Пульт (2.5): der Leitstand am Mac. Drei Spalten - Новые, Кухня, В пути - jede laufende
   Bestellung eine Karte mit ihrer Uhr, dieselben Farben wie in der Liste. Karte antippen = die Akte
   als Karte in der Mitte. Links bleibt alles wie es ist; "Готово" bleibt die Liste. ---- */
.k-brett{ grid-column:2 / 4; min-height:0; overflow:auto; display:grid; grid-template-columns:repeat(3, minmax(0, 1fr)); gap:16px;
  padding:22px 24px 28px; align-content:start; background:var(--flaeche) }
:root[data-thema="dunkel"] .k-brett{ background:var(--grund) }
.k-brett-oben{ grid-column:1 / -1; max-width:560px } .k-brett-oben .k-ausfall{ margin:0 0 6px } .k-brett-oben .k-grund{ margin:0 0 6px }
.k-brett-spalte{ min-width:0; display:flex; flex-direction:column; gap:10px }
.k-brett-kopf{ display:flex; align-items:baseline; gap:10px; padding:4px 8px 6px }
.k-brett-kopf h2{ margin:0; font-size:22px; font-weight:750; letter-spacing:-.03em }
.k-brett-kopf .n{ font-size:15px; font-weight:650; color:var(--tinte-3) }
.k-brett-kopf .n.neu{ color:var(--rot); font-weight:750; animation:k-atmen 2.4s var(--kurve) infinite }
.k-brett-kopf .hakt{ width:8px; height:8px; border-radius:var(--r-voll); background:var(--achtung); animation:k-atmen 2.4s var(--kurve) infinite }
.k-brett-leer{ padding:22px 10px; color:var(--tinte-3); font-size:13.5px }
.k-bk{ display:block; width:100%; text-align:left; color:var(--tinte); background:var(--grund); border-radius:var(--r-5); padding:13px 15px 12px;
  box-shadow:var(--heb-karte); transition:box-shadow var(--zeit) var(--kurve) }
:root[data-thema="dunkel"] .k-bk{ background:var(--flaeche); box-shadow:none }
@media (hover:hover){ .k-bk:hover{ box-shadow:0 0 0 1.5px var(--linie-stark), var(--heb-karte) } }
.k-bk.an{ box-shadow:0 0 0 2px var(--tinte) }
.k-bk .oben{ display:flex; align-items:center; gap:8px }
.k-bk .oben .k-uhr{ margin-left:auto }
.k-bk.hakt .k-uhr.alarm, .k-bk.hakt .k-uhr.achtung{ background:var(--flaeche-2); color:var(--tinte-2) }
.k-bk .k-hakt{ margin:10px 0 0; padding:8px 12px }
.k-bk .k-hakt .t{ font-size:13.5px } .k-bk .k-hakt .z{ font-size:12.5px }
.k-bk .adr{ display:block; margin-top:9px; font-size:15px; font-weight:650; line-height:1.25; white-space:nowrap; overflow:hidden; text-overflow:ellipsis }
.k-bk .unten{ display:flex; align-items:baseline; justify-content:space-between; gap:10px; margin-top:4px; font-size:12.5px; color:var(--tinte-2) }
.k-bk .unten span{ min-width:0; white-space:nowrap; overflow:hidden; text-overflow:ellipsis }
.k-bk .unten b{ font-size:14.5px; font-weight:650; color:var(--tinte); white-space:nowrap; font-variant-numeric:tabular-nums }
.k-bk .zu{ display:flex; align-items:center; gap:6px; margin-top:8px; font-size:12.5px; color:var(--tinte-2) }
.k-bk .zu i{ width:7px; height:7px; border-radius:var(--r-voll); background:var(--tinte-3); flex:none }
.k-bk .zu i.weg{ background:var(--weg) } .k-bk .zu i.achtung{ background:var(--achtung) }


.k-pult-detail{ min-height:0; overflow-y:auto; padding:28px 36px 48px; container-type:inline-size }
.k-dinnen{ max-width:880px; margin:0 auto; padding:28px 32px 26px; border-radius:var(--r-5);
  background:var(--flaeche); box-shadow:var(--heb-karte) }
.k-dleer{ height:100%; display:grid; place-items:center; font-size:15px; color:var(--tinte-3) }
.k-pult .k-dadr{ font-size:26px }
.k-pult .k-draster{ grid-template-columns:minmax(0, 1.35fr) minmax(0, 1fr) }
.k-pult .k-dblock.b{ grid-column:2; grid-row:1 / span 2 }
.k-pult .k-dblock.b h3:first-child{ margin-top:0 }
.k-pult .k-dblock.c{ grid-column:1 }
.k-pult .k-dblock.c h3:first-child{ margin-top:22px }
.k-pult .k-dtat{ flex-direction:row; flex-wrap:wrap; align-items:center; padding-top:20px; box-shadow:inset 0 1px var(--linie) }
.k-pult .k-dtat .k{ white-space:nowrap }
.k-pult .k-dtat .k.haupt{ flex:1 1 240px }
.k-pult .k-dtat .k-segment, .k-pult .k-dtat .k-zeitzeile{ flex:1 1 100%; margin:0 }
/* Schmaler Mac / iPad quer: die Akte selbst wird einspaltig - sie misst ihre eigene Breite */
@container (max-width:660px){
  .k-pult .k-draster{ grid-template-columns:minmax(0, 1fr) }
  .k-pult .k-dblock.b, .k-pult .k-dblock.c{ grid-column:auto; grid-row:auto }
  .k-pult .k-dblock.b h3:first-child, .k-pult .k-dblock.c h3:first-child{ margin-top:18px }
  .k-pult .k-dadr{ font-size:22px }
  .k-dinnen{ padding:22px 22px 20px }
}

/* ---- Карта (3.1): OpenStreetMap in Leaflet, ohne Schluessel, ohne fremden Dienst ausser den Kacheln.
   Am Mac eine eigene Ansicht neben dem Pult: die Karte fuellt die Flaeche, darauf das Restaurant (schwarzer
   Punkt mit K), die laufenden Bestellungen als nummerierte Nadeln (Farbe = Stufe wie ueberall: Tinte Kueche,
   Blau unterwegs, Bernstein hakt, Rot neu - das eine Rot), die Kuriere als blaue Punkte mit Kuerzel, die Zone
   als weicher Kreis. Die Kacheln werden grau gefiltert: die Karte ist Hintergrund, nicht Bild.
   Am Handy nur die kleine Karte in der Akte, unter der Adresse. ---- */
.k-karte{ grid-column:2 / 4; position:relative; min-height:0; overflow:hidden; background:#e9e5dd; isolation:isolate }
:root[data-thema="dunkel"] .k-karte{ background:#141416 }
.k-karte .boden, .k-minikarte .boden{ position:absolute; inset:0; z-index:0 }
.leaflet-container{ font-family:inherit; background:#e9e5dd; outline:0 }
:root[data-thema="dunkel"] .leaflet-container{ background:#141416 }
.leaflet-container .leaflet-tile-pane{ filter:grayscale(1) contrast(.92) brightness(1.03) }
:root[data-thema="dunkel"] .leaflet-container .leaflet-tile-pane{ filter:invert(1) hue-rotate(180deg) grayscale(1) brightness(.78) contrast(.88) }
.leaflet-container .leaflet-control-attribution{ font-size:10px; padding:2px 9px; margin:0 8px 8px 0; border-radius:var(--r-voll);
  background:rgba(255,255,255,.72); color:var(--tinte-3) }
.leaflet-container .leaflet-control-attribution a{ color:inherit; text-decoration:none }
:root[data-thema="dunkel"] .leaflet-container .leaflet-control-attribution{ background:rgba(0,0,0,.55) }
.leaflet-marker-icon.k-ikon{ background:none; border:0; width:0 !important; height:0 !important; overflow:visible }
/* Zone: weicher Kreis, gestrichelt - Leaflet setzt Attribute, CSS hat das letzte Wort */
.k-zone{ stroke:rgba(23,18,15,.38); stroke-width:1.5; stroke-dasharray:6 6; fill:rgba(23,18,15,.045) }
:root[data-thema="dunkel"] .k-zone{ stroke:rgba(255,255,255,.32); fill:rgba(255,255,255,.04) }
/* Nadeln: eine Kapsel mit der Nummer, darunter eine kleine Spitze. Die Spitze sitzt auf dem Punkt. */
.k-nadel{ position:absolute; left:0; top:0; transform:translate(-50%, -100%); display:flex; flex-direction:column; align-items:center;
  color:var(--flaeche); cursor:pointer; white-space:nowrap; -webkit-tap-highlight-color:transparent }
.k-nadel b{ font-size:12.5px; font-weight:750; padding:5px 10px; border-radius:var(--r-voll); background:var(--tinte);
  box-shadow:0 4px 12px rgba(23,18,15,.22); font-variant-numeric:tabular-nums; line-height:1.2 }
.k-nadel i{ width:0; height:0; border:6px solid transparent; border-top:7px solid var(--tinte); border-bottom:0 }
.k-nadel.weg b{ background:var(--weg) } .k-nadel.weg i{ border-top-color:var(--weg) }
.k-nadel.hakt b{ background:var(--achtung) } .k-nadel.hakt i{ border-top-color:var(--achtung) }
.k-nadel.neu b{ background:var(--rot); animation:k-atmen 2.4s var(--kurve) infinite } .k-nadel.neu i{ border-top-color:var(--rot) }
.k-nadel.an b{ box-shadow:0 0 0 3px var(--flaeche), 0 4px 12px rgba(23,18,15,.22) }
.k-nadel.blass{ opacity:.55 }
:root[data-thema="dunkel"] .k-nadel{ color:#000 } :root[data-thema="dunkel"] .k-nadel.weg, :root[data-thema="dunkel"] .k-nadel.hakt, :root[data-thema="dunkel"] .k-nadel.neu{ color:#000 }
/* Das Restaurant: der schwarze Punkt mit K. Der Chef kann ihn ziehen. */
.k-haus{ position:absolute; left:0; top:0; transform:translate(-50%, -50%); width:34px; height:34px; border-radius:var(--r-voll); background:var(--tinte);
  color:var(--flaeche); display:grid; place-items:center; font-weight:800; font-size:15px; line-height:1;
  box-shadow:0 0 0 4px rgba(255,255,255,.7), 0 4px 12px rgba(23,18,15,.25); cursor:grab }
:root[data-thema="dunkel"] .k-haus{ box-shadow:0 0 0 4px rgba(0,0,0,.6), 0 4px 12px rgba(0,0,0,.5) }
/* Die Kuriere: blauer Punkt mit Kuerzel, ein weicher Ring atmet. Ohne frischen Punkt: still und grau. */
.k-kurierpunkt{ position:absolute; left:0; top:0; transform:translate(-50%, -50%); width:30px; height:30px; border-radius:var(--r-voll); background:var(--weg);
  color:#fff; display:grid; place-items:center; font-weight:750; font-size:12.5px; line-height:1; box-shadow:0 0 0 3px #fff, 0 3px 10px rgba(23,18,15,.25) }
.k-kurierpunkt::after{ content:""; position:absolute; inset:-9px; border-radius:var(--r-voll); border:2px solid var(--weg); opacity:.35; animation:k-puls-ring 2.4s var(--kurve) infinite }
@keyframes k-puls-ring{ 0%{ transform:scale(.7); opacity:.5 } 100%{ transform:scale(1.25); opacity:0 } }
.k-kurierpunkt.still{ background:var(--tinte-3) } .k-kurierpunkt.still::after{ display:none }
:root[data-thema="dunkel"] .k-kurierpunkt{ color:#000; box-shadow:0 0 0 3px #000, 0 3px 10px rgba(0,0,0,.5) }
/* Kopf, Legende, Hinweis: kleine Karten ueber der Karte, wie ueberall */
.k-karte-kopf{ position:absolute; z-index:2; top:18px; left:22px; display:flex; gap:8px; align-items:center; flex-wrap:wrap }
.k-karte-kopf .k{ white-space:nowrap }
.k-pult .k-karte-kopf{ max-width:calc(100% - 360px) }
.k-karte-kopf .k{ --k-grund:var(--flaeche); box-shadow:var(--heb-karte) }
.k-karte-kopf .k.an{ --k-grund:var(--tinte); --k-tinte:var(--flaeche) }
:root[data-thema="dunkel"] .k-karte-kopf .k.still{ --k-grund:var(--flaeche-2) }
.k-legende{ position:absolute; z-index:2; left:22px; bottom:18px; display:flex; gap:14px; flex-wrap:wrap; padding:9px 14px; border-radius:var(--r-voll);
  background:var(--flaeche); box-shadow:var(--heb-karte); font-size:12.5px; color:var(--tinte-2); white-space:nowrap }
.k-legende i{ display:inline-block; width:10px; height:10px; border-radius:var(--r-voll); background:var(--tinte); margin-right:6px; vertical-align:-1px }
.k-legende i.weg{ background:var(--weg) } .k-legende i.hakt{ background:var(--achtung) } .k-legende i.neu{ background:var(--rot) }
.k-legende i.gebiet{ background:transparent; border:1.5px dashed rgba(23,18,15,.5); width:11px; height:11px; border-radius:var(--r-voll) }
:root[data-thema="dunkel"] .k-legende i.gebiet{ border-color:rgba(255,255,255,.5) }
.k-karte .k-bk{ position:absolute; z-index:2; right:22px; top:18px; width:300px; box-shadow:var(--heb-karte), 0 0 0 .5px rgba(23,18,15,.08) }
:root[data-thema="dunkel"] .k-karte .k-bk{ background:var(--flaeche); box-shadow:none }
/* "Nажмите на карту": der Chef setzt einen Punkt per Hand - Hinweis oben in der Mitte, Kreuz statt Hand */
.k-karte-hin{ position:absolute; z-index:3; top:18px; left:50%; transform:translateX(-50%); display:flex; align-items:center; gap:12px; padding:8px 8px 8px 16px;
  border-radius:var(--r-voll); background:var(--tinte); color:var(--flaeche); font-size:13.5px; font-weight:600; box-shadow:0 10px 30px rgba(23,18,15,.25); white-space:nowrap }
.k-karte-hin .k{ --k-grund:var(--flaeche); --k-tinte:var(--tinte) }
.k-karte.setzt .leaflet-container{ cursor:crosshair }
.k-karte.setzt .k-nadel, .k-karte.setzt .k-haus, .k-karte.setzt .k-kurierpunkt{ pointer-events:none; opacity:.6 }
.k-karte-leer{ position:absolute; z-index:2; inset:auto 0 50% 0; text-align:center; font-size:14.5px; color:var(--tinte-3) }
/* Die kleine Karte in der Akte: unter der Adresse, Restaurant + Punkt + Kurier, unten rechts die Entfernung. Nicht bedienbar - ein Bild. */
.k-minikarte{ position:relative; height:150px; border-radius:var(--r-innen); overflow:hidden; background:#e9e5dd; margin:12px 0 4px }
:root[data-thema="dunkel"] .k-minikarte{ background:#141416; box-shadow:inset 0 0 0 1px var(--linie) }
.k-minikarte .k-nadel b{ padding:4px 9px } .k-minikarte .k-nadel{ cursor:default }
.k-minikarte .k-haus{ width:26px; height:26px; font-size:12px; cursor:default }
.k-minikarte .k-kurierpunkt{ width:24px; height:24px; font-size:11px }
.k-minikarte .weit{ position:absolute; z-index:2; right:10px; bottom:10px; display:inline-flex; align-items:center; gap:4px; font-size:12.5px; font-weight:600;
  padding:6px 11px; border-radius:var(--r-voll); background:var(--flaeche); color:var(--tinte); box-shadow:var(--heb-karte); text-decoration:none }
.k-minikarte .weit svg{ width:13px; height:13px }
.k-minikarte .leaflet-control-attribution{ font-size:9px; margin:6px 6px 0 0 }
.k-minikarte .quelle{ position:absolute; z-index:2; left:10px; bottom:10px; font-size:11px; font-weight:600; padding:5px 9px; border-radius:var(--r-voll);
  background:var(--flaeche); color:var(--tinte-3); box-shadow:var(--heb-karte) }
.k-pult .k-minikarte{ height:180px }
/* ---- Зона доставки (3.2): gezeichnete Flaeche statt Kreis. Der Chef zieht die Ecken; draussen liegende Bestellungen
   bekommen einen stillen Bernstein-Chip - eine Tatsache, kein Alarm, keine Sperre: die Kueche entscheidet. ---- */
.k-karte.zone .k-zone{ stroke:var(--tinte); stroke-dasharray:none; stroke-width:2; fill:rgba(23,18,15,.06) }
:root[data-thema="dunkel"] .k-karte.zone .k-zone{ fill:rgba(255,255,255,.06) }
.k-karte.zone .k-nadel, .k-karte.zone .k-kurierpunkt, .k-karte.zone .k-haus{ pointer-events:none; opacity:.45 }
.k-ecke{ position:absolute; left:0; top:0; transform:translate(-50%,-50%); width:18px; height:18px; border-radius:var(--r-voll); background:var(--flaeche);
  box-shadow:0 0 0 2.5px var(--tinte), 0 3px 8px rgba(23,18,15,.25); cursor:grab }
.k-ecke.zwischen{ width:11px; height:11px; box-shadow:0 0 0 2px var(--tinte-3); opacity:.8 }
.k-karte-hin .k.still{ --k-grund:transparent; --k-tinte:var(--flaeche); box-shadow:inset 0 0 0 1.5px rgba(255,255,255,.4) }
:root[data-thema="dunkel"] .k-karte-hin .k.still{ box-shadow:inset 0 0 0 1.5px rgba(0,0,0,.35) }
.k-zone-info{ position:absolute; z-index:2; right:22px; bottom:18px; padding:9px 14px; border-radius:var(--r-voll); background:var(--flaeche);
  box-shadow:var(--heb-karte); font-size:12.5px; font-weight:600; color:var(--tinte-2); white-space:nowrap }
.k-karte-kopf .k.zoneaus{ --k-tinte:var(--achtung) }
.k-nadel.aussen b{ box-shadow:0 0 0 2.5px var(--achtung), 0 4px 12px rgba(23,18,15,.22) }
.k-nadel.aussen.an b{ box-shadow:0 0 0 3px var(--flaeche), 0 0 0 5.5px var(--achtung), 0 4px 12px rgba(23,18,15,.22) }
.k-bk .zu .chip.achtung{ font-size:11.5px; padding:3px 9px; margin-right:2px }
.k-bk .zu .chip + span{ min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap }
.k-zonezeile{ margin-top:10px }
.k-zonezeile .chip{ white-space:normal; text-align:left; line-height:1.3 }
/* Kurier-Zeile: Entfernung leise hinter dem Zustand */
.k-kurier .n span .weit{ color:var(--tinte-3) }

@media (min-width:900px) and (min-height:500px){
  /* ---- Das Blatt wird zum Kontrollzentrum: es faellt unter dem
     "•••" herunter wie auf dem Mac - es kommt nicht von unten. ---- */
  .k-veil{ background:rgba(0,0,0,.05); -webkit-backdrop-filter:none; backdrop-filter:none }
  :root[data-thema="dunkel"] .k-veil{ background:rgba(0,0,0,.55) }
  .k-blatt{
    left:auto; bottom:auto; margin:0; max-width:none; width:380px;
    top:70px; right:max(var(--k-rand, 20px), calc((100vw - var(--k-seite, 480px)) / 2 + var(--k-rand, 20px)));
    padding:10px; border-radius:24px;
    box-shadow:0 0 0 .5px rgba(23,18,15,.08), 0 22px 60px rgba(23,18,15,.18);
    transform-origin:top right; transform:translateY(-8px) scale(.97);
    opacity:0; visibility:hidden; pointer-events:none;
    transition:transform 220ms var(--kurve), opacity 160ms var(--kurve), visibility 0s linear 220ms;
  }
  .k-blatt.offen{ transform:none; opacity:1; visibility:visible; pointer-events:auto;
    transition:transform 220ms var(--kurve), opacity 160ms var(--kurve) }
  /* Im Dunkeln trennt Helligkeit, kein Schatten: das Zentrum ist eine Stufe heller */
  :root[data-thema="dunkel"] .k-blatt{ background:var(--flaeche-2); box-shadow:none }
  :root[data-thema="dunkel"] .k-blatt .k-gruppe,
  :root[data-thema="dunkel"] .k-blatt .k-kachel:not(.an){ background:var(--flaeche-3) }
  .k-handgriff{ display:none }

  .k-streifen{ bottom:24px }

  /* Стоп-лист am Mac: kein ganzer Schirm, eine Spalte in der Mitte ueber dem Leitstand */
  .k-stop{ background:rgba(0,0,0,.28); display:grid; place-items:start center; padding:56px 20px;
    transform:none; opacity:0; transition:opacity 180ms var(--kurve), visibility 0s linear 180ms }
  .k-stop.offen{ opacity:1; transition:opacity 180ms var(--kurve) }
  :root[data-thema="dunkel"] .k-stop{ background:rgba(0,0,0,.6) }
  .k-stop-innen{ width:min(620px, 100%); background:var(--grund); border-radius:var(--r-5);
    box-shadow:0 0 0 .5px rgba(23,18,15,.08), 0 30px 80px rgba(23,18,15,.25); overflow:hidden }
  .k-stop-kopf, .k-stop-inhalt{ max-width:none }
  .k-stop-kopf{ padding:22px 24px 10px }
  .k-stop-inhalt{ padding:4px 24px 26px }
  /* Archiv (2.2): die Akte eines alten Auftrags als Karte in der Mitte, ueber dem Blatt */
  .k-akte.archivakte, .k-akte.pultakte{ background:rgba(0,0,0,.28); display:block; padding:56px 20px; transform:none; opacity:0;
    transition:opacity 180ms var(--kurve), visibility 0s linear 180ms }
  .k-akte.archivakte.offen, .k-akte.pultakte.offen{ opacity:1; transition:opacity 180ms var(--kurve) }
  :root[data-thema="dunkel"] .k-akte.archivakte, :root[data-thema="dunkel"] .k-akte.pultakte{ background:rgba(0,0,0,.6) }
  .k-akte.archivakte .k-akte-kopf, .k-akte.archivakte .k-akte-inhalt, .k-akte.pultakte .k-akte-kopf, .k-akte.pultakte .k-akte-inhalt{ max-width:620px }
  .k-akte.archivakte .k-akte-kopf, .k-akte.pultakte .k-akte-kopf{ position:static; border-radius:var(--r-5) var(--r-5) 0 0; padding:18px 24px 8px }
  .k-akte.archivakte .k-akte-inhalt, .k-akte.pultakte .k-akte-inhalt{ background:var(--grund); border-radius:0 0 var(--r-5) var(--r-5); padding:0 24px 24px }
  /* Транзакции (2.3): in der breiten Karte stehen die vier Zahlen-Kapseln in einer Reihe */
  .k-bilanz-teile.filter{ grid-template-columns:repeat(4, minmax(0, 1fr)) }
  /* Показатели (2.4): die vier Zahlen nebeneinander */
  .k-kz{ grid-template-columns:repeat(4, minmax(0, 1fr)) }
  .k-bilanz-teile:not(.filter){ grid-template-columns:1fr 1fr }
}

/* ============================================================
   4.4 · BAUSTEINE AUS DER BESTELLSEITE, die jede Seite brauchen darf
   ------------------------------------------------------------
   .k-x        der eine Schliess-Knopf: ein X, nie ein Wort ("Закрыть" ist abgeschafft)
   .k-stk      Sticker: ein Wort mit Zeichen und eigener Farbe - Marker (scharf, veg, vegan,
               gf, hit, neu, chef, zeit) und Allergene (a-milch, a-gluten, a-ei, a-nuss,
               a-fisch, a-sesam). Jede Farbe hat einen hellen und einen dunklen Wert.
   --bzhu-*    Белки · Жиры · Углеводы - violett, honig, salbei; hell und dunkel
   ============================================================ */
:root{ --bzhu-b:#7C4DDB; --bzhu-z:#D9961F; --bzhu-u:#3E8E63 }
:root[data-thema="dunkel"]{ --bzhu-b:#A78BFA; --bzhu-z:#F0B850; --bzhu-u:#6CCB93 }

.k-x{ width:38px; height:38px; border-radius:var(--r-voll); background:var(--flaeche-2); color:var(--tinte);
  display:grid; place-items:center; flex:none; cursor:pointer; transition:transform var(--zeit) var(--kurve) }
.k-x svg{ width:18px; height:18px; fill:none; stroke:currentColor; stroke-width:2.2; stroke-linecap:round; stroke-linejoin:round }
.k-x:active{ transform:scale(.94) }
/* auf einem Foto: weiss mit Schatten, damit es auf jedem Bild lesbar bleibt */
.k-x.hell{ background:rgba(255,255,255,.92); color:#17120F; box-shadow:0 2px 10px rgba(0,0,0,.18) }
:root[data-thema="dunkel"] .k-x{ background:var(--flaeche-3) }
:root[data-thema="dunkel"] .k-x.hell{ background:rgba(255,255,255,.92); color:#17120F }

.k-stk{ display:inline-flex; align-items:center; gap:5px; height:24px; padding:0 9px 0 7px; border-radius:var(--r-voll);
  font-size:11.5px; font-weight:650; font-style:normal; white-space:nowrap; letter-spacing:.005em; line-height:1 }
.k-stk svg{ width:13px; height:13px; fill:none; stroke:currentColor; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; flex:none }
.k-stk.gross{ height:30px; padding:0 12px 0 9px; font-size:13px } .k-stk.gross svg{ width:15px; height:15px }
.k-stk.scharf{ background:#FFE2D5; color:#C2410C }
.k-stk.veg{ background:#DFF2E6; color:#1F7A52 }
.k-stk.vegan{ background:#D6F5DF; color:#15803D }
.k-stk.gf{ background:#F3E9D2; color:#8A5A1E }
.k-stk.hit{ background:#FFF0C2; color:#A16207 }
.k-stk.neu{ background:#DFEBFB; color:#1D5FA8 }
.k-stk.chef{ background:#ECE6FB; color:#6D28D9 }
.k-stk.zeit{ background:var(--flaeche-2); color:var(--tinte-2) }
.k-stk.a-milch{ background:#DCEBFF; color:#1D4ED8 }
.k-stk.a-gluten{ background:#F5E6C8; color:#8A5A00 }
.k-stk.a-ei{ background:#FFF3BF; color:#946A00 }
.k-stk.a-nuss{ background:#F3E1D2; color:#7C3A12 }
.k-stk.a-fisch{ background:#D3F3EE; color:#0F766E }
.k-stk.a-sesam{ background:#EFE9DD; color:#6B5A3A }
:root[data-thema="dunkel"] .k-stk.scharf{ background:rgba(251,146,60,.18); color:#FDBA74 }
:root[data-thema="dunkel"] .k-stk.veg{ background:rgba(79,201,138,.16); color:#7FDDA9 }
:root[data-thema="dunkel"] .k-stk.vegan{ background:rgba(74,222,128,.16); color:#86EFAC }
:root[data-thema="dunkel"] .k-stk.gf{ background:rgba(214,180,120,.16); color:#E3C08D }
:root[data-thema="dunkel"] .k-stk.hit{ background:rgba(250,204,21,.16); color:#FDE68A }
:root[data-thema="dunkel"] .k-stk.neu{ background:rgba(127,179,240,.16); color:#9CC4F5 }
:root[data-thema="dunkel"] .k-stk.chef{ background:rgba(167,139,250,.18); color:#C4B5FD }
:root[data-thema="dunkel"] .k-stk.zeit{ background:var(--flaeche-3); color:var(--tinte-2) }
:root[data-thema="dunkel"] .k-stk.a-milch{ background:rgba(96,165,250,.16); color:#93C5FD }
:root[data-thema="dunkel"] .k-stk.a-gluten{ background:rgba(214,180,120,.16); color:#E3C08D }
:root[data-thema="dunkel"] .k-stk.a-ei{ background:rgba(250,204,21,.16); color:#FDE68A }
:root[data-thema="dunkel"] .k-stk.a-nuss{ background:rgba(217,160,120,.16); color:#E7B896 }
:root[data-thema="dunkel"] .k-stk.a-fisch{ background:rgba(45,212,191,.16); color:#7EDCD0 }
:root[data-thema="dunkel"] .k-stk.a-sesam{ background:rgba(200,180,150,.16); color:#D6C7B0 }

/* ############################################################
   ##   4.5 · МЕНЮ - der Chef pflegt die Speisekarte           ##
   ##   in der Konsole (Mac: Liste · Akte · Vorschau,          ##
   ##   Handy: Blatt + ganzseitiges Gericht).                  ##
   ##   Bausteine: .k-menu-…  · Sticker zum Waehlen .k-stk.wahl ##
   ##   · Allergen "Ракообразные" .k-stk.a-krebs               ##
   ############################################################ */
/* Das Logo in der Konsole und auf der Kurier-Seite traegt die Marke - Rot (Regel 1/3, Tigo 16.09.) */
.k-kopf .marke, .k-pult-marke .marke{ color:var(--rot) }
.k-stk.a-krebs{ background:#FDE3DA; color:#B03F2A }
:root[data-thema="dunkel"] .k-stk.a-krebs{ background:rgba(251,113,80,.16); color:#FCA58F }
/* Sticker zum Antippen: an = seine Farbe, aus = nur ein Rand */
.k-stk.wahl{ cursor:pointer; padding:8px 14px 8px 12px; font-size:14px; transition:background-color var(--zeit) var(--kurve), color var(--zeit) var(--kurve) }
:root .k-stk.wahl[aria-pressed="false"]{ background:transparent; color:var(--tinte-3); box-shadow:inset 0 0 0 1.5px var(--linie-stark) }   /* :root - staerker als die Farb-Regeln hell/dunkel */
.k-stk.wahl[aria-pressed="false"] svg{ opacity:.55 }
.k-stk.wahl:active{ transform:scale(.96) }

/* ---- die Liste: Zeilen mit Foto, rechts was fehlt ---- */
.k-menu-zeile{ padding:8px 16px 8px 8px }
.k-menu-th{ width:46px; height:46px; flex:none; border-radius:14px; overflow:hidden; background:var(--flaeche-2); display:grid; place-items:center }
.k-menu-th img{ width:100%; height:100%; object-fit:cover; display:block }
.k-menu-th i{ width:26px; height:8px; background:var(--tinte-3); opacity:.45; -webkit-mask:url("/kusht-logo.svg") no-repeat center/contain; mask:url("/kusht-logo.svg") no-repeat center/contain }
.k-menu-fehlt{ font-size:11.5px; font-weight:650; padding:3px 9px; border-radius:var(--r-voll); background:var(--achtung-grund); color:var(--achtung); white-space:nowrap }
.k-zeile.an .k-menu-fehlt{ background:rgba(255,255,255,.18); color:inherit }
.k-menu-zeile.aus .wo b{ text-decoration:line-through; color:var(--tinte-3) }
.k-menu-kopf{ flex-wrap:wrap } .k-menu-kopf .k{ margin-left:auto; align-self:center }
.k-menu-such{ padding:0 4px 8px } .k-menu-such .eingabe{ width:100%; background-color:var(--flaeche-2) }
.k-menu-stand{ padding:0 14px 10px; font-size:12.5px; color:var(--tinte-3) }
.k-menu-gruppe{ display:flex; align-items:center; gap:6px } .k-menu-gruppe .n{ margin-left:2px } .k-menu-gruppe .k{ margin-left:auto; min-height:28px; padding-inline:12px }
.k-pl-leer.klein{ padding:10px 14px 16px; text-align:left; font-size:13px }
.k-stop-inhalt .k-menu-gruppe-zeilen{ background:var(--flaeche); border-radius:var(--r-innen); padding:5px; margin-bottom:12px; box-shadow:var(--heb-karte) }
:root[data-thema="dunkel"] .k-stop-inhalt .k-menu-gruppe-zeilen{ background:var(--flaeche-2); box-shadow:none }
.k-stop-inhalt .k-menu-gruppe{ padding:14px 8px 6px }
.k-menu-handykopf{ display:flex; justify-content:flex-end; padding:4px 0 6px }

/* ---- Mac: das Blatt "Меню" nimmt den Platz von Liste + Akte ---- */
.k-menu{ grid-column:2 / 4; min-height:0; display:grid; grid-template-columns:clamp(260px, 24vw, 340px) minmax(0, 1fr) }
.k-menu-liste{ min-height:0; overflow-y:auto; background:var(--flaeche); padding:0 10px 28px }
:root[data-thema="dunkel"] .k-menu-liste{ background:var(--grund) }
.k-menu-rahmen{ min-height:0; overflow-y:auto; padding:28px 36px 48px; container-type:inline-size }
.k-menu-akte.k-dinnen{ max-width:1060px; padding:26px 32px 26px }
.k-menu-akopf{ margin-bottom:6px; gap:10px } .k-menu-akopf .k-status{ margin-left:2px }
.k-menu-katwahl{ max-width:260px }
.k-menu-zwei{ display:grid; grid-template-columns:minmax(0, 1fr) 280px; gap:30px; margin-top:18px; padding-top:18px; box-shadow:inset 0 1px var(--linie) }
@container (max-width:640px){ .k-menu-zwei{ grid-template-columns:1fr } .k-menu-vorschau{ position:static } }
.k-menu-form .k-dblock h3{ margin-top:22px } .k-menu-form .k-dblock:first-child h3{ margin-top:0 }
.k-menu-hinweis{ margin:8px 0 0; font-size:12.5px; line-height:1.45; color:var(--tinte-3) }
.k-menu-kat{ font-size:11px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:var(--rot) }

/* Felder: einzeilig = Kapsel mit Etikett darueber; Sprachfelder = Etikett in der Kapsel; mehrzeilig = Flaeche 17 px */
.k-menu-feld{ display:block; position:relative; min-width:0 }
.k-menu-feld > span{ display:block; margin:0 0 5px 14px; font-size:11px; font-weight:700; letter-spacing:.06em; text-transform:uppercase; color:var(--tinte-3); white-space:nowrap; overflow:hidden; text-overflow:ellipsis }
.k-menu-feld .eingabe{ width:100%; padding-left:16px; background-color:var(--flaeche-2) }
.k-menu-feld.sprache > span{ position:absolute; left:16px; top:50%; transform:translateY(-50%); margin:0; letter-spacing:.02em; pointer-events:none; z-index:1 }
.k-menu-feld.sprache .eingabe{ padding-left:64px }
.k-menu-feld.sprache:has(textarea) > span{ top:14px; transform:none }
.k-menu-text{ width:100%; display:block; border:0; outline:0; background:var(--flaeche-2); color:var(--tinte); border-radius:var(--r-innen); min-height:76px; resize:none; font:inherit; font-size:16px; line-height:1.4; padding:12px 16px 12px 64px }
.k-menu-text::placeholder{ color:var(--tinte-3) } .k-menu-text:focus-visible{ box-shadow:0 0 0 2px var(--tinte) }
.k-menu-sprachen{ display:grid; gap:8px }
.k-menu-seg{ margin-bottom:10px }
.k-menu-groesse{ margin-bottom:10px } .k-menu-groesse-kopf{ margin:0 0 6px 14px; font-size:11px; font-weight:700; letter-spacing:.06em; text-transform:uppercase; color:var(--tinte-2) }
.k-menu-groesse-zeile{ display:grid; grid-template-columns:1fr 1fr 1fr 1fr; gap:8px }
.k-menu-reihe .k-menu-feld{ max-width:200px }
.k-menu-bzhu{ display:grid; grid-template-columns:repeat(4, 1fr); gap:8px }
.k-menu-bzhu .k-menu-feld .eingabe{ padding-left:0; padding-right:0; text-align:center; font-weight:650 }
.k-menu-bzhu .k-menu-feld > span{ margin-left:0; text-align:center }
.k-menu-toggles{ display:flex; flex-wrap:wrap; gap:8px }
.k-menu-schalter{ margin-top:8px; background:var(--flaeche-2); border-radius:var(--r-voll); padding-right:10px; width:100% }
.k-menu-schalter[hidden]{ display:none }
.k-menu-tat{ margin-top:26px } .k-menu-tat .k.still{ align-self:center }
.k-menu-weg{ display:flex; align-items:center; gap:10px; margin-top:26px; padding-top:16px; box-shadow:inset 0 1px var(--linie); font-size:12.5px; color:var(--tinte-3) }
.k-menu-weg .gefahr{ margin-left:auto } .k-menu-weg .gefahr.scharf{ color:var(--alarm); font-weight:700 }
.k-menu-frage{ display:flex; flex-wrap:wrap; align-items:center; gap:8px; margin:0 0 14px; padding:10px 14px; border-radius:var(--r-innen); background:var(--achtung-grund); color:var(--achtung); font-size:13.5px; font-weight:600 }
.k-menu-frage span{ flex:1; min-width:120px }
.k-menu-fehler{ margin:0 0 14px; padding:10px 14px; border-radius:var(--r-innen); background:var(--alarm-grund); color:var(--alarm); font-size:13.5px; font-weight:600 }
/* Fotos: das erste gross, die naechsten daneben, jedes mit X */
.k-menu-fotos{ display:grid; grid-template-columns:2fr 1fr 1fr; gap:10px } .k-menu-fotos.leer{ display:none }
.k-menu-foto{ position:relative; aspect-ratio:4/3; border-radius:var(--r-innen); overflow:hidden; background:var(--flaeche-2) }
.k-menu-foto img{ width:100%; height:100%; object-fit:cover; display:block }
.k-menu-foto.haupt{ grid-row:span 2 }
.k-menu-foto .k-x.klein{ position:absolute; top:6px; right:6px; width:30px; height:30px } .k-menu-foto .k-x.klein svg{ width:14px; height:14px }
.k-menu-fotomarke{ position:absolute; left:10px; bottom:10px; font-size:11.5px; font-weight:700; padding:4px 10px; border-radius:var(--r-voll); background:rgba(255,255,255,.92); color:#17120F }
.k-menu-fotozeile{ display:flex; align-items:center; gap:12px; margin-top:10px; font-size:12.5px; color:var(--tinte-2) }
/* die Vorschau rechts klebt */
.k-menu-vorschau{ position:sticky; top:0; align-self:start }
.k-menu-vorschau h3{ margin:0 0 12px; font-size:11px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:var(--tinte-3) }
.k-menu-vorschau .g-gericht{ width:100%; max-width:280px }
.k-menu-vorschau .g-innen{ margin-top:14px; max-width:320px }
/* Handy: das Gericht ganzseitig */
.k-akte.k-menu-gericht{ z-index:58 }   /* ueber dem Blatt Меню (56) */
.k-akte.k-menu-gericht .k-akte-inhalt{ padding-top:6px }
.k-menu-gericht .k-menu-zwei{ display:block }
.k-menu-gericht .k-menu-vorschau{ position:static; margin-top:28px; padding-top:18px; box-shadow:inset 0 1px var(--linie) }
.k-menu-gericht .k-menu-vorschau .g-gericht{ max-width:none }
.k-menu-gericht .k-menu-fotos{ grid-template-columns:2fr 1fr } .k-menu-gericht .k-menu-bzhu{ grid-template-columns:repeat(2, 1fr) } .k-menu-gericht .k-menu-groesse-zeile{ grid-template-columns:1fr 1fr }
.k-menu-gericht .k-akte-kopf h2{ margin:2px 0 0; font-size:22px; font-weight:750; letter-spacing:-.03em }
.k-menu-gericht .k-dadr{ display:none }   /* der Name steht schon im Kopf des Blatts */
.k-menu-gericht .k-menu-akopf{ margin-top:4px }
/* Raздел-Blatt */
.k-menu-razdel-zeile{ padding:12px 10px 14px; box-shadow:inset 0 -1px var(--linie) } .k-menu-razdel-zeile:last-child{ box-shadow:none }
.k-menu-razdel-kopf{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-bottom:10px }
.k-menu-razdel-kopf b{ font-size:15px } .k-menu-razdel-kopf > span{ font-size:12.5px; color:var(--tinte-3) } .k-menu-razdel-kopf code{ font-size:12px }
.k-menu-razdel-tasten{ margin-left:auto; display:flex; gap:6px }
.k-menu-razdel-neu{ display:flex; justify-content:flex-end; margin:6px 0 16px }

/* ---- 4.5.1 · das Blatt von unten scrollt, wenn es hoeher ist als der Schirm (Chef-Liste am Handy) ----
   Bisher hatte .k-blatt keine Hoehengrenze: mit Касса … Меню ragte es oben aus dem Schirm, der obere Teil war
   unerreichbar (Tigo, 16.09.). Jetzt: hoechstens der Schirm minus Rand, innen scrollbar, ohne die Seite dahinter. */
.k-blatt{ max-height:calc(100vh - 24px); max-height:calc(100dvh - 24px - env(safe-area-inset-top)); overflow-y:auto;
  -webkit-overflow-scrolling:touch; overscroll-behavior:contain; scrollbar-width:none;
  /* 4.5.3: unter dem Blatt darf nichts von der Seite durchschimmern. Manche Browser (Telegram)
     legen ihre Werkzeugleiste ueber das Bild, das Blatt endet darueber - darunter war die Liste
     zu sehen. Ein Schatten ohne Weichzeichner malt dieselbe Flaeche 260 px weiter nach unten;
     der eigene overflow schneidet ihn nicht ab. */
  box-shadow:0 260px 0 0 var(--flaeche) }
/* 4.5.3: waehrend der Finger zieht, folgt das Blatt ohne Nachlauf */
.k-blatt.zieht{ transition:none }
.k-blatt::-webkit-scrollbar{ display:none }
@media (min-width:900px) and (min-height:500px){ .k-blatt{ max-height:calc(100vh - 90px) } }
/* ---- 4.5.1 · die Rolle steht dran: "Вы вошли как: шеф / кухня" - und die Kueche kann als Chef hereinkommen ---- */
.k-rolle{ display:flex; align-items:center; justify-content:center; gap:8px; flex-wrap:wrap; margin:0 0 12px; font-size:13px; color:var(--tinte-2) }
.k-rolle b{ color:var(--tinte); font-weight:700 }
.k-rolle .k.klein{ min-height:30px; padding-inline:12px; font-size:13px }
.k-pult-nav .k-rolle{ justify-content:flex-start; margin:-4px 10px 4px; font-size:12.5px }

/* ---- Vorschau der Gast-Kachel in der Konsole (4.5): ERZEUGT aus style44.css der Bestellseite - nicht von Hand aendern ---- */
.k-menu-vorschau .g-gericht{display:flex; flex-direction:column; text-align:left; color:var(--tinte); min-width:0; position:relative; cursor:pointer; -webkit-tap-highlight-color:transparent }
.k-menu-vorschau .g-foto{aspect-ratio:4/3; border-radius:20px; background:var(--flaeche-2); overflow:hidden; position:relative; display:grid; place-items:center; transition:transform var(--zeit) var(--kurve) }
.k-menu-vorschau .g-foto img{position:absolute; inset:0; width:100%; height:100%; object-fit:cover; display:block }
.k-menu-vorschau .g-leer{width:34%; aspect-ratio:3.497; background:var(--tinte-3); opacity:.35; -webkit-mask:url("/kusht-logo.svg") no-repeat center/contain; mask:url("/kusht-logo.svg") no-repeat center/contain }
.k-menu-vorschau .g-foto:not(.ohne) .g-leer{display:none }
.k-menu-vorschau .g-aus .g-foto img{filter:grayscale(1); opacity:.55 }
.k-menu-vorschau .g-aus .n, .k-menu-vorschau .g-aus .p{color:var(--tinte-3) }
.k-menu-vorschau .g-plus{position:absolute; right:8px; bottom:8px; width:36px; height:36px; border-radius:var(--r-voll); background:var(--rot); color:#fff; display:grid; place-items:center; font-size:22px; font-weight:500; line-height:1; box-shadow:0 2px 10px rgba(0,0,0,.22); transition:transform var(--zeit) var(--kurve), background var(--zeit) }
:root[data-thema="dunkel"] .k-menu-vorschau .g-plus{background:var(--rot-tief) }
.k-menu-vorschau .g-gericht .aus-chip{position:absolute; left:8px; bottom:8px }
.k-menu-vorschau .g-gericht .n{margin:9px 2px 0; font-size:14.5px; font-weight:650; line-height:1.25 }
.k-menu-vorschau .g-gericht .pz{display:flex; align-items:baseline; justify-content:space-between; gap:8px; margin:3px 2px 0 }
.k-menu-vorschau .g-gericht .p{font-size:15.5px; font-weight:700; font-variant-numeric:tabular-nums; white-space:nowrap }
.k-menu-vorschau .g-gericht .p small{font-size:12px; font-weight:600; color:var(--tinte-3); margin-right:3px }
.k-menu-vorschau .g-gericht .g{font-size:12.5px; color:var(--tinte-2); font-weight:500; white-space:nowrap }
.k-menu-vorschau .g-gericht .stks{margin:7px 2px 0; display:flex; gap:5px; flex-wrap:wrap }
.k-menu-vorschau .g-innen{margin-top:16px; padding:14px 16px 16px; border-radius:var(--r-innen); background:var(--flaeche); box-shadow:var(--heb-karte) }
:root[data-thema="dunkel"] .k-menu-vorschau .g-innen{background:var(--flaeche-2); box-shadow:none }
.k-menu-vorschau .g-innen h4{margin:0 0 10px; font-size:11px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:var(--tinte-3) }
.k-menu-vorschau .g-innen h4:not(:first-child){margin-top:16px }
.k-menu-vorschau .g-zahlen{display:flex; gap:22px; flex-wrap:wrap }
.k-menu-vorschau .g-zahlen div{display:flex; flex-direction:column }
.k-menu-vorschau .g-zahlen b{font-size:22px; font-weight:750; letter-spacing:-.02em; font-variant-numeric:tabular-nums; line-height:1.1 }
.k-menu-vorschau .g-zahlen span{font-size:12.5px; color:var(--tinte-2); font-weight:500; margin-top:3px }
.k-menu-vorschau .g-zahlen span.wort{color:var(--achtung); font-weight:650 }
.k-menu-vorschau .g-bzhu{margin-top:12px }
.k-menu-vorschau .g-bzhu .balken{display:flex; height:8px; border-radius:var(--r-voll); overflow:hidden; gap:2px }
.k-menu-vorschau .g-bzhu .balken i{display:block; height:100% }
.k-menu-vorschau .g-bzhu .leg{display:flex; gap:14px; flex-wrap:wrap; margin-top:8px; font-size:12.5px; color:var(--tinte-2); font-weight:500 }
.k-menu-vorschau .g-bzhu .leg span{display:inline-flex; align-items:center; gap:5px }
.k-menu-vorschau .g-bzhu .leg i{width:8px; height:8px; border-radius:var(--r-voll) }
.k-menu-vorschau .b-b{background:var(--bzhu-b) }
.k-menu-vorschau .b-z{background:var(--bzhu-z) }
.k-menu-vorschau .b-u{background:var(--bzhu-u) }
.k-menu-vorschau .g-innen .stks{margin-top:0 }
.k-menu-vorschau .g-innen p{margin:0; font-size:14px; color:var(--tinte-2); line-height:1.5 }
