/* Biertasting - hell und dunkel.
   Muster wie auf fabianwillisimon.de: :root traegt die helle Palette,
   dunkel kommt entweder aus der Systemeinstellung oder aus data-theme.
   Die Reihenfolge ist wichtig, sonst gewinnt das Medium gegen die Wahl. */

:root{
  --grund:      oklch(0.965 0.005 265);
  --flaeche:    oklch(0.995 0.003 265);
  --flaeche-2:  oklch(0.925 0.008 265);
  --linie:      oklch(0.855 0.010 265);
  --linie-zart: oklch(0.905 0.008 265);
  --text:       oklch(0.22 0.015 265);
  --gedaempft:  oklch(0.45 0.014 265);
  --leise:      oklch(0.50 0.012 265);
  --akzent:     oklch(0.52 0.24 300);
  --akzent-satt:oklch(0.46 0.24 300);
  --auf-akzent: oklch(0.99 0.005 300);
  --warn:       oklch(0.52 0.20 25);
  --schleier:   oklch(0.22 0.015 265 / .45);
  /* Helligkeit und Buntheit der Bierfarben. Der Farbton kommt je Bier dazu. */
  --bier-l: 0.55; --bier-c: 0.20;
  /* Produktbilder stehen auf Weiss. Die Kachel bleibt deshalb in beiden
     Schemata hell, sonst rahmt sich das Foto selbst ein. */
  --bildgrund:  oklch(0.99 0.002 265);

  --r-flaeche: 12px;
  --r-schalter: 10px;
  --takt: cubic-bezier(0.22, 1, 0.36, 1);

  --f1: 0.75rem; --f2: 0.8125rem; --f3: 0.9375rem;
  --f4: 1.0625rem; --f5: 1.25rem; --f6: 1.5rem; --f7: 2rem;
}

/* Dunkel: einmal fuer die Systemeinstellung, einmal fuer die bewusste Wahl.
   Beides braucht dieselben Werte, sonst kippt der Umschalter nur in eine Richtung. */
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --grund:oklch(0.16 0.012 265); --flaeche:oklch(0.21 0.014 265);
    --flaeche-2:oklch(0.26 0.016 265); --linie:oklch(0.33 0.018 265);
    --linie-zart:oklch(0.27 0.016 265); --text:oklch(0.96 0.008 265);
    --gedaempft:oklch(0.72 0.014 265); --leise:oklch(0.62 0.014 265);
    --akzent:oklch(0.64 0.25 300); --akzent-satt:oklch(0.70 0.25 300);
    --auf-akzent:oklch(0.99 0.005 300); --warn:oklch(0.70 0.19 25);
    --schleier:oklch(0.10 0.01 265 / .72);
    --bier-l:0.78; --bier-c:0.17;
  }
}
:root[data-theme="dark"]{
  --grund:oklch(0.16 0.012 265); --flaeche:oklch(0.21 0.014 265);
  --flaeche-2:oklch(0.26 0.016 265); --linie:oklch(0.33 0.018 265);
  --linie-zart:oklch(0.27 0.016 265); --text:oklch(0.96 0.008 265);
  --gedaempft:oklch(0.72 0.014 265); --leise:oklch(0.62 0.014 265);
  --akzent:oklch(0.64 0.25 300); --akzent-satt:oklch(0.70 0.25 300);
  --auf-akzent:oklch(0.99 0.005 300); --warn:oklch(0.70 0.19 25);
  --schleier:oklch(0.10 0.01 265 / .72);
  --bier-l:0.78; --bier-c:0.17;
}

/* Der entspannte Uebergang: Farben laufen ineinander, statt zu springen.
   Die Klasse liegt nur waehrend des Wechsels an. */
html.wechselt, html.wechselt *, html.wechselt *::before, html.wechselt *::after{
  transition: background-color .5s var(--takt), color .5s var(--takt),
              border-color .5s var(--takt), fill .5s var(--takt) !important;
}
/* Kreisfoermige Aufblende ueber die View-Transitions-API, wo vorhanden. */
::view-transition-old(root),::view-transition-new(root){animation:none;mix-blend-mode:normal}
::view-transition-old(root){z-index:1}
::view-transition-new(root){z-index:2}

*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
[hidden]{display:none !important}
html,body{margin:0;padding:0}
body{
  background:var(--grund); color:var(--text);
  font:400 var(--f3)/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",system-ui,Roboto,sans-serif;
  font-variant-numeric:tabular-nums;
  -webkit-font-smoothing:antialiased;
  padding-bottom:env(safe-area-inset-bottom);
}
button,input,textarea{font-family:inherit;font-variant-numeric:inherit}
:focus-visible{outline:2px solid var(--akzent-satt);outline-offset:2px}

