/* 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 ---------- */
/* overflow-x:hidden ist hier keine Kosmetik. Ohne das laesst sich der ganze
   Bogen mit dem Daumen nach links und rechts schieben, sobald irgendein Element
   auch nur ein Pixel uebersteht - und das fuehlt sich kaputt an. Die
   querscrollbaren Aromareihen haben ihren eigenen Scrollbereich und bleiben
   davon unberuehrt.
   overscroll-behavior:contain verhindert, dass die Liste dahinter mitwandert,
   wenn man ueber das Ende hinauszieht. */
.bogen{
  position:fixed;inset:0;background:var(--schleier);z-index:110;
  overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;
}
.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)}
/* Klebt am Fenster, nicht am Blatt. Auf breiten Schirmen wandert es mit dem
   rechten Rand des 600er Blattes mit, statt am Bildschirmrand zu kleben. */
.bogenzu{
  position:fixed;z-index:6;
  top:calc(12px + env(safe-area-inset-top));
  right:max(14px, calc(50vw - 300px + 14px));
  width:48px;height:48px;border-radius:999px;
  /* In der Akzentfarbe statt in Grau. Grau las sich als Teil des Blattes,
     nicht als Ausgang - und genau daran ist die Runde haengengeblieben. */
  background:var(--akzent);border:2px solid var(--akzent-satt);color:var(--auf-akzent);
  font-size:26px;line-height:1;cursor:pointer;display:grid;place-items:center;
  box-shadow:0 4px 18px oklch(0.1 0.02 265 / .38);
}
.bogenzu:active{background:var(--akzent-satt);transform:scale(.94)}
.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);
  /* Kein white-space:nowrap. Ein langer Stilname wie "Fruited Imperial Berliner
     Weisse" ist 210 Pixel breit und schob auf einem 320er Display den ganzen
     Bogen zur Seite. Kurze Plaketten wie "6,0 % vol" brechen trotzdem nicht um:
     die Reihe umbricht als Ganzes, bevor eine einzelne Plakette es tut. */
  max-width:100%;overflow-wrap:break-word;
}
.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)} }

/* ---------- Wer bewertet gerade ----------
   Die Handys wandern am Tisch. Ohne diesen Streifen bewertet der Naechste
   unbemerkt unter dem Namen des Vorigen und ueberschreibt dessen Note. */
.werbinich{
  display:flex;align-items:center;gap:4px 8px;flex-wrap:wrap;width:100%;text-align:left;
  margin:0 0 4px;padding:11px 14px;border-radius:var(--r-flaeche);
  border:1px solid var(--akzent);background:color-mix(in oklch,var(--akzent) 9%,transparent);
  color:var(--text);font:inherit;cursor:pointer;
}
.werbinich:active{background:color-mix(in oklch,var(--akzent) 16%,transparent)}
/* Immer eine eigene Zeile. Nebeneinander quetscht die Beschriftung den Namen
   zusammen, und bei "Fabian" stand dann "Fabi..." - ausgerechnet an der Stelle,
   die klarstellen soll, wer hier gerade bewertet. */
.werlabel{font-size:var(--f1);color:var(--gedaempft);flex:0 0 100%}
.wername{font-size:var(--f3);font-weight:800;flex:1;min-width:0;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap}
.wername .avatarmini{width:20px;height:20px;vertical-align:-5px;margin-right:5px}
.werwechsel{font-size:var(--f1);font-weight:700;color:var(--akzent);flex:none;
  text-decoration:underline;text-underline-offset:3px}

/* ---------- Aromarad ----------
   Je Gruppe eine querscrollbare Reihe. Unter jedem Bild steht immer das Wort:
   Menschen benennen nur 25 bis 50 Prozent der Gerueche korrekt, auch vertraute. */
.aromagruppe{margin-bottom:14px}
.aromagruppe:last-child{margin-bottom:0}
.agtitel{
  font-size:var(--f1);font-weight:800;letter-spacing:.08em;text-transform:uppercase;
  color:var(--leise);margin-bottom:8px;
}
.agtitel span{
  display:block;font-size:var(--f1);font-weight:400;letter-spacing:0;text-transform:none;
  color:var(--leise);margin-top:4px;max-width:46ch;line-height:1.45;
}
.areihe{
  display:flex;gap:8px;overflow-x:auto;overflow-y:hidden;
  /* Der Rand darf nicht abgeschnitten wirken: etwas Luft unten fuer den Balken. */
  padding:2px 2px 8px;margin:0 -2px;
  scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;
  scrollbar-width:thin;
}
.aroma{
  flex:0 0 auto;width:82px;scroll-snap-align:start;
  display:flex;flex-direction:column;align-items:center;gap:5px;
  padding:8px 4px 7px;border-radius:var(--r-schalter);
  border:1.5px solid var(--linie);background:var(--flaeche);
  color:var(--gedaempft);font:inherit;font-size:var(--f1);line-height:1.2;
  text-align:center;cursor:pointer;
  transition:border-color .14s var(--takt),background .14s var(--takt),color .14s var(--takt);
}
.aroma img{
  width:54px;height:54px;display:block;border-radius:9px;
  /* Die Icons sind neon auf dunkel gezeichnet, wie das Logo. Der Grund bleibt
     deshalb in beiden Schemata dunkel - sonst blitzt beim Laden Weiss auf und
     die runden Ecken zeigen einen hellen Rand. */
  background:oklch(0.13 0.02 300);
}
/* Kein Trennstrich: "Schokola-de" mitten in einer Kachel liest sich falsch.
   Lieber ein knapper Umbruch oder eine zweite Zeile. */
.aroma span{display:block;font-weight:600;hyphens:none;overflow-wrap:break-word}
.aroma:active{transform:scale(.96)}
.aroma.an{
  border-color:var(--akzent);color:var(--text);
  background:color-mix(in oklch,var(--akzent) 12%,var(--flaeche));
}
.feld .zusatz.gewaehlt{color:var(--akzent);font-weight:700}

/* ---------- Aromen und Notizen in der Auswertung ---------- */
.aromenreihe{display:flex;flex-wrap:wrap;gap:5px;margin-top:8px;grid-column:2/4}
.achip{
  display:inline-flex;align-items:center;gap:5px;font-size:var(--f1);
  background:var(--flaeche);border:1px solid var(--linie-zart);
  border-radius:999px;padding:3px 9px 3px 4px;color:var(--gedaempft);
}
.achip img{width:20px;height:20px;border-radius:999px;background:oklch(0.13 0.02 300);flex:none}
.achip b{font-weight:800;color:var(--text)}
.achip.mehrheit{border-color:var(--akzent);color:var(--text)}

.notizen{display:flex;flex-direction:column;gap:5px;margin-top:9px;grid-column:2/4}
.notiz{
  font-size:var(--f2);color:var(--gedaempft);line-height:1.45;
  padding-left:10px;border-left:1px solid var(--linie);
}
.notiz b{color:var(--text);font-weight:700;margin-right:6px}

/* Rangliste ueber alle Biere */
.aromarang{display:flex;flex-direction:column;gap:7px;margin-bottom:4px}
.ar{display:grid;grid-template-columns:32px 1fr 1fr auto;gap:10px;align-items:center}
.ar img{width:32px;height:32px;border-radius:8px;background:oklch(0.13 0.02 300)}
.arw{font-size:var(--f2);font-weight:600}
.ar .spur{height:7px;border-radius:999px;background:var(--flaeche-2);overflow:hidden}
.ar .spur i{display:block;height:100%;background:var(--akzent);border-radius:999px}
.arz{font-size:var(--f2);font-weight:800;color:var(--gedaempft);min-width:1.6em;text-align:right}
.meineAromen{display:flex;flex-wrap:wrap;gap:5px;margin:0 0 12px}
/* Nicht .klein nennen - das ist die Knopfklasse, und der Absatz holte sich
   deren Kasten samt Rand. */