/* ---------- Torbildschirme ---------- */
.tor{position:fixed;inset:0;display:grid;place-items:center;padding:24px;background:var(--grund);z-index:100;overflow-y:auto}
.torbox{width:100%;max-width:400px}
.wortmarke{
  font-size:var(--f1);font-weight:800;letter-spacing:.18em;color:var(--gedaempft);
  text-transform:uppercase;margin-bottom:28px;
}
.tor h1{font-size:var(--f7);font-weight:800;letter-spacing:-.025em;margin:0 0 8px;line-height:1.05}
.tor .sub{color:var(--gedaempft);margin:0 0 24px;font-size:var(--f3)}
.eingabe{
  width:100%;padding:14px 16px;font-size:var(--f4);border:1px solid var(--linie);
  border-radius:var(--r-schalter);background:var(--flaeche);color:var(--text);
  transition:border-color .18s var(--takt);
}
.eingabe::placeholder{color:var(--leise)}
.eingabe:focus{outline:none;border-color:var(--akzent)}
.gross{
  width:100%;padding:14px;font-size:var(--f4);font-weight:700;border:none;
  border-radius:var(--r-schalter);background:var(--akzent);color:var(--auf-akzent);
  cursor:pointer;margin-top:12px;transition:background .18s var(--takt);
}
.gross:active{background:var(--akzent-satt)}
.gross[disabled]{background:var(--flaeche-2);color:var(--leise);cursor:default}
.fehler{color:var(--warn);min-height:20px;margin:12px 0 0;font-size:var(--f3)}

/* Namensauswahl */
.leutewahl{margin-bottom:22px}
.leutewahl .ueber{font-size:var(--f2);font-weight:600;color:var(--gedaempft);margin-bottom:10px}
.leuteliste{display:flex;flex-wrap:wrap;gap:8px}
.person{
  border:1px solid var(--linie);background:var(--flaeche);color:var(--text);
  border-radius:999px;padding:10px 16px;font-size:var(--f3);font-weight:600;cursor:pointer;
  min-height:44px;transition:border-color .18s var(--takt),background .18s var(--takt);
}
.person:active{background:var(--flaeche-2)}
.person.selbst{background:var(--akzent);border-color:var(--akzent);color:var(--auf-akzent)}
.trenner{
  display:flex;align-items:center;gap:12px;color:var(--leise);
  font-size:var(--f2);margin:22px 0 12px;
}
.trenner::before,.trenner::after{content:"";height:1px;background:var(--linie-zart);flex:1}

/* ---------- Kopf ---------- */
.kopf{position:sticky;top:0;z-index:40;background:var(--grund);border-bottom:1px solid var(--linie-zart)}
.kopfzeile{display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:11px 20px 8px;max-width:760px;margin:0 auto}
.kopfzeile .wortmarke{margin:0}
.ich{
  background:var(--flaeche);border:1px solid var(--linie);color:var(--text);
  border-radius:999px;padding:0 16px;font-size:var(--f2);font-weight:700;cursor:pointer;
  display:flex;align-items:center;gap:7px;min-height:44px;
}
.ich::after{content:"";width:5px;height:5px;border-right:1.5px solid var(--gedaempft);
  border-bottom:1.5px solid var(--gedaempft);transform:rotate(45deg) translate(-1px,-1px)}
.reiter{display:flex;gap:24px;padding:0 20px;max-width:760px;margin:0 auto}
.reiter button{
  background:none;border:none;border-bottom:2px solid transparent;padding:11px 0 14px;
  font-size:var(--f3);font-weight:600;color:var(--leise);cursor:pointer;
  transition:color .18s var(--takt);
}
.reiter button.an{color:var(--text);border-bottom-color:var(--akzent)}
main{max-width:760px;margin:0 auto;padding:20px 20px 56px}

/* ---------- Hinweisleisten ---------- */
.leiste{
  display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;
  background:var(--flaeche);border:1px solid var(--linie-zart);border-radius:var(--r-flaeche);
  padding:12px 14px;margin-bottom:20px;font-size:var(--f2);color:var(--gedaempft);
}
.leiste .klein{margin-left:auto}
.klein{
  background:var(--flaeche-2);border:1px solid var(--linie);color:var(--text);
  border-radius:8px;padding:8px 13px;font-size:var(--f2);font-weight:600;cursor:pointer;min-height:38px;
}
.klein:active{background:var(--linie)}
.fortschritt{font-size:var(--f2);color:var(--gedaempft);margin:0 0 16px}
.fortschritt b{color:var(--text);font-weight:700}

/* ---------- Bierliste ---------- */
.liste{border-top:1px solid var(--linie-zart)}
.bier{
  display:grid;grid-template-columns:78px 1fr;gap:14px;align-items:start;
  width:100%;text-align:left;background:none;border:none;color:inherit;
  padding:13px 2px;border-bottom:1px solid var(--linie-zart);cursor:pointer;
  transition:background .18s var(--takt);
}
.bier:active{background:var(--flaeche)}

/* Die Dose. Packshots stehen auf Weiss, deshalb traegt die Kachel in beiden
   Schemata denselben hellen Grund - sonst schwebt im Dunkeln ein weisses
   Rechteck in der Zeile. Die Ziffer sitzt als Ecke darin und traegt weiter
   die Bierfarbe, wie im Designsystem festgelegt. */
.dose{
  position:relative;width:78px;height:78px;border-radius:13px;overflow:hidden;
  background:var(--bildgrund);border:1px solid var(--linie-zart);
  display:block;flex:none;
}
.dose img{width:100%;height:100%;object-fit:contain;display:block}
.dose .buchstabe{
  position:absolute;inset:0;display:grid;place-items:center;
  font-size:var(--f5);font-weight:800;letter-spacing:-.02em;
}
.dose .nr{
  position:absolute;left:-1px;bottom:-1px;min-width:21px;height:18px;padding:0 6px 0 5px;
  display:grid;place-items:center;background:var(--grund);border-radius:0 10px 0 11px;
  font-size:11px;font-weight:800;line-height:1;letter-spacing:-.01em;
}
/* Spans sind inline: ohne block laufen Name, Untertitel und Marke in eine Zeile. */
.bier .mitte{display:block;min-width:0}