.satz.zwischen{font-size:var(--f2);color:var(--gedaempft);margin:14px 0 8px;
  background:none;border:none;padding:0}

/* ---------- Kein Netz ----------
   Vorher fror die Liste stumm ein: alle sahen minutenlang denselben Stand,
   ohne dass irgendetwas darauf hindeutete. */
.offline{
  font-size:var(--f1);font-weight:600;color:var(--warn);
  padding:7px 0 2px;border-top:1px solid var(--linie-zart);
}
.toast.schlecht{background:var(--warn);color:var(--auf-akzent)}

@media (max-width:360px){
  .aroma{width:72px}
  .aroma img{width:48px;height:48px}
  .wername{font-size:var(--f2)}
}

/* ---------- Wege zurueck ----------
   Vier Bildschirme waren Sackgassen: die Namensmaske hatte gar keinen Ausgang,
   Etikett und Avatar im Vollbild schlossen zwar bei jedem Tipp, sahen aber
   nicht danach aus, und die Nerd-Ecke ging nur zu, wenn man ein zweites Mal
   fuenfmal auf den Schriftzug tippte. */
.rueckzu{
  display:flex;align-items:center;gap:5px;
  margin:0 0 18px;padding:9px 14px 9px 10px;border-radius:999px;
  background:var(--flaeche);border:1px solid var(--linie);color:var(--text);
  font:inherit;font-size:var(--f2);font-weight:700;cursor:pointer;
}
.rueckzu svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:2.2;
  stroke-linecap:round;stroke-linejoin:round}
.rueckzu:active{background:var(--flaeche-2)}

/* Das Kreuz im Vollbild. Liegt ueber dem Bild, nicht daneben - daneben waere
   auf einem Handy im Querformat ausserhalb des Sichtbaren. */
.vollzu{
  position:absolute;top:max(14px,env(safe-area-inset-top));right:14px;
  width:44px;height:44px;border-radius:999px;z-index:2;
  background:oklch(0.99 0.005 300 / .16);border:1px solid oklch(0.99 0.005 300 / .3);
  color:var(--auf-akzent);font-size:22px;line-height:1;cursor:pointer;
  display:grid;place-items:center;backdrop-filter:blur(6px);
}
.nerdkopf{display:flex;align-items:baseline;justify-content:space-between;gap:12px}
.nerdkopf h3{margin:0 0 4px}

/* ---------- Rangliste zum Ausklappen ----------
   Bei 26 Bieren war die volle Liste ein endloser Streifen. Die Zeile zeigt jetzt
   Platz, Name, Note und Streubild; Stimmen, Aromen, Notizen und das Radar
   kommen erst beim Antippen. */
.rangzeile{border-bottom:1px solid var(--linie-zart)}
.rangzeile:last-child{border-bottom:none}
.rang{border-bottom:none}
.rang .pfeil{
  float:right;margin-left:8px;color:var(--leise);
  transition:transform .18s var(--takt);display:inline-block;
}
.rang.offen .pfeil{transform:rotate(180deg)}
.rangdetail{padding:0 0 18px 40px}
.rangdetail .stimmenreihe,
.rangdetail .aromenreihe,
.rangdetail .notizen{grid-column:auto;margin-top:0;margin-bottom:10px}
.rangdetail .bogenauf{margin-top:4px}
.abschnitt .allezu{
  float:right;font:inherit;font-size:var(--f1);font-weight:700;letter-spacing:0;
  text-transform:none;background:none;border:none;color:var(--akzent);cursor:pointer;
  text-decoration:underline;text-underline-offset:3px;padding:0;
}

/* ---------- Radar ---------- */
.radarkasten{margin:14px 0 12px;text-align:center}
.radarkasten.breit{margin:18px 0 14px}
.radar{width:100%;max-width:230px;height:auto;overflow:visible}
.radar .netz{fill:none;stroke:var(--linie-zart);stroke-width:1}
.radar .speiche{stroke:var(--linie-zart);stroke-width:1}
.radar .flaeche{fill:var(--rf);fill-opacity:.28;stroke:var(--rf);stroke-width:2.5;
  stroke-linejoin:round}
.radar .flaeche.zart{fill-opacity:.10;stroke-width:1.5;stroke-dasharray:4 3}
.radar .rt{fill:var(--leise);font-size:11px;font-weight:700}
.radarfuss{color:var(--leise);font-size:var(--f1);margin:8px auto 0;max-width:40ch}
.legende{display:inline-block;width:12px;height:12px;border-radius:3px;vertical-align:-2px;
  margin-right:5px;margin-left:8px}
.legende:first-child{margin-left:0}
.legende.voll{background:var(--akzent)}
.legende.zart{background:var(--leise);opacity:.45}

/* ---------- Die Landkarte ---------- */
.landkarte{margin:4px 0 6px}
.landkarte svg{width:100%;max-width:340px;height:auto;display:block;margin:0 auto}
.landkarte .netz{stroke:var(--linie-zart);stroke-width:1}
.landkarte .kt{fill:var(--leise);font-size:12px;font-weight:800;letter-spacing:.06em;
  text-transform:uppercase}
.bierpunkt{stroke:var(--grund);stroke-width:2}

/* ---------- Karten nebeneinander ---------- */
.karten{display:grid;gap:12px}
@media (min-width:560px){ .karten{grid-template-columns:1fr 1fr} }

/* ---------- Zwei Reiter im Bogen ---------- */
.bogenreiter{
  display:grid;grid-template-columns:1fr 1fr;gap:6px;
  margin:0 20px 4px;padding:4px;border-radius:12px;background:var(--flaeche-2);
}
.bogenreiter button{
  padding:10px 8px;border:none;border-radius:9px;background:none;color:var(--gedaempft);
  font:inherit;font-size:var(--f2);font-weight:700;cursor:pointer;min-height:42px;
  transition:background .16s var(--takt),color .16s var(--takt);
}
.bogenreiter button.an{background:var(--flaeche);color:var(--text);
  box-shadow:0 1px 4px oklch(0.1 0.02 265 / .10)}
.bogenauswertung{padding:14px 20px 32px}

/* ---------- Eckdaten sind Knoepfe ---------- */
.eckdaten .eckwert{
  font:inherit;font-size:var(--f1);font-weight:700;border-radius:999px;padding:5px 11px;
  background:var(--flaeche-2);color:var(--gedaempft);border:1px solid transparent;
  cursor:pointer;max-width:100%;overflow-wrap:break-word;text-align:left;
}
.eckdaten .eckwert:active{border-color:var(--akzent);color:var(--text)}
/* Kurzes Aufleuchten, wenn man von einem Eckwert hierher gesprungen ist. */
.zutaten.hingewiesen{animation:aufleuchten 1.1s var(--takt)}
@keyframes aufleuchten{
  0%{box-shadow:0 0 0 0 oklch(0.55 0.24 300 / .55)}
  100%{box-shadow:0 0 0 14px oklch(0.55 0.24 300 / 0)}
}

/* ---------- Eigener Begriff ---------- */
.eigenesaroma{display:flex;gap:8px;margin-top:14px}
.eigenesaroma .eingabe{flex:1;min-width:0;margin:0}
.eigenesaroma .klein{flex:none}

/* ---------- Alle Achsen je Bier ---------- */
.astreifen-block{margin:6px 0 14px}
.astreifen{
  display:grid;grid-template-columns:1fr auto;gap:2px 10px;
  align-items:center;margin:0 0 15px;
}
.an-wort{font-size:var(--f2);font-weight:700;grid-column:1}
.an-zahl{font-size:var(--f3);font-weight:800;grid-column:2;grid-row:1/3;
  align-self:center;color:var(--gedaempft);min-width:2.4em;text-align:right}