/* Status und Gruppenschnitt teilen sich eine Zeile am Fuss. Vorher stand die
   Marke allein auf einer Zeile und der Schnitt in einer dritten Spalte - das
   liess unter der Kachel eine Handbreit leer und quetschte den Namen. */
.bier .fuss{
  display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:7px;
}
.bier .schnitt{font-size:var(--f4);font-weight:800;line-height:1;letter-spacing:-.02em;
  white-space:nowrap}
.bier .schnitt .aus{font-size:var(--f1);font-weight:600;color:var(--leise);margin-left:5px;
  letter-spacing:0}
.bier .schnitt.leer{color:var(--leise);font-weight:600;font-size:var(--f3)}
.bier .bn{display:block;font-size:var(--f4);font-weight:700;line-height:1.25;letter-spacing:-.01em}
.bier .bu{display:block;font-size:var(--f2);color:var(--gedaempft);margin-top:3px}
/* Feste, schmale Spalte. Ohne nowrap bricht "3 Stimmen" um und schiebt
   den Biernamen in eine Zeile mehr. */

.marke{
  display:inline-block;flex:none;
  font-size:var(--f1);font-weight:700;border-radius:999px;padding:3px 10px;
  background:var(--flaeche-2);color:var(--gedaempft);
}
.marke.meins{background:var(--akzent);color:var(--auf-akzent)}

/* ---------- Leerzustand ---------- */
.leerzustand{padding:44px 0 20px;max-width:44ch}
.leerzustand h2{font-size:var(--f5);font-weight:700;margin:0 0 10px;letter-spacing:-.015em}
.leerzustand p{color:var(--gedaempft);margin:0 0 20px}
.leerzustand .gross{max-width:280px}

/* ---------- Bogen ---------- */
.bogen{position:fixed;inset:0;background:var(--schleier);z-index:110;overflow-y:auto}
.bogenblatt{
  background:var(--grund);max-width:600px;margin:0 auto;min-height:100%;
  padding-bottom:calc(32px + env(safe-area-inset-bottom));
  animation:auf .2s var(--takt);
}
@keyframes auf{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.bogenkopf{padding:20px 20px 18px}
.bogenkopf .ziffer{font-size:var(--f2);font-weight:800;letter-spacing:.12em;text-transform:uppercase}
.biername{font-size:var(--f6);font-weight:800;letter-spacing:-.025em;line-height:1.1;margin:8px 44px 6px 0}
.bierunter{color:var(--gedaempft);font-size:var(--f2)}
/* Schwimmt rechts im Textblock statt absolut in der Ecke. Absolut positioniert
   laege er in der zweispaltigen Fassung ueber dem Biernamen; so weichen ihm nur
   die ersten Zeilen aus und alles darunter nutzt wieder die volle Breite. */
.zu{
  float:right;width:44px;height:44px;border-radius:999px;margin:0 0 4px 8px;
  background:var(--flaeche);border:1px solid var(--linie);color:var(--text);
  font-size:20px;line-height:1;cursor:pointer;display:grid;place-items:center;
}
.bogeninhalt{padding:0 20px}
.feld{padding:18px 0;border-top:1px solid var(--linie-zart)}
.feld label{display:flex;justify-content:space-between;align-items:baseline;gap:10px;
  font-weight:600;font-size:var(--f3);margin-bottom:12px}
.feld .zusatz{font-size:var(--f2);font-weight:400;color:var(--leise)}
.feld .zusatz.noetig{color:var(--warn)}
.skala{display:grid;gap:6px}
.skala.zehn{grid-template-columns:repeat(10,1fr)}
.skala.fuenf{grid-template-columns:repeat(5,1fr)}
.skala button{
  min-height:46px;border:1px solid var(--linie);background:var(--flaeche);
  color:var(--gedaempft);border-radius:8px;font-size:var(--f3);font-weight:700;
  cursor:pointer;padding:0;transition:background .16s var(--takt),color .16s var(--takt),border-color .16s var(--takt);
}
.skala.zehn button{font-size:var(--f2)}
.skala button:active{background:var(--flaeche-2)}
.skala button.an{background:var(--akzent);border-color:var(--akzent);color:var(--auf-akzent)}
.pole{display:flex;justify-content:space-between;color:var(--leise);font-size:var(--f1);margin-top:8px}
textarea.eingabe{resize:vertical;min-height:60px;font-size:var(--f3)}
.bogenfuss{padding:20px 0 0;border-top:1px solid var(--linie-zart);margin-top:4px}

/* ---------- Auswertung ---------- */
.abschnitt{font-size:var(--f1);font-weight:800;letter-spacing:.14em;text-transform:uppercase;
  color:var(--leise);margin:36px 0 14px}
.abschnitt:first-child{margin-top:4px}
.rang{display:grid;grid-template-columns:26px 1fr auto;gap:14px;align-items:start;
  width:100%;text-align:left;background:none;border:none;color:inherit;font:inherit;
  cursor:pointer;padding:16px 2px;border-bottom:1px solid var(--linie-zart);
  transition:background .18s var(--takt)}
.rang:active{background:var(--flaeche)}
.rang .pos{font-size:var(--f3);font-weight:800;color:var(--leise);padding-top:4px}
.rang > span:nth-child(2){display:block;min-width:0}
.rang .rn{display:block;font-size:var(--f4);font-weight:700;letter-spacing:-.01em;line-height:1.2}
.rang .rb{display:block;font-size:var(--f2);color:var(--gedaempft);margin-top:3px}
.rang .note{font-size:var(--f6);font-weight:800;letter-spacing:-.02em;line-height:1}
.rang .detail{font-size:var(--f1);color:var(--leise);margin-top:7px;grid-column:2/4}
.rang .detail .streit{color:var(--warn);font-weight:700}
.stimmenreihe{display:flex;flex-wrap:wrap;gap:6px;margin-top:9px;grid-column:2/4}
.stimme{font-size:var(--f1);background:var(--flaeche);border:1px solid var(--linie-zart);
  border-radius:999px;padding:3px 9px;color:var(--gedaempft)}
.stimme b{color:var(--text);font-weight:700}
.paar{display:flex;justify-content:space-between;align-items:baseline;gap:12px;
  padding:13px 2px;border-bottom:1px solid var(--linie-zart);font-size:var(--f3)}
.paar .abstand{font-weight:800;font-size:var(--f4)}
.fussnote{color:var(--leise);font-size:var(--f2);margin:12px 0 0;max-width:52ch}
.profil{padding:4px 0}
.profil .satz{font-size:var(--f4);line-height:1.4;margin:0 0 20px;max-width:40ch}
.profil .satz b{font-weight:800}
.achse{display:grid;grid-template-columns:96px 1fr 34px;gap:12px;align-items:center;
  margin:10px 0;font-size:var(--f2)}
.spur{height:6px;background:var(--flaeche-2);border-radius:3px;overflow:hidden}
.spur i{display:block;height:100%;background:var(--akzent);border-radius:3px;
  transition:width .3s var(--takt)}
.achse .wert{text-align:right;color:var(--leise);font-size:var(--f1)}
.lieblinge{margin-top:22px;font-size:var(--f2);color:var(--gedaempft)}
.lieblinge b{color:var(--text)}
.nichts{color:var(--leise);padding:28px 0;max-width:44ch}

/* ---------- Toast ---------- */
.toast{
  position:fixed;left:50%;bottom:28px;transform:translateX(-50%) translateY(14px);
  background:var(--text);color:var(--grund);padding:11px 18px;border-radius:999px;
  font-size:var(--f2);font-weight:700;opacity:0;pointer-events:none;
  transition:opacity .18s var(--takt),transform .18s var(--takt);z-index:200;
}
.toast.an{opacity:1;transform:translateX(-50%) translateY(0)}

@media (min-width:640px){
  .bier{grid-template-columns:92px 1fr;padding:15px 4px;gap:18px}
  .dose{width:92px;height:92px;border-radius:15px}
  .bogenkopf{padding:26px 24px 20px}
  .bogeninhalt{padding:0 24px}
}
@media (prefers-reduced-motion:reduce){
  *{animation-duration:.01ms !important;transition-duration:.01ms !important}
}


/* ---------- Umschalter hell/dunkel ---------- */
.modus{
  background:var(--flaeche);border:1px solid var(--linie);color:var(--text);
  border-radius:999px;width:44px;height:44px;display:grid;place-items:center;
  cursor:pointer;padding:0;flex:none;
}
.modus svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.7;
  stroke-linecap:round;stroke-linejoin:round}
.kopfrechts{display:flex;align-items:center;gap:8px}
.modushinweis{
  font-size:var(--f1);color:var(--leise);text-align:center;padding:22px 20px 30px;max-width:46ch;
  margin:0 auto;
}

/* ---------- Etikett im Vollbild ---------- */
.etikett{position:fixed;inset:0;background:var(--schleier);z-index:130;display:grid;
  place-items:center;padding:24px;cursor:zoom-out;animation:einblenden .22s var(--takt)}
@keyframes einblenden{from{opacity:0}to{opacity:1}}
.etikett img{max-width:100%;max-height:76vh;border-radius:14px;display:block;
  box-shadow:0 20px 60px oklch(0 0 0 / .45);animation:hoch .3s var(--takt)}
@keyframes hoch{from{transform:translateY(14px) scale(.97)}to{transform:none}}
.etikett .bu{color:var(--auf-akzent);text-align:center;margin-top:16px;font-size:var(--f3);
  text-shadow:0 1px 8px oklch(0 0 0 / .6)}
.etikett .bu b{display:block;font-size:var(--f5);font-weight:800;margin-bottom:3px}
.etikett .fehlt{color:var(--auf-akzent);text-align:center;max-width:34ch;
  text-shadow:0 1px 8px oklch(0 0 0 / .6)}

/* ---------- Schaum bei einer Zehn ---------- */
.schaum{position:fixed;left:0;right:0;bottom:0;height:0;z-index:190;pointer-events:none;overflow:hidden}
.schaum.an{animation:schaeumen 1.5s var(--takt)}
@keyframes schaeumen{
  0%{height:0} 32%{height:150px} 100%{height:0}
}
.schaum i{position:absolute;bottom:0;border-radius:50%;background:var(--flaeche);
  border:1px solid var(--linie);opacity:.95}

/* ---------- Nerd-Ecke ---------- */
.nerd{margin:26px 0 0;border:1px dashed var(--linie);border-radius:var(--r-flaeche);
  padding:18px 20px;background:var(--flaeche)}
.nerd h3{margin:0 0 4px;font-size:var(--f4);font-weight:800;letter-spacing:-.01em}
.nerd .unter{color:var(--leise);font-size:var(--f2);margin:0 0 16px}
.nerd .zeile{display:flex;justify-content:space-between;gap:14px;align-items:baseline;
  padding:9px 0;border-bottom:1px solid var(--linie-zart);font-size:var(--f3)}