.an-spur{
  /* Hoch genug fuer drei Reihen: wer denselben Wert vergeben hat, wird
     vertikal verteilt statt uebereinandergelegt. */
  position:relative;display:block;height:52px;grid-column:1;
  background:linear-gradient(var(--flaeche-2),var(--flaeche-2)) center/100% 4px no-repeat;
  border-radius:4px;
}
.an-spur i{
  position:absolute;top:50%;width:24px;height:24px;
  margin:-12px 0 0 -12px;
  transform:translate(var(--seit,0px),var(--hoch,0px));
  border-radius:50%;display:grid;place-items:center;overflow:hidden;
  background:var(--flaeche-2);
  /* Der Ring in der Farbe der Person: so sind auch vier Leute, deren Namen
     alle mit T anfangen, auseinanderzuhalten. */
  outline:2px solid var(--linie);outline-offset:0;
  box-shadow:0 0 0 3px var(--grund);
}
.an-spur i img{width:100%;height:100%;object-fit:cover;display:block}
.an-spur i b{
  width:100%;height:100%;display:grid;place-items:center;border-radius:50%;
  color:var(--auf-akzent);font-size:12px;font-weight:800;
}
/* Der Schnitt als senkrechter Strich, damit er nicht mit einer Person
   verwechselt wird. */
.an-spur em{
  position:absolute;top:50%;width:2px;height:46px;margin:-23px 0 0 -1px;
  background:var(--text);opacity:.35;border-radius:1px;
}
.an-pole{display:flex;justify-content:space-between;grid-column:1;
  color:var(--leise);font-size:var(--f1)}

/* Kopf der Bier-Auswertung */
.bakopf{display:grid;grid-template-columns:64px 1fr auto;gap:12px;align-items:center;
  margin-bottom:14px}
.badose{width:64px;height:64px;border-radius:12px;overflow:hidden;padding:0;
  border:1px solid var(--linie-zart);background:var(--bildgrund);cursor:zoom-in;
  display:grid;place-items:center}
.badose img{width:100%;height:100%;object-fit:contain;display:block}
.batext b{display:block;font-size:var(--f4);font-weight:800;letter-spacing:-.01em}
.batext span{display:block;font-size:var(--f1);color:var(--leise);margin-top:2px}
.banote{font-size:var(--f6);font-weight:800;letter-spacing:-.02em}

/* Dose in der Ranglistenzeile */
.rdose{
  width:44px;height:44px;border-radius:9px;overflow:hidden;flex:none;
  background:var(--bildgrund);display:grid;place-items:center;cursor:zoom-in;
}
.rdose img{width:100%;height:100%;object-fit:contain;display:block}
.rdose .buchstabe{font-size:var(--f4);font-weight:800}
.rang{grid-template-columns:22px 44px 1fr auto}
.rang .detail,.rang .streu{grid-column:2/5}
.rangdetail{padding:0 0 18px 24px}

/* ---------- Bewegung ----------
   Nur was sich wirklich geaendert hat. Wer reduzierte Bewegung eingestellt
   hat, bekommt gar keine. */
@keyframes einblenden{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes wackeln{
  0%{transform:none}
  18%{transform:translateX(-4px)}
  36%{transform:translateX(4px)}
  54%{transform:translateX(-2px)}
  72%{transform:translateX(2px)}
  100%{transform:none}
}
@keyframes leuchten{
  0%{background:oklch(0.55 0.24 300 / .18)}
  100%{background:transparent}
}
#auswertung.blendetein > *{animation:einblenden .55s var(--takt) backwards}
#auswertung.blendetein > *:nth-child(2){animation-delay:.05s}
#auswertung.blendetein > *:nth-child(3){animation-delay:.10s}
#auswertung.blendetein > *:nth-child(4){animation-delay:.15s}
#auswertung.blendetein > *:nth-child(n+5){animation-delay:.20s}
.rangzeile.eingeblendet{animation:einblenden .5s var(--takt), leuchten 1.4s var(--takt)}
.rangzeile.gewackelt{animation:wackeln .55s var(--takt), leuchten 1.4s var(--takt)}
@media (prefers-reduced-motion: reduce){
  #auswertung.blendetein > *,.rangzeile.eingeblendet,.rangzeile.gewackelt{animation:none}
}