.nerd .zeile:last-child{border-bottom:none}
.nerd .zeile b{font-weight:800}
.nerd .was{color:var(--gedaempft)}
.wortmarke.klickbar{cursor:pointer;user-select:none;-webkit-user-select:none}


/* ---------- Suche ----------
   Sitzt in der Reiterzeile, nicht im Kopf: sie gehoert zur Liste, und im Kopf
   waeren es bei 320 Pixeln drei Knoepfe neben der Wortmarke. */
.reiterzeile{display:flex;align-items:center;gap:12px;padding:0 20px;max-width:760px;margin:0 auto}
.reiterzeile .reiter{flex:1;padding:0;margin:0}
.lupe{
  background:none;border:none;color:var(--leise);cursor:pointer;padding:0;flex:none;
  width:44px;height:44px;display:grid;place-items:center;margin-bottom:2px;
  transition:color .18s var(--takt);
}
.lupe:active,.lupe.an{color:var(--text)}
.lupe svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.8;
  stroke-linecap:round;stroke-linejoin:round}
.suchzeile{display:flex;align-items:center;gap:8px;padding:0 20px 8px;max-width:760px;margin:0 auto}
.suchfeld{
  flex:1;min-width:0;padding:11px 14px;font-size:var(--f4);border:1px solid var(--akzent);
  border-radius:var(--r-schalter);background:var(--flaeche);color:var(--text);
}
.suchfeld::placeholder{color:var(--leise)}
.suchfeld:focus{outline:none}
.suchzu{
  background:var(--flaeche-2);border:1px solid var(--linie);color:var(--text);border-radius:999px;
  width:44px;height:44px;flex:none;display:grid;place-items:center;cursor:pointer;
  font-size:19px;line-height:1;padding:0;
}
.treffer{font-size:var(--f2);color:var(--gedaempft);margin:0 0 14px}
.treffer b{color:var(--text);font-weight:700}

/* ---------- Bogen: Kopf mit Bild und Eckdaten ----------
   Zwei Spalten: links die Dose, rechts Name, Brauerei und Eckdaten. Das Bild
   ist bewusst kleiner als allein auf einer Zeile - bei 375 Pixeln blieben sonst
   rechts keine 150 mehr. Die Eckdaten brechen in der schmalen Spalte um und
   fuellen dadurch die Hoehe neben dem Bild aus. */
.bogenkopf{display:grid;grid-template-columns:clamp(116px, 35vw, 176px) 1fr;
  gap:15px;align-items:start}
.dosegross{
  display:block;position:relative;overflow:hidden;padding:0;cursor:zoom-in;
  width:100%;aspect-ratio:1;margin:0;
  border-radius:15px;background:var(--bildgrund);border:1px solid var(--linie-zart);
}
.dosegross img{width:100%;height:100%;object-fit:contain;display:block}
.dosegross .buchstabe{position:absolute;inset:0;display:grid;place-items:center;
  font-size:var(--f7);font-weight:800;letter-spacing:-.03em}
.bogenkopf .kopftext{min-width:0}
.bogenkopf .ziffer{margin-bottom:5px}
.biername{font-size:var(--f5);margin:0 0 5px}
@media (min-width:520px){ .biername{font-size:var(--f6)} }
.eckdaten{display:flex;flex-wrap:wrap;gap:5px;margin-top:10px;clear:both}
.eckdaten span{
  font-size:var(--f1);font-weight:700;border-radius:999px;padding:3px 9px;
  background:var(--flaeche-2);color:var(--gedaempft);white-space:nowrap;
}
.zutaten{
  margin:16px 0 0;padding:13px 15px;background:var(--flaeche);
  border:1px solid var(--linie-zart);border-radius:10px;
  font-size:var(--f2);color:var(--gedaempft);line-height:1.5;
}
.zutaten b{color:var(--text);font-weight:700;display:block;margin-bottom:4px;
  font-size:var(--f1);letter-spacing:.08em;text-transform:uppercase}

/* ---------- Zutaten uebersetzen ----------
   Zugeklappt: wer das Bier kennt, will es nicht lesen. Wer nicht, findet es
   beim ersten Antippen. */
.aufklappen{
  display:flex;align-items:center;gap:8px;width:100%;margin:11px 0 0;padding:0;
  background:none;border:none;color:var(--akzent);cursor:pointer;
  font-size:var(--f2);font-weight:700;text-align:left;min-height:44px;
}
.aufklappen svg{width:16px;height:16px;flex:none;fill:none;stroke:currentColor;
  stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;
  transition:transform .2s var(--takt)}
.aufklappen.offen svg{transform:rotate(180deg)}
.deutung{margin-top:4px;border-top:1px solid var(--linie-zart);padding-top:4px}
.deutung .satz{
  display:grid;grid-template-columns:auto 1fr;gap:3px 10px;
  padding:11px 0;border-bottom:1px solid var(--linie-zart);
}
.deutung .satz:last-of-type{border-bottom:none;padding-bottom:4px}
.deutung .wort{font-weight:800;color:var(--text);font-size:var(--f3);white-space:nowrap}
.deutung .art{
  font-size:10px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;
  color:var(--leise);align-self:center;
}
.deutung .was{grid-column:1/3;color:var(--gedaempft);font-size:var(--f2);line-height:1.5}
.deutung .wackelig{color:var(--warn);font-weight:700}
.deutung .fussnote{
  margin:12px 0 0;padding-top:11px;border-top:1px solid var(--linie-zart);
  font-size:var(--f1);color:var(--leise);line-height:1.5;
}

/* ---------- Bogen: Felder mit Symbol und Hilfe ---------- */
.feld label{display:flex;align-items:center;gap:9px;font-weight:600;font-size:var(--f3);margin-bottom:12px}
.feld .sinnbild{flex:none;width:20px;height:20px;color:var(--gedaempft)}
.feld .sinnbild svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.7;
  stroke-linecap:round;stroke-linejoin:round}
.feld .titel{flex:1;min-width:0}
.feld .zusatz{font-size:var(--f2);font-weight:400;color:var(--leise);flex:none}
.feld .zusatz.noetig{color:var(--warn)}
.hilfeknopf{
  flex:none;width:44px;height:44px;margin:-12px -12px -12px 0;padding:0;
  background:none;border:none;color:var(--leise);cursor:pointer;
  display:grid;place-items:center;
}
.hilfeknopf span{
  width:21px;height:21px;border-radius:999px;border:1.5px solid currentColor;
  display:grid;place-items:center;font-size:12px;font-weight:800;line-height:1;
}
.hilfeknopf.an{color:var(--akzent)}
.hilfe{
  margin:0 0 13px;padding:11px 13px;border-radius:10px;
  background:var(--flaeche);border:1px solid var(--linie-zart);
  font-size:var(--f2);line-height:1.5;color:var(--gedaempft);max-width:52ch;
}

/* ---------- Zehnerskala in zwei Reihen ----------
   Zehn nebeneinander ergaben 28 Pixel je Knopf, auf kleinen Geraeten 23.
   Zwei Reihen zu fuenf ergeben ueber 60. Das ist der wichtigste Knopf der App. */
.skala.zehn{grid-template-columns:repeat(5,1fr)}
.skala button{min-height:52px}
.skala.zehn button{font-size:var(--f3)}

/* ---------- Bewertung loeschen ---------- */
.bogenfuss{display:flex;flex-direction:column;gap:10px}
.bogenfuss .gross{margin-top:0}
.loeschen{
  background:none;border:none;color:var(--leise);font-size:var(--f2);font-weight:600;
  cursor:pointer;min-height:44px;padding:0;text-decoration:underline;text-underline-offset:3px;
}
.loeschen:active{color:var(--warn)}


/* ---------- Lexikon ---------- */
.lx-vorwort{color:var(--gedaempft);max-width:56ch;margin:4px 0 0;font-size:var(--f3)}
.lx-vorwort.klein{font-size:var(--f2);margin:0 0 6px}
.lx-gruppe{
  font-size:var(--f1);font-weight:800;letter-spacing:.1em;text-transform:uppercase;
  color:var(--akzent);margin:26px 0 6px;
}
.lx-eintrag{padding:14px 0;border-bottom:1px solid var(--linie-zart)}
.lx-kopf{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.lx-wort{font-size:var(--f4);font-weight:800;letter-spacing:-.012em}
.lx-marke{
  font-size:var(--f1);font-weight:700;border-radius:999px;padding:2px 9px;
  background:var(--flaeche-2);color:var(--gedaempft);
}
.lx-sinnbild{width:19px;height:19px;flex:none;color:var(--gedaempft)}
.lx-sinnbild svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.7;
  stroke-linecap:round;stroke-linejoin:round}
.lx-text{margin:6px 0 0;color:var(--gedaempft);font-size:var(--f3);line-height:1.55;max-width:60ch}
.wackelig{color:var(--warn);font-weight:700}
/* Drei Reiter plus Lupe muessen bei 320 Pixeln nebeneinander passen. */
.reiter{gap:20px}
@media (max-width:360px){ .reiter{gap:14px} .reiter button{font-size:var(--f2)} }


/* ---------- Auswertung: Streubild und Balken ----------
   Skala 1 bis 10 als Spur, je Stimme ein Punkt. Halbdurchsichtig, damit zwei
   gleiche Noten als dunklerer Punkt sichtbar bleiben statt sich zu verstecken. */
.streu{grid-column:2/4;margin-top:9px}
.spur10{
  position:relative;display:block;height:22px;border-radius:4px;
  background:linear-gradient(var(--flaeche-2),var(--flaeche-2)) center/100% 4px no-repeat;
}
.spur10::before,.spur10::after{
  content:"";position:absolute;top:50%;width:1px;height:9px;margin-top:-4.5px;
  background:var(--linie);
}
.spur10::before{left:0}
.spur10::after{right:0}
.spur10 i{
  position:absolute;top:50%;width:13px;height:13px;margin:-6.5px 0 0 -6.5px;
  border-radius:50%;opacity:.72;
}
.spur10.breit{height:26px}
.spur10 i.band{
  width:auto;height:7px;margin:-3.5px 0 0 0;border-radius:4px;
  background:var(--akzent);opacity:.28;
}
.spur10 i.marke10{
  width:3px;height:15px;margin:-7.5px 0 0 -1.5px;border-radius:2px;
  background:var(--akzent);opacity:1;
}

.lage{color:var(--gedaempft);font-size:var(--f3);margin:0 0 16px;max-width:56ch}
.lage b{color:var(--text);font-weight:800}

/* Einzelbefund, der aus der Liste heraussticht */
.karte{
  background:var(--flaeche);border:1px solid var(--linie-zart);border-radius:var(--r-flaeche);
  padding:15px 16px;margin:0 0 12px;
}
.karte-marke{font-size:var(--f1);font-weight:800;letter-spacing:.12em;text-transform:uppercase;
  color:var(--leise);margin-bottom:6px}
.karte-titel{font-size:var(--f5);font-weight:800;letter-spacing:-.018em;line-height:1.2}
.karte-text{margin:7px 0 0;color:var(--gedaempft);font-size:var(--f3);line-height:1.5}
.karte-text b{color:var(--text);font-weight:800}

/* Zungen: Spannweite und Schnitt je Person */
.zunge{display:grid;grid-template-columns:minmax(58px,auto) 1fr 34px;gap:12px;align-items:center;
  padding:9px 0}
.zn{font-size:var(--f3);font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.zw{font-size:var(--f3);font-weight:800;text-align:right;color:var(--text)}

/* Wer tickt wie wer */
.paar2{display:grid;grid-template-columns:minmax(96px,auto) 1fr 34px;gap:12px;align-items:center;
  padding:10px 0;border-bottom:1px solid var(--linie-zart);font-size:var(--f2)}
.pn{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pw{font-weight:800;text-align:right;font-size:var(--f3)}

/* Dose gegen Inhalt */
.dosepaar{
  display:grid;grid-template-columns:minmax(58px,auto) 1fr 1fr 44px;gap:10px;align-items:end;
  padding:12px 0;border-bottom:1px solid var(--linie-zart);
}
.dosepaar .zn{align-self:center}
.dp{display:grid;gap:3px;min-width:0}
.dp-wert{font-size:var(--f2);font-weight:800}
.dp-spur{display:block;height:6px;background:var(--flaeche-2);border-radius:3px;overflow:hidden}
.dp-spur i{display:block;height:100%;background:var(--text);border-radius:3px}
.dp-spur i.dose{background:var(--akzent)}
.dp-was{font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--leise);font-weight:700}
.dp-diff{font-size:var(--f2);font-weight:800;text-align:right;color:var(--leise);align-self:center}
.dp-diff.auffaellig{color:var(--akzent)}

@media (max-width:360px){
  .dosepaar{grid-template-columns:minmax(48px,auto) 1fr 1fr 36px;gap:8px}
  .zunge,.paar2{grid-template-columns:minmax(48px,auto) 1fr 32px;gap:9px}
}


/* ---------- Filter ---------- */
.filterreihe{
  display:flex;flex-wrap:wrap;gap:7px;padding:0 20px 12px;max-width:760px;margin:0 auto;
}
.fchip{
  border:1px solid var(--linie);background:var(--flaeche);color:var(--gedaempft);
  border-radius:999px;padding:0 13px;min-height:38px;font-size:var(--f2);font-weight:700;
  cursor:pointer;display:flex;align-items:center;gap:6px;
  transition:background .16s var(--takt),color .16s var(--takt),border-color .16s var(--takt);
}
.fchip .fzahl{font-size:var(--f1);font-weight:600;color:var(--leise)}
.fchip.an{background:var(--akzent);border-color:var(--akzent);color:var(--auf-akzent)}
.fchip.an .fzahl{color:var(--auf-akzent);opacity:.75}

/* ---------- Fragezeichen im Kopf ---------- */
.kopfknopf{
  background:var(--flaeche);border:1px solid var(--linie);color:var(--gedaempft);
  border-radius:999px;width:44px;height:44px;display:grid;place-items:center;
  cursor:pointer;padding:0;flex:none;font-size:var(--f4);font-weight:800;line-height:1;
}
.kopfknopf:active{color:var(--text)}

/* ---------- Kurzanleitung ---------- */
/* Flex mit margin:auto am Kind statt place-items: bei einem Blatt, das hoeher
   ist als der Bildschirm, wuerde zentriert der obere Rand abgeschnitten und
   waere nicht mehr erreichbar. So bleibt es zentriert und scrollt trotzdem. */
.anleitung{
  position:fixed;inset:0;z-index:140;background:var(--schleier);
  display:flex;align-items:center;justify-content:center;
  padding:20px;overflow-y:auto;
  animation:einblenden .22s var(--takt);
}
.anleitungsblatt{
  width:100%;max-width:460px;margin:auto;background:var(--grund);border:1px solid var(--linie-zart);
  border-radius:18px;padding:24px 20px calc(20px + env(safe-area-inset-bottom));
  animation:hoch .28s var(--takt);
}
.anleitungsblatt h2{font-size:var(--f6);font-weight:800;letter-spacing:-.024em;
  margin:0 0 15px;line-height:1.12}
.schritte{list-style:none;margin:0 0 18px;padding:0;counter-reset:schritt}
.schritte li{
  position:relative;counter-increment:schritt;padding:0 0 0 32px;margin:0 0 13px;
  color:var(--gedaempft);font-size:var(--f3);line-height:1.45;
}
.schritte li::before{
  content:counter(schritt);position:absolute;left:0;top:1px;
  width:23px;height:23px;border-radius:999px;background:var(--flaeche-2);
  color:var(--text);font-size:var(--f1);font-weight:800;display:grid;place-items:center;
}
.schritte li b{color:var(--text);font-weight:700}
.anleitungsfuss{color:var(--leise);font-size:var(--f2);margin:12px 0 0;text-align:center}

/* Bei drei Reitern plus zwei Symbolen wird es auf schmalen Geraeten eng. */
@media (max-width:380px){
  .kopfzeile{gap:8px}
  .kopfrechts{gap:6px}
  .kopfzeile .wortmarke{font-size:10px;letter-spacing:.12em}
  .ich{padding:0 11px;max-width:98px;overflow:hidden;white-space:nowrap}
}


/* ---------- Logo ----------
   Der volle Schriftzug, freigestellt. Er steht dort, wo Platz ist: auf den
   beiden Torbildschirmen und ueber der Kurzanleitung. Im Kopf der laufenden
   App bleibt es beim Schriftzug als Text - zweizeilig auf 34 Pixel Hoehe
   waere davon nichts mehr zu lesen. */
.logo{display:block;width:100%;max-width:290px;height:auto;margin:0 0 26px}
.anleitungsblatt .logo{max-width:200px;margin:0 auto 16px}
@media (max-width:360px){ .logo{max-width:240px} }


/* Auf schmalen Geraeten bricht der Text mehr um und das Blatt waechst ueber den
   Bildschirm. Dort etwas enger, damit "Los geht's" ohne Scrollen erreichbar
   bleibt - es ist der erste Knopf, den jemand in dieser App drueckt. */
@media (max-height:760px), (max-width:360px){
  .anleitungsblatt{padding:20px 17px calc(17px + env(safe-area-inset-bottom))}
  .anleitungsblatt .logo{max-width:158px;margin:0 auto 12px}
  .anleitungsblatt h2{font-size:var(--f5);margin:0 0 12px}
  .schritte{margin:0 0 15px}
  .schritte li{margin:0 0 10px;font-size:var(--f2);line-height:1.45}
  .anleitungsfuss{margin:9px 0 0}
}


/* ---------- Logo im Kopf ----------
   Zweizeilig auf Kopfhoehe ist der Schriftzug nicht zu lesen. Er ist hier auch
   nicht zum Lesen da, sondern zum Wiedererkennen: dieselbe Form und dieselben
   zwei Farben, die zwei Bildschirme vorher gross zu sehen waren. Deshalb so
   hoch wie die Knoepfe daneben und nicht kleiner. */
.kopflogo{display:block;flex:none;line-height:0;cursor:pointer;
  user-select:none;-webkit-user-select:none}
.kopflogo img{height:42px;width:auto;display:block}
@media (max-width:360px){ .kopflogo img{height:36px} }


/* ---------- Avatare ----------
   Nicht als Bildchen neben dem Namen gedacht, sondern als das, was man in der
   Auswertung wiedererkennt. Deshalb ueberall dasselbe runde Format. */
.meinprofil{margin-bottom:26px;text-align:center}
.meinprofil .ueber{text-align:left}
.avatargross{
  width:104px;height:104px;border-radius:999px;overflow:hidden;padding:0;
  border:2px solid var(--linie);background:var(--flaeche);cursor:zoom-in;
  display:block;margin:2px auto 10px;
}
.avatargross img{width:100%;height:100%;object-fit:cover;display:block}
.avatargross .leer{
  display:grid;place-items:center;width:100%;height:100%;
  color:var(--leise);font-size:var(--f2);font-weight:700;padding:0 10px;line-height:1.25;
}
.avatarname{font-size:var(--f4);font-weight:800;letter-spacing:-.015em;margin-bottom:14px}
.avatarraster{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}
.avatarwahl{
  width:100%;aspect-ratio:1;border-radius:999px;overflow:hidden;padding:0;cursor:pointer;
  border:2px solid transparent;background:var(--flaeche-2);
  transition:border-color .16s var(--takt),transform .16s var(--takt);
}
.avatarwahl img{width:100%;height:100%;object-fit:cover;display:block}
.avatarwahl.an{border-color:var(--akzent);transform:scale(1.06)}
.avatarhinweis{font-size:var(--f1);color:var(--leise);margin:11px 0 0}

/* Avatar als Marke neben einem Namen */
.avatarmini{
  width:22px;height:22px;border-radius:999px;object-fit:cover;flex:none;
  display:inline-block;vertical-align:-6px;margin-right:6px;background:var(--flaeche-2);
}
.person .avatarmini{margin-right:7px}
.ich .avatarmini{width:24px;height:24px;margin:0 2px 0 -6px;vertical-align:-7px}
.stimme .avatarmini{width:17px;height:17px;vertical-align:-4px;margin-right:4px}
.zn .avatarmini{width:20px;height:20px;vertical-align:-5px}

/* Vollbild */
.avatarschau{
  position:fixed;inset:0;z-index:150;background:var(--schleier);display:grid;
  place-items:center;padding:24px;cursor:zoom-out;animation:einblenden .22s var(--takt);
}
.avatarschau figure{margin:0;text-align:center;max-width:420px}
.avatarschau img{width:100%;max-width:340px;border-radius:22px;display:block;margin:0 auto;
  box-shadow:0 20px 60px oklch(0.1 0.02 265 / .55);animation:hoch .3s var(--takt)}
.avatarschau figcaption{color:var(--auf-akzent);margin-top:16px;font-size:var(--f5);font-weight:800;
  text-shadow:0 1px 10px oklch(0.1 0.02 265 / .7)}
.avatarschau .wer{color:var(--auf-akzent);opacity:.8;font-size:var(--f3);font-weight:400;
  display:block;margin-top:3px}
@media (max-width:360px){ .avatarraster{grid-template-columns:repeat(4,1fr)} }
