/* === /schriften/schriften.css === */
/* Selbst gehostet, damit beim Laden keine Verbindung zu Google entsteht (DSGVO). */

/* --- Abhaya Libre 400 --- */
@font-face { font-family:'Abhaya Libre'; font-style:normal; font-weight:400; font-display: swap;
  src:url(/schriften/AbhayaLibre-400-latin-ext.woff2) format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; }
@font-face { font-family:'Abhaya Libre'; font-style:normal; font-weight:400; font-display: swap;
  src:url(/schriften/AbhayaLibre-400-latin.woff2) format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }

/* --- Cormorant Garamond 300 --- */
@font-face { font-family:'Cormorant Garamond'; font-style:normal; font-weight:300; font-display: swap;
  src:url(/schriften/CormorantGaramond-300-latin-ext.woff2) format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; }
@font-face { font-family:'Cormorant Garamond'; font-style:normal; font-weight:300; font-display: swap;
  src:url(/schriften/CormorantGaramond-300-latin.woff2) format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }

/* --- DM Mono 300 / 400 --- */
@font-face { font-family:'DM Mono'; font-style:normal; font-weight:300; font-display: swap;
  src:url(/schriften/DMMono-300-latin-ext.woff2) format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; }
@font-face { font-family:'DM Mono'; font-style:normal; font-weight:300; font-display: swap;
  src:url(/schriften/DMMono-300-latin.woff2) format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }
@font-face { font-family:'DM Mono'; font-style:normal; font-weight:400; font-display: swap;
  src:url(/schriften/DMMono-400-latin-ext.woff2) format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; }
@font-face { font-family:'DM Mono'; font-style:normal; font-weight:400; font-display: swap;
  src:url(/schriften/DMMono-400-latin.woff2) format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }

/* --- Inter 300 / 400 --- */
@font-face { font-family:'Inter'; font-style:normal; font-weight:300; font-display: swap;
  src:url(/schriften/Inter-300-latin-ext.woff2) format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; }
@font-face { font-family:'Inter'; font-style:normal; font-weight:300; font-display: swap;
  src:url(/schriften/Inter-300-latin.woff2) format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }
@font-face { font-family:'Inter'; font-style:normal; font-weight:400; font-display: swap;
  src:url(/schriften/Inter-400-latin-ext.woff2) format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; }
@font-face { font-family:'Inter'; font-style:normal; font-weight:400; font-display: swap;
  src:url(/schriften/Inter-400-latin.woff2) format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }

/* --- Oswald 300 --- */
@font-face { font-family:'Oswald'; font-style:normal; font-weight:300; font-display: swap;
  src:url(/schriften/Oswald-300-latin-ext.woff2) format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; }
@font-face { font-family:'Oswald'; font-style:normal; font-weight:300; font-display: swap;
  src:url(/schriften/Oswald-300-latin.woff2) format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }

/* --- Jost 300 (nur DE/EN-Umschalter) --- */
@font-face { font-family:'Jost'; font-style:normal; font-weight:300; font-display: swap; src:url(/schriften/Jost-300-1.woff2) format('woff2'); }
@font-face { font-family:'Jost'; font-style:normal; font-weight:300; font-display: swap; src:url(/schriften/Jost-300-2.woff2) format('woff2'); }
@font-face { font-family:'Jost'; font-style:normal; font-weight:300; font-display: swap; src:url(/schriften/Jost-300-3.woff2) format('woff2'); }

/* --- Oswald 200 (Michael 24.09.2026: "Die Schrift etwas duenner") ---
   ACHTUNG: der erste Versuch holte nur EINEN Teilschnitt (7,7 KB). Darin
   fehlte unter anderem das A, es fiel auf Impact zurueck und stand fett
   zwischen duennen Buchstaben. Jetzt beide Latin-Schnitte, 12,2 und
   11,6 KB, selbst gehostet wie alle anderen. */
@font-face { font-family:'Oswald'; font-style:normal; font-weight:200; font-display: swap;
  src:url(/schriften/Oswald-200-latin-ext.woff2) format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; }
@font-face { font-family:'Oswald'; font-style:normal; font-weight:200; font-display: swap;
  src:url(/schriften/Oswald-200-latin.woff2) format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }

/* --- EB Garamond 400 (25.09.2026 selbst gehostet: kinderkarte.html holte sie bis dahin von Google) --- */

/* --- Inter 500 (25.09.2026 nachgezogen, gleiche Quelle) --- */
@font-face { font-family:'Inter'; font-style:normal; font-weight:500; font-display: swap;
  src:url(/schriften/Inter-500-latin-ext.woff2) format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; }
@font-face { font-family:'Inter'; font-style:normal; font-weight:500; font-display: swap;
  src:url(/schriften/Inter-500-latin.woff2) format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }

/* --- ERSATZSCHRIFT MIT PASSENDEN MASSEN (26.09.2026) ---
   Bis dahin stand im Schriftsatz "Cormorant Garamond", Georgia, serif. Georgia ist
   GEMESSEN 14 Prozent breiter: derselbe Satz misst bei 100 px Schriftgrad 1503 px
   in Georgia und 1316 px in Cormorant. Am Handy brauchte die Ueberschrift der
   Galerie deshalb eine Zeile mehr, bis die echte Schrift da war, und sprang dann
   um gut 220 px nach oben. CLS 0,144 bei einer Schwelle von 0,1, gemessen um 90 ms,
   also lange bevor ein Bild geladen ist.

   size-adjust rechnet Georgia auf die Breite von Cormorant herunter. Der Platz
   stimmt damit von der ersten Malung an, und beim Schriftwechsel springt nichts.
   Der Wert 87.56 ist der gemessene Faktor, nicht geschaetzt. */
@font-face {
  font-family: 'Cormorant Ersatz';
  src: local('Georgia'), local('Times New Roman'), local('Times');
  size-adjust: 87.56%;
  font-display: swap;
}

/* Dasselbe fuer die Fliesstextschrift. Abhaya Libre ist GEMESSEN 8,3 Prozent
   schmaler als Georgia (1895 zu 2066 px bei 100 px Schriftgrad). Der Vorspann der
   Galerie brauchte deshalb bis zum Schriftwechsel eine Zeile mehr und schob den
   ganzen Rest der Seite um 113 px. Zusammen mit der Ueberschrift ergab das CLS
   0,133 bei einer Schwelle von 0,1 -- gemessen nach 47 ms, ohne dass ein Bild
   im Spiel war. */
@font-face {
  font-family: 'Abhaya Ersatz';
  src: local('Georgia'), local('Times New Roman'), local('Times');
  size-adjust: 91.72%;
  font-display: swap;
}

/* --- Inter 400 und 500 (Angebotskarte im Chat, Michael 21.10.2026) --- */
@font-face { font-family:'Inter'; font-style:normal; font-weight:400; font-display: swap;
  src:url(/schriften/Inter-400-latin-ext.woff2) format('woff2');
  unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family:'Inter'; font-style:normal; font-weight:400; font-display: swap;
  src:url(/schriften/Inter-400-latin.woff2) format('woff2');
  unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family:'Inter'; font-style:normal; font-weight:500; font-display: swap;
  src:url(/schriften/Inter-500-latin-ext.woff2) format('woff2');
  unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family:'Inter'; font-style:normal; font-weight:500; font-display: swap;
  src:url(/schriften/Inter-500-latin.woff2) format('woff2');
  unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }

/* === /schriften/plexmono.css === */
/* IBM Plex Mono, selbst gehostet (23.09.2026). Nur fuer die Entwuerfe Zimmer und Preise. */
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:300;font-display:swap;src:url(/schriften/IBMPlexMono-300-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:300;font-display:swap;src:url(/schriften/IBMPlexMono-300-latin.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:400;font-display:swap;src:url(/schriften/IBMPlexMono-400-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:400;font-display:swap;src:url(/schriften/IBMPlexMono-400-latin.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}

/* === /lp-stil.css === */
/* Nachbau der Framer-Landingpage Wandern. Werte aus referenz/aufbau-desktop.txt:
   Desktop 1435 px, Seitenrand 40, Grund #F3EEE7, Tinte #3D3733.
   Schriften: Cormorant Garamond 300 (Titel), Abhaya Libre (Text), Inter 12 px
   Versalien .14em (Beschriftungen), DM Mono 500 (Seitenmenue), Oswald 300 (Wortmarke). */
:root{
  --grund:#F3EEE7; --tinte:#3D3733; --grau:#6E6862; --text:#6B635F; --text2:#5C554F;
  --linie:#DDD5C9; --dunkel:#35302B; --creme:#F1ECE3;
  --rand:40px; --breite:1435px;
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--grund);color:var(--tinte);font-family:"Abhaya Libre",'Abhaya Ersatz',Georgia,serif;font-size:16px;line-height:1.66}
img{display:block;width:100%;height:auto;object-fit:cover;background:#E6DFD4}
a{color:inherit}
h1,h2,h3{font-family:"Cormorant Garamond",'Cormorant Ersatz',Georgia,serif;font-weight:300;margin:0;color:var(--tinte)}
p{margin:0}
button,input,select{font:inherit;border-radius:0}

.mikro,figcaption,.rand dt,.nr{font-family:Inter,system-ui,sans-serif;font-size:12px;line-height:1.2;letter-spacing:.14em;text-transform:uppercase;color:var(--grau)}
.lauf{font-size:17px;line-height:1.66;color:var(--text)}
figure{margin:0;display:flex;flex-direction:column;gap:8px}

/* Kopf: Wortmarke nach Markenregel (Oswald 300, Laufweite .42em mit Ausgleich), darunter das Seitenmenue */
.kopf{position:sticky;top:0;z-index:20;background:var(--grund);border-bottom:1px solid #E6DFD4}
.wortmarke{display:block;text-align:center;text-decoration:none;font-family:Oswald,Impact,sans-serif;font-weight:300;
  font-size:28px;letter-spacing:.42em;text-indent:.42em;padding:40px 0 22px;color:var(--tinte)}
/* Michael 16.09.2026: Signet im Kopf wieder weg -- oben steht NUR die Typo.
   Sie bleibt bei 28 px (vorher 24), das war die Bitte "etwas groesser". */
.seitenmenue{display:flex;justify-content:center;flex-wrap:wrap;gap:12px 40px;padding:10px var(--rand) 36px}
.seitenmenue a{font-family:"DM Mono",ui-monospace,monospace;font-weight:500;font-size:12px;line-height:20px;letter-spacing:.3em;text-transform:uppercase;text-decoration:none;color:#706b64} /* Michael 15.09.2026 "Menue heller"; 17.09.2026 von #8a857d auf #706b64 abgedunkelt -- #8a857d ergab auf #f3eee7 nur Kontrast 3.17, Lighthouse verlangt 4.5. Jetzt 4.58, so hell wie erlaubt */
.seitenmenue a:hover{text-decoration:underline;text-underline-offset:6px}

main,.fuss{max-width:var(--breite);margin:0 auto}
.abschnitt{padding:128px var(--rand) 0;display:flex;flex-direction:column;gap:64px;scroll-margin-top:170px}
/* Titelblock nach dem Auftakt, von Michael am 15.09.2026 als optimal freigegeben:
   Kleinzeile, 38 px, Titel 30 px, 38 px, Fliesstext. Gilt fuer JEDEN Abschnittskopf. */
.kopf1{display:flex;flex-direction:column;gap:38px}
/* Runde 3, Michael: Kleinzeile naeher an den Titel und kleiner, naeher am Framer-Original (dort 12 px, 8 px Abstand) */
.kopf1 .mikro{font-size:11px}
.kopf1 .mikro+h2{margin-top:-24px} /* 38 - 24 = 14 px */
.nur-vorlesen{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
h2{font-size:30px;line-height:1.28;letter-spacing:-.005em}
.kopf2{display:grid;grid-template-columns:1fr 1fr;gap:48px;align-items:start}
.kopf2 h2{max-width:260px} /* Framer bricht den Titel auf drei Zeilen (Canvas-Foto Zimmer und Preise) */

/* Auftakt: zwei Reihen wie im Framer-Raster */
.auftakt{padding:48px var(--rand) 0;scroll-margin-top:170px}
.auftakt-raster{display:grid;grid-template-columns:1fr 1fr;column-gap:40px;row-gap:40px}
.auftakt .a1{align-self:end}
.auftakt .a2{align-self:end;width:80%}
.auftakt .a3{width:75%;justify-self:end}
.wort{align-self:end;display:flex;flex-direction:column;gap:38px;padding-bottom:40px}
h1,.titel2{font-size:30px;line-height:1.28;letter-spacing:-.005em;font-family:"Cormorant Garamond",'Cormorant Ersatz',Georgia,serif;font-weight:300}
.wort .lauf{max-width:520px}

/* Zimmer: waagrechtes Gleis mit Laeufer */
.gleis{display:flex;gap:24px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;margin-top:-16px}
.gleis::-webkit-scrollbar{display:none}
.karte{flex:0 0 475px;scroll-snap-align:start;display:flex;flex-direction:column;gap:16px}
.kzeile{display:flex;justify-content:space-between;align-items:end;padding-top:16px;gap:12px}
.kzeile h3{font-size:17px;line-height:1.2}
.kmass{font-size:16px;color:var(--grau);line-height:1.2;white-space:nowrap}
.klinie{height:1px;background:var(--linie)}
.kpreis{font-size:16px;font-weight:500;line-height:1.2}
.ktext{font-size:17px;color:var(--text)}
.gleissteuerung{display:flex;align-items:center;gap:34px;margin-top:-24px}
.gleissteuerung button{background:none;border:0;padding:8px 0;cursor:pointer;font-family:Inter,system-ui,sans-serif;font-weight:300;font-size:13px;letter-spacing:.26em;text-transform:uppercase;color:var(--tinte);display:flex;align-items:center;gap:12px}
.gleissteuerung button:disabled{color:#B4AAA0;cursor:default}
.gleissteuerung .pfeil{font-size:26px;line-height:1;letter-spacing:0}
.spur{flex:1;height:1px;background:#E6DFD4;position:relative}
.laeufer{position:absolute;left:0;top:0;height:1px;background:var(--tinte);width:30%;transition:left .2s,width .2s}

/* Bildreihen (Galerie und Kapitel): Breiten in Prozent wie im Framer-Raster */
.bildreihe{display:flex;justify-content:space-between;align-items:flex-start;gap:24px}
.bildreihe figure{flex:0 0 var(--anteil)}
.abschnitt>.bildreihe+.bildreihe{margin-top:-40px}

/* Kapitel Essen, Wellness, Sommer */
.leitsatz{font-size:17px;line-height:1.66;color:var(--tinte);max-width:640px;margin-top:-26px} /* 64 - 26 = 38 px wie im Auftakt */
.leitsatz.serif{font-family:"Cormorant Garamond",'Cormorant Ersatz',Georgia,serif;font-size:18px;line-height:1.55}
.satz{display:grid;grid-template-columns:4fr 4fr 3fr;gap:48px;align-items:start} /* Randspalte weiter rechts, Michael 15.09.2026 */
.rand{margin:0;display:flex;flex-direction:column;gap:28px}
.rand dt{margin-bottom:2px}
.rand dd{margin:0;font-size:15px;line-height:1.4;color:var(--tinte)}

/* Wanderkarte. karte-stil.css erwartet eigene Namen; sie stehen NUR am Kartenfeld,
   damit sie die Farben der Seite nicht ueberschreiben (wie in lp-haus.html). */
.kartenfeld{--creme:#F3EEE7;--hell:#FBFAF8;--braun:#332E2A;--text:#5C564F;--leise:#6E6862;--linie:#DDD5C9;
  --akzent:#8C5A3C;--rund:0;--a1:8px;--a2:12px;--a3:18px;
  position:relative;border:1px solid var(--linie);background:#FBFAF8;height:clamp(420px,62vh,660px)}
.kartenfeld .wk-kartenfeld{position:absolute;inset:0}
.kartenwarte{position:absolute;inset:0;display:grid;place-items:center;text-align:center;padding:32px}
.nachweis{font-family:Inter,system-ui,sans-serif;font-size:11px;line-height:1.5;color:#8a857d;margin-top:-40px}

/* Was im Preis steckt */
.inklusive{padding-top:200px;gap:80px}
.inkraster{display:grid;grid-template-columns:1fr 1fr;column-gap:40px;row-gap:40px}
.ip{display:flex;gap:16px;border-top:1px solid var(--linie);padding-top:16px}
.ip h3{font-size:20px;line-height:24px;margin-bottom:8px}
.ip p{font-size:17px;color:var(--text2)}

/* Buchen und Bewertungen */
.buchen{padding-top:200px;gap:128px;scroll-margin-top:170px} /* Michael 15.09.2026: mehr Luft zwischen Knopf und Bewertungen (vorher 72) */
.buchform{display:grid;grid-template-columns:repeat(4,1fr);gap:24px 40px;align-items:end}
.buchform label{display:flex;flex-direction:column;gap:14px}
.buchform .mikro{color:#6E6A64}
.buchform input,.buchform select{border:0;border-bottom:1px solid #3A342F;background:transparent;color:#3A342F;font-family:Inter,system-ui,sans-serif;font-size:14px;padding:8px 0;outline-offset:4px;appearance:none;-webkit-appearance:none;min-height:40px}
.knopf{grid-column:1/-1;height:51px;border:0;background:var(--dunkel);color:var(--creme);font-family:Inter,system-ui,sans-serif;font-weight:500;font-size:12px;letter-spacing:.14em;text-transform:uppercase;cursor:pointer}
.knopf:hover{background:#4a433d}
/* Michael 18.09.2026: der grosse Knopf soll dieselbe Farbe haben wie der
   Buchungsbalken. Beide sind dasselbe Angebot -- also bekommen sie dasselbe
   Material, nicht nur einen nachgemischten Ton: Fassung C, braunes Milchglas.
   Ueber der Cremeflaeche ergibt das gemessen #534E49, genau den Ton des Balkens. */
@supports ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
  .knopf{background:rgba(53,48,43,.84);box-shadow:inset 0 1px 0 rgba(246,242,234,.16);
    -webkit-backdrop-filter:blur(30px) saturate(.65);backdrop-filter:blur(30px) saturate(.65)}
  .knopf:hover{background:rgba(53,48,43,.92)}
}
.bewertungen{display:grid;grid-template-columns:repeat(4,1fr);gap:32px;padding-bottom:60px}
.bw{display:flex;flex-direction:column;gap:6px}
.bwzahl{font-family:"Cormorant Garamond",'Cormorant Ersatz',Georgia,serif;font-weight:300;font-size:36px;line-height:1}
.bwzahl span{font-family:Inter,system-ui,sans-serif;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--grau);margin-left:8px;vertical-align:middle}
.mikro.hell{color:#8a857d}

/* Fussbereich: eine Schrift (Abhaya Libre), CLAUDE.md Regel 24 */
.fuss{padding:120px var(--rand) 140px;font-size:14px;line-height:1.7;color:var(--tinte)}
.fussraster{display:grid;grid-template-columns:1fr 1fr 1fr;gap:32px;text-align:center} /* Michael 16.09.2026: Fuss zentriert */
.fuss a{text-decoration:none}
.fuss a:hover{text-decoration:underline}
.signet{display:block;width:88px;height:88px;margin:96px auto 32px}
.copy{text-align:center;color:#8a857d}

/* Klebeleiste unten, Gestalt wie der freigegebene Buchungsbalken (Regel 27) */
.klebeleiste{position:fixed;left:50%;bottom:16px;transform:translateX(-50%);z-index:30}
/* Fassung C freigegeben 17.09.2026: braunes Milchglas statt voller Flaeche.
   84 % Deckung ist die dichteste der drei Proben -- gemessener Kontrast 7.2
   gegen die hellste Stelle unter dem Balken (AA verlangt 4.5). */
/* Leiste: 25 % weniger durchsichtig (.84 -> .88) und mehr Milchglas (Michael 19.09.2026:
   "nicht dunkler, mehr Milchglas") -- staerkere Unschaerfe, dazu brightness, damit
   das hoehere Alpha den Ton nicht abdunkelt. */
.buchbar{display:flex;align-items:stretch;background:#3D3733;color:#F6F2EA;height:64px}
@supports ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
  .buchbar{background:rgba(53,48,43,.88);box-shadow:inset 0 1px 0 rgba(246,242,234,.16);
    -webkit-backdrop-filter:blur(44px) saturate(.65) brightness(1.12);backdrop-filter:blur(44px) saturate(.65) brightness(1.12)}
}
.buchbar>*{display:flex;align-items:center;font-family:"DM Mono",ui-monospace,monospace;font-weight:500;font-size:11px;letter-spacing:.14em;text-transform:uppercase;white-space:nowrap}
.buchbar .datum{padding:20px 34px;font-variant-numeric:tabular-nums}
.buchbar .trenn{width:1px;margin:14px 0;background:rgba(246,242,234,.28)}
.buchbar .buchtext{padding:20px 40px;border:0;background:transparent;color:inherit;cursor:pointer}
.buchbar .buchtext:hover{background:rgba(246,242,234,.10)}

/* Tablet */
@media (max-width:1199px){
  .satz{grid-template-columns:1fr 1fr}
  .rand{grid-column:1/-1;display:grid;grid-template-columns:repeat(4,1fr);gap:24px 32px} /* Runde 3: vier Spalten ueber die ganze Textbreite, nichts rutscht */
  .buchform{grid-template-columns:1fr 1fr}
  .bewertungen{grid-template-columns:1fr 1fr;row-gap:40px}
  .karte{flex-basis:calc((100% - 24px)/2)}
}
/* Mobil */
@media (max-width:809px){
  :root{--rand:20px}
  .kopf{position:static} /* zwei Menuezeilen klebend verdecken am Handy ein Sechstel des Bildschirms */
  .wortmarke{font-size:22px;padding:28px 0 14px}
  .seitenmenue{gap:6px 18px;padding-bottom:24px}
  .seitenmenue a{letter-spacing:.18em;font-size:11px}
  .abschnitt{padding-top:88px;gap:40px}
  .auftakt{padding-top:24px}
  .auftakt-raster{grid-template-columns:1fr;row-gap:24px}
  .auftakt .a2,.auftakt .a3{width:100%}
  .wort{padding:48px 0 0;gap:28px}
  h1,.titel2{font-size:28px}
  .kopf2,.satz,.inkraster,.buchform,.fussraster{grid-template-columns:1fr}
  .kopf2{gap:20px}
  .rand{grid-template-columns:1fr;gap:20px}
  .karte{flex-basis:86%}
  .gleissteuerung{margin-top:-8px;gap:18px}
  .bildreihe{flex-direction:column;gap:24px}
  .bildreihe figure{flex-basis:auto;width:100%;
    margin-inline:calc(var(--rand) * -1)}          /* randlos am Handy: 350 -> 390 px Bildbreite (28.09.2026) */
  .auftakt-bild .bildkasten{margin-inline:calc(var(--rand) * -1)}
  .abschnitt>.bildreihe+.bildreihe{margin-top:-16px}
  .inklusive,.buchen{padding-top:112px}
  .bewertungen{grid-template-columns:1fr 1fr;gap:32px 20px}
  .buchen{gap:88px}
  .fuss{padding:80px var(--rand) 120px}
  .klebeleiste{left:0;right:0;bottom:0;transform:none}
  .buchbar{height:56px}
  .buchbar .datum,.buchbar .trenn{display:none}
  .buchbar .buchtext{flex:1;justify-content:center}
}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.laeufer{transition:none}}

/* ---- Anker: die Schrift landet 24 px unter der Menueleiste (Michael 18.09.2026) ----
   Vorher gemessen: 123 px Luft unter der Leiste, am Handy 258 px vom oberen
   Rand -- die Bilder darunter sah man erst nach dem Scrollen.
   Rechnung: scroll-margin-top = Hoehe der klebenden Leiste + 24 - Innenabstand
   oben des Abschnitts. Die Leiste ist gemessen 175 px hoch (1000 bis 1920 px
   Breite). Am Handy klebt sie nicht, dort zaehlt nur der Fensterrand.
   Negative Werte sind gewollt: der Innenabstand des Abschnitts ist groesser
   als die Luft, die unter der Leiste bleiben soll. */
.abschnitt{scroll-margin-top:71px}           /* 175 + 24 - 128 */
.buchen{scroll-margin-top:-1px}               /* 175 + 24 - 200 */
.inklusive{scroll-margin-top:-1px}            /* 175 + 24 - 200, gemessen 96 statt 24 */
@media (max-width:809px){
  .abschnitt{scroll-margin-top:-64px}         /* 0 + 24 - 88 */
  .inklusive,.buchen{scroll-margin-top:-88px} /* 0 + 24 - 112 */
}

/* Das Standbild der Karte liegt HINTER dem Rahmen und verschwindet, sobald die Karte
   steht. Ohne diese Zeile wirkt sein "hidden" nicht: img{display:block} weiter oben
   ueberschreibt die Vorgabe des Browsers, und Standbild und Karte stehen doppelt
   untereinander (gemessen 20.09.2026: Feld 558 px hoch, Inhalt 1516 px). */
#kartenersatz[hidden]{display:none}

/* Die Kartenkachel hatte eine feste Hoehe clamp(420px,62vh,660px), der Rahmen darin aber 738 px
   (touren-einbetten.js misst ihn): das naechste Bild ("Frau mit Hut") schob sich ueber die
   Tourenliste und schnitt sie ab -- bei JEDER Breite (Michael 20.09.2026, gemessen bei 430 px:
   Kachel 578, Rahmen 738). Jetzt bestimmt der Rahmen die Hoehe. */
.kartenfeld{flex:0 0 auto;height:auto}

/* ── Laufendes Logoband (29.09.2026) ──────────────────────────────────────
   Form nach Michaels Vorlage: ein ruhig laufendes Band grauer Zeichen.
   Inhalt sind die vier Portale, auf denen das Haus wirklich bewertet ist.

   Das Fenster schneidet ab, die Bahn laeuft. seite.js verdoppelt den Inhalt,
   deshalb ist eine Schleife ueber -50 % nahtlos. Wer "Bewegung reduzieren"
   eingestellt hat, sieht das Band stehen -- ohne Verlust, es ist keine
   Information in der Bewegung.                                              */
/* Gleicher Abstand oben und unten: 104 px. Vorher kam der Abstand nach unten
   allein aus dem naechsten Abschnitt und sah dadurch groesser aus, weil dort
   die Kleinzeile erst nach ihrem eigenen Zeilenkasten beginnt (29.09.2026). */
.logoband{max-width:var(--breite);margin:0 auto;padding:104px var(--rand) 104px}
.logoband + .abschnitt{padding-top:0}
/* Der Zimmerabschnitt ist zwei Ebenen tief: aussen der Rahmen, innen noch ein
   .abschnitt mit eigenen 104 px. Gemessen 208 px unter dem Band statt 104. */
.logoband + .abschnitt > .abschnitt:first-child{padding-top:0}
.logofenster{overflow:hidden}
/* 29.09.2026, Michael mit beiden Baendern nebeneinander: die Zeichen sollen
   so stehen wie in der Presseleiste -- groesser, weiter auseinander, dunkler.
   26 px bei 0,45 Deckkraft las sich wie ein Fussnotenband; 40 px bei 0,7
   traegt die Zeile. Der Lauf wird dafuer langsamer (48 -> 64 s), sonst wirkt
   ein groesseres Zeichen hektisch. */
.logobahn{display:flex;align-items:center;gap:184px;width:max-content;
  animation:logolauf 116s linear infinite}
.logobahn .logo{flex:0 0 auto;display:flex;align-items:center}
/* 29.09.2026, Michael: "Etwas groesser und ohne Hintergrund. Transparent."
   Der graue Kasten kam nicht aus den Dateien -- die sind zu 92 Prozent
   durchsichtig -- sondern aus lp-stil.css Zeile 13: img{background:#E6DFD4}
   ist der Platzhalter fuers Nachladen der Fotos. Bei freigestellten Logos
   bleibt er als Rechteck stehen, weil sie ihn nie verdecken. */
.logobahn img{height:92px;width:auto;opacity:.85;filter:grayscale(1);
  background:transparent;object-fit:contain}
@keyframes logolauf{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@media (hover:hover) and (pointer:fine){
  .logoband:hover .logobahn{animation-play-state:paused}
}
@media (prefers-reduced-motion:reduce){
  .logobahn{animation:none;justify-content:space-between;width:100%}
}
@media (max-width:809px){
  .logoband{padding-top:64px}
  .logobahn{gap:96px}
  .logobahn img{height:66px}
}

/* === /tafel.css === */
/* Tafel "Verfügbarkeit prüfen": Kalender und Belegung.
   Werte 1:1 aus dem Framer-Bauteil GebhardVerfuegbarkeitsbalken.tsx
   (ausgabe/schriften-selbst/neu, Stand 13.09.2026), das seinerseits den
   freigegebenen Entwurf entwuerfe/startseite/haus.html (.tafel) nachbaut.
   Radius 0 überall (Regel 26). */

/* Eigene Namen gbt-rand/gbt-drin: .rand gibt es in stil.css schon (Seitenspalte), am Handy
   wurden die gewaehlten Tage dadurch riesig (gemessen 15.09.2026 bei 390 px). */

/* Datum in der Klebeleiste ist ein Knopf, sieht aber aus wie vorher */
.buchbar button.datum{background:none;border:0;color:inherit;cursor:pointer;margin:0}
.buchbar button.datum:focus-visible,.buchbar .buchtext:focus-visible{outline:2px solid currentColor;outline-offset:-4px}

.gbt-schleier{position:fixed;inset:0;z-index:9990;background:rgba(38,34,30,.42);opacity:0;
  transition:opacity 200ms cubic-bezier(.32,.72,0,1);
  backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px)}
.gbt-schleier.da{opacity:1;transition:opacity 280ms cubic-bezier(.32,.72,0,1)}
.gbt-tafel{position:fixed;z-index:9991;left:50%;top:50%;
  transform:translate(-50%,-50%) translateY(8px) scale(.97);
  opacity:0;transition:opacity 200ms cubic-bezier(.32,.72,0,1),transform 200ms cubic-bezier(.32,.72,0,1);
  width:min(1040px,calc(100vw - 48px));max-height:min(88vh,900px);
  background:#F3EEE7;border-radius:0;
  box-shadow:0 40px 100px -30px rgba(38,34,30,.5),0 8px 24px -10px rgba(38,34,30,.25);
  display:flex;flex-direction:column;font-family:'Abhaya Libre','Abhaya Ersatz',Georgia,serif;color:#3D3733}
.gbt-tafel.da{opacity:1;transform:translate(-50%,-50%) translateY(0) scale(1);
  transition:opacity 280ms cubic-bezier(.32,.72,0,1),transform 280ms cubic-bezier(.32,.72,0,1)}
.gbt-kopf{display:flex;align-items:baseline;justify-content:space-between;gap:24px;padding:72px 72px 40px;flex:0 0 auto}
.gbt-kopf h2{font-family:'Cormorant Garamond','Cormorant Ersatz',Georgia,serif;font-weight:300;font-size:28px;line-height:1.2;margin:0;letter-spacing:-.005em}
.gbt-zu{background:none;border:0;padding:0;cursor:pointer;color:#3D3733;line-height:0}
.gbt-zu svg{width:18px;height:18px}
.gbt-rumpf{padding:0 72px 72px;overflow-y:auto;flex:1 1 auto;-webkit-overflow-scrolling:touch}
.gbt-satz{display:grid;grid-template-columns:1fr 320px;gap:72px;align-items:start}
.gbt-zweimonate{display:grid;grid-template-columns:1fr 1fr;gap:48px}
.gbt-kalkopf{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px;min-height:28px}
.gbt-kalkopf button{background:none;border:0;border-radius:0;cursor:pointer;font-size:18px;line-height:1;color:#3D3733;padding:4px 8px}
.gbt-kalkopf button[disabled]{opacity:.25;pointer-events:none}
.gbt-kalname{font-family:'Cormorant Garamond','Cormorant Ersatz',Georgia,serif;font-size:20px}
.gbt-gitter{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}
.gbt-gitter span{font-family:'DM Mono',ui-monospace,monospace;font-size:11px;letter-spacing:.1em;color:#6E6862;text-align:center;padding-bottom:6px}
.gbt-gitter button{aspect-ratio:1;border:0;border-radius:0;background:none;cursor:pointer;font-family:'DM Mono',ui-monospace,monospace;font-size:15px;color:#3D3733;padding:0}
.gbt-gitter button[disabled]{color:#DDD5C9;pointer-events:none}
.gbt-gitter button.gbt-rand{background:#3A342F;color:#F1ECE3}
.gbt-gitter button.gbt-drin{background:#DDD0BD} /* Michael 15.09.2026: B1, etwas brauner (vorher #E7E0D5) */
.gbt-kopfzeile{font-family:'DM Mono',ui-monospace,monospace;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:#6E6862;
  padding-bottom:6px;margin-bottom:24px;border-bottom:1px solid #DDD5C9;display:block}
.gbt-zeile{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-top:28px}
.gbt-zeile > span{font-size:16px;color:#3D3733}
.gbt-kopfzeile + .gbt-zeile{margin-top:0}
.gbt-zaehler{display:flex;align-items:center;gap:14px}
.gbt-zaehler button{width:36px;height:36px;border:1px solid #3D3733;border-radius:0;background:none;color:#3D3733;cursor:pointer;
  font-size:17px;line-height:1;display:flex;align-items:center;justify-content:center;padding:0}
@media(hover:hover){.gbt-zaehler button:not([disabled]):hover{background:#3D3733;color:#F6F2EA}}
.gbt-zaehler button[disabled]{opacity:.3;pointer-events:none}
.gbt-zaehler .gbt-wert{font-family:'DM Mono',ui-monospace,monospace;font-size:15px;min-width:28px;text-align:center;color:#3D3733}
.gbt-zeile select{font-family:'DM Mono',ui-monospace,monospace;font-size:14px;color:#3D3733;background:none;border:1px solid #DDD5C9;border-radius:0;padding:6px 8px}
.gbt-zeile > .gbt-kindname{font-family:'DM Mono',ui-monospace,monospace;font-size:12px;letter-spacing:.08em;color:#6E6862}
.gbt-fuss{display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap;margin-top:40px;padding-top:24px;border-top:1px solid #DDD5C9}
.gbt-zusammen{font-size:16px;color:#6B635F}
.gbt-knopf{display:inline-flex;align-items:center;justify-content:center;font-family:'DM Mono',ui-monospace,monospace;font-size:12px;
  letter-spacing:.14em;text-transform:uppercase;border:1px solid #3D3733;border-radius:0;padding:16px 32px;background:#3D3733;color:#F6F2EA;
  cursor:pointer;text-decoration:none;white-space:nowrap;flex:0 0 auto}
@media(hover:hover){.gbt-knopf:hover{background:#4a433d}}
.gbt-knopf,.gbt-zaehler button,.gbt-gitter button,.gbt-zu{transition:transform 160ms cubic-bezier(0.23,1,0.32,1),background-color 150ms ease,color 150ms ease}
.gbt-knopf:active{transform:scale(.97)}
.gbt-zaehler button:active:not([disabled]){transform:scale(.94)}
.gbt-gitter button:active:not([disabled]){transform:scale(.92)}
.gbt-zu:active{transform:scale(.9)}
@media(hover:hover) and (pointer:fine){.gbt-gitter button:not([disabled]):not(.gbt-rand):not(.gbt-drin):hover{background:#E7E0D5}}
@media (max-width:760px){
  .gbt-tafel{width:calc(100vw - 32px)}
  .gbt-kopf{padding:40px 32px 24px}
  .gbt-kopf h2{font-size:25px}
  .gbt-rumpf{padding:0 32px 40px}
  .gbt-satz{grid-template-columns:1fr;gap:40px}
  .gbt-zweimonate{grid-template-columns:1fr}
  .gbt-fuss{display:block}
  .gbt-zusammen{display:block;margin-bottom:24px}
  .gbt-knopf{display:flex;width:100%;box-sizing:border-box}
}
@media (prefers-reduced-motion: reduce){
  .gbt-tafel{transform:translate(-50%,-50%) !important;transition:opacity 200ms ease !important}
  .gbt-schleier{transition:opacity 200ms ease !important}
  .gbt-knopf:active,.gbt-zaehler button:active,.gbt-gitter button:active,.gbt-zu:active{transform:none}
}

/* hidden muss gegen display:flex gewinnen */
.gbt-tafel[hidden],.gbt-schleier[hidden]{display:none}

/* Angleich an Framer (gemessen 15.09.2026 im Chrome, 1440 px): die Seite erbt
   line-height 1.66 vom body, Framer steht auf normal -- die Tafel war dadurch 12 px hoeher.
   Pfeile und Plus/Minus laufen bei Framer in der Browser-Grundschrift sans-serif. */
.gbt-tafel{line-height:normal}
.gbt-kalkopf button,.gbt-zaehler button,.gbt-zu{font-family:sans-serif}

/* ---- Klebeleiste: Einblenden nach Emil Kowalski (Werte aus GebhardVerfuegbarkeitsbalken.tsx) ----
   Heben (transform + opacity, 300 ms), danach von rechts nach links aufdecken (clip-path, 460 ms,
   300 ms versetzt). Nur transform, opacity und clip-path: nichts davon loest Layout aus.
   Die Schrift wird nie skaliert, sie steht am endgueltigen Platz und wird nur freigelegt.
   Gehen ist schneller als Kommen (200 ms, ohne Versatz): das System reagiert nur noch. */
.klebeleiste{transform:translateX(-50%) translateY(130%);opacity:0;
  clip-path:inset(0 0 0 calc(100% - 64px));pointer-events:none;
  transition:transform 200ms cubic-bezier(0.23,1,0.32,1),opacity 200ms cubic-bezier(0.23,1,0.32,1),clip-path 200ms cubic-bezier(0.23,1,0.32,1);
  will-change:transform,opacity,clip-path}
.klebeleiste.da{transform:translateX(-50%) translateY(0);opacity:1;clip-path:inset(0 0 0 0);pointer-events:auto;
  transition:transform 300ms cubic-bezier(0.23,1,0.32,1),opacity 300ms cubic-bezier(0.23,1,0.32,1),clip-path 460ms cubic-bezier(0.23,1,0.32,1) 300ms}
.buchbar .buchtext{transition:background-color 150ms ease,transform 160ms cubic-bezier(0.23,1,0.32,1)}
.buchbar .buchtext:active,.buchbar button.datum:active{transform:scale(.97)}
@media (max-width:1023px){
  .klebeleiste{transform:translateY(130%)}
  .klebeleiste.da{transform:translateY(0)}
}
@media (prefers-reduced-motion: reduce){
  /* weniger Bewegung heisst nicht keine Rueckmeldung: die Deckkraft bleibt */
  .klebeleiste,.klebeleiste.da{transform:translateX(-50%);clip-path:none;transition:opacity 200ms ease}
  .buchbar .buchtext:active,.buchbar button.datum:active{transform:none}
}
@media (prefers-reduced-motion: reduce) and (max-width:809px){
  .klebeleiste,.klebeleiste.da{transform:none}
}

/* Michael 15.09.2026: das Alter-Feld steht auf denselben Kanten wie Minus und Plus darueber.
   Zaehler = 36 + 14 + 28 + 14 + 36 = 128 px, gleiche Hoehe 36 px. */
.gbt-zeile select{width:128px;height:36px;box-sizing:border-box;flex:0 0 128px}
/* Eigener Fokusrahmen statt des runden, farbigen Browser-Rings: rechtwinklig (Regel 26), in Tinte */
.gbt-tafel button:focus-visible,.gbt-tafel select:focus-visible,.gbt-tafel a:focus-visible{outline:1px solid #3D3733;outline-offset:2px}
.gbt-tafel button:focus:not(:focus-visible),.gbt-tafel select:focus:not(:focus-visible){outline:none}

/* Die Tafel selbst haelt den Fokus nach Mausbedienung -- ohne sichtbaren Rahmen. Kein Orange, nirgends. */
.gbt-tafel:focus{outline:none}
.gbt-tafel button,.gbt-tafel select,.gbt-tafel a{-webkit-tap-highlight-color:transparent}

/* Michael 15.09.2026: Ziffern Z1 -- DM Mono 300 statt 400 (Tage und Zaehlerwerte). */
.gbt-gitter button,.gbt-zaehler .gbt-wert{font-weight:300}

/* ---- Ausbalanciert nach dem Original (entwuerfe/startseite/haus.html .tafel), Michael 15.09.2026 ----
   Ziffern 14 px wie im Original, Zaehlerwert passend dazu. Die Belegung ist hoechstens 300 px breit
   (Original) und gibt bis 240 nach, BEVOR der Kalender schrumpft. Monatsnamen brechen nie um. */
.gbt-gitter button{font-size:14px}
.gbt-zaehler .gbt-wert{font-size:14px}
.gbt-kalname{white-space:nowrap}
/* Belegung gibt zuerst nach: sie ist 300 px, solange der Kalender 620 px behaelt, sonst bis 240 */
.gbt-satz{grid-template-columns:minmax(0,1fr) clamp(240px,calc(100% - 620px),300px);gap:clamp(48px,5vw,72px)}
/* mittel: zwei Monate ueber die ganze Breite, Belegung darunter und kompakt */
.gbt-tafel[data-form="mittel"] .gbt-kopf{padding:48px 48px 32px}
.gbt-tafel[data-form="mittel"] .gbt-rumpf{padding:0 48px 48px}
.gbt-tafel[data-form="mittel"] .gbt-satz{grid-template-columns:minmax(0,1fr);gap:40px}
.gbt-tafel[data-form="mittel"] .gbt-zweimonate{gap:40px}
.gbt-tafel[data-form="mittel"] [data-bel]{max-width:360px}
/* schmal: ein Monat, Belegung darunter (Werte aus dem Handy-Block oben) */
.gbt-tafel[data-form="schmal"] .gbt-satz{grid-template-columns:minmax(0,1fr);gap:40px}
.gbt-tafel[data-form="schmal"] [data-bel]{max-width:none}
/* Gemessen 15.09.2026 ueber zehn Breiten: bei 700 px stapelte der Handy-Block die zwei Monate
   (Tagesfeld 80 px), bei 600 und 1000 px wurden die Tage riesig. Deshalb: mittel immer zweispaltig
   und hoechstens 640 px breit, schmal hoechstens 360 px -- die Tagesfelder bleiben zwischen 30 und 46 px. */
.gbt-tafel[data-form="mittel"] .gbt-zweimonate{grid-template-columns:1fr 1fr;max-width:640px}
.gbt-tafel[data-form="schmal"] [data-kal],.gbt-tafel[data-form="schmal"] [data-bel]{max-width:360px}

/* ==== Mathematische Anordnung, Michael 15.09.2026 ("ich moechte eine mathematische Anordnung") ====
   Einheit 8 px, Zwischenschritt 4 px. Aus buchen.js kommen drei Masse:
     --p      Innenrand der Tafel (64 / 48 / 24)
     --zelle  Tagesfeld = Plus/Minus = Hoehe einer Belegungszeile (40 / 36 / 32)
     --g      Abstand zwischen den Spalten (48 / 32)
   Ein Monat ist genau 7 Zellen breit, die Belegung genau so breit wie ein Monat.
   Schriftstufen: 10 / 12 / 14 / 16 / 20 / 25 px, Zeilenhoehen 16 / 16 / 20 / 24 / 24 / 32. */
.gbt-tafel{--p:64px;--zelle:40px;--g:48px}
.gbt-tafel[data-form] .gbt-kopf{padding:var(--p) var(--p) 32px;align-items:center}
.gbt-tafel[data-form] .gbt-rumpf{padding:0 var(--p) var(--p)}
.gbt-tafel[data-form] .gbt-kopf h2{font-size:25px;line-height:32px}
.gbt-zu svg{width:16px;height:16px}

.gbt-tafel[data-form] .gbt-satz{grid-template-columns:max-content calc(7 * var(--zelle));gap:var(--g);justify-content:space-between}
.gbt-tafel[data-form] .gbt-zweimonate{grid-template-columns:repeat(2,max-content);gap:var(--g);max-width:none}
.gbt-tafel[data-form="mittel"] .gbt-satz,.gbt-tafel[data-form="schmal"] .gbt-satz{grid-template-columns:max-content;gap:40px;justify-content:start}
.gbt-tafel[data-form="schmal"] .gbt-zweimonate{grid-template-columns:max-content}
.gbt-tafel[data-form] [data-kal],.gbt-tafel[data-form] [data-bel]{max-width:none}
.gbt-tafel[data-form] [data-bel]{width:calc(7 * var(--zelle))}

.gbt-kalkopf{width:calc(7 * var(--zelle));min-height:32px;margin-bottom:16px}
.gbt-kalkopf button{width:var(--zelle);height:32px;padding:0;display:flex;align-items:center;justify-content:center}
/* Monatsname 16 px wie die Zeilen der Belegung (Michael 18.09.2026: "September
   ist etwas zu gross"). 20 px stand gleichauf mit dem Tafeltitel. */
.gbt-kalname{font-size:16px;line-height:24px}
.gbt-kalkopf button{font-size:16px}
.gbt-gitter{grid-template-columns:repeat(7,var(--zelle));gap:0}
.gbt-gitter span{height:24px;line-height:16px;padding:0;font-size:11px}
.gbt-gitter button{width:var(--zelle);height:var(--zelle);aspect-ratio:auto;font-size:14px;line-height:20px}

.gbt-kopfzeile{font-size:11px;line-height:16px;padding-bottom:8px;margin-bottom:16px}
.gbt-zeile{margin-top:16px;min-height:var(--zelle);gap:16px}
.gbt-kopfzeile + .gbt-zeile{margin-top:0}
.gbt-zeile > span{font-size:16px;line-height:24px}
.gbt-zeile > .gbt-kindname{font-size:12px;line-height:16px}
.gbt-zaehler{gap:8px}
.gbt-zaehler button{width:var(--zelle);height:var(--zelle)}
.gbt-zaehler .gbt-wert{min-width:var(--zelle);font-size:14px;line-height:20px}
/* Alter-Feld exakt so breit wie Minus + Wert + Plus: 3 Zellen + 2 x 8 px */
.gbt-zeile select{width:calc(3 * var(--zelle) + 16px);height:var(--zelle);flex:0 0 auto}

.gbt-fuss{margin-top:48px;padding-top:24px}
.gbt-zusammen{font-size:16px;line-height:24px}
.gbt-knopf{height:48px;padding:0 32px;font-size:12px;line-height:16px}
@media (max-width:760px){.gbt-knopf{width:100%}}

/* ---- Buchungsformular: Felder oeffnen die Tafel, kein Browser-Kalender (Michael 15.09.2026) ----
   Aussehen wie die bisherigen Eingabefelder: Inter 14 px, Linie unten, Radius 0.
   "Ohne Umrahmung": kein Fokusrahmen. Nur das Feld, in das man klickt, wird beige hinterlegt.
   Das Beige ragt 12 px ueber die Textkante hinaus, damit der Text auf der Kante der Beschriftung bleibt. */
/* 29.09.2026, Michael: "Striche oben verkuerzen, damit sie in einer Linie mit
   dem Balken sind." Die Felder ragten durch width:100%+24px und margin:0 -12px
   zwolf Pixel ueber den Knopf hinaus -- gemessen Felder 31 bis 1410, Knopf 43
   bis 1398. Jetzt sitzt die Linie auf derselben Kante wie der Balken; die
   beige Flaeche beim Tippen bekommt ihre 12 px ueber die Innenabstaende. */
.buchform .feldknopf{display:block;width:100%;margin:0;padding:8px 0;min-height:40px;
  border:0;border-bottom:1px solid #3A342F;border-radius:0;background:transparent;color:#3A342F;
  font-family:Inter,system-ui,sans-serif;font-size:14px;line-height:24px;text-align:left;cursor:pointer;
  transition:background-color 150ms ease}
.buchform input[type="text"]{width:100%;margin:0;padding:8px 0;transition:background-color 150ms ease}
.buchform .feldknopf:focus,.buchform .feldknopf:focus-visible,.buchform input:focus,.buchform input:focus-visible{outline:none}
.buchform .feldknopf.aktiv,.buchform .feldknopf:focus-visible,.buchform input[type="text"]:focus{background:#E7E0D5}
@media (hover:hover) and (pointer:fine){.buchform .feldknopf:hover{background:#EDE7DD}}

/* ---- Zimmeranzahl in der Belegung (Michael 16.09.2026, Entwurf A) ----
   Die Zimmerzeile zaehlt wie Erwachsene und Kinder und ist durch eine feine Linie
   vom ersten Zimmerblock getrennt. Ueberschriften erscheinen erst ab zwei Zimmern. */
.gbt-zimmerzeile{border-bottom:1px solid #DDD5C9;padding-bottom:16px}
.gbt-blockkopf{font-family:'DM Mono',ui-monospace,monospace;font-size:11px;line-height:16px;letter-spacing:.14em;
  text-transform:uppercase;color:#6E6862;margin:24px 0 8px}

/* Tage des Folgemonats fuellen die letzte Zeile (nur bei einem Monat, also am
   Handy): wer am 30. September anreist, tippt die Abreise gleich daneben an,
   ohne den Pfeil zu finden. Leiser, damit klar bleibt, welcher Monat gilt. */
.gbt-gitter button.gbt-folge:not(.gbt-rand):not(.gbt-drin){opacity:.7}

/* === /tafel-mono.css === */
/* Tafel "Verfuegbarkeit pruefen" ganz in DM Mono -- Fassung M1, freigegeben von
   Michael am 19.09.2026 ("M1 ist gut"; Titel T2 "Mono + Lot" davor gewaehlt).
   Eine Stimme: Titel, Monate, Belegung und Zeitraum in gesperrten Versalien,
   11 px, wie Wochentage und Knopf.
   Das Lot vor dem Titel hat Michael am selben Tag wieder entfernt.
   Die Kleinzeilen im Kiesel ziehen mit (heller, geglaettet), INKLUSIVE bleibt
   Cormorant. [data-form] hebt die Spezifitaet ueber die Regeln in tafel.css
   und probe-tafel-milchglas.css (sonst gewinnt dort 20/25 px). Am Handy setzen
   Regeln mit [data-form="schmal"] Groessen noch spezifischer (gemessen: Titel 20,
   Zeilen 15, Zeitraum 14 px) -- darum Groesse und Zeilenhoehe mit !important. */
body .gbt-tafel[data-form] .gbt-kopf h2{font-family:"DM Mono",ui-monospace,monospace;font-weight:400;font-size:11px !important;
  line-height:16px !important;letter-spacing:.22em;text-transform:uppercase;display:flex;align-items:center;gap:14px;
  -webkit-font-smoothing:antialiased}
/* Das Lot vor dem Titel ist wieder weg (Michael 19.09.2026: "bitte das Lot entfernen"). */
body .gbt-tafel[data-form] :is(.gbt-kalname,.gbt-zeile > span,.gbt-zusammen,.gbt-blockkopf){
  font-family:"DM Mono",ui-monospace,monospace;font-size:11px !important;line-height:16px !important;font-weight:400;
  letter-spacing:.22em;text-transform:uppercase;-webkit-font-smoothing:antialiased}
body .gbt-tafel[data-form] select{font-family:"DM Mono",ui-monospace,monospace}
html[data-fein][data-typo="K1"][data-zeilen="Z1"] body .ssc .ssc-n{font-weight:400;color:#F6F2EA;-webkit-font-smoothing:antialiased}

/* === /probe-tafel-milchglas.css === */
/* ------------------------------------------------------------------
   Probe: Milchglas fuer die Tafel "Verfuegbarkeit pruefen".
   Gehoert NICHT zur Landingpage, wird nicht ausgerollt.

   Michael 17.09.2026: "Bei dem Milchglaseffekt muss der Hintergrund klar
   bleiben." Also KEIN Schleier mehr -- der dunkle Vorhang hinter der Tafel
   faellt in jeder Fassung weg, die Seite bleibt so hell und so scharf, wie
   sie ist. Unscharf wird nur, was WIRKLICH hinter der Scheibe liegt; genau
   das ist der Milchglaseffekt. Der Schleier bleibt als unsichtbare Flaeche
   bestehen, weil ein Klick daneben die Tafel schliesst.

   Geaendert wird ausschliesslich der Hintergrund. Schrift, Groessen,
   Abstaende, Raster und Bedienung bleiben, wie sie freigegeben sind.
   Ausnahme sind die Negativfassungen: dort dreht sich die Schrift ins
   Helle, sonst waere ein dunkler Grund unlesbar.

   Vorbild ist der Glas-Kopf der Menueleiste (bewegung.css):
   rgba(243,238,231,.72) mit blur(24px) saturate(.7) brightness(1.06).
   ------------------------------------------------------------------ */

/* In jeder Glasfassung: der Grund bleibt unangetastet. */
body[data-ptf] .gbt-schleier{background:transparent;
  -webkit-backdrop-filter:none;backdrop-filter:none}

@supports ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){

  /* --- 1 Dunst: die Menueleiste 1:1 --- */
  body[data-ptf="1"] .gbt-tafel{background:rgba(243,238,231,.72);
    -webkit-backdrop-filter:blur(24px) saturate(.7) brightness(1.06);
    backdrop-filter:blur(24px) saturate(.7) brightness(1.06)}

  /* --- 2 Milch: dichter, das Foto bleibt als Schemen erkennbar --- */
  body[data-ptf="2"] .gbt-tafel{background:rgba(246,242,234,.85);
    -webkit-backdrop-filter:blur(30px) saturate(.7) brightness(1.06);
    backdrop-filter:blur(30px) saturate(.7) brightness(1.06)}

  /* --- 3 Dicht: fast weiss, nur noch ein Hauch Bewegung dahinter --- */
  body[data-ptf="3"] .gbt-tafel{background:rgba(246,242,234,.93);
    -webkit-backdrop-filter:blur(40px) saturate(.65) brightness(1.08);
    backdrop-filter:blur(40px) saturate(.65) brightness(1.08)}

  /* --- 5 Negativ: exakt das Glas des freigegebenen Buchungsbalkens --- */
  body[data-ptf="5"] .gbt-tafel{background:rgba(53,48,43,.84);
    -webkit-backdrop-filter:blur(30px) saturate(.65);backdrop-filter:blur(30px) saturate(.65)}

  /* --- 6 Negativ dicht: ruhiger, und der sicherste Wert beim Lesen --- */
  body[data-ptf="6"] .gbt-tafel{background:rgba(45,41,37,.92);
    -webkit-backdrop-filter:blur(40px) saturate(.6);backdrop-filter:blur(40px) saturate(.6)}
}
/* Ohne Milchglas-Unterstuetzung bleibt die volle Flaeche stehen. */

/* Ohne Schleier traegt der Rand der Tafel die ganze Abgrenzung. */
body[data-ptf="1"] .gbt-tafel,body[data-ptf="2"] .gbt-tafel,body[data-ptf="3"] .gbt-tafel{
  box-shadow:0 40px 100px -30px rgba(38,34,30,.45),0 0 0 1px rgba(61,55,51,.10),
             inset 0 1px 0 rgba(255,255,255,.5)}

/* ==================================================================
   NEGATIV: die Tafel im selben braunen Glas wie der Buchungsbalken.
   Gemessen gegen den HELLSTEN Grund, der dahinter stehen kann (dort wird
   dunkles Glas am hellsten und die Schrift am schwaechsten), ohne Schleier:
     5  Fliesstext 7.0 · Kleinschrift 4.9
     6  Fliesstext 10.1 · Kleinschrift 7.0        (AA verlangt 4.5)
   ================================================================== */
body[data-ptf="5"], body[data-ptf="6"]{
  --pt-schrift:#F6F2EA;            /* Fliesstext und Ziffern */
  --pt-zweit:#D2CBC1;              /* BELEGUNG, Wochentage, Zusammenfassung */
  --pt-aus:rgba(246,242,234,.34);  /* vergangene, nicht waehlbare Tage */
}

body[data-ptf="5"] .gbt-tafel,
body[data-ptf="6"] .gbt-tafel{color:var(--pt-schrift);
  box-shadow:0 40px 100px -30px rgba(20,17,15,.55),inset 0 1px 0 rgba(246,242,234,.16)}
body[data-ptf="5"] .gbt-zu,        body[data-ptf="6"] .gbt-zu,
body[data-ptf="5"] .gbt-kalkopf button, body[data-ptf="6"] .gbt-kalkopf button{color:var(--pt-schrift)}
body[data-ptf="5"] .gbt-gitter span,   body[data-ptf="6"] .gbt-gitter span,
body[data-ptf="5"] .gbt-kopfzeile,     body[data-ptf="6"] .gbt-kopfzeile,
body[data-ptf="5"] .gbt-zusammen,      body[data-ptf="6"] .gbt-zusammen,
body[data-ptf="5"] .gbt-kindname,      body[data-ptf="6"] .gbt-kindname{color:var(--pt-zweit)}
body[data-ptf="5"] .gbt-kopfzeile,     body[data-ptf="6"] .gbt-kopfzeile,
body[data-ptf="5"] .gbt-zeile,         body[data-ptf="6"] .gbt-zeile,
body[data-ptf="5"] .gbt-fuss,          body[data-ptf="6"] .gbt-fuss{border-color:rgba(246,242,234,.22)}

/* Diese drei tragen eine eigene Farbe und erben nicht vom Tafelrumpf. */
body[data-ptf="5"] .gbt-kopf h2,  body[data-ptf="6"] .gbt-kopf h2,
body[data-ptf="5"] .gbt-kalname,  body[data-ptf="6"] .gbt-kalname,
body[data-ptf="5"] .gbt-zeile > span, body[data-ptf="6"] .gbt-zeile > span{color:var(--pt-schrift)}
body[data-ptf="5"] .gbt-zeile > .gbt-kindname,
body[data-ptf="6"] .gbt-zeile > .gbt-kindname{color:var(--pt-zweit)}

/* Kalender: die gewaehlten Tage drehen sich mit, damit die Auswahl weiter
   die hellste Stelle im Gitter ist -- daran erkennt man sie, nicht an der Farbe. */
body[data-ptf="5"] .gbt-gitter button,        body[data-ptf="6"] .gbt-gitter button{color:var(--pt-schrift)}
body[data-ptf="5"] .gbt-gitter button[disabled],body[data-ptf="6"] .gbt-gitter button[disabled]{color:var(--pt-aus)}
body[data-ptf="5"] .gbt-gitter button.gbt-rand,body[data-ptf="6"] .gbt-gitter button.gbt-rand{background:#F1ECE3;color:#35302B}
body[data-ptf="5"] .gbt-gitter button.gbt-drin,body[data-ptf="6"] .gbt-gitter button.gbt-drin{background:rgba(246,242,234,.20);color:var(--pt-schrift)}

/* Zaehler und Auswahl: Kanten aus Licht statt aus Tinte */
body[data-ptf="5"] .gbt-zaehler button,body[data-ptf="6"] .gbt-zaehler button,
body[data-ptf="5"] .gbt-zeile select, body[data-ptf="6"] .gbt-zeile select{border-color:rgba(246,242,234,.55);color:var(--pt-schrift)}
body[data-ptf="5"] .gbt-zaehler .gbt-wert,body[data-ptf="6"] .gbt-zaehler .gbt-wert{color:var(--pt-schrift)}
/* Die Auswahlliste selbst zeichnet das Betriebssystem -- sie bleibt hell */
body[data-ptf="5"] .gbt-zeile select option,body[data-ptf="6"] .gbt-zeile select option{color:#3D3733;background:#F3EEE7}

/* Der Hauptknopf muss der hellste Fleck der Tafel bleiben: er dreht sich um. */
body[data-ptf="5"] .gbt-knopf,body[data-ptf="6"] .gbt-knopf{background:#F1ECE3;color:#35302B;border-color:#F1ECE3}
body[data-ptf="5"] .gbt-tafel button:focus-visible,body[data-ptf="6"] .gbt-tafel button:focus-visible,
body[data-ptf="5"] .gbt-tafel select:focus-visible,body[data-ptf="6"] .gbt-tafel select:focus-visible,
body[data-ptf="5"] .gbt-tafel a:focus-visible,body[data-ptf="6"] .gbt-tafel a:focus-visible{outline-color:#F6F2EA}

@media(hover:hover){
  body[data-ptf="5"] .gbt-knopf:hover,body[data-ptf="6"] .gbt-knopf:hover{background:#FFFFFF}
  body[data-ptf="5"] .gbt-zaehler button:not([disabled]):hover,
  body[data-ptf="6"] .gbt-zaehler button:not([disabled]):hover{background:#F6F2EA;color:#35302B}
}
@media(hover:hover) and (pointer:fine){
  body[data-ptf="5"] .gbt-gitter button:not([disabled]):not(.gbt-rand):not(.gbt-drin):hover,
  body[data-ptf="6"] .gbt-gitter button:not([disabled]):not(.gbt-rand):not(.gbt-drin):hover{background:rgba(246,242,234,.12)}
}

/* ---- nur die Probe selbst, nichts davon geht spaeter mit ---- */
.pt-umschalter{position:fixed;top:12px;left:12px;z-index:9999;
  display:flex;flex-direction:column;align-items:stretch;background:#3D3733}
.pt-umschalter button{font-family:"DM Mono",ui-monospace,monospace;font-weight:500;font-size:11px;
  letter-spacing:.1em;text-transform:uppercase;padding:9px 12px;border:0;background:transparent;
  color:rgba(246,242,234,.55);cursor:pointer;text-align:left}
.pt-umschalter button[aria-pressed="true"]{background:#4a433d;color:#F6F2EA}
.pt-merk{position:fixed;top:12px;right:12px;z-index:9999;margin:0;
  max-width:52vw;text-align:right;
  font-family:"DM Mono",ui-monospace,monospace;font-size:11px;letter-spacing:.14em;
  text-transform:uppercase;color:#F6F2EA;background:rgba(61,55,51,.9);padding:8px 14px}

/* ==================================================================
   Einwilligungsleiste (Cookies) im selben Glas.
   Michael 17.09.2026: "wie bei Framer, nur in diesem Glaslook."
   Sie folgt der gewaehlten Tafel-Fassung: helle Fassungen bekommen die
   helle Scheibe, die Negativfassungen die braune. Auch hier bleibt der
   Grund klar -- unscharf wird nur, was hinter der Leiste liegt.
   Schrift, Groessen und die gleich grossen Knoepfe bleiben unveraendert:
   Ablehnen darf nicht schwerer zu treffen sein als Zustimmen.
   ================================================================== */
@supports ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
  body[data-ptf="1"] .gew,body[data-ptf="2"] .gew,body[data-ptf="3"] .gew{
    background:rgba(251,250,248,.82);border-top-color:rgba(61,55,51,.14);
    -webkit-backdrop-filter:blur(30px) saturate(.7) brightness(1.06);
    backdrop-filter:blur(30px) saturate(.7) brightness(1.06)}
  body[data-ptf="5"] .gew,body[data-ptf="6"] .gew{
    background:rgba(53,48,43,.86);border-top-color:rgba(246,242,234,.20);
    -webkit-backdrop-filter:blur(30px) saturate(.65);backdrop-filter:blur(30px) saturate(.65)}
}
/* Kehrseite der Leiste im Negativ */
body[data-ptf="5"] .gew,body[data-ptf="6"] .gew{color:#F6F2EA;
  box-shadow:0 -8px 32px rgba(20,17,15,.35)}
body[data-ptf="5"] .gew-text a,body[data-ptf="6"] .gew-text a{color:#F6F2EA}
body[data-ptf="5"] .gew-knopf,body[data-ptf="6"] .gew-knopf{
  border-color:rgba(246,242,234,.55);color:#F6F2EA;background:transparent}
body[data-ptf="5"] .gew-knopf.gew-ja,body[data-ptf="6"] .gew-knopf.gew-ja{
  background:#F1ECE3;border-color:#F1ECE3;color:#35302B}

/* ------------------------------------------------------------------
   Einwilligungsleiste, Typografie. Michael 17.09.2026: "Typo viel zu gross,
   kein Stil, wirklich haesslich." Die Leiste lief in 15 px Inter ueber die
   ganze Breite und wurde am Handy zu einem sechszeiligen Block, der lauter
   war als die Seite. Rechtstext bleibt vollstaendig, er tritt nur zurueck:
   eine Kleinzeile als Anlass, der Satz in 13 px, feste Satzbreite.
   Beide Knoepfe bleiben gleich gross und gleich auffaellig (WCAG 2.5.5,
   44 px) -- Ablehnen darf nicht schwerer zu treffen sein als Zustimmen.
   ------------------------------------------------------------------ */
body[data-ptf] .gew{padding:14px 20px calc(14px + env(safe-area-inset-bottom))}
body[data-ptf] .gew-innen{max-width:1200px;gap:14px 28px;align-items:center}
body[data-ptf] .gew-text{font-size:13px;line-height:1.42;max-width:66ch;
  letter-spacing:.004em;opacity:.92}
body[data-ptf] .gew-text a{text-underline-offset:3px;text-decoration-thickness:1px}
body[data-ptf] .gew-knopf{font-size:11px;letter-spacing:.14em;
  min-height:44px;padding:0 20px}
body[data-ptf] .gew-widerruf{font-size:11px;min-height:36px;padding:0 12px}

@media (max-width:809px){
  /* Am Handy steht der Satz oben, die Knoepfe darunter nebeneinander --
     nicht untereinander, sonst wird die Leiste hoeher als der Inhalt. */
  body[data-ptf] .gew-innen{grid-template-columns:1fr;gap:12px}
  body[data-ptf] .gew-text{font-size:12.5px;line-height:1.4}
  body[data-ptf] .gew-knoepfe{gap:8px}
  body[data-ptf] .gew-knoepfe .gew-knopf{flex:1 1 0;padding:0 8px}
}

/* ---- Cookieleiste in Abhaya Libre (Michael 17.09.2026) ----
   Abhaya Libre ist die Serife des Fussbereichs. Sie laeuft groesser als
   Inter, deshalb steht sie hier auf 14 px statt 12,5 -- gemessen gleich
   hohe Zeile, nicht gleiche Zahl. Die Knoepfe bleiben DM Mono: sie sind
   Bedienung, nicht Text. */
body[data-cookie="abhaya"] .gew-text{font-family:"Abhaya Libre",Georgia,serif;
  font-size:13.5px;line-height:1.34;letter-spacing:.002em}
@media (max-width:809px){
  body[data-cookie="abhaya"] .gew-text{font-size:13.5px;line-height:1.32}
}

.pt-cookie{position:fixed;left:12px;bottom:12px;z-index:9999;
  display:flex;background:#3D3733}
.pt-cookie button{font-family:"DM Mono",ui-monospace,monospace;font-weight:500;font-size:11px;
  letter-spacing:.1em;text-transform:uppercase;padding:9px 12px;border:0;background:transparent;
  color:rgba(246,242,234,.55);cursor:pointer}
.pt-cookie button[aria-pressed="true"]{background:#4a433d;color:#F6F2EA}

/* ------------------------------------------------------------------
   Quellenzeile unter der Karte. Michael 17.09.2026: "warum ist die
   Schrift so nah". Ursache gemessen: .nachweis traegt margin-top:-40px
   und hebt damit den Abstand der Abschnittsspalte (40 px) wieder auf --
   gemessen blieben 4 px zwischen Knopf und Text. Der negative Wert stammt
   aus einer Zeit, als der Rahmen unten Luft hatte; die hat er nicht mehr.
   ------------------------------------------------------------------ */
body[data-ptf] .nachweis{margin-top:0}

/* ---- "Abhaya Libre duenner" (Michael 17.09.2026) ----
   Abhaya Libre liegt in diesem Projekt nur in 400 und 500 vor -- 400 IST
   schon der duennste Schnitt, ueber das Gewicht geht nichts mehr. Duenner
   wirken laesst sie sich nur ueber den Ton: helles Grau statt fast Weiss
   nimmt der Serife die Fettwirkung auf dunklem Grund. Wer wirklich einen
   duenneren Schnitt will, braucht eine andere Schrift -- Cormorant Garamond
   hat 300 und liegt hier ebenfalls (wie beim Menue am 10.09.2026). */
body[data-cookie="abhaya-leise"] .gew-text{font-family:"Abhaya Libre",Georgia,serif;
  font-weight:400;font-size:13.5px;line-height:1.34;letter-spacing:.002em;opacity:1;color:#CFC8BE}
body[data-cookie="cormorant"] .gew-text{font-family:"Cormorant Garamond",Georgia,serif;
  font-weight:300;font-size:14.5px;line-height:1.28;letter-spacing:.006em;color:#E6E0D6}
@media (max-width:809px){
  body[data-cookie="abhaya-leise"] .gew-text{font-size:13.5px;line-height:1.32}
  body[data-cookie="cormorant"] .gew-text{font-size:14.5px;line-height:1.26}
}

/* ---- DM Mono (Michael 17.09.2026: "probier es auch mal mit DM Mono") ----
   Die technische Stimme des Hauses: Buchungsbalken, Kicker, Masszahlen.
   Ein Rechtshinweis passt dort hinein -- er ist Angabe, nicht Prosa.
   Monospace braucht kleine Grade und Luft zwischen den Zeilen, sonst wird
   der Block zur Mauer: 11,5 px, 1,55 Zeile, wenig Sperrung. Die Knoepfe
   stehen ohnehin in DM Mono -- Text und Bedienung sind dann eine Familie. */
body[data-cookie="mono"] .gew-text{font-family:"DM Mono",ui-monospace,monospace;
  font-weight:300;font-size:11.5px;line-height:1.55;letter-spacing:.02em;
  max-width:62ch;color:#E2DCD2}
@media (max-width:809px){
  body[data-cookie="mono"] .gew-text{font-size:11px;line-height:1.5}
}

/* ---- Bildunterschriften kleiner (Michael 17.09.2026: drei, vier Punkte) ----
   Sie teilten sich die Zeile mit .mikro, .rand dt und .nr -- alle 12 px.
   Hier faellt NUR die Bildunterschrift auf 9 px; die anderen Kleinzeilen
   bleiben, wo sie sind, sonst wandert die halbe Seite mit.
   Die Sperrung geht leicht zurueck: 0,14 em bei 9 px zieht die Versalien
   sonst weiter auseinander, als die Zeile breit ist. */
body[data-ptf] figcaption{font-size:11px;letter-spacing:.12em}
/* Kleinzeilen der Bloecke (FRUEHSTUECK, FREIRAUM, GEOEFFNET ...): im Stil der
   Bildunterschrift, nur etwas groesser (Michael 19.09.2026). Vorher 12 px --
   sie standen lauter als die Bildunterschriften daneben. */
body[data-ptf] .rand dt{font-size:11px;letter-spacing:.13em}

/* ------------------------------------------------------------------
   Fliesstext: enger und eine Spur duenner (Michael 17.09.2026).

   Zeilenabstand: 1,66 war fuer 17 px Abhaya reichlich -- der Satz zerfiel
   in Streifen. 1,52 bindet die Zeilen, ohne sie zu stapeln.

   "Duenner" geht NICHT ueber das Gewicht: Abhaya Libre liegt nur in 400
   und 500 vor, 400 ist der duennste Schnitt. Ueber die Farbe geht es auch
   nicht -- #6B635F steht bei Kontrast 5.09 auf der Cremeflaeche, eine Stufe
   heller (#746C67) faellt mit 4.46 schon durch. Wirklich duenner wird es
   nur mit einem Schnitt, den es gibt: Cormorant Garamond 300. Beides steht
   hier nebeneinander, gewaehlt wird per Schalter.
   ------------------------------------------------------------------ */
body[data-ptf] .lauf,
body[data-ptf] .kopf1 p,
body[data-ptf] .kopf2 p{line-height:1.52}

body[data-text="cormorant"] .lauf,
body[data-text="cormorant"] .kopf1 p,
body[data-text="cormorant"] .kopf2 p{font-family:"Cormorant Garamond",Georgia,serif;
  font-weight:300;font-size:19px;line-height:1.46;letter-spacing:.004em}
@media (max-width:809px){
  body[data-text="cormorant"] .lauf,
  body[data-text="cormorant"] .kopf1 p,
  body[data-text="cormorant"] .kopf2 p{font-size:18.5px}
}

.pt-text{position:fixed;right:12px;bottom:12px;z-index:9999;display:flex;background:#3D3733}
.pt-text button{font-family:"DM Mono",ui-monospace,monospace;font-weight:500;font-size:11px;
  letter-spacing:.1em;text-transform:uppercase;padding:9px 12px;border:0;background:transparent;
  color:rgba(246,242,234,.55);cursor:pointer}
.pt-text button[aria-pressed="true"]{background:#4a433d;color:#F6F2EA}

/* ==================================================================
   Cookie-Tafel ueber dem Buchungsbalken (Michael 18.09.2026, Vorlage Framer).
   Statt einer Leiste ueber die ganze Fensterbreite steht sie als Tafel
   direkt ueber dem Balken: links und rechts buendig mit ihm, 12 px Luft
   dazwischen -- sie gehoert sichtbar zum Balken, klebt aber nicht an ihm.
   Breite und Hoehe des Balkens misst probe-cookie-lage.js, weil der Balken
   seine Breite aus dem Inhalt nimmt (Datum + Knopf) und CSS allein sie
   der Tafel nicht weitergeben kann.
   Glas, Schrift und die gleich grossen Knoepfe bleiben wie gewaehlt.
   ================================================================== */
body[data-ptf] .gew{
  left:50%;right:auto;bottom:var(--gew-unten,92px);
  width:var(--gew-breite,452px);max-width:calc(100vw - 32px);
  padding:22px 26px 24px;border-top:0;
  transform:translateX(-50%) translateY(10px);opacity:0;
  transition:transform .28s cubic-bezier(.23,1,.32,1),opacity .28s cubic-bezier(.23,1,.32,1)}
body[data-ptf] .gew[data-da]{transform:translateX(-50%) translateY(0);opacity:1}
body[data-ptf] .gew-innen{display:flex;flex-direction:column;align-items:stretch;gap:14px;max-width:none}
body[data-ptf] .gew-innen::before{content:"Cookies";display:block;
  font-family:"Abhaya Libre",Georgia,serif;font-size:14px;line-height:1;
  color:rgba(246,242,234,.62);margin-bottom:-2px}
body[data-ptf] .gew-text{max-width:none}
body[data-ptf] .gew-knoepfe{display:flex;gap:10px}
body[data-ptf] .gew-knoepfe .gew-knopf{flex:1 1 0;padding:0 10px}

@media (max-width:809px){
  /* Am Handy liegt der Balken ueber die ganze Breite am unteren Rand --
     die Tafel ebenso, 8 px darueber. */
  body[data-ptf] .gew{left:0;right:0;width:auto;max-width:none;
    bottom:var(--gew-unten,64px);transform:translateY(10px)}
  body[data-ptf] .gew[data-da]{transform:translateY(0)}
}
@media (prefers-reduced-motion:reduce){
  body[data-ptf] .gew{transition:opacity .2s ease}
}

/* ---- Cookie-Tafel wie der Fliesstext, eine Spur kleiner (Michael 18.09.2026) ----
   Gemessen am Fliesstext (.lauf): Abhaya Libre 400, 17 px, Zeile 1,52,
   Sperrung normal, Kerning an. Die Tafel uebernimmt genau diese Werte,
   nur 15 px statt 17 -- vorher stand sie mit 1,34 Zeile und einer
   Zusatzsperrung eng und gedraengt, nicht wie derselbe Satz. */
body[data-cookie="abhaya-leise"] .gew-text,
body[data-cookie="abhaya"] .gew-text{font-size:15px;line-height:1.52;
  letter-spacing:normal;word-spacing:0;font-kerning:auto}
body[data-ptf] .gew-innen::before{font-size:15px;letter-spacing:normal}
@media (max-width:809px){
  body[data-cookie="abhaya-leise"] .gew-text,
  body[data-cookie="abhaya"] .gew-text{font-size:15px;line-height:1.5}
}

/* ---- "Datenschutz" wie der Satz, in dem es steht (Michael 18.09.2026) ----
   Der Link stand heller als der Text (#F6F2EA gegen #CFC8BE) und trug die
   Standard-Unterstreichung des Browsers -- zu dick fuer Abhaya in 15 px.
   Jetzt: gleiche Farbe wie der Satz, Unterstreichung in der Dicke, die die
   Schrift selbst vorgibt (from-font), mit etwas Abstand zur Grundlinie,
   damit sie die Unterlaengen nicht schneidet. */
body[data-ptf] .gew .gew-text a{color:inherit;
  text-decoration-line:underline;text-decoration-thickness:from-font;
  text-decoration-color:currentColor;text-underline-offset:.22em;text-decoration-skip-ink:auto}
body[data-ptf] .gew .gew-text a:hover{text-decoration-color:transparent}

/* ==================================================================
   Licht und Schatten auf der Tafel (Michael 18.09.2026): man soll sehen,
   dass die Tafel UEBER der Seite schwebt, und das Glas soll wie Glas
   einmal heller, einmal dunkler sein.
   Der Grund bleibt klar -- kein Schleier. Die Tiefe kommt nur aus der
   Tafel selbst: ein Schatten darunter, ein Lichtverlauf auf der Flaeche
   (oben links heller, unten rechts dunkler) und Kanten, an denen das
   Licht bricht. Der Verlauf liegt als zweite Hintergrundschicht UNTER
   der Schrift, er toent sie nicht.
   ================================================================== */
@supports ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){

  /* --- L1 Weich: sanfter Lichtverlauf, weicher Schatten in zwei Stufen --- */
  html[data-licht="L1"] body[data-ptf="5"] .gbt-tafel{
    background:linear-gradient(145deg,rgba(246,242,234,.11) 0%,rgba(246,242,234,0) 40%,
                               rgba(0,0,0,0) 60%,rgba(0,0,0,.16) 100%),rgba(53,48,43,.84);
    box-shadow:0 50px 120px -30px rgba(20,17,15,.60),0 18px 40px -20px rgba(20,17,15,.45),
               inset 0 1px 0 rgba(246,242,234,.22),inset 1px 0 0 rgba(246,242,234,.08),
               inset 0 -1px 0 rgba(0,0,0,.25)}

  /* --- L2 Kante: das Licht bricht deutlich an den Kanten -- oben und
         links eine helle Haarlinie, unten und rechts eine dunkle. --- */
  html[data-licht="L2"] body[data-ptf="5"] .gbt-tafel{
    background:linear-gradient(145deg,rgba(246,242,234,.13) 0%,rgba(246,242,234,0) 42%,
                               rgba(0,0,0,0) 58%,rgba(0,0,0,.20) 100%),rgba(53,48,43,.84);
    box-shadow:0 60px 140px -30px rgba(20,17,15,.65),0 20px 44px -18px rgba(20,17,15,.50),
               inset 0 1px 0 rgba(246,242,234,.34),inset 1px 0 0 rgba(246,242,234,.16),
               inset 0 -1px 0 rgba(0,0,0,.40),inset -1px 0 0 rgba(0,0,0,.28)}

  /* --- L3 Tief: der kraeftigste Abstand -- ein langer Schlagschatten
         und ein Verlauf, der oben fast hell wird. --- */
  html[data-licht="L3"] body[data-ptf="5"] .gbt-tafel{
    background:linear-gradient(160deg,rgba(246,242,234,.17) 0%,rgba(246,242,234,.03) 35%,
                               rgba(0,0,0,.04) 65%,rgba(0,0,0,.26) 100%),rgba(53,48,43,.84);
    box-shadow:0 80px 160px -30px rgba(15,12,10,.72),0 30px 60px -24px rgba(15,12,10,.55),
               0 2px 6px rgba(15,12,10,.25),
               inset 0 1px 0 rgba(246,242,234,.28),inset 0 -1px 0 rgba(0,0,0,.35)}
}

.pt-licht{position:fixed;right:12px;top:12px;z-index:9999;display:flex;flex-direction:column;background:#3D3733}
.pt-licht button{font-family:"DM Mono",ui-monospace,monospace;font-weight:500;font-size:11px;letter-spacing:.1em;
  text-transform:uppercase;padding:9px 12px;border:0;background:transparent;color:rgba(246,242,234,.55);cursor:pointer;text-align:left}
.pt-licht button[aria-pressed="true"]{background:#4a433d;color:#F6F2EA}

/* Tafel mittig zwischen Menueleiste und Buchungsbalken (Werte aus probe-tafel-lage.js).
   Nur top und max-height -- die Einblendung (translate/scale) bleibt wie sie ist. */
body[data-ptf] .gbt-tafel{top:var(--tafel-mitte,50%);max-height:var(--tafel-max,min(88vh,900px))}

/* Mehr Schatten unter der Tafel (Michael 18.09.2026). Drei Stufen wie ein
   echter Schlagschatten: weit und weich (Abstand), mittel (Koerper) und
   eine enge Kontaktkante direkt darunter, damit die Tafel sichtbar ueber
   der Seite liegt. Lichtverlauf und Kanten von L1 bleiben. */
@supports ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
  html[data-licht="L1"] body[data-ptf="5"] .gbt-tafel{
    /* "Doch etwas weniger Schatten" (Michael 18.09.2026): etwa halb zwischen
       dem alten L1 und der starken Fassung davor (80/.72, 34/.58, 6/.30) */
    box-shadow:0 64px 140px -30px rgba(15,12,10,.60),
               0 26px 54px -22px rgba(15,12,10,.46),
               0 4px 12px -4px rgba(15,12,10,.22),
               inset 0 1px 0 rgba(246,242,234,.22),inset 1px 0 0 rgba(246,242,234,.08),
               inset 0 -1px 0 rgba(0,0,0,.25)}
}

/* ==================================================================
   Cookie-Tafel in hellem Glas (Michael 18.09.2026: "Mach aus Abbildung
   eins eine helle Glasversion, so wie Abbildung zwei. Das Design von
   Abbildung eins beibehalten.") Gleiche Lage, Schrift, Groessen und
   gleich grosse Knoepfe -- nur die Scheibe wird hell wie die Framer-Leiste,
   die Schrift dunkel, und "Ja, gerne" wird der dunkle Knopf.
   Schalter: body[data-gew="hell"]. Ohne Attribut bleibt die dunkle Tafel.
   ================================================================== */
@supports ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
  body[data-ptf][data-gew="hell"] .gew{
    background:rgba(246,243,238,.84);
    -webkit-backdrop-filter:blur(30px) saturate(.7) brightness(1.06);
    backdrop-filter:blur(30px) saturate(.7) brightness(1.06)}
}
/* Ohne Milchglas: volle Flaeche, sonst liest man das Foto durch den Text */
body[data-ptf][data-gew="hell"] .gew{background-color:rgba(246,243,238,.97);color:#35302B;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.7),0 -8px 32px rgba(20,17,15,.18)}
@supports ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
  body[data-ptf][data-gew="hell"] .gew{background-color:rgba(246,243,238,.84)}
}
body[data-ptf][data-gew="hell"] .gew-innen::before{color:#6B635F}
body[data-ptf][data-gew="hell"][data-cookie] .gew-text{color:#4A433D}
body[data-ptf][data-gew="hell"] .gew .gew-text a{color:inherit}
body[data-ptf][data-gew="hell"] .gew-knopf{
  background:transparent;border-color:rgba(53,48,43,.72);color:#35302B}
body[data-ptf][data-gew="hell"] .gew-knopf.gew-ja{
  background:#35302B;border-color:#35302B;color:#F6F2EA}
body[data-ptf][data-gew="hell"] .gew-knopf:focus-visible{outline-color:#35302B}
/* Helle Tafel im Design der Framer-Leiste (Michael 18.09.2026: "Uebernimm das
   Design doch von Bild eins"): Knoepfe in Abhaya Libre, normal geschrieben statt
   Versal-Mono, hoeher und ruhiger; Rahmen 1 px in Tinte; feine Haarlinie um die
   Tafel; mehr Luft innen. Die Framer-Leiste hat drei Knoepfe -- "Cookies
   verwalten" kommt nicht dazu, weil es hier nichts zu verwalten gibt (nur Google). */
body[data-ptf][data-gew="hell"] .gew{padding:30px 32px 32px;
  outline:1px solid rgba(53,48,43,.10);outline-offset:-1px}
body[data-ptf][data-gew="hell"] .gew-innen{gap:16px}
body[data-ptf][data-gew="hell"] .gew-knoepfe{gap:12px;margin-top:4px}
body[data-ptf][data-gew="hell"] .gew-knopf{font-family:"Abhaya Libre",Georgia,serif;font-weight:400;
  font-size:16px;letter-spacing:.01em;text-transform:none;min-height:52px;
  border:1px solid #35302B}
body[data-ptf][data-gew="hell"] .gew-knopf:hover{opacity:1;background:rgba(53,48,43,.06)}
body[data-ptf][data-gew="hell"] .gew-knopf.gew-ja:hover{background:#4A433D}
@media (max-width:809px){
  body[data-ptf][data-gew="hell"] .gew{padding:22px 20px 24px}
  body[data-ptf][data-gew="hell"] .gew-knopf{min-height:48px;font-size:15px}
}

/* Cookie-Tafel ruhiger und grosszuegiger (Michael 18.09.2026). Ein Versuch
   mit 600 px Breite wurde verworfen ("sieht chaotisch aus") -- die Tafel
   bleibt so breit wie der Balken. Statt dessen: Schrift einen Punkt kleiner
   (15 -> 14 px), mehr Zeilenabstand, mehr Innenrand und mehr Luft zwischen
   Kleinzeile, Satz und Knoepfen. */
body[data-ptf] .gew{padding:30px 32px 32px}
body[data-ptf] .gew-innen{gap:20px}
body[data-ptf] .gew-innen::before{font-size:14px;margin-bottom:-6px}
body[data-cookie="abhaya-leise"] .gew-text,
body[data-cookie="abhaya"] .gew-text{font-size:14px;line-height:1.64}
body[data-ptf] .gew-knoepfe{gap:12px;margin-top:4px}
@media (max-width:809px){
  body[data-ptf] .gew{padding:24px 20px 24px}
  body[data-ptf] .gew-innen{gap:16px}
  body[data-cookie="abhaya-leise"] .gew-text,
  body[data-cookie="abhaya"] .gew-text{font-size:14px;line-height:1.6}
}

/* Tafel im Ton des Kiesels (Michael 18.09.2026: "Vorschauvariante, dass der
   Kalender die gleiche Farbe wie 'Alle elf Bergbahnen inklusive' hat").
   Kiesel: 92 % #35302B, 36 px Unschaerfe, Saettigung .65, kein Verlauf.
   Die Tafel hatte 84 % mit hellem Verlauf oben links (L1) -- darum wirkte
   sie heller und bunter. Schalter: body[data-tafelfarbe="kiesel"]. */
@supports ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
  html body[data-tafelfarbe="kiesel"][data-ptf="5"] .gbt-tafel{
    background:rgba(53,48,43,.92);
    -webkit-backdrop-filter:blur(36px) saturate(.65);backdrop-filter:blur(36px) saturate(.65)}
}

/* Zwischentage in Beige/Ocker (Michael 18.09.2026: "Farben schoener, in einem
   Beige, Ocker die Zwischentage"). Bisher neutral-grau (20 % Weiss).
   Kontrast der Tagesziffer #F6F2EA gerechnet gegen den ungünstigsten Grund
   (weisses Foto hinter 92 % Glas): Beige 4.5, Ocker 4.9, Honig 4.9 -- alle
   halten AA. Schalter: body[data-zwischen]. */
body[data-ptf="5"][data-zwischen="beige"] .gbt-gitter button.gbt-drin{background:rgba(221,208,189,.32);color:#F6F2EA}
body[data-ptf="5"][data-zwischen="ocker"] .gbt-gitter button.gbt-drin{background:rgba(190,146,82,.45);color:#FBF6EE}
body[data-ptf="5"][data-zwischen="honig"] .gbt-gitter button.gbt-drin{background:rgba(214,178,120,.34);color:#FBF6EE}

/* ==================================================================
   KALENDER AM HANDY: ALLES IN EIN FENSTER (Michael 18.09.2026: "Ich
   moechte, dass das im Fenster Platz hat ... ein Monat, darunter die
   Belegung, dann von wann bis wann und Verfuegbarkeit pruefen ... zentriert,
   oben und unten gleich viel Abstand ... den braunen Knopf brauchen wir
   dann nicht, ich brauche nicht zwei Verfuegbarkeit-Knoepfe").
   Gemessen vorher bei 390 x 700: Inhalt 755 px hoch, sichtbar 616 --
   Monatsname und erste Woche waren weggescrollt.
   Jetzt: Titel kleiner, Tagesfeld 36 px, alles auf EINER mittigen Spalte
   (7 Tagesfelder breit), Abstaende halbiert, Knopf so breit wie die Spalte.
   ================================================================== */
body[data-ptf] .gbt-tafel[data-form="schmal"]{--p:20px;--zelle:36px !important}   /* buchen.js setzt --zelle inline (40) -- !important schlaegt das */
body[data-ptf] .gbt-tafel[data-form="schmal"] .gbt-kopf,
body[data-ptf] .gbt-tafel[data-form="schmal"] .gbt-rumpf{
  padding-left:max(20px, calc((100% - 7 * var(--zelle)) / 2));
  padding-right:max(20px, calc((100% - 7 * var(--zelle)) / 2))}
body[data-ptf] .gbt-tafel[data-form="schmal"] .gbt-kopf{padding-top:20px;padding-bottom:12px}
body[data-ptf] .gbt-tafel[data-form="schmal"] .gbt-kopf h2{font-size:20px;line-height:26px}
body[data-ptf] .gbt-tafel[data-form="schmal"] .gbt-rumpf{padding-bottom:22px}
body[data-ptf] .gbt-tafel[data-form="schmal"] .gbt-satz{gap:18px;justify-content:center}
body[data-ptf] .gbt-tafel[data-form="schmal"] .gbt-kalkopf{margin-bottom:6px}
body[data-ptf] .gbt-tafel[data-form="schmal"] .gbt-gitter span{height:20px}
body[data-ptf] .gbt-tafel[data-form="schmal"] .gbt-kopfzeile{margin-bottom:4px;padding-bottom:6px}
body[data-ptf] .gbt-tafel[data-form="schmal"] .gbt-zeile{margin-top:6px}
body[data-ptf] .gbt-tafel[data-form="schmal"] .gbt-zeile > span{font-size:15px}
body[data-ptf] .gbt-tafel[data-form="schmal"] .gbt-fuss{display:flex;flex-direction:column;align-items:stretch;
  gap:12px;margin-top:18px;padding-top:14px}
body[data-ptf] .gbt-tafel[data-form="schmal"] .gbt-zusammen{text-align:center;font-size:14px}
body[data-ptf] .gbt-tafel[data-form="schmal"] .gbt-knopf{width:100%;justify-content:center;text-align:center}

/* Ist die Tafel offen, gibt es nur EINEN Verfuegbarkeit-Knopf: der braune
   Balken und das Cookie-Kaestchen treten zurueck. */
body:has(.gbt-tafel.da) .klebeleiste{opacity:0;pointer-events:none;transition:opacity .2s ease}
@media (max-width:809px){
  body:has(.gbt-tafel.da) .gew-widerruf{display:none}
}
/* Cookie-Knopf im Fussbereich (Handy): eine Textzeile wie die Fusslinks */
body .gew-widerruf.gew-widerruf-fuss{position:static;display:inline-block;margin:0;padding:0;min-height:0;
  border:0;background:none;box-shadow:none;font:inherit;color:inherit;text-decoration:none;
  cursor:pointer;justify-self:center;
  text-transform:none;letter-spacing:normal}
/* Am Handy steht die Tafel mitten im GANZEN Fenster -- der Balken ist bei
   offener Tafel weg, es gibt nichts mehr, zwischen dem sie stehen muesste.
   16 px Luft oben und unten, gemessen gegen die sichtbare Hoehe (dvh). */
body[data-ptf] .gbt-tafel[data-form="schmal"]{top:50%;max-height:calc(100dvh - 32px)}
body[data-ptf] .gbt-tafel[data-form="schmal"] .gbt-satz{gap:14px}
body[data-ptf] .gbt-tafel[data-form="schmal"] .gbt-fuss{margin-top:14px;padding-top:12px;gap:10px}
body[data-ptf] .gbt-tafel[data-form="schmal"] .gbt-knopf{min-height:44px;height:44px}
body[data-ptf] .gbt-tafel[data-form="schmal"] .gbt-rumpf{padding-bottom:18px}
@media (max-height:700px){
  body[data-ptf] .gbt-tafel[data-form="schmal"]{--zelle:34px !important}
  body[data-ptf] .gbt-tafel[data-form="schmal"] .gbt-kopf{padding-top:16px;padding-bottom:8px}
}

/* Handy: Buchungsbalken und Bewertungen auf die Kante der Seite
   (Michael 18.09.2026: "rechts und links rein, zentriert ... eleganter").
   Der Balken lief von Kante zu Kante (0 px), der Text der Seite steht bei
   20 px -- jetzt steht auch der Balken auf 20 px und schwebt 12 px ueber
   dem Rand. Die Cookie-Tafel darueber folgt derselben Breite. */
@media (max-width:809px){
  .klebeleiste{left:20px;right:20px;bottom:calc(12px + env(safe-area-inset-bottom))}
  body[data-ptf] .gew{left:20px;right:20px;width:auto}
  /* Bewertungen: links stand der Text an der Kante, rechts blieb viel Luft.
     Mittig gesetzt stehen beide Spalten gleich weit von ihrem Rand. */
  .bewertungen{gap:36px 16px}
  .bewertungen .bw{align-items:center;text-align:center}
  .bewertungen .bwzahl span{margin-left:6px}
}

/* ==================================================================
   HANDY, RUNDE 2 (Michael 18.09.2026: "eleganter, grosszuegiger ... unter
   der Grafik fast kein Abstand, dann so grosse Abstaende ... rechts und
   links gleich viel Abstand").
   Ein Mass fuer alle Abstaende der Tafel: --luft waechst mit der Fenster-
   hoehe (12 px bei 664, 24 px ab ~820), damit die Tafel auf kleinen
   Handys passt und auf grossen grosszuegig wird. Vorher: 14 px unter dem
   Kalender, aber 10 + 12 + 44 px um den Knopf -- ungleich.
   ================================================================== */
body[data-ptf] .gbt-tafel[data-form="schmal"]{--luft:clamp(12px, calc((100dvh - 600px) / 9), 24px)}
body[data-ptf] .gbt-tafel[data-form="schmal"] .gbt-kopf{padding-top:calc(var(--luft) + 8px);padding-bottom:var(--luft)}
body[data-ptf] .gbt-tafel[data-form="schmal"] .gbt-satz{gap:calc(var(--luft) + 4px)}
body[data-ptf] .gbt-tafel[data-form="schmal"] .gbt-fuss{margin-top:calc(var(--luft) + 4px);padding-top:var(--luft);gap:var(--luft)}
body[data-ptf] .gbt-tafel[data-form="schmal"] .gbt-fuss > *{margin:0}
body[data-ptf] .gbt-tafel[data-form="schmal"] .gbt-rumpf{padding-bottom:calc(var(--luft) + 8px)}

@media (max-width:809px){
  /* Buchungsformular: gleich weit eingerueckt wie der Text der Inklusive-
     Punkte darueber (32 px), links UND rechts -- vorher stand es auf der
     Seitenkante, die Punkte darueber nicht. */
  .buchform{margin-left:32px;margin-right:32px}
  /* Bewertungen: linksbuendig, aber der Block als Ganzes mittig -- vom
     ersten Wort links bis zum Rand gleich weit wie vom letzten Wort rechts */
  .bewertungen{grid-template-columns:repeat(2,max-content);justify-content:center;gap:36px 44px;padding-bottom:40px}
  .bewertungen .bw{align-items:flex-start;text-align:left}
}
/* Handy: Balken und Cookie-Tafel auf den Satzspiegel (Werte aus probe-cookie-lage.js) */
@media (max-width:809px){
  .klebeleiste{left:var(--satz-links,20px);right:var(--satz-rechts,20px)}
  /* Michael 20.09.2026: Balken ueber die ganze Bildbreite, "Verfuegbarkeit pruefen" in der
     optischen Mitte des GANZEN Balkens; das Chat-Zeichen liegt rechts darueber, nimmt keinen Platz. */
  body.mit-chat .klebeleiste{right:var(--satz-rechts,20px)}
  .klebeleiste .buchbar{position:relative}
  .klebeleiste .buchbar .buchtext{padding:20px 0}
  .klebeleiste .buchbar>.trenn:nth-of-type(2){display:none}
  .klebeleiste .buchbar .cg-bar{position:absolute;right:0;top:0;bottom:0}
  body[data-ptf] .gew{left:var(--satz-links,20px);right:var(--satz-rechts,20px)}
}

/* === /tafel-fein.css === */
/* Tafel eins, verfeinert -- EINGEBAUT am 30.09.2026.
   Michael: "Tafel eins auf jeden Fall besser. Wir nehmen Tafel eins und
   verfeinern es noch. Mache es schoener und etwas spektakulaer." Danach, nach
   der Vorschau: "das wird die neue neu.hotel-gebhard.at Seite."

   Dieses Blatt MUSS nach tafel.css, tafel-mono.css und probe-tafel-milchglas.css
   geladen werden -- es korrigiert Werte, die dort stehen.

   Tafel eins ist die laufende Fassung in DM Mono (Fassung M1, von Michael am
   19.09.2026 freigegeben). Die Schrift wird NICHT angetastet -- weder Familie
   noch Grad. Verfeinert wird alles, was darum herum passiert.

   WAS GEAENDERT WIRD, und warum:

   1. EINE SPERRUNG STATT DREI. Gemessen an der laufenden Tafel: Titel, Monat
      und Zeilen stehen auf 0,22 em, die Wochentage auf 0,10 em, der Knopf auf
      0,14 em. Drei Werte auf demselben Grad (11 px) sind ein Versehen, kein
      Entwurf. Alles auf 0,22 em; nur die Tageszahlen bleiben ungesperrt, weil
      Ziffern sonst nicht mehr fluchten.

   2. HAARLINIE UNTER DEM TITEL. Der Kopf steht heute frei ueber dem Inhalt.
      Eine 1-px-Linie ueber die volle Breite bindet ihn an die Tafel, ohne ein
      einziges Zeichen zu aendern.

   3. DER ZEITRAUM WAECHST. Bisher erscheint die gewaehlte Spanne schlagartig.
      Jetzt faehrt sie von links auf (clip-path, 260 ms, eigene Kurve): man
      sieht, dass man eine Strecke gewaehlt hat, nicht vier einzelne Tage.

   4. DER MONATSWECHSEL GLEITET. Das Gitter kommt beim Blaettern 10 px von
      unten und blendet auf (200 ms, ease-out). Ohne das springt der ganze
      Monat hart um.

   5. TAGE ANTWORTEN AUF DIE MAUS. Heute passiert beim Ueberfahren nichts.
      Jetzt legt sich eine feine Kontur um die Zelle -- keine Fuellung, die
      mit der Auswahlfarbe verwechselt werden koennte.

   6. DER GEWAEHLTE TAG SETZT SICH. Beim Klick kurz auf 94 %% und zurueck
      (160 ms): die Tafel bestaetigt den Griff, wie ein Knopf, der nachgibt.

   7. FOKUS IST SICHTBAR. Wer mit der Tastatur geht, sieht bisher nichts.
      Jetzt ein 1-px-Rahmen mit 2 px Abstand -- dieselbe Sprache wie Punkt 5.

   Alle Bewegungen halten sich an prefers-reduced-motion. Keine dauert laenger
   als 260 ms; nichts laeuft von selbst.                                      */

/* ---------- 1. Eine Sperrung ---------- */
/* !important, weil spaetere Blaetter (probe-tafel-milchglas.css, tafel.css in
   @media-Bloecken) eigene Werte setzen: gemessen standen Monat und Knopf auf
   0,12 bzw. 0,16 em, obwohl tafel-mono.css 0,22 em schreibt. */
body .gbt-tafel[data-form] .gbt-gitter span,
body .gbt-tafel[data-form] .gbt-kalname,
body .gbt-tafel[data-form] .gbt-zeile > span,
body .gbt-tafel[data-form] .gbt-kopfzeile,
body .gbt-tafel[data-form] .gbt-knopf {
  letter-spacing: .22em !important;
}
/* Die Sperrung schiebt die Zeile nach links; der Einzug holt sie zurueck in
   die optische Mitte. Ohne ihn steht jedes gesperrte Wort zu weit links. */
body .gbt-tafel[data-form] .gbt-gitter span { text-indent: .22em; }
body .gbt-tafel[data-form] .gbt-knopf { text-indent: .22em; }

/* ---------- 2. Haarlinie unter dem Titel ---------- */
.gbt-tafel[data-form] .gbt-kopf {
  border-bottom: 1px solid rgba(61,55,51,.14);
  margin-bottom: 32px;
  padding-bottom: 24px;
}

/* ---------- 3. Der Zeitraum waechst von links ---------- */
.gbt-gitter button.gbt-drin {
  animation: gbt-spanne 260ms cubic-bezier(.32,.72,0,1) both;
}
@keyframes gbt-spanne {
  from { clip-path: inset(0 100% 0 0); }
  to   { clip-path: inset(0 0 0 0); }
}

/* ---------- 4. Monatswechsel gleitet ---------- */
.gbt-gitter { animation: gbt-monat 200ms cubic-bezier(.23,1,.32,1) both; }
@keyframes gbt-monat {
  from { opacity: 0; transform: translate3d(0,10px,0); }
  to   { opacity: 1; transform: translate3d(0,0,0); }
}

/* ---------- 5. Tage antworten auf die Maus ----------
   Kontur statt Fuellung: eine Fuellung waere von der Auswahl nicht zu
   unterscheiden. Der Innenschatten bleibt innerhalb der Zelle, damit das
   Raster nicht um einen Pixel wandert. */
@media (hover: hover) and (pointer: fine) {
  .gbt-gitter button:not([disabled]):not(.gbt-rand):hover {
    box-shadow: inset 0 0 0 1px rgba(61,55,51,.38);
  }
  .gbt-gitter button.gbt-rand:hover { box-shadow: inset 0 0 0 1px rgba(246,242,234,.45); }
}

/* ---------- 6. Der gewaehlte Tag setzt sich ---------- */
.gbt-gitter button.gbt-rand { animation: gbt-griff 160ms cubic-bezier(.23,1,.32,1) both; }
@keyframes gbt-griff {
  from { transform: scale(.94); }
  to   { transform: scale(1); }
}
.gbt-gitter button { transition: box-shadow 120ms ease-out; }

/* ---------- 7. Fokus sichtbar ---------- */
.gbt-tafel button:focus-visible,
.gbt-tafel select:focus-visible {
  outline: 1px solid #3D3733;
  outline-offset: 2px;
}

/* ---------- 8. Zaehler: der Wert wechselt, er springt nicht ----------
   Das Plus und das Minus bekommen dieselbe Antwort wie die Tage: eine kurze
   Verkleinerung beim Druck. 97 %% ist die Hausgroesse fuer gedrueckte Knoepfe. */
.gbt-zaehler button { transition: transform 120ms ease-out, background-color 120ms ease-out, color 120ms ease-out; }
.gbt-zaehler button:active:not([disabled]) { transform: scale(.94); }
.gbt-knopf { transition: transform 120ms ease-out, background-color 120ms ease-out; }
.gbt-knopf:active { transform: scale(.985); }

/* ---------- 9. Die Tafel kommt eine Spur weicher ----------
   Der Schatten wird tiefer und weiter: die Tafel schwebt deutlicher ueber der
   Seite, statt aufgeklebt zu wirken. Werte in der Groessenordnung der
   Hausschatten, nur eine Stufe grosszuegiger. */
.gbt-tafel {
  box-shadow: 0 60px 140px -40px rgba(38,34,30,.55),
              0 12px 32px -12px rgba(38,34,30,.28) !important;
}

@media (prefers-reduced-motion: reduce) {
  .gbt-gitter,
  .gbt-gitter button.gbt-drin,
  .gbt-gitter button.gbt-rand { animation: none !important; }
  .gbt-zaehler button, .gbt-knopf, .gbt-gitter button { transition: none !important; }
}

/* ===== 10. Bot-Zeichen groesser, Klebeleiste lesbarer (30.09.2026) =======
   Michael: "das Logo vom Bot ist zu klein" -- und zur Buchungsleiste unten:
   "Schrift und Icon vom Bot etwas groesser."

   Gemessen vorher: das Zeichen ist eine 20 x 20 px grosse Maske auf einem
   56 x 56 px (Tafel) bzw. 72 x 64 px (Leiste) grossen Knopf; die Leiste traegt
   Datum und Text in 10,5 px. In einem 64 px hohen Balken ist das die kleinste
   Schrift der ganzen Seite.

   Neu: Zeichen 26 px (Tafel) und 28 px (Leiste), Schrift der Leiste 12 px.
   Die Sperrung bleibt bei 0,14 em -- sie waechst mit der Schrift mit, weil sie
   in em steht. */
/* !important und html-Praefix: chat-glas.css setzt die Maskengroesse weiter
   unten noch dreimal nach (Zeilen 605, 850, 957 -- gemessen kamen sonst 15 bzw.
   20 px heraus statt der gewuenschten 26). */
/* flex/min-width dazu: der Knopf ist ein Flexkasten, und das Pseudoelement
   schrumpfte darin auf 15 px, obwohl width 26 px stand (gemessen bei 1440 und
   1100 px, wo die Tafel data-form="breit" traegt). */
html .cg-ruf::before, html .buchbar .cg-bar::before {
  width: 26px !important; height: 26px !important;
  min-width: 26px !important; min-height: 26px !important; flex: 0 0 auto !important;
}
html .buchbar .cg-bar::before { width: 28px !important; height: 28px !important; min-width: 28px !important; min-height: 28px !important; }
/* Der Knopf im Fuss der Tafel traegt eine eigene Klasse; ohne sie blieb er in
   der breiten Fassung auf 15 px (gemessen bei 1440 und 1100 px). */
html .cg-ruf-fuss::before { width: 26px !important; height: 26px !important; }
html .klebeleiste .buchbar .datum,
html .klebeleiste .buchbar .buchtext { font-size: 12px; }

/* ===== 11. Die Tafel klebt nicht mehr am Fensterrand ====================
   Michael: "Die Raender rechts und links muessen nicht auf der Seite kleben.
   Erst bei Breakpoint mobil."
   Gemessen vorher: bei 1100 px blieben 18 px Rand, bei 760 und 600 px je
   16 px. Die Breite stand auf min(1040px, 100vw - 48px).
   Jetzt 128 px Gesamtabzug, also mindestens 64 px je Seite -- unterhalb von
   760 px (der Handy-Haltepunkt des Hauses) bleibt es bei den alten 16 px. */
@media (min-width: 761px) {
  /* html body und !important, weil der "Feinschliff der Breiten" in
     chat-glas.css eigene Breiten je Fensterbreite setzt. */
  html body .gbt-tafel { width: min(1040px, calc(100vw - 128px)) !important; }
}

/* ===== 12. Der Knopf liegt auf den Kanten der Belegung (30.09.2026) ======
   Michael: "Mach den Button in vertikalen Linien gleich breit. Rechts das Ende
   von dem Plus-Kaestchen und links der Anfang von der Schrift."

   Gemessen bei 1440 px (Tafel in der breiten Fassung): das Etikett ERWACHSENE
   beginnt bei 912, das Plus endet bei 1192 -- die Belegungsspalte ist also
   280 px breit (7 Zellen zu 40 px). Das Knopfpaar stand bei 926 bis 1168 und
   lag damit auf keiner der beiden Kanten.
   In der schmalen Fassung stimmte es schon (gemessen 268 bis 632 gegen 268 und
   632); dort aendert sich nichts. */
@media (min-width: 761px) {
  /* Beim Nachmessen kam ein Fehler im Bestand heraus: die Belegungsspalte lief
     24 px ueber den Satz hinaus (Satz 272 bis 1168, Belegung 912 bis 1192).
     Rechnung: zwei Monate zu 280 px plus 48 px Rinne plus 280 px Belegung sind
     936 px, der Innenraum bot bei 72 px Polster aber nur 896. Das Polster geht
     deshalb auf 52 px; dann passt die Zeile genau, und Satz, Belegung und Fuss
     enden auf derselben Kante. */
  html body .gbt-tafel[data-form="breit"] .gbt-rumpf { padding-inline: 52px !important; }
  html body .gbt-tafel[data-form="breit"] .gbt-kopf  { padding-inline: 52px !important; }
  html body .gbt-tafel[data-form="breit"] .gbt-fuss .cg-knopfpaar {
    width: calc(7 * var(--zelle)) !important;
    margin-left: auto !important;
  }
}

/* Zwischen 761 und 1239 px ist die Tafel schmaler als 1040 px (sie haelt 64 px
   Rand je Seite frei). Bei 1100 px blieben 868 px Innenraum, gebraucht werden
   936 -- die Belegung lief wieder 52 px hinaus. Darum dort eine engere Rinne
   und ein kleineres Polster: 280 + 32 + 280 + 32 + 280 = 904, plus 2 x 32
   Polster = 968, und die Tafel ist dort 972 px breit. */
@media (min-width: 761px) and (max-width: 1239px) {
  html body .gbt-tafel[data-form="breit"] { --g: 32px; }
  html body .gbt-tafel[data-form="breit"] .gbt-rumpf,
  html body .gbt-tafel[data-form="breit"] .gbt-kopf { padding-inline: 32px !important; }
}

/* Die Belegung sitzt immer an der rechten Innenkante, nicht "irgendwo im
   verbleibenden Platz": space-between verteilt einen Rest von wenigen Pixeln
   zwischen Kalender und Belegung, und der Knopf darunter stand dann um genau
   diesen Rest daneben (gemessen 12 px bei 1100 px Fensterbreite). */
@media (min-width: 761px) {
  html body .gbt-tafel[data-form="breit"] .gbt-satz {
    justify-content: end !important;
  }
}

/* ===== 13. Tafeltitel in Inter (30.09.2026) ==============================
   Michael hat aus drei Schriften Inter gewaehlt, dann: "Inter nicht so dick."

   Gemessen, warum es dick aussah: die Vorschau stand auf font-weight 600 --
   diesen Schnitt gibt es im Haus gar nicht. Vorhanden sind 300, 400 und 500;
   den Rest hat der Browser selbst fett gerechnet, und eine gefaelschte Fettung
   ist immer plump. Jetzt 400, der echte Schnitt.

   19 px mit 0,16 em: kleine Versalien brauchen Sperrung, aber weniger als die
   0,22 em der Mono-Zeilen -- Inter ist breiter gebaut als DM Mono. */
html body .gbt-tafel[data-form] .gbt-kopf h2 {
  font-family: Inter, system-ui, sans-serif !important;
  font-weight: 400 !important;
  font-size: 19px !important;
  line-height: 32px !important;
  letter-spacing: .16em !important;
  text-transform: uppercase;
  -webkit-font-smoothing: antialiased;
}

/* Belegung und Knopf enden auf derselben Kante ===========================
   Michael 01.10.2026: "Der Knopf Verfuegbarkeit soll so breit sein wie die
   Belegung darueber, damit es links und rechts abschliesst."
   Gemessen bei 1024 px: der Satz endete bei 928, der Knopf ebenfalls, die
   Belegung aber schon bei 900 -- 28 px davor. justify-content: end am Satz
   allein hat sie nicht ans Ende geschoben, weil sie eine feste Breite hat
   (7 Zellen). Darum schiebt sie der automatische linke Rand selbst dorthin. */
@media (min-width: 761px) {
  html body .gbt-tafel[data-form="breit"] [data-bel] { margin-left: auto !important; }
}

/* === /tafel-deckend.css === */
/* Vorschau: helle Buchungstafel OHNE Transparenz (24.09.2026, Michael:
   "mach mir eine Vorschau auch ohne Transparenz zuerst").

     ?deckend=1   volle Creme-Flaeche #F3EEE7
     ?deckend=2   Papierweiss #FBF8F3
     ohne Angabe  die Glasfassung aus chat-glas.css

   WARUM HIER ALLE FARBEN STEHEN und nicht nur der Hintergrund:
   In probe-tafel-milchglas.css steht der DUNKLE Grund von data-ptf="5" INNEN
   in einem @supports-Block, die dazu passenden HELLEN Schriftfarben aber
   AUSSERHALB (19 Regeln, gemessen 24.09.2026). Wer also nur den Hintergrund
   aufhellt, bekommt cremefarbene Schrift auf cremefarbenem Grund -- genau der
   Zustand, den Michael als "nicht fertig" gemeldet hat. Diese Fassung ist
   deshalb in sich vollstaendig: Grund UND Schrift UND Raender UND Knoepfe. */

html[data-deckend="1"][data-tafel] body[data-ptf] .gbt-tafel{
  background:#F3EEE7 !important;
  -webkit-backdrop-filter:none !important;backdrop-filter:none !important;
  box-shadow:0 0 0 1px rgba(53,48,43,.12),0 40px 90px -30px rgba(16,13,11,.40) !important}
html[data-deckend="2"][data-tafel] body[data-ptf] .gbt-tafel{
  background:#FBF8F3 !important;
  -webkit-backdrop-filter:none !important;backdrop-filter:none !important;
  box-shadow:0 0 0 1px rgba(53,48,43,.14),0 40px 90px -30px rgba(16,13,11,.42) !important}

/* Schrift und Linien fuer BEIDE deckenden Fassungen */
   /* TONWERTSTAFFEL statt Einheitsschwarz (Michael 24.09.2026: "die Schrift
      etwas feiner mit den Abstufungen"). Vier Stufen, alle gegen Creme
      #F3EEE7 gerechnet -- der Mindestkontrast 4,5 gilt auch fuer die
      feinste Stufe, sonst waere es nur huebsch und nicht lesbar:
        #211F1E  14,2   Zimmername im Kalenderkopf, die Datumswerte
        #35302B  11,4   Monatsnamen, waehlbare Tage
        #6E6862   4,9   Etiketten, Wochentagskuerzel, Zusammenfassung
        rgba(33,31,30,.28)  vergangene Tage, nicht bedienbar
      Gewicht: 300 statt 400, wo die Schrift es hergibt. */
html[data-deckend][data-tafel] body[data-ptf] .gbt-tafel{--pt-schrift:#211F1E;--pt-zweit:#6E6862;--pt-aus:rgba(33,31,30,.28);
  color:#35302B !important}
/* 1 Ueberschrift: fein und offen gesperrt */
html[data-deckend] body .gbt-kopf h2{color:#211F1E !important;font-weight:300 !important}
/* 2 Monatsnamen und waehlbare Tage */
html[data-deckend] body .gbt-kalname,
html[data-deckend] body .gbt-gitter button,
html[data-deckend] body .gbt-kalkopf button{color:#35302B !important;font-weight:300 !important}
/* 3 Etiketten, Wochentage, Zusammenfassung */
html[data-deckend] body .gbt-gitter span,
html[data-deckend] body .gbt-kopfzeile,
html[data-deckend] body .gbt-zusammen,
html[data-deckend] body .gbt-kindname,
html[data-deckend] body .gbt-zeile > span{color:#6E6862 !important;font-weight:400 !important}
/* 4 vergangene Tage */
html[data-deckend] body .gbt-gitter button[disabled]{color:rgba(33,31,30,.28) !important}
/* Werte der Belegung bleiben kraeftig, sie sind die Zahl, die zaehlt */
html[data-deckend] body .gbt-zaehler .gbt-wert{color:#211F1E !important;font-weight:300 !important}

html[data-deckend] body .gbt-kopfzeile,
html[data-deckend] body .gbt-zeile,
html[data-deckend] body .gbt-fuss{border-color:rgba(58,52,47,.18) !important}
html[data-deckend] body .gbt-gitter button.gbt-rand{background:#3D3733 !important;color:#F6F2EA !important}
html[data-deckend] body .gbt-gitter button.gbt-drin{background:rgba(58,52,47,.14) !important;color:#211F1E !important}
html[data-deckend] body .gbt-zaehler button,
html[data-deckend] body .gbt-zeile select{border-color:rgba(58,52,47,.38) !important;color:#211F1E !important}
/* Knopf und Chat-Anbau: dunkel auf hellem Grund */
html[data-deckend] body .gbt-knopf{background:#3D3733 !important;color:#F6F2EA !important;border-color:#3D3733 !important}
/* NUR der Chat-Anbau AN DER TAFEL wird dunkel. Der gleichnamige Knopf im
   BUCHUNGSBALKEN traegt dieselbe Klasse cg-ruf und stand deshalb deckend
   dunkel neben zwei durchscheinenden Feldern (Michael 24.09.2026: "Wenn du
   den linken zwei Felder transparent machst dann natuerlich den Chatbot
   Button auch"). Dort bleibt er transparent wie der Balken selbst. */
html[data-deckend] .cg-ruf:not(.cg-bar){background:#3D3733 !important;color:#F1ECE3 !important;
  border-left-color:rgba(246,242,234,.28) !important}
html[data-deckend] .cg-ruf:not(.cg-bar) svg rect{fill:#3D3733 !important}
html[data-deckend] .buchbar .cg-ruf.cg-bar{background:transparent !important}
html[data-deckend] .buchbar .cg-ruf.cg-bar svg rect{fill:#F6F2EA !important}
/* Datumszeile unten */
html[data-deckend] .cg-dat{border-color:rgba(58,52,47,.18) !important}
html[data-deckend] .cg-dat-l{color:rgba(33,31,30,.6) !important}
html[data-deckend] .cg-dat-w{color:#211F1E !important}

/* === /kopf.css === */
/* ------------------------------------------------------------------
   Nur der OBERE Teil des Nachbaus: Kopfleiste, Auftaktbild, Einleitung,
   die zwei versetzten Bilder, das Bewertungs-Laufband, die Buchungsleiste.
   Alles darunter kommt aus lp-stil.css (Landingpage wandern).

   Michael, 23.09.2026:
     "Der Footer soll nicht ueber die ganze Breite gehen, er soll mit den
      Bildern rechts und links abschliessen. Es soll kein Bild ohne
      Maximalgroesse sein fuer die groesseren Bildschirme."
   Deshalb liegt ALLES in main (max-width 1435 px) und traegt denselben
   Seitenrand var(--rand) wie die Bildreihen. Kein randloses Bild mehr.
   ------------------------------------------------------------------ */

:root {
  --a1: 8px; --a2: 16px; --a3: 24px; --a4: 40px; --a5: 64px; --a6: 128px;
  --leise: #706B64;   /* hellster Ton, der auf #F3EEE7 noch 4.5:1 haelt */
}

/* ---------- Kopfleiste ---------- */

.kopf {
  position: sticky; top: 0; z-index: 60;
  max-width: var(--breite); margin: 0 auto;
  height: 110px;
  background: var(--grund);
  display: grid; grid-template-columns: 1fr auto 1fr; align-items: center;
  padding-inline: var(--rand);
}
/* 30.09.2026: Tippflaeche 44 x 44 (gemessen vorher 40 x 33). Das Polster waechst,
   der negative Rand nimmt es der Zeile wieder -- die Striche bleiben, wo sie sind. */
.menueknopf { display: flex; flex-direction: column; gap: 7px; width: 40px; box-sizing: content-box; padding: 12px 2px; margin: -12px -2px; min-height: 20px; justify-content: center; justify-self: start; background: none; border: 0; cursor: pointer; }
.menueknopf span { display: block; height: 1px; background: var(--tinte); transition: transform .35s, opacity .25s; }
.kopf.offen .menueknopf span:nth-child(1) { transform: translateY(8px) rotate(45deg); }
.kopf.offen .menueknopf span:nth-child(2) { opacity: 0; }
.kopf.offen .menueknopf span:nth-child(3) { transform: translateY(-8px) rotate(-45deg); }

/* Michael 23.09.2026: "Das ist wesentlich eleganter als der Klumpen oben.
   Tausche das aus, ein bisschen groesser." Gemeint ist die Wortmarke aus dem
   Logotype im Fuss. Dieselben Werte wie dort: Oswald 300, Laufweite 0,42 em,
   Farbe #3D3733 -- nur 32 px -> 36 px -> 30 px (23.09.2026 "etwas kleiner"). Serifen sind fuer die Wortmarke
   ausgeschlossen (Regel 22). */
.wortmarke {
  font-family: 'Oswald', system-ui, sans-serif;
  font-weight: 300; font-size: 30px; line-height: normal;
  letter-spacing: .42em; text-indent: .42em; text-transform: uppercase;
  color: var(--tinte); text-decoration: none;
  position: relative; top: -.05em;   /* Schriftmitte auf die Mitte von Menue und Sprache: gemessen 1,6 px (30 px Schrift) und 1,0 px (24 px) zu tief */
  padding: 0;   /* 12.10.2026: lp-stil.css gab 40/22 bzw. 28/14 px Polster -- die Schrift sass dadurch 8 bis 11 px tiefer als Menue und Sprache */
}
.sprache {
  justify-self: end; margin: 0;
  font-family: 'Jost', system-ui, sans-serif;
  font-weight: 300; font-size: 13.68px; letter-spacing: .16em; color: #57534B;
  white-space: nowrap;   /* 19.10.2026: DE / EN / NL brach am Handy in zwei Zeilen (gemessen 390 px) */
}
.sprache { -webkit-user-select: none; user-select: none; }
.sprache a { text-decoration: none; color: inherit; display: inline-block; padding: 12px 6px; margin: -12px -6px;
             cursor: pointer; -webkit-tap-highlight-color: transparent; touch-action: manipulation; }
.sprache .hier, .sprache .aus { cursor: default; }  /* 30.09.2026: Tippflaeche 44 hoch statt 20 */
.sprache .aus { opacity: .45; }

/* ---------- Rolldown-Menue ---------- */

.menue {
  position: fixed; inset: 110px 0 auto 0; z-index: 55;
  background: var(--grund); border-bottom: 1px solid var(--linie);
  padding: var(--a5) var(--rand); display: none;
}
.menue.offen { display: block; }
.menue > * { max-width: var(--breite); margin-inline: auto; }
.menue ol { list-style: none; padding: 0; display: grid; gap: var(--a3); }
.menue .zaehler {
  font-family: 'DM Mono', ui-monospace, monospace;
  font-size: 12px; letter-spacing: .3em; color: var(--grau);
  display: block; margin-bottom: 4px;
}
.menue .haupt {
  font-family: 'Cormorant Garamond', 'Cormorant Ersatz',Georgia, serif;
  font-weight: 300; font-size: 30px; line-height: 1.1; color: var(--tinte); text-decoration: none;
}
.menue .anschrift { margin-top: var(--a4); font-size: 16px; line-height: 1.7; color: var(--text); }

/* ---------- Auftaktbild ---------- */

.auftakt-bild { padding: var(--a4) var(--rand) 0; }
.auftakt-bild .bildkasten { position: relative; aspect-ratio: 1355 / 735; }
.auftakt-bild img { width: 100%; height: 100%; object-fit: cover; }

/* Kiesel -- Form, Groesse und Glas 1:1 von der Landingpage abgemessen
   (wandern.hotel-gebhard.at, .ssc/.ssc-glas, gemessen 23.09.2026):
     Kasten   244 x 232 px   -> breiter als hoch
     Radius   50% 50% 44% 56% / 60% 58% 42% 40%
     Glas     rgba(53,48,43,.92)
   Der Text ist der der Framer-Seite (Inter 16 px, vier Zeilen).
   Michael 23.09.2026: "leicht animiert, dreht sich im Kreis" -- 28 s je
   Umdrehung, nur die Glasform dreht, die Schrift bleibt gerade. */
.kiesel {
  /* Michael 23.09.2026: "Passt in der Webseite an."
     An der Framer-Auslieferung gemessen (1440 px):
       Kiesel   x 98, y 274, 183 x 184
       im Bild  links 6,81 %, oben 13,83 % (Bild x0 y166, 1440 x 781)
       Text     Inter 400, 16 px / 19,2 px, #F3EEE7 */
  /* 24.09.2026, abends: auf die Masse der Landingpage gebracht (244 x 232),
     damit die Originaltypografie ohne Umrechnung passt. Bei 183 px ragte
     das gesperrte INKLUSIVE rechts aus der Form heraus -- gemessen, nicht
     geschaetzt: Textblock 162 px im nutzbaren Innenraum von 183 px. */
  position: absolute; left: 6.81%; top: 13.83%;
  width: 244px; height: 232px;
  display: grid; place-items: center;
  pointer-events: none;
}
.kieselglas {
  position: absolute; inset: 0;
  border-radius: 50% 50% 44% 56% / 60% 58% 42% 40%;
  background: #3D3733;                       /* Vollton statt Milchglas */
  box-shadow: inset 0 0 0 1px rgba(246,242,234,.07), 0 0 26px -10px rgba(20,17,15,.42);
  animation: kiesel-drehen 28s linear infinite;
}
/* Michael 24.09.2026: "mach ihn aber nicht aufs Glas, das gefaellt mir auch
   nicht." Der backdrop-filter faellt damit weg, der Koerper wird Vollton.
   Die Landingpage hat dort blur(36px) saturate(.65) -- wir ausdruecklich nicht. */
@keyframes kiesel-drehen { from { rotate: 0deg } to { rotate: 360deg } }

.kieseltext {
  /* 1:1 die Framer-Werte, die Michael am 24.09.2026 gezeigt hat:
     Inter Regular, 16 px, Laufweite 0 em, Zeilenhoehe 1,2 em, zentriert.
     (Mein Versuch mit 300/15 px/21 px war falsch und ist zurueckgenommen.) */
  position: relative; margin: 0; width: 100%; padding: 0 14px;
  color: #F6F2EA; text-align: center;
}

/* ---------- Einleitung ----------
   1:1 die Werte der Framer-Startseite, gemessen am gerenderten DOM bei
   1440 px (nicht geschaetzt, nicht aus einer Probedatei):
     Spalte   x 200, Breite 1040   -> beidseitig 200 px Rand
     Kicker   DM Mono 400, 12 px / 19,8 px, Sperrung 1,2 px, #666666
     H1       Cormorant Garamond 300, 49 px / 58,8 px, #6B635F, 24 px unter dem Kicker
     Lauftext Abhaya Libre 400, 18 px / 29,7 px, #6B635F, direkt darunter
     Abstand zum Auftaktbild 267 px
   Michael 23.09.2026: "Eins ist scheisse, das hast du gemacht. Zwei ist gut,
   bau es um." -- Zwei war die Framer-Fassung. */

.einleitung { max-width: 1440px; margin: 0 auto; padding: 128px 200px 0; }
.einleitung .zeile {
  font-family: 'DM Mono', ui-monospace, monospace;
  font-weight: 400; font-size: 12px; line-height: 19.8px; letter-spacing: 1.2px;
  color: #666666; margin: 0;
}
.einleitung h1 {
  font-family: 'Cormorant Garamond', 'Cormorant Ersatz',Georgia, serif;
  font-weight: 300; font-size: 49px; line-height: 58.8px; letter-spacing: normal;
  color: var(--text); max-width: none;
  margin: 24px 0 0;
}
.einleitung .lauf {
  font-size: 18px; line-height: 29.7px; color: var(--text);
  max-width: none;
  /* Abstand H1 -> Lauftext. Die Framer-AUSLIEFERUNG hat hier nur 4 px, die
     Framer-VORSCHAU im Editor rund 90 px -- deshalb drehten wir uns im Kreis.
     Michael 23.09.2026: "Der Abstand passt nicht." Gesetzt auf einen Wert des
     Swiss-Rasters, damit es eine Zahl gibt, an der man drehen kann. */
  margin: var(--abstand-h1, 64px) 0 0;
}

/* ---------- Die zwei versetzten Bilder ---------- */

.versatz {
  padding: var(--a6) var(--rand) 0;
  display: grid; grid-template-columns: 44fr 12fr 44fr; align-items: start;
}
.versatz .links  { grid-column: 1; grid-row: 1; margin-top: var(--a6); }
.versatz .rechts { grid-column: 3; grid-row: 1; }
.versatz img { width: 100%; height: auto; }

/* ---------- Bewertungs-Laufband ----------
   Michael 23.09.2026: "bewegen sich zu schnell von rechts nach links und
   sind viel zu dunkel, vor allem die Logos."
   Tempo 60 s -> 180 s. Logos auf 38 % Deckung. Note auf #706B64. */

.laufband {
  margin-top: var(--a6);
  max-width: var(--breite); margin-inline: auto;
  padding-inline: var(--rand);
}
/* Michael 23.09.2026: "Die Lightshow soll rechts und links auch begrenzt
   sein, genauso breit wie die Bilder." overflow:hidden schneidet am
   Polsterrand ab -- darum ein eigenes Fenster auf der Inhaltsbreite. */
.laufband .fenster { overflow: hidden; }
.laufband .bahn { display: flex; width: max-content; animation: laufen 180s linear infinite; }
.laufband:hover .bahn, .laufband:focus-within .bahn { animation-play-state: paused; }
@keyframes laufen { from { transform: translateX(0); } to { transform: translateX(-50%); } }

.bewertung { width: 564px; flex: 0 0 564px; }
.bewertung .saeule { width: 302px; display: grid; justify-items: center; }
/* Michael 23.09.2026: "Die Logos koennen ein kleines bisschen kraeftiger
   sein." 0,38 -> 0,46. Mehr nicht: am 23.09. hatte er sie als "viel zu
   dunkel" beanstandet, das war 1,0. */
.bewertung .zeichen { height: 60px; display: grid; align-content: center; opacity: .46; }
.bewertung .zeichen img { width: auto; background: none; }
/* lp-stil.css setzt img{background:#E6DFD4} als Platzhalter fuers Nachladen.
   Bei den freigestellten Logo-PNGs wird daraus ein sichtbarer Kasten --
   Michael 23.09.2026: "entferne die Rahmen um die Logos". */
.bewertung .zeichen.google img       { height: 31px; }
.bewertung .zeichen.holidaycheck img { height: 48px; }
.bewertung .zeichen.tripadvisor img  { height: 60px; }
.bewertung .zeichen.booking img      { height: 33px; }
.bewertung blockquote {
  margin: var(--a3) 0 0; width: 302px; text-align: left;
  font-size: 14px; line-height: 1.65; color: var(--text);
}
.bewertung .note {
  margin: var(--a2) 0 0; width: 240px; text-align: center;
  font-family: Inter, system-ui, sans-serif;
  font-size: 13px; line-height: 1.2; color: var(--leise);
}

/* ---------- Presse-Zeile aus der Framer-Seite entfaellt ---------- */

/* Damit die feste Leiste den Fussbereich nicht verdeckt */
.fuss { padding-bottom: 180px; }


/* ---------- Fussbereich ----------
   Michael 23.09.2026: "Zwei sehr schoene ausbalancierte Viererbloecke,
   zwei Zeilen mit vier Spalten. Am Schluss das Logo mit der Typografie."
   Die Breite ist dieselbe wie bei jeder Bildreihe (max-width 1435, Rand 40). */

.fuss { padding-bottom: 180px; }
.fussinhalt { font-family: 'Abhaya Libre', 'Abhaya Ersatz',Georgia, serif; }

.fussraster {
  /* Michael 23.09.2026: "Warum ist in der dritten Spalte so viel Abstand?"
     Die vierte Spalte war 1 fr breit, ihr Inhalt aber schmal und nach rechts
     geschoben -- daraus wurde eine Luecke von rund 335 px.
     Jetzt bekommt sie nur die Breite ihres Inhalts (auto), die ersten drei
     teilen sich den Rest. Damit sind alle Rinnen 40 px UND die laengste
     Zeile endet weiter auf der rechten Bildkante. */
  display: grid; grid-template-columns: repeat(3, 1fr) auto; gap: var(--a4);
  text-align: left;   /* lp-stil.css zentriert seinen Fuss -- hier nicht:
                         der Block soll mit den Bildkanten abschliessen */
}
.fussblock h2 {
  font-size: 13px; line-height: 1.6; letter-spacing: .2em; text-transform: uppercase;
  /* Kontrast (Michael 24.10.2026): #8A857D 3,17:1 -> #716C65 4,51:1, gleicher Farbton. Zurueck: kopf.css.vor-kontrast-24102026 */
  color: #716C65; font-weight: 400;
  /* Michael 23.09.2026: "Korrigiere den Abstand zwischen allen Bloecken."
     Die Rinnen sind 40 px, waagrecht wie senkrecht. Falsch war der Abstand
     INNEN: Ueberschrift -> erste Zeile stand auf 16 px, das ergab einen
     Grundlinienabstand von 40 px gegen 24 px in der Liste -- die Ueberschrift
     schwebte. Mit 8 px sind es 32 px, also weiter auf dem Achter-Raster. */
  margin: 0 0 var(--a1);
}
.fussblock h2.leer { visibility: hidden; }
.fussblock ul { list-style: none; margin: 0; padding: 0; }
/* Michael 23.09.2026: "Footer-Schrift 3 Punkt kleiner." 17 px -> 14 px.
   Die Spaltenueberschriften bleiben bei 13 px -- drei Punkte weniger waeren
   10 px und damit unter der Lesbarkeitsgrenze. */
.fussblock li { font-size: 14px; line-height: 24px; color: var(--text); }
.fussblock li a { color: var(--text); display: inline-block; }  /* 30.10.2026: 44 px mit -10 px Rand ueberlappten die Nachbarzeile (Lighthouse target-size); jetzt 24 px ohne Ueberlappung, Zeile 23,8 auf 24 px */
.fussblock li a:hover { color: var(--tinte); text-decoration-color: color-mix(in srgb, currentColor 50%, transparent); }  /* 01.11.2026 Michael: Unterstreichung beim Ueberfahren 50 % heller */

/* Nur das Signet (Michael 23.09.2026), Strich 5 statt 4. */
.fuss .zeichen { display: grid; place-items: center; margin-top: var(--a6); }
.fuss .zeichen a { display: block; color: var(--tinte); }
.fuss .signet { display: block; width: 96px; height: auto; }

.fuss .copy { text-align: center; margin: var(--a4) 0 0; font-size: 13px; color: var(--text); }
.fuss .cookieknopf {
  display: block; margin: calc(var(--a3) - 10px) auto 0;
  font-size: 13px; color: var(--text); background: none; border: 0; cursor: pointer;
  text-decoration: underline; text-underline-offset: 3px;
  padding: 10px 8px; min-height: 44px;  /* 30.09.2026: Tippflaeche 44 statt 24 */
}

/* ---------- Tablet ---------- */

@media (max-width: 1100px) {
  .einleitung { padding-inline: 96px; }
  .einleitung h1 { font-size: 40px; line-height: 48px; }
  .fussraster { grid-template-columns: repeat(2, 1fr); }
  .versatz { grid-template-columns: 1fr; gap: var(--a3); }
  .versatz .links, .versatz .rechts { grid-column: 1; grid-row: auto; margin-top: 0;
    margin-inline: calc(var(--rand) * -1); }   /* randlos am Handy, 28.09.2026 */
}

/* ---------- Handy ---------- */

@media (max-width: 809px) {
  .kopf { height: 88px; }
  .wortmarke { font-size: 24px; }
  .sprache { font-size: 12px; letter-spacing: .1em; }   /* 19.10.2026: drei Sprachen in einer Zeile */
  .sprache .aus { margin: 0 -2px; }
  .menue { inset: 88px 0 auto 0; padding: var(--a4) var(--rand); }

  .auftakt-bild .bildkasten { aspect-ratio: 350 / 500; margin-inline: calc(var(--rand) * -1); }

  .fussraster { grid-template-columns: 1fr; gap: var(--a4); }
  .fuss .signet { width: 80px; }
  .einleitung { padding: 120px var(--rand) 0; }
  .einleitung h1 { font-size: 31px; line-height: 37.2px; }
  .versatz { padding-top: 80px; }
  .laufband { margin-top: 80px; }

  .bewertung { width: 320px; flex-basis: 320px; }
  .bewertung .saeule, .bewertung blockquote { width: 280px; }
  .bewertung .note { width: 240px; }

}

/* ---------- Ganz schmal (ab 320 px) ----------
   Die Bewertungszahlen der Landingpage stehen dort noch zweispaltig und
   ragen 20 px hinaus (Regel 9, gemessen mit rand-320-messen.mjs). */
@media (max-width: 400px) {
  .bewertungen { grid-template-columns: 1fr; row-gap: 28px; }
}

/* ---------- Zimmergleis: runde Pfeile auf den Bildern ----------
   Michael 23.09.2026: "Hier fehlen die Buttons zum Weiterleiten nach rechts
   und nach links." Die Prev/Next-Zeile der Landingpage bleibt zusaetzlich.
   Die Hoehe setzt seite.js aus dem ersten Kartenbild -- die Karten sind je
   Haltepunkt verschieden breit, ein fester Wert waere bei jeder Breite falsch. */

.gleisrahmen { position: relative; }

.gleispfeil {
  position: absolute; top: var(--pfeilhoehe, 280px); z-index: 5;
  width: 44px; height: 44px; border-radius: 50%;
  background: rgba(61,55,51,.5);
  display: grid; place-content: center;
  border: 0; cursor: pointer;
  backdrop-filter: blur(6px);
  transition: background .2s, opacity .2s;
}
.gleispfeil:hover { background: rgba(61,55,51,.82); }
.gleispfeil:disabled { opacity: 0; pointer-events: none; }
.gleispfeil.zurueck { left: 24px; }
.gleispfeil.vor     { right: 24px; }

@media (max-width: 809px) {
  .gleispfeil { width: 38px; height: 38px; }
  .gleispfeil.zurueck { left: 12px; }
  .gleispfeil.vor     { right: 12px; }
}

@media (prefers-reduced-motion: reduce) {
  .kieselglas { animation: none; }
}

/* ---------- Schieber unter dem Zimmergleis ----------
   Michael 23.09.2026: der Balken der Framer-Seite statt Prev/Next.
   Die Knoepfe bleiben im Markup (buchen.js greift ohne Pruefung darauf zu)
   und sind nur ausgeblendet -- geblaettert wird mit den runden Pfeilen. */

.gleissteuerung { gap: var(--a3); margin-top: var(--a4); }
.gleissteuerung button { display: none; }
.gleissteuerung .spur { flex: 1; height: 1px; background: rgba(61,55,51,.18); }
.gleissteuerung .laeufer { height: 1px; background: var(--tinte); }
.gleiszaehler {
  flex: 0 0 auto;
  font-family: 'Abhaya Libre', 'Abhaya Ersatz',Georgia, serif;
  font-size: 18px; line-height: 1.66; color: var(--text);
  font-variant-numeric: tabular-nums;
}

/* ---------- Zimmerkarten: Typografie der Framer-Seite ----------
   Michael 23.09.2026: "Aendere die Typografie unterhalb der
   Zimmerkategorien, dort ist die schoenere." Gemeint ist der Satz der
   Framer-Startseite. Gemessen dort (1440 px):
     Titel     Cormorant Garamond 300, 22 px / 28,6 px, #4A4A45
     Text      Abhaya Libre 400, 18 px / 29,88 px, #6B635F
     Merkmal   Abhaya Libre 400, 18 px / 29,88 px
   Die Landingpage setzt Titel in Abhaya 17 px und den Preis halbfett --
   das wird hier ueberschrieben. Inhalt bleibt unveraendert. */

.gleis .karte { gap: 0; }
.gleis .kzeile { align-items: baseline; padding-top: 46px; }
.gleis .kzeile h3 {
  font-family: 'Cormorant Garamond', 'Cormorant Ersatz',Georgia, serif;
  font-weight: 300; font-size: 22px; line-height: 28.6px;
  color: #4A4A45; letter-spacing: 0;
}
.gleis .kmass {
  font-family: 'Abhaya Libre', 'Abhaya Ersatz',Georgia, serif;
  font-size: 16px; line-height: 28.6px; color: var(--grau);
}
.gleis .klinie { margin-top: 16px; background: rgba(61,55,51,.14); }
.gleis .kpreis {
  font-weight: 400; font-size: 17px; line-height: 1.66;
  color: var(--grau); margin-top: 14px;
}
.gleis .ktext {
  font-size: 18px; line-height: 29.88px; color: var(--text); margin-top: 12px;
}

@media (max-width: 809px) {
  .gleis .kzeile { padding-top: 28px; }
  .gleis .kzeile h3 { font-size: 20px; line-height: 26px; }
  .gleis .ktext { font-size: 17px; line-height: 1.66; }
}

/* ---------- Zeilenlaenge ----------
   Michael 23.09.2026: "Die Zeilen sind zu lang, das geht nicht. Immer wenn
   die Zeile zu lang ist, machst du einen Umbruch. Es schaut nicht elegant
   und luxurioes aus."
   Zwei Mittel statt harter <br>:
     text-wrap: balance   gleicht die Zeilen eines kurzen Absatzes an --
                          keine volle Zeile mit einem Wort darunter
     max-width in em      begrenzt das Satzmass auf rund 45 Zeichen,
                          statt die Karte bis zur Kante zu fuellen */

.gleis .kzeile h3 { text-wrap: balance; }
.gleis .ktext {
  max-width: 22em;          /* ~ 45 Zeichen bei 18 px Abhaya Libre */
  text-wrap: balance;
  hyphens: none;
}
.gleis .kpreis, .gleis .kmass { text-wrap: nowrap; }

/* Dieselbe Regel fuer die Ueberschriften und kurzen Absaetze der Abschnitte */
.abschnitt h2, .kopf1 h2, .kopf2 h2 { text-wrap: balance; }
.leitsatz, .einleitung h1 { text-wrap: balance; }
.lauf, .einleitung .lauf { text-wrap: pretty; }

/* ---------- Fuss: linke und rechte Kante ----------
   Michael 23.09.2026: "Links soll die Schrift mit dem oberen Bild vertikal
   abschliessen. Rechts soll der letzte Buchstabe des laengsten Wortes
   ebenfalls mit dem oberen Bild abschliessen -- das N von Buchen."
   Spalte 1 steht ohnehin auf der Bildkante. Spalte 4 wird rechtsbuendig,
   damit ihre laengste Zeile genau auf der rechten Bildkante endet. */

/* Die vierte Spalte: Info und Folgen stehen in EINER Huelle.
   Die Huelle schrumpft auf ihre breiteste Zeile ("Verfuegbarkeit und Buchen")
   und wird an den rechten Rasterrand gestellt. Damit endet die laengste Zeile
   auf der rechten Bildkante (1398) UND beide Bloecke haben dieselbe linke
   Kante, stehen also untereinander. Der Text bleibt linksbuendig.
   Michael 23.09.2026: links war gut, rechts fehlte der Abschluss. */
.fussspalte {
  grid-column: 4; grid-row: 1 / 3;
  justify-self: end;
  display: grid; align-content: start; gap: var(--a4);
  text-align: left;
}

/* Michael 23.09.2026: "Bildunterschriften alle um zwei Punkt kleiner."
   lp-stil.css setzt .mikro und figcaption auf 12 px -> 10 px. */
figcaption { font-size: 11px; }
/* Michael 24.10.2026: "auf 10 Pixel anheben". probe-tafel-milchglas.css setzte body[data-ptf] figcaption auf 9 px
   (Startseite, Essen, Wellness, Winter, je de/en/nl). Gleiche Spezifitaet, steht spaeter: gewinnt. Zurueck: kopf.css.vor-kleinschrift-24102026 */
body[data-ptf] figcaption { font-size: 11px; }

/* Michael 23.09.2026: "Zentriere diesen Bereich." — die vier Bewertungszahlen
   im Abschnitt buchen. Nur die Ausrichtung, sonst nichts. */
.bewertungen .bw { align-items: center; text-align: center; }

/* ---------- Zimmer-Kopf, Fassung A "Zeitungskopf" ----------
   Michael 23.09.2026, aus drei Vorschlaegen gewaehlt.
   12 Spalten auf der Inhaltsbreite, Rinne 40 px. */

/* Michael 23.09.2026: "Bild eins gleich anordnen wie Bild zwei im Zentrum."
   Also dieselbe Spalte wie die Einleitung: 160 px zusaetzlich nach innen,
   damit der Satzspiegel bei x 203 beginnt und 1035 breit ist -- gemessen an
   der Einleitung. Der Satz steht einspaltig ueber die volle Spaltenbreite. */
.zimmerkopf {
  display: grid; grid-template-columns: 1fr;
  padding-inline: 160px;
}
.zimmerkopf h2 {
  margin: 0;
  font-family: 'Cormorant Garamond', 'Cormorant Ersatz',Georgia, serif;
  font-weight: 300; font-size: 34px; line-height: 1.22; letter-spacing: -.012em;
  color: var(--tinte);
}
/* Zwei echte Rasterspalten statt column-count. Mit column-count startet die
   zweite Spalte eine Zeile tiefer, weil der Abstand zwischen den Absaetzen
   an den Spaltenkopf rutscht. Michael 23.09.2026: "gleiche Hoehe, Swiss Grid."
   Im Raster beginnen beide Spalten auf derselben Grundlinie. */
.zimmerkopf .satz {
  /* Michael 23.09.2026: "Pass den Abstand an." Derselbe Wert wie zwischen
     H1 und Fliesstext in der Einleitung -- eine Stellschraube fuer beide. */
  margin-top: var(--abstand-h1, 64px);
  display: grid; grid-template-columns: 1fr; row-gap: 1.7em;
}
.zimmerkopf .satz p { font-size: 16px; line-height: 1.7; color: var(--text); margin: 0; }

@media (max-width: 809px) {
  .zimmerkopf { padding-inline: 0; }
  .zimmerkopf h2 { font-size: 26px; }
  .zimmerkopf .satz { margin-top: 24px; }
}

/* ---------- Haeufige Fragen ----------
   Michael 23.09.2026: der Block der Framer-Seite statt "Was im Preis steckt".
   An der Framer-Auslieferung gemessen (1440 px):
     Spalte   x 148 bis 1292 (1144 breit)
     Frage    Cormorant Garamond 300, 20 px / 26 px, Sperrung 0,4 px, #6B635F
     Zeile    Haarlinie unter jeder Frage, Zeilenabstand 88 px
     Zeichen  Plus, 20 x 20 px, rechts */

.fragen .fragenliste { width: 100%; max-width: 1144px; margin-inline: auto; }

/* Die zwei Verweise unter den haeufigen Fragen auf die Breite der Fragenliste
   (Michael 30.09.2026: "Die zwei unteren Links gleich breit wie die haeufig
   gestellten Fragen"). Gemessen bei 1440 px: die Liste lief von 148 bis 1292
   (1144 px), die Verweiszeile von 43 bis 1398 (1355 px) -- 105 px je Seite
   daneben. Dieselbe Begrenzung wie .fragen .fragenliste eine Zeile weiter
   oben, damit beide an einer Stelle haengen. */
.fragen > .qv-wege { width: 100%; max-width: 1144px; margin-inline: auto; }
.fragen details { border-bottom: 1px solid var(--linie); }
.fragen summary {
  list-style: none; cursor: pointer;
  display: flex; align-items: center; justify-content: space-between; gap: var(--a3);
  padding: 26px 8px;
}
.fragen summary::-webkit-details-marker { display: none; }
.fragen summary h3 {
  flex: 1; margin: 0;
  font-family: 'Cormorant Garamond', 'Cormorant Ersatz',Georgia, serif;
  font-weight: 300; font-size: 20px; line-height: 26px; letter-spacing: .4px;
  color: var(--text);
}
.fragen summary .zeichen { position: relative; width: 20px; height: 20px; flex: 0 0 20px; }
.fragen summary .zeichen::before, .fragen summary .zeichen::after {
  content: ''; position: absolute; background: var(--text); inset: 9px 0 auto; height: 2px;
}
.fragen summary .zeichen::after { transform: rotate(90deg); transition: transform .25s, opacity .25s; }
.fragen details[open] summary .zeichen::after { transform: rotate(0); opacity: 0; }
.fragen .antwort {
  margin: 0 8px 26px; max-width: 760px;
  font-size: 17px; line-height: 1.66; color: var(--tinte);
}

@media (max-width: 809px) {
  .fragen summary { padding: 20px 0; }
  .fragen summary h3 { font-size: 18px; }
  .fragen .antwort { margin-inline: 0; }
}

/* Michael 23.09.2026: "Mach so viel Abstand nach unten zum Bild" --
   gezeigt hat er den Abstand der Einleitung zu ihrem Bild: 133 px.
   row-gap 144 ergibt gemessen dieselben 133 px (die Differenz ist der
   Unterlaengenraum der letzten Textzeile). */
#zimmer { row-gap: 144px; }


/* ---------- Schmale Fenster: die vierte Fussspalte aufloesen ----------
   Michael-unabhaengiger Messfund vom 23.09.2026:
   werkzeug/rand-320-messen.mjs meldete bei 320 px "scrollWidth=492
   (172 px zuviel), Taeter: 36". Ursache: .fussspalte verlangt grid-column 4.
   Im schmalen Raster gibt es nur EINE Spalte, also legte das Raster drei
   leere Spalten dazu und der Fuss wurde 492 px breit.
   Das Zuruecksetzen muss ganz unten stehen: Medienabfragen erhoehen die
   Spezifitaet nicht, und die Grundregel .fussspalte steht weiter oben im
   selben Blatt -- weiter oben eingefuegt blieb sie wirkungslos. */
@media (max-width: 1100px) {
  .fussspalte { grid-column: auto; grid-row: auto; justify-self: stretch; }
}

/* ---------- Drittelraster unter dem Kinderblock ----------
   Michael 23.09.2026: "Mach darunter linke Seite 1/3 und rechte Seite 2/3
   Container." 1355 Inhalt = 1/3 + 24 Rinne + 2/3, also 443,7 und 887,3.
   Der Versatz nach oben ist derselbe wie zwischen zwei Bildreihen (-40),
   damit der Block auf demselben Achter-Raster sitzt wie alles darueber. */
.drittelreihe {
  display: grid; grid-template-columns: 1fr 2fr; gap: var(--a3);
  align-items: start; margin-top: -40px;
}
.drittelreihe figure { margin: 0; }
.drittelreihe img { width: 100%; height: auto; display: block; }
@media (max-width: 809px) {
  .drittelreihe { grid-template-columns: 1fr; gap: var(--a4); margin-top: 0; }
}

/* ---------- Markierte Textstellen ----------
   Michael 23.09.2026: "Wenn ich es markiere, soll es nicht braun sein,
   sondern ein leichtes schoenes Beige."
   Ohne eigene Regel nimmt der Browser sein Systemblau -- das ist der
   einzige Fleck auf der Seite, der nicht aus der Hauspalette kommt.
   #E6DDCD liegt zwischen --linie (#DDD5C9) und --grund (#F3EEE7), also
   im warmen Papierton. Schrift bleibt --tinte: 8,9:1 Kontrast. */
::selection      { background: #E6DDCD; color: var(--tinte); }
::-moz-selection { background: #E6DDCD; color: var(--tinte); }

/* ---------- Zimmergleis: Fassung A3 ----------
   Michael 23.09.2026 aus vier Anschnitten gewaehlt: "A3 ist ganz gut."
   Zwei ganze Zimmer stehen auf 600 px, das angeschnittene Viertel liegt
   im rechten Seitenrand statt im Satzspiegel. Dafuer laeuft das Gleis
   ueber die Inhaltsbreite hinaus bis an den Fensterrand -- 50 % ist die
   halbe Gleisbreite, 50vw das halbe Fenster.
   Das Polster rechts haelt den Anschlag beim Durchscrollen auf dem
   Seitenrand, sonst klebt die letzte Karte an der Fensterkante. */
@media (min-width: 1101px) {
  /* Michael 24.09.2026: "Druck eine Spur nach links, das ist zu weit
     draussen, sieht angeklebt aus." Gemessen bei 1440: alles andere endet
     auf 1398, nur das Gleis lief bis 1440, also bis an die Fensterkante.
     Jetzt Karte 590 statt 600 und Deckel 1375 (590 + 24 + 590 + 24 + 147).
     Rechte Kante 1418, damit 22 px Luft zum Fenster -- und der Anschnitt
     bleibt bei einem Viertel. */
  /* 30.09.2026, Michael: "Ich moechte, dass man am Anfang das erste Bild sieht
     (Modern) und dann die Haelfte vom Modern Top. Die einzelnen Karten muessen
     groesser werden."
     Rechnung bei 1440 px: das Gleis beginnt bei 43 und ist auf 1375 gedeckelt,
     also endet es auf 1418. Eine ganze Karte plus Rinne plus eine halbe Karte:
     900 + 24 + 450 = 1374. Damit steht die zweite Karte exakt zur Haelfte im
     Bild. Vorher waren es 590 px -- zwei ganze Karten und ein Viertel.
     Die Karte wird dadurch um die Haelfte breiter, die Bildflaeche waechst von
     590 x 738 auf 900 x 600, also um 24 Prozent. */
  #zimmer .karte { flex: 0 0 900px; }
  /* Das Bild trug aspect-ratio 475/594 (hochkant 4:5) als Inline-Angabe. Die
     Fotos selbst sind QUER (gemessen 503 x 332, also 3:2) -- mit object-fit
     cover wurde bei jedem Zimmer oben und unten weggeschnitten. 3:2 zeigt das
     Foto so, wie es aufgenommen ist, und haelt die Karte bei 831 px Hoehe
     innerhalb eines 900-px-Fensters. */
  #zimmer .karte img { aspect-ratio: 3 / 2 !important; }
  /* Bei 1920 px waere der Anschnitt sonst kein Viertel mehr, sondern 65 %
     (gemessen 23.09.2026). Der Deckel haelt ihn: 600 + 24 + 600 + 24 + 150
     = 1398 px, also genau zwei ganze Karten und ein Viertel. */
  /* Die 22 px Luft muessen bei JEDER Breite bleiben. Ohne den Zuschlag
     klebte das Gleis bei 1280 wieder an der Kante (gemessen: Luft 0). */
  #zimmer .gleis { margin-right: calc(50% - 50vw + 22px); max-width: 1375px;
                   padding-right: var(--rand, 40px); }
  #zimmer .gleispfeil.vor { right: 64px; }
}


/* ---------- Zimmerkopf: der Satz auf drei Zeilen ----------
   Michael 24.09.2026: "3 Zeilen."
   Gemessen: 305 Zeichen liefen auf 1035 px in ZWEI Zeilen, also rund
   152 Zeichen je Zeile. Gemessen wurde danach die Zeilenzahl fuer jede
   Breite von 700 bis 920 px: ueberall genau drei Zeilen, bei 690 px
   waren es vier. 800 px liegt in der Mitte dieses Bandes, also weit weg
   von beiden Kanten. */
.zimmerkopf .satz p { max-width: 800px; }

/* ---------- Datum im Buchungsformular und in der Tafel ----------
   Michael 24.09.2026: "Die Schrift vom Datum eine Spur heller."
   Gemessen stand es auf #3A342F, derselbe Wert wie die Unterlinie.
   Jetzt #5C554F (--text2 der Hausfarben), ein Schritt heller. Kontrast
   auf #F3EEE7 bleibt bei 7,6:1, also weit ueber der Grenze. */
.buchform .feldknopf,
.buchform input,
.cg-datblock .cg-dat-in { color: #5C554F; }

/* ---------- Schieberzeile naeher an die Zimmerkarten ----------
   Michael 24.09.2026: "Etwas zu viel Abstand in jedem Breakpoint."
   Gemessen bei 390, 810 und 1440: ueberall 184 px zwischen Kartentext und
   der Zeile "01 / 11". Die setzen sich zusammen aus row-gap 144 des
   Abschnitts und margin-top 40 der Zeile. Der grosse Abstand gehoert
   zwischen die BLOECKE, nicht zwischen Gleis und seine eigene Bedienzeile.
   Der Zug nach oben nimmt den row-gap heraus, uebrig bleiben 40 px. */
/* Der Zug nach oben muss GENAU den row-gap aufheben. Stand er fest auf
   144, waehrend der Abschnitt 64 hatte, zog er die Schieberzeile 104 px
   in den Kartentext hinein (gemessen 24.09.2026, Fassung 2). Darum
   beide aus derselben Variablen. */
#zimmer { --zgap: 144px; row-gap: var(--zgap); }
#zimmer .gleissteuerung { margin-top: calc(var(--a4) - var(--zgap)); }

/* ---------- Wortmarke im Kopf eine Stufe duenner ----------
   Michael 24.09.2026: "Die Schrift etwas duenner."
   Oswald 300 war bisher der leichteste vorhandene Schnitt. Oswald 200 ist
   jetzt mitgeliefert (selbst gehostet, 7,5 KB, keine Verbindung zu Google).
   Regel 22 bleibt: Logo-artiges ist Oswald, nur der Schnitt wird leichter. */
.wortmarke { font-weight: 200; }

/* ---------- Tafel: mehr Abhebung, Seite bleibt scrollbar ----------
   Michael 24.09.2026: "Etwas mehr Schatten. Oder den Hintergrund etwas
   dunkler. Aber scrollbar bleiben."
   Beides, je zur Haelfte: der Schleier geht von 0,42 auf 0,58, der Schatten
   wird tiefer statt breiter. Der Schleier liegt auf position:fixed und
   nimmt der Seite kein Scrollen -- kein overflow:hidden am body, damit
   bleibt es scrollbar. */
/* probe-tafel-milchglas.css setzt "body[data-ptf] .gbt-schleier" auf
   transparent und ist damit spezifischer. Ohne denselben Vorsatz bleibt
   der Schleier unsichtbar (gemessen: rgba(0,0,0,0)). */
body[data-ptf] .gbt-schleier, .gbt-schleier { background: rgba(38,34,30,.58); }

/* Michael 24.09.2026: "Wenn ich den Chatbot oeffne, warum diese Verdunklung
   bei der Belegung?" Der Chat bringt einen EIGENEN Schleier mit (0,42).
   Steht die Tafel schon offen, liegt deren Schleier bereits darunter -- der
   zweite verdunkelt nur noch den Kalender. Solange die Tafel offen ist,
   bleibt der Chat-Schleier deshalb aus. */
html.cg-tafel .gc-schleier { background: transparent; }
.gbt-tafel {
  box-shadow: 0 60px 140px -40px rgba(24,21,19,.62),
              0 18px 48px -18px rgba(24,21,19,.34),
              0 0 0 1px rgba(38,34,30,.06);
}

/* ---------- Auf- und Zugehen der Tafel ----------
   Michael 24.09.2026: "Mach den Effekt mit dem Dunklerwerden etwas
   schoener. Nicht kaputt. Was macht ihr Emil Kowalski."

   Nach Emil Kowalskis Regeln, Punkt fuer Punkt:
   1. Eintritt und Austritt sind VERSCHIEDEN lang. Eintritt darf Zeit
      haben (320 ms), Austritt muss schnell sein (180 ms) -- sonst fuehlt
      sich Schliessen traege an.
   2. ease-out beim Eintritt, und zwar eine EIGENE Kurve. Die eingebauten
      sind zu schwach: cubic-bezier(.23,1,.32,1).
   3. Nie aus scale(0). Wir starten bei .97, das ist schon sichtbar.
   4. Nur transform und opacity bewegen -- beides laeuft auf der GPU.
   5. Unschaerfe maskiert den Uebergang: der Schleier faehrt seinen Blur
      von 0 auf 8 px mit. Unter 20 px bleiben, sonst wird Safari teuer.
   6. CSS-Transitions statt Keyframes: sie lassen sich mitten in der
      Bewegung umdrehen, wenn jemand schnell zu- und wieder aufmacht.
   7. Wer Bewegung abbestellt hat, bekommt nur noch die Deckkraft. */
body[data-ptf] .gbt-schleier, .gbt-schleier {
  transition: opacity 180ms cubic-bezier(.4,0,1,1),
              -webkit-backdrop-filter 180ms cubic-bezier(.4,0,1,1),
              backdrop-filter 180ms cubic-bezier(.4,0,1,1);
  -webkit-backdrop-filter: blur(0px); backdrop-filter: blur(0px);
}
body[data-ptf] .gbt-schleier.da, .gbt-schleier.da {
  transition: opacity 320ms cubic-bezier(.23,1,.32,1),
              -webkit-backdrop-filter 320ms cubic-bezier(.23,1,.32,1),
              backdrop-filter 320ms cubic-bezier(.23,1,.32,1);
  -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
}
body[data-ptf] .gbt-tafel, .gbt-tafel {
  transform: translate(-50%,-50%) translateY(10px) scale(.97);
  transition: opacity 180ms cubic-bezier(.4,0,1,1),
              transform 180ms cubic-bezier(.4,0,1,1);
}
body[data-ptf] .gbt-tafel.da, .gbt-tafel.da {
  transform: translate(-50%,-50%) translateY(0) scale(1);
  transition: opacity 320ms cubic-bezier(.23,1,.32,1),
              transform 320ms cubic-bezier(.23,1,.32,1);
}
@media (prefers-reduced-motion: reduce) {
  .gbt-schleier, .gbt-schleier.da, .gbt-tafel, .gbt-tafel.da {
    transition: opacity 120ms linear !important; transform: translate(-50%,-50%) !important;
  }
  .gbt-schleier, .gbt-schleier.da { -webkit-backdrop-filter: none; backdrop-filter: none; }
}

/* ---------- Eingabetext im Chat so gross wie der Platzhalter ----------
   Michael 24.09.2026: "Der Eingabetext ist zu klein, soll so gross sein
   wie in Abbildung zwei."
   Gemessen: Platzhalter 16 px / 1,6 px Sperrung, getippter Text nur
   10 px / 1,2 px. Die 10 px stammen aus einer Regel vom 20.09.2026 mit
   !important, die den Platzhalter auf EINE Zeile zwingen sollte -- sie
   traf aber den ganzen Textbereich mit. Der Platzhalter bleibt einzeilig,
   dafuer sorgt die Auslassungsregel daneben, nicht die Schriftgroesse. */
html[data-chat][data-eingabe] .gc-fenster .gc-feld textarea {
  /* Michael 24.09.2026, zweiter Anlauf: "Die Schrift ist immer noch zu
     klein." 16 px stimmten zwar mit dem Platzhalter ueberein, wirken in
     DM Mono mit Versalien und weiter Sperrung aber kleiner als der
     Fliesstext daneben (Abhaya Libre 17 px). Jetzt 18 / 26 px, und die
     Sperrung von .1em auf .06em, damit die Zeile nicht laenger wird. */
  /* Michael 24.09.2026, dritter Anlauf: "Die Schrift um zwei Punkt
     kleiner." 18 -> 16 px, Zeile 26 -> 24. */
  font-size: 16px !important;
  letter-spacing: .06em !important;
  line-height: 24px !important;
}
html[data-chat][data-eingabe] .gc-fenster .gc-feld textarea::placeholder {
  font-size: 16px; letter-spacing: .06em;
}

/* ---------- Kieseltypografie nach Michaels Abbildung zwei ----------
   Michael 24.09.2026: "Ersetze die Typografie von Bild eins mit der von
   Bild zwei, setze sie genau uebereinander und miss sie aus."

   Ausgemessen wurden die zwei Bildschirmfotos selbst (Pixel, nicht
   geschaetzt): der Kiesel ueber seine dunkle Flaeche, die Schrift ueber
   die hellen Pixel INNERHALB dieser Flaeche.

     Bild 1   Kiesel 381 px   Buchstabenhoehe 25   Zeilenabstand 38,7
     Bild 2   Kiesel 350 px   Buchstabenhoehe 20   Zeilenabstand 30,7

   Auf die Kieselbreite bezogen:
     Buchstabenhoehe  0,0656 gegen 0,0571   ->  Faktor 0,870
     Zeilenabstand    0,1015 gegen 0,0876   ->  Faktor 0,863

   Das Verhaeltnis Zeilenabstand zu Buchstabenhoehe ist in beiden gleich
   (1,548 und 1,535) -- es ist also dieselbe Schrift, nur kleiner gesetzt.
   Bei 183 px Kiesel heisst das: 16 x 0,870 = 13,9 -> 14 px, und
   0,0876 x 183 = 16,0 px Zeilenabstand.
   Die Schriftfarbe misst in Bild 2 heller (254 gegen 247 im Kern), darum
   #F6F2EA statt #F3EEE7 -- beides Hausfarben, ein Schritt heller.

   Gegenprobe am GERENDERTEN Kiesel, mit demselben Pixelverfahren wie an
   den Vorlagen: Zeilenabstand traf auf 0,2 Prozent, die Buchstaben waren
   noch 4,4 Prozent zu gross. 14 x 0,956 = 13,4 -> 13,5 px. */
/* UEBERHOLT AM 24.09.2026, abends. Michael hat den Kiesel der Landingpage
   gezeigt und gesagt "bau den Kiesel ein auf der Home-Seite". Damit gilt
   nicht mehr die Rechnung oben, sondern der GEMESSENE Stand der Landingpage
   (.ssc-n / .ssc-i am gerenderten DOM von wandern.hotel-gebhard.at, 1440 px):
     Kasten     244 x 232
     Oberzeile  DM Mono 400, 11 px / 19 px, Sperrung 2,64 px  = 0,24 em
     Unterzeile Cormorant Garamond 400, 18 px / 18 px, 7,2 px = 0,40 em
     beide Versalien, Farbe #F6F2EA, dazwischen ein senkrechter Strich
   Unser Kiesel ist 183 px statt 244, Faktor 0,75. Die Groessen sind damit
   umgerechnet und auf halbe Pixel gerundet. */
.kieseltext { width: auto; text-align: center; color: #F6F2EA; }
.kieseltext .kn {
  display: block; font-family: "DM Mono", ui-monospace, monospace; font-weight: 400;
  font-size: 11px; line-height: 19px; letter-spacing: 2.64px; text-indent: 2.64px;
  text-transform: uppercase;
}
.kieseltext .kstrich {
  display: block; width: 1px; height: 16px; margin: 11px auto 10px;
  background: rgba(246,242,234,.55);
}
.kieseltext .ki {
  /* Die Landingpage meldet Gewicht 400. Dieses Projekt laedt von Cormorant
     Garamond nur den Schnitt 300 -- mit 400 rechnet der Browser einen
     kuenstlich breiteren Satz, gemessen 154 px statt der 150 px, die der
     Kiesel am Handy breit ist. Darum 300. */
  display: block; font-family: "Cormorant Garamond", 'Cormorant Ersatz',Georgia, serif; font-weight: 300;
  font-size: 18px; line-height: 18px; letter-spacing: 7.2px; text-indent: 7.2px;
  text-transform: uppercase;
}

/* =====================================================================
   Kalendertafel auf dem Swiss Grid, DM Mono
   Michael 24.09.2026: "Übernimm die" (probe-tafel-mono.html).
   Die Probe steht in probe-tafel-inter.css und probe-tafel-mono.html,
   gemessen: Zelle 40, sieben Tage 280, Rinne 40, Zeile 56, Polster 72.
   Hier werden dieselben Zahlen auf das ECHTE Bauteil gelegt. Sicherung
   davor: kopf.css.vor-monoraster, chat-glas.css.vor-monoraster.
   ===================================================================== */
@media (min-width: 1024px) {
  html[data-swiss] .gbt-tafel[data-form="breit"] {
    --e: 8px; --zelle: 40px; --spalte: 280px; --rinne: 40px;
    width: calc(3 * var(--spalte) + 2 * var(--rinne) + 2 * 72px);
    font-family: 'DM Mono', ui-monospace, monospace;
  }
  html[data-swiss] .gbt-tafel[data-form="breit"] .gbt-kopf,
  html[data-swiss] .gbt-tafel[data-form="breit"] .gbt-rumpf { padding-inline: 72px; }
  html[data-swiss] .gbt-tafel[data-form="breit"] .gbt-kopf { padding-block: 72px 40px; }

  /* Kalenderblock 2 x 280 + Rinne, Belegung 280 */
  html[data-swiss] .gbt-tafel[data-form="breit"] .gbt-satz {
    display: grid;
    grid-template-columns: calc(2 * var(--spalte) + var(--rinne)) var(--spalte);
    column-gap: var(--rinne);
  }
  html[data-swiss] .gbt-tafel[data-form="breit"] .gbt-gitter,
  html[data-swiss] .gbt-tafel[data-form="breit"] .gbt-kalkopf {
    grid-template-columns: repeat(7, var(--zelle)); width: var(--spalte);
  }
  html[data-swiss] .gbt-tafel[data-form="breit"] .gbt-gitter button {
    width: var(--zelle); height: var(--zelle);
    font: 300 14px/var(--zelle) 'DM Mono', ui-monospace, monospace;
  }
  /* Schriftstufen wie in der Probe */
  html[data-swiss] .gbt-tafel[data-form="breit"] .gbt-kopf h2 {
    font: 300 15px/24px 'DM Mono', ui-monospace, monospace;
    letter-spacing: .16em; text-transform: uppercase;
  }
  html[data-swiss] .gbt-tafel[data-form="breit"] .gbt-kalkopf span,
  html[data-swiss] .gbt-tafel[data-form="breit"] .gbt-monat {
    font-size: 11px; letter-spacing: .12em; text-transform: uppercase;
  }
  html[data-swiss] .gbt-tafel[data-form="breit"] .gbt-zeile > span:first-child {
    font-size: 11px; letter-spacing: .12em; text-transform: uppercase;
  }
  html[data-swiss] .gbt-tafel[data-form="breit"] .cg-dat-l { font-size: 11px; letter-spacing: .16em; }
  html[data-swiss] .gbt-tafel[data-form="breit"] .cg-dat-in { font-size: 16px; }
  html[data-swiss] .gbt-tafel[data-form="breit"] .gbt-knopf {
    font-size: 11px; letter-spacing: .16em; height: 56px;
  }
  /* Der Chatknopf: gleicher Grund wie der Knopf, getrennt durch eine
     Haarlinie -- nicht dunkler, sonst wirkt er wie ein zweites Feld. */
  html[data-swiss] .gbt-tafel[data-form="breit"] .cg-ruf-fuss {
    background: #3D3733; border-left: 1px solid rgba(246,242,234,.22);
    height: 56px; width: 56px;
  }
}

/* ===== Kiesel am Handy -- MUSS GANZ UNTEN STEHEN =====================
   Gemessen am 24.09.2026: bei 390 px rechnete der Browser trotzdem mit
   18 px Schrift. Grund ist nicht der Media Query, sondern die Reihenfolge:
   ein @media erhoeht die Spezifitaet NICHT, und die Desktop-Regeln fuer
   .kieseltext .ki stehen weiter unten in dieser Datei. Derselbe Fehler wie
   bei .fussspalte am 23.09.2026. Darum stehen die Handywerte hier am Ende.
   Werte von der Landingpage bei 390 px abgelesen:
     Kasten 150 x 143, Oberzeile 9/14 sperr 1,62, Unterzeile 12,5 sperr 3,75
   ===================================================================== */
@media (max-width: 760px) {
  /* Zentriert ueber left, NICHT ueber transform: die Kiesel-Parallaxe in
     eintritt-home.js schreibt selbst auf transform und haette ein
     translateX(-50%) ueberschrieben -- gemessen am 24.09.2026, der Kiesel
     stand danach bei x=175 statt x=120 in einem 390 px breiten Bild. */
  .kiesel { left: calc(50% - 75px); top: 12%; width: 150px; height: 143px; }
  .kieseltext { padding: 0 6px; }
  .kieseltext .kn { font-size: 11px; line-height: 14px; letter-spacing: 1.62px; text-indent: 1.62px; }
  .kieseltext .kstrich { height: 12px; margin: 8px auto 7px; }
  .kieseltext .ki { font-size: 12.5px; line-height: 12.5px; letter-spacing: 3.75px; text-indent: 3.75px; }
}

/* ===== Chatfenster an die Textkante, nicht an den Fensterrand ==========
   Michael 25.09.2026: "Der Chatbot ist zu weit an der rechten Seite. Setz
   ihn etwas mehr links, er ist ganz drueben, das schaut nicht so gut aus."
   Gemessen war er mit 24 px am Fensterrand -- der Seiteninhalt endet aber
   schon frueher, bei 1440 px Fenster naemlich bei 1397. Deshalb wird der
   Abstand jetzt aus dem SATZSPIEGEL gerechnet statt aus dem Fenster:
     rechts = (100vw - 1435) / 2 + 80
   Erster Anlauf endete genau auf der Satzspiegelkante (+40) -- gemessen nur
   43 px statt 24 px bei 1440, also kaum ein Unterschied. Mit +80 sind es
   83 px, das ist sichtbar weg vom Rand, ohne dass das Fenster in die Mitte
   rutscht. Unter 1435 px greift der Mindestwert 40 px.
   Der Selektor ist derselbe wie in chat-glas.css; diese Datei wird spaeter
   geladen und gewinnt dadurch. ===================================== */
@media (min-width: 810px) {
  html[data-chat="C"]:not(.cg-tafel) .gc-fenster {
    right: max(40px, calc((100vw - var(--breite, 1435px)) / 2 + 80px));
  }
}

/* ===== Bewertungsband (Fassung A, freigegeben 30.09.2026) ================
   Michael: "Lass die Logos von rechts nach links fahren wie in einem
   Karussell. Langsam und Smooth. Immer vier sind zu sehen. Sollte eines
   rausgehen kommt es auf der anderen Seite wieder." Ausgewaehlt hat er
   Fassung A: die Zahlen, neu gesetzt -- keine Portal-Logos.

   KEIN JAVASCRIPT: die Bahn ist ein Raster mit acht gleich breiten Spalten
   und doppelter Fensterbreite. 12,5 %% von 200 %% sind genau 25 %% des
   Fensters, also vier sichtbare Karten -- ohne eine Breite zu messen.
   Der Lauf endet bei -50 %%, also nach genau einem Satz: dort steht Satz zwei
   da, wo Satz eins begann, und der Ruecksprung ist nicht zu sehen.

   Gemessen 30.09.2026 bei 1440 px: 4 sichtbar, Bahn 2,000 x Fenster,
   20 px/s nach links, kein waagrechter Ueberlauf.                          */
.bewertungsband {
  /* Ziel: 104 px zwischen Knopf und Band -- derselbe Abstand wie von der
     Verweiszeile zum Buchungsformular (beide gemessen 30.09.2026).
     Der Abschnitt .buchen ist ein Flexkasten und legt selbst 128 px zwischen
     seine Bloecke; mit 128 px kommen gemessene 168 px heraus. */
  margin-top: 128px;
  padding-bottom: 60px;
}
.bb-fenster {
  overflow: hidden;
  /* Weicher Auslauf statt harter Schnittkante. */
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 7%, #000 93%, transparent);
          mask-image: linear-gradient(90deg, transparent, #000 7%, #000 93%, transparent);
}
.bb-bahn {
  display: grid; grid-auto-flow: column; grid-auto-columns: 12.5%; width: 200%;
  /* linear, weil eine Beschleunigungskurve bei Dauerbewegung als Stocken
     gelesen wird. transform laeuft ausserhalb des Hauptfadens. */
  animation: bb-lauf 68s linear infinite;
}
.bb-kopie { display: contents; }
.bb-karte { display: grid; justify-items: center; text-align: center; row-gap: 10px; padding: 0 16px; }
@keyframes bb-lauf { from { transform: translate3d(0,0,0); }
                     to   { transform: translate3d(-50%,0,0); } }

/* Dauerbewegung ueber 5 s braucht eine Pause (WCAG 2.2.2). */
.bb-fenster:hover .bb-bahn,
.bb-fenster:focus-within .bb-bahn { animation-play-state: paused; }

/* Schrift: die Einheit sitzt auf der Grundlinie der Zahl statt in ihrer
   Mitte, Name und Anzahl bekommen je eine eigene Stufe. */
.bb-zahl {
  font-family: "Cormorant Garamond", 'Cormorant Ersatz', Georgia, serif;
  font-weight: 300; font-size: 44px; line-height: 1; color: var(--tinte);
  letter-spacing: -0.01em; margin: 0;
}
.bb-einheit {
  font-family: Inter, system-ui, sans-serif; font-size: 11px;
  letter-spacing: .14em; text-transform: uppercase; color: var(--grau);
  margin-left: 10px; vertical-align: baseline;
}
.bb-name {
  font-family: Inter, system-ui, sans-serif; font-size: 12px;
  letter-spacing: .16em; text-transform: uppercase; color: var(--tinte); margin: 0;
}
.bb-anzahl {
  font-family: Inter, system-ui, sans-serif; font-size: 11px;
  letter-spacing: .12em; text-transform: uppercase; color: var(--grau); margin: 0;
}

@media (max-width: 899px) {
  /* Am Handy sind vier Karten nicht lesbar: zwei sichtbar, Zahl kleiner.
     Karte = 50 %% des Fensters, also Bahn 400 %% und Spalte 12,5 %% davon.
     Mit 25 %% stand gemessen genau EINE Karte im Fenster (350 px bei 390). */
  .bb-bahn { grid-auto-columns: 12.5%; width: 400%; }
  .bb-zahl { font-size: 34px; }
}

@media (prefers-reduced-motion: reduce) {
  /* Ohne Bewegung braucht es keine zweite Garnitur und keinen Auslauf. */
  .bb-bahn { animation: none; width: 100%; grid-auto-columns: 1fr; }
  .bb-kopie { display: none; }
  .bb-fenster { -webkit-mask-image: none; mask-image: none; }
}

/* ===== Startseite ohne Vorspann (freigegeben 30.09.2026) =================
   Michael: "Baue die Variante A ein." Leitsatz unter der Ueberschrift und
   Kleinzeile darueber sind in bauen.py entfallen; hier stehen die zwei
   Abstaende, die sich dadurch aendern.

   1. LUFT UNTER DER UEBERSCHRIFT. Gemessen war der Weg Titel -> Fliesstext
      36 px -- das war der Abstand, der frueher zum Leitsatz fuehrte. Ohne
      ihn sitzt der Text zu dicht am Titel. 56 px ergeben gemessene 96 px
      in allen sechs Bloecken -- gemessen NACH dem vollen Lauf von
      alles-bauen.sh. Wer nur bauen.py laufen laesst, misst andere Werte:
      querverweise.py haengt danach noch den Verweis in dieselbe Rasterzeile. !important, weil .zimmerkopf2 einen eigenen
      Abstand setzt: der erste Block stand sonst bei 40 statt 96 px.

   2. RANDSPALTE SCHLIESST UNTEN MIT DEM TEXT AB. Sie lief ueber ZWEI
      Rasterzeilen (grid-row 1 / span 2), also auch ueber die Zeile des
      Verweises, und endete 55 px unter dem Text. Nur grid-row zu setzen
      reichte nicht -- dann rutschte sie in die erste freie Zelle nach LINKS.
      Die Spalte gehoert mitgesetzt: das Raster hat drei, sie ist die dritte.
      Die HOEHE bleibt unangetastet: zimmerkopf2.js misst die Unterkanten und
      setzt einen negativen margin-top; eine erzwungene Hoehe hat das Skript
      ins Leere laufen lassen (letztes dd stand 71 px unter seinem Kasten).
      Gemessen nach dem Einbau: 0 px Unterschied in allen sechs Bloecken.    */
.abschnitt > .satz { margin-top: 56px !important; }
.abschnitt > .satz > .rand { grid-row: 1 !important; grid-column: 3 !important; }

@media (max-width: 1199px) {
  /* Ab hier legt lp-stil.css die Randspalte ohnehin unter den Text. */
  .abschnitt > .satz > .rand { grid-column: 1 / -1 !important; grid-row: auto !important; }
}


/* Michael 30.09.2026: "Halt mehr Abstand hier" -- zwischen der Verweiszeile
   unter den haeufigen Fragen und dem Buchungsformular. Gemessen waren es
   104 px; die naechste Stufe der Hausreihe (16 - 24 - 40 - 64 - 104 - 168)
   ist 168. Der Abstand unter dem Knopf zieht mit, damit oben und unten
   gleich viel Luft steht (sein Wunsch vom selben Tag). */
.abschnitt.buchen { padding-top: 168px; }

/* Einleitung: gleicher Abstand ueber und unter der Ueberschrift ============
   Michael 30.09.2026: "Mach gleich viel Abstand von der Vor-Ueberschrift auf
   die Ueberschrift und von der Ueberschrift auf den Fliesstext."
   Gemessen vorher: Kleinzeile -> H1 24 px, H1 -> Fliesstext 64 px. Der groessere
   der beiden Werte steht schon in der Hausreihe (16-24-40-64-104), also zieht
   die obere Seite nach: 64 px auf beiden Seiten. */
.einleitung h1 { margin-top: 64px; }

/* ===== Fliesstext 20 % heller (Michael 30.09.2026) ======================
   "Mach den Fliesstext 20 % heller auf der ganzen Seite."

   Gerechnet wird gegen den Papierton #F3EEE7: die Textfarbe wandert 20 % der
   Strecke zum Hintergrund.
     Abschnitte  #57534B -> #76726A
     Einleitung  #6B635F -> #867F7A

   GEMESSEN UND FESTGEHALTEN: damit faellt der Kontrast unter den Wert, den
   WCAG fuer Fliesstext verlangt (4,5:1).
     Abschnitte  6,63:1 -> 4,15:1
     Einleitung  5,09:1 -> 3,41:1
   Der groesste Schritt, der die 4,5:1 noch haelt, waere 15 % bei den
   Abschnitten (#6E6A62, 4,66:1) und 5 % bei der Einleitung. Michael hat 20 %
   angeordnet; die Zahlen stehen hier, damit die Entscheidung nachlesbar ist
   und beim Barrierefreiheitsgesetz niemand raten muss.                      */
.lauf,
.abschnitt .satz .lauf,
.einleitung .lauf,
.tbreit .lauf,
.satz > .lauf { color: #706C65 !important; }
.einleitung .lauf { color: #716B67 !important; }
/* Kontrast (Michael 24.10.2026: "Kontrast anheben, nur die vier Gruppen bis 4,5:1"):
   Abschnitte #76726A 4,15:1 -> #706C65 4,52:1, Einleitung #867F7A 3,41:1 -> #716B67 4,55:1.
   Gleicher Farbton, nur so weit dunkler wie noetig. Zurueck: kopf.css.vor-kontrast-24102026 */

/* Die Werte in der dritten Spalte ziehen mit (Michael 30.09.2026: "Auch die
   zweite Zeile der dritten Spalte immer 20 % heller"). Gerechnet wie beim
   Fliesstext, 20 % der Strecke zum Papierton: #3D3733 -> #615C57.
   Hier bleibt der Kontrast im gruenen Bereich: 10,15:1 wird zu 5,73:1. */
.rand dd, .abschnitt .satz .rand dd { color: #615C57 !important; }

/* Die dritte Spalte schliesst rechts mit dem Raster ab ====================
   Michael 30.09.2026: "Padding der linken Seite, damit es besser etwas
   zentriert ist." / "Zentriert".

   Gemessen bei 1920 px: das Raster steht exakt mittig (283 px links wie
   rechts). Schief wirkt es aus einem anderen Grund -- der laengste Text der
   dritten Spalte endet 162 px VOR der rechten Rasterkante, weil die Spalte
   343 px breit ist und der Text nur rund 180 braucht. Die Flaeche kippt
   dadurch nach links, obwohl die Kanten stimmen.

   Statt den ganzen Block nach rechts zu schieben (das haette Bilder, Leiste
   und Verweise von ihrer Kante geloest) rueckt nur die Randspalte an die
   rechte Rasterkante. Die Luft wandert damit in die Rinne, wo sie nicht
   auffaellt, und aussen bleibt alles auf seiner Linie. */
/* justify-self: end am 30.09.2026 zurueckgenommen -- siehe Block "Textraster
   nach Michaels Abbildung" weiter unten. */
@media (max-width: 1199px) {
  /* Darunter steht die Spalte ohnehin unter dem Text. */
  .abschnitt > .satz > .rand { justify-self: stretch; }
}

/* Die zwei versetzten Bilder ruecken zusammen ============================
   Michael 30.09.2026: "weniger Abstand". Gemessen lag zwischen den beiden
   Bildern die mittlere Rasterspalte mit 162 px (Raster 44fr 12fr 44fr).
   Neu 4fr statt 12fr: gemessene 54 px bei 1440 und 1920 px -- nah an der
   Hausstufe 64, aber als Anteil, damit es mit der Breite mitwaechst. */
.versatz { grid-template-columns: 48fr 4fr 48fr; }

/* Mehr Luft zum linken Rand am Handy und Tablet ==========================
   Michael 30.09.2026: "Dafür fehlt der Abstand auf der linken Seite zum
   linken Rand." Gemessen: unter 810 px steht --rand auf 20 px, darüber auf
   40. 20 px sind zu wenig, der Text klebt. Neu 28 px -- mehr Luft, ohne dass
   die Zeile am Handy zu kurz wird (bei 390 px bleiben 334 px Satzbreite). */
@media (max-width: 809px) {
  /* 30.09.2026, zweite Runde: 28 px waren Michael noch zu wenig ("zu wenig
     Abstand von links nach rechts"). Jetzt 36 px; bei 390 px Fensterbreite
     bleiben 318 px Satzbreite, das traegt rund 42 Zeichen je Zeile. */
  :root { --rand: 36px; }
}

/* ===== Textraster nach Michaels Abbildung (30.09.2026) ==================
   Michael: "Du machst immer am Schluss zwischen zweiter und dritter Spalte zu
   viel Abstand. Und dafuer vor der ersten Spalte auf der linken Seite zu
   wenig. Es klebt zu sehr links. Mach es genauso wie in dieser Abbildung."

   AUS DER ABBILDUNG GEMESSEN (Bildbreite 2000 px, Anteile in Prozent):
     Bildkante und Kicker    2,40 %
     Text der ersten Spalte  6,75 %   -> der Text steht 4,35 % weiter innen
     zweite Spalte          41,80 %      als die Bilder
     dritte Spalte          80,65 %
     Rasterkante rechts     97,40 %

   Daraus das Raster, bezogen auf die Rasterbreite:
     Spalte 1  33,4 %   Rinne 1   5,3 %
     Spalte 2  35,0 %   Rinne 2   7,9 %
     Spalte 3  18,5 %

   Bei 1440 px sind das: Einzug 63 px, dann 431 / 68 / 452 / 102 / 239 px.
   Die Rinnen sind damit UNGLEICH -- vor der dritten Spalte steht mehr Luft
   als zwischen den zwei Textspalten. Genau das zeigt die Abbildung, und genau
   das war mit "4fr 4fr 3fr" und einer einzigen Rinne von 48 px nicht
   darstellbar. Deshalb fuenf Rasterspalten: drei fuer Inhalt, zwei als Rinne.

   Die BILDER bleiben auf ihrer Kante. Eingerueckt wird nur, was Text ist. */
.abschnitt > .kopf1,
.abschnitt > .satz,
.abschnitt > .qv-wege,
.abschnitt > .leitsatz,
.tbreit > .kopf1,
.tbreit > .satz,
.tbreit > .qv-wege,
.tbreit > .leitsatz { padding-left: 63px; }

/* Text links und rechts gleich eingerueckt (Michael 27.10.2026): die Randspalte (Sommer 2026, Abholen, Pfand) stand buendig am Bildrand, links 63 px. */
/* 27.10.2026 Michael (Wellness): etwas mehr Abstand zwischen Spalte 2 und Randspalte (tbreit +24 px), und die letzte Zeile der Randspalte schliesst mit der letzten Zeile der tiefsten Textspalte ab. Die Randspalte hatte inline top:-77px und stand deshalb je nach Breite 2 bis 4 px zu tief; jetzt am unteren Rand des Satzes verankert (2 px: Grundlinien von 16 px/25,84 und 15 px/19,5 gleich). Zurueck: kopf.css.vor-wellness-rand-27102026 */
@media (min-width: 1200px) {
  html body section.tbreit > .satz > .rand { width: calc((100% - 126px) * 209 / 1001 - 62px); } /* 27.10.2026 Michael: 0,5 cm (19 px) weniger Abstand zu Spalte 2 als zuvor (81 px) */
  html body .tbreit > .satz > .rand[style*="top: -"] { top: auto !important; bottom: 2px !important; }
}
@media (min-width: 1200px) { .abschnitt > .satz, .tbreit > .satz { padding-right: 63px; } html body .abschnitt > .satz > .rand, html body .tbreit > .satz > .rand { width: calc((100% - 126px) * 209 / 1001 - 57px); } /* 27.10.2026 Michael: 1,5 cm (57 px) mehr Abstand zwischen Spalte 2 und Randspalte. Zurueck: kopf.css.vor-abstand-15cm-27102026 */ html body .abschnitt > .satz > .rand, html body .tbreit > .satz > .rand { right: 63px; } } /* die Randspalte ist absolut gesetzt und ignorierte das Padding: sie stand 63 px weiter rechts als der Text links (27.10.2026 gemessen) */

/* Text LINKS neben einem Bild (.tpaar.rechts) steht auf derselben Kante wie
   der Text der breiten Bloecke darunter: 63 px Einzug, gemessen 106 px statt
   43 px (12.10.2026). Darunter stapelt das Haus, dort ist der Einzug 0 wie bei
   .tbreit. Rechts neben dem Bild (ohne .rechts) liegt der Text auf der
   Bildspalte und bleibt, wie er ist. */
@media (min-width: 1200px) {
  .tpaar.rechts > .wort { padding-left: 63px; }
  /* Bilder bleiben auf ihrer Kante (43 px). Nur TEXT rueckt ein: Text rechts
     neben dem Bild bekommt rechts dieselben 63 px wie der Text links.
     Michael 12.10.2026. */
  .tpaar:not(.rechts) > .wort { padding-right: 63px; }
}

.abschnitt > .satz,
.tbreit > .satz {
  /* minmax(0, …): ohne die Null als Untergrenze nimmt eine fr-Spalte
     mindestens ihre min-content-Breite, und die erste Textspalte wurde
     dadurch breiter als ihr Anteil (gemessen: zweite Spalte bei 47,5 %
     statt der 41,8 % aus der Abbildung). */
  /* 27.10.2026 Michael: Abstand Spalte 2 zu Randspalte war 40 px gegen 100 px zwischen 1 und 2. Beide Rinnen jetzt gleich (66), Textspalten etwas schmaeler. Zurueck: kopf.css.vor-spalten-gleich-27102026 */
  grid-template-columns: minmax(0,322fr) minmax(0,66fr) minmax(0,338fr) minmax(0,66fr) minmax(0,209fr) !important;
  column-gap: 0 !important;
}
.abschnitt > .satz > .lauf:nth-of-type(1),
.tbreit > .satz > .lauf:nth-of-type(1) { grid-column: 1; }
.abschnitt > .satz > .lauf:nth-of-type(2),
.tbreit > .satz > .lauf:nth-of-type(2) { grid-column: 3; }
/* Die Randspalte laeuft ueber BEIDE Rasterzeilen und beginnt oben.
   Mit grid-row: 1 bestimmte sie die Hoehe der ersten Zeile, und der Verweis
   darunter rutschte bis zu 213 px vom Text weg (gemessen im Sommer-Block).
   Ueber zwei Zeilen gespannt bleibt Zeile 1 so hoch wie die Textspalten --
   der Verweis sitzt wieder direkt unter dem Text, und die Randspalte darf
   trotzdem laenger sein. align-self: start haelt sie oben buendig. */
/* Die Randspalte steht NEBEN dem Raster, nicht darin: als spannendes
   Rasterfeld verteilt der Browser ihre Ueberhoehe auf beide Zeilen, und der
   Verweis rutschte dadurch bis zu 158 px vom Text weg (Sommer-Block,
   gemessen). Absolut gesetzt beeinflusst sie keine Zeilenhoehe mehr; der
   Verweis sitzt direkt unter dem Text, die Spalte beginnt oben buendig.
   Breite 18,48 %% = ihr Anteil am Raster (185 von 1001). */
.abschnitt > .satz,
.tbreit > .satz { position: relative; }
.abschnitt > .satz > .rand,
.tbreit > .satz > .rand {
  position: absolute; top: 0; right: 0; width: calc((100% - 63px) * 209 / 1001);
  grid-column: auto !important; grid-row: auto !important;
}
/* Die Verweise tragen seit dem 29.09.2026 eigene Klassen (querverweise.css:
   weg-s1, weg-s2, weg-breit) und waren dort auf das alte DREISPALTIGE Raster
   gerechnet: s2 stand in Spalte 2, breit lief 1/3. Im neuen Fuenfspalter ist
   Spalte 2 die Rinne -- deshalb klebte der Strich mitten im Satz (gemessen
   106 bis 605 statt bis 1057). Hier werden dieselben Klassen auf die neuen
   Spalten umgerechnet, nichts an ihrer Bedeutung geaendert. */
.abschnitt > .satz > .qv-weg.weg-s1 { grid-column: 1 !important; }
.abschnitt > .satz > .qv-weg.weg-s2 { grid-column: 3 !important; }
.abschnitt > .satz > .qv-weg.weg-breit { grid-column: 1 / 4 !important; }

/* Die Verweiszeile unter dem Satz traegt dasselbe Raster. */
.abschnitt > .qv-wege,
.tbreit > .qv-wege {
  /* minmax(0, …): ohne die Null als Untergrenze nimmt eine fr-Spalte
     mindestens ihre min-content-Breite, und die erste Textspalte wurde
     dadurch breiter als ihr Anteil (gemessen: zweite Spalte bei 47,5 %
     statt der 41,8 % aus der Abbildung). */
  /* 27.10.2026 Michael: Abstand Spalte 2 zu Randspalte war 40 px gegen 100 px zwischen 1 und 2. Beide Rinnen jetzt gleich (66), Textspalten etwas schmaeler. Zurueck: kopf.css.vor-spalten-gleich-27102026 */
  grid-template-columns: minmax(0,322fr) minmax(0,66fr) minmax(0,338fr) minmax(0,66fr) minmax(0,209fr) !important;
  column-gap: 0 !important;
}
.abschnitt > .qv-wege > .qv-weg:nth-of-type(1), .tbreit > .qv-wege > .qv-weg:nth-of-type(1) { grid-column: 1 !important; }
.abschnitt > .qv-wege > .qv-weg:nth-of-type(2), .tbreit > .qv-wege > .qv-weg:nth-of-type(2) { grid-column: 3 !important; }
.abschnitt > .qv-wege > .qv-weg:only-of-type, .tbreit > .qv-wege > .qv-weg:only-of-type { grid-column: 1 / 4 !important; }

@media (max-width: 1199px) {
  /* Darunter stapelt das Haus ohnehin -- kein Einzug, kein Fuenfspalter. */
  .abschnitt > .kopf1, .abschnitt > .satz, .abschnitt > .qv-wege, .abschnitt > .leitsatz,
  .tbreit > .kopf1, .tbreit > .satz, .tbreit > .qv-wege, .tbreit > .leitsatz { padding-left: 0; }
  /* html body davor: ohne den hoeheren Vorrang blieb das Raster bei 1024 px
     dreispaltig (gemessen 172 / 101 / 575 px) -- und die zwei Verweise lagen
     uebereinander, weil sie Spalte 1 und 3 eines Rasters suchten, das es dort
     nicht mehr gibt. */
  html body .abschnitt > .satz, html body .abschnitt > .qv-wege,
  html body .tbreit > .satz, html body .tbreit > .qv-wege {
    grid-template-columns: 1fr 1fr !important; column-gap: 48px !important; }
  /* Und die Spaltenzuweisungen der Wege gelten nur im Fuenfspalter. */
  /* Auch die Klassen weg-s1/weg-s2 zuruecksetzen: sie stehen weiter oben mit
     !important und haben das Raster bei 390 px auf drei Spalten aufgezogen
     (gemessen 0 / 101 / 222 px, die erste Textspalte war 0 breit). */
  html body .abschnitt > .satz > .qv-weg,
  html body .tbreit > .satz > .qv-weg,
  html body .abschnitt > .satz > .qv-weg.weg-s1,
  html body .abschnitt > .satz > .qv-weg.weg-s2,
  html body .abschnitt > .satz > .qv-weg.weg-breit,
  html body .tbreit > .satz > .qv-weg.weg-s1,
  html body .tbreit > .satz > .qv-weg.weg-s2,
  html body .tbreit > .satz > .qv-weg.weg-breit { grid-column: auto !important; }
  /* Michael 30.09.2026: "Über beide Spalten, wenn es nur zwei Spalten gibt."
     Steht nur EIN Weg im Block, laeuft er ueber die ganze Satzbreite --
     sonst endet sein Strich mitten im Satz. Zwei Wege teilen sich die zwei
     Spalten wie der Text darueber. */
  html body .abschnitt > .satz > .qv-weg:only-of-type,
  html body .tbreit > .satz > .qv-weg:only-of-type { grid-column: 1 / -1 !important; }
  /* !important: die absolute Regel oben steht in derselben Stufe und hat ohne
     Vorrang gewonnen -- gemessen stand die Spalte bei 390 px mitten im Text. */
  .abschnitt > .satz > .rand,
  .tbreit > .satz > .rand { position: static !important; width: auto !important; }
  .abschnitt > .satz > .lauf:nth-of-type(1),
  .abschnitt > .satz > .lauf:nth-of-type(2),
  .abschnitt > .satz > .rand,
  .abschnitt > .satz > .qv-weg,
  .abschnitt > .qv-wege > .qv-weg { grid-column: auto !important; }
}

@media (max-width: 809px) {
  /* Am Handy EINE Spalte. Ohne diese Zeile hielt die !important-Regel von
     oben zwei Spalten fest, und die Seite lief 227 px ueber den Rand
     (gemessen bei 390 px). */
  /* html body davor: querverweise.css setzt fuer dieselbe Breite ein
     zweispaltiges Raster, und ohne den hoeheren Vorrang blieb es dabei
     (gemessen bei 390 px: 204 + 222 px statt einer Spalte). */
  html body .abschnitt > .satz, html body .abschnitt > .qv-wege,
  html body .tbreit > .satz, html body .tbreit > .qv-wege { grid-template-columns: 1fr !important; }
}

/* Die dritte Spalte liest sich als Paare ================================
   Michael 30.09.2026: "Zeile eins und zwei naeher, dann hat es mehr Abstand,
   dann Zeile drei und vier naeher, dann etwas mehr Abstand."

   Das ist das Naehe-Gesetz: was zusammengehoert, steht enger beieinander als
   zu seinen Nachbarn. Gemessen war beides fast gleich -- Etikett zu Wert und
   Paar zu Paar lagen so dicht beieinander, dass die Spalte als eine Reihe
   von acht Zeilen las statt als vier Angaben.

   Innen: das Etikett sitzt direkt auf seinem Wert (kein Abstand, die
   Zeilenhoehen tragen den Rest). Aussen: mindestens 36 px, gesetzt im
   Skript zimmerkopf2.js, das den Abstand ausrechnet.
   Verhaeltnis damit rund 1 : 3 -- ab da liest das Auge Gruppen. */
/* 30.09.2026, Nachtrag: "Etiketten und Erklaerung etwas mehr Abstand."
   Vorher 0 px -- das Etikett klebte auf seinem Wert. Jetzt 6 px; zwischen den
   Paaren stehen 36 px, das Verhaeltnis bleibt damit bei rund 1 : 6 und die
   Gruppen lesen sich weiter als Paare. */
.rand > div > dt { margin-bottom: 6px !important; line-height: 1.15 !important; }
.rand > div > dd { line-height: 1.3 !important; }

/* Textblock und Bilder: oben wie unten gleich viel Luft ==================
   Michael 30.09.2026: "Oben und unten gleich viel Abstand zu den Bildern.
   Optisch, nicht der tatsaechliche."

   GEMESSEN auf /wellness/ (1440 px), von der Tinte aus, nicht von der
   Kastenkante: Bild -> Ueberschrift 129 bis 160 px, letzte Textzeile -> Bild
   24 bis 57 px. Mehr als das Doppelte Unterschied.

   Optisch heisst hier: die Versalhoehe der Ueberschrift zaehlt, nicht der
   Kasten darum. Eine Cormorant-Zeile in 31 px traegt rund 12 px Luft ueber
   den Buchstaben; unten laeuft der Fliesstext mit rund 6 px Unterlaenge aus.
   Deshalb steht oben ein kleinerer Zahlenwert als unten -- 88 gegen 96 --,
   und beide Abstaende WIRKEN gleich.

   96 ist die Hausstufe (16 · 24 · 40 · 64 · 104 mit 96 als Zwischenwert im
   Bildtakt der Themenseiten). */
/* 95 statt 88: gemessen ab der obersten Tinte (der Kleinzeile) standen oben
   89 px gegen 99 unten. */
.tbreit { margin-top: 95px !important; }
/* Steht unter dem Bild eine Unterschrift, traegt sie schon 31 px; ohne diesen
   Abzug stand der Text dort 127 statt 96 px unter dem Bild (gemessen auf
   /essen-trinken/ und /wellness/). */
.tvoll:has(figcaption) + .tbreit,
.traster:has(figcaption) + .tbreit,
.tpaar:has(figcaption) + .tbreit,
.tduo:has(figcaption) + .tbreit { margin-top: 64px !important; }
.tbreit + .tvoll,
.tbreit + .traster,
.tbreit + .tpaar,
.tbreit + .tduo,
.tbreit + .tkarten,
.tbreit + .tstreifen {
  /* 96 -> 105 px. Michael am 01.10.2026: "Oben und unten gleich Abstand von
     den ersten und letzten Woertern zum Bild." Gemessen auf /wellness/ bei
     390 px: ueber dem Textblock 96 px Luft bis zur Schrift, darunter nur
     87 px. Der Unterschied steckt in der Schrift, nicht im Abstand -- oben
     misst das Auge bis zur Versalienkante, unten ab der Grundlinie, und die
     Unterlaengen (g, p, y) brauchen Platz, den das Auge als Luft liest.
     Neun Pixel mehr unter dem Block gleichen das aus. */
  margin-top: 105px !important; }

/* Verweiszeilen: alle Wege gleich breit ==================================
   Michael 30.09.2026: "Die Links auch immer gleichmaessig aufteilen. Danach
   bitte bei allen Unterseiten."

   Gemessen auf /wellness/: drei Verweise in einer Zeile waren 458, 458 und
   343 px breit -- sie erbten die Spalten des Textrasters (4 : 4 : 3), das
   fuer Text gedacht ist, nicht fuer gleichrangige Wege.

   Jetzt teilt sich die Zeile gleichmaessig auf, egal wie viele Wege darin
   stehen: grid-auto-columns 1fr mit Spaltenfluss. Zwei Wege ergeben zwei
   gleiche Haelften, drei drei Drittel. Der Strich zwischen den zwei
   Wortteilen dehnt sich ohnehin auf den verbleibenden Platz. */
/* Auf den Themenseiten haengt die Zeile direkt an <main class="themenseite">,
   nicht an einem Textblock -- ohne diesen Selektor blieb sie beim Textraster
   (gemessen 458/458/343 statt drei gleichen Dritteln). */
.abschnitt > .qv-wege,
.tbreit > .qv-wege,
.themenseite > .qv-wege,
main > .qv-wege {
  grid-template-columns: none !important;
  grid-auto-flow: column;
  grid-auto-columns: minmax(0, 1fr);
  column-gap: 48px !important;
}
/* Die Spaltenzuweisungen von oben gelten nur noch fuer Wege IM Satzblock. */
.abschnitt > .qv-wege > .qv-weg,
.tbreit > .qv-wege > .qv-weg,
.themenseite > .qv-wege > .qv-weg,
main > .qv-wege > .qv-weg { grid-column: auto !important; }

@media (max-width: 809px) {
  /* Am Handy untereinander -- drei Wege nebeneinander sind dort unlesbar. */
  .abschnitt > .qv-wege, .tbreit > .qv-wege,
  .themenseite > .qv-wege, main > .qv-wege { grid-auto-flow: row; row-gap: 24px; }
}

/* Schmale Fenster: die dritte Spalte bleibt EINE Spalte ==================
   Michael 30.09.2026: "Typo passt nicht bei Breakpoint Mobil und Breakpoint
   Tablet." Gemessen auf /wandern/ bei 1100 und 810 px: die Paare der dritten
   Spalte standen NEBENEINANDER (linke Kanten 40, 123, 216) und liefen quer
   durch den Satz -- der Kasten erbt dort ein Raster, das fuer den Text
   gedacht ist.

   Unter 1200 px gilt jetzt: eine Spalte, Paare untereinander, 48 px Abstand
   zum Text darueber. Die Abstaende im Paar bleiben wie oben gesetzt. */
@media (max-width: 1199px) {
  /* Michael 30.09.2026: "Bei Breakpoint Tablet die Punkte nebeneinander,
     solange es sich ausgeht." Also ein Raster, das selbst zaehlt: jede Angabe
     bekommt mindestens 260 px, und es passen so viele in eine Zeile, wie
     hineingehen -- bei 810 px drei, bei 600 px zwei, am Handy eine. Kein
     fester Haltepunkt, sondern der Platz entscheidet. */
  html body .abschnitt > .satz > .rand,
  html body .tbreit > .satz > .rand {
    display: grid !important;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)) !important;
    column-gap: 40px !important;
    row-gap: 36px !important;
    grid-column: 1 / -1 !important;
    margin-top: 48px;
    height: auto !important;
    align-items: start;
  }
  html body .abschnitt > .satz > .rand > div,
  html body .tbreit > .satz > .rand > div { width: 100%; }
}

/* Fuss nach Schweizer Art bei Tablet und Handy ===========================
   Michael 30.09.2026: "Footer Swissgrid, mathematische Anordnung, Breakpoint
   Tablet und Breakpoint Mobil."

   GEMESSEN vorher: bei 1024 und 810 px zwei Spalten mit 40 px Rinne, aber die
   Bloecke standen in ungleichen Hoehen untereinander -- zwischen "Zimmer" und
   "Haus" klafften ueber 100 px, weil jede Spalte so hoch wurde wie ihr
   laengster Block. Am Handy eine Spalte, ebenso ungleich.

   Jetzt ein Raster, in dem jede Zeile gleich hoch ist und jeder Block auf
   derselben Grundlinie beginnt:
     Tablet (810-1199)  2 Spalten, Rinne 40, Zeilenabstand 64
     klein  (600-809)   2 Spalten, Rinne 32, Zeilenabstand 56
     Handy  (bis 599)   1 Spalte,        Zeilenabstand 48
   Alle Werte sind Vielfache von 8. grid-auto-rows: min-content haelt die
   Zeilen an ihrem Inhalt, align-items: start setzt jeden Block an den
   Zeilenanfang -- daher beginnen sie auf einer Linie, statt in ihrer Zelle
   zu schwimmen. */
@media (max-width: 1199px) {
  html body .fussraster {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    grid-auto-rows: min-content;
    align-items: start;
    column-gap: 40px !important;
    row-gap: 64px !important;
  }
}
@media (max-width: 809px) {
  html body .fussraster {
    column-gap: 32px !important;
    row-gap: 56px !important;
  }
}
@media (max-width: 599px) {
  /* 01.10.2026, Michael: "Ich haette gerne zwei Spalten beim Breakpoint Mobil
     beim Footer." Geht sich aus: bei 390 px Fenster bleiben nach 2 x 36 px
     Rand 318 px, abzueglich 24 px Rinne sind das 147 px je Spalte -- genug
     fuer "Maisonette Suite" (gemessen 139 px) in einer Zeile. */
  html body .fussraster {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    column-gap: 24px !important;
    row-gap: 48px !important;
  }
}

/* Die zwei versetzten Bilder bleiben am Tablet nebeneinander =============
   Michael 30.09.2026: "Bei Breakpoint Tablet die Bilder nebeneinander."
   Gemessen: ab 1199 px abwaerts standen sie untereinander und nahmen nur die
   halbe Breite ein -- rechts blieb eine leere Spalte stehen.
   Gestapelt wird jetzt erst unter 810 px, dem Handy-Haltepunkt des Hauses.
   Die Rinne schrumpft dabei von 54 auf 32 px, damit beide Bilder breit
   genug bleiben (bei 810 px je 356 px). */
@media (min-width: 810px) and (max-width: 1199px) {
  html body .versatz {
    grid-template-columns: 48fr 4fr 48fr !important;
    gap: 0 !important;
  }
  html body .versatz .links { grid-column: 1 !important; grid-row: 1 !important; }
  html body .versatz .rechts { grid-column: 3 !important; grid-row: 1 !important; }
  /* Der randlose Ausbruch gilt nur am Handy: nebeneinander ragen die Bilder
     sonst je 40 px nach aussen und ueberlappen sich in der Mitte (gemessen
     -42 px Luecke bei 1024). */
  html body .versatz .links,
  html body .versatz .rechts { margin-inline: 0 !important; }
}

/* ======================================================================
   TABLET UND HANDY: EIN zusammenhaengender Satz Regeln (30.09.2026)
   Michael: "aufräumen."

   Vorher standen die Regeln fuer schmale Fenster an fuenf Stellen dieser
   Datei und widersprachen sich: der Fuenfspalter der Startseite galt weiter,
   die Textspalten wurden dadurch 350 px schmal, rechts blieb eine leere
   Spalte stehen, und die dritte Spalte lag als einzelne 260-px-Saeule
   darunter. Dieser Block steht ZULETZT und gewinnt damit gegen alles
   davor -- er ist die einzige Stelle, die das Verhalten unter 1200 px
   beschreibt.

   TABLET  810 bis 1199 px
     Text        2 gleiche Spalten, Rinne 48
     dritte Sp.  volle Breite darunter, so viele Angaben nebeneinander,
                 wie bei 240 px Mindestbreite hineinpassen
     Verweise    2 gleiche Spalten
   HANDY   bis 809 px
     alles eine Spalte, Rinnen 32, Zeilenabstand 40
   ====================================================================== */
@media (max-width: 1199px) {
  html body .abschnitt > .kopf1,
  html body .abschnitt > .satz,
  html body .abschnitt > .qv-wege,
  html body .tbreit > .kopf1,
  html body .tbreit > .satz,
  html body .tbreit > .qv-wege { padding-left: 0 !important; }

  html body .abschnitt > .satz,
  html body .tbreit > .satz {
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    column-gap: 48px !important;
    row-gap: 0 !important;
    position: static !important;
  }
  html body .abschnitt > .satz > .lauf,
  html body .tbreit > .satz > .lauf { grid-column: auto !important; }

  html body .abschnitt > .satz > .rand,
  html body .tbreit > .satz > .rand {
    position: static !important;
    width: auto !important;
    height: auto !important;
    grid-column: 1 / -1 !important;
    margin-top: 56px !important;
    display: grid !important;
    /* Michael 30.09.2026: "Alle vier nebeneinander." Bis 900 px stehen sie
       deshalb in vier gleichen Spalten; darunter zaehlt der Platz (mindestens
       200 px je Angabe), sonst bricht "ganztags, Maschine bis 19 Uhr" in vier
       Zeilen um. */
    /* 30.09.2026, Michael: "Hier ist schon moeglich, dass drei nebeneinander
       sind. Lass diese Loecher weg." Untergrenze deshalb 170 statt 200 px --
       damit passen bei 1024 px fuenf, bei 810 px vier und bei 600 px drei
       Angaben in eine Zeile, statt zwei mit einer halbleeren Reihe darunter. */
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    column-gap: 40px !important;
    row-gap: 36px !important;
    align-items: start;
  }
  /* Bleiben in der zweiten Reihe nur zwei Angaben uebrig, stehen sie AUSSEN --
     erste und vierte Spalte (Michael 30.09.2026: "rechts und links aussen,
     Spalte eins und Spalte vier in der zweiten Reihe"). Zusammengedraengt in
     der Mitte wirkt die Zeile wie ein Rest; aussen traegt sie die Breite der
     Reihe darueber mit. Gilt nur bei genau sechs Angaben -- bei fuenf oder
     sieben waere die Verteilung eine andere. */
  html body .satz > .rand > div:nth-child(5):nth-last-child(2) { grid-column: 1 !important; }
  html body .satz > .rand > div:nth-child(6):last-child { grid-column: 4 !important; }
  html body .satz > .rand {
  }

  /* Auch die Klassen weg-s1/weg-s2 zuruecksetzen: sie stehen weiter oben mit
     !important und haben das Raster bei 390 px auf drei Spalten aufgezogen
     (gemessen 0 / 101 / 222 px, die erste Textspalte war 0 breit). */
  html body .abschnitt > .satz > .qv-weg,
  html body .tbreit > .satz > .qv-weg,
  html body .abschnitt > .satz > .qv-weg.weg-s1,
  html body .abschnitt > .satz > .qv-weg.weg-s2,
  html body .abschnitt > .satz > .qv-weg.weg-breit,
  html body .tbreit > .satz > .qv-weg.weg-s1,
  html body .tbreit > .satz > .qv-weg.weg-s2,
  html body .tbreit > .satz > .qv-weg.weg-breit { grid-column: auto !important; }
  /* Michael 30.09.2026: "Über beide Spalten, wenn es nur zwei Spalten gibt."
     Steht nur EIN Weg im Block, laeuft er ueber die ganze Satzbreite --
     sonst endet sein Strich mitten im Satz. Zwei Wege teilen sich die zwei
     Spalten wie der Text darueber. */
  html body .abschnitt > .satz > .qv-weg:only-of-type,
  html body .tbreit > .satz > .qv-weg:only-of-type { grid-column: 1 / -1 !important; }
  html body .abschnitt > .qv-wege,
  html body .tbreit > .qv-wege,
  html body .themenseite > .qv-wege,
  html body main > .qv-wege {
    display: grid !important;
    grid-auto-flow: row !important;
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    column-gap: 48px !important;
    row-gap: 32px !important;
  }
}

@media (max-width: 809px) {
  html body .abschnitt > .satz,
  html body .tbreit > .satz,
  html body .abschnitt > .qv-wege,
  html body .tbreit > .qv-wege,
  html body .themenseite > .qv-wege,
  html body main > .qv-wege {
    grid-template-columns: minmax(0, 1fr) !important;
    column-gap: 32px !important;
    row-gap: 40px !important;
  }
  /* Am Handy steht jeder Weg in einer eigenen Zeile ueber die volle Breite.
     Ohne diese Zeile teilten sich zwei Wege eine Zelle, und der erste wurde
     0 px breit (gemessen bei 600 und 390 px). */
  html body .abschnitt > .satz > .qv-weg,
  html body .tbreit > .satz > .qv-weg,
  html body .abschnitt > .satz > .qv-weg.weg-s1,
  html body .abschnitt > .satz > .qv-weg.weg-s2,
  html body .tbreit > .satz > .qv-weg.weg-s1,
  html body .tbreit > .satz > .qv-weg.weg-s2 {
    grid-column: 1 / -1 !important;
    /* auch die Zeile freigeben: querverweise.css setzt grid-row 2, und zwei
       Wege landeten dadurch in derselben Zelle (der erste wurde 0 px breit). */
    grid-row: auto !important;
  }

  html body .abschnitt > .satz > .rand,
  html body .tbreit > .satz > .rand {
    /* min(200px, 100%): ohne die Deckelung nahm auto-fit die 200 px woertlich
       und legte bei 390 px Fensterbreite zwei Spalten an -- die Seite lief
       171 px ueber den Rand (gemessen, Ursache waren dt/dd bei 363…560). */
    /* 30.09.2026, Michael: "Hier ist schon moeglich, dass drei nebeneinander
       sind. Lass diese Loecher weg." Untergrenze deshalb 170 statt 200 px --
       damit passen bei 1024 px fuenf, bei 810 px vier und bei 600 px drei
       Angaben in eine Zeile, statt zwei mit einer halbleeren Reihe darunter. */
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    min-width: 0 !important;
    margin-top: 40px !important;
    column-gap: 32px !important;
    row-gap: 32px !important;
  }
}

/* ======================================================================
   Bilder: ueberall dieselbe Breite, ueberall Rand (30.09.2026)
   Michael: "Mach die Bilder alle gleich breit auf der ganzen Seite, so dass
   ein Rand auf der Seite ist mit Hintergrund."

   GEMESSEN vorher (Startseite): bei 600 px liefen einzelne Bilder von 0 bis
   600 und von -9 bis 311, also ueber den Rand hinaus, waehrend der Satz bei
   36 bis 564 stand. In der Bildreihe waren die zwei Bilder ausserdem
   ungleich breit (538 gegen 359 px).

   Jetzt: kein randloser Ausbruch mehr, und die zwei Bilder einer Reihe teilen
   sich die Breite zu gleichen Teilen. Der Papierton bleibt links und rechts
   als Rand stehen.
   NICHT betroffen: das Zimmergleis -- es ist ein Schieber und laeuft
   absichtlich ueber den rechten Rand hinaus.
   ====================================================================== */
html body .bildreihe,
html body .drittelreihe,
html body .versatz .links,
html body .versatz .rechts,
html body .tvoll figure,
html body .auftakt-bild .bildkasten,
html body .bildkasten { margin-inline: 0 !important; }

@media (max-width: 1199px) {
  html body .bildreihe {
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    column-gap: 48px !important;
    align-items: start;
  }
}
html body .bildreihe > * { width: 100% !important; max-width: none !important; }

@media (max-width: 809px) {
  html body .bildreihe {
    grid-template-columns: minmax(0, 1fr) !important;
    row-gap: 32px !important;
  }
}

/* Michael am 11.10.2026 (Tablet): ein einzelnes Bild in einer Bildreihe stand
   nur in der linken Haelfte, das Paar darunter ueber die ganze Breite
   (Startseite: Finnische Sauna, Ueber Fiss). Jetzt zieht sich das Einzelbild
   ueber beide Spalten, so breit wie das Paar; es wird beschnitten statt
   gedehnt (Ausschnitt 21:9, die Hoehe darf sich aendern). */
@media (min-width: 810px) and (max-width: 1199px) {
  html body .bildreihe > figure:only-child { grid-column: 1 / -1; }
  html body .bildreihe > figure:only-child img {
    width: 100% !important; aspect-ratio: 21 / 9 !important; object-fit: cover !important;
  }
}

/* Das "Sicherheitsnetz", das alle Bildbloecke auf die Inhaltsbreite zwingen
   sollte, ist am 30.09.2026 wieder RAUS: es hat den waagrechten Ueberlauf der
   Startseite von 40 auf 97 px (600 px Fenster) und von 110 auf 171 px (390 px)
   vergroessert, statt ihn zu beheben -- die Bilder sitzen in verschiedenen
   Huellen mit eigenen Raendern, und eine gemeinsame Klammer trifft sie nicht.
   Was bleibt: die Bildreihen sind gleich breit, und der randlose Ausbruch am
   Handy ist weg. Der Rest ist ungeprueft offen. */

/* Kein waagrechtes Wackeln der ganzen Seite ==============================
   Gemessen am 30.09.2026 bei 390 px: die Startseite lief 171 px ueber den
   Rand, /info/anfahrt/ um 11 px. Ursache auf der Startseite ist das
   Zimmergleis -- ein Schieber, dessen Karten absichtlich breiter sind als das
   Fenster. Er scrollt selbst (overflow-x: auto), die SEITE soll dabei aber
   nicht mitwandern.
   overflow-x: clip statt hidden: hidden macht aus dem Element einen
   Scroll-Container und setzt position: sticky im Kopf ausser Kraft; clip
   schneidet nur ab. */
html { overflow-x: clip; }
body { overflow-x: clip; }

/* Kiesel nur am Desktop und Tablet ======================================
   Michael 30.09.2026: "Bei Breakpoint Mobil entferne den Kiesel."
   Am Handy liegt er als 150 px grosser dunkler Koerper mitten im Zimmerbild
   und verdeckt ein Drittel des Motivs. */
@media (max-width: 809px) {
  html body .kiesel { display: none !important; }
}

/* Nichts laeuft ueber die Satzbreite hinaus ==============================
   Michael: "Maximale Breite da links genauso wie Schrift und Bild."
   Die dritte Spalte und die Verweise bekommen dieselbe Begrenzung wie der
   Text: hoechstens so breit wie ihr Kasten, und kein Rasterkind darf sich
   ueber seine Spalte hinaus aufblaehen (min-width: auto ist die Vorgabe bei
   Rasterkindern und genau der Grund, warum lange Werte die Spalte sprengen). */
html body .satz > .rand,
html body .satz > .rand > div,
html body .satz > .lauf,
html body .satz > .qv-weg,
html body .qv-wege > .qv-weg {
  min-width: 0 !important;
  max-width: 100% !important;
}
/* overflow-wrap: break-word ist am 30.09.2026 wieder RAUS: zusammen mit den
   schmalen Spalten hat es ganze Woerter senkrecht zerlegt ("BERGBAHNEN" stand
   als B-E-R-G untereinander). Ein Wort wird nicht getrennt, die Spalte wird
   breit genug -- darum steht die Untergrenze jetzt bei 200 px statt 0. */

/* Verweise enden vertikal auf einer Linie ================================
   Michael 30.09.2026: "Vertikal muessen die Links immer in einer Linie
   abschliessen." Gemessen untereinander: "IN FISS" endete bei 950,
   "214 PISTENKILOMETER" bei 1153 -- die Kaesten waren unterschiedlich breit,
   weil sie sich nach ihrem Inhalt richteten. Jetzt nimmt jeder Verweis die
   volle Spaltenbreite, und sein rechtes Wort steht an deren Kante. */
html body .satz > .qv-weg,
html body .qv-wege > .qv-weg { width: 100% !important; }

/* Die zwei versetzten Bilder: nebeneinander, solange es sich ausgeht ======
   Michael: "Bilder nebeneinander, solange es geht, dann untereinander."
   Statt eines festen Haltepunkts bei 810 px zaehlt jetzt der Platz: zwei
   Spalten, solange jede mindestens 300 px breit bleibt. Bei 660 px Fenster
   ist damit Schluss, darunter stehen sie untereinander. */
html body .versatz {
  grid-template-columns: repeat(auto-fit, minmax(min(300px, 100%), 1fr)) !important;   /* 28.10.2026: nie breiter als der Container (Handy 320 px: Bild ragte 16 px ueber den Rand) */
  column-gap: 48px !important;
  row-gap: 32px !important;
}
html body .versatz .links,
html body .versatz .rechts {
  grid-column: auto !important;
  grid-row: auto !important;
  margin-inline: 0 !important;
}

/* Der rechte Wortteil steht immer an der rechten Kante ===================
   Gemessen untereinander: 488 gegen 506 px, also 18 px daneben. Der Strich
   ist auf 280 px gedeckelt, und die Restluft blieb hinter dem rechten Wort
   stehen, statt davor. space-between schiebt sie nach vorn. */
html body .satz > .qv-weg,
html body .qv-wege > .qv-weg { justify-content: space-between !important; }

/* Zwei Angaben in der dritten Spalte: aussen buendig =====================
   Michael 30.09.2026: "Wenn es nur noch zwei sind, dann rechts und links
   ausrichten -- links mit dem ersten Buchstaben zum Text und Bild darueber,
   rechts mit dem letzten Buchstaben an der rechten Bildkante."
   Bei genau zwei Eintraegen sitzt der erste links an der Satzkante, der
   zweite rechts an der Bildkante. */
html body .satz > .rand:has(> div:nth-child(2):last-child) {
  grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
}
/* Am 30.09.2026 zuerst rechtsbuendig gesetzt ("rechts mit dem letzten
   Buchstaben an der Bildkante"), danach von Michael widerrufen: "Die dritte
   Spalte muss auch in einer Linie sein." Alle Angaben stehen jetzt links auf
   derselben Kante, auch wenn nur zwei uebrig sind. */
html body .satz > .rand > div { justify-self: stretch; text-align: left; }

/* Der Versatz-Block sitzt auf der Inhaltsbreite ==========================
   Gemessen bei 1024 px: der Block lief von 0 bis 1024, der Satz daneben von
   40 bis 984 -- das linke Bild klebte am Fensterrand, waehrend Text und alle
   anderen Bilder 40 px Rand hatten. Ursache war sein eigener Innenabstand
   (padding: var(--a6) var(--rand) 0), der die Breite nicht begrenzt.
   Jetzt dieselbe Rechnung wie ueberall sonst. */
html body .versatz {
  width: min(var(--breite, 1435px), 100% - 2 * var(--rand)) !important;
  margin-inline: auto !important;
  padding-inline: 0 !important;
}

/* Tablet: die dritte Spalte bleibt RECHTS ================================
   Michael 30.09.2026, nach mehrfacher Ansage: die Angaben standen zwischen
   810 und 1199 px unter dem Verweis und zerfielen dort in drei Spalten --
   statt rechts neben dem Text zu bleiben, wo sie auf jeder anderen Breite
   steht. Das war mein Aufräum-Block, der Tablet wie Handy behandelt hat.

   Ab hier gilt bis 810 px herunter dasselbe Bild wie am Desktop: zwei
   Textspalten und die Angaben rechts daneben. Gerechnet bei 1024 px:
   Satz 944, davon 4fr / 4fr / 3fr mit zwei Rinnen zu 40 px -- 332 / 332 /
   200 px. Erst unter 810 px wandern sie unter den Text.                   */
@media (min-width: 810px) and (max-width: 1199px) {
  html body .abschnitt > .satz,
  html body .tbreit > .satz {
    grid-template-columns: minmax(0, 4fr) minmax(0, 4fr) minmax(0, 3fr) !important;
    column-gap: 40px !important;
    position: relative !important;
  }
  html body .abschnitt > .satz > .lauf:nth-of-type(1),
  html body .tbreit > .satz > .lauf:nth-of-type(1) { grid-column: 1 !important; }
  html body .abschnitt > .satz > .lauf:nth-of-type(2),
  html body .tbreit > .satz > .lauf:nth-of-type(2) { grid-column: 2 !important; }
  html body .abschnitt > .satz > .rand,
  html body .tbreit > .satz > .rand {
    position: static !important;
    grid-column: 3 !important;
    grid-row: 1 !important;
    display: flex !important;
    flex-direction: column !important;
    width: auto !important;
    margin-top: 0 !important;
    row-gap: 36px !important;
  }
  /* Die Verweise stehen darunter, je einer unter einer Textspalte. */
  html body .abschnitt > .satz > .qv-weg.weg-s1,
  html body .tbreit > .satz > .qv-weg.weg-s1 { grid-column: 1 !important; grid-row: 2 !important; }
  html body .abschnitt > .satz > .qv-weg.weg-s2,
  html body .tbreit > .satz > .qv-weg.weg-s2 { grid-column: 2 !important; grid-row: 2 !important; }
  html body .abschnitt > .satz > .qv-weg:only-of-type,
  html body .tbreit > .satz > .qv-weg:only-of-type { grid-column: 1 / 3 !important; grid-row: 2 !important; }
}

/* ======================================================================
   Die dritte Spalte: feste Stufen statt auto-fit (30.09.2026)
   Michael: "Hier stimmt gar nichts."

   GEMESSEN, was auto-fit angerichtet hat: bei 390 px Fenster legte
   repeat(auto-fit, minmax(min(170px, 100%), 1fr)) VIER Spalten an --
   170 / 17 / 17 / 17 px. Werte brachen in bis zu neun Zeilen, Angaben
   ueberlappten sich. Grund ist das min(170px, 100%): das Prozent bezieht sich
   auf die Spalte, die gerade berechnet wird -- eine Katze, die sich in den
   Schwanz beisst. Der Browser loest sie zu einem winzigen Wert auf.

   Darum ab hier gezaehlte Stufen. Sie sind nachrechenbar:
     810-1199 px  eine Spalte  (die Angaben stehen rechts neben dem Text)
     600-809 px   zwei Spalten (Satz 528-737 px, je Angabe 240-345 px)
     unter 600    eine Spalte  (Satz 318-528 px)
   ====================================================================== */
@media (min-width: 600px) and (max-width: 809px) {
  html body .satz > .rand {
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    column-gap: 40px !important;
    row-gap: 36px !important;
  }
}
@media (max-width: 599px) {
  html body .satz > .rand {
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) !important;
    row-gap: 32px !important;
  }
}

/* Die Aussen-Platzierung der fuenften und sechsten Angabe gilt NUR dort, wo
   es vier Spalten gibt ======================================================
   Gefunden am 30.09.2026: die Regeln div:nth-child(5){grid-column:1} und
   div:nth-child(6){grid-column:4} standen ohne Haltepunkt. Unter 810 px hat
   das Raster aber nur eine oder zwei Spalten -- "Spalte 4" existiert dort
   nicht, und der Browser legt IMPLIZITE Spalten an. Gemessen bei 390 px:
   0 / 0 / 111 / 111 px statt einer Spalte zu 318. Genau daher kamen die
   Werte, die in neun Zeilen zerfielen, und die 0-px-Angaben.
   Deshalb: unter 810 px stehen alle Angaben wieder im normalen Fluss. */
@media (max-width: 809px) {
  /* Mit denselben nth-child-Selektoren wie die Aussen-Regel: ein blosses
     "> div" hat geringeren Vorrang als "> div:nth-child(5)" und verlor
     (gemessen: die Angaben blieben 0 px breit). */
  html body .satz > .rand > div,
  html body .satz > .rand > div:nth-child(5):nth-last-child(2),
  html body .satz > .rand > div:nth-child(6):last-child,
  html body .satz > .rand > div:nth-child(2):last-child {
    grid-column: auto !important;
    grid-row: auto !important;
    justify-self: stretch !important;
  }
}

/* Am Handy EINE Spalte in der dritten Spalte -- als letzte Regel, damit sie
   die zweispaltige aus dem Aufraeum-Block schlaegt (gemessen bei 390 px:
   zwei Spalten zu 143 px statt einer zu 318). */
@media (max-width: 599px) {
  /* Auch der :has-Selektor fuer genau zwei Angaben muss hier zurueck -- er hat
     als einziger noch zwei Spalten gehalten (gemessen 143 + 143 px bei 390). */
  html body .abschnitt > .satz > .rand,
  html body .tbreit > .satz > .rand,
  html body .satz > .rand:has(> div:nth-child(2):last-child) {
    grid-template-columns: minmax(0, 1fr) !important;
  }
}

/* Fuss: die Bloecke fuellen beide Spalten, keine Luecken ==================
   Michael 01.10.2026: "Warum ist FOLGEN nicht auf der rechten Seite? Dann
   haetten wir zwei Spalten rechts neben der Infoleiste."
   Gemessen: INFO und FOLGEN standen untereinander in derselben Spalte, weil
   die Bloecke darueber verschieden hoch sind und das Raster zeilenweise
   fuellt. grid-auto-flow: dense zieht den naechsten Block in die freie
   Zelle -- so steht neben jedem Block einer. */
@media (max-width: 1199px) {
  html body .fussraster { grid-auto-flow: row dense !important; }
}

/* Info und Folgen nebeneinander statt untereinander ======================
   Michael 01.10.2026: "Warum ist FOLGEN nicht auf der rechten Seite?"
   Gemessen: beide stecken in EINER Huelle (.fussspalte), die als ein einziges
   Rasterkind zaehlt -- deshalb standen sie untereinander in der linken Spalte,
   waehrend rechts daneben Platz frei blieb.
   Unter 1200 px loest sich die Huelle auf: display: contents gibt ihre zwei
   Bloecke direkt an das Fussraster weiter, und die verteilt es auf beide
   Spalten. */
@media (max-width: 1199px) {
  html body .fussraster > .fussspalte { display: contents !important; }
}

/* Unter der Buchungsleiste bleibt Platz =================================
   Michael 01.10.2026: "Die Buchungsleiste ist genau über der Erklärung über
   den Karteikarten. Das macht sie immer drüber."
   Gemessen auf /sommer/familienurlaub/ bei 390 px: die Leiste liegt fest auf
   769 bis 833 und deckte dort den Namen und die Erklärung einer Karte zu.
   Die Leiste ist 64 px hoch; mit 64 px zusätzlichem Fuß am Seitenende kann
   man bis unter sie scrollen, statt dass sie den letzten Inhalt frisst. */
body.mit-balken main,
body:has(.klebeleiste) main { padding-bottom: 88px; }

/* Der Fuss: vier, drei, zwei Spalten ====================================
   Michael 01.10.2026: "Footer bei Breakpoint Desktop vier Spalten, Tablet
   drei Spalten und in der letzten einmal links und einmal rechts -- die
   mittlere bleibt frei. Und bei Breakpoint Mobil zwei Spalten."

   GEMESSEN VORHER: 1920 und 1440 vier Spalten, aber ungleich breit
   (361/361/361/151 px), 1024 und 810 nur zwei, 600 und 390 zwei. Der Fuss
   hatte also am Tablet dieselbe Aufteilung wie am Handy.

   Acht Kaesten: Zimmer links, Zimmer rechts, Haus, Kontakt, Direkt buchen,
   Rechtliches, Info, Folgen. Das geht bei vier Spalten in zwei Reihen auf,
   bei zwei Spalten in vier -- nur bei drei Spalten bleiben zwei uebrig, und
   die stehen dann aussen. */
@media (min-width: 1200px) {
  /* 01.11.2026 Michael: Fuss so breit wie die Bilder, alle vier Bloecke
     linksbuendig, die laengste Zeile der letzten Spalte endet am rechten
     Bildrand, die Luecken zwischen den Textkanten sind gleich (optisch, nicht
     gleich breite Spalten). max-content + space-between leistet genau das.
     Zurueck: kopf.css.vor-fussbuendig-01112026 */
  html body .fussraster {
    grid-template-columns: repeat(3, minmax(0, 1fr)) max-content !important;
    column-gap: 0 !important;  /* 01.11.2026: drei gleiche Spalten + Inhaltsbreite rechts: gleicher Abstand der Anfaenge UND letzte Zeile endet am rechten Bildrand */
    justify-content: normal !important;  /* 01.11.2026 Michael: gleich breite Spalten, Raster = Bildbreite; zurueck: kopf.css.vor-fussgleich-01112026 */
  }
  /* Auch hier die Huelle aufloesen: sie stand als EIN Kasten in Spalte 4 ueber
     zwei Reihen (grid-column:4; grid-row:1/3) und war deshalb 151 px schmal,
     waehrend die drei anderen Spalten je 361 px hatten. */
  html body .fussraster > .fussspalte { display: contents !important; }
  html body .fussraster > .fussspalte > * { justify-self: start !important; }
}
@media (min-width: 810px) and (max-width: 1199px) {
  html body .fussraster {
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    /* "dense" wuerde die letzten beiden Kaesten in die Luecke der Mitte
       ziehen -- genau das soll hier NICHT passieren. */
    grid-auto-flow: row !important;
  }
  /* NUR der letzte Kasten wird gesetzt. Beide zu setzen ist falsch: der
     vorletzte landet ohnehin in Spalte 1, und ein zweites grid-column riss
     gemessen eine Reihe auseinander (Rechtliches stand allein). */
  html body .fussraster > .fussspalte > :last-child,
  html body .fussraster > :last-child { grid-column: auto !important; }
}
@media (max-width: 809px) {
  html body .fussraster {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }
}

/* Einzelnes Bild in einer Bildreihe nimmt beide Spalten ====================
   Michael 01.10.2026: "Mach das Foto über beide Spalten. Das ist einheitlicher.
   Das alles machst du natürlich nur beim Breakpoint Desktop."
   Gemessen auf der Startseite bei 1440 px: vier Reihen haben nur EIN Bild
   (DER FREIRAUM, FINNISCHE SAUNA, ÜBER FISS, IN DER STEILKURVE). Sie standen
   mit 654 px in der linken Spalte, rechts blieb die halbe Breite leer --
   obwohl ihr --anteil schon auf 100 % steht. Das Raster hat zwei feste
   Spalten, also muss das einzelne Bild beide belegen. Unter 810 px ist die
   Reihe ohnehin einspaltig, dort ändert sich nichts. */


/* 15 Prozent weniger Luft zwischen Bewertungsband und Fuss (Michael 01.10.2026).
   Nachgemessen: die 88 px kommen WEDER vom Band noch vom Fuss, sondern von der
   Polsterung unter <main> (88 px) -- und die ist der Platzhalter fuer die
   klebende Buchungsleiste (body.mit-balken main). Die darf nicht kleiner
   werden, sonst schiebt sich der Fuss unter die Leiste. Gekuerzt wird deshalb
   die Polsterung ueber dem Fuss: 88 + 120 = 208 px Abstand bis zur ersten
   Fusszeile, 15 Prozent weniger sind 177 -- also 89 px statt 120. */
html body .fuss { padding-top: 60px; }

/* Einzelne Bildformate der Startseite ====================================
   Alles nur ab 810 px -- darunter ist die Bildreihe einspaltig.
   Gemessen bei 1440 px (Breite je Bild 654 px):
     DIE SOMMERKARTE     451 px hoch -> auf 541
   (Die Hoehen von GROSSE WEINAUSWAHL und DER SPRUNG sind am 01.10.2026 wieder
    raus: sie waren Notbehelfe gegen das Zwangsraster. Seit die Reihen wieder
    nach --anteil laufen, stimmen die Proportionen von selbst.)
                         (20 % tiefer, Seiten duerfen wegfallen) */
@media (min-width: 810px) {
}


/* Verweisleiste der Startseite auf Inhaltsbreite ========================
   Michael 01.10.2026: die Verweise sollen mit den Enden der Linie darueber
   abschliessen. Gemessen bei 1440 px: ".fragen > .qv-wege" deckelte auf
   1144 px (148…1292), Linie und Bilder laufen 43…1398. Die Deckelung faellt
   ab 1200 px weg -- darunter bleibt sie, dort ist die Leiste zweizeilig. */
@media (min-width: 1200px) {
  html body .fragen > .qv-wege { padding-left: 0; padding-right: 0; }
}

/* Kinderkarte und Sommerkarte gleich hoch ===============================
   Michael 01.10.2026: "Mach das Link und das längste Bild gleich groß."
   Gemessen bei 1440 px: KINDERKARTE 528 x 528, SOMMERKARTE 799 x 661.
   Gerechnet statt gestreckt: die Spalten sind 39 % und 59 % der Reihe, also
   haben beide Bilder dieselbe Hoehe, wenn ihr Seitenverhaeltnis 39:50 bzw.
   59:44 ist -- bei JEDER Fensterbreite, Zielhoehe 44 % der Reihenbreite
   (596 px bei 1355 px Reihe; am 01.10.2026 von 50 % auf 44 % gesenkt, also
   12 Prozent niedriger). Ein blosses align-items:stretch hatte beide auf
   die KLEINERE Hoehe gezogen (536 px). Nur ab 810 px. */
@media (min-width: 810px) {
  html body .bildreihe figure:has(img[src*="BhEQG4RgTdlpESW9VMkeCfBfRsk"]) img {
    aspect-ratio: 39 / 44 !important; height: auto !important; object-fit: cover;
  }
  html body .bildreihe figure:has(img[src*="maskottchen-sommerkarte"]) img {
    aspect-ratio: 59 / 44 !important; height: auto !important; object-fit: cover;
  }
}

/* Startseite: Rand links und rechts ====================================
   Michael 01.10.2026: "Wie schaffst du es, dass rechts und links ein Rand ist
   neben dem Foto ... nicht ganz raus bis zum Seitenrand, sondern etwas
   reingerückt, rechts und links gleich weit."
   Gemessen vorher bei 1440 px: Inhalt 43…1398, also 43 px Luft je Seite
   (94 % der Fensterbreite). Jetzt 7,5 vw je Seite, gedeckelt bei 160 px:
   bei 1440 px sind das 108 px und 1224 px Inhalt (85 %).
   Der Wert sitzt an --rand, also wandern Bilder, Text, Fuss und Kopf
   gemeinsam -- die Flucht bleibt. Nur die Startseite (sie allein hat
   .auftakt-bild), nur ab 1200 px.

   02.10.2026 WIDERRUFEN, Michael: "Mach die Seite wieder so breit wie sie war."
   Die 7,5 vw haben bei 1440 px 108 px Rand ergeben und den Inhalt von 1355 auf
   1219 px verschmaelert. Zurueck auf die Hausstufe 40 px -- ein Rand bleibt,
   aber der Inhalt hat wieder seine alte Breite (gemessen bei 1440 px:
   40...1400, also 1360 px). */

/* Zimmergleis endet an derselben Kante wie die Bilder ===================
   Michael 01.10.2026: "Zimmer hat auf der rechten Seite ... über den Rand
   hinaus. Gleich breit wie alle anderen Bilder."
   Gemessen bei 1440 px: das Gleis lief 111…1418 (1308 px), Bilder und Rahmen
   enden bei 1330. Der Ueberstand kam aus "#zimmer .gleis{margin-right:calc(50%
   + 22px - 50vw); padding-right:var(--rand)}" -- gewollt war damit der
   Eindruck, dass die Karten weiterlaufen. Jetzt endet das Gleis buendig; dass
   es weitergeht, zeigen Pfeile und Zaehler. Das Schieben bleibt (overflow-x
   auto), nur der Rand faellt weg. */
@media (min-width: 1101px) {
  html body #zimmer .gleis { margin-right: 0; max-width: none; padding-right: 0; }
}

/* ======================================================================
   Handy (<= 809 px): ein Raster fuer alle Bilder und den Balken.
   Michael am 11.10.2026: alle Bilder gleich breit, links und rechts gleich
   viel Rand; der Verfuegbarkeits-Balken links und rechts gleich weit vom
   Rand, er darf ueber die Bilder hinausragen.

   GEMESSEN vorher (390 px): Bilder der Bildreihe von x=0 bis 318 (Rand links
   0, rechts 72), weil lp-stil.css `.bildreihe figure{margin-inline:-rand}`
   die Figur um 36 px nach links zog, waehrend die Breite auf die Spalte
   (318) festgelegt war. Balken: links 20, rechts 57 -- chat.css setzt
   `body.mit-chat .klebeleiste{right:57px}` spaeter als die 20 px.
   Satzspiegel = 36 | 318 | 36. Balken = 20 | 350 | 20 (ragt je 16 px ueber).
   ====================================================================== */
@media (max-width: 809px) {
  html body .bildreihe figure { margin-inline: 0 !important; }
  html body .klebeleiste,
  html body.mit-chat .klebeleiste { left: 20px !important; right: 20px !important; }
}

/* ======================================================================
   Handy (<= 809 px): EIN Abstand zwischen allen Bildern und Texten.
   Michael am 12.10.2026: "Bei Breakpoint Mobil moechte ich, dass auf der
   Seite von allen Bildern und Texten der gleiche Abstand ist."

   GEMESSEN vorher (390 px, 7 Themenseiten): zwischen den Abschnitten 48,
   64, 95, 104 und 105 px je nach Nachbar (Bild -> Text 95, Text -> Bild
   105, Bild mit Unterschrift 64), zwischen den zwei Bildern der Duo-Reihe
   24, zwischen Bild und Text im Paar 80, zwischen Dreierspalten 64. Die 95
   und 105 sind die Desktop-Werte (optischer Ausgleich), die am Handy nie
   gesondert entschieden wurden.

   Jetzt: --luft-handy (48 px) an jeder Fuge. NICHT angefasst bleiben die
   Sonderregeln: Abstaende INNERHALB eines Textblocks (Kleinzeile ->
   Ueberschrift -> Satz -> Angaben), Bild -> Unterschrift, die interaktiven
   Karten und die Vollbildansicht der Zimmerkategorien.
   Die Selektoren wiederholen .themenseite, weil .tvoll:has(figcaption) +
   .tbreit sonst (hoehere Spezifitaet) gewinnt.
   ====================================================================== */
@media (max-width: 809px) {
  html body main.themenseite.themenseite.themenseite { --luft-handy: 48px; }
  html body main.themenseite.themenseite.themenseite > section,
  html body main.themenseite.themenseite.themenseite > section + section,
  html body main.themenseite.themenseite.themenseite > section + .qv-wege,
  html body main.themenseite.themenseite.themenseite > .qv.qv-wege { margin-top: var(--luft-handy) !important; }
  /* Reihen: Bild unter Bild, Karte unter Karte, Spalte unter Spalte */
  html body main.themenseite.themenseite.themenseite .tduo,
  html body main.themenseite.themenseite.themenseite .tkarten,
  html body main.themenseite.themenseite.themenseite .tstreifen,
  html body main.themenseite.themenseite.themenseite .traster,
  html body main.themenseite.themenseite.themenseite .orr-raster,
  html body main.themenseite.themenseite.themenseite .tdrei { row-gap: var(--luft-handy) !important; }
  /* Orts-Karten (Familie Sommer): Bild -> Text ebenfalls eine Fuge */
  html body main.themenseite.themenseite.themenseite .orr-karte .orr-text,
  html body main.themenseite.themenseite.themenseite .orr-karte.l-h .orr-text { padding-top: var(--luft-handy) !important; }
  /* Paar: Bild -> Textblock genau eine Fuge (vorher 32 + 48 = 80 px) */
  html body main.themenseite.themenseite.themenseite .tpaar { row-gap: 0 !important; }
  html body main.themenseite.themenseite.themenseite .tpaar > .wort { padding-top: var(--luft-handy) !important; }
  /* Orts-Gruppen: Trennlinie mit Titel haelt oben und unten dieselbe Fuge */
  html body main.themenseite.themenseite.themenseite .orr-gruppe,
  html body main.themenseite.themenseite.themenseite .orr-kopf + .orr-intro + .orr-gruppe { margin: var(--luft-handy) 0 !important; }
}

/* ----------------------------------------------------------------------
   Handy, Startseite und Winter-Startseite (<main> ohne Klasse): dieselbe
   Fuge von 48 px. GEMESSEN vorher (390 px): Hero -> Einleitung 120,
   Einleitung -> Bilder 80, Abschnitt -> Abschnitt 88 bis 96, Text -> Bilder
   16, Bildunterschrift -> naechstes Bild 16 / 32 / 40, Ueberschrift -> Text
   96 (56 + 40 Rinne). Ueberschrift -> Text wird 40 wie auf den Themenseiten
   (Kleinzeile, Ueberschrift, Satz bleiben ein Textblock).
   ---------------------------------------------------------------------- */
@media (max-width: 809px) {
  html body main:not([class]) { --luft-handy: 48px; }
  html body main:not([class]) .einleitung,
  html body main:not([class]) .versatz,
  html body main:not([class]) .abschnitt,
  html body main:not([class]) .abschnitt.buchen { padding-top: var(--luft-handy) !important; }
  html body main:not([class]) .abschnitt { gap: var(--luft-handy) !important; }
  html body main:not([class]) .abschnitt > .satz { margin-top: -8px !important; }
  html body main:not([class]) .abschnitt > .bildreihe,
  html body main:not([class]) .abschnitt > .bildreihe + .bildreihe { margin-top: 0 !important; }
  html body main:not([class]) .bildreihe,
  html body main:not([class]) .versatz { gap: var(--luft-handy) !important; row-gap: var(--luft-handy) !important; }
  /* verschachtelter Abschnitt (Zimmerkopf): nicht noch einmal 48 obendrauf */
  html body main:not([class]) .abschnitt > .abschnitt:first-child { padding-top: 0 !important; }
  /* Zimmer-Schieber: Karten beginnen 48 px unter dem Text (gleis haengt mit -16 darin) */
  html body main:not([class]) .gleisrahmen { margin-top: calc(var(--luft-handy) - 32px) !important; }
  html body main:not([class]) .abschnitt > .drittelreihe { margin-top: 0 !important; }
  html body main:not([class]) .drittelreihe { gap: var(--luft-handy) !important; row-gap: var(--luft-handy) !important; }
  /* Winter-Startseite: gestapelte Bilder (Bild, Bild) wie jede andere Reihe */
  html body main:not([class]) .bildstapel { gap: var(--luft-handy) !important; margin-top: 0 !important; }
}

/* Handy, Restaurants in Fiss: Textblock und Bilder auf dieselbe Fuge */
@media (max-width: 809px) {
  html body main.rseite .tbreit.abschnitt { margin-top: 48px !important; padding-top: 0 !important; }
  html body main.rseite .rw { margin-top: 48px !important; }
  html body main.rseite section.rl { margin-top: 48px !important; }
  html body main.rseite > .qv.qv-wege, html body main.rseite > section + .qv-wege { margin-top: 48px !important; }
  html body main.rseite .rw-raster { gap: 48px !important; row-gap: 48px !important; }
}

/* Zimmer-Schieber: Balken mit Nummerierung klebte am Kartentext (Michael 12.10.2026:
   "Das klebt ja genau dran"). GEMESSEN Kartentext -> Balken: 390 px 6 px,
   1024 und 1440 px 54 px. Der Zug nach oben (-56 px) wird kleiner, und der
   Platz geht ueber margin-bottom zurueck, damit der Abstand zum NAECHSTEN
   Block gleich bleibt (Handy 48 px). Handy Luft 48, ab 1024 px 80. */
@media (max-width: 809px) {
  html body #zimmer .gleissteuerung { margin-top: -14px !important; margin-bottom: -42px !important; }
}
@media (min-width: 1024px) {
  html body #zimmer .gleissteuerung { margin-top: -30px !important; margin-bottom: -26px !important; }
}

/* 12.10.2026, Michael: (1) Texte der Ortskarten am Handy in EINER Linie mit dem Bild, (2) neues Kapitel =
   mehr Abstand ("dass man sieht, dass es ein neuer Abschnitt ist"), (3) Angaben-Texte frueher umbrechen.
   (1) GEMESSEN: .orr-karte.l-h hat align-items:center (aus dem Desktop-Raster); in der Spalte zentriert das
       den Text (Linkskante 23 px eingerueckt) und laesst das Bild auf Inhaltsbreite schrumpfen.
   (2) Fugen INNERHALB eines Kapitels bleiben 48 px (Bild, Bild, Text); vor einer neuen Kapitelueberschrift
       (.tbreit der Themenseiten, .abschnitt der Startseiten) stehen 96 px.
   (3) Die Angaben (Etikett + Wert) bekommen eine Zeilenlaenge von 24 Zeichen, ausgeglichen. */
@media (max-width: 809px) {
  html body main.themenseite.themenseite.themenseite .orr-karte,
  html body main.themenseite.themenseite.themenseite .orr-karte.l-h { align-items: stretch !important; }
  html body main.themenseite.themenseite.themenseite .orr-karte figure { width: 100% !important; }
  html body main.themenseite.themenseite.themenseite .orr-karte .orr-text { width: 100%; padding-left: 0 !important; }

  html body main.themenseite.themenseite.themenseite { --luft-kapitel: 96px; }
  html body main.themenseite.themenseite.themenseite > section.tbreit,
  html body main.themenseite.themenseite.themenseite > section + section.tbreit { margin-top: var(--luft-kapitel) !important; }
  html body main:not([class]) { --luft-kapitel: 96px; }
  html body main:not([class]) .abschnitt { padding-top: var(--luft-kapitel) !important; }
  html body main:not([class]) .abschnitt > .abschnitt:first-child { padding-top: 0 !important; }
  html body main.rseite .tbreit.abschnitt { margin-top: 96px !important; }
}
@media (max-width: 1199px) {
  html body .rand dd { max-width: 24ch; text-wrap: balance; }
}

/* Tablet (810 bis 1199 px): ein einzelner Absatz im Satzblock steht so breit wie der Text neben einem Bild
   (Michael 12.10.2026: "Mach den unteren Text so breit wie den oberen"). GEMESSEN bei 946 px auf der
   Mountainbike-Seite: Text im Paar 413 px, Text im Satzblock nur 286 px (eine von drei Spalten). Jetzt zwei Spalten
   breit, gedeckelt auf 413 px, damit die Zeile nicht laenger wird als oben. */
@media (min-width: 810px) and (max-width: 1199px) {
  html body .tbreit > .satz > p.lauf:only-of-type { grid-column: 1 / span 2 !important; max-width: 67.5% !important; }   /* Prozent bezieht sich auf die zwei Spalten (619 px): 67,5 % = 413 px wie der Text im Paar */
}

/* Michael 24.10.2026: "Wenn es zu wenig Platz gibt, bei schmalen Handys, statt dem Schriftzug Gebhard einfach
   das Logo rein." Gemessen: bis 413 px stoesst die Wortmarke fast an DE/EN/NL (375 px: 0 px Luecke) und ueberlappt
   ab 340 px den Menueknopf (-2 px). Dort steht das echte Signet (~/.claude/marke-gebhard, Linien beruehren den
   Kreis), als Maske in der Textfarbe, damit es auf hellem und dunklem Kopf mitfaerbt. Der Text "Gebhard" bleibt
   im Link (Schriftgroesse 0), Vorleseprogramme sagen weiter "Gebhard". Zurueck: kopf.css.vor-signet-24102026 */
@media (max-width: 413px) {   /* 400 px: nur 13 px Luecke zu DE/EN/NL, 414 px: 20 px */
  .wortmarke {
    font-size: 0; letter-spacing: 0; text-indent: 0; top: 0;
    display: block; width: 36px; height: 36px; justify-self: center;
    background: currentColor;
    -webkit-mask: url(/bilder/marke/gebhard-signet.svg) center / contain no-repeat;
            mask: url(/bilder/marke/gebhard-signet.svg) center / contain no-repeat;
  }
}

/* Regelhinweis in der Kalendertafel (Michael 24.10.2026: "Gleiche ihn dem Design an. Keine Abrundung an den Ecken.
   Swiss Grid, Cereal, mathematische Anordnung."). Statt rosa Flaeche mit 12 px Rundung: zwei Haarlinien, Luft in
   ganzen Takten (2 Takte innen, 3 Takte nach unten), Inter 14/24. Ein Verstoss traegt die obere Linie in der
   Akzentfarbe, darunter der Vorschlag als Link; die reine Auskunft (z. B. Mindestaufenthalt) bleibt ganz ruhig. */
.gbt-tafel .gbt-regel{margin:0;padding:16px 0 24px;border:0;border-top:1px solid rgba(61,55,51,.24);
  border-radius:0;   /* unten traegt der Fuss der Tafel die Linie, sonst stuenden zwei Haarlinien uebereinander */
  background:none;
  font:400 14px/24px Inter,system-ui,sans-serif;letter-spacing:0;color:var(--tinte,#3D3733)}
.gbt-tafel .gbt-regel[hidden]{display:none}
.gbt-tafel .gbt-regel[data-art="verstoss"]{border-top-color:var(--akz,#8C5A3C)}
.gbt-tafel .gbt-regeltext{display:block}
.gbt-tafel .gbt-regelnimm{display:block;margin-top:8px;padding:0;border:0;background:none;cursor:pointer;
  font:inherit;color:var(--tinte,#3D3733);text-align:left;text-decoration:underline;text-underline-offset:4px;
  text-decoration-thickness:1px;text-decoration-color:var(--akz,#8C5A3C)}   /* 24.10.2026 Michael: Unterstrich in der Farbe der Linie unter Belegung */
.gbt-tafel .gbt-regelnimm[hidden]{display:none}
@media (hover:hover) and (pointer:fine){ .gbt-tafel .gbt-regelnimm:hover{color:var(--akz,#8C5A3C)} }

/* 27.10.2026 Michael: "Warum ist der Header in der Home-Seite so klein, mach ihn groesser als bei allen anderen Seiten."
   Gemessen: unter 1200 px war der Kopf der Startseite flacher als die Unterseiten (600 px: 346 gegen 749 px), weil der
   Schaukasten das Seitenverhaeltnis des ersten Bildes (2048/1352) traegt. Jetzt hoeher als die Unterseiten (350/500 bzw.
   ~0,68): bis 809 px 350/560, bis 1439 px 4/3; ab 1440 px war die Startseite schon hoeher (895 gegen 800).
   Zurueck: kopf.css.vor-homekopf-27102026 */
@media (max-width: 809px) {
  html body .auftakt-bild figure[data-seitenschau] > .ss-kasten { aspect-ratio: 350 / 560 !important; height: auto !important; }
}
@media (min-width: 810px) and (max-width: 1439px) {
  html body .auftakt-bild figure[data-seitenschau] > .ss-kasten { aspect-ratio: 4 / 3 !important; height: auto !important; }
}

/* ---- Responsive-Fix 28.10.2026 Teil 2: zweiter Querverweis darf am Handy keine dritte Spalte aufziehen; Verweiswoerter duerfen unter 1200 px umbrechen ---- */
@media (max-width: 809px) { html body .abschnitt > .qv-wege > .qv-weg, html body .tbreit > .qv-wege > .qv-weg { grid-column: auto !important; } }
@media (max-width: 1199px) { .qv-weg { min-width: 0; max-width: 100%; } .qv-teil { white-space: normal; } .qv-strich { min-width: 12px; } }

/* ---- Responsive-Fix 28.10.2026 Teil 3: Spezifitaet. nth-of-type(2) legt den zweiten Verweis auf Spalte 3, auch am Handy mit einer Spalte ---- */
@media (max-width: 809px) { html body .abschnitt > .qv-wege > .qv-weg:nth-of-type(n), html body .tbreit > .qv-wege > .qv-weg:nth-of-type(n) { grid-column: auto !important; } }

/* ---- Responsive-Fix 28.10.2026 Teil 6: Tippziele auf Fingergroesse (44 px), ohne den Satz zu verschieben ---- */
@media (pointer: coarse), (max-width: 809px) {
  .gleispfeil { min-width: 44px; min-height: 44px; }
  .wortmarke { min-height: 44px; display: inline-flex; align-items: center; }
  .sprache a { padding-inline: 8px; margin-inline: -8px; }
}

/* 28.10.2026 Layoutsprung 0,22 am Handy (Startseite): vor dem Schau-Skript hatte das Bild sein eigenes Verhaeltnis (2048/1352),
   danach 350/560 (Handy) bzw. 4/3 (810 bis 1439 px). Jetzt von Anfang an dasselbe Verhaeltnis. Gemessen: 0,222 -> 0,020.
   Zurueck: kopf.css.vor-cls-28102026. Live zusaetzlich als <style id="hero-cls"> in /index.html (bis zum naechsten Vollbau). */
@media (max-width: 809px) {
  html body .auftakt-bild figure[data-seitenschau]:not(:has(> .ss-kasten)) > img { aspect-ratio: 350 / 560; height: auto; width: 100%; object-fit: cover; }
}
@media (min-width: 810px) and (max-width: 1439px) {
  html body .auftakt-bild figure[data-seitenschau]:not(:has(> .ss-kasten)) > img { aspect-ratio: 4 / 3; height: auto; width: 100%; object-fit: cover; }
}

/* 01.11.2026 Michael, Handy (<= 809 px): "die Platzierung der Bilder immer auf der gleichen Stelle wie auf der Home, genau so gross;
   ein kleiner Abstand zwischen Titelbild und Verfuegbarkeit-Button; der Button so breit wie die Bilder, nicht breiter."
   Gemessen bei 390 px: Home Titelbild x36 y128 318 x 509. Unterseiten lagen bei y136 (.tvoll-kopf margin-top 48 statt 40),
   Zimmerseiten bei x20 y116 und 350 breit (main padding 20, auftakt padding-top 28). Balken lag bei x20, 350 breit (11.10.-Regel: durfte
   hinausragen, ist abgeloest). Abstand Bild zu Balken: wie auf der Home, keine Hoehenkappung (eine max-height mit aspect-ratio machte die Bilder am iPhone
   schmaler als der Balken: 311 statt 318 px, gemessen an Michaels Screenshot 01.11.2026).
   Zurueck: kopf.css.vor-handy-hero-01112026 */
@media (max-width: 809px) {
  html body main.themenseite.themenseite.themenseite > section.tvoll:first-child:has(> figure[data-seitenschau]),
  html body main.themenseite.themenseite.themenseite > section.tvoll.tvoll-kopf { margin-top: 40px !important; }   /* gewinnt gegen die !important-Regel mit --luft-handy (48 px) */
  html body .zpm .auftakt { padding-top: 40px; }
  html body .zpm .auftakt .schau { margin-inline: 16px; }
  html body .klebeleiste,
  html body.mit-chat .klebeleiste { left: 36px !important; right: 36px !important; }
}

/* 01.11.2026 Michael: Verweise in Textabschnitten wie auf Home, Zeile unter dem Text */
@media (min-width: 1200px) {
  /* gleiche Breite wie die zwei Textspalten (Spalte 1 bis 3 des Fuenfspalters), Randspalte bleibt frei */
  html body .tbreit > .qv-wege { margin: 32px 0 0 63px !important; padding: 0 !important; width: calc((100% - 126px) * 726 / 1001) !important; }
}
@media (max-width: 1199px) { html body .tbreit > .qv-wege { margin-top: 32px !important; } }

/* 01.11.2026 Michael: Bewertungsband und Footer am Handy und Tablet passen nicht, Desktop ist gut.
   Gemessen vorher bei 860 und 390 px (Startseite): Knopf bis Zahl 168 / 176 px, Anzahl bis Fussanfang 148 px
   plus Fusspolster 96 / 64 px. Ziel: dieselben Verhaeltnisse wie der Kommentar oben (104 px Knopf bis Band). */
@media (max-width: 1199px) {
  html body .bewertungsband { margin-top: 56px; padding-bottom: 0; }
  html body main:has(.bewertungsband) ~ .fuss { padding-top: 40px; }
}

/* 01.11.2026 Michael (Handy-Screenshot): im Footer brachen "Direkt buchen = kein Aufschlag" und "AGB und Stornobedingungen"
   in zwei gleich weit auseinander stehende Zeilen und sahen wie zwei Eintraege aus. Bis 899 px trennt jetzt Abstand die
   Eintraege, nicht die Zeilenhoehe: umbrochene Zeilen liegen eng, Eintraege haben Luft. Desktop bleibt unveraendert. */
@media (max-width: 809px) {
  html body .fussblock li { line-height: 19px; margin-bottom: 9px; }
  html body .fussblock li a { padding: 2px 0; }
}

/* 01.11.2026 Michael: "Du misst die Containerbreite und nicht die tatsaechliche Schriftbreite." Gemessen mit der echten Schrift
   bei 390 px: Spalte 147 px, breitester Eintrag je Block 171 px (Unterkunft Serfaus-Fiss-Ladis), 167 (AGB und Stornobedingungen),
   152 (Verfuegbarkeit und Buchen). Das Raster gab jedem Block die gleiche Breite, die Eintraege brachen um. Bis 809 px ist
   jeder Block jetzt so breit wie sein breitester Eintrag, Eintraege brechen nie, die Bloecke reihen sich ohne Umbruch. */
@media (max-width: 809px) {
  html body .fussraster { display: grid; grid-template-columns: max-content max-content !important; justify-content: space-between; column-gap: 24px !important; row-gap: 32px !important; }
  html body .fussblock li, html body .fussblock li a { white-space: nowrap; font-size: 13px; }
  html body .fussblock li { line-height: 20px; margin-bottom: 6px; }
}
/* gleiche Messung bei 360 px: 165 + 126 + 24 = 315 px Text gegen 288 px Platz, bei 320 px gegen 248 px. */
@media (max-width: 399px) {
  html body .fussblock li, html body .fussblock li a { font-size: 12px; }
  html body .fussraster { column-gap: 16px !important; }
}
@media (max-width: 339px) {
  html body .fussraster { grid-template-columns: max-content !important; justify-content: start; }
}

/* === /menue.css === */
/* =====================================================================
   Das Menue der Seite -- Fassung N31 aus probe-navigation.html
   Michael 25.09.2026: "Wir bauen N31 als Menue ein. Bring es zum Leben
   mit Emil Kowalski, mach es spektakulaer."

   Der Kopf der Tafel sitzt Pixel fuer Pixel auf dem Kopf der Seite: das X
   steht dort, wo der Hamburger stand, die Wortmarke bleibt an ihrem Platz
   und in ihrer Groesse. Gemessen am echten Kopf (25.09.2026):
     1440/810  Kopfhoehe 110, Knopf 40x33 bei x=40, Mitte y=55,
               Wortmarke 30 px, Sperrung .42em, Polster 40/0/22
     390       Kopfhoehe  88, Knopf bei x=20, Mitte y=44, Marke 21 px

   MOTION (Emil Kowalski, animations.dev):
     - nur transform, opacity, filter und clip-path, also GPU
     - Eintritt ease-out cubic-bezier(.23,1,.32,1), Austritt kuerzer
     - Uebergaenge statt Keyframes, damit ein Klick mitten in der
       Bewegung sofort umkehrt und nicht erst zu Ende laeuft
     - gestaffelt, 60 ms je Zeile: das liest sich als Reihenfolge
     - nichts startet bei scale(0) -- alles kommt aus 8 px und Unschaerfe
     - prefers-reduced-motion schaltet auf eine reine Blende um
   ===================================================================== */
:root { --me-aus: cubic-bezier(.23,1,.32,1); }

.menue {
  /* padding: 0 ist noetig -- kopf.css gibt .menue 64/40 mit, und das kam
     hier oben drauf: das X sass dadurch bei y=119 statt 55 und bei x=80
     statt 40 (gemessen 25.09.2026 an der eingebauten Fassung). */
  position: fixed; inset: 0; z-index: 60; padding: 0;
  background: #EFECE6; color: #3D3733;
  display: flex; flex-direction: column;
  visibility: hidden; pointer-events: none;
}
/* display:flex MUSS auch hier stehen. kopf.css hat .menue.offen{display:block},
   und das ist spezifischer als .menue{display:flex} -- die Tafel war
   geoeffnet dadurch ein Block, flex:1 am Satz wirkte nicht, und der Inhalt
   endete nach 675 px in einem 1180 px hohen Fenster (gemessen 25.09.2026). */
.menue.offen { visibility: visible; pointer-events: auto; display: flex; }

/* Der Vorhang: die Flaeche wischt von oben herein, statt zu blenden.
   clip-path laeuft auf der GPU und laesst sich jederzeit umkehren. */
.menue::before {
  content: ""; position: absolute; inset: 0; background: #EFECE6;
  clip-path: inset(0 0 100% 0);
  transition: clip-path 620ms var(--me-aus);
}
.menue.offen::before { clip-path: inset(0 0 0 0); }

.menue > * { position: relative; z-index: 1; }

/* ---------- Kopf der Tafel ---------- */
.me-kopf {
  position: relative; z-index: 2;
  flex: 0 0 auto; height: 110px; display: grid;
  grid-template-columns: 1fr auto 1fr; align-items: center;
  padding: 0 var(--rand); max-width: var(--breite); width: 100%; margin: 0 auto;
}
.me-x {
  justify-self: start; width: 52px; height: 45px; position: relative;
  border: 0; background: transparent; padding: 12px 2px; margin: -12px -2px; box-sizing: content-box; cursor: pointer; border-radius: 0;  /* 30.09.2026: 44 x 44 */
}
.me-x span {
  position: absolute; left: 6px; top: 22px; width: 40px; height: 1px; background: #3D3733;
  transition: transform 260ms var(--me-aus);
}
.me-x span:nth-child(1) { transform: rotate(45deg); }
.me-x span:nth-child(2) { transform: rotate(-45deg); }
.me-x:hover span:nth-child(1) { transform: rotate(45deg) scaleX(1.12); }
.me-x:hover span:nth-child(2) { transform: rotate(-45deg) scaleX(1.12); }
.me-x:active { transform: scale(.97); }
.me-x:focus-visible { outline: 2px solid #3D3733; outline-offset: 4px; }
.me-marke {
  font-family: Oswald, system-ui, sans-serif; font-weight: 300;
  font-size: 30px; letter-spacing: .42em; text-indent: .42em;
  text-transform: uppercase; text-decoration: none; color: #3D3733;
  padding: 40px 0 22px; line-height: 1;
}
.me-sprache {
  justify-self: end; margin: 0;
  font-family: "DM Mono", ui-monospace, monospace; font-size: 12px;
  letter-spacing: .2em; text-transform: uppercase; color: #6E6862; white-space: nowrap;
}
.me-sprache { -webkit-user-select: none; user-select: none; }
.me-sprache a { color: #3D3733; text-decoration: none; display: inline-block; padding: 14px 6px; margin: -14px -6px;
                cursor: pointer; -webkit-tap-highlight-color: transparent; touch-action: manipulation; }
.me-sprache .hier, .me-sprache .aus { cursor: default; }  /* 30.09.2026: 44 hoch statt 16 */
.me-sprache .aus, .me-sprache a.aus { color: #A9A299; }

/* ---------- Satz ---------- */
/* Der Satz liegt ueber die GANZE Tafel und zentriert sich darin -- nicht
   im Rest zwischen Kopf und Fuss. Mit flex:1 sass die Mitte 32 px zu tief,
   weil der Kopf 110 und der Fuss nur 44 px hoch ist (gemessen 25.09.2026:
   Mitte 622 in einem 1180 px hohen Fenster, richtig waeren 590).
   Das Polster ist oben wie unten so hoch wie der Kopf: dadurch liegt die
   Mitte exakt auf der Fenstermitte, und der Satz kann nie unter den Kopf
   oder in den Fuss laufen. */
.me-satz {
  /* min(110px, 12vh): bei einem flachen Fenster (1280x700) war der Satz
     hoeher als der Raum zwischen den beiden 110-px-Polstern und wurde nach
     unten gedrueckt -- die Mitte lag 16 px zu tief. Mit 12vh schrumpft das
     Polster mit der Hoehe mit. */
  position: absolute; inset: 0; padding: min(110px, 12vh) var(--rand);
  display: grid; place-items: center; z-index: 1;
}
.me-liste {
  /* width: max-content, nicht 100%: sonst ist die Zeile so breit wie der
     Satzspiegel, und das seitliche Fach haengt an deren Kante statt an der
     des Wortes -- bei 1600 px lagen so alle fuenf Punkte ausserhalb. */
  list-style: none; margin: 0 auto; padding: 0;
  width: max-content; max-width: 100%;
  display: grid; grid-template-columns: minmax(0,1fr) auto minmax(0,1fr);
  align-items: baseline;
}
.me-liste li { display: contents; }
.me-liste li.hat-unter {
  display: grid; grid-template-columns: subgrid; grid-column: 1 / -1;
  align-items: baseline; position: relative;
}
.me-liste a, .me-kopfknopf { display: contents; color: #3D3733; text-decoration: none; }
.me-kopfknopf { border: 0; background: transparent; padding: 0; margin: 0; cursor: pointer; font: inherit; }

.me-liste a > span, .me-kopfknopf > span {
  font-family: "Cormorant Garamond", 'Cormorant Ersatz',Georgia, serif; font-weight: 300;
  /* min(4.4vw, 9vh) statt nur vw: sechs Zeilen mal 1.16em muessen in die
     Hoehe passen, sonst laeuft der Satz bei einem flachen Fenster unten
     heraus. Der kleinere der beiden Werte gewinnt. */
  /* Michael 25.09.2026: "Mach die Schrift 20 % heller" und "etwas weniger
     Zeilenabstand". 20 Prozent heller heisst 20 Prozent des Weges zum
     Grund, nicht 20 Prozent Deckkraft: #3D3733 auf #EFECE6 ergibt
     #615B57, Kontrast 5,67:1 -- noch ueber der Schwelle 4,5.
     Zeilenabstand 1,16 -> 1,04 em. */
  font-size: clamp(26px, min(4.4vw, 9vh), 64px); line-height: 1.04em;
  text-transform: uppercase; letter-spacing: .04em; color: #615B57;
  opacity: 0; transform: translate3d(0,14px,0); filter: blur(6px);
  transition: opacity 520ms var(--me-aus), transform 560ms var(--me-aus),
              filter 560ms var(--me-aus), color 240ms ease;
  transition-delay: calc(var(--i) * 60ms + 160ms);
}
.menue.offen .me-liste a > span,
.menue.offen .me-kopfknopf > span { opacity: 1; transform: none; filter: blur(0); }
/* Beim Schliessen kurz und ohne Staffelung -- ein Austritt darf nicht
   so lange dauern wie ein Eintritt. */
.menue:not(.offen) .me-liste a > span,
.menue:not(.offen) .me-kopfknopf > span {
  transition-duration: 200ms; transition-delay: 0ms;
}

.me-li    { grid-column: 1; justify-self: end;   padding-right: .28em; position: relative; }
.me-strich{ grid-column: 2; justify-self: center; }
.me-re    { grid-column: 3; justify-self: start; padding-left: .28em; position: relative; }
.me-voll  { grid-column: 1 / -1; justify-self: center; position: relative; }

.me-nr {
  position: absolute; right: 100%; bottom: .12em; margin-right: 34px;
  font-family: "DM Mono", ui-monospace, monospace; font-weight: 400;
  font-size: 11px; letter-spacing: .12em; text-indent: 0;
  text-transform: none; color: #A9A299; white-space: nowrap;
  transition: color 240ms ease;
}
.me-liste:hover a > span, .me-liste:hover .me-kopfknopf > span { color: #A9A299; }
.me-liste a:hover > span, .me-liste a:focus-visible > span,
.me-kopfknopf:hover > span, .me-kopfknopf:focus-visible > span { color: #3D3733; }
/* Der geoeffnete Punkt bleibt dunkel, auch wenn der Zeiger weiterwandert.
   Vorher trat er mit allen anderen zurueck, sobald die Maus die Liste
   verliess -- man sah dann nicht mehr, WOZU das offene Fach gehoert.
   Die Regel steht nach den Hover-Regeln, damit sie gewinnt. */
.me-liste .me-kopfknopf[aria-expanded="true"] > span,
.me-liste:hover .me-kopfknopf[aria-expanded="true"] > span { color: #3D3733; }
.me-liste .me-kopfknopf[aria-expanded="true"] .me-plus i { background: #3D3733; }
.me-liste a:focus-visible > span, .me-kopfknopf:focus-visible > span { outline: 2px solid #3D3733; outline-offset: 6px; }

/* ---------- das Plus ---------- */
.me-plus {
  position: absolute; left: 100%; top: 50%; margin-left: 26px;
  width: 34px; height: 34px; transform: translateY(-50%);
}
.me-plus i {
  position: absolute; left: 0; top: 16px; width: 34px; height: 1px; background: #8A857D;
  transition: transform 420ms var(--me-aus), background 240ms ease;
}
.me-plus i:last-child { transform: rotate(90deg); }
.me-kopfknopf[aria-expanded="true"] .me-plus i:last-child { transform: rotate(0deg); }
.me-kopfknopf:hover .me-plus i { background: #3D3733; }
.me-plus::after {           /* Antippflaeche 44 px, unsichtbar */
  content: ""; position: absolute; left: 50%; top: 50%;
  width: 44px; height: 44px; transform: translate(-50%,-50%);
}

/* ---------- Faecher ---------- */
.me-fach {
  grid-column: 1 / -1; display: grid; grid-template-rows: 0fr;
  transition: grid-template-rows 520ms var(--me-aus);
}
.me-fach.auf { grid-template-rows: 1fr; }
.me-fachinnen { overflow: hidden; min-height: 0; }
.me-fach ul { list-style: none; margin: 0; padding: 0; }
.me-fach li { display: list-item; opacity: 0; transform: translate3d(0,8px,0);
  transition: opacity 200ms ease, transform 200ms ease; }
.me-fach.auf li {
  opacity: 1; transform: none;
  transition: opacity 420ms var(--me-aus), transform 420ms var(--me-aus);
  transition-delay: calc(var(--j) * 45ms);
}
.me-fach a {
  display: flex; align-items: center; justify-content: center;
  min-height: 44px; text-decoration: none; color: #6E6862;
  font-family: "DM Mono", ui-monospace, monospace; font-weight: 400;
  font-size: clamp(13px, 1.1vw, 15px); letter-spacing: .18em; text-transform: uppercase;
  transition: color 220ms ease;
}
.me-fach a:hover, .me-fach a:focus-visible { color: #3D3733; }

/* Desktop: die Faecher haengen seitlich an einer Haarlinie */
@media (min-width: 1440px) {
  .me-fach {
    position: absolute; top: 50%; width: 260px;
    grid-template-rows: 1fr; opacity: 0; pointer-events: none;
    transition: opacity 380ms var(--me-aus), transform 520ms var(--me-aus);
  }
  .me-fach[data-seite="rechts"] { left: calc(100% + 76px); transform: translate(-14px,-50%); }
  .me-fach[data-seite="links"]  { right: calc(100% + 76px); transform: translate(14px,-50%); }
  .me-fach.auf { opacity: 1; pointer-events: auto; transform: translate(0,-50%); }
  .me-fach[data-seite="rechts"] ul { padding-left: 26px; border-left: 1px solid #D5CEC1; }
  .me-fach[data-seite="links"]  ul { padding-right: 26px; border-right: 1px solid #D5CEC1; }
  .me-fach[data-seite="rechts"] a { justify-content: flex-start; }
  .me-fach[data-seite="links"]  a { justify-content: flex-end; }
  .me-fach a { min-height: 44px; }  /* 30.09.2026: war 40 -- unter der Tippflaeche */
}
/* Tablet: waagrecht -- gemessen 52 px statt 220 px Hoehe */
@media (min-width: 761px) and (max-width: 1439px) {
  .me-fach ul { display: flex; flex-wrap: wrap; justify-content: center; gap: 2px 28px; padding: 10px 0 2px; }
  .me-fach a { min-height: 40px; }
}

/* ---------- Fuss ---------- */
.me-fuss {
  /* margin: auto auto 0 -- oben auto schiebt den Fuss ans untere Ende,
     seitlich auto zentriert ihn. Vorher stand margin-top:auto VOR einem
     margin:0 auto, und die Kurzform hat es wieder auf 0 gesetzt: der Fuss
     sass dadurch direkt unter dem Kopf bei y=110 (gemessen 25.09.2026). */
  position: relative; z-index: 2;
  flex: 0 0 auto; display: grid; grid-template-columns: 1fr auto 1fr;
  align-items: baseline; gap: 20px; padding: 0 var(--rand) 26px;
  max-width: var(--breite); width: 100%; margin: auto auto 0;
  font-family: "DM Mono", ui-monospace, monospace; font-size: 11px;
  letter-spacing: .16em; text-transform: uppercase; color: #6E6862;
  opacity: 0; transition: opacity 520ms var(--me-aus) 420ms;
}
.menue.offen .me-fuss { opacity: 1; }
.me-fuss p { margin: 0; }
.me-fuss p:last-child { justify-self: end; }
.me-fuss a { color: inherit; text-decoration: none; display: inline-block; padding: 15px 0; margin: -15px 0; }  /* 30.09.2026: Tippflaeche 44 statt 14 */
.me-fuss a:hover { text-decoration: underline; text-underline-offset: 4px; }

/* ---------- Handy ---------- */
@media (max-width: 760px) {
  .me-kopf { height: 88px; }
  .me-satz { padding: min(88px, 11vh) var(--rand); }
  .me-marke { font-size: 24px; padding: 28px 0 14px; }
  .me-liste a > span, .me-kopfknopf > span { font-size: clamp(20px, min(7vw, 5.2vh), 32px); line-height: 1.1em; }
  .me-nr { display: none; }
  .me-plus { left: 100%; margin-left: 6px; width: 26px; height: 26px; }
  .me-plus i { width: 26px; top: 12px; }
  .me-fach ul { padding: 8px 0 10px; }
  .me-fach.auf ul { border-top: 1px solid #DCD5C8; border-bottom: 1px solid #DCD5C8; margin: 6px 0 8px; }
  .me-fach a { min-height: 44px; font-size: 13px; }
  .me-fuss { grid-template-columns: 1fr; gap: 4px; text-align: center; padding-bottom: 18px; }
  .me-fuss p:last-child { justify-self: center; }
}

@media (prefers-reduced-motion: reduce) {
  .menue::before { transition: none; clip-path: none !important; }
  .me-liste a > span, .me-kopfknopf > span, .me-fach, .me-fach li, .me-fuss {
    transition: opacity 180ms ease !important;
    transform: none !important; filter: none !important; transition-delay: 0ms !important;
  }
}

/* Menueschrift am Handy groesser (30.09.2026) ============================
   Michael: "Schrift bei Breakpoint Mobil groesser vom Menue."
   Gemessen bei 390 px: die Hauptpunkte standen auf clamp(20px, min(7vw,
   5.2vh), 32px) und kamen damit auf 21 px -- 7 vw sind bei 390 px nur 27 px,
   und 5,2 vh deckelten auf 21. Neu: Untergrenze 26, Obergrenze 38, und die
   Hoehenbindung faellt weg, weil sie am Handy die Schrift klein haelt, statt
   sie zu schuetzen.
   Die Unterpunkte in den Faechern ziehen mit: 13 auf 15 px. */
@media (max-width: 809px) {
  html body .me-liste a > span,
  html body .me-kopfknopf > span {
    /* 01.10.2026: 8,2vw waren zu viel -- bei 390 px ragte "SOMMER | WINTER+"
       bis 399 px, also 9 px ueber den Rand, und die Zeilen standen mit Mitte
       218 statt 195 nicht mittig. 6,6vw ergibt dort 26 px und laesst das Plus
       innerhalb. */
    /* Deckel 34 statt 38: bei 810 px war die Liste 821 px breit, der
       Satzspiegel aber nur 730 -- sie ragte 51 px aus dem Fenster. Gemessen
       01.10.2026. */
    font-size: clamp(20px, 6.1vw, 34px) !important;
    line-height: 1.15em !important;
    max-width: 100% !important;
  }
  html body .me-fach a { font-size: 15px !important; letter-spacing: .16em !important; }
}

/* Kopfzeile fluchtet mit dem Inhalt (30.09.2026) =========================
   Michael: "Warum gibt es auf der rechten Seite einen Rand und auf der linken
   nicht? Gleich viel links wie rechts, in einer Linie mit dem Hamburger, und
   Abschluss rechts mit dem DE/EN."

   Gemessen bei 1440 px: der Hamburger begann bei 41, das Bild darunter bei 43
   -- zwei Pixel daneben. Rechts endete der Sprachwaehler bei 1360, das Bild
   aber erst bei 1398: 38 px Unterschied.
   Ursache: .me-kopf hat 40 px Innenabstand auf einer Breite von 1435 px,
   waehrend der Inhalt darunter auf min(1435px, 100% - 2 x Rand) sitzt -- das
   sind zwei verschiedene Rechnungen. Jetzt dieselbe fuer beide, und die
   Knoepfe geben ihren eigenen Innenabstand nach aussen ab, damit ihre SCHRIFT
   auf der Kante steht, nicht ihr Kasten. */
.me-kopf {
  width: min(var(--breite, 1435px), 100% - 2 * var(--rand)) !important;
  max-width: none !important;
  margin-inline: auto !important;
  padding-inline: 0 !important;
}
/* Der Hamburger traegt links 2 px Innenabstand, der Sprachwaehler rechts --
   beide werden nach aussen ausgeglichen, damit die sichtbare Kante stimmt. */
.me-kopf > :first-child { margin-left: -2px; }
.me-kopf > :last-child { margin-right: -2px; }

/* Hamburger auf Schriftzughöhe, Sprachen mittig ==========================
   Michael 01.10.2026: "Das Hamburger Menue schliesst genau horizontal mit der
   Typografie GEBHARD ab. Oberster Strich ganz oben, unterster unten."

   Gemessen vorher bei 1440 px: Schriftzug 9 bis 101 (92 px), Hamburger 16 bis
   73 (57 px). Ein erster Versuch mit height: 1em und align-self: stretch hat
   den Knopf aus dem Kopf geschoben (gemessen -12 bis 4) -- die Striche haengen
   an einer festen Hoehe, nicht an der Schriftgroesse.
   Jetzt bekommt der Knopf die Hoehe der Wortmarke ueber eine eigene Variable,
   und die Striche verteilen sich darin. Alle drei Teile bleiben mittig. */
.me-kopf { align-items: center !important; }
.me-kopf .me-x,
.me-kopf .me-kopfknopf {
  height: var(--me-marke-h, 44px) !important;
  display: flex !important;
  flex-direction: column !important;
  justify-content: space-between !important;
  padding: 0 !important;
}

/* Hamburger und Sprachwähler fluchten mit dem Inhalt =====================
   Gemessen am 01.10.2026: der Satz beginnt bei 43 px (1440) bzw. 36 px (390),
   der Hamburger-Kasten bei 38 bzw. 34 -- die Striche selbst erst bei 48 bzw.
   44. Der Knopf trägt links 10 px Innenabstand, die sichtbare Linie steht
   damit 5 bis 8 px zu weit innen.
   Der Ausgleich holt die Striche auf die Satzkante; die Tippfläche bleibt
   vollständig erhalten, sie ragt nur nach außen. */
.me-kopf .me-x,
.me-kopf .me-kopfknopf { margin-left: -10px !important; }
.me-kopf > :last-child { margin-right: -2px !important; }

/* Das Plus zaehlt zur Zeilenbreite ======================================
   Michael 01.10.2026: "Menue nicht zentriert, Plus geht über den rechten Rand
   hinaus." Das Pluszeichen haengt als absolutes Element am Zeilenende und
   zaehlte deshalb nicht zur Breite -- die Zeile galt als passend, obwohl sie
   es nicht war. Jetzt steht es im Fluss, und die Zeile bleibt mittig. */
.me-liste a > span, .me-kopfknopf > span { max-width: 100%; }
.menue .me-liste li { padding-inline: 16px; }

/* Das offene Menue steht mittig ===========================================
   Michael 01.10.2026: "Menue nicht zentriert." Gemessen bei 390 px lagen die
   Wortmitten bei 159/126/174/132/168/198/115 statt bei 195. Zwei Ursachen,
   beide hier behoben:
   1. Die Woerter standen LINKSBUENDIG in der Mittelspalte, die so breit ist
      wie das laengste Wort. Jedes kuerzere Wort kippte dadurch nach links.
   2. Das Pluszeichen sass in der dritten Spalte und hatte links keinen
      Gegenpart. Die Mittelspalte rutschte um seine halbe Breite nach links.
      Darum bekommen erste und dritte Spalte jetzt dieselbe feste Breite. */
   NICHT TUN: die erste und dritte Spalte auf eine feste Breite zwingen. Am
   01.10.2026 probiert (var(--me-seite,1.15em)) und gemessen: die Doppelzeilen
   "ZIMMER | PREISE", "ESSEN | TRINKEN", "SOMMER | WINTER" stehen in genau
   diesen Spalten -- bei 890 px lag "Preise" danach bei 984 px, also 94 px
   ausserhalb des Fensters. Die 1fr-Spalten bleiben.
   Richtig ist minmax: die Spalte ist MINDESTENS so breit wie das Pluszeichen
   auf der anderen Seite -- damit steht die Mittelspalte wirklich in der Mitte
   -- und waechst trotzdem, sobald ein Wort darin steht. */
.me-liste { grid-template-columns: minmax(var(--me-seite, 1.15em), 1fr) auto minmax(var(--me-seite, 1.15em), 1fr) !important; }
.me-liste a > span, .me-kopfknopf > span { text-align: center; }

/* Die Unterfaecher sprengen die Liste nicht mehr ==========================
   Gemessen 01.10.2026 bei 810 px: zwei offene Faecher je 789 px breit zogen
   die Menueliste auf 821 px (Satzspiegel 730) -- sie ragte 51 px aus dem
   Fenster, und die Zeilenmitte lag bei 451 statt 405. Grid-Kinder haben
   min-width:auto und wachsen ueber ihre Spalte hinaus; min-width:0 bindet
   sie wieder an den Satzspiegel. */
.me-liste li.hat-unter, .me-fach, .me-fachinnen { min-width: 0; max-width: 100%; }
.me-fach, .me-fachinnen { overflow-wrap: normal; }

/* Die Liste ist ein Rasterkind -- und Rasterkinder haben min-width:auto, also
   eine automatische Mindestbreite, die sogar max-width:100% uebergeht.
   Gemessen 01.10.2026 bei 810 px: Satzspiegel 730, Liste 821. min-width:0
   bindet sie an den Satzspiegel zurueck. */
.me-satz > .me-liste, .me-liste { min-width: 0; }

/* Der Rahmen des Menuesatzes hatte KEINE Spaltenangabe. Ein Raster legt dann
   eine implizite Spalte "auto" an, und die ist so breit wie ihr Inhalt --
   gemessen 821 px in einem 730 px breiten Satzspiegel. Deshalb lief auch
   max-width:100% der Liste ins Leere: 100 % bezogen sich auf diese zu breite
   Spalte. Eine gezaehlte Spalte minmax(0,1fr) bindet beides an den Satz. */
.menue .me-satz { grid-template-columns: minmax(0, 1fr); }


/* Wortmarke im Menue so leicht wie im Kopf ==============================
   Michael 02.10.2026: "Der Schriftzug Gebhard oben in der Mitte soll, wenn das
   Menue geoeffnet ist, in der gleichen Staerke sein wie auf der Startseite."
   Gemessen bei 1440 px: Kopf Oswald 200, Menue Oswald 300. Gleiche Groesse,
   gleiche Laufweite, nur das Gewicht lief auseinander. */
#menue .me-marke { font-weight: 200; }


/* =====================================================================
   Das offene Menue (Fassung A "Fluegel", 11.10.2026)
   Michael: "Die Unterpunkte sofort sichtbar, kein zweiter Klick. Sommer und
   Winter eigene Punkte, die Seiten wechseln sich ab. Ohne Galerie."
   Eigene Klassen (mo-), damit die alten me-Regeln mit ihren !important
   nicht hineinreden. Der Rahmen (Kopf, Satz, Fuss, Vorhang) bleibt.

   Desktop ab 1100: Listen NEBEN dem Wort, Sommer links, Winter rechts, Info
     links; die erste Listenzeile steht auf der Oberkante der Versalien. Jede
     Hauptzeile gleich hoch (76 bis 86 px), die Fluegel haengen frei.
   Tablet 761 bis 1099: Listen unter dem Wort, an der Achse geteilt.
   Handy bis 760: Raster 8 px, zwei Spalten, linksbuendig.
   Eintritt: Woerter steigen aus einer Maske, Trennstrich wird gezogen,
   Haarlinie waechst, Unterpunkte gleiten von aussen herein.
   ===================================================================== */
:root { --mo-expo: cubic-bezier(.16,1,.3,1); }

.mo-liste {
  --wort: clamp(26px, min(4.4vw, 8vh), 64px);
  list-style: none; margin: 0 auto; padding: 0; width: 100%; max-width: 640px;
  display: grid; grid-template-columns: minmax(0,1fr) auto minmax(0,1fr); align-items: start;
}
.menue ol.mo-liste { gap: 0; }   /* kopf.css: .menue ol { gap: var(--a3) } waere spezifischer */
.mo-z { display: grid; grid-template-columns: subgrid; grid-column: 1 / -1; align-items: start; position: relative; margin-bottom: 8px; }
.mo-w {
  display: block; position: relative; text-decoration: none; color: #615B57;
  font-family: "Cormorant Garamond", 'Cormorant Ersatz', Georgia, serif; font-weight: 300;
  font-size: clamp(24px, min(4.4vw, 8vh), 64px); line-height: 1.1em;
  text-transform: uppercase; letter-spacing: .04em; transition: color 240ms ease;
}
.mo-s { grid-column: 2; justify-self: center; }
.mo-l { grid-column: 1; justify-self: end; display: flex; flex-direction: column; align-items: flex-end; position: relative; min-width: 0; }
.mo-r { grid-column: 3; justify-self: start; display: flex; flex-direction: column; align-items: flex-start; position: relative; min-width: 0; }
.mo-v { grid-column: 1 / -1; justify-self: center; display: flex; flex-direction: column; align-items: center; position: relative; }
.mo-l > .mo-w { padding-right: .28em; }
.mo-r > .mo-w { padding-left: .28em; }
.mo-nr {
  display: none; position: absolute; right: 100%; bottom: .12em; margin-right: 34px;
  font-family: "DM Mono", ui-monospace, monospace; font-size: 11px; letter-spacing: .12em;
  text-transform: none; color: #A9A299; white-space: nowrap;
}
.mo-liste:hover .mo-w { color: #A9A299; }
.mo-z:hover .mo-w, a.mo-w:focus-visible { color: #3D3733; }
a.mo-w:focus-visible { outline: 2px solid #3D3733; outline-offset: 6px; }

.mo-u { list-style: none; margin: 13px 0 0; padding: 0; font-family: "DM Mono", ui-monospace, monospace; font-size: 13px; letter-spacing: .13em; text-transform: uppercase; }
.mo-u a { display: flex; align-items: center; min-height: 44px; color: #6E6862; text-decoration: none; white-space: nowrap; transition: color 220ms ease; }
.mo-l > .mo-u { padding-right: .28em; text-align: right; }
.mo-l > .mo-u a { justify-content: flex-end; }
.mo-r > .mo-u { padding-left: .28em; }
.mo-v > .mo-u a { justify-content: center; }
.mo-u a:hover, .mo-u a:focus-visible { color: #3D3733; }
.mo-u a:focus-visible { outline: 2px solid #3D3733; outline-offset: 3px; }
.mo-z:hover .mo-u a { color: #615B57; }
.mo-z:hover .mo-u a:hover { color: #3D3733; }
.mo-hat { margin-top: 14px; margin-bottom: 6px; }

/* Eintritt: nur transform, opacity, filter; Ausgang kurz und ohne Staffelung */
.mo-m { display: block; overflow: hidden; padding: .05em 0 .09em; margin: -.05em 0 -.09em; }
.mo-t { display: block; transform: translate3d(0,112%,0) rotate(4deg); transform-origin: 0 100%; transition: transform 200ms ease; }
.menue.offen .mo-t { transform: none; transition: transform 1000ms var(--mo-expo); transition-delay: calc(var(--i) * 85ms + 100ms); }
.menue.offen .mo-r .mo-t { transition-delay: calc(var(--i) * 85ms + 190ms); }
.mo-s { transform: scaleY(0); transition: transform 200ms ease; }
.menue.offen .mo-s { transform: none; transition: transform 800ms var(--mo-expo); transition-delay: calc(var(--i) * 85ms + 160ms); }
.mo-nr { opacity: 0; transition: opacity 200ms ease; }
.menue.offen .mo-nr { opacity: 1; transition: opacity 700ms ease; transition-delay: calc(var(--i) * 85ms + 700ms); }
.mo-u li { opacity: 0; transform: translate3d(var(--dx,0),10px,0); filter: blur(6px); transition: opacity 200ms ease, transform 200ms ease, filter 200ms ease; }
.mo-l > .mo-u { --dx: -26px; }
.mo-r > .mo-u { --dx: 26px; }
.menue.offen .mo-u li {
  opacity: 1; transform: none; filter: blur(0);
  transition: opacity 700ms var(--mo-expo), transform 900ms var(--mo-expo), filter 700ms var(--mo-expo);
  transition-delay: calc(var(--i) * 85ms + 480ms + var(--j,0) * 75ms);
}
.mo-u, .mo-hat { border-color: transparent; }
.menue.offen .mo-u, .menue.offen .mo-hat { border-color: #D5CEC1; transition: border-color 700ms ease 600ms; }
/* Hover: Unterstrich wird gezogen, Druck federt */
.mo-u a > span { position: relative; }
.mo-u a > span::after { content: ""; position: absolute; left: 0; right: 0; bottom: -.5px; height: 1px; background: color-mix(in srgb, currentColor 55%, transparent); transform: scaleX(0);  /* 12.10.2026: genau auf die Mitte zwischen zwei Zeilen (Zeile = 24,9 px), feiner (55 %) */ transform-origin: 100% 50%; transition: transform 360ms var(--mo-expo); }
.mo-r > .mo-u a > span::after, .mo-v > .mo-u a > span::after { transform-origin: 0 50%; }
.mo-u a:hover > span::after, .mo-u a:focus-visible > span::after { transform: scaleX(1); }
.mo-u a:active { transform: scale(.97); }

/* Tablet */
@media (min-width: 761px) {
  .menue ol.mo-liste[data-f="a"] { max-width: 860px; }
  .menue ol.mo-liste[data-f="a"] .mo-w { font-size: clamp(32px, 5.2vw, 52px); }
  .menue ol.mo-liste[data-f="a"] .mo-u { font-size: 14px; letter-spacing: .15em; }
  .menue ol.mo-liste[data-f="a"] .mo-u a { min-height: 38px; }
  .menue ol.mo-liste[data-f="a"] .mo-l > .mo-u { border-right: 1px solid #D5CEC1; padding-right: 22px; margin-top: 6px; }
  .menue ol.mo-liste[data-f="a"] .mo-r > .mo-u { padding-left: 22px; margin-top: 6px; }   /* ein Strich: der linke traegt ihn, sonst stehen zwei nebeneinander */
  .menue ol.mo-liste[data-f="a"] .mo-v > .mo-u { display: flex; flex-wrap: wrap; justify-content: center; gap: 0 28px; }
}

/* Desktop und Tablet: Fluegel ab 761 px (Michael 11.10.2026: "Fluegel ab 761 px"). Schrift, Strichabstand und Fluegelschrift
   laufen mit der Breite, damit die Fluegel bei 761 px noch ins Bild passen; ab 1100 px unveraendert (48 px Wort, 55 px Abstand, 15 px Schrift). */
@media (min-width: 761px) {
  .menue ol.mo-liste[data-f="a"] { max-width: none; width: max-content; --wort: clamp(24px, min(4.4vw, 8vh), 64px); --ab: clamp(20px, 5vw, 55px); --fl: clamp(10.5px, 1.37vw, 15px); }
  .menue ol.mo-liste[data-f="a"] .mo-w { font-size: var(--wort); }
  .menue ol.mo-liste[data-f="a"] .mo-nr { display: block; }
  /* 11.10.2026, Michael: Typografie der Untertitel "zwei Stufen zurueck", auf den ersten Stand (15 px,
     Sperrung .16 em, Mindesthoehe 22 px, Farbe wie vorher). Geblieben sind NUR die Mitte der Striche
     (55 px zu beiden Seiten, Block auf der Wortmitte) und die Reihenfolge der Ansichten. Der negative
     Rand zieht den Leerraum hinter dem letzten Buchstaben ab, damit der Abstand zum Strich stimmt. */
  .menue ol.mo-liste[data-f="a"] .mo-u { font-size: calc(var(--fl) * .88); letter-spacing: .24em; line-height: 1; font-variant-numeric: tabular-nums; font-kerning: none; }
  .menue ol.mo-liste[data-f="a"] .mo-l > .mo-u a span, .menue ol.mo-liste[data-f="a"] .mo-v > .mo-u a span { margin-right: -.24em; }
  .menue ol.mo-liste[data-f="a"] .mo-u a { min-height: 26px; color: #857E77; }   /* 13.10.2026: Zeilenabstand 26 px, mehr Sperrung, kleiner und leiser: Fluegel dient dem Wort, konkurriert nicht */
  /* 11.10.2026, Michael: die Striche muessen "genau in der Mitte" stehen. Gemessen vorher: Untertitel->Strich 26 px,
     Strich->Wort 55 px, und der Block sass 16 px unter der Mitte des Wortes. Jetzt: Block senkrecht auf der
     Wortmitte, Abstand zum Strich auf beiden Seiten 55 px. */
  .menue ol.mo-liste[data-f="a"] .mo-u { position: absolute; top: 50%; translate: 0 -50%; margin: 0; border: 0; }
  .menue ol.mo-liste[data-f="a"] .mo-l > .mo-u { right: calc(100% + var(--ab) - 1px); padding: 0 var(--ab) 0 0; margin-top: 0; }
  .menue ol.mo-liste[data-f="a"] .mo-r > .mo-u { left: calc(100% + var(--ab) - 1px - .04 * var(--wort)); padding: 0 0 0 var(--ab); margin-top: 0; }
  .menue ol.mo-liste[data-f="a"] .mo-v > .mo-u { display: block; right: calc(100% + var(--ab) - 1px); padding: 0 var(--ab) 0 0; text-align: right; }
  .menue ol.mo-liste[data-f="a"] .mo-v > .mo-u a { justify-content: flex-end; }
  /* 12.10.2026, Michael: die drei Untermenuepunkte von INFO etwas tiefer, damit ihre Oberkante auf der Oberkante von INFO steht.
     Rechnung: Fluegel 3 Zeilen zu 22 px (66 px), Versalhoehe des Worts ca. .63 em, der Fluegelschrift ca. .7 em.
     Verschiebung = 33 - .315 * Wort - (22 - .7 * Fluegelschrift) / 2. Nur INFO, Sommer und Winter bleiben mittig. */
  .menue ol.mo-liste[data-f="a"] .mo-v > .mo-u { translate: 0 calc(-50% + 25px + .35 * var(--fl) - .315 * var(--wort) + 16px); }   /* 13.10.2026, Michael: Info-Fluegel weiter runter, +16 px */   /* +3 px: nachgemessen (Oberkante Fluegel 2,9 px ueber INFO) */
  .menue ol.mo-liste[data-f="a"] .mo-u::after { content: ""; position: absolute; top: 0; bottom: 0; width: 1px; background: #D5CEC1; transform: scaleY(0); transition: transform 200ms ease; }
  .menue ol.mo-liste[data-f="a"] .mo-l > .mo-u::after, .menue ol.mo-liste[data-f="a"] .mo-v > .mo-u::after { right: 0; }
  .menue ol.mo-liste[data-f="a"] .mo-r > .mo-u::after { left: 0; }
  .menue.offen ol.mo-liste[data-f="a"] .mo-u::after { transform: scaleY(1); transition: transform 900ms var(--mo-expo) 560ms; }
  /* gleicher Rhythmus: jede Hauptzeile gleich hoch, die Fluegel zaehlen nicht mit */
  .menue ol.mo-liste[data-f="a"] .mo-z, .menue ol.mo-liste[data-f="a"] .mo-z.mo-hat { margin: 0; min-height: clamp(76px, 9vh, 86px); align-items: center; }
  .menue ol.mo-liste[data-f="a"] .mo-z .mo-l, .menue ol.mo-liste[data-f="a"] .mo-z .mo-r, .menue ol.mo-liste[data-f="a"] .mo-z .mo-v, .menue ol.mo-liste[data-f="a"] .mo-z .mo-s { align-self: center; }
}

/* Ansichten: drei Fassungen, umschaltbar mit der Leiste unten (01 B Achse, 02 C Zickzack,
   03 A Fluegel). Leiste und B/C gibt es bis 1099 px (Handy UND Tablet); ab 1100 px steht nur A.
   Handy: Raster 8 px (Wort- und Listenzeile 48). Tablet: dieselben Ansichten, groessere Schrift. */
/* kopf.css: .menue ol { display: grid } ist spezifischer als .mo-liste, darum der lange Selektor */
@media all {
  .menue ol.mo-liste { display: none; }
  .menue[data-f="a"] ol.mo-liste[data-f="a"], .menue[data-f="b"] ol.mo-liste[data-f="b"], .menue[data-f="c"] ol.mo-liste[data-f="c"] { display: grid; }
  .menue ol.mo-liste:is([data-f="b"],[data-f="c"]) .mo-z { grid-column: 1 / -1; grid-template-columns: subgrid; margin: 0; align-items: start; }
  .menue ol.mo-liste:is([data-f="b"],[data-f="c"]) .mo-w { font-size: var(--wf); line-height: var(--lh); }
  .menue ol.mo-liste:is([data-f="b"],[data-f="c"]) .mo-l > .mo-w, .menue ol.mo-liste:is([data-f="b"],[data-f="c"]) .mo-r > .mo-w { padding: 0; }
  .menue ol.mo-liste:is([data-f="b"],[data-f="c"]) .mo-u { margin: 0; padding: 0; border: 0; text-align: left; font-size: 13px; letter-spacing: .13em; }
  .menue ol.mo-liste:is([data-f="b"],[data-f="c"]) .mo-u a { min-height: var(--ih); justify-content: flex-start; }
  /* obere Gruppe: Zimmer | Preise und Essen | Trinken um einen Strich, Wellness mittig */
  .menue ol.mo-liste:is([data-f="b"],[data-f="c"]) .mo-z:not(.mo-hat):not(:has(> .mo-v)) { grid-template-columns: minmax(0,1fr) auto minmax(0,1fr); }
  .menue ol.mo-liste:is([data-f="b"],[data-f="c"]) .mo-z:not(.mo-hat) > .mo-l { grid-column: 1; justify-self: end; align-items: flex-end; }
  .menue ol.mo-liste:is([data-f="b"],[data-f="c"]) .mo-z:not(.mo-hat) > .mo-r { grid-column: 3; justify-self: start; }
  .menue ol.mo-liste:is([data-f="b"],[data-f="c"]) .mo-z:not(.mo-hat) > .mo-l > .mo-w { padding-right: .3em; }
  .menue ol.mo-liste:is([data-f="b"],[data-f="c"]) .mo-z:not(.mo-hat) > .mo-r > .mo-w { padding-left: .3em; }
  .menue ol.mo-liste:is([data-f="b"],[data-f="c"]) .mo-z:not(.mo-hat) > .mo-s { display: block; grid-column: 2; }
  .menue ol.mo-liste:is([data-f="b"],[data-f="c"]) .mo-z:not(.mo-hat) > .mo-v { display: flex; flex-direction: row; justify-content: center; align-items: center; }

  .menue ol.mo-liste:is([data-f="b"],[data-f="c"]) { --ih: 48px; grid-template-columns: minmax(0,1fr) auto minmax(0,1fr); }

  /* 01 B Achse: ein senkrechter Strich in der Mitte; links rechtsbuendig, rechts linksbuendig;
     Info steht wie ein Fluegel (Liste links, Wort rechts, Oberkante auf einer Linie) */
  .menue ol.mo-liste[data-f="b"] { column-gap: 0; }
  .menue ol.mo-liste[data-f="b"] .mo-hat { position: relative; margin-top: 28px; margin-bottom: 6px; }
  .menue ol.mo-liste[data-f="b"] .mo-hat > .mo-s { display: block; grid-column: 2; visibility: hidden; }
  .menue ol.mo-liste[data-f="b"] .mo-hat > .mo-l { grid-column: 1; justify-self: end; align-items: flex-end; }
  .menue ol.mo-liste[data-f="b"] .mo-hat > .mo-r { grid-column: 3; justify-self: start; align-items: flex-start; }
  .menue ol.mo-liste[data-f="b"] .mo-hat > .mo-l > .mo-w { padding-right: .3em; }
  .menue ol.mo-liste[data-f="b"] .mo-hat > .mo-r > .mo-w { padding-left: .3em; }
  .menue ol.mo-liste[data-f="b"] .mo-hat > .mo-l > .mo-u { align-self: flex-end; text-align: right; padding-right: 22px; margin-top: 6px; }
  .menue ol.mo-liste[data-f="b"] .mo-hat > .mo-l > .mo-u a { justify-content: flex-end; }
  .menue ol.mo-liste[data-f="b"] .mo-hat > .mo-r > .mo-u { align-self: flex-start; padding-left: 22px; margin-top: 6px; }
  .menue ol.mo-liste[data-f="b"] .mo-info > .mo-l > .mo-u { margin-top: calc((var(--lh) - .63 * var(--wf)) / 2 - (var(--ih) - 8px) / 2); }
  .menue ol.mo-liste[data-f="b"] .mo-hat::after {
    content: ""; position: absolute; left: 50%; top: 10px; bottom: 8px; width: 1px; background: #D5CEC1;
    transform: translateX(-.5px) scaleY(0); transform-origin: 50% 0; transition: transform 200ms ease;
  }
  .menue.offen .mo-liste[data-f="b"] .mo-hat::after { transform: translateX(-.5px) scaleY(1); transition: transform 900ms var(--mo-expo) 560ms; }

  /* 02 C Zickzack: Sommer, Winter, Info je eine Zeile, Liste links, rechts, links */
  .menue ol.mo-liste[data-f="c"] .mo-zz { display: grid; grid-template-columns: 1fr; margin: 0; padding-top: 10px; border-top: 1px solid transparent; }
  .menue ol.mo-liste[data-f="c"] .mo-z:not(.mo-zz) + .mo-zz { margin-top: 24px; }
  .menue.offen .mo-liste[data-f="c"] .mo-zz { border-top-color: #D5CEC1; }
  .menue ol.mo-liste[data-f="c"] .mo-zz > .mo-v { display: block; grid-column: 1; justify-self: stretch; }
  .menue ol.mo-liste[data-f="c"] .mo-zz[data-s="l"] > .mo-v { text-align: left; }
  .menue ol.mo-liste[data-f="c"] .mo-zz[data-s="r"] > .mo-v { text-align: right; }
  .menue ol.mo-liste[data-f="c"] .mo-zz .mo-w { display: inline-block; padding: 0; }
  .menue ol.mo-liste[data-f="c"] .mo-zz .mo-u { display: flex; flex-wrap: wrap; gap: 0 24px; }
  .menue ol.mo-liste[data-f="c"] .mo-zz[data-s="l"] .mo-u { justify-content: flex-start; }
  .menue ol.mo-liste[data-f="c"] .mo-zz[data-s="r"] .mo-u { justify-content: flex-end; }
  .menue ol.mo-liste[data-f="c"] .mo-zz[data-s="r"] .mo-u a { justify-content: flex-end; }

  /* die feine Leiste: duenner Strich, aktive Stelle dicker, kleine Querstriche, 01 02 03 in Mono */
  .mo-leiste { display: block; position: absolute; left: 50%; width: min(420px, calc(100% - 2 * var(--rand))); margin-left: calc(min(420px, 100% - 2 * var(--rand)) / -2); bottom: max(10px, env(safe-area-inset-bottom)); z-index: 3; --k: 0; }
  .menue[data-f="b"] .mo-leiste { --k: 1; }   /* 11.10.2026: Reihenfolge 01 = A, 02 = B, 03 = C */
  .mo-spur { position: relative; height: 9px; pointer-events: none; }
  .mo-spur::before { content: ""; position: absolute; left: 0; right: 0; top: 4px; height: 1px; background: #D5CEC1; }
  .mo-spur .q { position: absolute; top: 1px; width: 1px; height: 7px; background: #A9A299; }
  .mo-spur .q:nth-of-type(1) { left: 25%; }   /* 19.10.2026: zwei Ansichten, Querstriche in der Mitte jeder Haelfte */
  .mo-spur .q:nth-of-type(2) { left: 75%; }
  .mo-dick { position: absolute; left: 0; top: 3px; height: 3px; width: calc(100% / 2); background: #3D3733; transform: translate3d(calc(var(--k) * 100%), 0, 0); transition: transform 560ms var(--me-aus); }
  .mo-zahlen { display: grid; grid-template-columns: repeat(2, 1fr); }
  .mo-zahlen button { font: inherit; font-family: "DM Mono", ui-monospace, monospace; font-size: 11px; letter-spacing: .14em; color: #A9A299; background: transparent; border: 0; border-radius: 0; min-height: 44px; padding: 0; cursor: pointer; transition: color 240ms ease, transform 120ms ease; }
  .mo-zahlen button[aria-current="true"] { color: #3D3733; }
  .mo-zahlen button:active { transform: scale(.94); }
  .mo-zahlen button:focus-visible { outline: 2px solid #3D3733; outline-offset: -4px; }
}

/* Desktop: B und C mit der Schrift des Menues (wie A), Zeilen 1,15 em */
@media (min-width: 1100px) {
  .menue ol.mo-liste:is([data-f="b"],[data-f="c"]) { --wf: clamp(26px, min(4.4vw, 8vh), 64px); --lh: calc(var(--wf) * 1.15); --ih: 36px; max-width: 760px; }
  .mo-liste:is([data-f="b"],[data-f="c"]) .mo-u { font-size: 15px; letter-spacing: .16em; }
}

/* Tablet: B und C mit groesserer Schrift, Zeilen 64 */
@media (min-width: 761px) and (max-width: 1099px) {
  .menue ol.mo-liste:is([data-f="b"],[data-f="c"]) { --wf: clamp(32px, 5.2vw, 48px); --lh: 64px; --ih: 44px; max-width: 640px; }
  .mo-liste:is([data-f="b"],[data-f="c"]) .mo-u { font-size: 14px; letter-spacing: .15em; }
}

/* Handy */
@media (max-width: 760px) {
  .menue .me-satz { place-items: start center; padding: 96px var(--rand) 110px; }
  .mo-liste { max-width: none; width: 100%; }
  .menue ol.mo-liste { --wf: clamp(24px, 7.4vw, 32px); --lh: 48px; }
  .menue ol.mo-liste[data-f="a"] .mo-z { grid-column: 1 / -1; grid-template-columns: subgrid; margin: 0; align-items: start; }
  .menue ol.mo-liste[data-f="a"] .mo-w { font-size: var(--wf); line-height: var(--lh); }
  .menue ol.mo-liste[data-f="a"] .mo-l > .mo-w, .menue ol.mo-liste[data-f="a"] .mo-r > .mo-w { padding: 0; }
  .menue ol.mo-liste[data-f="a"] .mo-u { margin: 0; padding: 0; border: 0; text-align: left; font-size: 13px; letter-spacing: .13em; }
  .menue ol.mo-liste[data-f="a"] .mo-u a { min-height: 48px; justify-content: flex-start; }
  /* obere Gruppe: Zimmer | Preise und Essen | Trinken um einen Strich, Wellness mittig */
  .menue ol.mo-liste[data-f="a"] .mo-z:not(.mo-hat):not(:has(> .mo-v)) { grid-template-columns: minmax(0,1fr) auto minmax(0,1fr); }
  .menue ol.mo-liste[data-f="a"] .mo-z:not(.mo-hat) > .mo-l { grid-column: 1; justify-self: end; align-items: flex-end; }
  .menue ol.mo-liste[data-f="a"] .mo-z:not(.mo-hat) > .mo-r { grid-column: 3; justify-self: start; }
  .menue ol.mo-liste[data-f="a"] .mo-z:not(.mo-hat) > .mo-l > .mo-w { padding-right: .3em; }
  .menue ol.mo-liste[data-f="a"] .mo-z:not(.mo-hat) > .mo-r > .mo-w { padding-left: .3em; }
  .menue ol.mo-liste[data-f="a"] .mo-z:not(.mo-hat) > .mo-s { display: block; grid-column: 2; }
  .menue ol.mo-liste[data-f="a"] .mo-z:not(.mo-hat) > .mo-v { display: flex; flex-direction: row; justify-content: center; align-items: center; }

  /* 03 A Fluegel am Handy: zwei Spalten, linksbuendig */
  .mo-liste[data-f="a"] { grid-template-columns: minmax(0,1fr) minmax(0,1fr); }
  .menue ol.mo-liste[data-f="a"] { column-gap: 16px; }
  .mo-liste[data-f="a"] .mo-hat > .mo-s { display: none; }
  .mo-liste[data-f="a"] .mo-hat > .mo-l { grid-column: 1; justify-self: stretch; align-items: flex-start; }
  .mo-liste[data-f="a"] .mo-hat > .mo-r { grid-column: 2; justify-self: stretch; align-items: flex-start; }
  .mo-liste[data-f="a"] .mo-hat > .mo-v { grid-column: 1 / -1; display: grid; grid-template-columns: subgrid; justify-self: stretch; align-items: start; }
  .mo-liste[data-f="a"] .mo-hat > .mo-v > .mo-w { grid-column: 1; }
  .mo-liste[data-f="a"] .mo-hat > .mo-v > .mo-u { grid-column: 2; grid-row: 1; }
  .mo-liste[data-f="a"] .mo-hat { margin-top: 24px; padding-top: 16px; border-top: 1px solid transparent; }
  .menue.offen .mo-liste[data-f="a"] .mo-hat { border-top-color: #D5CEC1; }
}

/* Beim Umschalten spielt die neue Ansicht den Eintritt noch einmal: kurz im Ausgangszustand, dann los */
.menue.offen .mo-liste.vor .mo-t { transform: translate3d(0,112%,0) rotate(4deg); }
.menue.offen .mo-liste.vor .mo-s { transform: scaleY(0); }
.menue.offen .mo-liste.vor .mo-nr { opacity: 0; }
.menue.offen .mo-liste.vor .mo-u li { opacity: 0; transform: translate3d(var(--dx,0),10px,0); filter: blur(6px); }
.menue.offen .mo-liste.vor .mo-hat, .menue.offen .mo-liste.vor .mo-u { border-color: transparent; }
.menue.offen .mo-liste.vor .mo-hat::after { transform: translateX(-.5px) scaleY(0); }
.menue.offen .mo-liste.vor, .menue.offen .mo-liste.vor *, .menue.offen .mo-liste.vor *::after { transition: none !important; }

@media (prefers-reduced-motion: reduce) {
  .mo-t, .mo-s, .mo-u li { transform: none !important; filter: none !important; }
  .menue.offen .mo-t, .menue.offen .mo-s, .menue.offen .mo-u li, .menue.offen .mo-nr { transition: opacity 180ms ease !important; transition-delay: 0ms !important; }
  .mo-u::after { transform: none !important; transition: none !important; }
}

/* Der erste Punkt bekommt beim Oeffnen programmatisch den Fokus (fuer Tastatur und Vorlesegeraete). Den Rahmen zeigt erst die erste Taste. */
.menue.ohne-ring a:focus-visible { outline: none; }

/* Fusszeile im Menue: dieselbe Schrift wie die Unterpunkte (Mono, 12,5 px, Laufweite .18em,
   gleiche Farbe), am Handy wie die Leiste (11 px, .14em). Michael 11.10.2026: "Entweder passt du das
   Schriftbild an oder du entfernst die Schrift." Angepasst, nicht entfernt: Adresse, Mail und Telefon
   gehoeren ins Menue. */
.menue .me-fuss { font-size: 12.5px; letter-spacing: .18em; color: #6E6862; }
@media (max-width: 760px) { .menue .me-fuss { font-size: 11px; letter-spacing: .14em; } }

/* Adresse, Mail und Telefon sind aus dem Menue genommen (Michael 11.10.2026). Die Leiste 01 02 03 gilt auf allen Breiten. */
.menue .me-satz { overflow-y: auto; }

/* Michael 11.10.2026: "Entferne die Umrandungen aus dem ganzen Projekt" -- kein Fokusrahmen auf der ganzen Seite (Kasten um 01 im Menue). Liegt hier, weil menue.css auf jeder Seite haengt. */
:focus, :focus-visible, a:focus-visible, button:focus-visible, [tabindex]:focus-visible { outline: none !important; }

/* Ansicht 03 (A, Fluegel): ab 1100 px unveraendert. Tablet und Handy (bis 1099 px) zeigen in 03 die
   Anordnung von 01 (B), weil die Fluegel dort nicht mehr Platz haben. Michael 11.10.2026: "Menue drei bei
   Desktop so, solange genug Platz ist. Tablet und Mobil die Navigation von eins." Die Leiste bleibt auf 03. */
/* 11.10.2026, Michael: "Fluegel ab 761 px" -- die Grenze war 1099 px. */
@media (max-width: 760px) {
  .menue[data-f="a"] ol.mo-liste[data-f="a"] { display: none; }
  .menue[data-f="a"] ol.mo-liste[data-f="b"] { display: grid; }
}

/* 13.10.2026, Michael: "Zentriere den Menuepunkt ... soll immer in der Mitte vom Bildschirm sein ... nur kleine Varianten, etwas mehr Abstand".
   Der Satz sass oben unter dem Kopf (gemessen bei 620 x 905: Inhalt y 96 bis 638, Mitte 367 statt 452). Jetzt: Satz und Liste mittig in der
   Hoehe zwischen Kopf und Fuss und mittig in der Breite (die Achse liegt auf der Fenstermitte); zwischen den Zeilen etwas Luft.
   Zurueck: menue.css.vor-mitte-13102026 */
.menue .me-satz{align-content:center;justify-content:center;align-items:center;justify-items:center;
  padding-top:max(var(--me-oben,96px),11vh);padding-bottom:max(72px,10vh)}
.menue .me-satz > .mo-liste{align-self:center;margin-block:auto}
.menue ol.mo-liste .mo-z{margin-bottom:16px}
@media (max-width:760px){.menue ol.mo-liste .mo-z{margin-bottom:14px}}

/* 15.10.2026, Michael: Sommer und Winter sind keine Ziele (kein Zeiger), und beim Darueberfahren steigen die Unterpunkte noch einmal auf.
   Zurueck: .vor-sommerwinter-15102026 */
.mo-hat .mo-w { cursor: default; }

/* 15.10.2026, Michael: weiterer Besuch eines Fluegels = nur die senkrechte Linie faehrt langsam aus; Linie genau in der Mitte zwischen
   Fluegeltext und Hauptwort (links 3 px zu nah am Text gemessen, Tinte: Text 308, Linie 364, Wort 424). Zurueck: .vor-verzoegerung-15102026 */
@media (min-width: 1100px) {
  .menue ol.mo-liste[data-f="a"] .mo-l > .mo-u, .menue ol.mo-liste[data-f="a"] .mo-v > .mo-u { padding-right: calc(var(--ab) + .05 * var(--wort)); }
}

/* 16.10.2026, Michael: Hauptpunkte werden NICHT unterstrichen (nur die Untermenues). Statt dessen beim Darueberfahren eine ruhige Bewegung:
   das Wort gleitet 0,16 em in Leserichtung nach rechts und wird dunkel, die anderen Hauptpunkte treten leise zurueck (das gab es schon).
   Weiche Kurve, 700 ms, nur transform und Farbe. Zurueck: menue.css.vor-hauptmenue-16102026 */
.menue .mo-w:not(.mo-s) { transition: transform 700ms cubic-bezier(.16, 1, .3, 1), color 400ms ease; }
@media (hover: hover) and (pointer: fine) {
  /* Paar wie EIN Punkt (Michael 16.10.2026: "Zimmer | Preise, Essen | Trinken als ein Punkt, beide gleich animiert"): faehrt man ueber eines der Woerter,
     heben sich beide gleich um 0,1 em nach oben (Michael 16.10.2026: von unten nach oben). Zurueck: menue.css.vor-paar-16102026 */
  .menue .mo-z:has(.mo-w:hover) .mo-w:not(.mo-s), .menue .mo-z:has(a.mo-w:focus-visible) .mo-w:not(.mo-s) { transform: translate3d(.16em, 0, 0); }
  .menue .mo-z:has(.mo-w:hover) .mo-s { color: #3D3733; }
}
@media (prefers-reduced-motion: reduce) { .menue .mo-w, .menue .mo-w:hover { transition: color 200ms ease; transform: none; } }

/* 16.10.2026, Michael: Strich der Unterpunkte "etwas weiter runter, so nah am Wort". Vorher bottom -.5px (am Wort), jetzt 7 px darunter. */
.mo-u a > span::after { bottom: -7px; }

/* 16.10.2026, Michael: Untermenue-Abstand am Handy um ein Drittel kleiner (48 auf 32 px). Zurueck: menue.css.vor-alle-16102026 */
@media (max-width: 760px) {
  .menue ol.mo-liste[data-f="a"] .mo-u a, .menue ol.mo-liste:is([data-f="b"],[data-f="c"]) .mo-u a { min-height: 32px; }
  .menue ol.mo-liste:is([data-f="b"],[data-f="c"]) { --ih: 32px; }
}

/* 17.10.2026, Michael: "das X beim Rolldown-Menue auf derselben Stelle wie der Hamburger, animiert beim Oeffnen und beim Schliessen".
   Es gibt jetzt nur EINEN Knopf: der Hamburger der Kopfleiste bleibt waehrend das Menue offen ist stehen (Kopfleiste ueber der Tafel, fest am
   Fenster), seine drei Striche werden zum X und beim Schliessen wieder zurueck. Das zweite X in der Tafel (.me-x) entfaellt.
   Zurueck: menue.css.vor-knopf-17102026 und menue.js.vor-knopf-17102026 */
.kopf { transition: background-color 380ms ease, border-color 380ms ease; }
.kopf > :not(.menueknopf) { transition: opacity 260ms ease; }
.menueknopf span { transition: transform 460ms var(--me-aus, cubic-bezier(.23,1,.32,1)), opacity 200ms ease; transform-origin: center; }
html.me-offen .kopf { position: fixed; top: 0; left: 0; right: 0; margin: 0 auto; z-index: 70; background: transparent; border-bottom-color: transparent; }
html.me-offen .menueknopf span:nth-child(1) { transform: translateY(8px) rotate(45deg); }
html.me-offen .menueknopf span:nth-child(2) { opacity: 0; transform: scaleX(.2); }
html.me-offen .menueknopf span:nth-child(3) { transform: translateY(-8px) rotate(-45deg); }
.menue .me-x { visibility: hidden; pointer-events: none; }
@media (prefers-reduced-motion: reduce) { .menueknopf span { transition: opacity 120ms ease; } }

/* 17.10.2026, Michael: Schriftzug und DE / EN muessen bei offenem Menue GENAU auf der Stelle der Kopfleiste stehen. Statt die Tafel-Fassung
   nachzumessen, bleibt die echte Kopfleiste stehen (fest, ueber der Tafel); die Kopie in der Tafel (.me-marke, .me-sprache) ist unsichtbar.
   Zurueck: menue.css.vor-kopfgleich-17102026 */
.menue .me-marke, .menue .me-sprache { visibility: hidden; }
html.me-offen .kopf > .wortmarke, html.me-offen .kopf > .sprache { opacity: 1; }
/* 19.10.2026, gemessen am iPhone: die erste Menuezeile (Zimmer | Preise) lag unter der durchsichtigen Kopfleiste
   und bekam keinen Tipp (elementFromPoint = header.kopf). Bei offenem Menue laesst die Leiste Tipps durch,
   nur Knopf, Wortmarke und Sprachschalter bleiben tippbar. */
html.me-offen .kopf { pointer-events: none; }
html.me-offen .kopf > button, html.me-offen .kopf > .wortmarke, html.me-offen .kopf > .sprache { pointer-events: auto; }
/* dieselbe Messung: die Kopie der Kopfleiste IN der Tafel (.me-kopf) lag ebenfalls ueber der ersten Zeile */
.menue .me-kopf { pointer-events: none; }
.menue .me-kopf a, .menue .me-kopf button { pointer-events: auto; }

/* 17.10.2026: beim Oeffnen stumm, bis die Maus sich bewegt (siehe menue.js). Zurueck: menue.css.vor-still-17102026 */
.menue.still ol.mo-liste, .menue.still ol.mo-liste * { pointer-events: none !important; }
.menue.still .mo-w { transform: none !important; }


/* 17.10.2026, Michael: "Zitterpartie, viel smoother". Ursachen: (1) zwischen den Zeilen lagen 8 px margin, in denen weder
   Zeile noch Wort Hover hatte, das gerade dunkle Wort sprang beim Ueberfahren kurz zurueck und wieder vor; (2) 240 ms
   Farbwechsel waren fuer die Wanderung ueber sechs Zeilen zu knapp und endeten abrupt. Jetzt: lueckenlose Trefferflaeche
   (Abstand als padding), laengerer sanfter Farbwechsel. Zurueck: menue.css.vor-weich-17102026 */
.mo-z { margin-bottom: 0; padding-bottom: 8px; }
.mo-w { transition: color 420ms cubic-bezier(.4, 0, .2, 1); }
.mo-u a { transition: color 320ms cubic-bezier(.4, 0, .2, 1); }
.mo-nr { transition-timing-function: ease; }
@media (hover: hover) {
  .mo-liste:hover .mo-w { color: #A9A299; }
  .mo-z:hover .mo-w, a.mo-w:focus-visible { color: #3D3733; }
}
@media (prefers-reduced-motion: reduce) { .mo-w, .mo-u a { transition-duration: 1ms; } }

/* 19.10.2026, Michael: Oberkante der Liste (Anreise) in einer Linie mit der Oberkante des Titels (Info). Gemessen: Titel 591, Liste 580 -> 11 px. */
.menue ol.mo-liste .mo-v > .mo-u { margin-top: 11px; }

/* 19.10.2026: Nach einem Sprachwechsel steht das Menue beim Laden schon offen (menue.js).
   Ohne diese Regel klappt die Tafel beim Oeffnen der neuen Seite sichtbar auf. */
.menue.sofort, .menue.sofort * { transition: none !important; animation: none !important; }

/* Englisch und Niederlaendisch (Michael 21.10.2026: "Der Buchstabenabstand ist so gross, das sind die Woerter zu lang").
   Gemessen: Schrift und Sperrung sind in allen Sprachen gleich, nur die Woerter sind laenger (Families in summer 200 px
   gegen Familien Sommer). Darum fuer en und nl die Sperrung der Untertitel enger, damit die Breite der deutschen entspricht. */
html[lang="en"] .mo-u, html[lang="nl"] .mo-u,
html[lang="en"] .menue ol.mo-liste[data-f="a"] .mo-u, html[lang="nl"] .menue ol.mo-liste[data-f="a"] .mo-u { letter-spacing: .09em; }
html[lang="en"] .mo-w, html[lang="nl"] .mo-w { letter-spacing: .02em; }

/* Responsive-Durchgang 24.10.2026, gemessen im offenen Menue: bei 320 px lagen "Familien Sommer" und
   "Restaurants / Shops" links, "Familien Winter" rechts ausserhalb des Bildschirms (Text ab x -34 bzw. bis 335),
   bei 375 px noch "Restaurants / Shops" (ab x -7). Ursache: die Unterpunkte durften nicht umbrechen und waren
   breiter als ihre Spalte (minmax(0,1fr)). Jetzt bricht ein zu langer Punkt in seiner Spalte um, nur wenn noetig;
   Schrift, Abstand und Ausrichtung bleiben. Nachgemessen 320 bis 480 px, Chromium und WebKit: 0 Punkte ausserhalb.
   Zurueck: menue.css.vor-menuebruch-24102026 */
@media (max-width: 480px) {
  /* Unterpunkte duerfen in den Seitenrand ragen, bis 8 px vor den Bildschirmrand (Rand gemessen 28 px bei 320 und 375 px):
     so passen die deutschen Punkte bis 375 px in eine Zeile, erst darunter bricht ein langer Punkt um. */
  .mo-l, .mo-r { width: max-content; max-width: calc(100% + 20px); }
  .mo-u a { white-space: normal; hyphens: none; }
  .mo-u { letter-spacing: .06em; }   /* Michael 24.10.2026: Abstand kleiner, war .13em */
  .menue ol.mo-liste[data-f="b"] .mo-hat > .mo-l > .mo-u { padding-right: 12px; }   /* zum Trennstrich, war 22 px */
  .mo-l > .mo-u a { text-align: right; }
}

/* Michael 24.10.2026: "Wenn gross genug, Restaurants / Shops. Nur wenn es zu klein wird, Restaurant & Co."
   Gemessen: "Restaurants / Shops" braucht 170 px; in WebKit brach es bei 414 px noch um, ab 430 px nicht mehr. */
.mo-kurz { display: none; }
@media (max-width: 429px) {
  .mo-lang { display: none; }
  .mo-kurz { display: inline; }
}

/* === /zimmerkopf-kopfzeile.css === */
/* Zimmerkopf "Kopfzeile" -- Michael 01.10.2026 freigegeben (Variante 1 von
   vier Proben). Der Abschnitt tragt jetzt die Schrift des Kopfbereichs
   (.einleitung in kopf.css, Zeile 137-157): Cormorant 49/58.8, EIN
   Fließtext 18/27.36, linke und rechte Kante auf 200. Die Eckdaten
   stehen als Mono-Schiene UEBER dem Titel und sind ueber die volle
   Breite ausgemittelt.
   Zeilenabstand 27.36 statt der 29.7 aus kopf.css: body[data-ptf] .lauf
   (probe-tafel-milchglas.css) setzt 1.52 und gewinnt dort -- der
   Kopfbereich steht gemessen auf 27.36, und gleich heißt gleich. */

#zimmer .zk .zeile {
  font-family: 'DM Mono', ui-monospace, monospace;
  font-weight: 400; font-size: 12px; line-height: 19.8px; letter-spacing: 1.2px;
  color: #666666; margin: 0;
}
#zimmer .zk h2 {
  font-family: 'Cormorant Garamond', 'Cormorant Ersatz', Georgia, serif;
  font-weight: 300; letter-spacing: normal; color: var(--text); max-width: none; margin: 0;
  font-size: 49px; line-height: 58.8px;
}
#zimmer .zk .lauf {
  font-size: 18px; line-height: 27.36px !important; color: #716B67 !important;
  max-width: none; margin: 0; text-wrap: pretty;
}
#zimmer .zk .rand dt {
  font-family: 'DM Mono', ui-monospace, monospace;
  font-size: 12px; line-height: 19.8px !important; letter-spacing: 1.2px;
  text-transform: uppercase; color: #666666; margin: 0;
}
#zimmer .zk .rand dd {
  font-size: 18px; line-height: 27.36px !important; color: #716B67 !important; margin: 0;
}
#zimmer .zk .satz { display: block !important; grid-template-columns: none !important; position: static; }
#zimmer .zk .satz .qv-weg.weg-breit { grid-column: auto !important; display: flex; margin-top: 48px; }
#zimmer .zk .rand { position: static !important; width: auto !important; }
/* Linke und rechte Kante wie im Kopfbereich: Abschnitt hat 40, die Einleitung 200. */
#zimmer > .zk > * { padding-left: 160px !important; padding-right: 160px !important; }
@media (max-width: 1200px) {
  #zimmer > .zk > * { padding-left: 56px !important; padding-right: 56px !important; }
  #zimmer .zk h2 { font-size: 40px; line-height: 48px; }
}
@media (max-width: 809px) {
  #zimmer > .zk > * { padding-left: 0 !important; padding-right: 0 !important; }
  #zimmer .zk h2 { font-size: 31px; line-height: 37.2px; }
}

/* A: Die Eckdaten sind kein Nachsatz, sondern die Schiene UEBER dem Titel.
   Zwischen Titel und Text steht dann nichts mehr -- der Block hat nur noch
   drei Lagen statt vier und liest sich in einem Zug. */
#zimmer .zkA { gap: 0; }
#zimmer .zkA .schiene {
  display: flex; align-items: baseline; justify-content: flex-start;
  gap: 8px 64px; flex-wrap: wrap;
  padding: 0 0 20px !important; margin: 0 160px;
  border-bottom: 1px solid var(--linie);
}
@media (max-width: 1200px) { #zimmer .zkA .schiene { margin: 0 56px; } }
@media (max-width: 809px)  { #zimmer .zkA .schiene { margin: 0; } }
/* Michael 01.10.2026: "Ueber den ganzen Bereich verteilen. Mit dem ersten
   Buchstaben auf der linken Kante und dem letzten auf der rechten. Und
   ausmitteln." space-between setzt das erste Paar auf 203 und das letzte
   Zeichen auf 1238. Gleich gross werden dabei die LUECKEN, nicht die Paare
   -- die sind verschieden lang, und gleiche Luecken sind die Ausmittelung. */
#zimmer .zkA .rand.quer {
  display: flex; flex-direction: row; flex-wrap: nowrap;
  flex: 1 1 100%; justify-content: space-between; gap: 8px 24px;
}
#zimmer .zkA .rand.quer > div { display: flex; align-items: baseline; gap: 10px; }
#zimmer .zkA .rand.quer dd { font-size: 15px; line-height: 19.8px !important; }
#zimmer .zkA .kopf1 { margin-top: 48px; }
#zimmer .zkA .satz { margin-top: 40px !important; }
@media (max-width: 809px) {
  #zimmer .zkA .schiene { flex-direction: column; gap: 20px; }
  #zimmer .zkA .rand.quer { flex-wrap: wrap; justify-content: flex-start; gap: 12px 32px; }
}

/* === /eintritt-home.css === */
/* Eintritt fuer die Startseite: E1 fuer Bilder, T2 fuer Schrift.
   Michael 24.09.2026: "Zeig mir E1 und T2 auf der Homepage."
   Diese Datei wird NUR von vorschau-eintritt.html geladen. index.html
   bleibt unberuehrt.

   E1 Klaerung  Unschaerfe 18 -> 0, Groesse 1,06 -> 1,00, 700 ms
   T2 Milchglas Unschaerfe 8 -> 0, Aufblende, 560 ms

   Alle Startwerte haengen an html.js. Faellt das Skript aus, greift keine
   einzige Regel und die Seite steht sofort vollstaendig da. */

html.js { --aus: cubic-bezier(.23,1,.32,1); }

/* ---------- Bilder ---------- */
html.js [data-ein="bild"] { overflow: hidden; }
/* Michael 24.09.2026: "Bei den Bildern einen Tick laenger."
   700 -> 900 ms, Aufblende 420 -> 520. Groesse und Unschaerfe bleiben,
   nur die Zeit waechst -- dann wirkt es ruhiger, nicht traeger. */
html.js [data-ein="bild"] > img,
html.js [data-ein="bild"] img {
  filter: blur(18px); transform: scale(1.06); opacity: .72;
  transition: filter 900ms var(--aus), transform 900ms var(--aus), opacity 520ms linear;
  will-change: filter, transform, opacity;
}
html.js [data-ein="bild"].da img { filter: blur(0); transform: scale(1); opacity: 1; }

/* ---------- Schrift ---------- */
/* Michael 24.09.2026: "Die Animationen vom Text sollen etwas besser zu
   sehen sein." Unschaerfe 8 -> 12 px, Dauer 560 -> 760 ms, dazu 8 px von
   unten. Damit sieht man, DASS etwas passiert, ohne dass Text fehlt. */
html.js [data-ein="text"] {
  opacity: 0; filter: blur(12px); transform: translate3d(0,8px,0);
  transition: opacity 520ms var(--aus), filter 760ms var(--aus), transform 760ms var(--aus);
  will-change: opacity, filter, transform;
}
html.js [data-ein="text"].da { opacity: 1; filter: blur(0); transform: none; }

/* Geschwister versetzt, 70 ms -- mehr wirkt traege */
html.js [data-ein="text"][data-v="1"] { transition-delay: 90ms; }
html.js [data-ein="text"][data-v="2"] { transition-delay: 180ms; }
html.js [data-ein="text"][data-v="3"] { transition-delay: 270ms; }

/* Nichts davon im Kopf, im Buchungsbalken, im Chat oder in der Tafel --
   dort waere Bewegung stoerend, nicht schoen. */
html.js .kopf [data-ein], html.js .klebeleiste [data-ein],
html.js .gc-fenster [data-ein], html.js .gbt-tafel [data-ein] {
  opacity: 1 !important; filter: none !important; transform: none !important;
}

@media (prefers-reduced-motion: reduce) {
  html.js [data-ein] , html.js [data-ein] img {
    opacity: 1 !important; filter: none !important; transform: none !important;
    transition: none !important;
  }
}

/* === /zeilen-auftritt.css === */
/* Auftritt der Ueberschriften auf allen Seiten (zeilen-auftritt.js, 19.10.2026; Unterseiten seit 19.10.2026 abends).
   Nach Emil Kowalski: eine Bewegung, die man sieht, weil sie im Blick passiert,
   nicht am Rand; nur transform und opacity; starkes ease-out, das sofort
   anfaengt und lange ausrollt. Ein Auftritt je Besuch, darum darf er laenger
   sein als die 300 ms fuer Bedienelemente.

   Ueberschrift  Woerter aus der Maske (leben.js), 1100 ms, 70 ms Versatz,
                 Start 110 % unter der Grundlinie mit 3 Grad Neigung
   Fliesstext    folgt 380 ms spaeter: 14 px von unten, Aufblende 900 ms,
                 Unschaerfe nur 4 px (vorher 12 px, das war Nebel, kein Auftritt)
   Ausloeser     Oberkante im oberen 70 % des Fensters, nicht am Rand

   Alles haengt an html.zl. Faellt das Skript aus, gilt leben.js wie bisher. */

/* Die Unschaerfe von eintritt-home.js lag ueber den steigenden Woertern */
html.js.zl [data-zl][data-ein] { opacity: 1 !important; filter: none !important; transform: none !important; transition: none !important; }

html.zl [data-zl] .lw-i {
  transform: translate3d(0, 110%, 0) rotate(3deg); transform-origin: 0 100%;
  transition: transform 1100ms cubic-bezier(.23, 1, .32, 1) calc(var(--i, 0) * 70ms) !important;
}
/* .lw-an setzt leben.js schon am Rand; erst .zl-da gibt die Woerter frei */
html.zl [data-zl].lw-an:not(.zl-da) .lw-i { transform: translate3d(0, 110%, 0) rotate(3deg) !important; }
html.zl [data-zl].zl-da .lw-i { transform: none !important; }

html.js.zl .zl-nach[data-ein] {
  opacity: 0 !important; filter: blur(4px) !important; transform: translate3d(0, 14px, 0) !important;
  transition: opacity 900ms cubic-bezier(.23, 1, .32, 1) 380ms, filter 900ms cubic-bezier(.23, 1, .32, 1) 380ms,
    transform 1100ms cubic-bezier(.23, 1, .32, 1) 380ms !important;
}
html.js.zl .zl-nach.zl-da[data-ein] { opacity: 1 !important; filter: none !important; transform: none !important; }
html.js.zl .zl-nach.zl-da[data-ein] + .zl-nach.zl-da[data-ein] { transition-delay: 520ms !important; }

@media (prefers-reduced-motion: reduce) {
  html.zl [data-zl] .lw-i, html.js.zl .zl-nach[data-ein] { transform: none !important; filter: none !important; opacity: 1 !important; transition: none !important; }
}

/* === /textseiten.css === */
/* Textseiten: NUR der Mittelteil zwischen Kopf und Fuss.
   Gebaut am 24.09.2026.

   Was hier ausdruecklich NICHT steht: Kopf, Menue, Fuss, Buchungsbalken,
   Satzspiegel, Seitenrand, Farben, Schriften. Das alles kommt aus lp-stil.css
   und kopf.css, damit jede Seite dieselbe Huelle traegt. Wer hier eine Breite
   setzt, bricht genau das.

   Vom Haus geerbt:  --breite 1435px, --rand 40px, --grund, --tinte, --grau,
                     --text, --linie  (lp-stil.css)

   Eigene Rechnung fuer den Mittelteil:
     Raster     12 / 8 / 4 Spalten, Gasse 24 / 20 / 16
     Skala      1,25 ab 16: 16 / 20 / 25 / 31 / 39 / 49
     Senkrecht  Grundtakt 8 px, Abschnitt 80 / 60 / 40 */

.textseite{
  --sp:12; --gasse:24px; --takt:8px; --luft:80px;
  --t0:16px; --t1:20px; --t2:25px; --t3:31px; --t4:39px; --t5:49px;
  padding:0 var(--rand) calc(var(--luft)*1.5);
}
@media (max-width:1199px){ .textseite{--sp:8; --gasse:20px; --luft:60px} }
@media (max-width:809px){  .textseite{--sp:4; --gasse:16px; --luft:40px} }

.ts-raster{display:grid;grid-template-columns:repeat(var(--sp),minmax(0,1fr));column-gap:var(--gasse)}
.textseite h1,.textseite h2,.textseite h3{
  font-family:"Cormorant Garamond",'Cormorant Ersatz',Georgia,serif;font-weight:300;margin:0;
  letter-spacing:-.005em;text-wrap:balance;color:var(--tinte)}
.textseite p,.textseite ol,.textseite dl,.textseite dd{margin:0;padding:0}

/* Die beiden kleinen Stimmen: Etikett in Inter, Ziffer in DM Mono */
.ts-et{font:400 11px/1.45 Inter,system-ui,sans-serif;letter-spacing:.18em;
  text-transform:uppercase;color:var(--grau)}
.ts-nr{font:500 11px/1.45 "DM Mono",ui-monospace,monospace;letter-spacing:.14em;
  color:var(--grau);font-variant-numeric:lining-nums tabular-nums}
.ts-kicker{font:500 11px/1.45 "DM Mono",ui-monospace,monospace;letter-spacing:.22em;
  text-transform:uppercase;color:var(--grau)}

/* ---------- Titelfeld, drei Fassungen (Klasse k1/k2/k3 am <html>) ---------- */
/* Abstaende am Seitenanfang, gemessen gegen die Startseite (Kopf endet bei 110 px):
   64 px Luft bis zur Haarlinie, 24 px bis zur Ueberschrift, 80 px bis zum Inhalt.
   Alles Vielfache von 8. Vorher waren es 40, das stand zu dicht unter dem Kopf. */
/* Michael 24.09.2026: "Entferne den dicken Strich oben." Die Haarlinie unter der
   Kopfleiste reicht; eine zweite darunter war ein Strich zuviel. Der Abstand bleibt. */
.ts-titel{margin-top:calc(var(--takt)*11);
  padding-bottom:var(--luft);row-gap:calc(var(--takt)*2)}
.ts-stand{color:var(--text);font-size:var(--t0);line-height:1.6}

/* K1 Grundlinie: Kicker in der ersten Spalte, Titel ab Spalte 3 */
.k1 .ts-kicker{grid-column:1/3;grid-row:1}
.k1 .ts-titel h1{grid-column:3/11;grid-row:1/3;font-size:clamp(31px,4.6vw,var(--t5));
  line-height:1.04;max-width:21ch}
.k1 .ts-stand{grid-column:3/11;grid-row:3;max-width:52ch}

/* K2 Tafel: Titel ueber alle zwoelf Spalten */
.k2 .ts-kicker{grid-column:1/13;grid-row:1}
.k2 .ts-titel h1{grid-column:1/13;grid-row:2;font-size:clamp(39px,7.6vw,110px);
  line-height:.94;letter-spacing:-.015em}
.k2 .ts-stand{grid-column:1/7;grid-row:3;margin-top:calc(var(--takt)*4);max-width:46ch}

/* K3 Register links: Titel rechts, das Verzeichnis traegt die linke Spalte */
.k3 .ts-kicker{grid-column:5/13;grid-row:1}
.k3 .ts-titel h1{grid-column:5/13;grid-row:2;font-size:clamp(31px,4.2vw,var(--t4));
  line-height:1.1;max-width:20ch}
.k3 .ts-stand{grid-column:5/11;grid-row:3;max-width:48ch}

/* ---------- Inhaltsverzeichnis ---------- */
.ts-inhalt{margin-bottom:var(--luft);row-gap:calc(var(--takt)*1.5)}
.ts-inhalt .ts-et{grid-column:1/3}
.ts-inhalt ol{grid-column:6/13;list-style:none;display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));column-gap:var(--gasse);row-gap:calc(var(--takt)*1.5)}
.ts-inhalt li{display:grid;grid-template-columns:calc(var(--takt)*6) 1fr;
  column-gap:calc(var(--takt)*2);align-items:baseline;
  border-top:1px solid var(--linie);padding-top:calc(var(--takt)*1.25)}
.ts-inhalt a{text-decoration:none;font-size:var(--t0);line-height:1.5;color:var(--tinte)}
/* 20.10.2026, Michael: statt Unterstreichen Variante A. Das Wort rueckt 8 px ein, die Nummer wird dunkel,
   am Zeilenende erscheint ein Mono-Pfeil (wie im Journal-Einstieg). Zurueck: textseiten.css.vor-inhalt-a-20102026 */
.ts-inhalt a{display:flex;justify-content:space-between;align-items:baseline;justify-self:stretch;
  transition:padding-left 500ms cubic-bezier(.23,1,.32,1)}
.ts-inhalt a::after{content:"\2192";font:400 13px/1 "DM Mono",ui-monospace,monospace;color:var(--tinte);
  opacity:0;transform:translateX(-8px);transition:opacity 400ms ease,transform 500ms cubic-bezier(.23,1,.32,1)}
.ts-inhalt .ts-nr{transition:color 400ms ease}
@media (hover:hover) and (pointer:fine){
  .ts-inhalt li:hover a{padding-left:8px}
  .ts-inhalt li:hover a::after{opacity:1;transform:none}
  .ts-inhalt li:hover .ts-nr{color:var(--tinte)}}
.ts-inhalt a:focus-visible{padding-left:8px}
.ts-inhalt a:focus-visible::after{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){.ts-inhalt a,.ts-inhalt a::after,.ts-inhalt .ts-nr{transition:none}}
/* In K3 klebt das Verzeichnis links mit, der Text laeuft rechts */
.k3 .ts-rumpf{align-items:start}
.k3 .ts-inhalt ol{grid-column:1/13}
.k3 .ts-inhalt{grid-column:1/4;position:sticky;top:96px;margin-bottom:0;display:block}
.k3 .ts-inhalt ol{display:block}
.k3 .ts-koerper{grid-column:5/13}

/* ---------- Abschnitt: Ziffer, Titel, Text auf einer Grundlinie ---------- */
.ts-abschnitt{border-top:1px solid var(--linie);padding:calc(var(--takt)*3.5) 0 var(--luft);
  row-gap:calc(var(--takt)*1.25)}
.ts-abschnitt .ts-nr{grid-column:1/2}
.ts-abschnitt h2{grid-column:2/6;font-size:var(--t2);line-height:1.2;padding-right:var(--gasse)}
.ts-text{grid-column:6/12;display:flex;flex-direction:column;gap:calc(var(--takt)*1.75);max-width:62ch}
.ts-text p{font-size:17px;line-height:1.66;color:var(--text);text-wrap:pretty}
.ts-text a{color:var(--tinte);text-underline-offset:3px;padding:3px 0}
.k2 .ts-abschnitt .ts-nr{grid-row:1;margin-bottom:calc(var(--takt)*1.5)}
.k2 .ts-abschnitt h2{grid-column:1/5;grid-row:2;font-size:var(--t3)}
.k2 .ts-abschnitt .ts-text{grid-column:6/12;grid-row:2}
.k3 .ts-abschnitt{grid-template-columns:repeat(8,minmax(0,1fr))}
.k3 .ts-abschnitt h2{grid-column:2/9;padding-right:0;margin-bottom:calc(var(--takt)*1.5)}
.k3 .ts-abschnitt .ts-text{grid-column:2/9}

/* Zahlenwerk und Datenpaare */
.ts-staffel{display:flex;flex-direction:column;margin:calc(var(--takt)*.5) 0}
.ts-staffel div{display:flex;justify-content:space-between;align-items:baseline;
  gap:calc(var(--takt)*2.5);border-top:1px solid var(--linie);padding:calc(var(--takt)*1.25) 0}
.ts-staffel div:last-child{border-bottom:1px solid var(--linie)}
.ts-staffel span:first-child{flex:1 1 auto;min-width:0;font-size:var(--t0);color:var(--text)}
.ts-staffel .wert{flex:0 0 auto;white-space:nowrap;font:500 13px/1 "DM Mono",ui-monospace,monospace;
  letter-spacing:.06em;color:var(--tinte);font-variant-numeric:lining-nums tabular-nums}
.ts-daten{display:grid;grid-template-columns:minmax(150px,auto) 1fr;column-gap:var(--gasse)}
.ts-daten dt{font:400 11px/1.45 Inter,system-ui,sans-serif;letter-spacing:.14em;
  text-transform:uppercase;color:var(--grau);border-top:1px solid var(--linie);
  padding:calc(var(--takt)*1.5) 0}
.ts-daten dd{font-size:var(--t0);line-height:1.5;color:var(--text);
  border-top:1px solid var(--linie);padding:calc(var(--takt)*1.5) 0;
  font-variant-numeric:lining-nums tabular-nums}

/* ---------- FAQ ---------- */
.ts-gruppe{border-top:1px solid var(--tinte);padding:calc(var(--takt)*3.5) 0 var(--luft);
  row-gap:calc(var(--takt)*3)}
.ts-gruppe .ts-nr{grid-column:1/2}
.ts-gruppe h2{grid-column:2/6;font-size:var(--t3);line-height:1.15;padding-right:var(--gasse)}
.ts-fragen{grid-column:6/13;display:flex;flex-direction:column}
.ts-frage{display:grid;grid-template-columns:calc(var(--takt)*9) 1fr;column-gap:var(--gasse);
  border-top:1px solid var(--linie);padding:calc(var(--takt)*2.5) 0}
.ts-frage:first-child{border-top:0;padding-top:0}
.ts-frage .ts-nr{padding-top:calc(var(--takt)*.75)}
.ts-frage h3{grid-column:2/3;font-size:var(--t1);line-height:1.25}
.ts-frage .ts-text{grid-column:2/3;margin-top:calc(var(--takt)*1.25);max-width:58ch}
.k2 .ts-gruppe h2{grid-column:1/6;font-size:var(--t4)}
.k3 .ts-gruppe{grid-template-columns:repeat(8,minmax(0,1fr))}
.k3 .ts-gruppe h2{grid-column:1/9;padding-right:0}
.k3 .ts-fragen{grid-column:1/9}

/* ---------- Schlussblock ---------- */
.ts-schluss{border-top:1px solid var(--tinte);padding-top:calc(var(--takt)*3.5);
  row-gap:calc(var(--takt)*3)}
/* Eine Zeile, drei Felder, Oberkanten buendig. grid-row wird ausdruecklich
   gesetzt, damit keine Fassungsregel den Satz in eine zweite Zeile schiebt. */
.ts-schluss h2{grid-column:1/5;grid-row:1;font-size:var(--t3);line-height:1.15}
.ts-schluss .ts-text{grid-column:6/10;grid-row:1;max-width:none}
.ts-knopf{grid-column:10/13;grid-row:1;align-self:start;display:flex;align-items:center;
  justify-content:space-between;gap:var(--gasse);height:56px;padding:0 calc(var(--takt)*2.75);
  border:1px solid var(--tinte);border-radius:0;text-decoration:none;
  font:400 11px/1 Inter,system-ui,sans-serif;letter-spacing:.16em;text-transform:uppercase;
  transition:background-color .2s ease,color .2s ease}
/* Der Pfeil waechst von 28 auf 44 px, gerechnet ueber transform statt Breite:
   eine Breitenanimation loest Layout und Paint aus. 28/44 = .636 ist der Ruhezustand. */
.ts-pf{position:relative;display:inline-block;flex:0 0 auto;width:44px;height:1px}
.ts-pf::before{content:"";position:absolute;inset:0;background:currentColor;
  transform:scaleX(.636);transform-origin:left center;transition:transform .25s cubic-bezier(.23,1,.32,1)}
.ts-pf::after{content:"";position:absolute;right:0;top:-3px;width:7px;height:7px;
  border-top:1px solid currentColor;border-right:1px solid currentColor;
  transform:translateX(-16px) rotate(45deg);transition:transform .25s cubic-bezier(.23,1,.32,1)}
@media (hover:hover) and (pointer:fine){
  .ts-knopf:hover{background:var(--tinte);color:var(--grund)}
  .ts-knopf:hover .ts-pf::before{transform:scaleX(1)}
  .ts-knopf:hover .ts-pf::after{transform:translateX(0) rotate(45deg)}
}

/* ---------- Tablet: 8 Spalten ----------
   Auch hier nur ZWEI senkrechte Linien: Spalte 1 traegt Etiketten, Ziffern und
   Ueberschriften, Spalte 4 den Text. Die Regeln muessen dieselbe Staerke haben
   wie die Fassungsregeln oben (.k2 .ts-abschnitt .ts-text), sonst gewinnen die
   Desktop-Spalten und der Satz rutscht eine Spalte nach rechts. */
@media (min-width:810px) and (max-width:1199px){
  .k1 .ts-titel h1,.k1 .ts-stand{grid-column:3/9}
  .k2 .ts-kicker,.k2 .ts-titel h1{grid-column:1/9}
  .k2 .ts-stand{grid-column:1/6}
  .k3 .ts-kicker,.k3 .ts-titel h1,.k3 .ts-stand{grid-column:3/9}
  .ts-inhalt ol,.k3 .ts-inhalt ol{grid-column:4/9;grid-template-columns:minmax(0,1fr)}
  .k3 .ts-inhalt{grid-column:1/3}
  .k3 .ts-koerper{grid-column:3/9}
  .ts-abschnitt h2,.k2 .ts-abschnitt h2,.k3 .ts-abschnitt h2{grid-column:1/4;font-size:var(--t2)}
  .ts-text,.k2 .ts-abschnitt .ts-text,.k3 .ts-abschnitt .ts-text{grid-column:4/9}
  .ts-gruppe h2,.k2 .ts-gruppe h2,.k3 .ts-gruppe h2{grid-column:1/4;font-size:var(--t3)}
  .ts-fragen,.k3 .ts-fragen{grid-column:4/9}
  .ts-schluss h2{grid-column:1/4;grid-row:1}
  .ts-schluss .ts-text{grid-column:4/9;grid-row:1}
  .ts-knopf{grid-column:4/9;grid-row:2;justify-self:stretch;margin-top:calc(var(--takt)*2)}
}

/* ---------- Mobil: alles untereinander, in DOM-Reihenfolge ----------
   Das !important ist noetig: die Fassungsregeln (.k1 .ts-stand{grid-row:3})
   wiegen sonst schwerer und stellen die Zeilen durcheinander. */
@media (max-width:809px){
  .textseite{padding-bottom:var(--luft)}
  .ts-titel>*,.ts-inhalt>*,.ts-abschnitt>*,.ts-gruppe>*,.ts-schluss>*{
    grid-column:1/5!important;grid-row:auto!important}
  .ts-titel h1,.k1 .ts-titel h1,.k2 .ts-titel h1,.k3 .ts-titel h1{
    font-size:clamp(28px,8.4vw,var(--t3));line-height:1.08;max-width:none}
  .ts-titel{padding-bottom:calc(var(--takt)*5)}
  .ts-kicker{margin-bottom:calc(var(--takt)*1.5)}
  .ts-stand{margin-top:calc(var(--takt)*2)}
  .ts-inhalt,.k3 .ts-inhalt{position:static;display:grid;margin-bottom:calc(var(--takt)*5)}
  .ts-inhalt ol,.k3 .ts-inhalt ol{display:grid;grid-template-columns:minmax(0,1fr)}
  .ts-abschnitt,.k3 .ts-abschnitt,.ts-gruppe,.k3 .ts-gruppe{
    padding:calc(var(--takt)*2.5) 0 calc(var(--takt)*5)}
  .ts-abschnitt h2,.k2 .ts-abschnitt h2,.k3 .ts-abschnitt h2,
  .ts-gruppe h2,.k2 .ts-gruppe h2{font-size:var(--t2);padding-right:0}
  .ts-text{max-width:none}
  .ts-frage{grid-template-columns:minmax(0,1fr);row-gap:calc(var(--takt))}
  .ts-frage .ts-nr,.ts-frage h3,.ts-frage .ts-text{grid-column:1/2;padding-top:0}
  .ts-daten{grid-template-columns:minmax(0,1fr)}
  .ts-daten dt{padding-bottom:0}
  .ts-daten dd{border-top:0;padding-top:calc(var(--takt)*.5)}
  .ts-knopf{width:100%}
}

/* Das Buchungsformular reist unsichtbar mit, damit der Verfuegbarkeits-Balken
   auf jeder Seite arbeitet. Siehe textseiten/bauen.py, Funktion buchform(). */
.ts-buchform{display:none}

/* Fassungsschalter, nur in der Vorschau */
.ts-schalter{position:fixed;left:0;top:50%;z-index:60;display:flex;flex-direction:column;
  background:#35302B}
.ts-schalter a{font:500 11px/1 "DM Mono",ui-monospace,monospace;letter-spacing:.14em;
  color:#F6F2EA;text-decoration:none;padding:12px 14px}
.ts-schalter a[aria-current]{background:#F1ECE3;color:#35302B}

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

/* ---------- Bausteine der Themenseiten ----------
   Beide sitzen INNERHALB der Textspalte (Linie 2) und erfinden keine neue Kante. */

/* Kennzahlen als Band: Etikett oben, Wert darunter, eine Haarlinie darueber. */
.ts-fakten{display:flex;flex-wrap:wrap;gap:calc(var(--takt)*4);
  border-top:1px solid var(--linie);padding-top:calc(var(--takt)*2)}
.ts-fakten div{display:flex;flex-direction:column;gap:calc(var(--takt)*.75)}
.ts-fakten dt{font:400 11px/1.45 Inter,system-ui,sans-serif;letter-spacing:.18em;
  text-transform:uppercase;color:var(--grau)}
.ts-fakten dd{font-family:"Cormorant Garamond",'Cormorant Ersatz',Georgia,serif;font-weight:300;
  font-size:var(--t1);line-height:1.2;color:var(--tinte)}

/* Gleichrangige Punkte: zwei Spalten, Haarlinie ueber jedem Eintrag. */
.ts-gitter{list-style:none;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));
  column-gap:var(--gasse);row-gap:calc(var(--takt)*3)}
.ts-gitter li{display:flex;flex-direction:column;gap:calc(var(--takt)*.75);
  border-top:1px solid var(--linie);padding-top:calc(var(--takt)*1.5)}
.ts-gitter h3{font-size:var(--t1);line-height:1.25}
.ts-gitter p{font-size:var(--t0);line-height:1.6;color:var(--text)}
@media (max-width:809px){
  .ts-fakten{gap:calc(var(--takt)*3)}
  .ts-gitter{grid-template-columns:minmax(0,1fr)}
}
/* 20.10.2026, Michael (FAQ): "Klebe vorne die Kategorie an, so wie bei Gut zu wissen." Dieselbe Regel wie dort
   (gut-zu-wissen-faqstil.py): Nummer und Kategorie bleiben unter der Kopfleiste stehen, bis ihre Gruppe endet. */
@media (min-width:810px){
  .ts-gruppe>.ts-nr,.ts-gruppe>h2{position:sticky;align-self:start}
  .ts-gruppe>.ts-nr{top:128px}
  .ts-gruppe>h2{top:176px}
}

/* === /zimmer-preise/zpm.css === */
/* Stil der Zimmer-Magazinseite, eingefasst in .zpm (26.09.2026).
   Erzeugt von zimmer-stil-einfassen.py -- NICHT von Hand aendern,
   die Quellen liegen in zimmer-preise/stil/. */

/* ===== heft.css ===== */
/* Zimmer und Preise, Heft-Fassungen A/B/C (21.09.2026). Ueberarbeitet nach Michaels Rueckmeldung:
   - Schrift: nur zwei Stimmen (Cormorant fuer Namen und Zahlen, Abhaya fuer Text), Inter nur als winziges Etikett in EINER Groesse.
     Vorher waren es fuenf Stimmen (Titel, Riesenzahl, Inter-Versalien, Abhaya, DM Mono) auf drei Groessenachsen: Wirrwarr.
   - Kennzahlen als geordnetes Paar (Etikett darueber, Wert darunter), Zahlen in Versalienziffern.
   - Keine Haarlinie unter jedem Listenpunkt (das las sich wie eine Zeitung).
   - Knopf: nie mehr der breite dunkle Balken; pro Fassung eine eigene, kleine Form.
   - Bilder in strengen Modulen auf dem 12/8/4-Spaltenraster. */.zpm{--grund:#F3EEE7;--tinte:#3D3733;--grau:#6E6862;--text:#5C554F;--linie:#DDD5C9;--tafel:#4A453F;
  --sp:12;--gasse:24px;--rand:40px;--seite:160px;--bh:clamp(260px,28vw,420px);--kurve:cubic-bezier(.23,1,.32,1);--breite:1435px}
@media (max-width:1199px){.zpm{--sp:8;--gasse:20px;--rand:32px;--seite:120px;--bh:clamp(240px,36vw,400px)}}
@media (max-width:809px){.zpm{--sp:4;--gasse:16px;--rand:20px;--seite:88px;--bh:clamp(220px,64vw,340px)}}.zpm *, .zpm *::before, .zpm *::after{box-sizing:border-box}.zpm{-webkit-text-size-adjust:100%;scroll-behavior:smooth}.zpm{margin:0;background:var(--grund);color:var(--tinte);font:17px/28px "Abhaya Libre",Georgia,serif;-webkit-font-smoothing:antialiased}.zpm img{display:block;width:100%;height:auto;object-fit:cover;background:#E6DFD4}.zpm a{color:inherit}.zpm h1, .zpm h2, .zpm h3, .zpm p, .zpm ul, .zpm figure, .zpm dl, .zpm dd{margin:0;padding:0}.zpm ::selection{background:var(--tinte);color:var(--grund)}.zpm a:focus-visible{outline:2px solid var(--tinte);outline-offset:4px}.zpm main, .zpm .kopf{max-width:var(--breite);margin:0 auto;padding-left:var(--rand);padding-right:var(--rand)}.zpm h1, .zpm h2, .zpm .satz, .zpm dd.zahl, .zpm .fakt dd{font-family:"Cormorant Garamond",Georgia,serif;font-weight:300;font-variant-numeric:lining-nums;font-feature-settings:"lnum" 1}.zpm .etikett, .zpm .fakt dt, .zpm .aus h3, .zpm .aus>span, .zpm .kat dt, .zpm .folio, .zpm .laufkopf, .zpm .f figcaption{font:400 11px/16px Inter,system-ui,sans-serif;letter-spacing:.18em;text-transform:uppercase;color:var(--grau)}.zpm .schalter{position:fixed;left:8px;top:8px;z-index:99;display:flex;background:#3D3733}.zpm .schalter a{font:500 12px/1 "DM Mono",ui-monospace,monospace;letter-spacing:.14em;color:#F6F2EA;text-decoration:none;padding:12px 16px}.zpm .schalter a[aria-current]{background:#F1ECE3;color:#35302B}.zpm .kopf{display:flex;justify-content:space-between;align-items:baseline;padding-top:32px;padding-bottom:28px}.zpm .wortmarke{font:300 22px/1 Oswald,Impact,sans-serif;letter-spacing:.42em;text-decoration:none}.zpm .auftakt{display:grid;grid-template-columns:repeat(var(--sp),minmax(0,1fr));column-gap:var(--gasse);padding-top:clamp(56px,9vw,140px)}.zpm .auftakt h1{grid-column:1/-1;font-size:clamp(34px,5.4vw,84px);line-height:.98;letter-spacing:-.02em}.zpm .einl{grid-column:8/span 5;margin-top:clamp(24px,4vw,64px);max-width:44ch;color:var(--text);text-wrap:pretty}.zpm .auftakt .f{grid-column:1/-1;margin-top:clamp(40px,6vw,96px)}.zpm .f{position:relative;overflow:hidden;margin:0}.zpm .f figcaption{padding-top:12px}.zpm .js .f{clip-path:inset(0 0 100% 0);transition:clip-path 1.1s var(--kurve)}.zpm .js .f.ein{clip-path:inset(0)}.zpm .js .f img{transform:scale(1.08);transition:transform 1.6s var(--kurve)}.zpm .js .f.ein img{transform:none}

/* Inhalt: links die Zimmer, rechts steht ein Foto fest und wechselt. Es folgt dem Zeiger nicht und verdeckt nichts. */.zpm .inhalt{display:grid;grid-template-columns:repeat(var(--sp),minmax(0,1fr));column-gap:var(--gasse);padding-top:var(--seite);align-items:start}.zpm .liste{grid-column:1/9;display:grid;grid-template-columns:subgrid;border-top:1px solid var(--tinte)}.zpm .zeile{grid-column:1/-1;display:grid;grid-template-columns:subgrid;align-items:baseline;padding:16px 0;border-bottom:1px solid var(--linie);text-decoration:none;transition:opacity .25s ease}.zpm .zeile .tn{grid-column:1/span 5;font:300 clamp(24px,2.5vw,36px)/1.1 "Cormorant Garamond",Georgia,serif;text-transform:uppercase;letter-spacing:.03em}.zpm .zeile .tq, .zpm .zeile .tp{color:var(--grau);font-variant-numeric:lining-nums}.zpm .zeile .tq{grid-column:6/span 1}.zpm .zeile .tp{grid-column:7/span 2}
@media (hover:hover) and (pointer:fine){.zpm .liste:hover .zeile{opacity:.42}.zpm .liste .zeile:hover{opacity:1}}.zpm .vorschau{grid-column:9/13;position:sticky;top:32px;aspect-ratio:4/5;overflow:hidden;background:#E6DFD4}.zpm .vorschau img{position:absolute;inset:0;height:100%;opacity:0;transition:opacity .45s ease}.zpm .vorschau img.an{opacity:1}

/* Raum: gemeinsame Bausteine */.zpm .raum{display:grid;grid-template-columns:repeat(var(--sp),minmax(0,1fr));column-gap:var(--gasse);row-gap:calc(var(--gasse)*1.5);padding-top:var(--seite);align-items:start;scroll-margin-top:24px}.zpm .raum h2{font-size:clamp(44px,5.2vw,80px);line-height:.95;letter-spacing:.015em;text-transform:uppercase;text-wrap:balance}.zpm .fakt{display:flex;gap:clamp(32px,4vw,56px)}.zpm .fakt div{display:flex;flex-direction:column;gap:10px}.zpm .fakt dd{font-size:clamp(28px,2.6vw,38px);line-height:1}.zpm .lead{color:var(--text);font-size:19px;line-height:30px;max-width:34ch;text-wrap:pretty}.zpm .cta{display:flex;flex-direction:column;gap:16px;align-items:flex-start}.zpm .preis{font-size:16px;line-height:24px;color:var(--text)}.zpm .pf{position:relative;display:inline-block;flex:0 0 auto;width:34px;height:1px;background:currentColor;transition:width .32s var(--kurve)}.zpm .pf::after{content:"";position:absolute;right:0;top:-3px;width:7px;height:7px;border-top:1px solid currentColor;border-right:1px solid currentColor;transform:rotate(45deg);transform-origin:center}.zpm .folio{grid-column:1/-1;display:flex;justify-content:space-between;gap:24px;margin-top:calc(var(--seite)*.3);padding-top:16px;border-top:1px solid var(--linie)}.zpm .f0 img, .zpm .f1 img, .zpm .f2 img{height:100%}

/* Fassung A: 1+2. Grosses Bild und zwei gestapelte, Text darunter in drei Spalten */.zpm .va .raum h2{grid-column:1/9;grid-row:1;align-self:end}.zpm .va .fakt{grid-column:9/13;grid-row:1;align-self:end;padding-bottom:6px}.zpm .va .modul{grid-column:1/-1;grid-row:2;display:grid;grid-template-columns:subgrid;row-gap:var(--gasse)}.zpm .va .modul .f0{grid-column:1/9}.zpm .va .modul .f0:only-child{grid-column:1/-1}.zpm .va .stapel{grid-column:9/13;display:grid;grid-template-rows:1fr 1fr;gap:var(--gasse);min-height:0}.zpm .va .stapel .f{min-height:0;height:100%}.zpm .va .lead{grid-column:1/5;grid-row:3}.zpm .va .aus{grid-column:5/9;grid-row:3;font-size:16px;line-height:26px;color:var(--text);text-wrap:pretty}.zpm .va .aus>span{display:block;margin-bottom:10px}.zpm .va .cta{grid-column:9/13;grid-row:3}.zpm .va .cta-a{display:inline-flex;align-items:center;gap:20px;font:300 28px/1.1 "Cormorant Garamond",Georgia,serif;text-decoration:none;padding-bottom:12px;border-bottom:1px solid var(--tinte)}
@media (hover:hover) and (pointer:fine){.zpm .va .cta-a:hover .pf{width:56px}}

/* Fassung B: Namen gross, dann eine Bildreihe in gleicher Hoehe (6/3/3 Spalten), dann eine Faktenzeile in vier Spalten */.zpm .vb .raum h2{grid-column:1/-1;font-size:clamp(56px,8.6vw,136px);line-height:.9;letter-spacing:-.01em}.zpm .vb .reihe{grid-column:1/-1;display:grid;grid-template-columns:subgrid}.zpm .vb .reihe .f{height:var(--bh)}.zpm .vb .reihe .f0{grid-column:1/7}.zpm .vb .reihe .f1{grid-column:7/10}.zpm .vb .reihe .f2{grid-column:10/13}.zpm .vb .reihe.n1 .f0{grid-column:1/-1}.zpm .vb .fakten{grid-column:1/-1;display:grid;grid-template-columns:subgrid;padding-top:28px;border-top:1px solid var(--tinte);row-gap:32px}.zpm .vb .fakt{grid-column:1/4}.zpm .vb .lead{grid-column:4/7}.zpm .vb .aus{grid-column:7/10}.zpm .vb .cta{grid-column:10/13}.zpm .vb .aus h3{margin-bottom:12px}.zpm .vb .aus ul{list-style:none;font-size:16px;line-height:26px;color:var(--text)}.zpm .vb .cta-b{display:flex;justify-content:space-between;align-items:center;width:100%;height:56px;padding:0 22px;border:1px solid var(--tinte);text-decoration:none;
  font:400 12px/1 Inter,system-ui,sans-serif;letter-spacing:.16em;text-transform:uppercase;transition:background-color .25s ease,color .25s ease}
@media (hover:hover) and (pointer:fine){.zpm .vb .cta-b:hover{background:var(--tinte);color:var(--grund)}.zpm .vb .cta-b:hover .pf{width:48px}}

/* Fassung C: links ein Bildmodul (1 gross, 2 klein) ueber sechs Spalten, rechts der Text ueber fuenf; dazwischen eine Spalte Luft */.zpm .vc .links{grid-column:1/7;display:flex;flex-direction:column;gap:var(--gasse)}.zpm .vc .paar{display:grid;grid-template-columns:1fr 1fr;gap:var(--gasse)}.zpm .vc .rechts{grid-column:8/13;display:flex;flex-direction:column;gap:32px}.zpm .vc .raum h2{font-size:clamp(40px,4.6vw,72px)}.zpm .vc .kat{display:grid;row-gap:22px}.zpm .vc .kat div{display:grid;grid-template-columns:minmax(72px,1fr) 4fr;column-gap:var(--gasse);align-items:baseline}.zpm .vc .kat dd{font-size:16px;line-height:24px;color:var(--text)}.zpm .vc .cta-c{display:flex;width:100%;height:56px;text-decoration:none}.zpm .vc .cta-c span{flex:1;display:flex;align-items:center;padding:0 22px;border:1px solid var(--tinte);border-right:0;font:400 12px/1 Inter,system-ui,sans-serif;letter-spacing:.16em;text-transform:uppercase}.zpm .vc .cta-c b{width:56px;display:flex;align-items:center;justify-content:center;background:var(--tafel);color:#F6F2EA;transition:background-color .25s ease}.zpm .vc .cta-c .pf{width:22px}
@media (hover:hover) and (pointer:fine){.zpm .vc .cta-c:hover b{background:#35302B}.zpm .vc .cta-c:hover .pf{width:28px}}.zpm .schluss{display:grid;grid-template-columns:repeat(var(--sp),minmax(0,1fr));column-gap:var(--gasse);row-gap:40px;padding:var(--seite) 0}.zpm .satz{grid-column:1/span 8;font-size:clamp(40px,6.4vw,104px);line-height:.98;letter-spacing:-.03em}.zpm .schluss .cta{grid-column:1/span 4}.zpm .va .schluss .cta{grid-column:1/span 4}

@media (prefers-reduced-motion:reduce){.zpm .js .f, .zpm .js .f img, .zpm .zeile, .zpm .vorschau img, .zpm .pf{transition:none!important;clip-path:none!important;transform:none!important}}

/* Tablet 8 Spalten */
@media (min-width:810px) and (max-width:1199px){.zpm .einl{grid-column:4/span 5}.zpm .liste{grid-column:1/-1}.zpm .vorschau{display:none}.zpm .zeile .tn{grid-column:1/span 4}.zpm .zeile .tq{grid-column:5/span 2}.zpm .zeile .tp{grid-column:7/span 2}.zpm .va .raum h2{grid-column:1/-1}.zpm .va .fakt{grid-column:1/-1;grid-row:2;padding:0}.zpm .va .modul{grid-row:3}.zpm .va .modul .f0{grid-column:1/-1}.zpm .va .stapel{grid-column:1/-1;grid-template-rows:none;grid-template-columns:1fr 1fr}.zpm .va .stapel .f{height:auto}.zpm .va .stapel img{aspect-ratio:4/3}.zpm .va .lead{grid-column:1/5;grid-row:4}.zpm .va .aus{grid-column:5/9;grid-row:4}.zpm .va .cta{grid-column:1/-1;grid-row:5}.zpm .vb .reihe .f{height:auto}.zpm .vb .reihe img{aspect-ratio:4/3}.zpm .vb .reihe .f0{grid-column:1/-1}.zpm .vb .reihe .f1{grid-column:1/5}.zpm .vb .reihe .f2{grid-column:5/9}.zpm .vb .fakt{grid-column:1/5}.zpm .vb .lead{grid-column:5/9}.zpm .vb .aus{grid-column:1/5}.zpm .vb .cta{grid-column:5/9}.zpm .vc .links, .zpm .vc .rechts{grid-column:1/-1}.zpm .satz{grid-column:1/-1}
}
/* Handy 4 Spalten: alles in Lesereihenfolge untereinander */
@media (max-width:809px){.zpm .kopf{padding-top:24px;padding-bottom:20px}.zpm .wortmarke{font-size:18px}.zpm .einl{grid-column:1/-1}.zpm .liste{grid-column:1/-1}.zpm .vorschau{display:none}.zpm .zeile{padding:12px 0}.zpm .zeile .tn{grid-column:1/-1}.zpm .zeile .tq{grid-column:1/span 2}.zpm .zeile .tp{grid-column:3/span 2}.zpm .raum>*, .zpm .modul, .zpm .reihe, .zpm .fakten, .zpm .links, .zpm .rechts{grid-column:1/-1!important;grid-row:auto!important}.zpm .modul, .zpm .reihe, .zpm .fakten, .zpm .links, .zpm .rechts{display:flex!important;flex-direction:column;gap:var(--gasse)}.zpm .va .stapel{display:flex;flex-direction:column;gap:var(--gasse)}.zpm .va .stapel .f{height:auto}.zpm .va .stapel img, .zpm .vb .reihe img, .zpm .f1 img, .zpm .f2 img{height:auto;aspect-ratio:4/3}.zpm .vb .reihe .f{height:auto}.zpm .f0 img{aspect-ratio:4/3!important;height:auto}.zpm .satz, .zpm .schluss .cta{grid-column:1/-1}.zpm .folio{flex-direction:column;gap:4px}.zpm .raum h2, .zpm .vb .raum h2{font-size:clamp(34px,9.6vw,52px);letter-spacing:.01em;hyphens:auto;overflow-wrap:anywhere}
}

/* ===== heft3.css ===== */
/* Fassung B weitergedacht (22.09.2026). Schriften: Cormorant fuer Namen, Abhaya fuer Text, DM Mono fuer alle Daten und Beschriftungen (Inter entfaellt).
   B1 folgt Michaels Skizze: das erste Bild links ist hoeher als die zwei anderen, seine Unterkante liegt auf der Linie, an der der Text endet.
   B2 Datenblatt in Mono. B3 gespiegelt, Standfirst, grosse Mono-Zahlen. */.zpm{--mono:"DM Mono",ui-monospace,monospace;--bh1:clamp(230px,25vw,370px)}
@media (max-width:1199px){.zpm{--bh1:clamp(200px,30vw,320px)}}.zpm :is(.vb1,.vb2,.vb3) :is(.et,.fakt dt,.aus h3,.aus>span,.kat dt,.folio,.laufkopf,.f figcaption,.lname){font:400 11px/16px var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--grau)}.zpm :is(.vb1,.vb2,.vb3) .zeile :is(.tq,.tp){font:400 13px/1 var(--mono);letter-spacing:.02em;font-variant-numeric:tabular-nums}.zpm :is(.vb1,.vb2,.vb3) .fakt dd{font:400 clamp(20px,1.9vw,28px)/1 var(--mono);letter-spacing:-.03em;font-variant-numeric:tabular-nums;color:var(--tinte)}.zpm :is(.vb1,.vb2,.vb3) .raum h2{grid-column:1/-1;font-size:clamp(56px,8.6vw,136px);line-height:.9;letter-spacing:-.01em}.zpm :is(.vb1,.vb2,.vb3) .preis{font:400 12px/20px var(--mono);letter-spacing:.06em;color:var(--text)}.zpm :is(.vb1,.vb2,.vb3) .knopf{display:flex;justify-content:space-between;align-items:center;width:100%;height:52px;padding:0 20px;border:1px solid var(--tinte);text-decoration:none;font:500 11px/1 var(--mono);letter-spacing:.24em;text-transform:uppercase;transition:background-color .25s ease,color .25s ease}
@media (hover:hover) and (pointer:fine){.zpm :is(.vb1,.vb2,.vb3) .knopf:hover{background:var(--tinte);color:var(--grund)}.zpm :is(.vb1,.vb2,.vb3) .knopf:hover .pf{width:48px}}.zpm :is(.vb1,.vb2,.vb3) .schluss .cta{grid-column:1/span 4}

/* gemeinsames Modul: zwei Zeilen, links das hohe Erstbild, rechts zwei Fotos und darunter der Text */.zpm .raum.g1 .modul, .zpm .raum.g2 .modul, .zpm .raum.g3 .modul{grid-column:1/-1;display:grid;grid-template-columns:subgrid;grid-template-rows:var(--bh1) auto;row-gap:var(--gasse);align-items:stretch}.zpm .raum .modul .f{margin:0;min-height:0}.zpm .raum .modul .f img{height:100%}.zpm .raum .tb{display:grid;grid-template-columns:subgrid;align-content:space-between;row-gap:24px;padding-top:24px;border-top:1px solid var(--tinte);min-width:0}

/* B1 */.zpm .g1 .f0{grid-column:1/7;grid-row:1/3}.zpm .g1 .f1{grid-column:7/10;grid-row:1}.zpm .g1 .f2{grid-column:10/13;grid-row:1}.zpm .g1 .tb{grid-column:7/13;grid-row:2}.zpm .g1 .fakt{grid-column:1/-1}.zpm .g1 .lead{grid-column:1/4;font-size:18px;line-height:29px}.zpm .g1 .aus{grid-column:4/7;font-size:15px;line-height:24px;color:var(--text)}.zpm .g1 .cta{grid-column:1/-1;max-width:calc(50% - 12px)}.zpm .g1.n0 .f0{grid-column:1/8}.zpm .g1.n0 .tb{grid-column:8/13;grid-row:1/3;border-top:0;padding-top:0;display:flex;flex-direction:column;justify-content:space-between}

/* B2 Datenblatt */.zpm .g2 .f0{grid-column:1/6;grid-row:1/3}.zpm .g2 .f1{grid-column:6/10;grid-row:1}.zpm .g2 .f2{grid-column:10/13;grid-row:1}.zpm .g2 .tb{grid-column:6/13;grid-row:2}.zpm .g2 .fakt{grid-column:1/4;flex-direction:column;gap:18px}.zpm .g2 .lead{grid-column:4/8;font-size:18px;line-height:29px}.zpm .g2 .kat{grid-column:1/-1;display:grid;grid-template-columns:repeat(4,1fr);column-gap:var(--gasse);row-gap:14px;border-top:1px solid var(--linie);padding-top:18px}.zpm .g2 .kat div{display:flex;flex-direction:column;gap:8px}.zpm .g2 .kat dd{font:400 12px/20px var(--mono);letter-spacing:.01em;color:var(--text)}.zpm .g2 .cta{grid-column:1/-1}.zpm .g2 .cta .knopf{max-width:320px}.zpm .g2.n0 .f0{grid-column:1/8}.zpm .g2.n0 .tb{grid-column:8/13;grid-row:1/3;border-top:0;padding-top:0}

/* B3 gespiegelt */.zpm .g3 .f0{grid-column:1/7;grid-row:1/3}.zpm .g3 .f1{grid-column:7/11;grid-row:1}.zpm .g3 .f2{grid-column:11/13;grid-row:1}.zpm .g3 .tb{grid-column:7/13;grid-row:2}.zpm .g3.mir .f0{grid-column:7/13}.zpm .g3.mir .f1{grid-column:3/7}.zpm .g3.mir .f2{grid-column:1/3}.zpm .g3.mir .tb{grid-column:1/7}.zpm .g3 .stand{grid-column:1/-1;font:300 clamp(24px,2.2vw,32px)/1.24 "Cormorant Garamond",Georgia,serif;text-wrap:balance;max-width:26ch}.zpm .g3 .fakt{grid-column:1/4;gap:32px}.zpm .g3 .fakt dd{font-size:clamp(28px,3vw,44px);font-weight:300}.zpm .g3 .aus{grid-column:4/7;font:400 12px/20px var(--mono);letter-spacing:.01em;color:var(--text)}.zpm .g3 .aus .et{margin-bottom:8px}.zpm .g3 .cta{grid-column:1/-1}.zpm .g3 .cta .knopf{max-width:calc(50% - 12px)}.zpm .g3.n0 .f0{grid-column:1/8}.zpm .g3.n0 .tb{grid-column:8/13;grid-row:1/3;border-top:0;padding-top:0}.zpm .g3.n0.mir .f0{grid-column:6/13}.zpm .g3.n0.mir .tb{grid-column:1/6}

/* Tablet 8 Spalten */
@media (min-width:810px) and (max-width:1199px){.zpm .raum .modul{grid-template-rows:var(--bh1) auto auto}.zpm .g1 .f0, .zpm .g2 .f0, .zpm .g3 .f0, .zpm .g3.mir .f0{grid-column:1/-1;grid-row:1;height:auto}.zpm .raum .f0 img{aspect-ratio:4/3;height:auto}.zpm .g1 .f1, .zpm .g2 .f1, .zpm .g3 .f1, .zpm .g3.mir .f1{grid-column:1/5;grid-row:2}.zpm .g1 .f2, .zpm .g2 .f2, .zpm .g3 .f2, .zpm .g3.mir .f2{grid-column:5/9;grid-row:2}.zpm .g1 .tb, .zpm .g2 .tb, .zpm .g3 .tb, .zpm .g3.mir .tb{grid-column:1/-1;grid-row:3}.zpm .g1 .lead, .zpm .g2 .lead{grid-column:1/5}.zpm .g1 .aus{grid-column:5/9}.zpm .g2 .fakt{grid-column:1/4}.zpm .g2 .lead{grid-column:4/9}.zpm .g2 .kat{grid-template-columns:repeat(2,1fr)}.zpm .g3 .fakt{grid-column:1/5}.zpm .g3 .aus{grid-column:5/9}.zpm .g1 .cta, .zpm .g3 .cta .knopf{max-width:none}.zpm .raum.n0 .f0, .zpm .raum.n0.mir .f0{grid-column:1/-1;grid-row:1}.zpm .raum.n0 .tb, .zpm .raum.n0.mir .tb{grid-column:1/-1;grid-row:2;border-top:1px solid var(--tinte);padding-top:24px;display:grid}.zpm .raum.n0 .modul{grid-template-rows:auto auto}
}
/* Handy 4 Spalten */
@media (max-width:809px){.zpm .raum .modul{display:flex;flex-direction:column;gap:var(--gasse)}.zpm .raum .modul .f img, .zpm .raum .f0 img{height:auto;aspect-ratio:4/3}.zpm .raum .tb{display:flex;flex-direction:column;gap:22px}.zpm .g1 .cta, .zpm .g3 .cta .knopf, .zpm .g2 .cta .knopf{max-width:none}.zpm .g2 .kat{grid-template-columns:1fr 1fr}.zpm :is(.vb1,.vb2,.vb3) .raum h2{font-size:clamp(34px,9.6vw,52px);overflow-wrap:anywhere;hyphens:auto}
}.zpm .raum .aus .et{display:block;margin-bottom:8px}
/* b-2: Seitenrand ca. 50 px breiter (40 + 50 = 90 px am Desktop) */.zpm .vb2 main, .zpm .vb2 .kopf{padding-left:calc(var(--rand) + 50px);padding-right:calc(var(--rand) + 50px)}
@media (max-width:1199px){.zpm .vb2 main, .zpm .vb2 .kopf{padding-left:calc(var(--rand) + 24px);padding-right:calc(var(--rand) + 24px)}}
@media (max-width:809px){.zpm .vb2 main, .zpm .vb2 .kopf{padding-left:var(--rand);padding-right:var(--rand)}}
/* b-2: Textblock rueckt links (vom Foto) und rechts weiter ein */
@media (min-width:1200px){.zpm .vb2 .g2 .tb{padding-left:56px;padding-right:56px}}
@media (min-width:810px) and (max-width:1199px){.zpm .vb2 .g2 .tb{padding-left:24px;padding-right:24px}}
/* b-2: Preishinweis links, Knopf rechts in einer Zeile */
@media (min-width:640px){.zpm .vb2 .g2 .cta{display:flex;flex-direction:row;justify-content:space-between;align-items:center;gap:24px}.zpm .vb2 .g2 .cta .preis{margin:0}.zpm .vb2 .g2 .cta .knopf{width:320px;flex:none}}

/* b-2: ohne Preishinweis, Knopf rechts */
@media (min-width:640px){.zpm .vb2 .g2 .cta{justify-content:flex-end}}

/* ===== heft17.css ===== */
/* fb-m2: eine Kategorie. modul enthaelt nur die drei Fotos (eine Reihe, hoehe var(--bh1)); Laufleiste und Textblock liegen als eigene Zeilen direkt im .raum-Raster, nicht mehr im modul. */.zpm .m2 .g2 .modul{grid-template-rows:var(--bh1)}
/* Laufleiste: duenne Linie ueber die volle Breite, dunkler Abschnitt endet dort, wo die Typografie (Spalte 6) beginnt -- ueber Raster, nicht per Prozentwert */.zpm .m2 .g2 .lauf{grid-column:1/-1;display:grid;grid-template-columns:subgrid;position:relative;height:24px;margin:32px 0 40px}.zpm .m2 .g2 .lauf::before{content:"";position:absolute;left:0;right:0;top:0;height:1px;background:var(--linie)}.zpm .m2 .g2 .lauf i{grid-column:1/6;height:1px;background:var(--tinte);align-self:start;margin:0}.zpm .m2 .g2 .lauf span{grid-column:11/13;justify-self:end;align-self:start;margin-top:-14px;padding-left:16px;background:var(--grund);font:400 13px/24px var(--mono);letter-spacing:.06em;color:var(--grau);font-variant-numeric:tabular-nums;white-space:nowrap}.zpm .m2 .g2 .tb{grid-column:6/13;grid-row:auto;border-top:0;padding-top:0;display:flex;flex-direction:column;gap:24px}
@media (min-width:1200px){.zpm .m2 .g2 .kat{grid-template-columns:repeat(3,1fr)}}
@media (max-width:1199px){.zpm .m2 .g2 .tb, .zpm .m2 .g2 .lauf{grid-column:1/-1}.zpm .m2 .g2 .kat{grid-template-columns:1fr}}.zpm .js .f{clip-path:none!important}.zpm .js .f img{transform:none!important}
/* fb-m2: Knopf tiefer und ueber die volle Breite der Typografie (Textspalte) */.zpm .m2 .g2 .cta{margin-top:40px}.zpm .m2 .g2 .cta .knopf{max-width:none;width:100%}

/* ===== heft20.css ===== */
/* fb-m5: Groesse (fakt) links, Erklaertext (lead) in der zweiten Spalte daneben -- nicht mehr untereinander. Darunter weiter die drei Spalten Ausstattung/Ausrichtung/Extras. */
@media (min-width:1200px){.zpm .m2 .g2 .tb{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));column-gap:var(--gasse);row-gap:24px}.zpm .m2 .g2 .fakt{grid-column:1/2;flex-direction:column;gap:18px}.zpm .m2 .g2 .lead{grid-column:2/4;font-size:18px;line-height:29px;max-width:44ch}.zpm .m2 .g2 .kat{grid-column:1/-1}.zpm .m2 .g2 .cta{grid-column:1/-1}
}
/* Fliesstext: schmalerer Umbruch wie in der kompakten Fassung, mehr Luft zwischen den Bloecken (Schweizer Grit: ruhige Spalten, grosszuegiger Abstand) */
@media (min-width:1200px){.zpm .m2 .g2 .lead{max-width:32ch;line-height:32px}.zpm .m2 .g2 .tb{row-gap:40px}.zpm .m2 .g2 .kat{padding-top:24px}.zpm .m2 .g2 .cta{margin-top:56px}
}

/* ===== heft21.css ===== */
/* Drei Bildvarianten fuer eine Zimmerkategorie. Schweizer Grit: strenges 12-Spalten-Raster, grosszuegige Gassen, keine Effekte. */

/* V1: vertikal geteilt -- links ein Bild ueber die volle Hoehe, rechts oben zwei kleine Bilder, rechts unten der Text. Drei Bloecke (links / rechts-oben / rechts-unten), kein Lauf. */.zpm .v1 .modul{grid-column:1/-1;display:grid;grid-template-columns:subgrid;grid-template-rows:var(--bh1) auto;row-gap:var(--gasse);align-items:stretch}.zpm .v1 .f0{grid-column:1/7;grid-row:1/3}.zpm .v1 .f1{grid-column:7/10;grid-row:1}.zpm .v1 .f2{grid-column:10/13;grid-row:1}.zpm .m2.g2.v1 .tb{grid-column:7/13;grid-row:2;display:flex;flex-direction:column;gap:32px;padding-top:24px;border-top:1px solid var(--tinte)}
@media (min-width:1200px){.zpm .m2.g2.v1 .tb .fakt{flex-direction:row;gap:40px}.zpm .m2.g2.v1 .tb .kat{display:grid;grid-template-columns:1fr;row-gap:32px}}
@media (max-width:1199px){.zpm .v1 .f0{grid-column:1/-1;grid-row:1;height:auto}.zpm .v1 .f0 img{aspect-ratio:4/3;height:auto}.zpm .v1 .f1{grid-column:1/5;grid-row:2}.zpm .v1 .f2{grid-column:5/9;grid-row:2}.zpm .m2.g2.v1 .tb{grid-column:1/-1;grid-row:3}}

/* V2: oben ein Panoramafoto ueber die volle Breite, darunter zwei kleinere Bilder nebeneinander, dann Text (wie m2/m4). */.zpm .v2 .modul{grid-template-rows:calc(var(--bh1)*.62) var(--bh1)}.zpm .v2 .f0{grid-column:1/-1;grid-row:1}.zpm .v2 .f0 img{aspect-ratio:16/7;height:auto}.zpm .v2 .f1{grid-column:1/7;grid-row:2}.zpm .v2 .f2{grid-column:7/13;grid-row:2}
@media (max-width:1199px){.zpm .v2 .f1, .zpm .v2 .f2{grid-column:1/5}.zpm .v2 .f2{grid-column:5/9}}

/* V3: zwei gleich grosse Bilder nebeneinander (redaktionelles Paar), Text darunter. */.zpm .v3 .modul{grid-template-rows:var(--bh1)}.zpm .v3 .f0{grid-column:1/7;grid-row:1}.zpm .v3 .f1{grid-column:7/13;grid-row:1}
@media (max-width:1199px){.zpm .v3 .f0{grid-column:1/5}.zpm .v3 .f1{grid-column:5/9}}

/* ===== heft22.css ===== */
/* Drei Typografie-Varianten auf gleicher Bildkomposition und gleichem Grundgeruest (fakt|lead, drei Spalten, Knopf). Kein Strich mehr zwischen Bild und Text -- Trennung nur durch Abstand (Swiss Grid: Luft statt Linie). Nur die Hausschriften: Cormorant Garamond, Abhaya Libre, DM Mono, Inter, Oswald. */.zpm .m2.t1 .lauf, .zpm .m2.t2 .lauf, .zpm .m2.t3 .lauf{display:none}.zpm .t1 .g2 .tb, .zpm .t2 .g2 .tb, .zpm .t3 .g2 .tb{border-top:0;padding-top:0}.zpm .t1 .g2 .modul, .zpm .t2 .g2 .modul, .zpm .t3 .g2 .modul{margin-bottom:64px}.zpm .t1 .g2 .kat, .zpm .t2 .g2 .kat, .zpm .t3 .g2 .kat{border-top:0}

/* T1 -- knapp und zeitgemaess: Kopfzeile in Inter-Versalien statt Cormorant, Lead in Abhaya schmucklos, DM Mono nur fuer Zahlen. */.zpm .t1 .g2 h2{font:400 15px/1 "Inter",sans-serif;letter-spacing:.28em;text-transform:uppercase;margin-bottom:40px}.zpm .t1 .g2 .fakt dt, .zpm .t1 .g2 .kat dt{font:500 11px/16px "Inter",sans-serif;letter-spacing:.14em;text-transform:uppercase;color:var(--grau)}.zpm .t1 .g2 .fakt dd{font:400 30px/1 "DM Mono",monospace;letter-spacing:-.02em}.zpm .t1 .g2 .lead{font:400 17px/27px "Abhaya Libre",Georgia,serif;letter-spacing:0;max-width:34ch}.zpm .t1 .g2 .kat dd{font:400 15px/24px "Abhaya Libre",Georgia,serif}

/* T2 -- ruhig und technisch: alles in DM Mono, sehr klein und praezise, viel Weissraum, Cormorant bleibt nur der Titel. */.zpm .t2 .g2 h2{font:300 clamp(40px,4.6vw,64px)/1 "Cormorant Garamond",Georgia,serif;letter-spacing:0;text-transform:none;margin-bottom:56px}.zpm .t2 .g2 .fakt dt, .zpm .t2 .g2 .kat dt{font:400 11px/16px "DM Mono",monospace;letter-spacing:.1em;text-transform:uppercase;color:var(--grau)}.zpm .t2 .g2 .fakt dd{font:400 22px/1 "DM Mono",monospace;letter-spacing:-.01em}.zpm .t2 .g2 .lead{font:400 13px/22px "DM Mono",monospace;letter-spacing:-.005em;max-width:40ch;color:var(--tinte)}.zpm .t2 .g2 .kat dd{font:400 13px/22px "DM Mono",monospace;letter-spacing:-.005em}

/* T3 -- warm und grosszuegig: Cormorant 300 fuer Titel und Lead in groesserer Type, Oswald-Versalien als feine Etiketten, mehr Zeilenabstand. */.zpm .t3 .g2 h2{font:300 clamp(44px,5vw,72px)/1 "Cormorant Garamond",Georgia,serif;letter-spacing:.01em;margin-bottom:64px}.zpm .t3 .g2 .fakt dt, .zpm .t3 .g2 .kat dt{font:400 11px/1 "Oswald",sans-serif;letter-spacing:.32em;text-transform:uppercase;color:var(--grau)}.zpm .t3 .g2 .fakt dd{font:400 26px/1 "Cormorant Garamond",Georgia,serif;letter-spacing:0}.zpm .t3 .g2 .lead{font:300 22px/34px "Cormorant Garamond",Georgia,serif;letter-spacing:.005em;max-width:28ch}.zpm .t3 .g2 .kat dd{font:400 16px/27px "Abhaya Libre",Georgia,serif}.zpm .t3 .g2 .tb{row-gap:48px}
/* Kombination V1-Bildanordnung + T1-Typografie: Strich zwischen Bild und Text auch hier weg */.zpm .t1 .m2.g2.v1 .tb, .zpm .t1 .g2.v1 .tb{border-top:0;padding-top:0}.zpm .t1 .g2.v1 .fakt{gap:40px}

/* ===== zt2-a.css ===== */
/* Block-2-Vorschlag A: Register mit laufender Nummer (22.09.2026). Nummer statt Aufzaehlungspunkt,
   eine ruhige Zeile statt drei Spalten, Zahlen zu einer Angabe zusammengefasst, feine Zeilenbewegung beim Zeigen. */.zpm .insA .liste{grid-column:1/9;display:flex;flex-direction:column;border-top:1px solid var(--tinte)}.zpm .insA .zeile{display:flex;align-items:baseline;gap:28px;padding:26px 0;border-bottom:1px solid var(--linie)}.zpm .insA .zeile .num{flex:0 0 auto;font:400 12px/1 var(--mono,"DM Mono",monospace);letter-spacing:.02em;color:var(--grau);font-variant-numeric:tabular-nums;transition:color .3s var(--kurve)}.zpm .insA .zeile .tn{flex:1 1 auto;grid-column:auto;font:300 clamp(22px,2.3vw,32px)/1.15 "Cormorant Garamond",Georgia,serif;text-transform:none;letter-spacing:0;transition:transform .3s var(--kurve)}.zpm .insA .zeile .spec{flex:0 0 auto;grid-column:auto;font:400 12px/1 var(--mono,"DM Mono",monospace);letter-spacing:.06em;color:var(--grau);font-variant-numeric:tabular-nums;white-space:nowrap}.zpm .insA .liste:hover .zeile{opacity:1}
@media (hover:hover) and (pointer:fine){.zpm .insA .zeile:hover .num{color:var(--tinte)}.zpm .insA .zeile:hover .tn{transform:translateX(6px)}
}.zpm .insA .vorschau{border:1px solid var(--linie)}
@media (prefers-reduced-motion:reduce){.zpm .insA .zeile .tn, .zpm .insA .zeile .num{transition:none}}
@media (max-width:809px){.zpm .insA .liste{grid-column:1/-1}.zpm .insA .zeile{flex-wrap:wrap;gap:4px 16px;padding:18px 0}.zpm .insA .zeile .spec{flex-basis:100%;order:3}
}.zpm .schalter{left:auto;right:8px}

/* ===== zt6.css ===== */
/* L7 und L8 (23.09.2026): Kopfzeile mit Zimmername links und Kennzahlen rechts,
   darunter ein dunkler Strich, dann Fließtext, dann die Gruppen als beschriftete
   Zeilen mit Haarlinien, zuletzt der Knopf über die ganze Breite.
   L7 setzt Name und Zahlen in IBM Plex Mono, L8 in Cormorant Garamond.
   Fließtext und Listen sind in beiden Abhaya Libre. */.zpm .lz .raum{padding-top:48px}.zpm .lz .kopf{padding-bottom:16px}.zpm .schalter.rand{top:44px}.zpm .schalter.sicht{top:80px}

/* Kopfzeile, Strich, Fließtext, Gruppen, Knopf */
@media (min-width:1200px){.zpm .lz .m2.g2.v1 .tb{display:grid!important;grid-template-columns:1fr auto auto;column-gap:48px;row-gap:0;align-content:start;
    padding-left:var(--textrand,48px)!important;padding-right:var(--textrand,48px)!important;padding-top:0!important;border-top:0!important}.zpm .lz .g2 .tb h2{grid-column:1;grid-row:1;align-self:end;margin:0}.zpm .lz .g2.v1 .fakt{display:contents!important}.zpm .lz .g2 .fakt div:nth-child(1){grid-column:2;grid-row:1;text-align:right;align-self:end}.zpm .lz .g2 .fakt div:nth-child(2){grid-column:3;grid-row:1;text-align:right;align-self:end}.zpm .lz .g2 .linie{grid-column:1/-1;grid-row:2;margin:18px 0 0;border:0;border-top:1px solid var(--tinte)}.zpm .lz .m2.g2.v1 .lead{grid-column:1/-1;grid-row:3;margin:56px 0 0;padding-left:220px;max-width:46ch}.zpm .lz .m2.g2.v1 .kat{grid-column:1/-1;grid-row:4;margin-top:56px;padding-top:0!important;display:grid;grid-template-columns:200px 1fr;column-gap:32px;row-gap:0}.zpm .lz .g2 .kat div{display:grid;grid-template-columns:subgrid;grid-column:1/-1;align-items:start;padding:20px 0;border-bottom:1px solid var(--linie)}.zpm .lz .g2 .kat div:first-child{padding-top:0}.zpm .lz .g2 .kat dt{grid-column:1;padding-top:4px}.zpm .lz .g2 .kat dd{grid-column:2;margin:0}.zpm .lz .m2.g2.v1 .cta{grid-column:1/-1;grid-row:5;margin-top:40px}.zpm .lz .g2 .cta{align-items:stretch!important;width:100%}.zpm .lz .g2 .cta .knopf{max-width:none!important;width:100%}
}

/* Gemeinsame Schriften */.zpm .lz .g2 .fakt dt, .zpm .lz .g2 .kat dt{font:400 11px/1.6em "IBM Plex Mono",ui-monospace,monospace;letter-spacing:.18em;text-transform:uppercase;color:var(--grau)}.zpm .lz .m2.g2.v1 .lead{font:400 19px/1.55em "Abhaya Libre",Georgia,serif;color:var(--tinte)}.zpm .lz .g2 .kat dd{font:400 16px/1.55em "Abhaya Libre",Georgia,serif;color:var(--text)}.zpm .lz .g2 .cta .knopf{font:400 11px/1 "IBM Plex Mono",ui-monospace,monospace;letter-spacing:.22em;text-transform:uppercase}

/* L7: Name und Zahlen in Mono, weit gesperrt */.zpm .lz7 .g2 .tb h2{font:300 34px/1em "IBM Plex Mono",ui-monospace,monospace;letter-spacing:.24em;text-transform:uppercase}.zpm .lz7 .g2 .fakt dd{font:300 34px/1em "IBM Plex Mono",ui-monospace,monospace;letter-spacing:-.02em;font-variant-numeric:tabular-nums;color:var(--tinte);margin-top:8px}

/* L8: Name und Zahlen in Cormorant, Etiketten bleiben Mono */.zpm .lz8 .g2 .tb h2{font:300 46px/1em "Cormorant Garamond",Georgia,serif;letter-spacing:-.015em;text-transform:none}.zpm .lz8 .g2 .fakt dd{font:300 36px/1em "Cormorant Garamond",Georgia,serif;letter-spacing:0;font-variant-numeric:lining-nums;font-feature-settings:"lnum" 1;color:var(--tinte);margin-top:6px}

/* Nachbesserung: Umschalter nach rechts (überdeckte die Wortmarke) und der
   Zimmername in L7 bleibt einzeilig -- Mono mit weiter Sperrung braucht Platz. */.zpm .lz .schalter{left:auto;right:8px}.zpm .lz7 .g2 .tb h2{font-size:24px;letter-spacing:.2em;white-space:nowrap}

/* L7: Kennzahlen so groß wie der Zimmername, Etiketten linksbündig über der
   jeweiligen Angabe (nicht mehr rechts ausgerichtet). */
@media (min-width:1200px){.zpm .lz7 .g2 .fakt div{text-align:left!important}
}.zpm .lz7 .g2 .fakt dd{font:300 24px/1em "IBM Plex Mono",ui-monospace,monospace;letter-spacing:.04em;font-variant-numeric:tabular-nums;color:var(--tinte);margin-top:10px}

/* L8: Zimmername und Kennzahlen etwas kleiner (46/36 -> 38/28). */.zpm .lz8 .g2 .tb h2{font-size:38px}.zpm .lz8 .g2 .fakt dd{font-size:28px;margin-top:8px}.zpm .schalter.name{top:116px}

/* Tablet (810 bis 1199 px): der Text steht zweispaltig -- links Fließtext,
   rechts die Gruppen. Kopfzeile bleibt Name links, Kennzahlen rechts. */
@media (min-width:810px) and (max-width:1199px){.zpm .lz .m2.g2.v1 .tb{display:grid!important;grid-template-columns:1fr 1fr;column-gap:32px;row-gap:0;align-content:start;
    padding:0!important;border-top:0!important}.zpm .lz .g2 .tb h2{grid-column:1;grid-row:1;align-self:end;margin:0}.zpm .lz .g2.v1 .fakt{display:flex!important;flex-direction:row!important;gap:32px;grid-column:2;grid-row:1;align-self:end;justify-content:flex-end}.zpm .lz .g2 .fakt div{text-align:left}.zpm .lz .g2 .linie{grid-column:1/-1;grid-row:2;margin:16px 0 0;border:0;border-top:1px solid var(--tinte)}.zpm .lz .m2.g2.v1 .lead{grid-column:1;grid-row:3;margin:32px 0 0;padding-left:0;max-width:32ch}.zpm .lz .m2.g2.v1 .kat{grid-column:2;grid-row:3;margin-top:32px;padding-top:0!important;display:grid;grid-template-columns:1fr;row-gap:0}.zpm .lz .g2 .kat div{display:block;padding:14px 0;border-bottom:1px solid var(--linie)}.zpm .lz .g2 .kat div:first-child{padding-top:0}.zpm .lz .g2 .kat dt{padding:0}.zpm .lz .g2 .kat dd{margin-top:6px}.zpm .lz .m2.g2.v1 .cta{grid-column:1/-1;grid-row:4;margin-top:32px}.zpm .lz .g2 .cta{align-items:stretch!important;width:100%}.zpm .lz .g2 .cta .knopf{max-width:none!important;width:100%}.zpm .lz7 .g2 .tb h2{font-size:20px;letter-spacing:.18em}.zpm .lz7 .g2 .fakt dd{font-size:20px}.zpm .lz8 .g2 .tb h2{font-size:32px}.zpm .lz8 .g2 .fakt dd{font-size:24px}
}

/* Diaschau im Auftakt */.zpm .auftakt .schau{grid-column:1/-1;margin-top:clamp(40px,6vw,96px)}.zpm .folien{position:relative;aspect-ratio:12/5;overflow:hidden;background:#E6DFD4}.zpm .folie{position:absolute;inset:0;margin:0;opacity:0;transition:opacity .6s var(--kurve)}.zpm .folie.an{opacity:1}.zpm .folie img{width:100%;height:100%;object-fit:cover}.zpm .schausteuer{display:flex;align-items:center;gap:20px;padding-top:14px}.zpm .pfeil{width:34px;height:24px;padding:0;border:0;background:transparent;cursor:pointer;position:relative}.zpm .pfeil::before{content:"";position:absolute;left:0;right:0;top:11px;height:1px;background:var(--tinte)}.zpm .pfeil::after{content:"";position:absolute;top:8px;width:7px;height:7px;border-top:1px solid var(--tinte);border-right:1px solid var(--tinte)}.zpm .pfeil.vor::after{right:0;transform:rotate(45deg)}.zpm .pfeil.zurueck::after{left:0;transform:rotate(-135deg)}.zpm .zaehler{font:400 11px/1 "IBM Plex Mono",ui-monospace,monospace;letter-spacing:.16em;color:var(--grau);font-variant-numeric:tabular-nums}
@media (hover:hover) and (pointer:fine){.zpm .pfeil:hover::before{background:var(--grau)}}
@media (prefers-reduced-motion:reduce){.zpm .folie{transition:none}}

/* ================================================================= *
 * Kopfzeile: drei Fassungen zum Vergleich (23.09.2026)
 * K1  Name links, rechts EINE stille Zeile "30 m² · 2–4 Personen"
 * K2  Name links, Kennzahlen als kleine Zeile DARUNTER, rechts Luft
 * K3  Name groß, darunter zwei beschriftete Spalten (Swiss Grid)
 * ================================================================= */
@media (min-width:1200px){
  /* K1 */.zpm .kz1 .m2.g2.v1 .tb{grid-template-columns:1fr auto!important}.zpm .kz1 .g2.v1 .fakt{display:flex!important;flex-direction:row!important;grid-column:2;grid-row:1;align-self:end;gap:0 10px;align-items:baseline}.zpm .kz1 .g2 .fakt div{flex-direction:row!important;gap:0}.zpm .kz1 .g2 .fakt dt{display:none}.zpm .kz1 .g2 .fakt dd{font:400 15px/1.6em "IBM Plex Mono",ui-monospace,monospace!important;letter-spacing:.02em;margin:0!important;color:var(--grau)}.zpm .kz1 .g2 .fakt div+div::before{content:"·";color:var(--grau);margin-right:10px;font:400 15px/1.6em "IBM Plex Mono",ui-monospace,monospace}.zpm .kz1 .g2 .fakt div+div dd::after{content:" Personen"}

  /* K2 */.zpm .kz2 .m2.g2.v1 .tb{grid-template-columns:1fr auto!important}.zpm .kz2 .g2 .tb h2{grid-column:1;grid-row:1;align-self:end}.zpm .kz2 .g2.v1 .fakt{display:flex!important;flex-direction:row!important;grid-column:1;grid-row:2;gap:0 10px;align-items:baseline;margin-top:10px}.zpm .kz2 .g2 .fakt div{flex-direction:row!important;gap:0}.zpm .kz2 .g2 .fakt dt{display:none}.zpm .kz2 .g2 .fakt dd{font:400 14px/1.6em "IBM Plex Mono",ui-monospace,monospace!important;letter-spacing:.06em;margin:0!important;color:var(--grau)}.zpm .kz2 .g2 .fakt div+div::before{content:"·";color:var(--grau);margin-right:10px;font:400 14px/1.6em "IBM Plex Mono",ui-monospace,monospace}.zpm .kz2 .g2 .fakt div+div dd::after{content:" Personen"}.zpm .kz2 .g2 .linie{grid-row:3!important;margin-top:20px!important}.zpm .kz2 .m2.g2.v1 .lead{grid-row:4!important}.zpm .kz2 .m2.g2.v1 .kat{grid-row:5!important}.zpm .kz2 .m2.g2.v1 .cta{grid-row:6!important}

  /* K3 */.zpm .kz3 .m2.g2.v1 .tb{grid-template-columns:repeat(4,minmax(0,1fr))!important;column-gap:30px}.zpm .kz3 .g2 .tb h2{grid-column:1/-1;grid-row:1;margin-bottom:28px}.zpm .kz3 .g2.v1 .fakt{display:contents!important}.zpm .kz3 .g2 .fakt div:nth-child(1){grid-column:1;grid-row:2;text-align:left!important}.zpm .kz3 .g2 .fakt div:nth-child(2){grid-column:2;grid-row:2;text-align:left!important}.zpm .kz3 .g2 .fakt dd{font:300 28px/1em "Cormorant Garamond",Georgia,serif!important;margin-top:8px!important}.zpm .kz3 .g2 .linie{grid-row:3!important;margin-top:24px!important}.zpm .kz3 .m2.g2.v1 .lead{grid-row:4!important;grid-column:1/-1!important;padding-left:0!important;max-width:40ch}.zpm .kz3 .m2.g2.v1 .kat{grid-row:5!important;grid-column:1/-1!important;grid-template-columns:200px 1fr!important}.zpm .kz3 .m2.g2.v1 .cta{grid-row:6!important;grid-column:1/-1!important}
}.zpm .schalter.kopf-schalter{top:8px}

/* ===== zt7.css ===== */
/* Drei NEUE Bildanordnungen (23.09.2026). Ziel: die Fotos kommen groß zur Geltung,
   Typografie bleibt die freigegebene L8-Fassung (Cormorant-Name, Mono-Etiketten).
   B1  Panorama über die ganze Breite, darunter der Text, unten ein Bildpaar
   B2  drei Hochformate nebeneinander, Text darunter über die ganze Breite
   B3  versetztes Raster: großes Bild links, zwei hohe rechts auf Versatz, Text links unten */.zpm .bv .raum{padding-top:48px}.zpm .bv .kopf{padding-bottom:16px}.zpm .bv .schalter{left:auto;right:8px}.zpm .schalter.bild{top:44px}.zpm .schalter.erk{top:80px}.zpm .schalter.sicht{top:116px}

@media (min-width:1200px){
  /* Grundlage für alle drei: das Modul ist das 12-Spalten-Raster des Zimmers */.zpm .bv .raum.g2 .modul{display:grid!important;grid-template-columns:subgrid;grid-template-rows:none!important;
    row-gap:14px;column-gap:14px;align-items:start;margin-bottom:0!important}.zpm .bv .raum .modul .f{height:auto!important}.zpm .bv .raum .modul .f img{width:100%;height:100%;object-fit:cover}.zpm .bv .m2.g2.v1 .tb{padding-left:0!important;padding-right:0!important;border-top:0!important;padding-top:0!important}

  /* ---------- B1: Panorama oben, Text, Bildpaar unten ---------- */.zpm .bv1 .raum .modul .f0{grid-column:1/-1;grid-row:2}.zpm .bv1 .raum .modul .f0 img{aspect-ratio:16/7;object-position:center center}.zpm .bv1 .m2.g2.v1 .tb{grid-column:1/-1!important;grid-row:3!important;margin:56px 0 64px}.zpm .bv1 .raum .modul .f1{grid-column:1/7;grid-row:4}.zpm .bv1 .raum .modul .f2{grid-column:7/13;grid-row:4}.zpm .bv1 .raum .modul .f1 img, .zpm .bv1 .raum .modul .f2 img{aspect-ratio:4/3}

  /* ---------- B2: drei Hochformate nebeneinander, Text darunter ---------- */.zpm .bv2 .raum .modul .f0{grid-column:1/5;grid-row:2}.zpm .bv2 .raum .modul .f1{grid-column:5/9;grid-row:2}.zpm .bv2 .raum .modul .f2{grid-column:9/13;grid-row:2}.zpm .bv2 .raum .modul .f img{aspect-ratio:3/4}.zpm .bv2 .m2.g2.v1 .tb{grid-column:1/-1!important;grid-row:3!important;margin-top:56px}

  /* ---------- B3: versetztes Raster ---------- */.zpm .bv3 .raum .modul{row-gap:0}.zpm .bv3 .raum .modul .f0{grid-column:1/9;grid-row:1}.zpm .bv3 .raum .modul .f0 img{aspect-ratio:4/3}.zpm .bv3 .raum .modul .f1{grid-column:9/13;grid-row:1;margin-top:96px}.zpm .bv3 .raum .modul .f2{grid-column:9/13;grid-row:2;margin-top:14px}.zpm .bv3 .raum .modul .f1 img, .zpm .bv3 .raum .modul .f2 img{aspect-ratio:3/4}.zpm .bv3 .m2.g2.v1 .tb{grid-column:1/9!important;grid-row:2!important;margin-top:48px}
}

/* Tablet: alle drei stapeln ruhig, Text zweispaltig (wie in zt6.css) */
@media (min-width:810px) and (max-width:1199px){.zpm .bv .raum.g2 .modul{display:grid!important;grid-template-columns:repeat(8,minmax(0,1fr));column-gap:14px;row-gap:14px}.zpm .bv .raum .modul .f0{grid-column:1/-1}.zpm .bv .raum .modul .f1{grid-column:1/5}.zpm .bv .raum .modul .f2{grid-column:5/9}.zpm .bv .raum .modul .f img{width:100%;height:auto}.zpm .bv1 .raum .modul .f0 img{aspect-ratio:16/9}.zpm .bv2 .raum .modul .f img, .zpm .bv3 .raum .modul .f1 img, .zpm .bv3 .raum .modul .f2 img{aspect-ratio:3/4}.zpm .bv .m2.g2.v1 .tb{grid-column:1/-1!important;margin-top:40px}
}

/* Der Zimmername steht zusätzlich VOR den Bildern, weil die Fotos so groß sind.
   Der echte h2 bleibt unten im Textblock, der Vorlauf ist nur Schmuck (aria-hidden). */.zpm .vorname{display:none}
@media (min-width:1200px){.zpm .bv1 .vorname, .zpm .bv2 .vorname, .zpm .bv6 .vorname{display:block;grid-column:1/-1;grid-row:1;margin:0 0 22px;
    font:300 38px/1em "Cormorant Garamond",Georgia,serif;letter-spacing:-.015em;color:var(--tinte)}.zpm .bv1 .raum.g2 .modul, .zpm .bv2 .raum.g2 .modul, .zpm .bv6 .raum.g2 .modul{grid-template-rows:auto}
}



/* ---------- B6: großes Foto randlos bis zur Fensterkante, Text links ---------- */
@media (min-width:1200px){.zpm .bv6 .raum .modul .f0{grid-column:6/-1;grid-row:2;margin-right:calc((100vw - var(--breite)) / -2 - 90px);width:auto}.zpm .bv6 .raum .modul .f0 img{aspect-ratio:4/3}.zpm .bv6 .m2.g2.v1 .tb{grid-column:1/6!important;grid-row:2!important;align-self:center}.zpm .bv6 .raum .modul .f1{grid-column:1/7;grid-row:3;margin-top:56px}.zpm .bv6 .raum .modul .f2{grid-column:7/13;grid-row:3;margin-top:56px}.zpm .bv6 .raum .modul .f1 img, .zpm .bv6 .raum .modul .f2 img{aspect-ratio:4/3}
  /* schmale Textspalte: Gruppen untereinander statt nebeneinander */.zpm .bv6 .m2.g2.v1 .tb{grid-template-columns:1fr!important;row-gap:28px!important}.zpm .bv6 .m2.g2.v1 .kat{grid-template-columns:1fr!important}.zpm .bv6 .g2 .kat div{display:block!important;padding:14px 0!important}.zpm .bv6 .g2 .kat dt{padding:0!important}.zpm .bv6 .g2 .kat dd{margin-top:6px!important}.zpm .bv6 .g2 .tb h2{font-size:32px}.zpm .bv6 .m2.g2.v1 .lead{grid-column:1!important;padding-left:0!important;padding-right:0!important;margin:0!important;
    max-width:none!important;font:300 23px/1.45em "Cormorant Garamond",Georgia,serif;color:var(--tinte)}.zpm .bv6 .erklaer{display:none}
}

/* ---------- Textblock auf DREI Spalten (B1, B2, B3): Lead Spalte 1, Erklaertext
   E1 = nur Spalte 2 (wie Vorlage), E2 = Spalte 2 und 3. Listen darunter auf denselben
   drei Spalten, Knopf ueber die ganze Breite. ---------- */
@media (min-width:1200px){.zpm .bv1 .m2.g2.v1 .tb, .zpm .bv2 .m2.g2.v1 .tb, .zpm .bv3 .m2.g2.v1 .tb{grid-template-columns:repeat(3,minmax(0,1fr))!important;
    column-gap:64px!important;row-gap:56px!important}.zpm .bv1 .g2 .tb h2, .zpm .bv2 .g2 .tb h2, .zpm .bv3 .g2 .tb h2{grid-column:1/3;grid-row:1}.zpm .bv1 .g2 .fakt div:nth-child(1), .zpm .bv2 .g2 .fakt div:nth-child(1), .zpm .bv3 .g2 .fakt div:nth-child(1){grid-column:3;grid-row:1;justify-self:end;text-align:right}.zpm .bv1 .g2 .fakt div:nth-child(2), .zpm .bv2 .g2 .fakt div:nth-child(2), .zpm .bv3 .g2 .fakt div:nth-child(2){grid-column:3;grid-row:1;justify-self:end;text-align:right;margin-right:150px}.zpm .bv1 .g2 .linie, .zpm .bv2 .g2 .linie, .zpm .bv3 .g2 .linie{grid-column:1/-1;grid-row:2;margin:18px 0 0}.zpm .bv1 .m2.g2.v1 .lead, .zpm .bv2 .m2.g2.v1 .lead, .zpm .bv3 .m2.g2.v1 .lead{grid-column:1!important;grid-row:3!important;
    padding-left:0!important;padding-right:0!important;margin:0!important;max-width:none!important;
    font:300 24px/1.45em "Cormorant Garamond",Georgia,serif;color:var(--tinte)}.zpm .bv1 .erklaer, .zpm .bv2 .erklaer, .zpm .bv3 .erklaer{display:block;grid-row:3;margin:0;
    font:400 17px/1.7em "Abhaya Libre",Georgia,serif;color:var(--text)}
  /* E1: Erklaertext nur in Spalte 2 */.zpm .ev1.bv1 .erklaer, .zpm .ev1.bv2 .erklaer, .zpm .ev1.bv3 .erklaer{grid-column:2}
  /* E2: Erklaertext ueber Spalte 2 und 3, zweispaltig gesetzt */.zpm .ev2.bv1 .erklaer, .zpm .ev2.bv2 .erklaer, .zpm .ev2.bv3 .erklaer{grid-column:2/4!important;columns:2;column-gap:64px}
  /* E3: Erklaertext EIN Block ueber Spalte 2 und 3, Zeilen laufen durch */.zpm .ev3.bv1 .erklaer, .zpm .ev3.bv2 .erklaer, .zpm .ev3.bv3 .erklaer{grid-column:2/4!important}.zpm .bv1 .m2.g2.v1 .kat, .zpm .bv2 .m2.g2.v1 .kat, .zpm .bv3 .m2.g2.v1 .kat{grid-column:1/-1!important;grid-row:4!important;margin:0!important;
    grid-template-columns:repeat(3,minmax(0,1fr))!important;column-gap:64px!important}.zpm .bv1 .g2 .kat div, .zpm .bv2 .g2 .kat div, .zpm .bv3 .g2 .kat div{display:block!important;padding:0!important;border-bottom:0!important;
    grid-row:auto!important}.zpm .bv1 .g2 .kat div:nth-child(1), .zpm .bv2 .g2 .kat div:nth-child(1), .zpm .bv3 .g2 .kat div:nth-child(1){grid-column:1!important}.zpm .bv1 .g2 .kat div:nth-child(2), .zpm .bv2 .g2 .kat div:nth-child(2), .zpm .bv3 .g2 .kat div:nth-child(2){grid-column:2!important}.zpm .bv1 .g2 .kat div:nth-child(3), .zpm .bv2 .g2 .kat div:nth-child(3), .zpm .bv3 .g2 .kat div:nth-child(3){grid-column:3!important}.zpm .bv1 .g2 .kat dt, .zpm .bv2 .g2 .kat dt, .zpm .bv3 .g2 .kat dt{padding:0!important}.zpm .bv1 .g2 .kat dd, .zpm .bv2 .g2 .kat dd, .zpm .bv3 .g2 .kat dd{margin-top:12px!important}.zpm .bv1 .m2.g2.v1 .cta, .zpm .bv2 .m2.g2.v1 .cta, .zpm .bv3 .m2.g2.v1 .cta{grid-column:1/-1!important;grid-row:5!important;margin:0!important}
}.zpm .erklaer{display:none}

/* ===== zt9.css ===== */
/* Zweite Fassung der Zimmerkarten (23.09.2026, Michaels Abbildung):
   Hauptbild links quadratisch, daneben ZWEI HOCHFORMATE, der Text laeuft
   darunter ueber die ganze Breite -- also unter das Hauptbild hinaus.
   Die Typografie kommt aus zt7 (.bv1 + .ev3), hier stehen nur die Bilder. */
@media (min-width:1200px){.zpm .bv7 .raum .modul{row-gap:20px!important;column-gap:20px!important}.zpm .bv7 .raum .modul .f0{grid-column:1/7!important;grid-row:2!important}.zpm .bv7 .raum .modul .f0 img{aspect-ratio:1/1!important}.zpm .bv7 .raum .modul .f1{grid-column:7/10!important;grid-row:2!important}.zpm .bv7 .raum .modul .f2{grid-column:10/13!important;grid-row:2!important}.zpm .bv7 .raum .modul .f1 img, .zpm .bv7 .raum .modul .f2 img{aspect-ratio:3/4!important}.zpm .bv7 .m2.g2.v1 .tb{grid-column:1/-1!important;grid-row:3!important;margin:56px 0 0!important}
  /* kein Vorlauf-Name: der Name steht unten im Textblock, sonst stuende er zweimal da */.zpm .bv7 .vorname{display:none!important}.zpm .bv7 .raum.g2 .modul{grid-template-rows:auto auto!important}
}

/* Tablet: aus zt7 kam ein 16/7-Panorama (698x243 gemessen) -- zu flach fuer diese
   Fassung. Hauptbild 4/3, die zwei Hochformate bleiben hochkant. */
@media (min-width:810px) and (max-width:1199px){.zpm .bv7 .raum.g2 .modul{grid-template-rows:auto!important;grid-auto-rows:auto!important}.zpm .bv7 .raum .modul .f0, .zpm .bv7 .raum .modul .f1, .zpm .bv7 .raum .modul .f2{height:auto!important}.zpm .bv7 .raum .modul .f0 img{aspect-ratio:4/3!important;height:auto!important}.zpm .bv7 .raum .modul .f1 img, .zpm .bv7 .raum .modul .f2 img{aspect-ratio:3/4!important}
}

/* ===== zt10.css ===== */
/* Drei Varianten fuer Michaels Anordnung (23.09.2026):
   Bild 1 links gross bleibt. Bild 2 wird QUERFORMAT ueber die Breite von
   Bild 2+3 zusammen, etwas flacher. Bild 3 kommt DARUNTER, links anschliessend
   an Bild 1. Unterschied der drei: Breite und Hoehe von Bild 3. */
@media (min-width:1200px){.zpm .cv .raum .modul{row-gap:20px!important;column-gap:20px!important}.zpm .cv .raum .modul .f0{grid-column:1/7!important;grid-row:2/4!important;align-self:start!important}.zpm .cv .raum .modul .f0 img{aspect-ratio:1/1!important}.zpm .cv .raum .modul .f1{grid-column:7/13!important;grid-row:2!important;align-self:start!important}.zpm .cv .raum .modul .f2{grid-row:3!important;align-self:start!important}.zpm .cv .m2.g2.v1 .tb{grid-column:1/-1!important;grid-row:4!important;margin:56px 0 0!important}.zpm .cv .raum.g2 .modul{grid-template-rows:auto!important;grid-auto-rows:auto!important}

  /* C1: Bild 3 halb so breit wie Bild 2, buendig links unter ihm.
     Bild 1 schliesst UNTEN mit Bild 3 ab: es spannt beide Reihen und
     wird gedehnt, das Foto fuellt mit object-fit. Kein aspect-ratio,
     sonst rechnet es sich seine eigene Hoehe aus. */.zpm .cv1 .raum .modul .f0{align-self:stretch!important;height:auto!important}.zpm .cv1 .raum .modul .f0 img{aspect-ratio:auto!important;height:100%!important;object-fit:cover!important}.zpm .cv1 .raum .modul .f1 img{aspect-ratio:16/9!important}.zpm .cv1 .raum .modul .f2{grid-column:7/10!important}.zpm .cv1 .raum .modul .f2 img{aspect-ratio:4/3!important}

  /* C2: Bild 2 flacher (3/1), Bild 3 breiter (zwei Drittel) und hoeher */.zpm .cv2 .raum .modul .f1 img{aspect-ratio:3/1!important}.zpm .cv2 .raum .modul .f2{grid-column:7/11!important}.zpm .cv2 .raum .modul .f2 img{aspect-ratio:4/3!important}

  /* C3: beide gleich breit gestapelt, Bild 3 als flaches Band */.zpm .cv3 .raum .modul .f1 img{aspect-ratio:2/1!important}.zpm .cv3 .raum .modul .f2{grid-column:7/13!important}.zpm .cv3 .raum .modul .f2 img{aspect-ratio:5/2!important}
}.zpm .schalter.bild3{left:auto;right:8px;top:44px}

/* ===== zt11.css ===== */
/* Handy-Typografie der Zimmerkarten (23.09.2026, Michaels Ansage:
   "Arbeite an der Typografie bei Breakpoint Mobil").
   Gemessen vorher bei 390 px: Luecke Name -> GROESSE 72 px, Zahl 28 px,
   Groesse und Personen untereinander, Trennstrich 2x2 px.
   Hier: Angaben NEBENEINANDER, engere Abstaende, kleinere Zahlen. */
@media (max-width:809px){
  /* Trennstrich war ein Punkt: er stand als Gitterkind in einer auto-Spalte */.zpm .lz .g2 .linie{grid-column:1/-1!important;width:100%!important;justify-self:stretch!important;
    height:0!important;border:0!important;border-top:1px solid var(--tinte)!important;margin:18px 0 0!important}.zpm .lz .m2.g2.v1 .tb{display:grid!important;grid-template-columns:1fr 1fr!important;
    column-gap:24px!important;row-gap:0!important;padding-left:0!important;padding-right:0!important}

  /* Zimmername */.zpm .lz8 .g2 .tb h2{grid-column:1/-1!important;grid-row:1!important;margin:0!important;
    font-size:30px!important;line-height:1.05em!important}

  /* Groesse und Personen nebeneinander, direkt unter dem Namen */.zpm .lz .g2.v1 .fakt{display:contents!important}.zpm .lz .g2 .fakt div:nth-child(1){grid-column:1!important;grid-row:2!important;margin:22px 0 0!important;text-align:left!important}.zpm .lz .g2 .fakt div:nth-child(2){grid-column:2!important;grid-row:2!important;margin:22px 0 0!important;text-align:left!important}.zpm .lz .g2 .fakt dt{padding:0!important;font-size:11px!important}
  /* Werte in derselben Mono wie auf Tablet und Desktop (Michael, 23.09.2026),
     nicht in der Serifenschrift -- gemessen dort: IBM Plex Mono 15px/24px */.zpm .lz .g2 .fakt dd{margin:6px 0 0!important;font:400 15px/24px "IBM Plex Mono",ui-monospace,monospace!important;
    letter-spacing:.02em!important}.zpm .lz .g2 .linie{grid-row:3!important}

  /* Beschreibung */.zpm .lz .m2.g2.v1 .lead{grid-column:1/-1!important;grid-row:4!important;
    margin:22px 0 0!important;padding:0!important;max-width:34ch!important;
    font:400 17px/1.5em "Abhaya Libre",Georgia,serif!important}

  /* Gruppen */.zpm .lz .m2.g2.v1 .kat{grid-column:1/-1!important;grid-row:5!important;margin:26px 0 0!important;
    display:grid!important;grid-template-columns:1fr!important;row-gap:0!important}.zpm .lz .g2 .kat div{display:block!important;padding:14px 0!important;border-bottom:1px solid var(--linie)!important}.zpm .lz .g2 .kat div:first-child{padding-top:0!important}.zpm .lz .g2 .kat div:last-child{border-bottom:0!important}.zpm .lz .g2 .kat dt{padding:0!important;font-size:11px!important}.zpm .lz .g2 .kat dd{margin:6px 0 0!important;font:400 15px/1.5em "Abhaya Libre",Georgia,serif!important}

  /* Knopf */.zpm .lz .m2.g2.v1 .cta{grid-column:1/-1!important;grid-row:6!important;margin:24px 0 0!important}
}

/* Tablet trug als einziger Haltepunkt noch die Serifenzahl (Cormorant 24px),
   gemessen am 23.09.2026 bei 810 px. Dieselbe Mono wie Handy und Desktop. */
@media (min-width:810px) and (max-width:1199px){.zpm .lz .g2 .fakt dd{font:400 15px/24px "IBM Plex Mono",ui-monospace,monospace!important;
    letter-spacing:.02em!important;margin-top:6px!important}
}

/* ===== zt12.css ===== */
/* Modern Nord: oberer Bildrand (Decke, Vorhangschiene) soll weg, und die
   Bilder muessen unten auf derselben Linie abschliessen wie in den anderen
   Zimmern. Michael am 23.09.2026: "Warum schliessen die Bilder unten nicht
   gleich ab. Mach dieses Bild groesser. Du kannst es links abschneiden."

   ZWEI FALLEN, beide gemessen:
   1. transform:scale wirkt hier nicht -- heft.css setzt unter
      @media (prefers-reduced-motion:reduce) ein transform:none!important auf
      `.js .f img`, und der Messbrowser meldet genau das.
   2. `height:118%` am Bild verkuerzte den RAHMEN auf 530 px (andere Zimmer
      592 px) -- dadurch stimmten die Unterkanten nicht mehr.
   Deshalb: Rahmenhoehe unberuehrt (height:100%), das Bild nur BREITER und
   nach links aus dem Rahmen geschoben. Beschnitt links, unten bleibt bündig. */
   3. Die RAHMENHOEHE kam bei f1/f2 aus dem aspect-ratio des BILDES. Mit einem
      breiteren Bild wuchs sie mit (618x438 statt 618x347). Deshalb traegt jetzt
      der RAHMEN das Format, und das Bild fuellt ihn nur noch aus. */.zpm #modern-nord .f{overflow:hidden}.zpm #modern-nord .f1{aspect-ratio:16/9}.zpm #modern-nord .f2{aspect-ratio:4/3}.zpm #modern-nord .f img{aspect-ratio:auto!important;width:126%;height:100%;object-fit:cover;margin-left:-26%}

/* Auftakt buendig zu den Zimmerbildern.
   WARUM: lp-stil.css der Huelle hat eine eigene Regel ".auftakt{padding:48px
   var(--rand) 0}". Der Klassenname gehoert beiden Seiten -- die Einfassung auf
   .zpm schuetzt nur die Magazinregeln, nicht vor denen der Huelle. Gemessen am
   01.10.2026 bei 1440 px: Diaschau 1175 px breit, die Zimmerbilder darunter
   1255 px, Versatz 40 px. Die seitliche Polsterung faellt deshalb weg, der
   Abstand nach oben bleibt. */.zpm .auftakt{padding-left:0;padding-right:0}

/* Schlusssatz breiter und kleiner (Michael am 01.10.2026: "mach es breiter und
   etwas kleiner"). Gemessen vorher bei 1440 px: 829 px breit, 92 px Schriftgrad,
   fuenf Zeilen Hoehe 542 px. Jetzt ueber die volle Bildbreite und kleiner. */.zpm .schluss .satz{grid-column:1/-1;font-size:clamp(26px,3.2vw,48px);max-width:none;text-wrap:balance}
/* 01.10.2026: der Satz soll hoechstens zwei Zeilen brauchen. Gerechnet mit
   Cormorant (rund 0,42 em je Zeichen) und 42 Zeichen: bei 48 px braucht er
   847 px, passt also ab 900 px Satzspiegel in EINE Zeile; bei 645 px Fenster
   greift der untere Anschlag 26 px und es bleiben zwei Zeilen. */

/* Auftakt Fassung 1A, Schrift und Wortlaut wie im Rest des Hauses
   (Michael am 01.10.2026: "Die Schrift kleiner wesentlich kleiner ... so wie
   wir die Schrift ueberall haben", dann "den Text von Abbildung eins wieder
   zurueck wie frueher war").
   GEMESSEN bei 1440 px: /essen-trinken/ und /winter/skifahren/ setzen h1 auf
   30px/1.28, Laufweite -0.005em; der Zimmerblock der Startseite (#zimmer)
   steht auf 49px/58.8 mit 18px/27.36 Lauftext ueber 1035 px. Die Zimmerseite
   stand vorher auf 72 px -- mehr als das Doppelte jeder anderen Seite.
   BILD: 12/5 ergab 523 px Hoehe bei 1255 px Breite, ein Viertel hoeher sind
   654 px -- Verhaeltnis 12/6.25. */.zpm .auftakt{padding-top:clamp(28px,3vw,56px)}.zpm .auftakt .schau{grid-column:1/-1;margin-top:0}.zpm .auftakt .folien{aspect-ratio:12/6.25}.zpm .auftakt h1{grid-column:1/-1;margin-top:clamp(32px,4vw,64px);
  font-size:30px;line-height:1.28;letter-spacing:-.005em;text-wrap:balance}
/* Der Satz laeuft wie auf der Startseite breit, nicht als schmale Spalte. */.zpm .auftakt .einl{grid-column:1/10;margin-top:clamp(20px,2.4vw,32px);
  max-width:none;font-size:18px;line-height:1.52}
@media (max-width:1199px){.zpm .auftakt .einl{grid-column:1/-1}}
@media (max-width:809px){.zpm .auftakt h1{font-size:28px}.zpm .auftakt .einl{grid-column:1/-1;font-size:17px}}

/* Weniger Luft zwischen Schlusssatz und Verweisleiste (Michael 01.10.2026:
   "Wenig Abstand zwischen den Link[s] und [der] Unterschrift").
   Gemessen vorher bei 1440 px: 264 px = 160 px Polsterung des Schlussblocks
   plus 104 px Abstand der Leiste. Die 104 px sind der Takt des Hauses und
   bleiben; die 160 px fallen weg. */.zpm .schluss{padding-bottom:0}

/* === /zimmer-preise/knopf.css === */
/* Der Knopf "Verfügbarkeit prüfen" auf den Zimmerkarten.
   Michael am 26.09.2026: "Der Verfügbarkeit Button funktioniert noch nicht,
   die Schrift muss hell sein und der Pfeil auch."

   WAS LOS WAR: Die Magazinseite zeichnet den Knopf als Umriss -- dunkle Schrift,
   kein Grund. Die Hülle bringt in lp-stil.css ein eigenes .knopf mit, das ihn
   dunkel FÜLLT. Beides zusammen ergab dunkle Schrift auf dunklem Grund. Der
   Knopf war die ganze Zeit anklickbar, er sah nur aus wie abgeschaltet.

   ENTSCHIEDEN: der gefüllte Knopf der Website bleibt, Schrift und Pfeil werden
   hell. Damit sieht er aus wie der Buchungsbalken am Seitenrand.
   Der Pfeil erbt die Farbe über currentColor, deshalb genügt color. */
/* Michael am 06.10.2026: "Die zwei dunklen Button hell machen. Mit Rand.
   Die braune Farbflaeche raus, 100 % transparent, und einen Rahmen."
   Struktur, Masse und Pfeil bleiben, nur die Fuellung faellt weg.
   Der Rand kam schon vorher aus zpm.css (1px solid var(--tinte)) -- gemessen
   06.10.2026 an /zimmer-preise/zimmer/: rgb(61,55,51). Er bleibt und traegt
   den Knopf jetzt allein. */
.zpm .knopf{
  background:transparent;
  color:var(--tinte,#3D3733);
  border-color:var(--tinte,#3D3733);
}
.zpm .knopf:hover{
  background:var(--dunkel,#35302B);
  color:var(--hell,#F6F2EA);
}
/* Der Pfeil ist ein Strich mit einer gedrehten Ecke, beide über currentColor.
   Ausdrücklich gesetzt, damit eine spätere Regel ihn nicht wieder verliert. */
.zpm .knopf .pf,
.zpm .knopf .pf::after{
  color:var(--tinte,#3D3733);
}
/* Beim Ueberfahren fuellt sich der Knopf dunkel -- dann muss der Pfeil hell
   werden, sonst steht er dunkel auf dunkel. */
.zpm .knopf:hover .pf,
.zpm .knopf:hover .pf::after{
  color:var(--hell,#F6F2EA);
}

/* === /zimmer-preise/direktvorteil.css === */
/* Kasten 'Warum direkt buchen' unter dem Schlusssatz der Seite Zimmer und Preise.
   Eigene Datei, weil zpm.css aus einem Werkzeug erzeugt wird und eine Regel dort
   beim naechsten Lauf verschwaende.
   GEMESSEN 07.10.2026: der Text erbte zuerst die Schlagzeilengroesse (40,8 px) von
   `.mo-schluss p`, und zx-mosaik.css laedt NACH dieser Datei. Darum `.zx.zx-mosaik .mo-schluss p.direkt` (hoehere Spezifitaet), und nicht `.schluss`,
   denn die echte Seite traegt `mo-schluss`. */
.zx.zx-mosaik .mo-schluss p.direkt{max-width:62ch;margin:clamp(20px,2.4vw,36px) 0 0;
  font-family:inherit;font-size:clamp(15px,1.2vw,18px);line-height:1.6;letter-spacing:0}

/* === /zimmer-preise/zpm-gross.css === */
/* ===== zpm-gross.css =====
   Variante "gross": dieselbe Zimmer-und-Preise-Seite, nur mit HOEHEREN Bildern.
   Michael am 04.10.2026: "Bilder groesser also hoeher. Damit es noch
   luxurioeser eleganter und grosszuegiger wirkt."

   Nur Hoehen und Luft, keine neue Anordnung -- die Spalten der Fassung
   cv1 bleiben, wie sie freigegeben sind.

   GEMESSEN an index.html bei 1440 px vor der Aenderung:
     Bild 1 (.f0)  618 x 592   (gedehnt, kein eigenes Format)
     Bild 2 (.f1)  618 x 347   (16/9)
     Bild 3 (.f2)  300 x 225   (4/3)
     Diaschau     1255 x 654   (12/6.25)
   Bild 1 traegt KEIN eigenes aspect-ratio: es spannt beide Reihen und wird
   gedehnt. Darum wachsen Bild 2 und Bild 3 -- Bild 1 folgt von selbst. */

@media (min-width:1200px){
  /* Bild 2: vom Breitbild (16/9) auf das ruhigere 4/3 -> 618 x 464 */
  .zpm .cv1 .raum .modul .f1 img{aspect-ratio:4/3!important}
  /* Bild 3: vom Querformat auf das Quadrat -> 300 x 300 */
  .zpm .cv1 .raum .modul .f2 img{aspect-ratio:1/1!important}
  /* Bild 1 ergibt sich: 464 + 20 Gasse + 300 = 784 (Verhaeltnis rund 4/5) */

  /* Luft: ein Zimmerblock bekommt mehr Raum, damit die hoeheren Bilder
     nicht gedraengt stehen. 160 px -> 200 px. */
  .zpm{--seite:200px}
}

/* Auftakt: die Diaschau wird mit -- 654 px bei 12/6.25, 753 px bei 12/7.2 */
.zpm .auftakt .folien{aspect-ratio:12/7.2}

/* Tablet 810-1199: gemessen stand Bild 1 dort auf 912 x 684 (4/3) und die
   beiden anderen auf 449 x 599 (3/4). 1/1 waere fuer Bild 2 und 3 ein
   RUECKSCHRITT gewesen -- 449 statt 599. Darum 7/6 und 2/3:
   Bild 1 -> 912 x 781, Bild 2 und 3 -> 449 x 673. */
@media (min-width:810px) and (max-width:1199px){
  .zpm .bv7 .raum .modul .f0 img, .zpm .raum .f0 img{aspect-ratio:7/6!important}
  .zpm .bv7 .raum .modul .f1 img, .zpm .bv7 .raum .modul .f2 img,
  .zpm .raum .modul .f1 img, .zpm .raum .modul .f2 img{aspect-ratio:2/3!important}
}

/* Handy: Hochformat steht hier am besten -- Bild 1 auf 4/5, die beiden
   anderen aufs Quadrat. */
@media (max-width:809px){
  .zpm .raum .modul .f0 img, .zpm .raum .f0 img{aspect-ratio:4/5!important;height:auto}
  .zpm .raum .modul .f1 img, .zpm .raum .modul .f2 img{aspect-ratio:1/1!important;height:auto}
  .zpm .auftakt .folien{aspect-ratio:4/5}
}





/* ===== Luft um den Auftakttext (Michael 04.10.2026) =====
   "Oben ein Viertel mehr Abstand und unten etwas weniger als ein Viertel.
    Damit er schoen in der Mitte ist, luxurioes und schoen aussieht.
    Das machst du Variante eins."

   GEMESSEN vorher bei 1440 px auf DIESER Fassung (/zimmer-preise/zimmer/):
     Steuerleiste endet 944, Ueberschrift beginnt 1010  ->  oben  66 px
     Einleitung endet 1154, der erste Zimmerblock beginnt 1154
     (seine eigenen 48 px padding-top sind der ganze Abstand) -> unten 48 px
   Auf der Mosaik-Fassung standen zu diesem Zeitpunkt 100 oben und 78 unten --
   DIE sind der Bezug, denn Michael hat sie vor sich gehabt, als er "ein
   Viertel mehr" sagte.

   NEU, bei 1440 px:
     oben   100 x 1,25 = 125 px   (clamp-Mitte 8,7vw)
     unten   78 x 1,20 =  94 px   ("etwas weniger als ein Viertel"),
                                  davon 48 aus dem Zimmerblock, 46 von hier
   Gemessen zur STEUERLEISTE, nicht zur Bildkante: Pfeile und Zaehler lesen
   als Teil des Bildes, der sichtbare Abstand beginnt unter ihnen. */
.zpm .auftakt h1{margin-top:clamp(70px,8.7vw,150px)}
.zpm .auftakt{padding-bottom:clamp(28px,3.2vw,56px)}

/* ===== Knoepfe: zurueck auf volle Breite, beide dunkel (Michael 04.10.2026) =====
   Mit einer Abbildung: "Bau die Button wie auf Abbildung eins, Variante eins."
   Darauf stehen beide Knoepfe dunkel nebeneinander ueber die ganze Breite.
   Das nimmt ZWEI fruehere Anweisungen desselben Tages zurueck -- die Spalte 2
   bis 4 und den hellen rechten Knopf. Beide Regeln standen hier und sind
   deshalb entfernt, nicht ueberschrieben: eine Regel, die eine andere Regel
   aufhebt, die danebensteht, liest beim naechsten Mal niemand mehr richtig.
   GEMESSEN vorher (1440 px): Spalte 2/4, je 396 px, rechts transparent.
   Es gilt wieder, was zpm.css und detailverweis.css von sich aus tun:
   cta ueber 1/-1, links 835 px, rechts 418 px, beide rgba(53,48,43,.84). */

/* === /zimmer-detail/n.css === */
/* Gemeinsamer Boden der vier Fassungen N1 bis N4 (30.09.2026, ohne 360 Grad).
   Recherche Behance/Awwwards September 2026: Schrift als Architektur (ein Wort von Rand
   zu Rand), Serife gross plus Mono fuer Masse, Fotos Kante an Kante, ein Bewegungsmoment,
   Buchungsknopf immer erreichbar. Alles hell. Schrift und Farbe wie "Zimmer und Preise". */
:root{
  --grund:#F3EEE7; --grund2:#EAE4DA; --tinte:#3D3733; --grau:#6E6862; --text:#5C554F; --linie:#DDD5C9; --tafel:#4A453F;
  --sp:12; --gasse:24px; --rand:clamp(20px,3.2vw,48px); --breite:1480px; --kurve:cubic-bezier(.23,1,.32,1);
}
@media (max-width:1199px){:root{--sp:8;--gasse:20px}}
@media (max-width:809px){:root{--sp:4;--gasse:14px}}
*,*::before,*::after{box-sizing:border-box}
html{background:var(--grund);-webkit-text-size-adjust:100%;scrollbar-width:thin;scrollbar-color:var(--linie) transparent}
body{margin:0;color:var(--tinte);font:17px/28px "Abhaya Libre",Georgia,serif;-webkit-font-smoothing:antialiased;overflow-x:clip;padding-bottom:72px}
h1,h2,h3,p,ul,ol,dl,dd,dt,figure{margin:0;padding:0}
img{display:block;width:100%;height:100%;object-fit:cover}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer;border-radius:0}
::selection{background:var(--tinte);color:var(--grund)}
:focus-visible{outline:2px solid var(--tinte);outline-offset:4px}

.seite{max-width:var(--breite);margin:0 auto;padding-left:var(--rand);padding-right:var(--rand)}
.raster{display:grid;grid-template-columns:repeat(var(--sp),minmax(0,1fr));column-gap:var(--gasse)}
.bleed{margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw)}
.et{font:400 11px/16px Inter,system-ui,sans-serif;letter-spacing:.18em;text-transform:uppercase;color:var(--grau)}
.gross{font-family:"Cormorant Garamond",Georgia,serif;font-weight:300;font-variant-numeric:lining-nums;font-feature-settings:"lnum" 1;letter-spacing:-.02em;line-height:.92;text-wrap:balance}
.stand{font:300 clamp(22px,2vw,30px)/1.28 "Cormorant Garamond",Georgia,serif;text-wrap:balance}
.prosa{font:400 17px/28px "Abhaya Libre",Georgia,serif;color:var(--text);max-width:46ch;text-wrap:pretty;hyphens:auto;-webkit-hyphens:auto}
.prosa p+p{margin-top:16px}
.prosa::first-line{color:var(--tinte)}
.mass{font:400 14px/1.5 "IBM Plex Mono",ui-monospace,monospace;letter-spacing:.02em;color:var(--text);font-variant-numeric:tabular-nums}
.kopfzeile{display:flex;justify-content:space-between;gap:24px;padding:26px 0 0}
.kopfzeile a:hover,.kopfzeile a:focus-visible{color:var(--tinte)}
.folio{display:flex;justify-content:space-between;gap:24px;padding-top:14px;border-top:1px solid var(--linie)}

/* "Was im Zimmer ist" liegt auf DEM Raster der Seite, nicht auf einem eigenen.
   Vorher: eigene drei Spalten zu 433 px fuer VIER Felder -- das vierte fiel in
   eine zweite Zeile und liess 867 x 227 px leer stehen (gemessen 02.10.2026,
   1440 px). Jetzt vier Felder zu drei Rasterspalten, eine Zeile, eine Flucht:
   12 Spalten / 4 Felder = 3 Spalten je Feld, bei 1440 px je 319 px.
   Tablet (8 Spalten) und Handy (4 Spalten) ergeben mit span 4 von selbst zwei
   bzw. ein Feld je Zeile -- ohne eigenen Haltepunkt. */
.kat{display:grid;grid-template-columns:repeat(var(--sp),minmax(0,1fr));
  column-gap:var(--gasse);row-gap:40px;align-content:start}
.kat > div{grid-column:span 3;padding-top:16px;border-top:1px solid var(--linie)}
@media (max-width:1199px){.kat > div{grid-column:span 4}}
.kat dt{margin-bottom:12px}
.kat dd{font:400 16px/26px "Abhaya Libre",Georgia,serif;color:var(--text)}
@media (max-width:809px){.kat > div{grid-column:1/-1}}

.knopf{display:flex;justify-content:space-between;align-items:center;height:64px;padding:0 28px;background:var(--tafel);color:var(--grund);
  font:400 11px/1 "IBM Plex Mono",ui-monospace,monospace;letter-spacing:.22em;text-transform:uppercase;transition:background-color .25s ease,transform 140ms var(--kurve)}
.knopf:hover{background:var(--tinte)}
.knopf:active{transform:scale(.99)}
.pf{position:relative;display:inline-block;flex:0 0 auto;width:34px;height:1px;background:currentColor;transform-origin:left center;transition:transform .32s var(--kurve)}
.pf::after{content:"";position:absolute;right:0;top:-3px;width:7px;height:7px;border-top:1px solid currentColor;border-right:1px solid currentColor;transform:rotate(45deg)}
.knopf:hover .pf,.zeile-cta:hover .pf{transform:scaleX(1.4)}
.zeile-cta{display:inline-flex;align-items:center;gap:20px;font:300 28px/1.1 "Cormorant Garamond",Georgia,serif;padding-bottom:12px;border-bottom:1px solid var(--tinte)}

/* Buchungsleiste: bleibt unten, erscheint nach dem ersten Bild. */
.leiste{position:fixed;left:0;right:0;bottom:0;z-index:30;display:flex;justify-content:space-between;align-items:center;gap:24px;height:64px;padding:0 var(--rand);
  background:rgba(243,238,231,.82);backdrop-filter:blur(18px) saturate(1.3);-webkit-backdrop-filter:blur(18px) saturate(1.3);border-top:1px solid var(--linie);
  transform:translateY(100%);transition:transform .5s var(--kurve)}
.leiste.da{transform:none}
.leiste .name{font:300 22px/1 "Cormorant Garamond",Georgia,serif;white-space:nowrap}
.leiste .mass{display:none}
.leiste .knopf{height:44px;padding:0 20px;gap:18px}
@media (min-width:810px){.leiste .mass{display:block}}
@media (prefers-reduced-transparency:reduce){.leiste{background:var(--grund);backdrop-filter:none}}

/* Leuchtkasten fuer alle Fotos */
.foto{cursor:zoom-in;overflow:hidden;background:var(--linie)}
.foto figcaption{cursor:default}
.foto img{transition:transform .8s var(--kurve)}
@media (hover:hover) and (pointer:fine){.foto:hover img{transform:scale(1.03)}}
.kasten{position:fixed;inset:0;z-index:40;display:grid;place-items:center;background:rgba(61,55,51,.94);opacity:0;pointer-events:none;transition:opacity .28s ease}
.kasten[data-an=true]{opacity:1;pointer-events:auto}
.kasten img{width:auto;height:auto;max-width:min(92vw,1500px);max-height:86vh;object-fit:contain;transform:scale(.97);transition:transform .34s var(--kurve)}
.kasten[data-an=true] img{transform:scale(1)}
.kasten .zu{position:absolute;right:28px;top:22px;color:var(--grund);font:400 11px/1 "IBM Plex Mono",ui-monospace,monospace;letter-spacing:.24em;text-transform:uppercase;padding:10px}
.kasten .zaehler{position:absolute;left:28px;bottom:22px;color:rgba(243,238,231,.8);font:400 12px/1 "IBM Plex Mono",ui-monospace,monospace;letter-spacing:.1em;font-variant-numeric:tabular-nums}
.kasten .weiter{position:absolute;top:0;bottom:0;width:30%;cursor:pointer}
.kasten .weiter.l{left:0;cursor:w-resize}.kasten .weiter.r{right:0;cursor:e-resize}

/* Der eine Bewegungsmoment je Seite: Bilder werden freigelegt, Text steigt auf. */
/* Der Clip sitzt am BILD, nicht an der Huelle. Gemessen 02.10.2026: lag er an
   der Huelle, setzte inset(0 0 100% 0) deren Sichtfeld auf null, der
   IntersectionObserver meldete sie nie als sichtbar, die Klasse .da kam nie --
   auf n1-wort.html blieben alle sechs Fotos dauerhaft unsichtbar, auch nach
   Scrollen. .hebt war nie betroffen, weil es nur opacity und transform nutzt. */
.js .zeig > img{clip-path:inset(0 0 100% 0)}
.js .zeig.da > img{clip-path:inset(0 0 0 0)}
.js .zeig img{transform:scale(1.06);transition:transform 1.5s var(--kurve),clip-path 1.1s var(--kurve)}
.js .zeig.da img{transform:scale(1)}
.js .hebt{opacity:0;transform:translateY(18px);transition:opacity .7s ease,transform .9s var(--kurve)}
.js .hebt.da{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){
  .js .zeig,.js .hebt,.js .zeig > img{clip-path:none!important;opacity:1!important;transform:none!important;transition:none!important}
  .js .zeig img,.foto img{transform:none!important;transition:none!important}
  .leiste,.pf,.knopf,.kasten,.kasten img{transition:none}
}

/* ===== Weg zurueck zur Uebersicht (Michael am 06.10.2026) =====
   "Rechts unten bei allen Detailseiten brauchen wir einen hellen Button mit
   einem Rahmen. Der ueber die letzten zwei Spalten geht, in der gleichen Zeile
   wie 'Direkt bei uns buchen ist der beste Preis'. Ein Button, der wieder
   zurueck auf die Uebersichtsseite geht."
   GEMESSEN am 06.10.2026 an /zimmer-preise/superior-garden/ (1440 px):
   .ende ist ein Raster aus 12 Spalten zu 90,32 px, der Satz steht auf den
   ersten sechs (662 px). ANNAHME: "die letzten zwei Spalten" meint die zwei
   rechten der vier Felder darueber ("Was im Zimmer ist" hat vier) -- also die
   rechte Haelfte, 7/-1. Zwei der ZWOELF Rasterspalten waeren 205 px und damit
   zu schmal fuer die Zeile.
   Aussehen wie der Knopf auf /zimmer-preise/zimmer/: ohne Fuellung, ein
   Haarstrich als Rahmen, Mono in Versalien, Pfeil rechts. */
.ende{align-items:center;row-gap:28px}
.ende .zurueck{
  grid-column:7/-1; align-self:center;
  display:flex; justify-content:space-between; align-items:center;
  height:52px; padding:0 40px;
  background:transparent; border:1px solid var(--tinte);
  font:500 11px/1 "IBM Plex Mono",ui-monospace,monospace;
  letter-spacing:.24em; text-transform:uppercase; color:var(--tinte);
  transition:background-color .25s ease,color .25s ease;
}
/* Der Pfeil ist ein Strich mit einer gedrehten Ecke -- dieselbe Zeichnung wie
   auf der Uebersicht, hier aber eigenstaendig, weil die Detailseite das
   Stilblatt der Uebersicht nicht als Bezug hat. */
.ende .zurueck .pfeil{position:relative;display:block;width:34px;height:1px;
  background:currentColor;transition:width .22s var(--kurve)}
.ende .zurueck .pfeil::after{content:"";position:absolute;right:0;top:-3px;
  width:7px;height:7px;border-top:1px solid currentColor;
  border-right:1px solid currentColor;transform:rotate(45deg)}
@media (hover:hover) and (pointer:fine){
  .ende .zurueck:hover{background:var(--tinte);color:var(--grund)}
  .ende .zurueck:hover .pfeil{width:52px}
}
@media (max-width:1199px){.ende .zurueck{grid-column:5/-1}}
/* Am Handy steht der Knopf unter dem Satz und nimmt die ganze Breite. */
@media (max-width:809px){.ende .zurueck{grid-column:1/-1}}
@media (prefers-reduced-motion:reduce){
  .ende .zurueck,.ende .zurueck .pfeil{transition:none}
}

/* === /zimmer-detail/register.css === */
body.rg{--grund:#F3EEE7;--tinte:#3D3733;--grau:#6E6862;--text:#4F4944;--linie:#DDD5C9;--kurve:cubic-bezier(.23,1,.32,1);--luft:clamp(14px,1.6vw,28px);--breite:clamp(340px,34vw,520px);--pad:clamp(22px,2.3vw,36px);--u:24px}
body.rg *{box-sizing:border-box}
html body.rg,body.rg{height:100%;margin:0;overflow:hidden;background:#2a2622}
body.rg{color:var(--tinte);font:400 13.5px/21px Inter,system-ui,sans-serif;-webkit-font-smoothing:antialiased}
body.rg p,body.rg h1,body.rg ul,body.rg figure,body.rg dl,body.rg dd{margin:0;padding:0}
body.rg a{color:inherit}
body.rg .klein{font:400 11px/16px Inter,system-ui,sans-serif;letter-spacing:.18em;text-transform:uppercase;color:var(--grau)}
body.rg .buehne{position:fixed;inset:0;background:#2a2622}
body.rg .buehne img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0}
body.rg .buehne img.an{opacity:1}
body.rg .buehne::after{content:"";position:absolute;inset:auto 0 0 0;height:38%;background:linear-gradient(to top,rgba(20,16,12,.42),rgba(20,16,12,0));pointer-events:none;z-index:3}
body.rg .zone{all:unset;position:fixed;top:0;bottom:0;z-index:1;cursor:pointer}
body.rg .zone.v{left:0;width:34%;cursor:w-resize}
body.rg .zone.n{left:34%;right:0;cursor:e-resize}
body.rg .zone:focus-visible{outline:2px solid #fff;outline-offset:-6px}
body.rg .regler{position:fixed;z-index:4;color:#fff;display:none}
html[data-r="5"] body.rg .r5{display:grid}
body.rg .cap{font:400 11px/16px Inter,system-ui,sans-serif;letter-spacing:.2em;text-transform:uppercase;color:rgba(255,255,255,.9);text-shadow:0 1px 10px rgba(0,0,0,.35)}
body.rg .ziffer{font:300 clamp(56px,6.4vw,104px)/.8 "Cormorant Garamond",Georgia,serif;letter-spacing:-.04em;font-variant-numeric:lining-nums;text-shadow:0 2px 24px rgba(0,0,0,.25)}
body.rg .pfeile{display:flex;border:1px solid rgba(255,255,255,.7);background:rgba(255,255,255,.08);-webkit-backdrop-filter:blur(14px) saturate(140%);backdrop-filter:blur(14px) saturate(140%)}
body.rg .pfeile button{all:unset;cursor:pointer;width:clamp(52px,4.4vw,68px);height:clamp(52px,4.4vw,68px);display:grid;place-items:center;color:#fff;transition:background-color .3s ease,color .3s ease}
body.rg .pfeile button+button{border-left:1px solid rgba(255,255,255,.7)}
body.rg .pfeile button span{position:relative;display:block;width:24px;height:1.5px;background:currentColor;transition:width .4s var(--kurve)}
body.rg .pfeile button span::after{content:"";position:absolute;right:0;top:-4px;width:8px;height:8px;border-top:1.5px solid currentColor;border-right:1.5px solid currentColor;transform:rotate(45deg) translate(-.5px,.5px)}
body.rg .pfeile button.v span{transform:scaleX(-1)}
body.rg .pfeile button:active{transform:scale(.97)}
@media (hover:hover) and (pointer:fine){body.rg .pfeile button:hover{background:#fff;color:var(--tinte)}
body.rg .pfeile button:hover span{width:34px}}
body.rg .pfeile button:focus-visible{outline:2px solid #fff;outline-offset:-5px}
@media (prefers-reduced-transparency:reduce){body.rg .pfeile{background:rgba(40,34,30,.85);-webkit-backdrop-filter:none;backdrop-filter:none}}
body.rg .r5 .rg-spur{position:relative;height:56px}
body.rg .r5 .rg-spur::before{content:"";position:absolute;left:0;right:0;bottom:12px;height:1px;background:rgba(255,255,255,.4)}
body.rg .r5 .fuell{position:absolute;left:0;bottom:12px;height:2px;background:#fff;width:100%;transform:scaleX(0);transform-origin:left;transition:transform .9s cubic-bezier(.77,0,.175,1)}
body.rg .r5 .marke{position:absolute;bottom:20px;left:0;transform:translateX(calc(-1 * var(--t,0%)));transition:left .9s cubic-bezier(.77,0,.175,1),transform .9s cubic-bezier(.77,0,.175,1);font:300 clamp(44px,4.6vw,72px)/.8 "Cormorant Garamond",Georgia,serif;letter-spacing:-.04em;font-variant-numeric:lining-nums;text-shadow:0 2px 24px rgba(0,0,0,.25)}
body.rg .r5 .ticks button{all:unset;cursor:pointer;position:absolute;bottom:0;width:36px;height:26px;transform:translateX(-50%)}
body.rg .r5 .ticks button::before{content:"";position:absolute;left:50%;bottom:9px;width:1px;height:8px;background:rgba(255,255,255,.7);transition:height .4s var(--kurve)}
body.rg .r5 .ticks button[aria-current="true"]::before{height:14px;background:#fff}
@media (hover:hover) and (pointer:fine){body.rg .r5 .ticks button:hover::before{height:14px;background:#fff}}
body.rg .r5 .ticks button:focus-visible{outline:2px solid #fff;outline-offset:-2px}
body.rg .r5{--ph:clamp(52px,4.4vw,68px);right:var(--luft);bottom:var(--luft);width:min(600px,46vw);gap:10px}
body.rg .r5 .cap{order:2;justify-self:end}
body.rg .r5 .reihe5{display:flex;align-items:flex-end;gap:clamp(16px,2vw,28px)}
body.rg .r5 .rg-spur{flex:1;min-width:0;height:var(--ph)}
body.rg .r5 .rg-spur::before,body.rg .r5 .fuell{bottom:calc(var(--ph) / 2)}
body.rg .r5 .marke{bottom:calc(var(--ph) / 2 + 8px)}
body.rg .r5 .ticks button{bottom:calc(var(--ph) / 2 - 13px)}
body.rg .rg-karte{position:fixed;left:var(--luft);top:var(--luft);bottom:var(--luft);width:var(--breite);background:var(--grund);display:flex;flex-direction:column;z-index:5;box-shadow:0 30px 80px rgba(20,16,12,.28);transition:transform .8s var(--kurve)}
body.rg .rg-karte[data-offen="false"]{transform:translateX(calc(-100% - var(--luft)))}
body.rg .griff{all:unset;box-sizing:border-box;cursor:pointer;position:absolute;left:calc(100% - 1px);top:clamp(56px,12vh,112px);width:35px;padding-left:1px;padding:20px 0 22px;display:flex;flex-direction:column;align-items:center;gap:16px;background:var(--grund);border:0;box-shadow:none;transition:background-color .3s ease,transform .5s var(--kurve)}
body.rg .griff i{display:block;width:7px;height:7px;border-left:1px solid var(--tinte);border-bottom:1px solid var(--tinte);transform:rotate(45deg) translate(1px,-1px);transition:transform .5s var(--kurve)}
body.rg .griff span{display:block;writing-mode:vertical-rl;transform:rotate(180deg);font:400 11px/1 Inter,system-ui,sans-serif;letter-spacing:.24em;text-transform:uppercase;color:var(--tinte);white-space:nowrap}
body.rg .rg-karte[data-offen="true"] .griff .zu,body.rg .rg-karte[data-offen="false"] .griff .auf{display:none}
body.rg .rg-karte[data-offen="false"] .griff i{transform:rotate(-135deg) translate(1px,-1px)}
@media (hover:hover) and (pointer:fine){body.rg .griff:hover{background:#ECE6DC;transform:translateX(3px)}
body.rg .griff:hover i{transform:rotate(45deg) translate(-1px,1px)}
body.rg .rg-karte[data-offen="false"] .griff:hover i{transform:rotate(-135deg) translate(-1px,1px)}}
body.rg .griff:focus-visible{outline:2px solid var(--tinte);outline-offset:-4px}
body.rg .innen{container-type:inline-size;flex:1;overflow-y:auto;overscroll-behavior:contain;padding:0 var(--pad)}
body.rg .innen::-webkit-scrollbar{width:9px}
body.rg .innen::-webkit-scrollbar-track{background:transparent;margin:22px 0}
body.rg .innen::-webkit-scrollbar-thumb{background:var(--tinte);border-radius:9px;border:4px solid transparent;background-clip:padding-box;min-height:56px}
@supports not selector(::-webkit-scrollbar){body.rg .innen{scrollbar-width:thin;scrollbar-color:var(--tinte) transparent}}
body.rg .rg-raster{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));column-gap:var(--luft)}
body.rg .eyebrow{grid-column:1/-1;margin-top:calc(var(--pad) + 4px);font:400 11px/16px Inter,system-ui,sans-serif;letter-spacing:.16em;text-transform:uppercase;color:var(--grau)}
body.rg h1{grid-column:1/-1;margin-top:10px;font:300 clamp(30px,9.8cqi,42px)/1.12 "Cormorant Garamond",Georgia,serif;letter-spacing:-.012em;font-variant-numeric:lining-nums}
body.rg h1 .z{display:inline-block;overflow:hidden;padding-bottom:.12em;vertical-align:top}
body.rg h1 .z>span{display:block;transform:translateY(106%);transition:transform 1.1s var(--kurve)}
body.rg h1 .z+.z{margin-left:.27em}
body.rg h1 .z+.z>span{transition-delay:.1s}
body.rg.geladen h1 .z>span{transform:none}
body.rg .daten{grid-column:1/-1;margin-top:calc(var(--u) * 2.4);padding-top:12px;border-top:1px solid var(--linie)}
body.rg .daten .rg-mass{display:block;font:400 12px/1.5 "IBM Plex Mono",ui-monospace,monospace;letter-spacing:.03em;color:var(--grau);font-variant-numeric:tabular-nums;white-space:nowrap}
body.rg .daten .rg-mass i{display:inline-block;width:1px;height:12px;margin:0 14px -1px;background:var(--linie)}
body.rg .lead{grid-column:2/-1;margin-top:calc(var(--u) * 2.6);font:400 16.5px/27px "Abhaya Libre",Georgia,serif;letter-spacing:0;color:var(--tinte);text-wrap:pretty}
body.rg .bilder{grid-column:2/-1;display:grid;grid-template-columns:1fr 1fr;gap:var(--luft);margin-top:calc(var(--u) * 2)}
body.rg .ausschnitt{position:relative;overflow:hidden;aspect-ratio:3/4;background:#E6DFD4}
body.rg .ausschnitt img{position:absolute;max-width:none;height:auto;display:block}
body.rg .paar{grid-column:1/-1;display:grid;grid-template-columns:subgrid;margin-top:calc(var(--u) * 3)}
body.rg .paar .klein{display:block;margin-bottom:10px}
body.rg .paar p,body.rg .ausst p{font-family:"Abhaya Libre",Georgia,serif;font-weight:400;font-size:15.5px;line-height:25px;letter-spacing:0;color:#6E6862;text-wrap:pretty}
body.rg .paar .klein,body.rg .ausst .klein{font:400 11px/16px "IBM Plex Mono",ui-monospace,monospace;letter-spacing:.14em;color:#8D8A7C}
body.rg .p1{align-items:end}
body.rg .p1 .ausschnitt{grid-column:1/3}
body.rg .p1 .t{grid-column:3/-1;padding-bottom:2px}
body.rg .p2{align-items:start}
body.rg .p2 .t{grid-column:1/3;padding-top:2px}
body.rg .p2 .ausschnitt{grid-column:3/-1;margin-top:calc(var(--u) * 2.5)}
body.rg .ausst{grid-column:2/-1;margin-top:calc(var(--u) * 3);padding-top:14px;border-top:1px solid var(--linie)}
body.rg .ausst .klein{display:block;margin-bottom:10px}
body.rg .ausst p{font-size:15px;line-height:23px}
body.rg .rest{grid-column:1/-1;height:calc(var(--u) * 1.5)}
body.rg .rg-fuss{flex:none;padding:42px var(--pad) 44px;border-top:1px solid var(--linie);display:grid;grid-template-columns:1fr auto;align-items:center;gap:var(--luft);background:var(--grund)}
body.rg .rg-fuss .rg-satz{font:300 18px/1.3 "Cormorant Garamond",Georgia,serif;max-width:11em;text-wrap:balance}
body.rg .buchen{display:flex;justify-content:center;align-items:center;height:48px;padding:0 18px;background:var(--tinte);color:var(--grund);text-decoration:none;font:400 11px/1 Inter,system-ui,sans-serif;letter-spacing:.2em;text-transform:uppercase;white-space:nowrap;transition:background-color .3s ease}
body.rg .buchen i{display:block;width:30px;height:1px;background:currentColor;transform:scaleX(.55);transform-origin:left;transition:transform .4s var(--kurve)}
body.rg .buchen:active{transform:scale(.985)}
@media (hover:hover) and (pointer:fine){body.rg .buchen:hover{background:#2a2622}
body.rg .buchen:hover i{transform:none}}
body.rg .buchen:focus-visible{outline:2px solid var(--tinte);outline-offset:3px}
html[data-fu] body.rg .rg-fuss{grid-template-columns:1fr;border-top:1px solid var(--linie)}
html[data-fu] body.rg .rg-fuss .rg-satz{font:300 26px/1.2 "Cormorant Garamond",Georgia,serif;letter-spacing:-.008em;max-width:11em;text-wrap:balance}
html[data-fu] body.rg .rg-fuss .buchen{width:100%;height:54px;letter-spacing:.24em}
html[data-fu="1"] body.rg .rg-fuss{gap:26px;padding:38px var(--pad) 34px}
html[data-fu="2"] body.rg .rg-fuss{gap:28px;padding:44px var(--pad) 38px;justify-items:center;text-align:center}
html[data-fu="2"] body.rg .rg-fuss .buchen{background:transparent;color:var(--tinte);border:1px solid var(--tinte)}
@media (hover:hover) and (pointer:fine){html[data-fu="2"] body.rg .rg-fuss .buchen:hover{background:var(--tinte);color:var(--grund)}}
html[data-fu="3"] body.rg .rg-fuss{gap:28px;padding:42px var(--pad) 36px;background:var(--tinte);border-top:0}
html[data-fu="3"] body.rg .rg-fuss .rg-satz{color:var(--grund)}
html[data-fu="3"] body.rg .rg-fuss .buchen{background:var(--grund);color:var(--tinte)}
@media (hover:hover) and (pointer:fine){html[data-fu="3"] body.rg .rg-fuss .buchen:hover{background:#fff}}
@media (min-width:761px){html[data-ti="gross"] body.rg h1{margin-top:clamp(36px,7vh,72px);font:300 clamp(46px,21cqi,96px)/.8 "Cormorant Garamond",Georgia,serif;letter-spacing:-.04em}
html[data-ti="gross"] body.rg h1 .z{display:block;padding-bottom:.14em}
html[data-ti="gross"] body.rg h1 .z+.z{margin-left:0;padding-left:calc((100% + var(--luft)) / 4);margin-top:-.15em}
html[data-ti="gross"] body.rg .eyebrow{margin-bottom:6px}
html[data-ti="gross"] body.rg .daten{margin-top:calc(var(--u) * 2.6)}}
body.rg .e{opacity:0;transform:translateY(12px);transition:opacity .8s ease,transform .9s var(--kurve)}
body.rg.geladen .e{opacity:1;transform:none}
body.rg.geladen .e:nth-child(3){transition-delay:.06s}
body.rg.geladen .e:nth-child(4){transition-delay:.12s}
body.rg.geladen .e:nth-child(5){transition-delay:.18s}
body.rg.geladen .e:nth-child(6){transition-delay:.24s}
body.rg.geladen .e:nth-child(7){transition-delay:.3s}
body.rg.geladen .e:nth-child(8){transition-delay:.36s}
body.rg .peek{display:none}
@media (max-width:760px){body.rg{--breite:calc(100vw - 2 * var(--luft));--sheet:78dvh;--ph:48px;--peek:56px}
body.rg .buehne img{object-position:var(--op,50% 50%)}
body.rg .rg-karte{top:auto;height:var(--sheet)}
body.rg .rg-karte[data-offen="false"]{transform:translateY(calc(100% + var(--luft)))}
body.rg .griff{left:0;top:auto;bottom:100%;width:auto;height:40px;padding:0 18px;flex-direction:row;gap:12px;border:0;box-shadow:none}
body.rg .griff span{writing-mode:horizontal-tb;transform:none}
body.rg .griff i{transform:rotate(-45deg) translate(0,1px)}
body.rg .rg-karte[data-offen="false"] .griff i{transform:rotate(135deg) translate(0,1px)}
body.rg .peek{display:flex;position:fixed;left:var(--luft);right:var(--luft);bottom:var(--luft);height:var(--peek);z-index:5;align-items:center;justify-content:space-between;padding:0 8px 0 20px;background:var(--grund);box-shadow:0 14px 40px rgba(20,16,12,.25);transition:transform .8s var(--kurve)}
html[data-karte="auf"] body.rg .peek{transform:translateY(calc(100% + var(--luft)))}
body.rg .titelp{font:300 24px/1 "Cormorant Garamond",Georgia,serif;letter-spacing:-.03em}
body.rg .mehr{all:unset;cursor:pointer;display:inline-flex;align-items:center;gap:10px;height:44px;padding:0 14px;font:400 11px/1 Inter,system-ui,sans-serif;letter-spacing:.2em;text-transform:uppercase;color:var(--tinte)}
body.rg .mehr i{display:block;width:7px;height:7px;border-left:1px solid var(--tinte);border-top:1px solid var(--tinte);transform:rotate(45deg) translate(1px,1px)}
body.rg .mehr:focus-visible{outline:2px solid var(--tinte);outline-offset:-4px}
body.rg .rg-karte[data-offen="false"] .griff{visibility:hidden}
body.rg .daten .rg-mass{font-size:12px}
body.rg .daten .rg-mass i{margin:0 10px -1px}
html[data-r] body.rg .regler{display:none}
html[data-r] body.rg .r5{display:grid;left:var(--luft);right:var(--luft);width:auto;transform:translateY(calc(-1 * (var(--sheet) + var(--luft) + 52px)));transition:transform .8s var(--kurve)}
html[data-karte="zu"] body.rg .r5{transform:translateY(calc(-1 * (var(--peek) + 12px)))}
body.rg .r5 .cap{display:none}
body.rg .pfeile button{width:48px;height:48px}
body.rg .lead{grid-column:1/-1;font-size:20px}
body.rg .rg-fuss{grid-template-columns:1fr;gap:10px}
body.rg .rg-fuss .rg-satz{max-width:none;font-size:17px}}

/* Einbau in die echte Zimmerseite: die Buchungsleiste (64 px hoch, 16 px vom Rand) bleibt frei */
body.rg{--bar:80px}
body.rg .rg-karte{bottom:calc(var(--bar) + 8px)}
body.rg .r5{bottom:calc(var(--bar) + 8px)}
body.rg main.rg-seite{padding:0!important;margin:0;max-width:none}
/* Ziffer: mittig auf dem Teilstrich (JS klemmt sie an den Enden), am Desktop deutlich groesser */
body.rg .r5 .marke{transform:translateX(-50%)}
@media (min-width:1100px){body.rg .r5 .marke{font-size:clamp(68px,6vw,92px);bottom:calc(var(--ph) / 2 + 12px)}}
@media (min-width:761px) and (max-width:1099px){body.rg .r5 .marke{font-size:clamp(54px,6.4vw,68px)}}
/* Naechstes Zimmer: Glasknopf oben rechts. Eigene Ebene (Zimmer wechseln), getrennt von den Fotoreglern unten. */
/* Buchungsknopf der Karte: lang, Schrift mittig, grosszuegig. Satz oben, Knopf darunter ueber die ganze Kartenbreite */
body.rg .rg-fuss .buchen{width:100%;height:56px;padding:0 24px;letter-spacing:.24em;justify-content:center;text-align:center}
body.rg .rg-fuss{grid-template-columns:1fr;gap:22px;padding-top:34px;padding-bottom:36px}
body.rg .rg-fuss .rg-satz{max-width:none}
/* Fokus: kein dicker Rahmen, sondern ein leiser Farbton (bleibt fuer die Tastatur sichtbar) */
body.rg .pfeile button:focus-visible,body.rg .r5 .alle-zimmer:focus-visible{outline:none;background:rgba(255,255,255,.22)}
body.rg .r5 .ticks button:focus-visible{outline:none}
body.rg .r5 .ticks button:focus-visible::before{height:14px;background:#fff}
body.rg .zone:focus-visible{outline:none}
/* ===== Bewegung: die Seite lebt =====
   1. Grosse Bilder atmen: langsam hinein und ebenso langsam wieder heraus, endlos, nie ein Stillstand (eigene Eigenschaften scale/translate,
      damit der Wisch-Uebergang in transform ungestoert daneben laeuft)
   2. Auftakt: Bild setzt sich, Karte fliegt ein, Text staffelt, Regler baut sich auf
   3. Karte auf/zu: Inhalt staffelt sich bei jedem Oeffnen neu
   4. Klick: Rueckmeldung an jedem Knopf, Ziffer und Bildtitel gleiten beim Wechsel */
@media (prefers-reduced-motion:no-preference){
@keyframes rg-hinein{from{scale:1;translate:0 0}to{scale:1.085;translate:-1.2% -.8%}}
body.rg .buehne img.an{will-change:scale,translate;animation:rg-hinein 20s cubic-bezier(.45,0,.55,1) infinite alternate both}
body.rg:not(.geladen) .buehne{opacity:0}
body.rg .buehne{transition:opacity 1.4s ease}
@keyframes rg-karte-ein{from{opacity:0;translate:-16px 0}to{opacity:1;translate:0 0}}
@media (min-width:761px){body.rg .rg-karte{animation:rg-karte-ein 1.1s var(--kurve) .25s both}}
@keyframes rg-hoch{from{opacity:0;translate:0 18px}to{opacity:1;translate:0 0}}
body.rg .r5 .reihe5,body.rg .r5 .alle-zimmer,body.rg .r5 .cap,body.rg .peek{animation:rg-hoch 1s var(--kurve) both}
body.rg .r5 .alle-zimmer{animation-delay:.7s}
body.rg .r5 .reihe5{animation-delay:.85s}
body.rg .r5 .cap{animation-delay:1s}
body.rg .peek{animation-delay:.6s}
body.rg .rg-karte[data-offen="false"] .e{opacity:0;transform:translateY(12px);transition-delay:0s}
body.rg .pfeile button:active,body.rg .r5 .alle-zimmer:active,body.rg .buchen:active{transform:scale(.96)}
body.rg .griff:active i{transform:rotate(45deg) translate(-3px,3px)}
}
body.rg .griff:focus-visible{outline:none;box-shadow:none;background:#ECE6DC}
body.rg .griff:focus{outline:none;box-shadow:none}
/* Rueckweg zur Uebersicht: Glasknopf im Look der Pfeilknoepfe, ueber dem Pfeilpaar */
body.rg .r5 .alle-zimmer{all:unset;box-sizing:border-box;cursor:pointer;display:flex;align-items:center;gap:16px;height:clamp(44px,3.6vw,52px);padding:0 22px;border:1px solid rgba(255,255,255,.7);background:rgba(255,255,255,.08);-webkit-backdrop-filter:blur(14px) saturate(140%);backdrop-filter:blur(14px) saturate(140%);color:#fff;font:400 11px/1 Inter,system-ui,sans-serif;letter-spacing:.24em;text-transform:uppercase;white-space:nowrap;transition:background-color .3s ease}
body.rg .r5 .alle-zimmer{order:-1;justify-self:end;margin-bottom:6px}
body.rg .r5 .alle-zimmer span{position:relative;display:block;width:24px;height:1.5px;background:currentColor;transform:scaleX(-1);transition:width .4s var(--kurve)}
body.rg .r5 .alle-zimmer span::after{content:"";position:absolute;right:0;top:-4px;width:8px;height:8px;border-top:1.5px solid currentColor;border-right:1.5px solid currentColor;transform:rotate(45deg) translate(-.5px,.5px)}
@media (hover:hover) and (pointer:fine){body.rg .r5 .alle-zimmer:hover{background:#fff;color:var(--tinte)}body.rg .r5 .alle-zimmer:hover span{width:30px}}
/* Raster: "Alle Zimmer" ist genau so breit wie das Pfeilpaar darunter, gleiche rechte und linke Kante, gleicher Abstand (10 px) */
body.rg .r5{--pf:clamp(52px,4.4vw,68px)}
body.rg .r5 .alle-zimmer{width:calc(2 * var(--pf) + 3px);height:calc(var(--pf) * .72);padding:0;justify-content:center;gap:10px;font-size:10px;letter-spacing:.16em;margin:0}
body.rg .r5 .alle-zimmer span{width:14px}
body.rg .r5 .alle-zimmer span::after{top:-3px;width:6px;height:6px}
@media (hover:hover) and (pointer:fine){body.rg .r5 .alle-zimmer:hover span{width:18px}}
@media (max-width:1099px){body.rg .r5 .alle-zimmer span{display:none}}
/* ===== Glasmodul unten rechts: Naechstes Zimmer, Alle Zimmer, Pfeilpaar, alle gleich breit (--mw) ===== */
body.rg .r5{--mw:clamp(190px,17vw,270px);width:min(640px,50vw)}
body.rg .r5 .alle-zimmer{order:-1;width:var(--mw);height:calc(var(--pf) * .62);justify-self:end}
body.rg .r5 .alle-zimmer span{display:block}
body.rg .r5 .pfeile button{width:calc((var(--mw) - 3px) / 2);height:var(--pf)}
body.rg .r5{gap:10px}
body.rg .mz{display:none}
@media (max-width:760px){
  /* Mobil: oben zwei Glasknoepfe nebeneinander (Alle Zimmer links, Naechstes rechts), unten bleibt nur Strich und Pfeilpaar */
  body.rg .r5 .zw,body.rg .r5 .alle-zimmer{display:none}
  body.rg .mz{display:flex;position:fixed;z-index:4;top:var(--luft);left:var(--luft);right:var(--luft);gap:10px}
  body.rg .mz .alle-zimmer{all:unset;box-sizing:border-box;cursor:pointer;flex:1 1 0;min-width:0;height:48px;display:flex;align-items:center;justify-content:center;gap:10px;padding:0 12px;border:1px solid rgba(255,255,255,.7);background:rgba(255,255,255,.08);-webkit-backdrop-filter:blur(14px) saturate(140%);backdrop-filter:blur(14px) saturate(140%);color:#fff;text-transform:uppercase;white-space:nowrap}
  body.rg .mz .alle-zimmer{font:400 10px/1 Inter,system-ui,sans-serif;letter-spacing:.16em}
  body.rg .mz .alle-zimmer span{display:block;width:14px;height:1.5px;background:currentColor;position:relative;transform:scaleX(-1)}
  body.rg .mz .alle-zimmer span::after{content:"";position:absolute;right:0;top:-3px;width:6px;height:6px;border-top:1.5px solid currentColor;border-right:1.5px solid currentColor;transform:rotate(45deg) translate(-.5px,.5px)}
  body.rg .mz a:active{transform:scale(.97)}
  body.rg .mz a:focus-visible{outline:none;background:rgba(255,255,255,.22)}
}
@media (prefers-reduced-motion:no-preference){body.rg .mz{animation:rg-hoch 1s var(--kurve) .7s both}}
/* Bildtitel unter dem Regler entfaellt (Michael, 10.10.2026). Das Element bleibt, das Skript beschreibt es weiter. */
body.rg .r5 .cap{display:none!important}
/* ===== Zimmer wechseln: ein Satz, ein Knopf: "Voriges | Nächstes", Name im Hinweis ===== */
body.rg .r5 .zw{order:-2;justify-self:end;width:var(--mw);height:calc(var(--pf) * .62);display:flex;border:1px solid rgba(255,255,255,.7);background:rgba(255,255,255,.08);-webkit-backdrop-filter:blur(14px) saturate(140%);backdrop-filter:blur(14px) saturate(140%)}
body.rg .zw a{all:unset;box-sizing:border-box;cursor:pointer;flex:1 1 0;min-width:0;display:flex;align-items:center;justify-content:center;gap:10px;color:#fff;font:400 10px/1 Inter,system-ui,sans-serif;letter-spacing:.16em;text-transform:uppercase;white-space:nowrap;transition:background-color .3s ease,color .3s ease}
body.rg .zw a+a{border-left:1px solid rgba(255,255,255,.7)}
body.rg .zw .pf{position:relative;display:block;width:14px;height:1.5px;background:currentColor;transition:width .4s var(--kurve)}
body.rg .zw .pf::after{content:"";position:absolute;right:0;top:-3px;width:6px;height:6px;border-top:1.5px solid currentColor;border-right:1.5px solid currentColor;transform:rotate(45deg) translate(-.5px,.5px)}
body.rg .zw .vor .pf{transform:scaleX(-1)}
@media (hover:hover) and (pointer:fine){body.rg .zw a:hover{background:#fff;color:var(--tinte)}body.rg .zw a:hover .pf{width:20px}}
body.rg .zw a:focus-visible{outline:none;background:rgba(255,255,255,.22)}
body.rg .zw a:active{transform:scale(.97)}
@media (max-width:760px){body.rg .r5 .zw{display:none}}
/* ===== Pager: [ Pfeil zurueck | ALLE ZIMMER | Pfeil vor ] in EINEM Glaskasten, wie die Seitenzahl-Leiste im Web ===== */
body.rg .r5 .zw{height:calc(var(--pf) * .78)}
body.rg .r5 .zw .vor,body.rg .r5 .zw .naechstes{flex:0 0 calc(var(--pf) * .78);justify-content:center}
body.rg .r5 .zw .alle-zimmer{all:unset;box-sizing:border-box;cursor:pointer;flex:1 1 0;min-width:0;display:flex;align-items:center;justify-content:center;height:auto;width:auto;padding:0;margin:0;border:0;background:none;-webkit-backdrop-filter:none;backdrop-filter:none;color:#fff;font:400 10px/1 Inter,system-ui,sans-serif;letter-spacing:.14em;text-transform:uppercase;white-space:nowrap;border-left:1px solid rgba(255,255,255,.7);border-right:1px solid rgba(255,255,255,.7);transition:background-color .3s ease,color .3s ease}
body.rg .r5 .zw a+a{border-left:1px solid rgba(255,255,255,.7)}
body.rg .r5 .zw .alle-zimmer+.naechstes{border-left:0}
body.rg .r5 .zw .pf{display:block}
/* Gespiegelter Pfeil dreht um seine Mitte (eine fremde Regel setzte den Drehpunkt an die linke Kante und schob ihn 14 px nach links) */
body.rg .zw .pf,body.rg .mz .zvor .pf,body.rg .mz .znaech .pf{transform-origin:50% 50%}

@media (max-width:760px){
  body.rg .mz .zvor,body.rg .mz .znaech{all:unset;box-sizing:border-box;cursor:pointer;flex:none;width:48px;height:48px;display:grid;place-items:center;border:1px solid rgba(255,255,255,.7);background:rgba(255,255,255,.08);-webkit-backdrop-filter:blur(14px) saturate(140%);backdrop-filter:blur(14px) saturate(140%);color:#fff}
  body.rg .mz .zvor .pf,body.rg .mz .znaech .pf{position:relative;display:block;width:18px;height:1.5px;background:currentColor}
  body.rg .mz .zvor .pf{transform:scaleX(-1)}
  body.rg .mz .zvor .pf::after,body.rg .mz .znaech .pf::after{content:"";position:absolute;right:0;top:-3px;width:6px;height:6px;border-top:1.5px solid currentColor;border-right:1.5px solid currentColor;transform:rotate(45deg) translate(-.5px,.5px)}
  body.rg .mz .zvor:active,body.rg .mz .znaech:active{transform:scale(.95)}
  body.rg .mz .zvor:focus-visible,body.rg .mz .znaech:focus-visible{outline:none;background:rgba(255,255,255,.22)}
}

/* gewaehlt: Lasche 1 (nur Pfeil), Angaben links mit optisch bündigem Titel */
@media (min-width:761px){
  body.rg .griff{width:28px;height:68px;padding:0;justify-content:center}
  body.rg .griff span{display:none}
  /* zu: der Reiter wird groesser und traegt das Wort DETAILS, damit man ihn findet */
  body.rg .rg-karte[data-offen="false"] .griff{width:46px;height:150px;padding:22px 0 24px;justify-content:flex-start;gap:18px}
  body.rg .rg-karte[data-offen="false"] .griff .zu{display:block;font:400 12px/1 Inter,system-ui,sans-serif;letter-spacing:.26em}
  body.rg .rg-karte[data-offen="false"] .griff i{width:8px;height:8px}
}
/* Fokusring: keine schwarze Umrandung, nur ein leiser innerer Hinweis fuer die Tastatur */
body.rg .griff:focus{outline:none}
body.rg .griff:focus-visible{outline:none;box-shadow:inset 0 0 0 1px rgba(61,55,51,.28)}
body.rg h1{margin-left:-.05em}
html:has(body.rg){scroll-behavior:auto}
@media (max-width:760px){
  body.rg .rg-karte{height:calc(var(--sheet) - 40px)}
  body.rg .peek{bottom:calc(var(--bar) + 8px)}
  html[data-r] body.rg .r5{bottom:calc(var(--bar) + 8px)}
  body.rg .rg-fuss{padding:28px var(--pad) 30px}
  html[data-r][data-karte="auf"] body.rg .r5{transform:translateY(calc(-1 * (var(--sheet) + 12px)))}
  html[data-karte="auf"] body.rg .peek{transform:translateY(calc(100% + var(--bar) + 24px))}
}

/* ===== Navigation Vollbild, nur Mobil (12.10.2026, Fassung C "Tinte") =====
   Raster: Rand 20, 6 Spalten zu 50, Fuge 10 (20 + 6*50 + 5*10 + 20 = 390). Zeile 56 hoch, 8 Luft zum Knopf (64 hoch).
   Reiter = Spalte 1-4 (230), Fotopfeile = Spalte 5-6 (110). Keine weisse Umrandung, nur Tinte und eine Haarlinie. */
@media (max-width:760px){
body.rg{--m:20px;--sp:10px;--sp1:50px;--zl:56px}
/* Strich mit Ziffer und Teilstrichen entfaellt */
body.rg .r5 .rg-spur{display:none}
body.rg .peek{left:var(--m);right:auto;width:calc(4 * var(--sp1) + 3 * var(--sp));height:var(--zl);bottom:calc(var(--bar) + 8px);padding:0;box-shadow:none;border:0;background:rgba(53,48,43,.88);color:#fff;-webkit-backdrop-filter:blur(14px) saturate(140%);backdrop-filter:blur(14px) saturate(140%)}
html[data-r] body.rg .r5,html[data-r][data-karte="zu"] body.rg .r5{left:auto;right:var(--m);width:calc(2 * var(--sp1) + var(--sp));bottom:calc(var(--bar) + 8px);gap:0;transform:none}
html[data-r][data-karte="auf"] body.rg .r5{transform:translateY(calc(-1 * (var(--sheet) - 32px)))}
body.rg .r5 .reihe5{display:block;width:100%}
body.rg .pfeile{width:100%;height:var(--zl);box-sizing:border-box;border:0;background:rgba(53,48,43,.88);-webkit-backdrop-filter:blur(14px) saturate(140%);backdrop-filter:blur(14px) saturate(140%)}
body.rg .r5 .pfeile button{flex:1 1 0;width:auto;height:var(--zl);color:#fff}
body.rg .r5 .pfeile button+button{border-left:1px solid rgba(255,255,255,.2)}
/* schlanke Pfeile: 1 px Strich, lang, kleine offene Spitze; beim Druecken wandert die Spitze */
body.rg .r5 .pfeile button span{width:28px;height:1px;transition:width .4s var(--kurve),transform .4s var(--kurve)}
body.rg .r5 .pfeile button span::after{top:-3.5px;width:7px;height:7px;border-width:1px;transform:rotate(45deg) translate(-.5px,.5px)}
body.rg .r5 .pfeile button:active span{width:22px}
/* Reiter ist ganz anklickbar, Pfeilzelle rechts mit Haarlinie */
body.rg .peek .mehr{position:absolute;inset:0;height:auto;padding:0;gap:0;justify-content:flex-end;font-size:0;color:#fff}
body.rg .peek .titelp{position:absolute;left:20px;top:50%;transform:translateY(-50%);pointer-events:none;white-space:nowrap;color:#fff}
body.rg .peek .mehr i{position:relative;box-sizing:border-box;width:var(--zl);height:var(--zl);border:0;border-left:1px solid rgba(255,255,255,.2);transform:none;display:block}
body.rg .peek .mehr i::before{content:"";position:absolute;left:50%;top:50%;width:8px;height:8px;border-left:1px solid currentColor;border-top:1px solid currentColor;transform:translate(-50%,-30%) rotate(45deg);transition:transform .5s var(--kurve)}
body.rg .peek .mehr:active{transform:scale(.985)}
@media (prefers-reduced-motion:no-preference){
@keyframes rg-wink{0%,70%,100%{transform:translate(-50%,-30%) rotate(45deg)}82%{transform:translate(-50%,-70%) rotate(45deg)}}
body.rg .peek .mehr i::before{animation:rg-wink 4.8s var(--kurve) 2.4s infinite}}
/* der weisse Balken: die geschlossene Karte ragte 74 px unter den Verfuegbarkeits-Knopf. Jetzt ganz verborgen */
body.rg .rg-karte[data-offen="false"]{transform:translateY(calc(100% + var(--bar) + 24px));visibility:hidden;transition:transform .8s var(--kurve),visibility 0s linear .8s}
body.rg .rg-karte[data-offen="true"]{visibility:visible}
/* Rand oben in der offenen Karte: der Text laeuft nicht an der Kartenkante ab, sondern verschwindet 20 px darunter in einem weichen Verlauf */
body.rg .rg-karte .innen{margin-top:var(--m);-webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 24px);mask-image:linear-gradient(to bottom,transparent 0,#000 24px)}
body.rg .rg-karte .eyebrow{margin-top:calc(var(--pad) - 16px)}
}

/* Obere Leiste (Fassung B "Eine Leiste"): ein Stueck Tinte, Haarlinien auf den Spaltengrenzen, Zeile 56 wie unten */
@media (max-width:760px){
body.rg .mz{top:20px;left:20px;right:20px;gap:10px}
body.rg .mz .zvor,body.rg .mz .znaech,body.rg .mz .alle-zimmer{box-sizing:border-box;height:56px;border:0;color:#fff}
body.rg .mz .zvor,body.rg .mz .znaech{width:50px;flex:none}
body.rg .mz .alle-zimmer{flex:1 1 0;font:400 11px/1 Inter,system-ui,sans-serif;letter-spacing:.24em;gap:12px;padding:0}
/* schlanke Pfeile wie unten */
body.rg .mz .zvor .pf,body.rg .mz .znaech .pf{width:26px;height:1px}
body.rg .mz .zvor .pf::after,body.rg .mz .znaech .pf::after{top:-3.5px;width:7px;height:7px;border-width:1px}
body.rg .mz a{transition:background-color .3s ease,transform .3s cubic-bezier(.23,1,.32,1)}
body.rg .mz .alle-zimmer span{display:none}
body.rg .mz{gap:0;background:rgba(53,48,43,.88);-webkit-backdrop-filter:blur(14px) saturate(140%);backdrop-filter:blur(14px) saturate(140%);height:56px}
body.rg .mz .zvor,body.rg .mz .znaech,body.rg .mz .alle-zimmer{background:none;-webkit-backdrop-filter:none;backdrop-filter:none}
body.rg .mz .alle-zimmer{border-left:1px solid rgba(255,255,255,.2);border-right:1px solid rgba(255,255,255,.2)}
}

/* Handy, geoeffnete Karte: die Teile hingen aneinander (Michael 12.10.2026: "Das haengt zu sehr zusammen").
   GEMESSEN bei 410 px: obere Leiste 20 bis 76, Pfeilpaar 73 bis 129 (3 px UEBER der Leiste), Karte ab 137 (8 px unter dem Paar,
   der Schliessen-Reiter sass bei 97 bis 137 direkt zwischen beiden). Jetzt: 12 px zwischen Leiste und Pfeilpaar, 17 px
   zwischen Pfeilpaar und Karte; die Karte wird dafuer 24 px niedriger (Unterkante bleibt). */
@media (max-width:760px){
  html[data-r][data-karte="auf"] body.rg .r5{transform:translateY(calc(-1 * (var(--sheet) - 47px)))}
  body.rg .rg-karte{height:calc(var(--sheet) - 64px)}
}

/* ===== Zimmerwahl am Handy (Michael 12.10.2026) =====
   Problem: "Alle Zimmer" fuehrte auf die Uebersicht, die oben nur EIN Foto zeigt; man sah nicht alle Zimmer.
   Loesung: die Mitte der Leiste zeigt die Position (04 / 11) und oeffnet eine Liste ALLER Zimmer. Pfeile links und rechts
   bleiben fuer das naechste und vorige Zimmer. Ein X in der Mitte wuerde mit "Schliessen" der Karte kollidieren. */
body.rg .zwahl{display:none}
@media (max-width:760px){
body.rg .mz .zzahl{font:400 10px/1 "DM Mono","IBM Plex Mono",ui-monospace,monospace;font-style:normal;letter-spacing:.14em;opacity:.7;margin-right:12px;padding-right:12px;border-right:1px solid rgba(255,255,255,.28)}
body.rg .zwahl{display:flex;flex-direction:column;position:fixed;inset:0;z-index:30;padding:20px 20px calc(var(--bar,64px) + 28px);color:#F6F2EA;
  background:rgba(32,28,25,.9);-webkit-backdrop-filter:blur(22px) saturate(140%);backdrop-filter:blur(22px) saturate(140%);
  visibility:hidden;opacity:0;transition:opacity 420ms cubic-bezier(.16,1,.3,1),visibility 0s linear 420ms}
body.rg .zwahl[data-offen="true"]{visibility:visible;opacity:1;transition:opacity 420ms cubic-bezier(.16,1,.3,1)}
body.rg .zwahl[hidden]{display:none}
body.rg .zwahl-kopf{display:flex;align-items:center;justify-content:space-between;height:48px;flex:none}
body.rg .zwahl-titel{font:400 11px/1 Inter,system-ui,sans-serif;letter-spacing:.24em;text-transform:uppercase;opacity:.75}
body.rg .zwahl-zu{all:unset;box-sizing:border-box;cursor:pointer;width:48px;height:48px;position:relative;margin-right:-8px;-webkit-tap-highlight-color:transparent}
body.rg .zwahl-zu i,body.rg .zwahl-zu i::before{content:"";position:absolute;left:50%;top:50%;width:22px;height:1px;background:#F6F2EA;transform:translate(-50%,-50%) rotate(45deg)}
body.rg .zwahl-zu i::before{transform:translate(-50%,-50%) rotate(90deg)}
body.rg .zwahl-zu:focus-visible{outline:2px solid #F6F2EA;outline-offset:-6px}
body.rg .zwahl-liste{list-style:none;margin:8px 0 0;padding:0;flex:1 1 auto;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
body.rg .zwahl-liste li{opacity:0;transform:translateY(14px);transition:opacity 260ms ease,transform 260ms ease}
body.rg .zwahl[data-offen="true"] .zwahl-liste li{opacity:1;transform:none;
  transition:opacity 620ms ease calc(120ms + var(--i,0) * 45ms),transform 820ms cubic-bezier(.16,1,.3,1) calc(120ms + var(--i,0) * 45ms)}
body.rg .zwahl-liste a{display:flex;align-items:baseline;gap:18px;min-height:44px;padding:6px 0;border-bottom:1px solid rgba(246,242,234,.16);color:inherit;text-decoration:none;-webkit-tap-highlight-color:transparent}
body.rg .zwahl-liste .n{font:400 11px/1 "DM Mono","IBM Plex Mono",ui-monospace,monospace;letter-spacing:.14em;opacity:.55;width:22px;flex:none}
body.rg .zwahl-liste .t{font:300 26px/1.1 "Cormorant Garamond",Georgia,serif;letter-spacing:-.01em;transition:translate 360ms cubic-bezier(.16,1,.3,1)}
body.rg .zwahl-liste a[aria-current="page"] .t{font-style:italic}
body.rg .zwahl-liste a[aria-current="page"]::after{content:"";margin-left:auto;align-self:center;width:28px;height:1px;background:#F6F2EA}
body.rg .zwahl-liste a:active .t{translate:6px 0}
body.rg .zwahl-liste a:focus-visible{outline:2px solid #F6F2EA;outline-offset:-3px}
body.rg .zwahl-preise{flex:none;margin-top:16px;display:flex;align-items:center;justify-content:center;height:44px;border:1px solid rgba(246,242,234,.5);color:#F6F2EA;text-decoration:none;font:400 11px/1 Inter,system-ui,sans-serif;letter-spacing:.22em;text-transform:uppercase}
body.rg .zwahl-site{flex:none;display:flex;flex-wrap:wrap;gap:0 18px;margin-top:10px;padding-top:6px;border-top:1px solid rgba(246,242,234,.16)}
body.rg .zwahl-site a{display:inline-flex;align-items:center;min-height:34px;color:rgba(246,242,234,.78);text-decoration:none;font:400 11px/1 Inter,system-ui,sans-serif;letter-spacing:.2em;text-transform:uppercase;-webkit-tap-highlight-color:transparent}
body.rg .zwahl-site .zwahl-start{flex:1 0 100%;min-height:40px;color:#F6F2EA}
body.rg .zwahl-site .zwahl-start::before{content:"";width:6px;height:6px;margin-right:12px;border-left:1px solid currentColor;border-bottom:1px solid currentColor;transform:rotate(45deg)}
body.rg .zwahl-site a:focus-visible{outline:2px solid #F6F2EA;outline-offset:2px}
@media (prefers-reduced-motion:reduce){body.rg .zwahl,body.rg .zwahl[data-offen="true"],body.rg .zwahl-liste li,body.rg .zwahl[data-offen="true"] .zwahl-liste li{transition:none}}
}

/* ===== Swiss-Raster fuer Leiste und Zimmerwahl (Michael 12.10.2026: "nach Swiss-Art") =====
   Regeln: ein Raster (Zeile 44, Haarlinien), linksbuendig, Grotesk (Inter) statt Serife, Nummer | Name | Mass in drei Spalten,
   Mass rechtsbuendig in Mono, das aktuelle Zimmer fett mit Quadrat statt kursiv. Ausgang direkt auf der Zimmerseite:
   Haus-Zelle links in der oberen Leiste (vorher nur ueber die Liste erreichbar). */
@media (max-width:760px){
body.rg .mz .zhome{all:unset;box-sizing:border-box;cursor:pointer;flex:none;width:50px;height:56px;display:grid;place-items:center;color:#fff;border-right:1px solid rgba(255,255,255,.2);transition:background-color .3s ease,transform .3s cubic-bezier(.23,1,.32,1);-webkit-tap-highlight-color:transparent}
body.rg .mz .zhome:active{transform:scale(.95)}
body.rg .mz .zhome:focus-visible{outline:none;background:rgba(255,255,255,.22)}
body.rg .mz .alle-zimmer{border-left:0}
body.rg .mz .zzahl{margin-right:10px;padding-right:10px}
body.rg .mz .alle-zimmer{letter-spacing:.2em}
body.rg .zwahl{padding:20px 20px calc(var(--bar,64px) + 28px)}
body.rg .zwahl-titel{font:500 13px/1 Inter,system-ui,sans-serif;letter-spacing:.01em;text-transform:none;opacity:1}
body.rg .zwahl-liste{margin-top:6px;border-top:2px solid #F6F2EA}
body.rg .zwahl-liste a{display:grid;grid-template-columns:34px 1fr auto;align-items:center;gap:0;min-height:42px;padding:0;border-bottom:1px solid rgba(246,242,234,.18)}
body.rg .zwahl-liste .n{font:400 11px/1 "DM Mono","IBM Plex Mono",ui-monospace,monospace;letter-spacing:.04em;opacity:.55;width:auto}
body.rg .zwahl-liste .t{font:400 20px/1 Inter,system-ui,sans-serif;letter-spacing:-.015em}
body.rg .zwahl-liste .m{font:400 11px/1 "DM Mono","IBM Plex Mono",ui-monospace,monospace;letter-spacing:.04em;opacity:.55;text-align:right;font-variant-numeric:tabular-nums}
body.rg .zwahl-liste a[aria-current="page"] .t{font-style:normal;font-weight:600}
body.rg .zwahl-liste a[aria-current="page"] .n,body.rg .zwahl-liste a[aria-current="page"] .m{opacity:1}
body.rg .zwahl-liste a[aria-current="page"]::after{display:none}
body.rg .zwahl-liste a[aria-current="page"] .n::before{content:"";display:inline-block;width:6px;height:6px;margin-right:6px;background:#F6F2EA;vertical-align:1px}
body.rg .zwahl-liste a[aria-current="page"] .n{margin-left:-12px}
body.rg .zwahl-preise{height:44px;margin-top:16px;border:0;border-top:2px solid #F6F2EA;border-bottom:1px solid rgba(246,242,234,.18);justify-content:space-between;padding:0;font:500 12px/1 Inter,system-ui,sans-serif;letter-spacing:.02em;text-transform:none}
body.rg .zwahl-preise::after{content:"→";font-size:15px}
body.rg .zwahl-site{display:grid;grid-template-columns:1fr 1fr;gap:0 20px;margin-top:0;padding-top:0;border-top:0}
body.rg .zwahl-site a{font:500 12px/1 Inter,system-ui,sans-serif;letter-spacing:.02em;text-transform:none;color:rgba(246,242,234,.82);min-height:34px;border-bottom:1px solid rgba(246,242,234,.12)}
body.rg .zwahl-site .zwahl-start{grid-column:1 / -1;min-height:44px;font-weight:600;color:#F6F2EA;border-bottom:1px solid rgba(246,242,234,.18)}
body.rg .zwahl-site .zwahl-start::before{display:none}
body.rg .zwahl-site .zwahl-start::after{content:"→";margin-left:auto;font-size:15px}
}

/* ===== Zimmerwahl als Magazin-Raster (Michael 12.10.2026: "viel uebersichtlicher, wie in einem Design-Magazin") =====
   Zwei Spalten, jedes Zimmer mit Foto im Format 4:3, darunter Nummer, Name und Mass in einer Zeile (Grotesk, Haarlinie).
   Das aktuelle Zimmer traegt einen weissen Rahmen. Unten EIN Weg: zur Zimmeruebersicht (dort ist das Menue der Webseite). */
@media (max-width:760px){
body.rg .zwahl{padding:20px 20px calc(var(--bar,64px) + 28px)}
body.rg .zwahl-titel{display:flex;align-items:baseline;gap:14px;font:500 13px/1 Inter,system-ui,sans-serif;letter-spacing:.01em}
body.rg .zwahl-titel em{font:400 11px/1 "DM Mono","IBM Plex Mono",ui-monospace,monospace;font-style:normal;opacity:.55;letter-spacing:.06em}
body.rg .zwahl-liste{display:grid;grid-template-columns:1fr 1fr;gap:18px 12px;align-content:start;border-top:2px solid #F6F2EA;margin-top:6px;padding-top:14px}
body.rg .zwahl-liste li{min-width:0}
body.rg .zwahl-liste a{display:grid;grid-template-columns:auto 1fr auto;grid-template-rows:auto auto;gap:8px 8px;align-items:baseline;min-height:0;padding:0;border-bottom:0}
body.rg .zwahl-liste .b{grid-column:1 / -1;display:block;aspect-ratio:4 / 3;overflow:hidden;background:#3a342f;outline:1px solid rgba(246,242,234,.0);outline-offset:3px;transition:outline-color .4s ease}
body.rg .zwahl-liste .b img{display:block;width:100%;height:100%;object-fit:cover;transform:scale(1.02);transition:transform 900ms cubic-bezier(.16,1,.3,1),filter 400ms ease;filter:brightness(.82)}
body.rg .zwahl-liste a:active .b img{transform:scale(1.07)}
body.rg .zwahl-liste .n{font:400 10px/1 "DM Mono","IBM Plex Mono",ui-monospace,monospace;letter-spacing:.06em;opacity:.55;width:auto;margin:0}
body.rg .zwahl-liste .t{font:500 13px/1.15 Inter,system-ui,sans-serif;letter-spacing:-.005em;min-width:0}
body.rg .zwahl-liste .m{font:400 10px/1 "DM Mono","IBM Plex Mono",ui-monospace,monospace;letter-spacing:.04em;opacity:.55;text-align:right}
body.rg .zwahl-liste a[aria-current="page"] .b{outline-color:#F6F2EA}
body.rg .zwahl-liste a[aria-current="page"] .b img{filter:brightness(1)}
body.rg .zwahl-liste a[aria-current="page"] .t{font-style:normal;font-weight:600}
body.rg .zwahl-liste a[aria-current="page"] .n,body.rg .zwahl-liste a[aria-current="page"] .m{opacity:1}
body.rg .zwahl-liste a[aria-current="page"] .n::before{display:none}
body.rg .zwahl-liste a[aria-current="page"] .n{margin-left:0}
body.rg .zwahl-preise{height:48px;margin-top:14px;border:0;border-top:2px solid #F6F2EA;font:500 12px/1 Inter,system-ui,sans-serif;letter-spacing:.02em;text-transform:none;justify-content:space-between;padding:0}
body.rg .zwahl-preise::after{content:"→";font-size:15px}
}

/* ===== Leiste neu geordnet (Michael 12.10.2026: "Button ueberarbeiten, besser"; Recherche ChatGPT und Gemini) =====
   Beide nennen dasselbe: Zaehler "04 / 11", ein Index-Symbol, das ALLE Zimmer als Vollbild-Liste oeffnet, und einen beschrifteten
   Ausgang oben links. Darum: [ ‹ Zimmer ] [ ← ] [ ▦ 10 / 11 ] [ → ].
   - Ausgang links: Wort statt Symbol, fuehrt auf die Zimmer-Seite (dort steht das Menue der Webseite).
   - Mitte: 3 x 3 Quadrate (Index) und der Zaehler; Antippen oeffnet die Liste. Beim Druecken bauen sich die Quadrate versetzt neu auf. */
@media (max-width:760px){
body.rg .mz .zhome{width:auto;min-width:0;padding:0 14px 0 12px;display:flex;align-items:center;gap:9px;font:500 11px/1 Inter,system-ui,sans-serif;letter-spacing:.18em;text-transform:uppercase;white-space:nowrap}
body.rg .mz .zhome::before{content:"";width:7px;height:7px;border-left:1px solid currentColor;border-bottom:1px solid currentColor;transform:rotate(45deg) translate(1px,-1px);flex:none}
body.rg .mz .alle-zimmer{gap:0;justify-content:center}
body.rg .mz .alle-zimmer .ix{display:grid;grid-template-columns:repeat(3,3px);grid-auto-rows:3px;gap:2.5px;margin-right:12px;flex:none}
body.rg .mz .alle-zimmer .ix i{display:block;background:currentColor;opacity:.92;transition:transform .45s cubic-bezier(.16,1,.3,1),opacity .3s ease}
body.rg .mz .alle-zimmer .zzahl{margin:0;padding:0;border:0;font:400 11px/1 "DM Mono","IBM Plex Mono",ui-monospace,monospace;letter-spacing:.14em;opacity:.9}
body.rg .mz .alle-zimmer:active .ix i{transform:scale(.4);opacity:.5}
body.rg .mz .alle-zimmer:active .ix i:nth-child(odd){transition-delay:40ms}
@media (prefers-reduced-motion:reduce){body.rg .mz .alle-zimmer .ix i{transition:none}}
}

/* Karteikarte im Vollbild: kein Verlauf am oberen Rand des Inhalts (Michael 12.10.2026: "Mach den Abschnitt nicht mit Verlauf").
   Vorher blendete eine 24-px-Maske den Text am Kartenrand weich aus; jetzt endet der Inhalt an der Kartenkante. */
body.rg .rg-karte .innen{-webkit-mask-image:none !important;mask-image:none !important}

/* Zimmerwahl: beiger Grund, dunkle Schrift (Michael 12.10.2026: "Mach den Hintergrund beige"). Ton wie die Karteikarte und die Webseite (#F3EEE7). */
@media (max-width:760px){
body.rg .zwahl{background:#F3EEE7;color:#3D3733;-webkit-backdrop-filter:none;backdrop-filter:none}
body.rg .zwahl-zu i,body.rg .zwahl-zu i::before{background:#3D3733}
body.rg .zwahl-zu:focus-visible,body.rg .zwahl-liste a:focus-visible,body.rg .zwahl-preise:focus-visible{outline-color:#3D3733}
body.rg .zwahl-liste{border-top-color:#3D3733;padding-bottom:18px}
body.rg .zwahl-liste .b{background:#E4DCCF}
body.rg .zwahl-liste .b img{filter:none}
body.rg .zwahl-liste a[aria-current="page"] .b{outline-color:#3D3733}
body.rg .zwahl-liste .n,body.rg .zwahl-liste .m,body.rg .zwahl-titel em{opacity:.6}
body.rg .zwahl-liste a[aria-current="page"] .n,body.rg .zwahl-liste a[aria-current="page"] .m{opacity:1}
body.rg .zwahl-preise{color:#3D3733;border-top-color:#3D3733}
}

/* Kein Rahmen um das aktuelle Zimmer (Michael 12.10.2026: "keine einrahmen"). Es bleibt nur durch fette Schrift und volle Zahlen erkennbar. */
body.rg .zwahl-liste .b,body.rg .zwahl-liste a[aria-current="page"] .b{outline:none !important;outline-color:transparent !important}

/* Leiste: mehr Platz fuer "Zimmer", Index-Symbol nur 4 Punkte (Michael 12.10.2026). */
@media (max-width:760px){
body.rg .mz .zhome{padding:0 22px 0 20px;gap:12px;letter-spacing:.2em}
body.rg .mz .alle-zimmer .ix{grid-template-columns:repeat(2,4px);grid-auto-rows:4px;gap:3px;margin-right:12px}
}

/* Zimmerwahl eleganter (Michael 12.10.2026: "Schrift und Striche eleganter, Inter oder Mono ist gut, aber sehr elegant").
   Haarlinien (1 px, gedaempft) statt 2-px-Balken; Kopf und Weg in kleinen, weit gesperrten Versalien wie die Beschriftungen der Webseite;
   Namen in Inter 400 mit feiner Laufweite; Nummer und Mass in Mono, klein und gesperrt; aktuelles Zimmer nur eine Stufe kraeftiger;
   Pfeil als lange Haarlinie mit offener Spitze (wie die Foto-Pfeile) statt Zeichen. */
@media (max-width:760px){
body.rg .zwahl-titel{font:400 11px/1 Inter,system-ui,sans-serif;letter-spacing:.24em;text-transform:uppercase;opacity:.85}
body.rg .zwahl-zu{width:44px;height:44px;margin-right:-6px}
body.rg .zwahl-zu i,body.rg .zwahl-zu i::before{width:18px;background:#3D3733;opacity:.85}
body.rg .zwahl-liste{border-top:1px solid rgba(61,55,51,.38);padding-top:16px;gap:22px 12px}
body.rg .zwahl-liste a{gap:9px 10px}
body.rg .zwahl-liste .t{font:400 13px/1.2 Inter,system-ui,sans-serif;letter-spacing:.012em;font-feature-settings:"ss01","cv11"}
body.rg .zwahl-liste .n,body.rg .zwahl-liste .m{font:400 9.5px/1 "DM Mono","IBM Plex Mono",ui-monospace,monospace;letter-spacing:.14em;opacity:.5}
body.rg .zwahl-liste a[aria-current="page"] .t{font-weight:500}
body.rg .zwahl-liste a[aria-current="page"] .n,body.rg .zwahl-liste a[aria-current="page"] .m{opacity:.9}
body.rg .zwahl-preise{height:52px;margin-top:6px;border-top:1px solid rgba(61,55,51,.38);font:400 11px/1 Inter,system-ui,sans-serif;letter-spacing:.24em;text-transform:uppercase;color:#3D3733}
body.rg .zwahl-preise::after{content:"";display:block;width:34px;height:1px;background:currentColor;margin-right:2px;position:relative;box-shadow:none;transition:width .45s cubic-bezier(.16,1,.3,1)}
body.rg .zwahl-preise:active::after{width:44px}
body.rg .zwahl-preise{position:relative}
body.rg .zwahl-preise::before{content:"";position:absolute;right:2px;top:50%;width:6px;height:6px;border-top:1px solid currentColor;border-right:1px solid currentColor;transform:translateY(-50%) rotate(45deg)}
}

/* Index-Symbol (4 Punkte): mehr Abstand zum Zaehler (Michael 12.10.2026). Vorher 12 px, jetzt 20 px. */
@media (max-width:760px){
body.rg .mz .alle-zimmer .ix{margin-right:20px}
}

/* Leiste: mehr Luft zwischen Trennstrich und Pfeil (Michael 12.10.2026: "beim Zwischenstrich zum Pfeil").
   GEMESSEN vorher: Zelle 50 px, Pfeil 26 px, je 12 px Luft. Jetzt Zelle 58 px, Pfeil 20 px, je 19 px Luft. */
@media (max-width:760px){
body.rg .mz .zvor,body.rg .mz .znaech{width:58px}
body.rg .mz .zvor .pf,body.rg .mz .znaech .pf{width:20px}
}

/* Index-Symbol: Punkte kleiner (Michael 12.10.2026). Vorher 4 px mit 3 px Fuge, jetzt 3 px mit 2,5 px Fuge. */
@media (max-width:760px){
body.rg .mz .alle-zimmer .ix{grid-template-columns:repeat(2,3px);grid-auto-rows:3px;gap:2.5px}
}

/* Die zwoelfte Kachel fuellt die leere Zelle neben Zimmer 11 (Michael 12.10.2026: "Was sollen wir mit der leeren Flaeche?"):
   gleiche Groesse wie die Fotos, Haarlinie statt Bild, oben die Beschriftung, unten der Weg zur Zimmeruebersicht mit langem Haarlinien-Pfeil. */
@media (max-width:760px){
body.rg .zwahl-liste .zwahl-mehr a{display:block}
body.rg .zwahl-liste .zwahl-mehr .b{display:flex;flex-direction:column;justify-content:space-between;aspect-ratio:4 / 3;padding:14px 14px 13px;background:transparent;border:1px solid rgba(61,55,51,.38);outline:none !important;overflow:visible;position:relative;transition:background-color .5s cubic-bezier(.16,1,.3,1)}
body.rg .zwahl-liste .zwahl-mehr .mk{font:400 9.5px/1 "DM Mono","IBM Plex Mono",ui-monospace,monospace;letter-spacing:.14em;text-transform:uppercase;opacity:.55}
body.rg .zwahl-liste .zwahl-mehr .mp{font:400 13px/1.25 Inter,system-ui,sans-serif;letter-spacing:.012em;max-width:9em;position:relative;padding-bottom:20px}
body.rg .zwahl-liste .zwahl-mehr .mp::after{content:"";position:absolute;left:0;bottom:4px;width:40px;height:1px;background:currentColor;transition:width .5s cubic-bezier(.16,1,.3,1)}
body.rg .zwahl-liste .zwahl-mehr .mp::before{content:"";position:absolute;left:34px;bottom:1px;width:6px;height:6px;border-top:1px solid currentColor;border-right:1px solid currentColor;transform:rotate(45deg);transition:left .5s cubic-bezier(.16,1,.3,1)}
body.rg .zwahl-liste .zwahl-mehr a:active .b{background:rgba(61,55,51,.06)}
body.rg .zwahl-liste .zwahl-mehr a:active .mp::after{width:54px}
body.rg .zwahl-liste .zwahl-mehr a:active .mp::before{left:48px}
}

/* ===== Variante A uebernommen (Michael 12.10.2026: "A ist gut") =====
   Aus der Vorschau _vorschau/zimmer-navigation: (1) das Verzeichnis waechst als Kreis aus dem Index-Knopf (Ursprung = Ausloeser),
   (2) die Nummer sitzt klein auf dem Foto, Name und Mass stehen in EINER Zeile ohne Umbruch. */
@media (max-width:760px){
body.rg .zwahl{clip-path:circle(0px at var(--ox,50%) var(--oy,60px));opacity:1;visibility:hidden;transition:clip-path .8s cubic-bezier(.16,1,.3,1),visibility 0s linear .8s}
body.rg .zwahl[data-offen="true"]{clip-path:circle(160% at var(--ox,50%) var(--oy,60px));visibility:visible;transition:clip-path .9s cubic-bezier(.16,1,.3,1)}
body.rg .zwahl-liste a{grid-template-columns:minmax(0,1fr) auto}
body.rg .zwahl-liste .b{grid-column:1 / -1;position:relative}
body.rg .zwahl-liste .nn{position:absolute;left:8px;top:8px;font:400 9.5px/1 "DM Mono","IBM Plex Mono",ui-monospace,monospace;letter-spacing:.14em;color:#fff;text-shadow:0 1px 8px rgba(0,0,0,.5)}
body.rg .zwahl-liste .t{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
body.rg .zwahl-liste li.zwahl-mehr .b{display:flex}
@media (prefers-reduced-motion:reduce){body.rg .zwahl,body.rg .zwahl[data-offen="true"]{clip-path:none;transition:opacity .2s ease,visibility 0s}body.rg .zwahl{opacity:0}body.rg .zwahl[data-offen="true"]{opacity:1}}
}

/* Handy: Zaehler am Foto und Zimmername im Verfuegbarkeits-Balken (Michael 12.10.2026: "ja"). */
@media (max-width:760px){
body.rg .pfeile{position:relative}
body.rg .pfeile .fz{position:absolute;right:2px;bottom:calc(100% + 8px);font:400 10px/1 "DM Mono","IBM Plex Mono",ui-monospace,monospace;letter-spacing:.14em;color:#fff;text-shadow:0 1px 10px rgba(0,0,0,.55);pointer-events:none;white-space:nowrap}
}
@media (min-width:761px){body.rg .pfeile .fz{display:none}}

/* Zwoelfte Kachel: ohne Rahmen, mittig, groesser (Michael 12.10.2026: "ohne Rahmen, mehr in die Mitte, etwas groesser, schoene Schrift").
   Flaeche in einem Ton dunkler als der Grund statt Linie; alles auf der Mittelachse. */
@media (max-width:760px){
body.rg .zwahl-liste .zwahl-mehr .b{border:0;background:#EAE3D8;align-items:center;justify-content:center;gap:0;padding:14px;text-align:center}
body.rg .zwahl-liste .zwahl-mehr .mk{font:400 9.5px/1 "DM Mono","IBM Plex Mono",ui-monospace,monospace;letter-spacing:.24em;opacity:.55;margin-bottom:14px}
body.rg .zwahl-liste .zwahl-mehr .mp{font:300 22px/1.18 "Cormorant Garamond",Georgia,serif;letter-spacing:-.005em;max-width:none;padding-bottom:0;text-align:center;text-wrap:balance}
body.rg .zwahl-liste .zwahl-mehr .mp::before{display:none}
body.rg .zwahl-liste .zwahl-mehr .mp::after{content:"";display:block;position:static;width:44px;height:1px;margin:16px auto 0;background:currentColor;transition:width .5s cubic-bezier(.16,1,.3,1)}
body.rg .zwahl-liste .zwahl-mehr .b::after{content:"";position:absolute;left:50%;bottom:16px;width:6px;height:6px;margin-left:12px;border-top:1px solid currentColor;border-right:1px solid currentColor;transform:rotate(45deg);opacity:0}
body.rg .zwahl-liste .zwahl-mehr a:active .b{background:#E3DACD}
body.rg .zwahl-liste .zwahl-mehr a:active .mp::after{width:60px}
}

/* Ohne Vorzeile "Zimmer": die Ueberschrift rueckt an deren Stelle (Abstand = Vorzeile samt Luft, damit das Bild gleich bleibt) */
body.rg h1{margin-top:calc(var(--pad) + 14px)}
@media (max-width:760px){body.rg h1{margin-top:calc(var(--pad) - 6px)}}

/* ===== 13.10.2026, Michael: Vollbild laedt ruhig, Navigation bleibt, Wechsel minimalistisch =====
   1. Am Handy steht die Karte von Anfang an zu: vorher stand sie beim Laden offen und glitt erst nach dem Skript hinunter (gemessen: Oberkante
      von 174 auf 872 px in 1,2 s, sichtbar auf dem schon eingeblendeten Bild). Das <head>-Skript setzt data-karte vor dem ersten Bild.
   2. Navigation bleibt sichtbar, auch bei offener Karte: am Handy endet das Blatt 8 px ueber der Navigation (68 px hoch), am Desktop liegt sie neben der Karte.
   3. Das Bild blendet langsam ein und atmet nur noch leise (kleinerer Weg, laengere Dauer), die Navigation blendet erst danach ein. */
@media (max-width:760px){
body.rg{--nvh:112px}
body.rg:has(.nv-navi[data-stil="7"]){--nvh:132px}
/* --nvtop: Abstand der Navigations-Oberkante zum unteren Bildrand (alle-zimmer.js misst ihn, jede Ansicht hat eine andere Hoehe); ohne Skript gilt die Schaetzung */
html body.rg aside.rg-karte{bottom:calc(var(--nvtop,calc(var(--bar) + 12px + var(--nvh))) + 8px + env(safe-area-inset-bottom,0px));height:calc(var(--sheet) - (var(--nvtop,calc(var(--bar) + 12px + var(--nvh))) - var(--bar) - 8px))}
html body.rg .rg-karte[data-offen="false"],html[data-karte="zu"] body.rg .rg-karte{transform:translateY(calc(100% + var(--nvtop,calc(var(--bar) + 12px + var(--nvh))) + 12px + var(--luft) + env(safe-area-inset-bottom,0px)))}
}
@media (prefers-reduced-motion:no-preference){
@keyframes rg-hinein{from{scale:1.04;translate:0 0}to{scale:1.065;translate:-.7% -.45%}}
body.rg .buehne img.an{animation:rg-hinein 36s cubic-bezier(.45,0,.55,1) infinite alternate both}
body.rg .buehne{transition:opacity 1.6s cubic-bezier(.4,0,.2,1)}
@keyframes rg-nv-ein{from{opacity:0}to{opacity:1}}
body.rg .nv .u,body.rg .nv .bl,body.rg .nv .ix,body.rg .nv .aa-top,body.rg .nv .an-wahl{animation:rg-nv-ein 1.2s ease-out .7s both}
}
@media (prefers-reduced-motion:no-preference){
@keyframes rg-karte-ruhig{from{opacity:0;translate:-14px 0}to{opacity:1;translate:0 0}}
@media (min-width:761px){body.rg .rg-karte{animation:rg-karte-ruhig 1.3s cubic-bezier(.16,1,.3,1) .4s both}}
}


/* 15.10.2026, Michael: "beim Uebergang sieht man ein Kaestchen und oben ein Schluessellochsymbol". Gemessen (Bildfolge beim Klick
   auf eine Zimmerkategorie): die dunkle Buehne blendete 1,6 s lang ueber die helle Seite ein; bei geringer Deckkraft bleiben nur die
   zwei kontraststaerksten Dinge des Fotos sichtbar, der Lampenschirm mit Fuss (das "Schluesselloch") und das Bett (das "Kaestchen").
   Jetzt kurz und mit weichem Auslauf: das Foto ist da, bevor eine Geisterform entsteht.
   Zurueck: .vor-uebergang-15102026 */
body.rg .buehne{transition:opacity .45s cubic-bezier(.16,1,.3,1)}

/* ===== Sprachschalter DE / EN / NL (19.10.2026, Michael: "Englisch funktioniert nicht" -- die Zimmerseiten hatten keinen).
   Zwei Stellen, eine je Breite: im Regler (.r5) als Glasfeld ueber dem Zimmerwechsel, in der Handyleiste (.mz) neben "Zimmer". */
body.rg .r5 .sprache{order:-3;justify-self:end;margin:0 0 6px;width:var(--mw);height:calc(var(--pf) * .62);display:flex;align-items:center;justify-content:center;gap:0;border:1px solid rgba(255,255,255,.7);background:rgba(255,255,255,.08);-webkit-backdrop-filter:blur(14px) saturate(140%);backdrop-filter:blur(14px) saturate(140%);color:#fff;font:400 10px/1 Inter,system-ui,sans-serif;letter-spacing:.16em;text-transform:uppercase;white-space:nowrap}
body.rg .r5 .sprache a,body.rg .r5 .sprache .hier{display:flex;align-items:center;height:100%;padding:0 12px;color:#fff;text-decoration:none;transition:background-color .3s ease}
body.rg .r5 .sprache a:hover,body.rg .r5 .sprache a:focus-visible{outline:none;background:rgba(255,255,255,.22)}
body.rg .r5 .sprache .hier{text-decoration:underline;text-underline-offset:4px}
body.rg .r5 .sprache .aus{opacity:.5}
body.rg .mz .sprache{display:none}
@media (max-width:760px){
  body.rg .r5 .sprache{display:none}
  body.rg .mz .sprache{display:flex;align-items:center;flex:none;height:56px;margin:0;padding:0 10px;color:#fff;font:400 11px/1 Inter,system-ui,sans-serif;letter-spacing:.16em;border-right:1px solid rgba(255,255,255,.2);white-space:nowrap}
  body.rg .mz .sprache a,body.rg .mz .sprache .hier{display:flex;align-items:center;height:100%;padding:0 5px;color:#fff;text-decoration:none}
  body.rg .mz .sprache .hier{text-decoration:underline;text-underline-offset:4px}
  body.rg .mz .sprache .aus{opacity:.5;margin:0 -2px}
  body.rg .mz .sprache a:focus-visible{outline:none;background:rgba(255,255,255,.22)}
}
/* 21.10.2026: Wischen am Handy/Tablet. Ohne pan-y nimmt der Browser den Finger fuer sich und bricht den Zeiger ab. */
body.rg .zone,body.rg .buehne{touch-action:pan-y}
/* Michael 21.10.2026: "Die Schrift muss kleiner sein, am Handy sieht man nur diese Schrift. Probier Mono."
   Einleitung der Karte in DM Mono 12/20 statt Abhaya 20/27; gemessen vorher 162 px hoch am Handy. */
/* Zurueckgenommen (Michael: "Keine Mono mehr, so wie sie frueher war, nur ein bisschen kleiner"): Abhaya bleibt, Handy 20 -> 17 px, Desktop 16,5 -> 15,5 px. */
html body.rg .lead{font:400 17px/26px "Abhaya Libre",Georgia,serif;letter-spacing:0;color:var(--tinte)}
@media (min-width:761px){html body.rg .lead{font-size:15.5px;line-height:25px}}

/* === /zimmer-detail/alle-zimmer.css === */
/* Reiter "Alle Zimmer" (Michael 12.10.2026, Vorschlag B, "Bau es ein, koennte sein dass wir es wieder entfernen").
   Eigene Datei, damit sie sich mit einem Schalter (register_seite.ALLE_ZIMMER_REITER) und ohne Eingriff in
   register.css wieder entfernen laesst. Desktop und Tablet: Reiter unter dem Reiter Schliessen/Details, Seite
   im Stil eines Designmagazins (mattes Papier, Bilder in zwei Formaten, Unterschriften in Inter und Mono, keine Linien).
   Mobil: dieselbe Seite als Vollbild, geoeffnet ueber den Knopf mit dem Raster in der unteren Leiste. */

/* Reiter */
body.rg .rz-tab{all:unset;box-sizing:border-box;cursor:pointer;position:absolute;left:calc(100% - 1px);top:calc(clamp(56px,12vh,112px) + 78px);width:40px;height:192px;padding:24px 0 26px;display:flex;flex-direction:column;align-items:center;gap:22px;background:var(--grund);-webkit-tap-highlight-color:transparent;transition:background-color .3s ease}
body.rg .rz-tab span{display:block;writing-mode:vertical-rl;transform:rotate(180deg);font:400 11.5px/1 Inter,system-ui,sans-serif;letter-spacing:.26em;text-transform:uppercase;color:var(--tinte);white-space:nowrap;transition:color .3s ease}
body.rg .rz-ix{display:grid;grid-template-columns:5px 5px;gap:2px;width:12px;height:12px}
body.rg .rz-ix i{display:block;background:var(--tinte);transition:transform .5s var(--kurve),background-color .3s ease}
body.rg .rz-tab[aria-expanded="true"]{background:#E7E0D4}
body.rg .rz-tab[aria-expanded="true"] span{color:var(--tinte)}
body.rg .rz-tab[aria-expanded="true"] .rz-ix i{background:var(--tinte)}
body.rg .rz-tab[aria-expanded="true"] .rz-ix i:nth-child(1){transform:translate(-1px,-1px)}
body.rg .rz-tab[aria-expanded="true"] .rz-ix i:nth-child(4){transform:translate(1px,1px)}
/* beide Reiter etwas breiter (Michael 12.10.2026): der obere (Schliessen/Details) zieht mit, gleiche Kante */
@media (min-width:761px){body.rg .griff{width:40px}body.rg .rg-karte[data-offen="false"] .griff{width:50px}}
body.rg .rz-tab:focus{outline:none}
body.rg .rz-tab:focus-visible{box-shadow:inset 0 0 0 1px rgba(61,55,51,.28)}
@media (hover:hover) and (pointer:fine){body.rg .rz-tab:not([aria-expanded="true"]):hover{background:#ECE6DB}}
/* Karte zugeklappt (Michael 12.10.2026: "wie die Detailseite, auch beim Wegklappen, darunter"): der Reiter bleibt, steht unter dem Reiter DETAILS,
   gleiche Breite (50 px), gleiche Kante. Die Seite oeffnet dann direkt daneben statt neben der Karte. */
@media (min-width:761px){
  body.rg .rg-karte[data-offen="false"] .rz-tab{top:calc(clamp(56px,12vh,112px) + 150px + 8px);width:50px}
  body.rg:has(.rg-karte[data-offen="false"]) .rz-panel{left:calc(var(--luft) + 50px + 28px);width:min(1180px,calc(100vw - var(--luft) * 2 - 50px - 28px))}
}
@media (max-width:760px){body.rg .rz-tab{display:none}}

/* Seite */
body.rg .rz-panel{position:fixed;z-index:6;left:calc(var(--luft) + var(--breite) + 40px);top:var(--luft);width:min(1180px,calc(100vw - var(--breite) - var(--luft) * 2 - 64px));max-height:calc(100dvh - var(--luft) - var(--bar,80px) - 8px);display:flex;flex-direction:column;padding:34px 44px 0;color:var(--tinte);background:#F3EEE7;box-shadow:0 1px 2px rgba(61,55,51,.08),0 28px 70px -14px rgba(61,55,51,.38);visibility:hidden;opacity:0;pointer-events:none;transform:translateY(14px);transition:opacity .35s ease,transform .7s var(--kurve),visibility 0s .7s}
body.rg .rz-panel[data-auf="true"]{visibility:visible;opacity:1;pointer-events:auto;transform:none;transition:opacity .35s ease,transform .7s var(--kurve),visibility 0s}
@media (prefers-reduced-motion:reduce){body.rg .rz-panel,body.rg .rz-ix i{transition:none}}
body.rg .rz-kopf{flex:none;display:flex;justify-content:space-between;align-items:center;padding:0 0 34px;color:var(--grau);font:400 10.5px/1 Inter,system-ui,sans-serif;letter-spacing:.28em;text-transform:uppercase}
body.rg .rz-kopf b{font:400 10.5px/1 "DM Mono",ui-monospace,monospace;letter-spacing:.2em;font-weight:400}
body.rg .rz-zu{all:unset;box-sizing:border-box;cursor:pointer;display:block;position:relative;width:48px;height:48px;margin:-14px -14px -14px 0;-webkit-tap-highlight-color:transparent}
body.rg .rz-zu i,body.rg .rz-zu i::before{content:"";position:absolute;left:50%;top:50%;width:22px;height:1px;background:var(--tinte);transform:translate(-50%,-50%) rotate(45deg)}
body.rg .rz-zu i::before{transform:translate(-50%,-50%) rotate(90deg)}
body.rg .rz-zu:focus-visible{outline:2px solid var(--tinte);outline-offset:-6px}
body.rg .rz-liste{list-style:none;margin:0 -44px;padding:0 44px 8px;display:grid;grid-template-columns:repeat(12,1fr);gap:52px 28px;align-items:start;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:none}
body.rg .rz-liste::-webkit-scrollbar{display:none}
body.rg .rz-liste li{grid-column:span 7}
body.rg .rz-liste li:nth-child(even){grid-column:span 5;margin-top:64px}
body.rg .rz-liste li:nth-child(4n+3){grid-column:span 5}
body.rg .rz-liste li:nth-child(4n+4){grid-column:span 7;margin-top:0}
body.rg .rz-liste li:nth-child(4n+3) .rz-b,body.rg .rz-liste li:nth-child(even) .rz-b{aspect-ratio:4/5}
body.rg .rz-liste li:nth-child(4n+4) .rz-b,body.rg .rz-liste li:nth-child(4n+1) .rz-b{aspect-ratio:3/2}
body.rg .rz-liste a{display:block;color:inherit;text-decoration:none;-webkit-tap-highlight-color:transparent}
body.rg .rz-liste a:focus-visible{outline:2px solid var(--tinte);outline-offset:4px}
body.rg .rz-b{position:relative;display:block;overflow:hidden;background:#E6DFD3}
body.rg .rz-b img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform 1.1s var(--kurve),opacity .5s ease}
body.rg .rz-t{display:block;padding-top:14px}
body.rg .rz-t b{display:block;font:400 13px/1.35 Inter,system-ui,sans-serif;letter-spacing:.01em;color:var(--tinte)}
body.rg .rz-t em{display:block;margin-top:6px;font:400 10px/1 "DM Mono",ui-monospace,monospace;font-style:normal;letter-spacing:.16em;color:var(--grau);white-space:pre}
body.rg .rz-liste a[aria-current="page"] .rz-t b{font-style:italic}
body.rg .rz-fuss{flex:none;display:flex;justify-content:flex-end;align-items:center;gap:12px;padding:30px 0 34px;font:400 10.5px/1 Inter,system-ui,sans-serif;letter-spacing:.28em;text-transform:uppercase;color:var(--tinte);text-decoration:none}
/* Desktop-Hover (Michael 12.10.2026: nicht ausblassen, sondern markieren): das gewaehlte Bild hebt sich, der Rest verliert Farbe statt Deckkraft,
   das Papier bleibt sauber. Der Name rueckt ein Stueck, ein Pfeil faehrt ein. */
body.rg .rz-b{transition:transform .7s var(--kurve),box-shadow .7s var(--kurve)}
body.rg .rz-b img{transition:transform 1.2s var(--kurve),filter .6s ease}
body.rg .rz-t b{display:flex;align-items:baseline;gap:10px;transition:transform .6s var(--kurve)}
body.rg .rz-t b::after{content:"\2192";font-weight:400;opacity:0;transform:translateX(-10px);transition:opacity .4s ease,transform .6s var(--kurve)}
@media (hover:hover) and (pointer:fine) and (min-width:761px){
  /* sichtbar: die anderen werden schwarzweiss und treten zurueck, das gewaehlte Bild zoomt, folgt der Maus (--px/--py aus dem Skript)
     und zeigt eine Glasmarke "Ansehen" */
  body.rg .rz-liste li{transition:transform .7s var(--kurve)}
  /* Michael 12.10.2026: "Die Bilder nie schwarzweiss." Die anderen bleiben in Farbe und treten nur leise zurueck:
     ein Papierschleier (Deckkraft .5 auf dem beigen Grund) in 0,9 s, die Schrift darunter gedaempft. */
  /* 13.10.2026, Michael: "Warum ist es schon wieder heller." Der Schleier (Deckkraft .5) machte die anderen Bilder BLASS, vorher waren sie schwarzweiss.
     Beides ist falsch. Jetzt: Farbe und Deckkraft bleiben, die anderen werden nur eine Spur DUNKLER (Helligkeit .88). Nie heller, nie farblos. */
  /* Michael 19.10.2026: kein Effekt beim Darueberfahren. Abdunkeln, Anheben und Zoom der Bilder entfernt. */
  body.rg .rz-b img{transition:transform 1.2s var(--kurve),filter .7s ease}
  body.rg .rz-liste li:hover .rz-t b{transform:translateX(4px)}
  body.rg .rz-liste li:hover .rz-t b::after{opacity:1;transform:none}
  body.rg .rz-fuss:hover{color:var(--akzent,#AE6B54)}
}
@media (prefers-reduced-motion:reduce){body.rg .rz-b,body.rg .rz-b img,body.rg .rz-t b,body.rg .rz-t b::after{transition:none}}

/* Tablet */
@media (min-width:761px) and (max-width:1099px){
  body.rg .rz-panel{width:min(1180px,calc(100vw - var(--breite) - var(--luft) * 2 - 64px));padding:28px 28px 0}
  body.rg .rz-liste{margin:0 -28px;padding:0 28px 8px;gap:40px 18px}
  body.rg .rz-liste li:nth-child(even){margin-top:44px}
}

/* Mobil: Vollbild, geoeffnet ueber den Rasterknopf der unteren Leiste */
@media (max-width:760px){
  body.rg .rz-panel{inset:0;left:0;top:0;width:auto;max-height:none;padding:calc(env(safe-area-inset-top,0px) + 14px) 22px 0;z-index:31;transform:translateY(24px)}
  body.rg .rz-kopf{padding:0 0 22px;min-height:48px}
  body.rg .rz-liste{margin:0 -22px;padding:0 22px calc(var(--bar,80px) + 24px);gap:34px 14px;flex:1 1 auto}
  body.rg .rz-liste li:nth-child(even){margin-top:36px}
  body.rg .rz-t{padding-top:10px}
  body.rg .rz-t em{font-size:9.5px;letter-spacing:.12em}
  body.rg .rz-fuss{display:none}
}

/* Reiter, Raster 8 (Michael 12.10.2026): Text "Alle 11 Zimmer" braucht 232 px; 8 px Luft zum Reiter Schliessen/Details darueber;
   vom Schatten bleibt nur eine kleine Spitze unter dem Reiter, kein grosser Hof */
@media (min-width:761px){
  body.rg .rz-tab{height:232px;top:calc(clamp(56px,12vh,112px) + 68px + 8px);box-shadow:3px 7px 9px -7px rgba(20,16,12,.38)}
  body.rg .rg-karte[data-offen="false"] .rz-tab{top:calc(clamp(56px,12vh,112px) + 150px + 8px)}
}


/* Fahnen (Michael 13.10.2026): beide Reiter nach rechts breiter (60 px, zugeklappt 72 px). Details behaelt den Pfeil, Alle Zimmer bekommt das
   Hamburger-Zeichen statt des Rasters. Die Reiter liegen wie echte Registerfahnen aufeinander, ohne Luft: der untere liegt im Schatten des oberen
   (feine Linie), und ist ein Reiter heraus (Alle Zimmer offen), wirft er einen kleinen Schatten auf den anderen. */
@media (min-width:761px){
  body.rg .griff{width:60px}
  body.rg .rg-karte[data-offen="false"] .griff{width:72px}
  body.rg .rz-tab{width:60px;top:calc(clamp(56px,12vh,112px) + 68px);box-shadow:inset 0 9px 8px -8px rgba(61,55,51,.34),3px 7px 9px -7px rgba(20,16,12,.38)}
  body.rg .rg-karte[data-offen="false"] .rz-tab{width:72px;top:calc(clamp(56px,12vh,112px) + 150px)}
  body.rg .rz-tab[aria-expanded="true"]{z-index:1;box-shadow:0 -8px 8px -6px rgba(20,16,12,.42),3px 7px 9px -7px rgba(20,16,12,.38)}
  body.rg .rg-karte:has(.rz-tab[aria-expanded="true"]) .griff{box-shadow:inset 0 -10px 8px -8px rgba(61,55,51,.32)}
  body.rg:has(.rg-karte[data-offen="false"]) .rz-panel{left:calc(var(--luft) + 72px + 28px);width:min(1180px,calc(100vw - var(--luft) * 2 - 72px - 28px))}
}
body.rg .rz-ix{display:flex;flex-direction:column;gap:4px;width:18px;height:auto}
body.rg .rz-ix i{width:18px;height:1.5px}
body.rg .rz-tab[aria-expanded="true"] .rz-ix i:nth-child(1){transform:none}

/* Fahnen sitzen fest (Michael 13.10.2026: "nicht in der Luft haengen, wenn wir es aktivieren, einfach dunkler werden"): beim Darueberfahren und Druecken
   rueckt der Reiter NICHT mehr 3 px nach rechts (das liess einen Spalt zur Karte), er wird nur dunkler. Alle Zustaende bleiben buendig an der Karte. */
@media (hover:hover) and (pointer:fine){
  body.rg .griff:hover{transform:none;background:#E8E1D5}
  body.rg .rz-tab:not([aria-expanded="true"]):hover{background:#E8E1D5}
}
body.rg .griff:active{transform:none;background:#DCD4C7}
body.rg .griff:focus-visible{background:#E8E1D5}
body.rg .rz-tab:active,body.rg .rz-tab[aria-expanded="true"]{background:#DCD4C7}

/* Abstand und Schatten (Michael 13.10.2026): zwischen den Fahnen 6 px Luft, nicht ganz zusammen. Der Schatten steht senkrecht am linken Rand der Fahne,
   die NICHT aktiv ist (dort, wo sie unter der Karte steckt). Die aktive Fahne, die herausgezogene, hat keinen Schatten am Rand. Aktiv ist
   "Alle Zimmer", solange die Seite offen ist, sonst der Reiter Schliessen/Details. */
@media (min-width:761px){
  body.rg .rz-tab{top:calc(clamp(56px,12vh,112px) + 68px + 6px);box-shadow:inset 8px 0 7px -7px rgba(61,55,51,.38)}
  body.rg .rg-karte[data-offen="false"] .rz-tab{top:calc(clamp(56px,12vh,112px) + 150px + 6px)}
  body.rg .rz-tab[aria-expanded="true"]{z-index:1;box-shadow:3px 7px 9px -7px rgba(20,16,12,.38)}
  body.rg .griff{box-shadow:none}
  body.rg .rg-karte:has(.rz-tab[aria-expanded="true"]) .griff{box-shadow:inset 8px 0 7px -7px rgba(61,55,51,.38)}
}

/* Hell und Dunkel (Michael 13.10.2026): Schalter zwischen "Alle Zimmer" und dem X. Gilt nur fuer diese Seite, wird im Browser gemerkt. */
body.rg .rz-modus{all:unset;box-sizing:border-box;cursor:pointer;margin:0 16px 0 auto;display:inline-flex;align-items:center;gap:0;min-height:44px;padding:0 4px;font:400 10px/1 "DM Mono",ui-monospace,monospace;letter-spacing:.2em;-webkit-tap-highlight-color:transparent}
body.rg .rz-modus span{padding:6px 8px;border-bottom:1px solid transparent;opacity:.5;transition:opacity .3s ease,border-color .3s ease}
body.rg .rz-modus .h{opacity:1;border-color:currentColor}
body.rg .rz-modus[aria-pressed="true"] .h{opacity:.5;border-color:transparent}
body.rg .rz-modus[aria-pressed="true"] .d{opacity:1;border-color:currentColor}
body.rg .rz-modus:focus-visible{outline:2px solid var(--tinte);outline-offset:2px}
body.rg .rz-panel{transition:opacity .35s ease,transform .7s var(--kurve),visibility 0s .7s,background-color .5s ease,color .5s ease}
body.rg .rz-panel[data-auf="true"]{transition:opacity .35s ease,transform .7s var(--kurve),visibility 0s,background-color .5s ease,color .5s ease}
body.rg .rz-panel[data-modus="dunkel"]{--tinte:#F3EEE7;--grau:rgba(243,238,231,.62);background:#35302B;box-shadow:0 1px 2px rgba(0,0,0,.3),0 28px 70px -14px rgba(0,0,0,.6)}
@media (prefers-reduced-motion:reduce){body.rg .rz-panel,body.rg .rz-modus span{transition:none}}

/* Details-Karte: dieselbe Kopfzeile wie die Zimmerliste, Hell/Dunkel und X oben rechts (Michael 13.10.2026, "bei beiden Register") */
body.rg .k-kopf{position:absolute;z-index:4;top:12px;right:12px;display:flex;align-items:center;color:var(--tinte);background:var(--grund)}
body.rg .k-zu{all:unset;box-sizing:border-box;cursor:pointer;display:block;position:relative;width:44px;height:44px;-webkit-tap-highlight-color:transparent}
body.rg .k-zu i,body.rg .k-zu i::before{content:"";position:absolute;left:50%;top:50%;width:22px;height:1px;background:var(--tinte);transform:translate(-50%,-50%) rotate(45deg)}
body.rg .k-zu i::before{transform:translate(-50%,-50%) rotate(90deg)}
body.rg .k-zu:focus-visible{outline:2px solid var(--tinte);outline-offset:-6px}
body.rg .rg-karte[data-offen="false"] .k-kopf{visibility:hidden}

/* Ansicht 1 und 2 (Michael 13.10.2026): 1 = Pfeile, 2 = Zwei Linien (Hauptversion). Schalter neben dem X und im Kopf der Zimmerliste. */
body.rg .an-wahl{display:inline-flex;align-items:center;gap:6px;font:400 11px/1 "DM Mono",ui-monospace,monospace;letter-spacing:.14em}
html body.rg .an-wahl button{all:unset;box-sizing:border-box;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;min-width:34px;min-height:44px;padding:0 6px;color:inherit;opacity:.5;border-bottom:0;position:relative;transition:opacity .4s var(--kurve);-webkit-tap-highlight-color:transparent}
html body.rg .an-wahl button::after{content:"";position:absolute;left:6px;right:6px;bottom:12px;height:1px;background:currentColor;transform:scaleX(0);transition:transform .5s var(--kurve)}
html body.rg .an-wahl button[aria-pressed="true"]{opacity:1}
html body.rg .an-wahl button[aria-pressed="true"]::after{transform:scaleX(1)}
html body.rg .an-wahl button:focus-visible{outline:2px solid currentColor;outline-offset:-4px}
@media (hover:hover) and (pointer:fine){html body.rg .an-wahl button:hover{opacity:1}}
body.rg .nv>.an-wahl{position:absolute;z-index:1;pointer-events:auto;right:72px;top:calc(env(safe-area-inset-top,0px) + 14px);color:#F6F2EA;text-shadow:0 0 3px rgba(20,16,12,.6),0 1px 14px rgba(20,16,12,.55)}
@media (min-width:761px){body.rg .nv>.an-wahl{right:96px;top:22px}}
body.rg .rz-kopf .an-wahl{margin:0 0 0 auto;color:var(--tinte)}
body.rg .rz-kopf .rz-modus{margin-left:14px}
@media (prefers-reduced-motion:reduce){html body.rg .an-wahl button,html body.rg .an-wahl button::after{transition:none}}

/* Mobil: die Fahne "Schliessen" auf der Karte ist so breit wie die Verfuegbarkeitsleiste (Michael 13.10.2026) */
@media (max-width:760px){
  body.rg .griff{height:46px;padding:0 22px;gap:14px;box-sizing:border-box;justify-content:flex-start;left:calc(20px - var(--luft));width:calc(100vw - 40px)}
  body.rg .griff span{font-size:12px;letter-spacing:.26em}
}

/* Karte: leiser Hinweis, dass man weiterscrollen kann (Michael 13.10.2026): ein haarfeiner Faden rechts, der mitwandert. Kein Verlauf. */
body.rg .rg-karte .innen{scrollbar-width:none}
body.rg .rg-karte .innen::-webkit-scrollbar{display:none}
body.rg .k-faden{position:absolute;z-index:3;right:7px;width:1px;background:var(--linie);pointer-events:none;opacity:0;transition:opacity .5s ease}
body.rg .k-faden[data-an="true"]{opacity:1}
body.rg .k-faden i{position:absolute;left:0;top:0;width:1px;background:var(--tinte);opacity:.55;will-change:transform}

/* Eine zugeklappte Karte faengt keine Klicks ab: sie liegt unter der Navigation und darf deren Pfeile nicht verdecken, auch nicht waehrend sie noch ausblendet. */
body.rg .rg-karte[data-offen="false"],body.rg .rg-karte[data-offen="false"] *{pointer-events:none}

/* Mobil: die Fahne an der Karte zeigt ein X statt des Wortes "Schliessen" (Michael 13.10.2026) */
@media (max-width:760px){
  html body.rg .griff span,html body.rg .griff i{display:none}
  html body.rg .griff{justify-content:flex-end;padding:0}
  html body.rg .griff::before,html body.rg .griff::after{content:"";position:absolute;right:18px;top:50%;width:20px;height:1.5px;background:var(--tinte);transform-origin:50% 50%}
  html body.rg .griff::before{transform:translateY(-50%) rotate(45deg)}
  html body.rg .griff::after{transform:translateY(-50%) rotate(-45deg)}
}

/* Zimmerliste groesser und tiefer (Michael 13.10.2026): breiter bis 1180 px, tieferer Schatten in zwei Lagen. */
@media (min-width:761px){
  body.rg .rz-panel{padding:40px 52px 0;box-shadow:0 1px 2px rgba(61,55,51,.08),0 14px 30px -12px rgba(61,55,51,.28),0 44px 100px -20px rgba(61,55,51,.55)}
  body.rg .rz-liste{margin:0 -52px;padding:0 52px 8px;gap:64px 36px}
  body.rg .rz-liste li:nth-child(even){margin-top:84px}
  body.rg .rz-liste li:nth-child(4n+4){margin-top:0}
}

/* Michael 13.10.2026: das X der Karte auf der Hoehe der Ueberschrift "Modern Sued" (gemessen: X-Mitte 49 px, Titel-Mitte 69,6 px, Versatz 20,6 px) */
body.rg .k-zu{transform:translateY(20.5px)}

/* Mobil: Karte, Fahne und Verfuegbarkeitsleiste bilden eine Saeule (Michael 13.10.2026): gleiche Breite, die Karte endet buendig an der Leiste. Masse wie die Leiste: 20 px seitlich, 12 px Abstand unten plus 64 px Hoehe. */
@media (max-width:760px){
  html body.rg .rg-karte{left:20px;right:20px;width:auto;bottom:calc(76px + env(safe-area-inset-bottom,0px))}
  html body.rg .griff{left:0;width:100%}
}

/* Mobil: das X in der Karte entfaellt, die Fahne darueber traegt schon das X (Michael 13.10.2026: "2x Menue macht keinen Sinn") */
@media (max-width:760px){body.rg .k-kopf{display:none}}

/* 13.10.2026, Michael: Details und Zimmerliste duerfen zusammen offen sein. Oeffnet oder schliesst die Karte, gleitet die Liste an ihren neuen Platz
   (neben die Karte, bzw. neben den Reiter) statt zu springen. Nur Tablet und Desktop. */
@media (min-width:761px) and (prefers-reduced-motion:no-preference){
body.rg .rz-panel[data-auf="true"]{transition:opacity .35s ease,transform .7s var(--kurve),visibility 0s,left .6s var(--kurve),width .6s var(--kurve)}
}

/* 13.10.2026: Liste neben der offenen Karte ist schmal (Tablet 388 px, kleiner Laptop ca. 580 px). Gemessen bei 820 px: Bild am Rand abgeschnitten,
   "Alle Zimmer" lag auf der Ansichtswahl, das X auf der 7. Unter 520 px Breite eine Spalte, Ansichtswahl in die zweite Zeile, kleinere Raender. */
@media (min-width:761px) and (max-width:1100px){
body.rg .rz-panel{padding:28px 28px 0}
body.rg .rz-liste{margin:0 -28px;padding:0 28px 8px}
body.rg .rz-kopf{padding-bottom:24px}
}
body.rg .rz-panel{container-type:inline-size;container-name:rzp}
@container rzp (max-width:520px){
  html body.rg .rz-kopf{flex-wrap:wrap;row-gap:6px}
  html body.rg .rz-kopf .an-wahl{order:3;flex:0 0 100%;margin:0 0 0 -6px}
  html body.rg .rz-liste{grid-template-columns:minmax(0,1fr);gap:34px}
  html body.rg .rz-liste li,html body.rg .rz-liste li:nth-child(even),html body.rg .rz-liste li:nth-child(4n+3),html body.rg .rz-liste li:nth-child(4n+4){grid-column:1;margin-top:0}
}


/* 15.10.2026, Michael: Nummerierung (Ansichtswahl) steht wieder OBEN RECHTS auf dem Bild neben dem X, nicht im Menue "Alle Zimmer"; im Vollbild des
   Fotos (Leuchtkasten oder Browser-Vollbild) ist sie weg. Zurueck: .vor-ansicht-oben-15102026 */
body:has(.kasten[data-an="true"]) .nv > .an-wahl, html:fullscreen .nv > .an-wahl, body:fullscreen .nv > .an-wahl { display: none !important; }

/* === /zimmer-detail/navi.css === */

body.rg .mz,body.rg .peek,body.rg .regler.r5{display:none!important}
body.rg .nv{position:fixed;inset:0;z-index:4;pointer-events:none;color:#F6F2EA;font:400 11px/1 Inter,system-ui,sans-serif;-webkit-font-smoothing:antialiased}
body.rg .nv::before,body.rg .nv::after{content:"";position:absolute;left:0;right:0;pointer-events:none;z-index:0}
body.rg .nv::before{top:0;height:180px;background:linear-gradient(180deg,rgba(24,19,15,0.420) 0%,rgba(24,19,15,0.408) 10%,rgba(24,19,15,0.376) 20%,rgba(24,19,15,0.329) 30%,rgba(24,19,15,0.272) 40%,rgba(24,19,15,0.210) 50%,rgba(24,19,15,0.148) 60%,rgba(24,19,15,0.091) 70%,rgba(24,19,15,0.044) 80%,rgba(24,19,15,0.012) 90%,rgba(24,19,15,0.000) 100%)}
body.rg .nv::after{bottom:0;height:320px;background:linear-gradient(0deg,rgba(24,19,15,0.500) 0%,rgba(24,19,15,0.486) 10%,rgba(24,19,15,0.448) 20%,rgba(24,19,15,0.392) 30%,rgba(24,19,15,0.324) 40%,rgba(24,19,15,0.250) 50%,rgba(24,19,15,0.176) 60%,rgba(24,19,15,0.108) 70%,rgba(24,19,15,0.052) 80%,rgba(24,19,15,0.014) 90%,rgba(24,19,15,0.000) 100%)}
body.rg .nv>*,body.rg .nv>a.zur{position:absolute;z-index:1}
body.rg .nv a,body.rg .nv button{all:unset;box-sizing:border-box;cursor:pointer;pointer-events:auto;-webkit-tap-highlight-color:transparent;display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:44px;min-width:44px;text-shadow:0 1px 14px rgba(20,16,12,.5);color:inherit}
body.rg .nv .t{font:400 11px/1 Inter,system-ui,sans-serif;letter-spacing:.24em;text-transform:uppercase}
body.rg .nv .m{font:400 12px/1 "DM Mono",ui-monospace,monospace;letter-spacing:.16em}
body.rg .nv .f{display:inline-flex;align-items:center;gap:2px}
body.rg .nv .f button{font:300 26px/1 Inter,system-ui,sans-serif}
body.rg .nv .nm{font:300 38px/1 "Cormorant Garamond",Georgia,serif;letter-spacing:-.01em;text-shadow:0 1px 18px rgba(20,16,12,.45)}
body.rg .nv a:focus-visible,body.rg .nv button:focus-visible{outline:2px solid #F6F2EA;outline-offset:2px}
@media (hover:hover) and (pointer:fine){body.rg .nv a:hover,body.rg .nv button:hover{opacity:.72}}
/* 13.10.2026, Michael: "wenn ich die Karte aufklappe, ist die Navigation weg". Die Navigation bleibt jetzt IMMER sichtbar (am Handy rueckt das Blatt hoch, siehe register.css). */
html[data-karte="auf"] body.rg .nv:not(.nv-navi) .u,html[data-karte="auf"] body.rg .nv:not(.nv-navi) .bl,html[data-karte="auf"] body.rg .nv:not(.nv-navi) .ix{visibility:hidden}
@media (min-width:761px){body.rg .nv .det,body.rg .nv .nm{display:none}body.rg .nv::before{top:0;bottom:0;left:auto;right:0;width:360px;height:auto;background:linear-gradient(270deg,rgba(24,19,15,0.620) 0%,rgba(24,19,15,0.603) 10%,rgba(24,19,15,0.556) 20%,rgba(24,19,15,0.486) 30%,rgba(24,19,15,0.402) 40%,rgba(24,19,15,0.310) 50%,rgba(24,19,15,0.218) 60%,rgba(24,19,15,0.134) 70%,rgba(24,19,15,0.064) 80%,rgba(24,19,15,0.017) 90%,rgba(24,19,15,0.000) 100%)}}
@media (max-width:760px){body.rg .nv::before{height:110px}}

body.rg .nv>a.zk{position:absolute;z-index:1}
body.rg .nv-navi .zk{display:none}
body.rg .nv-navi .det{position:absolute;z-index:1;right:12px;top:calc(env(safe-area-inset-top,0px) + 12px);padding:0 10px;font:500 12px/1 Inter,system-ui,sans-serif;letter-spacing:.2em;text-transform:uppercase}
body.rg .nv-navi .sb2{display:flex;gap:4px;height:24px;pointer-events:auto}
body.rg .nv-navi .sb2>button{flex:1 1 0;min-width:0;min-height:0;height:24px;padding:0;display:flex;align-items:flex-start;justify-content:stretch;text-shadow:none}
body.rg .nv-navi .sb2>button::before,body.rg .nv-navi .rl>a::before{content:"";display:block;width:100%;height:2px;background:rgba(246,242,234,.4);box-shadow:0 0 6px rgba(20,16,12,.55);transition:background-color .3s ease,height .4s var(--kurve)}
body.rg .nv-navi .sb2>button.past::before{background:rgba(255,255,255,.95)}
body.rg .nv-navi .sb2>button.cur::before{background:#fff;height:4px}
body.rg .nv-navi .u{left:22px;right:22px;bottom:calc(var(--bar,80px) + 14px)}
body.rg .nv-navi .aa-z{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;height:52px}
body.rg .nv-navi .aa-z>:first-child{justify-self:start}
body.rg .nv-navi .aa-z>:last-child{justify-self:end}
body.rg .nv-navi .aa-z>a{min-width:56px;min-height:52px;padding:0;text-shadow:none}
body.rg .nv-navi .aa-z .la{display:block;width:60px;height:10px;overflow:visible;filter:drop-shadow(0 0 3px rgba(20,16,12,.65))}
body.rg .nv-navi .aa-z .la path{stroke-width:1.7}
body.rg .nv-navi .aa-z .aa-lab{display:inline-flex;align-items:center;justify-content:center;padding:0 8px;min-height:52px;min-width:0;font:500 12px/1 Inter,system-ui,sans-serif;letter-spacing:.24em;text-transform:uppercase;text-decoration:none;color:#F6F2EA;text-shadow:0 0 3px rgba(20,16,12,.6),0 1px 14px rgba(20,16,12,.55)}
body.rg .nv-navi .aa-z button{padding:0 8px;min-height:52px;min-width:0;font:500 12px/1 Inter,system-ui,sans-serif;letter-spacing:.24em;text-transform:uppercase;text-shadow:0 0 3px rgba(20,16,12,.6),0 1px 14px rgba(20,16,12,.55)}
@media (hover:hover) and (pointer:fine){body.rg .nv-navi .aa-z .la{transition:transform .5s var(--kurve)}body.rg .nv-navi .aa-z>:first-child:hover .la{transform:translateX(-5px)}body.rg .nv-navi .aa-z>:last-child:hover .la{transform:translateX(5px)}}
body.rg .nv-navi .sb2>button{position:relative}
body.rg .nv-navi .sb2>button.cur::before{height:3px;background:rgba(246,242,234,.4)}
body.rg .nv-navi .sb2>button.cur::after{content:"";position:absolute;left:0;top:0;width:100%;height:3px;background:#fff;transform-origin:0 0;transform:scaleX(0);animation:aafill 6s linear forwards}
@keyframes aafill{to{transform:scaleX(1)}}
@media (prefers-reduced-motion:reduce){body.rg .nv-navi .sb2>button.cur::after{animation:none;transform:none}}
body.rg .nv-navi .u-k{display:none}
body.rg .nv-navi .aa-mid{display:inline-flex;align-items:center;gap:18px;color:#F6F2EA}
body.rg .nv-navi .aa-sl{font:300 22px/1 Inter,system-ui,sans-serif;opacity:.55;text-shadow:0 0 3px rgba(20,16,12,.6)}
body.rg .nv-navi .aa-x{min-width:44px;min-height:52px;padding:0;justify-content:center;color:#F6F2EA}
body.rg .nv-navi .xk{position:relative;display:block;width:16px;height:16px}
body.rg .nv-navi .xk::before,body.rg .nv-navi .xk::after{content:"";position:absolute;left:50%;top:50%;width:18px;height:1.5px;background:currentColor;transform:translate(-50%,-50%) rotate(45deg);box-shadow:0 0 6px rgba(20,16,12,.55)}
body.rg .nv-navi .xk::after{transform:translate(-50%,-50%) rotate(-45deg)}
body.rg .nv-navi .nm{font-size:40px;font-weight:400;margin-bottom:4px}
body.rg .nv-navi .u-k button{padding:0;min-height:44px;font:500 14px/1 "DM Mono",ui-monospace,monospace;letter-spacing:.14em;text-shadow:0 0 3px rgba(20,16,12,.6),0 1px 14px rgba(20,16,12,.55)}
body.rg .nv-navi .rl{display:flex;gap:4px;height:24px}
body.rg .nv-navi .rl>a{flex:1 1 0;min-width:0;min-height:0;height:24px;padding:0;display:flex;align-items:flex-end;justify-content:stretch;text-shadow:none}
body.rg .nv-navi .rl>a[aria-current="page"]::before{background:#fff;height:4px}
@media (hover:hover) and (pointer:fine){body.rg .nv-navi .sb2>button:hover::before,body.rg .nv-navi .rl>a:hover::before{background:#fff;height:4px}}
@media (min-width:761px){
  body.rg .nv-navi .zk{left:auto;right:30px;top:42px}
  body.rg .nv-navi .det,body.rg .nv-navi .nm{display:none}
  body.rg .nv-navi .u{left:auto;right:30px;bottom:calc(16px + 64px + 14px);width:min(520px,calc(100vw - 480px))}
  body.rg .nv-navi .aa-z .la{width:76px}
}
body.rg .nv-navi .aa-lab.rg-m{position:static;transform:none;width:44px;height:52px;min-width:44px;padding:0;justify-content:center}
body.rg .nv-navi .hb{position:relative;display:block;width:20px;height:1.5px;background:currentColor;box-shadow:0 0 6px rgba(20,16,12,.55)}
body.rg .nv-navi .hb::before,body.rg .nv-navi .hb::after{content:"";position:absolute;left:0;width:20px;height:1.5px;background:currentColor;box-shadow:0 0 6px rgba(20,16,12,.55);transition:opacity .3s ease}
body.rg .nv-navi .hb::before{top:-6px}
body.rg .nv-navi .hb::after{top:6px}
body.rg .nv-navi .rg-m[aria-expanded="true"] .hb::before,body.rg .nv-navi .rg-m[aria-expanded="true"] .hb::after{opacity:0}
body.rg .nv-navi:has(.rg-m[aria-expanded="true"]) .nm{opacity:0}
body.rg .nv-navi .mn-panel{position:absolute;z-index:3;left:20px;right:20px;bottom:calc(var(--bar,80px) + 14px + 24px + 52px + 12px);padding:4px 20px;color:#F6F2EA;background:linear-gradient(135deg,rgba(255,255,255,.14),rgba(255,255,255,.04)),rgba(26,21,18,.88);-webkit-backdrop-filter:blur(22px) saturate(140%);backdrop-filter:blur(22px) saturate(140%);box-shadow:0 30px 70px -20px rgba(20,16,12,.6);visibility:hidden;opacity:0;transform:translateY(12px);pointer-events:none;transition:opacity .3s ease,transform .6s var(--kurve),visibility 0s .6s}
body.rg .nv-navi .mn-panel[data-auf="true"]{visibility:visible;opacity:1;transform:none;pointer-events:auto;transition:opacity .3s ease,transform .6s var(--kurve),visibility 0s}
body.rg .nv-navi .mn-z{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:8px;width:100%;min-height:78px;padding:12px 0;text-align:left;text-shadow:none;color:inherit;box-sizing:border-box}
body.rg .nv-navi .mn-z+.mn-z{border-top:1px solid rgba(246,242,234,.2)}
body.rg .nv-navi .mn-k{font:500 11px/1 Inter,system-ui,sans-serif;letter-spacing:.24em;text-transform:uppercase;color:rgba(246,242,234,.72)}
body.rg .nv-navi .mn-nm{font:300 26px/1.05 "Cormorant Garamond",Georgia,serif}
@media (min-width:761px){body.rg .nv-navi .mn-panel{left:auto;right:30px;width:min(420px,calc(100vw - 480px));bottom:calc(16px + 64px + 14px + 24px + 52px + 12px)}}
/* Mobil (Michael 13.10.2026): Details steht wie das Menue UNTEN in der Mitte: Hamburger / X / Details. Das Details oben rechts entfaellt. Am Desktop gibt es den Reiter. */
body.rg .nv-navi>.det{display:none}
body.rg .nv-navi .aa-m{display:none}
@media (max-width:760px){
  body.rg .nv-navi .aa-m{display:inline-flex}
  body.rg .nv-navi .aa-mid{gap:9px}
  body.rg .nv-navi .aa-z .la{width:46px}
  body.rg .nv-navi .aa-z>a{min-width:46px}
  body.rg .nv-navi .aa-det{align-items:center;min-height:52px;padding:0 2px;font:500 11px/1 Inter,system-ui,sans-serif;letter-spacing:.16em;text-transform:uppercase;color:#F6F2EA;text-shadow:0 0 3px rgba(20,16,12,.6),0 1px 14px rgba(20,16,12,.55)}
}
/* X oben rechts (Michael 13.10.2026): das X-Menue steht auch in der Ecke, wo man es erwartet: zurueck zur Zimmeruebersicht. */
body.rg .nv>a.aa-top{position:absolute;z-index:1;right:6px;top:calc(env(safe-area-inset-top,0px) + 6px);width:60px;height:60px;min-width:60px;min-height:60px;padding:0;justify-content:center;color:#F6F2EA;text-shadow:none}
body.rg .nv-navi .aa-top .xk{width:34px;height:34px}
body.rg .nv-navi .aa-top .xk::before,body.rg .nv-navi .aa-top .xk::after{width:36px;height:1.8px}
@media (min-width:761px){body.rg .nv>a.aa-top{right:20px;top:14px}}

body.rg .nv-navi .u{left:20px;right:20px;bottom:calc(var(--bar,80px) + 12px)}
body.rg .nv-navi .ag-nm{display:flex;align-items:center;justify-content:space-between;height:60px}
body.rg .nv-navi .ag-nm a{min-width:56px;min-height:56px;padding:0;text-shadow:none}
body.rg .nv-navi .ag-nm .la{display:block;width:44px;height:10px;overflow:visible;filter:drop-shadow(0 0 3px rgba(20,16,12,.65))}
body.rg .nv-navi .ag-nm .la path{stroke-width:1.7}
body.rg .nv-navi .ag-nm .nm{flex:1;margin:0;text-align:center;font-size:34px;line-height:1;font-weight:400;white-space:nowrap}
body.rg .nv-navi .sb2{margin:0 0 2px}
body.rg .nv-navi .ag-ak{display:flex;justify-content:space-between;align-items:center}
body.rg .nv-navi .ag-b{display:inline-flex;align-items:center;gap:12px;min-height:48px;min-width:0;padding:0;font:500 12px/1 Inter,system-ui,sans-serif;letter-spacing:.2em;text-transform:uppercase;color:#F6F2EA;text-shadow:0 0 3px rgba(20,16,12,.6),0 1px 14px rgba(20,16,12,.55)}
body.rg .nv-navi .ag-b.rg-m{position:static;transform:none;width:auto;height:auto}
body.rg .nv-navi .ag-b .hb{flex:none}
body.rg .nv-navi .mn-panel{bottom:calc(var(--bar,80px) + 12px + 60px + 24px + 48px + 12px)}
@media (hover:hover) and (pointer:fine){body.rg .nv-navi .ag-nm .la{transition:transform .5s var(--kurve)}body.rg .nv-navi .ag-nm>a:first-child:hover .la{transform:translateX(-5px)}body.rg .nv-navi .ag-nm>a:last-child:hover .la{transform:translateX(5px)}body.rg .nv-navi .ag-b:hover{letter-spacing:.26em}body.rg .nv-navi .ag-b{transition:letter-spacing .5s var(--kurve)}}
@media (min-width:761px){
  body.rg .nv-navi .u{left:auto;right:30px;width:min(520px,calc(100vw - 480px));bottom:calc(16px + 64px + 14px)}
  body.rg .nv-navi .mn-panel{left:auto;right:30px;width:min(420px,calc(100vw - 480px));bottom:calc(16px + 64px + 14px + 60px + 24px + 48px + 12px)}
  body.rg .nv-navi .ag-nm .la{width:60px}
}

body.rg .nv-navi .ag-nm .nm{font-family:"DM Mono",ui-monospace,monospace;font-weight:400;font-size:17px;letter-spacing:.08em;text-transform:uppercase}
@media (min-width:761px){body.rg .nv-navi .ag-nm .nm{display:block;font-size:20px}}

body.rg .nv-navi .hb,body.rg .nv-navi .hb::before,body.rg .nv-navi .hb::after{width:14px}
body.rg .nv-navi .hb::before{top:-5px}
body.rg .nv-navi .hb::after{top:5px}
body.rg .nv-navi .ag-b[data-nv="liste"]{gap:14px}
body.rg .nv-navi .w2,body.rg .nv-navi .m2{display:none}
@media (min-width:761px){
  body.rg .nv-navi{--navL:0px}
  body.rg:has(.rg-karte[data-offen="true"]) .nv-navi{--navL:calc(var(--luft) + var(--breite) + 40px)}
  body.rg .nv-navi .u{--w:max(300px,min(520px,calc(100vw - 2 * var(--navL))));left:max(var(--navL),calc(50vw - var(--w) / 2));right:auto;width:var(--w);bottom:calc(16px + 64px + 14px)}
  body.rg .nv-navi .ag-nm .nm{font-size:17px}
  body.rg .nv-navi .ag-nm a{min-width:44px}
  body.rg .nv-navi .ag-nm .la{width:44px}
  body.rg .nv::before{top:0;bottom:auto;left:0;right:0;width:auto;height:110px;background:linear-gradient(180deg,rgba(24,19,15,0.420) 0%,rgba(24,19,15,0.408) 10%,rgba(24,19,15,0.376) 20%,rgba(24,19,15,0.329) 30%,rgba(24,19,15,0.272) 40%,rgba(24,19,15,0.210) 50%,rgba(24,19,15,0.148) 60%,rgba(24,19,15,0.091) 70%,rgba(24,19,15,0.044) 80%,rgba(24,19,15,0.012) 90%,rgba(24,19,15,0.000) 100%)}
  body.rg .griff,body.rg .rz-tab{opacity:0;pointer-events:none}
  body.rg .rz-panel{max-height:calc(100dvh - var(--luft) - 16px - 64px - 14px - var(--navh,140px) - 14px)}
  body.rg .nv-navi[data-karte="true"] .w1{display:none}
  body.rg .nv-navi[data-karte="true"] .w2{display:inline}
  body.rg .nv-navi[data-liste="true"] .m1,body.rg .nv-navi[data-liste="true"] .hb{display:none}
  body.rg .nv-navi[data-liste="true"] .m2{display:inline}
}

/* 1 Haarlinie: sehr feine, lange Pfeile, Striche 1 px (aktiv 2 px), Mono mit weiter Sperrung */
body.rg .nv-navi[data-stil="1"] .la{width:76px;height:12px}
body.rg .nv-navi[data-stil="1"] .la path{stroke-width:1;vector-effect:non-scaling-stroke}
body.rg .nv-navi[data-stil="1"] .ag-nm .nm{font:400 15px/1 "DM Mono",ui-monospace,monospace;letter-spacing:.34em;text-indent:.34em}
body.rg .nv-navi[data-stil="1"] .sb2{gap:6px}
body.rg .nv-navi[data-stil="1"] .sb2>button::before{height:1px;background:rgba(246,242,234,.5)}
body.rg .nv-navi[data-stil="1"] .sb2>button.past::before{background:rgba(255,255,255,.95)}
body.rg .nv-navi[data-stil="1"] .sb2>button.cur::before{height:2px;background:rgba(246,242,234,.5)}
body.rg .nv-navi[data-stil="1"] .sb2>button.cur::after{height:2px}
body.rg .nv-navi[data-stil="1"] .ag-b{font:400 10.5px/1 "DM Mono",ui-monospace,monospace;letter-spacing:.3em}
body.rg .nv-navi[data-stil="1"] .hb,body.rg .nv-navi[data-stil="1"] .hb::before,body.rg .nv-navi[data-stil="1"] .hb::after{height:1px}
/* 2 Kraeftig: kurze, kraeftige Pfeile, Striche 3 px (aktiv 5 px), Inter mittelfett in Versalien */
body.rg .nv-navi[data-stil="2"] .la{width:40px;height:12px}
body.rg .nv-navi[data-stil="2"] .la path{stroke-width:2.2;vector-effect:non-scaling-stroke}
body.rg .nv-navi[data-stil="2"] .ag-nm .nm{font:500 14px/1 Inter,system-ui,sans-serif;letter-spacing:.24em;text-indent:.24em;text-transform:uppercase}
body.rg .nv-navi[data-stil="2"] .sb2{gap:5px}
body.rg .nv-navi[data-stil="2"] .sb2>button::before{height:3px;background:rgba(246,242,234,.4)}
body.rg .nv-navi[data-stil="2"] .sb2>button.past::before{background:#fff}
body.rg .nv-navi[data-stil="2"] .sb2>button.cur::before{height:5px;background:rgba(246,242,234,.4)}
body.rg .nv-navi[data-stil="2"] .sb2>button.cur::after{height:5px}
body.rg .nv-navi[data-stil="2"] .ag-b{font:500 11px/1 Inter,system-ui,sans-serif;letter-spacing:.22em}
body.rg .nv-navi[data-stil="2"] .hb,body.rg .nv-navi[data-stil="2"] .hb::before,body.rg .nv-navi[data-stil="2"] .hb::after{height:2px}
/* 3 Editorial: Pfeile 1,4 px, Striche 2 px (aktiv 3 px), Name als Serife (Cormorant, kursiv) ueber Mono-Bedienung */
body.rg .nv-navi[data-stil="3"] .la{width:60px;height:12px}
body.rg .nv-navi[data-stil="3"] .la path{stroke-width:1.4;vector-effect:non-scaling-stroke}
body.rg .nv-navi[data-stil="3"] .ag-nm .nm{font:italic 400 28px/1 "Cormorant Garamond",Georgia,serif;letter-spacing:0;text-transform:none}
body.rg .nv-navi[data-stil="3"] .sb2{gap:4px}
body.rg .nv-navi[data-stil="3"] .sb2>button::before{height:2px;background:rgba(246,242,234,.45)}
body.rg .nv-navi[data-stil="3"] .sb2>button.cur::before{height:3px;background:rgba(246,242,234,.45)}
body.rg .nv-navi[data-stil="3"] .sb2>button.cur::after{height:3px}
body.rg .nv-navi[data-stil="3"] .ag-b{font:400 11px/1 "DM Mono",ui-monospace,monospace;letter-spacing:.22em}
/* 4 Zaehler: ohne Pfeile. Oben der Name, darunter links Details und Menue, rechts die Fotonummer, ganz unten die Striche (2 px, aktiv 4 px) */
body.rg .nv-navi .zz{display:none}
body.rg .nv-navi[data-stil="4"] .u{display:flex;flex-direction:column}
body.rg .nv-navi[data-stil="4"] .ag-nm{order:1;height:auto;justify-content:flex-start;margin:0 0 4px}
body.rg .nv-navi[data-stil="4"] .ag-nm>a{display:none}
body.rg .nv-navi[data-stil="4"] .ag-nm .nm{flex:none;margin:0;text-align:left;font:400 15px/1 "DM Mono",ui-monospace,monospace;letter-spacing:.3em;text-transform:uppercase}
body.rg .nv-navi[data-stil="4"] .ag-ak{order:2;justify-content:flex-start;gap:28px}
body.rg .nv-navi[data-stil="4"] .ag-b{font:400 11px/1 "DM Mono",ui-monospace,monospace;letter-spacing:.24em;padding:0}
body.rg .nv-navi[data-stil="4"] .ag-ak{position:relative}
body.rg .nv-navi[data-stil="4"] .ag-ak .ag-b:nth-of-type(2){position:absolute;left:50%;top:0;bottom:0;transform:translateX(-50%)}
@media (min-width:761px){body.rg .nv-navi[data-stil="4"] .u{--w:max(380px,min(520px,calc(100vw - 2 * var(--navL))))}}
body.rg .nv-navi[data-stil="4"] .zz{display:block;margin-left:auto;font:400 12px/1 "DM Mono",ui-monospace,monospace;letter-spacing:.16em;color:#F6F2EA;text-shadow:0 0 3px rgba(20,16,12,.6),0 1px 14px rgba(20,16,12,.55)}
body.rg .nv-navi[data-stil="4"] .sb2{order:3;gap:6px;margin:4px 0 0}
body.rg .nv-navi[data-stil="4"] .sb2>button::before{height:2px;background:rgba(246,242,234,.45)}
body.rg .nv-navi[data-stil="4"] .sb2>button.past::before{background:rgba(255,255,255,.95)}
body.rg .nv-navi[data-stil="4"] .sb2>button.cur::before{height:4px;background:rgba(246,242,234,.45)}
body.rg .nv-navi[data-stil="4"] .sb2>button.cur::after{height:4px}
/* 5 Zwei Linien: eine Schriftzeile (Name, Details, Menue, Fotonummer), darunter die gestrichelte Linie */
body.rg .nv-navi[data-stil="5"] .u{display:grid;grid-template-columns:repeat(4,auto);justify-content:space-between;align-items:center;column-gap:4px}
body.rg .nv-navi[data-stil="5"] .ag-nm,body.rg .nv-navi[data-stil="5"] .ag-ak{display:contents}
body.rg .nv-navi[data-stil="5"] .ag-nm>a{display:none}
body.rg .nv-navi[data-stil="5"] .ag-nm .nm{flex:none;margin:0;text-align:left;font:400 14px/1 "DM Mono",ui-monospace,monospace;letter-spacing:.06em;text-transform:uppercase;white-space:nowrap}
body.rg .nv-navi[data-stil="5"] .ag-b[data-nv="liste"]{gap:9px}
body.rg .nv-navi[data-stil="5"] .ag-b{gap:6px;min-height:44px;padding:0;font:400 12.5px/1 "DM Mono",ui-monospace,monospace;letter-spacing:.06em;white-space:nowrap}
body.rg .nv-navi[data-stil="5"] .ag-b span{white-space:nowrap}
body.rg .nv-navi[data-stil="5"] .ag-b span[aria-hidden]{font-size:19px;line-height:1}
body.rg .nv-navi[data-stil="5"] .zz{display:inline-flex;align-items:center;gap:2px;font:400 14px/1 "DM Mono",ui-monospace,monospace;letter-spacing:.06em;color:#F6F2EA;text-shadow:0 0 3px rgba(20,16,12,.6),0 1px 14px rgba(20,16,12,.55)}
body.rg .nv-navi[data-stil="5"] .zz a{min-width:22px;min-height:44px;padding:0;color:inherit;text-shadow:none;gap:0}
body.rg .nv-navi[data-stil="5"] .zz .la{display:block;width:13px;height:8px;overflow:visible;transition:transform .5s var(--gl-aus,cubic-bezier(.23,1,.32,1))}
body.rg .nv-navi[data-stil="5"] .zz .la path{stroke-width:1.2;vector-effect:non-scaling-stroke}
body.rg .nv-navi[data-stil="5"] .zz a:first-child{margin-right:5px}
@media (hover:hover) and (pointer:fine){body.rg .nv-navi[data-stil="5"] .zz a:first-child:hover .la{transform:translateX(-3px)}body.rg .nv-navi[data-stil="5"] .zz a:last-child:hover .la{transform:translateX(3px)}}
body.rg .nv-navi[data-stil="5"] .hb,body.rg .nv-navi[data-stil="5"] .hb::before,body.rg .nv-navi[data-stil="5"] .hb::after{width:12px}
body.rg .nv-navi[data-stil="5"] .hb::before{top:-4px}
body.rg .nv-navi[data-stil="5"] .hb::after{top:4px}
body.rg .nv-navi[data-stil="5"] .sb2{order:5;grid-column:1/-1;gap:6px;margin:0}
body.rg .nv-navi[data-stil="5"] .sb2>button::before{height:2px;background:rgba(246,242,234,.45)}
body.rg .nv-navi[data-stil="5"] .sb2>button.past::before{background:rgba(255,255,255,.95)}
body.rg .nv-navi[data-stil="5"] .sb2>button.cur::before{height:4px;background:rgba(246,242,234,.45)}
body.rg .nv-navi[data-stil="5"] .sb2>button.cur::after{height:4px}
@media (min-width:761px){body.rg .nv-navi[data-stil="5"] .u{--w:max(380px,min(520px,calc(100vw - 2 * var(--navL))))}}
@media (min-width:761px){
  body.rg .nv-navi[data-stil="1"] .ag-nm .nm{font-size:15px}
  body.rg .nv-navi[data-stil="2"] .ag-nm .nm{font-size:14px}
  body.rg .nv-navi[data-stil="3"] .ag-nm .nm{font-size:28px}
}

body.rg .nv-navi .ts{display:none}
/* 6 Pfeile mit Zeichen: Name oben, links und rechts die Pfeile, in der Mitte Menue-Zeichen / Details-Pfeil, darunter die Striche */
body.rg .nv-navi[data-stil="6"] .u{display:grid;grid-template-columns:auto 1fr auto;align-items:center}
body.rg .nv-navi[data-stil="6"] .ag-nm{display:contents}
body.rg .nv-navi[data-stil="6"] .ag-nm .nm{grid-area:1/1/2/4;flex:none;margin:0 0 4px;text-align:center;font:400 13.5px/1 "DM Mono",ui-monospace,monospace;letter-spacing:.2em;text-transform:uppercase}
body.rg .nv-navi[data-stil="6"] .ag-nm>a:first-child{grid-area:2/1}
body.rg .nv-navi[data-stil="6"] .ag-nm>a:last-child{grid-area:2/3}
body.rg .nv-navi[data-stil="6"] .la{width:60px;height:12px}
body.rg .nv-navi[data-stil="6"] .la path{stroke-width:1.4;vector-effect:non-scaling-stroke}
body.rg .nv-navi[data-stil="6"] .ag-ak{grid-area:2/2;display:flex;justify-content:center;align-items:center;gap:14px}
body.rg .nv-navi[data-stil="6"] .ag-ak::before{content:"";order:1;flex:none;width:2px;height:22px;background:rgba(246,242,234,.7)}
body.rg .nv-navi[data-stil="6"] .ag-b[data-nv="liste"]{order:0;font-size:0}
body.rg .nv-navi[data-stil="6"] .ag-b[data-nv="det"]{order:2;font-size:0}
body.rg .nv-navi[data-stil="6"] .ag-b .m1,body.rg .nv-navi[data-stil="6"] .ag-b .m2{display:none}
body.rg .nv-navi[data-stil="6"] .ag-b .w1,body.rg .nv-navi[data-stil="6"] .ag-b .w2{font-size:0}
body.rg .nv-navi[data-stil="6"] .ag-b[data-nv="det"] span[aria-hidden]{font-size:22px;line-height:1}
body.rg .nv-navi[data-stil="6"][data-liste="true"] .ag-b[data-nv="liste"]::before{content:"\2715";font:300 20px/1 Inter,system-ui,sans-serif}
body.rg .nv-navi[data-stil="6"] .zz{display:none}
body.rg .nv-navi[data-stil="6"] .sb2{grid-area:3/1/4/4;gap:6px;margin:4px 0 0}
body.rg .nv-navi[data-stil="6"] .sb2>button::before{height:2px;background:rgba(246,242,234,.45)}
body.rg .nv-navi[data-stil="6"] .sb2>button.past::before{background:rgba(255,255,255,.95)}
body.rg .nv-navi[data-stil="6"] .sb2>button.cur::before{height:3px;background:rgba(246,242,234,.45)}
body.rg .nv-navi[data-stil="6"] .sb2>button.cur::after{height:3px}
/* 7 Zwei Linien mit Zahlenskala: wie 5, statt der Striche eine Skala mit Teilstrichen und Nummern */
body.rg .nv-navi[data-stil="7"] .u{display:grid;grid-template-columns:repeat(4,auto);justify-content:space-between;align-items:center;column-gap:4px}
body.rg .nv-navi[data-stil="7"] .ag-nm,body.rg .nv-navi[data-stil="7"] .ag-ak{display:contents}
body.rg .nv-navi[data-stil="7"] .ag-nm>a{display:none}
body.rg .nv-navi[data-stil="7"] .ag-nm .nm{flex:none;margin:0;text-align:left;font:400 12px/1 "DM Mono",ui-monospace,monospace;letter-spacing:.06em;text-transform:uppercase;white-space:nowrap}
body.rg .nv-navi[data-stil="7"] .ag-b[data-nv="liste"]{gap:9px}
body.rg .nv-navi[data-stil="7"] .ag-b{gap:6px;min-height:44px;padding:0;font:400 10.5px/1 "DM Mono",ui-monospace,monospace;letter-spacing:.06em;white-space:nowrap}
body.rg .nv-navi[data-stil="7"] .ag-b span{white-space:nowrap}
body.rg .nv-navi[data-stil="7"] .ag-b span[aria-hidden]{font-size:17px;line-height:1}
body.rg .nv-navi[data-stil="7"] .zz{display:inline-flex;align-items:center;gap:2px;font:400 12px/1 "DM Mono",ui-monospace,monospace;letter-spacing:.06em;color:#F6F2EA;text-shadow:0 0 3px rgba(20,16,12,.6),0 1px 14px rgba(20,16,12,.55)}
body.rg .nv-navi[data-stil="7"] .zz a{min-width:22px;min-height:44px;padding:0;color:inherit;text-shadow:none;gap:0}
body.rg .nv-navi[data-stil="7"] .zz .la{display:block;width:13px;height:8px;overflow:visible;transition:transform .5s var(--gl-aus,cubic-bezier(.23,1,.32,1))}
body.rg .nv-navi[data-stil="7"] .zz .la path{stroke-width:1.2;vector-effect:non-scaling-stroke}
body.rg .nv-navi[data-stil="7"] .zz a:first-child{margin-right:5px}
@media (hover:hover) and (pointer:fine){body.rg .nv-navi[data-stil="7"] .zz a:first-child:hover .la{transform:translateX(-3px)}body.rg .nv-navi[data-stil="7"] .zz a:last-child:hover .la{transform:translateX(3px)}}
body.rg .nv-navi[data-stil="7"] .hb,body.rg .nv-navi[data-stil="7"] .hb::before,body.rg .nv-navi[data-stil="7"] .hb::after{width:12px}
body.rg .nv-navi[data-stil="7"] .hb::before{top:-4px}
body.rg .nv-navi[data-stil="7"] .hb::after{top:4px}
body.rg .nv-navi[data-stil="7"] .sb2{order:5;grid-column:1/-1;gap:6px;margin:0}
body.rg .nv-navi[data-stil="7"] .sb2>button::before{height:2px;background:rgba(246,242,234,.45)}
body.rg .nv-navi[data-stil="7"] .sb2>button.past::before{background:rgba(255,255,255,.95)}
body.rg .nv-navi[data-stil="7"] .sb2>button.cur::before{height:4px;background:rgba(246,242,234,.45)}
body.rg .nv-navi[data-stil="7"] .sb2>button.cur::after{height:4px}
@media (min-width:761px){body.rg .nv-navi[data-stil="7"] .u{--w:max(380px,min(520px,calc(100vw - 2 * var(--navL))))}}

body.rg .nv-navi[data-stil="7"] .sb2{display:none}
body.rg .nv-navi[data-stil="7"] .ts{order:5;grid-column:1/-1;display:grid;height:42px;pointer-events:auto;margin-top:2px}
body.rg .nv-navi[data-stil="7"] .ts>button{position:relative;min-width:0;min-height:0;height:42px;padding:0;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:7px;text-shadow:0 0 3px rgba(20,16,12,.6),0 1px 12px rgba(20,16,12,.55)}
body.rg .nv-navi[data-stil="7"] .ts>button::before{content:"";position:absolute;left:0;right:0;top:9px;height:1px;background:rgba(246,242,234,.5);box-shadow:0 0 6px rgba(20,16,12,.5)}
body.rg .nv-navi[data-stil="7"] .ts>button.past::before{background:#fff}
body.rg .nv-navi[data-stil="7"] .ts>button.cur::before{height:3px;top:8px;background:rgba(246,242,234,.45)}
body.rg .nv-navi[data-stil="7"] .ts>button.cur::after{content:"";position:absolute;left:0;top:8px;width:100%;height:3px;background:#fff;transform-origin:0 0;transform:scaleX(0);animation:aafill 6s linear forwards}
body.rg .nv-navi[data-stil="7"] .ts .tt{position:relative;display:block;width:1px;height:6px;margin-top:6px;background:rgba(246,242,234,.65)}
body.rg .nv-navi[data-stil="7"] .ts .tn{font:400 11px/1 "DM Mono",ui-monospace,monospace;letter-spacing:.08em;opacity:.7}
body.rg .nv-navi[data-stil="7"] .ts>button.cur .tn{opacity:1}
@media (prefers-reduced-motion:reduce){body.rg .nv-navi[data-stil="7"] .ts>button.cur::after{animation:none;transform:none}}
@media (min-width:761px){body.rg .nv-navi[data-stil="6"] .u{--w:max(380px,min(520px,calc(100vw - 2 * var(--navL))))}}
/* 8 Pfeile, Zeichen, Striche: Name oben, links und rechts die Pfeile, in der Mitte Menue-Zeichen / Details-Pfeil, darunter die Striche */
body.rg .nv-navi[data-stil="8"] .u{display:grid;grid-template-columns:auto 1fr auto;align-items:center}
body.rg .nv-navi[data-stil="8"] .ag-nm{display:contents}
body.rg .nv-navi[data-stil="8"] .ag-nm .nm{grid-area:1/1/2/4;flex:none;margin:0 0 4px;text-align:center;font:400 13.5px/1 "DM Mono",ui-monospace,monospace;letter-spacing:.2em;text-transform:uppercase}
body.rg .nv-navi[data-stil="8"] .ag-nm>a:first-child{grid-area:2/1}
body.rg .nv-navi[data-stil="8"] .ag-nm>a:last-child{grid-area:2/3}
body.rg .nv-navi[data-stil="8"] .la{width:60px;height:12px}
body.rg .nv-navi[data-stil="8"] .la path{stroke-width:1.4;vector-effect:non-scaling-stroke}
body.rg .nv-navi[data-stil="8"] .ag-ak{grid-area:2/2;display:flex;justify-content:center;align-items:center;gap:14px}
body.rg .nv-navi[data-stil="8"] .ag-ak::before{content:"";order:1;flex:none;width:2px;height:22px;background:rgba(246,242,234,.7)}
body.rg .nv-navi[data-stil="8"] .ag-b[data-nv="liste"]{order:0;font-size:0}
body.rg .nv-navi[data-stil="8"] .ag-b[data-nv="det"]{order:2;font-size:0}
body.rg .nv-navi[data-stil="8"] .ag-b .m1,body.rg .nv-navi[data-stil="8"] .ag-b .m2{display:none}
body.rg .nv-navi[data-stil="8"] .ag-b .w1,body.rg .nv-navi[data-stil="8"] .ag-b .w2{font-size:0}
body.rg .nv-navi[data-stil="8"] .ag-b[data-nv="det"] span[aria-hidden]{font-size:22px;line-height:1}
body.rg .nv-navi[data-stil="8"][data-liste="true"] .ag-b[data-nv="liste"]::before{content:"\2715";font:300 20px/1 Inter,system-ui,sans-serif}
body.rg .nv-navi[data-stil="8"] .zz{display:none}
body.rg .nv-navi[data-stil="8"] .sb2{grid-area:3/1/4/4;gap:6px;margin:4px 0 0}
body.rg .nv-navi[data-stil="8"] .sb2>button::before{height:2px;background:rgba(246,242,234,.45)}
body.rg .nv-navi[data-stil="8"] .sb2>button.past::before{background:rgba(255,255,255,.95)}
body.rg .nv-navi[data-stil="8"] .sb2>button.cur::before{height:3px;background:rgba(246,242,234,.45)}
body.rg .nv-navi[data-stil="8"] .sb2>button.cur::after{height:3px}

body.rg .nv-navi[data-stil="8"] .ag-nm .nm{display:none}
body.rg .nv-navi[data-stil="8"] .ag-b[data-nv="det"]{position:relative;width:44px;height:44px;padding:0}
body.rg .nv-navi[data-stil="8"] .ag-b[data-nv="det"] span{display:none}
body.rg .nv-navi[data-stil="8"] .ag-b[data-nv="det"]::before,body.rg .nv-navi[data-stil="8"] .ag-b[data-nv="det"]::after{content:"";position:absolute;left:50%;top:50%;width:18px;height:1.5px;background:currentColor;box-shadow:0 0 6px rgba(20,16,12,.5);transform:translate(-50%,-50%);transition:transform .6s var(--gl-aus,cubic-bezier(.23,1,.32,1))}
body.rg .nv-navi[data-stil="8"] .ag-b[data-nv="det"]::after{transform:translate(-50%,-50%) rotate(90deg)}
body.rg .nv-navi[data-stil="8"][data-karte="true"] .ag-b[data-nv="det"]::before{transform:translate(-50%,-50%) rotate(45deg)}
body.rg .nv-navi[data-stil="8"][data-karte="true"] .ag-b[data-nv="det"]::after{transform:translate(-50%,-50%) rotate(-45deg)}
@media (min-width:761px){body.rg .nv-navi[data-stil="8"] .u{--w:max(380px,min(520px,calc(100vw - 2 * var(--navL))))}}
@media (prefers-reduced-motion:reduce){body.rg .nv-navi[data-stil="8"] .ag-b[data-nv="det"]::before,body.rg .nv-navi[data-stil="8"] .ag-b[data-nv="det"]::after{transition:none}}
body.rg .nv-navi[data-stil="9"] .ag-b[data-nv="det"]{position:relative;width:44px;height:44px;padding:0}
body.rg .nv-navi[data-stil="9"] .ag-b[data-nv="det"] span{display:none}
body.rg .nv-navi[data-stil="9"] .ag-b[data-nv="det"]::before,body.rg .nv-navi[data-stil="9"] .ag-b[data-nv="det"]::after{content:"";position:absolute;left:50%;top:50%;width:18px;height:1.5px;background:currentColor;box-shadow:0 0 6px rgba(20,16,12,.5);transform:translate(-50%,-50%);transition:transform .6s var(--gl-aus,cubic-bezier(.23,1,.32,1))}
body.rg .nv-navi[data-stil="9"] .ag-b[data-nv="det"]::after{transform:translate(-50%,-50%) rotate(90deg)}
body.rg .nv-navi[data-stil="9"][data-karte="true"] .ag-b[data-nv="det"]::before{transform:translate(-50%,-50%) rotate(45deg)}
body.rg .nv-navi[data-stil="9"][data-karte="true"] .ag-b[data-nv="det"]::after{transform:translate(-50%,-50%) rotate(-45deg)}
@media (min-width:761px){body.rg .nv-navi[data-stil="9"] .u{--w:max(380px,min(520px,calc(100vw - 2 * var(--navL))))}}
@media (prefers-reduced-motion:reduce){body.rg .nv-navi[data-stil="9"] .ag-b[data-nv="det"]::before,body.rg .nv-navi[data-stil="9"] .ag-b[data-nv="det"]::after{transition:none}}

body.rg .nv-navi[data-stil="9"] .u{display:grid;grid-template-columns:auto 1fr auto 1fr auto;align-items:center;column-gap:0}
body.rg .nv-navi[data-stil="9"] .ag-nm,body.rg .nv-navi[data-stil="9"] .ag-ak{display:contents}
body.rg .nv-navi[data-stil="9"] .ag-nm>a:first-child{grid-area:1/1}
body.rg .nv-navi[data-stil="9"] .ag-b[data-nv="liste"]{grid-area:1/2;justify-self:center;font-size:0;min-width:44px;justify-content:center;padding:0}
body.rg .nv-navi[data-stil="9"] .ag-nm .nm{grid-area:1/3;flex:none;margin:0;text-align:center;font:400 13px/1 "DM Mono",ui-monospace,monospace;letter-spacing:.16em;text-transform:uppercase;white-space:nowrap}
body.rg .nv-navi[data-stil="9"] .ag-b[data-nv="det"]{grid-area:1/4;justify-self:center}
body.rg .nv-navi[data-stil="9"] .ag-nm>a:last-child{grid-area:1/5}
body.rg .nv-navi[data-stil="9"] .ag-nm>a{min-width:44px;width:44px;padding:0}
body.rg .nv-navi[data-stil="9"] .la{width:44px;height:12px}
body.rg .nv-navi[data-stil="9"] .la path{stroke-width:1.4;vector-effect:non-scaling-stroke}
body.rg .nv-navi[data-stil="9"] .ag-b .m1,body.rg .nv-navi[data-stil="9"] .ag-b .m2{display:none}
body.rg .nv-navi[data-stil="9"][data-liste="true"] .ag-b[data-nv="liste"]::before{content:"\2715";font:300 20px/1 Inter,system-ui,sans-serif}
body.rg .nv-navi[data-stil="9"] .zz{display:none}
body.rg .nv-navi[data-stil="9"] .sb2{grid-area:2/1/3/6;gap:6px;margin:2px 0 0}
body.rg .nv-navi[data-stil="9"] .sb2>button::before{height:2px;background:rgba(246,242,234,.45)}
body.rg .nv-navi[data-stil="9"] .sb2>button.past::before{background:rgba(255,255,255,.95)}
body.rg .nv-navi[data-stil="9"] .sb2>button.cur::before{height:3px;background:rgba(246,242,234,.45)}
body.rg .nv-navi[data-stil="9"] .sb2>button.cur::after{height:3px}

/* 10 = Ansicht 7 (Michael 13.10.2026): von unten Strichleiste, darueber die Kategorie, oben Pfeil links, Menue | X in der Mitte, Pfeil rechts.
   Menue buendig zum Anfang, X buendig zum Ende des Namens (--kw misst navi.js). Trennstrich 2 px. */
body.rg .nv-navi .aa-x7{display:none}
body.rg .nv-navi[data-stil="10"] .aa-top,body.rg .nv-navi[data-stil="10"] .ts,body.rg .nv-navi[data-stil="10"] .zz,body.rg .nv-navi[data-stil="10"] .ag-b[data-nv="det"]{display:none}
body.rg .nv-navi[data-stil="10"] .u{display:grid;grid-template-columns:72px 1fr var(--kw,102px) 1fr 72px;grid-template-rows:44px 24px 24px;row-gap:8px;align-items:center}
body.rg .nv-navi[data-stil="10"] .ag-nm,body.rg .nv-navi[data-stil="10"] .ag-ak{display:contents}
body.rg .nv-navi[data-stil="10"] .ag-nm>a:first-child{grid-area:1/1;justify-self:start}
body.rg .nv-navi[data-stil="10"] .ag-nm>a:last-child{grid-area:1/5;justify-self:end}
body.rg .nv-navi[data-stil="10"] .la{width:48px;height:12px}
body.rg .nv-navi[data-stil="10"] .la path{stroke-width:1.4;vector-effect:non-scaling-stroke}
body.rg .nv-navi[data-stil="10"] .ag-nm .nm{grid-area:2/1/3/-1;justify-self:center;flex:none;margin:0;padding-left:.2em;font:400 13px/24px "DM Mono",ui-monospace,monospace;letter-spacing:.2em;text-transform:uppercase;white-space:nowrap}
body.rg .nv-navi[data-stil="10"] .ag-b[data-nv="liste"]{grid-area:1/3;justify-self:start;margin-left:-14px;padding:0 14px;min-height:44px}
body.rg .nv-navi[data-stil="10"] .ag-b[data-nv="liste"] .m1,body.rg .nv-navi[data-stil="10"] .ag-b[data-nv="liste"] .m2{display:none}
body.rg .nv-navi[data-stil="10"] .hb,body.rg .nv-navi[data-stil="10"] .hb::before,body.rg .nv-navi[data-stil="10"] .hb::after{width:16px;height:1.5px}
body.rg .nv-navi[data-stil="10"] .hb::before{top:-5px}
body.rg .nv-navi[data-stil="10"] .hb::after{top:5px}
body.rg .nv-navi[data-stil="10"] .aa-x7{display:flex;align-items:center;justify-content:center;grid-area:1/3;justify-self:end;position:relative;margin-right:-14px;padding:0 14px;min-height:44px;color:#F6F2EA;text-shadow:none}
body.rg .nv-navi[data-stil="10"] .aa-x7 svg{display:block;width:14px;height:14px;filter:drop-shadow(0 0 6px rgba(20,16,12,.55))}
body.rg .nv-navi[data-stil="10"] .aa-x7::before{content:"";position:absolute;top:50%;left:calc(28px - var(--kw,102px) / 2 - 1px);width:2px;height:22px;margin-top:-11px;background:rgba(246,242,234,.7)}
body.rg .nv-navi[data-stil="10"] .sb2{grid-area:3/1/4/-1;gap:8px}
body.rg .nv-navi[data-stil="10"] .sb2>button::before{height:2px;background:rgba(246,242,234,.45)}
body.rg .nv-navi[data-stil="10"] .sb2>button.past::before{background:rgba(255,255,255,.95)}
body.rg .nv-navi[data-stil="10"] .sb2>button.cur::before{height:3px;background:rgba(246,242,234,.45)}
body.rg .nv-navi[data-stil="10"] .sb2>button.cur::after{height:3px}
@media (min-width:761px){body.rg .nv-navi[data-stil="10"] .u{--w:max(380px,min(520px,calc(100vw - 2 * var(--navL))))}}

/* Ansicht 3 (Michael 13.10.2026): Pfeil hoch wird Plus (Information); Menue buendig zum M, Plus buendig zum D des Namens (--kw misst navi.js) */
body.rg .nv-navi[data-stil="6"] .ag-nm .nm{padding-left:.2em}
body.rg .nv-navi[data-stil="6"] .ag-ak{justify-self:center;justify-content:space-between;gap:0;width:var(--kw,102px)}
body.rg .nv-navi[data-stil="6"] .ag-b[data-nv="liste"],body.rg .nv-navi[data-stil="6"] .ag-b[data-nv="det"]{justify-content:center;width:44px;min-width:44px;height:44px;padding:0}
body.rg .nv-navi[data-stil="6"] .ag-b[data-nv="liste"]{margin-left:-15px}
body.rg .nv-navi[data-stil="6"] .ag-b[data-nv="det"]{position:relative;margin-right:-13px}
body.rg .nv-navi[data-stil="6"] .ag-b[data-nv="det"] span{display:none}
body.rg .nv-navi[data-stil="6"] .ag-b[data-nv="det"]::before,body.rg .nv-navi[data-stil="6"] .ag-b[data-nv="det"]::after{content:"";position:absolute;left:50%;top:50%;width:18px;height:1.5px;background:currentColor;box-shadow:0 0 6px rgba(20,16,12,.5);transform:translate(-50%,-50%);transition:transform .6s var(--gl-aus,cubic-bezier(.23,1,.32,1))}
body.rg .nv-navi[data-stil="6"] .ag-b[data-nv="det"]::after{transform:translate(-50%,-50%) rotate(90deg)}
body.rg .nv-navi[data-stil="6"][data-karte="true"] .ag-b[data-nv="det"]::before{transform:translate(-50%,-50%) rotate(45deg)}
body.rg .nv-navi[data-stil="6"][data-karte="true"] .ag-b[data-nv="det"]::after{transform:translate(-50%,-50%) rotate(-45deg)}
@media (prefers-reduced-motion:reduce){body.rg .nv-navi[data-stil="6"] .ag-b[data-nv="det"]::before,body.rg .nv-navi[data-stil="6"] .ag-b[data-nv="det"]::after{transition:none}}

/* 13.10.2026, Michael: "alles uebereinander und nebeneinander". Am Handy (350 px Breite) standen Zimmername, Details, Menue und Zaehler in EINER Reihe
   (zusammen ca. 370 px) und lagen ineinander. Jetzt zwei Reihen: Name links und Zaehler rechts, darunter Details links und Menue rechts,
   darunter die Fotoleiste. Gilt fuer Ansicht 5 und 7. */
@media (max-width:760px){
body.rg .nv-navi[data-stil="5"] .u,body.rg .nv-navi[data-stil="7"] .u{grid-template-columns:minmax(0,1fr) auto;column-gap:12px;justify-content:stretch}
body.rg .nv-navi[data-stil="5"] .ag-nm .nm,body.rg .nv-navi[data-stil="7"] .ag-nm .nm{grid-column:1;grid-row:1;justify-self:start}
body.rg .nv-navi[data-stil="5"] .zz,body.rg .nv-navi[data-stil="7"] .zz{grid-column:2;grid-row:1;justify-self:end}
body.rg .nv-navi[data-stil="5"] .ag-b[data-nv="det"],body.rg .nv-navi[data-stil="7"] .ag-b[data-nv="det"]{grid-column:1;grid-row:2;justify-self:start}
body.rg .nv-navi[data-stil="5"] .ag-b[data-nv="liste"],body.rg .nv-navi[data-stil="7"] .ag-b[data-nv="liste"]{grid-column:2;grid-row:2;justify-self:end}
body.rg .nv-navi[data-stil="5"] .sb2,body.rg .nv-navi[data-stil="7"] .sb2,body.rg .nv-navi[data-stil="7"] .ts{grid-row:3;grid-column:1/-1}
}

/* 13.10.2026, Michael: Details und Zimmerliste zugleich offen. Neben der offenen Karte bleiben nur 380 px fuer die Navigation (gemessen bei 1440 px);
   Name, Details, Menue und Zaehler lagen ineinander. Wie am Handy: Name und Zaehler oben, Details und Menue darunter, dann die Fotoleiste. */
@media (min-width:761px){
body.rg:has(.rg-karte[data-offen="true"]) .nv-navi[data-stil="5"] .u,body.rg:has(.rg-karte[data-offen="true"]) .nv-navi[data-stil="7"] .u{grid-template-columns:minmax(0,1fr) auto;column-gap:12px;justify-content:stretch}
body.rg:has(.rg-karte[data-offen="true"]) .nv-navi[data-stil="5"] .ag-nm .nm,body.rg:has(.rg-karte[data-offen="true"]) .nv-navi[data-stil="7"] .ag-nm .nm{grid-column:1;grid-row:1;justify-self:start}
body.rg:has(.rg-karte[data-offen="true"]) .nv-navi[data-stil="5"] .zz,body.rg:has(.rg-karte[data-offen="true"]) .nv-navi[data-stil="7"] .zz{grid-column:2;grid-row:1;justify-self:end}
body.rg:has(.rg-karte[data-offen="true"]) .nv-navi[data-stil="5"] .ag-b[data-nv="det"],body.rg:has(.rg-karte[data-offen="true"]) .nv-navi[data-stil="7"] .ag-b[data-nv="det"]{grid-column:1;grid-row:2;justify-self:start}
body.rg:has(.rg-karte[data-offen="true"]) .nv-navi[data-stil="5"] .ag-b[data-nv="liste"],body.rg:has(.rg-karte[data-offen="true"]) .nv-navi[data-stil="7"] .ag-b[data-nv="liste"]{grid-column:2;grid-row:2;justify-self:end}
body.rg:has(.rg-karte[data-offen="true"]) .nv-navi[data-stil="5"] .sb2,body.rg:has(.rg-karte[data-offen="true"]) .nv-navi[data-stil="7"] .sb2,body.rg:has(.rg-karte[data-offen="true"]) .nv-navi[data-stil="7"] .ts{grid-row:3;grid-column:1/-1}
}

/* 13.10.2026: bei 761 px Breite und offener Karte lief die Navigation ueber den rechten Rand (394..774). Nie breiter als der Rest neben der Karte. */
@media (min-width:761px){body.rg .nv-navi .u{max-width:calc(100vw - var(--navL) - 20px)}}

/* 13.10.2026: sehr schmale Telefone (320 px). Ansicht 6: Pfeile 40 px statt 56 px breit, damit sie nicht in die Knoepfe daneben ragen;
   Buchleiste: "Verfuegbarkeit pruefen" lief in das Chat-Symbol. */
@media (max-width:360px){
body.rg .nv-navi[data-stil="6"] .ag-nm a{min-width:40px}
}
@media (max-width:340px){body.rg .buchbar .buchtext{font-size:11px;letter-spacing:.07em;padding-left:10px;padding-right:10px}}


/* 15.10.2026, Michael: "Menue sieben mit Punkten: Pfeil links, Hamburger, abgerundeter Knopf mit dem Kategorietext in Inter, Plus,
   Pfeil rechts". Eine Reihe, darunter die Punkte der Fotos. Das X oben rechts bleibt, das untere X und die Beschriftungen entfallen.
   Zurueck: navi.css.vor-menue7-15102026 */
html body.rg .nv-navi[data-stil="10"] .aa-top{display:flex}
html body.rg .nv-navi[data-stil="10"] .aa-x7{display:none}
html body.rg .nv-navi[data-stil="10"] .u{display:grid;grid-template-columns:auto auto minmax(0,1fr) auto auto;column-gap:6px;grid-template-rows:48px 22px;row-gap:12px;align-items:center}
html body.rg .nv-navi[data-stil="10"] .ag-nm,html body.rg .nv-navi[data-stil="10"] .ag-ak{display:contents}
html body.rg .nv-navi[data-stil="10"] .ag-nm>a:first-child{grid-area:1/1;justify-self:start}
html body.rg .nv-navi[data-stil="10"] .ag-nm>a:last-child{grid-area:1/5;justify-self:end}
html body.rg .nv-navi[data-stil="10"] .ag-nm .la{width:40px;height:10px}
html body.rg .nv-navi[data-stil="10"] .ag-b[data-nv="liste"]{display:inline-flex;align-items:center;justify-content:center;grid-area:1/2;justify-self:center;margin:0;padding:0;min-width:48px;min-height:48px}
html body.rg .nv-navi[data-stil="10"] .ag-b[data-nv="det"]{display:inline-flex;align-items:center;justify-content:center;grid-area:1/4;justify-self:center;margin:0;padding:0;min-width:48px;min-height:48px;font:300 26px/1 Inter,system-ui,sans-serif;color:#F6F2EA}
html body.rg .nv-navi[data-stil="10"] .ag-b[data-nv="det"] .w1,html body.rg .nv-navi[data-stil="10"] .ag-b[data-nv="det"] .w2{display:none}
html body.rg .nv-navi[data-stil="10"] .ag-b[data-nv="det"]::before{content:"+";transform:translateY(-1px)}
html body.rg .nv-navi[data-stil="10"] .ag-nm .nm{display:inline-flex;align-items:center;justify-content:center;grid-area:1/3;grid-column:3;justify-self:center;margin:0;padding:0 22px;height:40px;
  font:500 13px/1 Inter,system-ui,sans-serif;letter-spacing:.01em;text-transform:none;white-space:nowrap;color:#F6F2EA;
  border:1px solid rgba(246,242,234,.55);border-radius:999px;background:rgba(246,242,234,.16);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);text-shadow:none}
/* Punkte statt Striche */
html body.rg .nv-navi[data-stil="10"] .sb2{grid-area:2/1/3/-1;justify-content:center;gap:0;height:22px}
html body.rg .nv-navi[data-stil="10"] .sb2>button{flex:0 0 22px;width:22px;height:22px;align-items:center;justify-content:center}
html body.rg .nv-navi[data-stil="10"] .sb2>button::before{width:7px;height:7px;border-radius:50%;background:rgba(246,242,234,.5);box-shadow:0 0 6px rgba(20,16,12,.45);transition:background-color .3s ease,transform .3s var(--kurve)}
html body.rg .nv-navi[data-stil="10"] .sb2>button.past::before{background:rgba(255,255,255,.95)}
html body.rg .nv-navi[data-stil="10"] .sb2>button.cur::before{height:7px;width:7px;background:#fff;transform:scale(1.5)}
html body.rg .nv-navi[data-stil="10"] .sb2>button.cur::after{display:none}
@media (hover:hover) and (pointer:fine){html body.rg .nv-navi[data-stil="10"] .sb2>button:hover::before{height:7px;background:#fff;transform:scale(1.3)}}


/* 15.10.2026, Michael: Menue 7 nach dem Foto: runde Glasknoepfe (Pfeil links, Hamburger), laenglicher Glasknopf mit dem Kategorienamen in Inter,
   Plus, runder Glasknopf Pfeil rechts; die Punkte stehen DARUEBER. KEINE Umrahmung um die Reihe (die Kapsel aus dem Foto bleibt weg).
   Zurueck: navi.css.vor-glas-15102026 */
html body.rg .nv-navi[data-stil="10"] .u{--kn:52px;--w:min(560px,calc(100vw - 32px));display:grid;grid-template-columns:auto auto minmax(0,1fr) auto auto;column-gap:10px;
  grid-template-rows:22px var(--kn);row-gap:16px;align-items:center}
html body.rg .nv-navi[data-stil="10"] .sb2{grid-area:1/1/2/-1;justify-content:center}
html body.rg .nv-navi[data-stil="10"] .ag-nm>a:first-child{grid-area:2/1}
html body.rg .nv-navi[data-stil="10"] .ag-b[data-nv="liste"]{grid-area:2/2}
html body.rg .nv-navi[data-stil="10"] .ag-nm .nm{grid-area:2/3;grid-column:3}
html body.rg .nv-navi[data-stil="10"] .ag-b[data-nv="det"]{grid-area:2/4}
html body.rg .nv-navi[data-stil="10"] .ag-nm>a:last-child{grid-area:2/5}
/* Glas */
html body.rg .nv-navi[data-stil="10"] .ag-nm>a,html body.rg .nv-navi[data-stil="10"] .ag-b[data-nv="liste"],html body.rg .nv-navi[data-stil="10"] .ag-b[data-nv="det"],html body.rg .nv-navi[data-stil="10"] .ag-nm .nm{
  box-sizing:border-box;min-width:var(--kn);min-height:var(--kn);height:var(--kn);border-radius:999px;padding:0;margin:0;display:inline-flex;align-items:center;justify-content:center;color:#fff;
  background:linear-gradient(150deg,rgba(255,255,255,.36),rgba(255,255,255,.12));-webkit-backdrop-filter:blur(14px) saturate(1.35);backdrop-filter:blur(14px) saturate(1.35);
  border:1px solid rgba(255,255,255,.55);text-shadow:none;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.65),inset 0 -10px 16px rgba(255,255,255,.06),0 12px 24px -12px rgba(20,16,12,.55);
  transition:background-color .25s ease,transform .2s cubic-bezier(.23,1,.32,1),box-shadow .25s ease}
html body.rg .nv-navi[data-stil="10"] .ag-nm>a,html body.rg .nv-navi[data-stil="10"] .ag-b{width:var(--kn)}
html body.rg .nv-navi[data-stil="10"] .ag-nm .nm{padding:0 26px;width:auto;min-width:0;max-width:100%;overflow:hidden;text-overflow:ellipsis;font:500 14px/1 Inter,system-ui,sans-serif;letter-spacing:.01em}
html body.rg .nv-navi[data-stil="10"] .ag-b[data-nv="det"]{font:300 28px/1 Inter,system-ui,sans-serif}
@media (hover:hover) and (pointer:fine){
  html body.rg .nv-navi[data-stil="10"] .ag-nm>a:hover,html body.rg .nv-navi[data-stil="10"] .ag-b:hover{background:linear-gradient(150deg,rgba(255,255,255,.5),rgba(255,255,255,.2))}
}
html body.rg .nv-navi[data-stil="10"] .ag-nm>a:active,html body.rg .nv-navi[data-stil="10"] .ag-b:active{transform:scale(.95)}
/* Pfeile als kleine Winkel (Chevron) */
html body.rg .nv-navi[data-stil="10"] .ag-nm .la{display:none}
html body.rg .nv-navi[data-stil="10"] .ag-nm>a::after{content:"";display:block;width:11px;height:11px;border-left:2px solid #fff;border-bottom:2px solid #fff;border-radius:1px}
html body.rg .nv-navi[data-stil="10"] .ag-nm>a:first-child::after{transform:translateX(2px) rotate(45deg)}
html body.rg .nv-navi[data-stil="10"] .ag-nm>a:last-child::after{transform:translateX(-2px) rotate(-135deg)}
html body.rg .nv-navi[data-stil="10"] .hb,html body.rg .nv-navi[data-stil="10"] .hb::before,html body.rg .nv-navi[data-stil="10"] .hb::after{width:18px;height:2px;border-radius:2px;box-shadow:none}
html body.rg .nv-navi[data-stil="10"] .hb::before{top:-6px}
html body.rg .nv-navi[data-stil="10"] .hb::after{top:6px}
html body.rg .nv-navi[data-stil="10"] .ag-b[data-nv="det"]::before{transform:translateY(-1px)}
/* Punkte etwas groesser, wie im Foto */
html body.rg .nv-navi[data-stil="10"] .sb2>button::before{width:9px;height:9px;background:rgba(246,242,234,.55)}
html body.rg .nv-navi[data-stil="10"] .sb2>button.past::before,html body.rg .nv-navi[data-stil="10"] .sb2>button.cur::before{background:#fff}
html body.rg .nv-navi[data-stil="10"] .sb2>button.cur::before{transform:scale(1.35)}
@media (max-width:760px){html body.rg .nv-navi[data-stil="10"] .u{--kn:46px;column-gap:8px}html body.rg .nv-navi[data-stil="10"] .ag-nm .nm{padding:0 16px;font-size:13px}}
@media (prefers-reduced-transparency:reduce){html body.rg .nv-navi[data-stil="10"] .ag-nm>a,html body.rg .nv-navi[data-stil="10"] .ag-b,html body.rg .nv-navi[data-stil="10"] .ag-nm .nm{-webkit-backdrop-filter:none;backdrop-filter:none;background:rgba(60,52,46,.72)}}

html body.rg .nv-navi[data-stil="10"] .ag-nm .nm{justify-self:stretch}

/* 16.10.2026, Michael: "Navigation nur so breit wie die Booking Bar, nicht hin und her geschoben, genau in der Mitte; mittlerer Balken kleiner;
   einmal mit braunem Glas". Breite = Buchungsleiste (496 px am Rechner, am Handy Rand 20 px), Mitte = Fenstermitte, auch bei offener Karte
   (die alte Verschiebung durch --navL entfaellt fuer diese Ansicht). Zurueck: navi.css.vor-braunglas-16102026 */
@media (min-width:761px){
  html body.rg .nv-navi[data-stil="10"] .u{--w:496px;width:496px;max-width:none;left:calc(50vw - 248px);right:auto}
}
html body.rg .nv-navi[data-stil="10"] .u{--kn:46px;column-gap:8px}
html body.rg .nv-navi[data-stil="10"] .ag-nm .nm{justify-self:center;width:auto;max-width:180px;height:40px;min-height:40px;padding:0 18px;font-size:13px}
html body.rg .nv-navi[data-stil="10"] .ag-nm>a,html body.rg .nv-navi[data-stil="10"] .ag-b[data-nv="liste"],html body.rg .nv-navi[data-stil="10"] .ag-b[data-nv="det"],html body.rg .nv-navi[data-stil="10"] .ag-nm .nm{
  background:linear-gradient(150deg,rgba(138,102,76,.62),rgba(78,56,42,.50));
  -webkit-backdrop-filter:blur(14px) saturate(1.25);backdrop-filter:blur(14px) saturate(1.25);
  border:1px solid rgba(222,190,160,.50);
  box-shadow:inset 0 1px 0 rgba(235,205,175,.55),inset 0 -10px 16px rgba(60,40,28,.18),0 12px 24px -12px rgba(30,20,14,.6)}
@media (hover:hover) and (pointer:fine){
  html body.rg .nv-navi[data-stil="10"] .ag-nm>a:hover,html body.rg .nv-navi[data-stil="10"] .ag-b:hover{background:linear-gradient(150deg,rgba(158,118,88,.72),rgba(94,68,50,.58))}
}
@media (prefers-reduced-transparency:reduce){html body.rg .nv-navi[data-stil="10"] .ag-nm>a,html body.rg .nv-navi[data-stil="10"] .ag-b,html body.rg .nv-navi[data-stil="10"] .ag-nm .nm{background:rgba(78,56,42,.92)}}

/* 16.10.2026, Michael: "die Symbole genau in der Mitte". Plus war ein Schriftzeichen (sass optisch tiefer/links): jetzt zwei Striche, exakt zentriert.
   Zurueck: navi.css.vor-mitte-16102026 */
html body.rg .nv-navi[data-stil="10"] .ag-b[data-nv="det"]{position:relative;font-size:0}
html body.rg .nv-navi[data-stil="10"] .ag-b[data-nv="det"]::before,html body.rg .nv-navi[data-stil="10"] .ag-b[data-nv="det"]::after{content:"";position:absolute;left:50%;top:50%;width:16px;height:2px;border-radius:1px;background:#fff;transform:translate(-50%,-50%)}
html body.rg .nv-navi[data-stil="10"] .ag-b[data-nv="det"]::after{transform:translate(-50%,-50%) rotate(90deg)}
html body.rg .nv-navi[data-stil="10"] .ag-b[data-nv="det"] .w1,html body.rg .nv-navi[data-stil="10"] .ag-b[data-nv="det"] .w2{display:none}

/* 16.10.2026, Michael: "Entferne die Punkte bei 7 beim Vollbild. Mach die Glasplatten wieder einfach nicht braun, aber etwas dunkler, also grau."
   Punkte (Fotoleiste) weg, Reihe rueckt nach oben; Glas neutral grau statt braun. Zurueck: navi.css.vor-grau-16102026 */
html body.rg .nv-navi[data-stil="10"] .sb2{display:none}
html body.rg .nv-navi[data-stil="10"] .u{grid-template-rows:0 var(--kn);row-gap:0}
html body.rg .nv-navi[data-stil="10"] .ag-nm>a,html body.rg .nv-navi[data-stil="10"] .ag-b[data-nv="liste"],html body.rg .nv-navi[data-stil="10"] .ag-b[data-nv="det"],html body.rg .nv-navi[data-stil="10"] .ag-nm .nm{
  background:linear-gradient(150deg,rgba(150,150,150,.46),rgba(62,62,62,.42));
  border:1px solid rgba(255,255,255,.42);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.45),inset 0 -10px 16px rgba(0,0,0,.10),0 12px 24px -12px rgba(0,0,0,.55)}
@media (hover:hover) and (pointer:fine){
  html body.rg .nv-navi[data-stil="10"] .ag-nm>a:hover,html body.rg .nv-navi[data-stil="10"] .ag-b:hover{background:linear-gradient(150deg,rgba(175,175,175,.55),rgba(80,80,80,.48))}
}
@media (prefers-reduced-transparency:reduce){html body.rg .nv-navi[data-stil="10"] .ag-nm>a,html body.rg .nv-navi[data-stil="10"] .ag-b,html body.rg .nv-navi[data-stil="10"] .ag-nm .nm{background:rgba(70,70,70,.92)}}

/* 16.10.2026, Michael: Variante "Hamburger, Name der Kategorie und Plus in EINEM Band, daneben nur noch Pfeil links und rechts" = Ansicht 8.
   Gleiche Glasplatten wie Ansicht 7; die drei Mittelteile sind eine Pille (Enden rund, innen zwei Haarlinien).
   Schalter: data-pille am Navigationselement (setzt alle-zimmer.js). Zurueck: navi.css.vor-pille-16102026 */
html body.rg .nv-navi[data-stil="10"][data-pille] .u{grid-template-columns:var(--kn) 56px minmax(0,1fr) 56px var(--kn);column-gap:10px}
html body.rg .nv-navi[data-stil="10"][data-pille] .ag-b[data-nv="liste"]{width:56px;min-width:56px;border-radius:999px 0 0 999px;border-right:0}
html body.rg .nv-navi[data-stil="10"][data-pille] .ag-b[data-nv="det"]{width:56px;min-width:56px;border-radius:0 999px 999px 0;border-left:0}
html body.rg .nv-navi[data-stil="10"][data-pille] .ag-nm .nm{justify-self:stretch;max-width:none;width:auto;border-radius:0;border-left:0;border-right:0;padding:0 12px;margin:0 -10px;
  box-shadow:inset 1px 0 0 rgba(255,255,255,.26),inset -1px 0 0 rgba(255,255,255,.26),inset 0 1px 0 rgba(255,255,255,.45),inset 0 -10px 16px rgba(0,0,0,.10),0 12px 24px -12px rgba(0,0,0,.55)}
html body.rg .nv-navi[data-stil="10"][data-pille] .ag-b[data-nv="liste"],html body.rg .nv-navi[data-stil="10"][data-pille] .ag-b[data-nv="det"],html body.rg .nv-navi[data-stil="10"][data-pille] .ag-nm .nm{height:var(--kn);min-height:var(--kn)}
@media (max-width:760px){html body.rg .nv-navi[data-stil="10"][data-pille] .u{grid-template-columns:var(--kn) 48px minmax(0,1fr) 48px var(--kn)}
  html body.rg .nv-navi[data-stil="10"][data-pille] .ag-b[data-nv="liste"],html body.rg .nv-navi[data-stil="10"][data-pille] .ag-b[data-nv="det"]{width:48px;min-width:48px}}

/* ---------- Ansicht 11, die Finale (Michael 21.10.2026) ----------
   "Nur noch eine Zeile": Name mit Pfeil hoch | Details +   ...   Pfeil 01 / 05 Pfeil. Mono wie in Michaels Bild,
   Strichleiste weg, Menueknopf weg (das X oben rechts fuehrt zurueck). Pop-up als dunkles Glasblatt. */
body.rg .nv-navi[data-stil="11"] .an-wahl,body.rg .nv-navi[data-stil="11"] .sb2,body.rg .nv-navi[data-stil="11"] .ts,
body.rg .nv-navi[data-stil="11"] .zz,body.rg .nv-navi[data-stil="11"] .aa-x7,body.rg .nv-navi[data-stil="11"] .ag-nm,
body.rg .nv-navi[data-stil="11"] .ag-b[data-nv="liste"]{display:none!important}
body.rg .nv-navi[data-stil="11"] .u{--w:min(680px,calc(100vw - 40px));display:flex;align-items:center;gap:0;height:44px;
  font:400 12px/1 "DM Mono",ui-monospace,monospace;letter-spacing:.2em;text-transform:uppercase}
body.rg .nv-navi[data-stil="11"] .ag-ak{display:contents}
body.rg .nv-navi[data-stil="11"] .kw{display:inline-flex;align-items:center;gap:12px;min-height:44px;padding:0 18px 0 0;font:inherit;letter-spacing:inherit;text-transform:inherit;white-space:nowrap;max-width:48vw}
body.rg .nv-navi[data-stil="11"] .kw .kw-n{overflow:hidden;text-overflow:ellipsis}
body.rg .nv-navi[data-stil="11"] .kw .kw-p{width:12px;height:12px;flex:none;transition:transform .35s cubic-bezier(.23,1,.32,1)}
body.rg .nv-navi[data-stil="11"][data-pop="true"] .kw .kw-p{transform:rotate(180deg)}
body.rg .nv-navi[data-stil="11"] .ag-b[data-nv="det"]{display:inline-flex;min-height:44px;padding:0 0 0 18px;border-left:1px solid rgba(246,242,234,.55);border-radius:0;
  font:inherit;letter-spacing:inherit;text-transform:inherit;background:none;box-shadow:none;width:auto;min-width:0;height:auto}
body.rg .nv-navi[data-stil="11"] .ag-b[data-nv="det"] .w1,body.rg .nv-navi[data-stil="11"] .ag-b[data-nv="det"] .w2{display:inline-flex;align-items:center;gap:10px}
body.rg .nv-navi[data-stil="11"] .ag-b[data-nv="det"]::before,body.rg .nv-navi[data-stil="11"] .ag-b[data-nv="det"]::after{display:none}
body.rg .nv-navi[data-stil="11"] .fz11{margin-left:auto;display:inline-flex;align-items:center;gap:14px}
body.rg .nv-navi[data-stil="11"] .fz11 .z{min-width:7ch;text-align:center;font:inherit;letter-spacing:.14em}
body.rg .nv-navi[data-stil="11"] .fz11 button{min-width:44px;min-height:44px;padding:0}
body.rg .nv-navi[data-stil="11"] .fz11 svg{width:32px;height:10px;display:block}
@media (max-width:760px){
  body.rg .nv-navi[data-stil="11"] .u{--w:calc(100vw - 32px);font-size:11px;letter-spacing:.16em}
  body.rg .nv-navi[data-stil="11"] .kw{gap:8px;padding-right:12px;max-width:44vw}
  body.rg .nv-navi[data-stil="11"] .ag-b[data-nv="det"]{padding-left:12px}
  body.rg .nv-navi[data-stil="11"] .fz11{gap:6px}
  body.rg .nv-navi[data-stil="11"] .fz11 svg{width:24px}
}
/* Pop-up */
body.rg .kw-pop{position:fixed;inset:0;z-index:40;display:flex;align-items:flex-end;justify-content:center;background:rgba(20,16,12,.45);
  -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);animation:kw-ein .3s ease}
body.rg .kw-pop[hidden]{display:none}
@keyframes kw-ein{from{opacity:0}to{opacity:1}}
@keyframes kw-hoch{from{transform:translateY(24px);opacity:0}to{transform:none;opacity:1}}
body.rg .kw-blatt{box-sizing:border-box;width:min(760px,100vw);max-height:min(82vh,760px);overflow:auto;overscroll-behavior:contain;padding:22px 24px calc(24px + env(safe-area-inset-bottom));
  border-radius:22px 22px 0 0;color:#F6F2EA;background:rgba(46,41,38,.90);border:1px solid rgba(255,255,255,.14);border-bottom:0;
  box-shadow:0 -20px 60px rgba(20,16,12,.45);animation:kw-hoch .45s cubic-bezier(.23,1,.32,1);-webkit-font-smoothing:antialiased}
@media (min-width:761px){body.rg .kw-pop{align-items:center}body.rg .kw-blatt{border-radius:22px;border-bottom:1px solid rgba(255,255,255,.14);padding-bottom:28px;width:min(760px,calc(100vw - 40px))}}
body.rg .kw-kopf{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
body.rg .kw-et{font:400 11px/1 "DM Mono",ui-monospace,monospace;letter-spacing:.2em;text-transform:uppercase;color:rgba(246,242,234,.6)}
body.rg .kw-et2{margin:26px 0 12px}
body.rg .kw-zu{all:unset;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;margin:-10px -12px -10px 0;color:#F6F2EA;border-radius:50%}
body.rg .kw-zu svg{width:14px;height:14px}
body.rg .kw-zu:focus-visible{outline:2px solid #F6F2EA;outline-offset:2px}
body.rg .kw-kat{display:flex;flex-wrap:wrap;gap:8px 10px}
body.rg .kw-kat a{all:unset;cursor:pointer;box-sizing:border-box;display:inline-flex;align-items:center;gap:10px;min-height:40px;padding:0 16px;border-radius:999px;
  border:1px solid rgba(255,255,255,.22);font:400 12px/1 "DM Mono",ui-monospace,monospace;letter-spacing:.12em;text-transform:uppercase;color:#F6F2EA;white-space:nowrap;
  transition:background-color .2s ease,border-color .2s ease}
body.rg .kw-kat a i{font-style:normal;color:rgba(246,242,234,.55);font-size:10px}
body.rg .kw-kat a[aria-current="page"]{background:#F6F2EA;color:#2E2926;border-color:#F6F2EA}
body.rg .kw-kat a[aria-current="page"] i{color:rgba(46,41,38,.6)}
@media (hover:hover) and (pointer:fine){body.rg .kw-kat a:not([aria-current]):hover{background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.5)}}
body.rg .kw-kat a:focus-visible{outline:2px solid #F6F2EA;outline-offset:2px}
body.rg .kw-fotos{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
@media (min-width:761px){body.rg .kw-fotos{grid-template-columns:repeat(4,1fr);gap:10px}}
body.rg .kw-fotos button{all:unset;cursor:pointer;position:relative;display:block;aspect-ratio:4/3;overflow:hidden;border-radius:10px;outline-offset:2px}
body.rg .kw-fotos button img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .5s cubic-bezier(.23,1,.32,1),opacity .25s ease;opacity:.85}
body.rg .kw-fotos button span{position:absolute;left:8px;bottom:6px;font:400 10px/1 "DM Mono",ui-monospace,monospace;letter-spacing:.14em;color:#F6F2EA;text-shadow:0 1px 8px rgba(20,16,12,.7)}
body.rg .kw-fotos button[aria-current="true"]{box-shadow:inset 0 0 0 2px #F6F2EA}
body.rg .kw-fotos button[aria-current="true"] img{opacity:1}
@media (hover:hover) and (pointer:fine){body.rg .kw-fotos button:hover img{transform:scale(1.04);opacity:1}}
body.rg .kw-fotos button:focus-visible{outline:2px solid #F6F2EA}
@media (prefers-reduced-motion:reduce){body.rg .kw-pop,body.rg .kw-blatt{animation:none}}
/* Ansicht 11, Nachmessung am Handy (390 px): Name war abgeschnitten, "Details +" und "Schliessen" standen zugleich,
   der Zaehler brach um. Name waechst und kuerzt nur, wenn er muss; Zaehler bricht nie. */
body.rg .nv-navi[data-stil="11"] .kw{flex:1 1 auto;min-width:0;max-width:none}
body.rg .nv-navi[data-stil="11"] .kw .kw-n{flex:0 1 auto;min-width:0}
body.rg .nv-navi[data-stil="11"] .ag-b[data-nv="det"],body.rg .nv-navi[data-stil="11"] .fz11{flex:none}
body.rg .nv-navi[data-stil="11"] .fz11 .z{white-space:nowrap;min-width:0}
body.rg .nv-navi[data-stil="11"][data-karte="true"] .ag-b[data-nv="det"] .w1,
body.rg .nv-navi[data-stil="11"]:not([data-karte="true"]) .ag-b[data-nv="det"] .w2{display:none}
@media (max-width:760px){
  body.rg .nv-navi[data-stil="11"] .u{letter-spacing:.1em;font-size:11px}
  body.rg .nv-navi[data-stil="11"] .kw{max-width:none;gap:8px}
  body.rg .nv-navi[data-stil="11"] .fz11{gap:4px}
  body.rg .nv-navi[data-stil="11"] .fz11 button{min-width:36px}
  body.rg .nv-navi[data-stil="11"] .fz11 svg{width:22px}
}
/* Michael 21.10.2026: "Mach die Schrift gleich breit wie der Verfuegbarkeit-Knopf. Links Kategorie, Mitte Details,
   rechts Zahl mit Pfeilen. Keinen Strich dazwischen." Breite und Lage der Zeile setzt navi.js aus der Klebeleiste. */
html body.rg .nv-navi[data-stil="11"] .u{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;right:auto;max-width:none}
html body.rg .nv-navi[data-stil="11"] .kw{justify-self:start;padding:0}
html body.rg .nv-navi[data-stil="11"] .ag-b[data-nv="det"]{justify-self:center;padding:0;border-left:0}
html body.rg .nv-navi[data-stil="11"] .fz11{justify-self:end;margin-left:0}
html body.rg .nv-navi[data-stil="11"] .fz11 button:last-child{justify-content:flex-end;min-width:0;width:auto}
html body.rg .nv-navi[data-stil="11"] .fz11 button:first-child{justify-content:flex-start}

/* ---------- Pop-up, Kategorien als Bilder (Michael 21.10.2026: "nur die Bilder, darunter die Kategorie", Cereal in dunkel) ----------
   Drei Varianten ueber ?pop=a|b|c. a: Bogen, Hochformat 3:4 in einer wischbaren Reihe, Name in der Serife.
   b: Raster 4:3, Name in Mono klein. c: Blatt, grosse 4:5 zu zweit, Name gross mit Haarlinie. ?pop=0 = alte Pillen. */
body.rg .kw-pop:not([data-v="0"]) .kw-blatt{background:rgba(32,28,25,.94);padding-top:26px}
body.rg .kw-pop:not([data-v="0"]) .kw-kat{display:flex;gap:14px;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x proximity;
  -webkit-overflow-scrolling:touch;scrollbar-width:none;margin:0 -24px;padding:2px 24px 6px;flex-wrap:nowrap;touch-action:pan-x pan-y}
body.rg .kw-pop:not([data-v="0"]) .kw-kat::-webkit-scrollbar{display:none}
body.rg .kw-pop:not([data-v="0"]) .kw-kat a{all:unset;cursor:pointer;flex:0 0 auto;display:block;scroll-snap-align:start;color:#F6F2EA;border-radius:0}
body.rg .kw-pop:not([data-v="0"]) .kw-kat a .b{display:block;overflow:hidden;background:#2E2926}
body.rg .kw-pop:not([data-v="0"]) .kw-kat a .b img{display:block;width:100%;height:100%;object-fit:cover;opacity:.78;transition:opacity .35s ease,transform .6s cubic-bezier(.23,1,.32,1)}
body.rg .kw-pop:not([data-v="0"]) .kw-kat a[aria-current="page"] .b img,body.rg .kw-pop:not([data-v="0"]) .kw-kat a:hover .b img{opacity:1}
body.rg .kw-pop:not([data-v="0"]) .kw-kat a .n{display:block;margin-top:10px}
body.rg .kw-pop:not([data-v="0"]) .kw-kat a .n i{display:block;font:400 10px/1 "DM Mono",ui-monospace,monospace;letter-spacing:.2em;color:rgba(246,242,234,.5);margin-bottom:6px}
body.rg .kw-pop:not([data-v="0"]) .kw-kat a[aria-current="page"]{background:none;color:#F6F2EA}
body.rg .kw-pop:not([data-v="0"]) .kw-kat a[aria-current="page"] .n i{color:rgba(246,242,234,.5)}
body.rg .kw-pop:not([data-v="0"]) .kw-kat a[aria-current="page"] .b{box-shadow:inset 0 0 0 1px #F6F2EA}
body.rg .kw-pop:not([data-v="0"]) .kw-kat a:focus-visible{outline:1px solid #F6F2EA;outline-offset:4px}
body.rg .kw-pop:not([data-v="0"]) .kw-fotos{display:flex;gap:10px;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x proximity;scrollbar-width:none;margin:0 -24px;padding:0 24px 4px;touch-action:pan-x pan-y}
body.rg .kw-pop:not([data-v="0"]) .kw-fotos::-webkit-scrollbar{display:none}
body.rg .kw-pop:not([data-v="0"]) .kw-fotos button{flex:0 0 38%;scroll-snap-align:start;border-radius:0;aspect-ratio:4/3}
@media (min-width:761px){body.rg .kw-pop:not([data-v="0"]) .kw-fotos button{flex-basis:23%}}
body.rg .kw-pop:not([data-v="0"]) .kw-fotos button[aria-current="true"]{box-shadow:inset 0 0 0 1px #F6F2EA}
body.rg .kw-pop:not([data-v="0"]) .kw-et2{margin:30px 0 12px}
/* a: Bogen */
body.rg .kw-pop[data-v="a"] .kw-kat a{width:min(46vw,200px)}
body.rg .kw-pop[data-v="a"] .kw-kat a .b{aspect-ratio:3/4}
body.rg .kw-pop[data-v="a"] .kw-kat a .n{font:300 21px/1.15 "Cormorant Garamond",'Cormorant Ersatz',Georgia,serif;letter-spacing:.01em}
@media (min-width:761px){body.rg .kw-pop[data-v="a"] .kw-blatt{width:min(900px,calc(100vw - 40px))}body.rg .kw-pop[data-v="a"] .kw-kat a{width:180px}}
/* b: Raster */
body.rg .kw-pop[data-v="b"] .kw-kat{display:grid;grid-template-columns:repeat(3,1fr);gap:14px 10px;overflow:visible;margin:0;padding:0}
body.rg .kw-pop[data-v="b"] .kw-kat a .b{aspect-ratio:4/3}
body.rg .kw-pop[data-v="b"] .kw-kat a .n{font:400 10.5px/1.4 "DM Mono",ui-monospace,monospace;letter-spacing:.14em;text-transform:uppercase;margin-top:8px}
body.rg .kw-pop[data-v="b"] .kw-kat a .n i{display:inline;margin:0 8px 0 0}
@media (min-width:761px){body.rg .kw-pop[data-v="b"] .kw-blatt{width:min(900px,calc(100vw - 40px))}body.rg .kw-pop[data-v="b"] .kw-kat{grid-template-columns:repeat(4,1fr);gap:18px 14px}}
/* c: Blatt */
body.rg .kw-pop[data-v="c"] .kw-kat{gap:18px}
body.rg .kw-pop[data-v="c"] .kw-kat a{width:min(62vw,260px)}
body.rg .kw-pop[data-v="c"] .kw-kat a .b{aspect-ratio:4/5}
body.rg .kw-pop[data-v="c"] .kw-kat a .n{font:300 26px/1.1 "Cormorant Garamond",'Cormorant Ersatz',Georgia,serif;letter-spacing:0;padding:12px 0 0;border-top:1px solid rgba(246,242,234,.28);margin-top:12px}
body.rg .kw-pop[data-v="c"] .kw-kat a .n i{margin-bottom:8px}
body.rg .kw-pop[data-v="c"] .kw-kopf .kw-et{font-size:12px;letter-spacing:.26em}
@media (min-width:761px){body.rg .kw-pop[data-v="c"] .kw-blatt{width:min(1000px,calc(100vw - 40px))}body.rg .kw-pop[data-v="c"] .kw-kat a{width:230px}}
/* Nachmessung 21.10.2026: das Einrasten zog das erste Bild unter den Rand (scroll-snap ohne scroll-padding). */
body.rg .kw-pop:not([data-v="0"]) .kw-kat,body.rg .kw-pop:not([data-v="0"]) .kw-fotos{scroll-padding-left:24px;scroll-padding-right:24px}
/* Schliessen-Pfeil = Kategorie-Pfeil, um 180 Grad gedreht (Michael 21.10.2026) */
body.rg .nv-navi[data-stil="11"] .ag-b[data-nv="det"] .kw-ab{width:12px;height:12px;flex:none;transform:rotate(180deg)}
body.rg .nv-navi[data-stil="11"] .ag-b[data-nv="det"] .kw-plus{width:12px;height:12px;flex:none}
/* Michael 21.10.2026: "Mach die Schrift auch im Mono." Kategorienamen im Pop-up in allen Varianten Mono, keine Serife mehr. */
body.rg .kw-pop[data-v="a"] .kw-kat a .n,body.rg .kw-pop[data-v="c"] .kw-kat a .n{font:400 11px/1.5 "DM Mono",ui-monospace,monospace;letter-spacing:.14em;text-transform:uppercase}
/* Michael 21.10.2026: "Mache die Ecke nicht abgerundet." Das Blatt ist eckig, auch die Fotos darin. */
body.rg .kw-blatt,body.rg .kw-pop .kw-fotos button{border-radius:0}
@media (min-width:761px){body.rg .kw-blatt{border-radius:0}}
/* Michael 21.10.2026: "Mach die Fotos groesser, zwei je Reihe, links hoch, rechts quer, dann umgekehrt." Variante B. */
html body.rg .kw-pop[data-v="b"] .kw-kat{grid-template-columns:1fr 1fr;gap:22px 14px;align-items:start}
html body.rg .kw-pop[data-v="b"] .kw-kat a:nth-child(4n+1) .b,html body.rg .kw-pop[data-v="b"] .kw-kat a:nth-child(4n+4) .b{aspect-ratio:3/4}
html body.rg .kw-pop[data-v="b"] .kw-kat a:nth-child(4n+2) .b,html body.rg .kw-pop[data-v="b"] .kw-kat a:nth-child(4n+3) .b{aspect-ratio:4/3}
@media (min-width:761px){html body.rg .kw-pop[data-v="b"] .kw-kat{gap:28px 20px}html body.rg .kw-pop[data-v="b"] .kw-blatt{width:min(960px,calc(100vw - 40px))}}
/* Michael 21.10.2026: Kopf des Pop-ups klebt oben ("damit ich es immer schliessen kann"). */
body.rg .kw-blatt{padding-top:0}
body.rg .kw-kopf{position:sticky;top:0;z-index:2;margin:0 -24px 14px;padding:22px 24px 14px;background:rgba(32,28,25,.96)}
html body.rg .kw-pop .kw-blatt{padding-top:0}
html body.rg .kw-pop:not([data-v="0"]) .kw-blatt{padding-top:0}
/* Michael 21.10.2026: "Schrift ein oder zwei groesser, am Handy darf nichts anstossen." 12 -> 14 px, Handy 11 -> 12 px mit engerer Sperrung;
   der Name kuerzt sich mit Auslassungspunkten, bevor etwas ueber den Rand laeuft. */
html body.rg .nv-navi[data-stil="11"] .u{font-size:16px}
@media (max-width:760px){html body.rg .nv-navi[data-stil="11"] .u{font-size:13px;letter-spacing:.06em}}
/* Nachmessung 390 px, "Traditionell Sued": der Name lief in Details hinein (151 px in einer 135-px-Spalte). Spalten duerfen auf 0 schrumpfen, der Name kuerzt sich. */
html body.rg .nv-navi[data-stil="11"] .u{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);column-gap:10px}
html body.rg .nv-navi[data-stil="11"] .kw{min-width:0;max-width:100%;overflow:hidden}
html body.rg .nv-navi[data-stil="11"] .kw .kw-n{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* Luft zwischen Schliessen-Pfeil und Foto-Pfeil ab Tablet (gemessen: sie klebten aneinander) */
@media (min-width:761px){html body.rg .nv-navi[data-stil="11"] .u{column-gap:28px}}

/* Tippziele (24.10.2026, Responsive-Durchgang): Hitbox auf 24 px und mehr, ohne sichtbare Aenderung. */
html body.rg .nv-navi[data-stil="11"] .fz11 button:last-child{padding-left:22px;margin-left:-22px}

/* ---------- Ansicht 12 (Michael 25.10.2026) ----------
   "Name mit Pfeil nach oben links, Details + rechts, in einer Zeile, darunter die Nummerierung" (Zahlenskala wie Ansicht 4).
   Gleiche Bausteine wie Ansicht 11 (Pop-up mit allen Kategorien), nur ohne Fotozaehler mit Pfeilen: Fotos waehlt die Skala, wischen geht weiter. */
html body.rg .nv-navi[data-stil="11"][data-v="12"] .u{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto auto;height:auto;align-items:center;column-gap:12px}
html body.rg .nv-navi[data-stil="11"][data-v="12"] .fz11{display:none!important}
html body.rg .nv-navi[data-stil="11"][data-v="12"] .kw{grid-column:1;grid-row:1;justify-self:start;padding:0}
html body.rg .nv-navi[data-stil="11"][data-v="12"] .ag-b[data-nv="det"]{grid-column:2;grid-row:1;justify-self:end;padding:0;border-left:0}
html body.rg .nv-navi[data-stil="11"][data-v="12"] .ts{display:grid!important;grid-column:1/-1;grid-row:2;height:42px;pointer-events:auto;margin-top:2px}
html body.rg .nv-navi[data-stil="11"][data-v="12"] .ts>button{position:relative;min-width:0;min-height:0;height:42px;padding:0;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:7px;text-shadow:0 0 3px rgba(20,16,12,.6),0 1px 12px rgba(20,16,12,.55)}
html body.rg .nv-navi[data-stil="11"][data-v="12"] .ts>button::before{content:"";position:absolute;left:0;right:0;top:9px;height:1px;background:rgba(246,242,234,.5);box-shadow:0 0 6px rgba(20,16,12,.5)}
html body.rg .nv-navi[data-stil="11"][data-v="12"] .ts>button.past::before{background:#fff}
html body.rg .nv-navi[data-stil="11"][data-v="12"] .ts>button.cur::before{height:3px;top:8px;background:rgba(246,242,234,.45)}
html body.rg .nv-navi[data-stil="11"][data-v="12"] .ts>button.cur::after{content:"";position:absolute;left:0;top:8px;width:100%;height:3px;background:#fff;transform-origin:0 0;transform:scaleX(0);animation:aafill 6s linear forwards}
html body.rg .nv-navi[data-stil="11"][data-v="12"] .ts .tt{position:relative;display:block;width:1px;height:6px;margin-top:6px;background:rgba(246,242,234,.65)}
html body.rg .nv-navi[data-stil="11"][data-v="12"] .ts .tn{font:400 13px/1 "DM Mono",ui-monospace,monospace;letter-spacing:.08em;opacity:.7}
html body.rg .nv-navi[data-stil="11"][data-v="12"] .ts>button.cur .tn{opacity:1}
@media (prefers-reduced-motion:reduce){html body.rg .nv-navi[data-stil="11"][data-v="12"] .ts>button.cur::after{animation:none;transform:none}}
/* Wahl der Ansicht (2, 11, 12): im Pop-up unten, bei Ansicht 2 im Menue "Alle Zimmer" */
body.rg .kw-wahl,body.rg .an-wahl{display:flex;align-items:center;gap:10px}
body.rg .kw-wahl{padding:22px 0 8px;font:400 11px/1 "DM Mono",ui-monospace,monospace;letter-spacing:.2em;text-transform:uppercase;color:rgba(246,242,234,.7)}
body.rg .kw-wahl .aw-et,body.rg .an-wahl .aw-et{margin-right:6px}
body.rg .kw-wahl button,body.rg .an-wahl button[data-aw]{min-width:44px;min-height:44px;padding:0 10px;border:1px solid currentColor;border-radius:0;background:none;color:inherit;font:inherit;letter-spacing:.1em;cursor:pointer;opacity:.7}
body.rg .kw-wahl button[aria-pressed="true"],body.rg .an-wahl button[data-aw][aria-pressed="true"]{opacity:1;color:#fff}
body.rg .an-wahl button[data-aw][aria-pressed="true"]{color:var(--tinte,#3D3733)}

html body.rg .nv-navi[data-stil="11"][data-v="12"] .u{font-size:15px}
html body.rg .nv-navi[data-stil="11"][data-v="12"] .ts{height:46px}
html body.rg .nv-navi[data-stil="11"][data-v="12"] .ts>button{height:46px}

/* 25.10.2026, Michael: Umschalter der zwei Navigationen oben rechts, neben dem Schliessen-X. */
body.rg .nv-navi>.rz-wahl{position:absolute;top:6px;right:72px;height:60px;display:flex;align-items:center;gap:6px;z-index:3}
body.rg .rz-wahl button{min-width:44px;min-height:44px;padding:0;display:grid;place-items:center;background:transparent;border:1px solid rgba(246,242,234,.4);border-radius:0;color:rgba(246,242,234,.8);font:400 14px/1 "DM Mono",ui-monospace,monospace;letter-spacing:.04em;cursor:pointer}
body.rg .rz-wahl button[aria-pressed="true"]{background:rgba(246,242,234,.92);border-color:rgba(246,242,234,.92);color:#2A2622}
@media (max-width:760px){html body.rg .nv-navi[data-stil="11"] .u{font-size:13px;letter-spacing:.02em;column-gap:6px}html body.rg .nv-navi[data-stil="11"]:not([data-v="12"]) .fz11{gap:2px}html body.rg .nv-navi[data-stil="11"]:not([data-v="12"]) .fz11 svg{width:16px}html body.rg .nv-navi[data-stil="11"]:not([data-v="12"]) .fz11 .z{letter-spacing:.02em}html body.rg .nv-navi[data-stil="11"]:not([data-v="12"]) .fz11 button{min-width:30px}}

/* 25.10.2026, Michael: Hell/Dunkel im Zimmer-Menue oben neben dem X. Hell = das Beige der Details (#F3EEE7). */
body.rg .kw-farbe{display:flex;gap:6px;margin-left:auto;margin-right:12px}
body.rg .kw-farbe button{min-height:44px;padding:0 14px;background:transparent;border:1px solid rgba(246,242,234,.4);border-radius:0;color:rgba(246,242,234,.75);font:400 12px/1 "DM Mono",ui-monospace,monospace;letter-spacing:.14em;text-transform:uppercase;cursor:pointer}
body.rg .kw-farbe button[aria-pressed="true"]{background:rgba(246,242,234,.92);border-color:rgba(246,242,234,.92);color:#2A2622}
body.rg .kw-pop[data-farbe="hell"] .kw-blatt,html body.rg .kw-pop[data-farbe="hell"]:not([data-v="0"]) .kw-blatt{background:#F3EEE7;color:#2A2622}
body.rg .kw-pop[data-farbe="hell"] .kw-kopf{background:#F3EEE7}
body.rg .kw-pop[data-farbe="hell"] .kw-et,body.rg .kw-pop[data-farbe="hell"] .kw-et2{color:rgba(42,38,34,.62)}
body.rg .kw-pop[data-farbe="hell"] .kw-zu{color:#2A2622}
body.rg .kw-pop[data-farbe="hell"] .kw-farbe button{border-color:rgba(42,38,34,.4);color:rgba(42,38,34,.75)}
body.rg .kw-pop[data-farbe="hell"] .kw-farbe button[aria-pressed="true"]{background:#2A2622;border-color:#2A2622;color:#F3EEE7}
html body.rg .kw-pop[data-farbe="hell"]:not([data-v="0"]) .kw-kat a,html body.rg .kw-pop[data-farbe="hell"]:not([data-v="0"]) .kw-kat a[aria-current="page"]{color:#2A2622}
html body.rg .kw-pop[data-farbe="hell"]:not([data-v="0"]) .kw-kat a .n i,html body.rg .kw-pop[data-farbe="hell"]:not([data-v="0"]) .kw-kat a[aria-current="page"] .n i{color:rgba(42,38,34,.5)}
html body.rg .kw-pop[data-farbe="hell"]:not([data-v="0"]) .kw-kat a .b{background:#E4DCD0}
html body.rg .kw-pop[data-farbe="hell"]:not([data-v="0"]) .kw-kat a .b img{opacity:.92}
html body.rg .kw-pop[data-farbe="hell"]:not([data-v="0"]) .kw-kat a[aria-current="page"] .b{box-shadow:inset 0 0 0 1px #2A2622}
html body.rg .kw-pop[data-farbe="hell"]:not([data-v="0"]) .kw-fotos button[aria-current="true"]{box-shadow:inset 0 0 0 1px #2A2622}

/* 25.10.2026, Michael: Umschalter oben wie Hell/Dunkel im Menue (Mono, Versalien, gesperrt, eckiger Rahmen). */
body.rg .nv-navi>.rz-wahl{right:70px;gap:6px}
body.rg .rz-wahl button{min-width:0;padding:0 12px;font:400 12px/1 "DM Mono",ui-monospace,monospace;letter-spacing:.14em;text-transform:uppercase}

/* 25.10.2026, Michael: Zahlen der Skala besser lesbar, aber nicht zu gross (13 -> 15 px). */
html body.rg .nv-navi[data-stil="11"][data-v="12"] .ts .tn{font-size:15px;letter-spacing:.06em;opacity:.8}
html body.rg .nv-navi[data-stil="11"][data-v="12"] .ts>button.cur .tn{opacity:1}
html body.rg .nv-navi[data-stil="11"][data-v="12"] .ts{height:50px}
html body.rg .nv-navi[data-stil="11"][data-v="12"] .ts>button{height:50px}
html body.rg .nv-navi[data-stil="11"][data-v="12"] .u{font-size:15px}

/* Ansicht 13 "Striche" (Michael 25.10.2026): wie Ansicht 12, aber ohne Zahlen und ohne senkrechte Striche. Ein Strich je Foto,
   der aktuelle laedt sich auf (6 s), der naechste schliesst an. */
html body.rg .nv-navi[data-stil="11"][data-v="12"][data-s="striche"] .ts{gap:5px;height:28px}
html body.rg .nv-navi[data-stil="11"][data-v="12"][data-s="striche"] .ts>button{height:28px}
html body.rg .nv-navi[data-stil="11"][data-v="12"][data-s="striche"] .ts .tn,html body.rg .nv-navi[data-stil="11"][data-v="12"][data-s="striche"] .ts .tt{display:none!important}
html body.rg .nv-navi[data-stil="11"][data-v="12"][data-s="striche"] .ts>button::before{top:12px;height:3px;background:rgba(246,242,234,.38)}
html body.rg .nv-navi[data-stil="11"][data-v="12"][data-s="striche"] .ts>button.past::before{background:#fff}
html body.rg .nv-navi[data-stil="11"][data-v="12"][data-s="striche"] .ts>button.cur::before{top:12px;height:3px;background:rgba(246,242,234,.38)}
html body.rg .nv-navi[data-stil="11"][data-v="12"][data-s="striche"] .ts>button.cur::after{top:12px;height:3px}
/* Umschalter oben: ein zusammenhaengendes Feld mit Trennlinien statt einzelner Kaesten */
body.rg .nv-navi>.rz-wahl{gap:0;border:1px solid rgba(246,242,234,.45);height:44px;top:14px;align-items:stretch;background:rgba(32,28,25,.35);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}
body.rg .nv-navi>.rz-wahl button{border:0;min-height:0;height:42px;padding:0 11px;font-size:11.5px;letter-spacing:.12em}
body.rg .nv-navi>.rz-wahl button+button{border-left:1px solid rgba(246,242,234,.3)}
body.rg .nv-navi>.rz-wahl button[aria-pressed="true"]{border-left-color:transparent}

/* 25.10.2026, Michael: Umschalter oben im Stil der Zahlenskala (Linie, kleine Striche, Zahlen 01 02 03, dicker Strich beim gewaehlten). */
html body.rg .nv-navi>.rz-wahl{border:0;background:none;-webkit-backdrop-filter:none;backdrop-filter:none;height:46px;top:13px;right:70px;gap:0;align-items:flex-start}
html body.rg .nv-navi>.rz-wahl button{position:relative;width:46px;height:46px;min-width:0;padding:22px 0 0;border:0;background:none;color:rgba(246,242,234,.7);font:400 15px/1 "DM Mono",ui-monospace,monospace;letter-spacing:.06em;text-transform:none;text-shadow:0 0 3px rgba(20,16,12,.6),0 1px 12px rgba(20,16,12,.55)}
html body.rg .nv-navi>.rz-wahl button::before{content:"";position:absolute;left:0;right:0;top:9px;height:1px;background:rgba(246,242,234,.55);box-shadow:0 0 6px rgba(20,16,12,.5)}
html body.rg .nv-navi>.rz-wahl button::after{content:"";position:absolute;left:50%;top:6px;width:1px;height:7px;background:rgba(246,242,234,.7)}
html body.rg .nv-navi>.rz-wahl button+button{border-left:0}
html body.rg .nv-navi>.rz-wahl button[aria-pressed="true"]{background:none;color:#fff}
html body.rg .nv-navi>.rz-wahl button[aria-pressed="true"]::before{height:3px;top:8px;left:0;right:6px;background:#fff}

/* 25.10.2026, Michael: neben dem Zimmernamen das Hamburger-Menue statt des Pfeils nach oben, mit etwas Abstand. */
html body.rg .nv-navi[data-stil="11"] .kw .kw-p{width:14px;height:14px;margin-left:10px}
html body.rg .nv-navi[data-stil="11"][data-pop="true"] .kw .kw-p{transform:none}

/* 25.10.2026, Michael: Hell/Dunkel nur als Schrift, die gewaehlte unterstrichen, kein Rahmen (wie "Alle Zimmer"). */
html body.rg .kw-farbe{gap:18px;margin-right:16px}
html body.rg .kw-farbe button,html body.rg .kw-pop[data-farbe="hell"] .kw-farbe button{min-height:44px;padding:0;border:0;background:none;color:rgba(246,242,234,.55);text-decoration:underline;text-decoration-color:transparent;text-underline-offset:6px;text-decoration-thickness:1px}
html body.rg .kw-farbe button[aria-pressed="true"]{background:none;border:0;color:#F6F2EA;text-decoration-color:currentColor}
html body.rg .kw-pop[data-farbe="hell"] .kw-farbe button{color:rgba(42,38,34,.55)}
html body.rg .kw-pop[data-farbe="hell"] .kw-farbe button[aria-pressed="true"]{background:none;border:0;color:#2A2622;text-decoration-color:currentColor}

/* === /leben.css === */
/* Das Leben der Seite: EINE Bewegungssprache fuer alle Seiten.
   Michael 11.10.2026: "Jede Seite soll die gleiche Bildanimation, die gleiche
   Schriftanimation und die gleiche Linkanimation haben. Die Linkanimationen
   spektakulaer. Das Glas-Objektiv. Bei den Bildern auch eine Motion."

   Drei Bausteine, alle an html.js und an echtem Zeigen gebunden:
   1. LINK    Glastropfen: eine Glasflaeche breitet sich von der Stelle aus,
              an der der Zeiger eintrat, und zieht sich zu der Stelle zurueck,
              an der er ging. Lichtfleck folgt dem Zeiger, die Linie zeichnet.
   2. BILD    langsame Tiefe beim Scrollen (Parallaxe ueber die Eigenschaft
              translate, getrennt vom Eintritt E1, der transform nimmt) und
              eine Glaslinse, die dem Zeiger folgt und das Bild darunter
              leicht bricht.
   3. SEITE   weicher Uebergang zwischen den Seiten, Kopf und Buchungsleiste
              bleiben stehen.

   Eintritt von Schrift (T2) und Bild (E1) liegt weiter in eintritt-home.css.
   Hier steht nur, was dazukommt. Alles faellt weg bei
   prefers-reduced-motion, und die Zeiger-Effekte nur dort, wo es einen
   Zeiger gibt (hover: hover). Am Handy bleibt: Druckblitz beim Tippen,
   Tiefe beim Scrollen, Seitenuebergang. */

:root {
  --gl-aus: cubic-bezier(.23,1,.32,1);
  --gl-sanft: cubic-bezier(.77,0,.175,1);
}

/* ---------- 3. Seitenuebergang ---------- */
@media (prefers-reduced-motion: no-preference) {
  @view-transition { navigation: auto; }
  .kopf { view-transition-name: gl-kopf; }
  .klebeleiste { view-transition-name: gl-leiste; }
  ::view-transition-group(root) { animation-duration: 420ms; animation-timing-function: var(--gl-aus); }
  ::view-transition-old(root) { animation: gl-raus 240ms var(--gl-sanft) both; }
  ::view-transition-new(root) { animation: gl-rein 420ms var(--gl-aus) both; }
  ::view-transition-group(gl-kopf), ::view-transition-group(gl-leiste) { animation-duration: 0s; }
  @keyframes gl-raus { to { opacity: 0; filter: blur(6px); } }
  @keyframes gl-rein { from { opacity: 0; filter: blur(8px); transform: translateY(10px); } }
}

/* ---------- 1. Links ---------- */
/* Das Skript haengt data-gl an jede Verweisflaeche und setzt zwei Kinder
   hinein: .gl-glas (die Flaeche) und .gl-linie (die Zeichnung). Beide liegen
   ausser der Reihe (absolute) und aendern kein Mass. */
/* position setzt das Skript NUR, wenn der Verweis noch 'static' ist: ein Verweis, der
   schon absolut oder klebend steht (Kartenverweise), darf nicht umgestellt werden. */
html.gl [data-gl] { isolation: isolate; -webkit-tap-highlight-color: transparent; }
html.gl [data-gl] > .gl-glas, html.gl [data-gl] > .gl-linie { position: absolute; pointer-events: none; }

html.gl [data-gl="text"] { text-decoration: none; }
html.gl [data-gl="text"] > .gl-glas {
  inset: -.22em -.62em; z-index: -1;
  background:
    radial-gradient(120px 70px at var(--mx, 50%) var(--my, 50%), rgba(255,255,255,.85), rgba(255,255,255,0) 70%),
    linear-gradient(135deg, rgba(255,255,255,.78), rgba(255,255,255,.34));
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.75), inset 0 1px 0 rgba(255,255,255,.95), 0 14px 30px -12px rgba(61,55,51,.38);
  clip-path: circle(0 at var(--mx, 50%) var(--my, 50%));
  /* Der Weichzeichner haengt NUR am aktiven Verweis (66 Glasflaechen mit
     dauerhaftem backdrop-filter kosten beim Scrollen), und er bleibt noch so
     lange stehen, wie sich die Flaeche zurueckzieht. */
  transition: clip-path 620ms var(--gl-aus), backdrop-filter 0s 640ms, -webkit-backdrop-filter 0s 640ms;
}
html.gl [data-gl="text"]:hover > .gl-glas, html.gl [data-gl="text"].gl-an > .gl-glas, html.gl [data-gl="text"]:active > .gl-glas, html.gl [data-gl="text"]:focus-visible > .gl-glas {
  -webkit-backdrop-filter: blur(7px) saturate(1.5); backdrop-filter: blur(7px) saturate(1.5);
  transition: clip-path 620ms var(--gl-aus), backdrop-filter 0s, -webkit-backdrop-filter 0s;
}
html.gl [data-gl="text"] > .gl-linie {
  left: 0; right: 0; bottom: -.12em; height: 1px; background: currentColor;
  transform: scaleX(0); transform-origin: var(--seite, left) center;
  transition: transform 520ms var(--gl-aus);
}

/* Die Lichtkante: ein heller Bogen laeuft einmal um den Rand der Glasflaeche
   (dieselbe Zeichnung wie "Glas B Lichtkante" beim Kiesel, 19.09.2026). */
@property --gl-w { syntax: '<angle>'; inherits: false; initial-value: 0deg; }
html.gl [data-gl] > .gl-glas::before {
  content: ""; position: absolute; inset: 0; padding: 1.5px; border-radius: inherit; opacity: 0;
  background: conic-gradient(from var(--gl-w), rgba(255,255,255,0) 0 55%, rgba(255,255,255,.95) 78%, rgba(255,255,255,0) 100%);
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor; mask-composite: exclude;
}
html.gl [data-gl="knopf"] > .gl-glas::before {
  background: conic-gradient(from var(--gl-w), rgba(255,255,255,0) 0 55%, rgba(255,255,255,.85) 78%, rgba(255,255,255,0) 100%);
}
@keyframes gl-lauf { from { --gl-w: 0deg; opacity: 1; } 85% { opacity: 1; } to { --gl-w: 360deg; opacity: 0; } }
@media (hover: hover) and (pointer: fine) {
  html.gl [data-gl]:hover > .gl-glas::before { animation: gl-lauf 1300ms var(--gl-aus) both; }
}
html.gl [data-gl].gl-an > .gl-glas::before { animation: gl-lauf 1000ms var(--gl-aus) both; }

/* Knoepfe (rechtwinklig, Hausregel): kein Tropfen, ein Lichtfleck unter dem Zeiger
   und eine Kante, die das Licht faengt. */
html.gl [data-gl="knopf"] { transition: transform 240ms var(--gl-aus), box-shadow 320ms var(--gl-aus); }
html.gl [data-gl="knopf"] > .gl-glas {
  inset: 0; z-index: 0; border-radius: inherit; overflow: hidden; opacity: 0;
  background:
    radial-gradient(180px 120px at var(--mx, 50%) var(--my, 50%), rgba(255,255,255,.34), rgba(255,255,255,0) 70%),
    linear-gradient(115deg, rgba(255,255,255,0) 40%, rgba(255,255,255,.16) 50%, rgba(255,255,255,0) 60%) var(--glanz, -160%) 0 / 260% 100% no-repeat;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.34);
  transition: opacity 360ms var(--gl-aus);
}
html.gl [data-gl="knopf"] > .gl-linie { display: none; }
/* der Inhalt des Knopfes bleibt ueber dem Licht */
html.gl [data-gl="knopf"] > :not(.gl-glas):not(.gl-linie) { position: relative; z-index: 1; }

@media (hover: hover) and (pointer: fine) {
  html.gl [data-gl="text"]:hover > .gl-glas, html.gl [data-gl="text"].gl-an > .gl-glas { clip-path: circle(150% at var(--mx, 50%) var(--my, 50%)); }
  html.gl [data-gl="text"]:hover > .gl-linie, html.gl [data-gl="text"].gl-an > .gl-linie { transform: scaleX(1); }
  html.gl [data-gl="knopf"]:hover { transform: translateY(-1px); box-shadow: 0 10px 26px -12px rgba(61,55,51,.55); }
  html.gl [data-gl="knopf"]:hover > .gl-glas { opacity: 1; --glanz: 160%; transition: opacity 360ms var(--gl-aus), background-position 900ms var(--gl-aus); }
}
html.gl [data-gl="knopf"]:active { transform: scale(.985); transition-duration: 90ms; }
html.gl [data-gl="knopf"].gl-an > .gl-glas { opacity: 1; }
html.gl [data-gl="text"]:active > .gl-glas { clip-path: circle(150% at var(--mx, 50%) var(--my, 50%)); }

/* Tastatur: dieselbe Zeichnung wie beim Zeigen */
html.gl [data-gl="text"]:focus-visible > .gl-glas { clip-path: circle(150% at 50% 50%); }
html.gl [data-gl="text"]:focus-visible > .gl-linie { transform: scaleX(1); }

/* ---------- 2. Bilder ---------- */
/* Tiefe beim Scrollen. translate und scale sind EIGENE Eigenschaften; E1
   benutzt transform. Beide laufen nebeneinander, ohne sich zu stoeren.
   Nur im Chromium und in Safari 26, wo es animation-timeline gibt; sonst
   steht das Bild still, und das ist in Ordnung. */
@supports (animation-timeline: view()) {
  @media (prefers-reduced-motion: no-preference) {
    /* Die Zeitachse haengt am RAHMEN, nicht am Bild: der Rahmen hat overflow:hidden
       und ist damit selbst ein Scroll-Container -- view() am Bild lauschte auf
       ihn und lief nie (gemessen 11.10.2026: progress null). */
    html.gl [data-ein="bild"][data-tiefe] { view-timeline: --gl-tiefe block; }
    html.gl [data-ein="bild"][data-tiefe] img {
      scale: var(--gl-s, 1.07);
      animation: gl-tiefe linear both; animation-timeline: --gl-tiefe; animation-range: cover 0% cover 100%;
      will-change: translate;
    }
    @keyframes gl-tiefe { from { translate: 0 calc(var(--gl-v, 3%) * -1); } to { translate: 0 var(--gl-v, 3%); } }
  }
}

/* Beim Zeigen atmet das Bild ein Stueck naeher heran (langsam, damit es ruhig
   bleibt). Nur dort, wo es einen Zeiger gibt. */
@media (hover: hover) and (pointer: fine) and (prefers-reduced-motion: no-preference) {
  html.gl [data-ein="bild"][data-tiefe] img { transition: filter 900ms var(--aus, ease), transform 900ms var(--aus, ease), opacity 520ms linear, scale 1600ms var(--gl-aus); }
  /* Michael 19.10.2026: "Kein Effekt beim rueber scrollen mit der Maus. Das ist zu viel." Kein Heranatmen mehr. */
}

/* Nichts davon im Kopf, im Chat, in der Tafel, in Karten und Schiebern: dort
   ist Bewegung Bedienung, nicht Schmuck. */
html.gl .gc-fenster [data-gl] > .gl-glas, html.gl .gc-fenster [data-gl] > .gl-linie { display: none; }

@media (prefers-reduced-motion: reduce) {
  html.gl [data-gl] > .gl-glas, html.gl [data-gl] > .gl-linie { transition: none !important; }
  html.gl [data-ein="bild"][data-tiefe] img { animation: none !important; scale: none !important; }
  html.gl [data-gl="knopf"] { transition: none !important; }
}

/* Handy (bis 809 px): Bildunterschriften waren hinter dem Bild. Das Bild bekommt die Tiefe (scale 1,07 plus
   Versatz), sein Rahmen ist aber die ganze figure MIT figcaption. Das vergroesserte Bild malte ueber die
   Unterschrift (gemessen 11.10.2026, 390 px: 4 von 20 Unterschriften verdeckt). Mit Unterschrift steht das Bild
   dort still. Michael 11.10.2026: "Bei Breakpoint Mobil fehlen die Bildunterschriften." */
@media (max-width: 809px) {
  html.gl [data-ein="bild"][data-tiefe]:has(figcaption) img { scale: none !important; translate: none !important; animation: none !important; }
}

/* Fusszeile (Michael 11.10.2026: "Was ist hier los? Beim Footer"): die Verweise dort haben 10 px Tippflaeche oben und unten
   (kopf.css: padding 10px 0, margin -10px 0). Das Glas und die Linie bezogen sich auf diesen 44-px-Kasten, deckten die
   Nachbarzeilen zu und die Linie lag auf dem naechsten Verweis. Jetzt beziehen sie sich auf die Textzeile. */
html.gl .fussblock li a[data-gl="text"] > .gl-glas { inset: -.22em -.62em; }
html.gl .fussblock li a[data-gl="text"] > .gl-linie { bottom: -.12em; }

/* 12.10.2026, Michael: Hover der Buchungsleiste "eleganter, aber nicht moderner". Jetzt: das Papier faehrt von links ueber den Knopf (Wischer, 480 ms, Expo),
   die Schrift kippt dabei auf dunkel. Kein Lichtfleck, kein Rahmen, kein Schatten. Tippen am Handy: derselbe Wischer, kurz. */
html.gl .buchbar [data-gl="knopf"] { transition: color 360ms var(--gl-aus); isolation: isolate; }
html.gl .buchbar [data-gl="knopf"] > .gl-glas { z-index: -1; }
html.gl .buchbar [data-gl="knopf"] > .gl-glas {
  background: #F3EEE7; box-shadow: none; opacity: 1; clip-path: inset(0 100% 0 0); transition: clip-path 520ms var(--gl-aus);
}
html.gl .buchbar [data-gl="knopf"] > .gl-glas::before { display: none; }
@media (hover: hover) and (pointer: fine) {
  html.gl .buchbar [data-gl="knopf"]:hover { transform: none; box-shadow: none; color: #3D3733; }
  html.gl .buchbar [data-gl="knopf"]:hover > .gl-glas { clip-path: inset(0 0 0 0); opacity: 1; }
}
html.gl .buchbar [data-gl="knopf"].gl-an { color: #3D3733; }
html.gl .buchbar [data-gl="knopf"].gl-an > .gl-glas { clip-path: inset(0 0 0 0); }
html.gl .buchbar [data-gl="knopf"]:focus-visible { color: #3D3733; }
html.gl .buchbar [data-gl="knopf"]:focus-visible > .gl-glas { clip-path: inset(0 0 0 0); }
html.gl .buchbar [data-gl="knopf"] svg, html.gl .buchbar [data-gl="knopf"] img { transition: filter 360ms var(--gl-aus); }
@media (prefers-reduced-motion: reduce) { html.gl .buchbar [data-gl="knopf"] > .gl-glas { transition: none; } }

/* 12.10.2026, Michael: kein weisser Balken hinter Verweisen, nirgends. Neuer Effekt: eine Haarlinie zieht unter dem Wort ein (von der Seite, aus der der Zeiger kommt),
   das Wort rueckt 3 px nach rechts und wird eine Spur dunkler. Keine Flaeche, kein Schatten, keine Unschaerfe. */
html.gl [data-gl="text"] > .gl-glas { display: none !important; }
html.gl [data-gl="text"] { transition: color 380ms var(--gl-aus), translate 380ms var(--gl-aus); }
html.gl [data-gl="text"] > .gl-linie { bottom: -.2em; height: 1px; transition: transform 640ms var(--gl-aus); }
@media (hover: hover) and (pointer: fine) {
  html.gl [data-gl="text"]:hover { translate: 3px 0; color: #1F1B18; }
}
@media (prefers-reduced-motion: reduce) { html.gl [data-gl="text"] { transition: none; translate: none !important; } }

/* 12.10.2026, Michael: "Der Wischeffekt ist besser, aber noch nicht perfekt. Mehr zeitgenoessisch." Statt einer harten Kante faehrt das Papier mit
   WEICHER Kante ein (Maske mit Verlauf, keine Schiebekante), von der Seite, an der der Zeiger eintritt (--seite aus leben.js), und sehr leicht
   durchscheinend mit Weichzeichner, wie Milchglas. Die Schrift kippt etwas spaeter als die Flaeche, damit sie nie auf halber Farbe steht. */
html.gl .buchbar [data-gl="knopf"] > .gl-glas {
  clip-path: none;
  background: rgba(243,238,231,.96);
  -webkit-backdrop-filter: blur(10px) saturate(1.2); backdrop-filter: blur(10px) saturate(1.2);
  -webkit-mask-image: linear-gradient(90deg, #000 0 34%, transparent 66% 100%); mask-image: linear-gradient(90deg, #000 0 34%, transparent 66% 100%);
  -webkit-mask-size: 300% 100%; mask-size: 300% 100%;
  -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat;
  -webkit-mask-position: 100% 0; mask-position: 100% 0;
  transition: mask-position 720ms var(--gl-aus), -webkit-mask-position 720ms var(--gl-aus);
}
html.gl .buchbar [data-gl="knopf"][style*="right"] > .gl-glas {
  -webkit-mask-image: linear-gradient(270deg, #000 0 34%, transparent 66% 100%); mask-image: linear-gradient(270deg, #000 0 34%, transparent 66% 100%);
  -webkit-mask-position: 0 0; mask-position: 0 0;
}
html.gl .buchbar [data-gl="knopf"] { transition: color 280ms var(--gl-aus) 140ms; }
@media (hover: hover) and (pointer: fine) {
  html.gl .buchbar [data-gl="knopf"]:hover > .gl-glas { clip-path: none; -webkit-mask-position: 0 0; mask-position: 0 0; }
  html.gl .buchbar [data-gl="knopf"][style*="right"]:hover > .gl-glas { -webkit-mask-position: 100% 0; mask-position: 100% 0; }
}
html.gl .buchbar [data-gl="knopf"].gl-an > .gl-glas, html.gl .buchbar [data-gl="knopf"]:focus-visible > .gl-glas { clip-path: none; -webkit-mask-position: 0 0; mask-position: 0 0; }
html.gl .buchbar [data-gl="knopf"][style*="right"].gl-an > .gl-glas, html.gl .buchbar [data-gl="knopf"][style*="right"]:focus-visible > .gl-glas { -webkit-mask-position: 100% 0; mask-position: 100% 0; }
@media (prefers-reduced-motion: reduce) { html.gl .buchbar [data-gl="knopf"] > .gl-glas { transition: none; } }

/* Ueberschriften steigen Wort fuer Wort auf (siehe leben.js, 12.10.2026). Das Wort sitzt in einer Maske
   mit etwas Luft (Unterlaengen, Schwung der Cormorant), die Maske verschiebt das Layout nicht. */
html.lw-bereit .lw { display: inline-block; overflow: hidden; vertical-align: top; padding: 0 .06em .14em; margin: 0 -.06em -.14em; }
html.lw-bereit .lw-i { display: inline-block; transform: translateY(108%); will-change: transform;
  transition: transform 950ms var(--gl-aus) calc(var(--i, 0) * 55ms); }
html.lw-bereit .lw-an .lw-i { transform: none; }
@media (prefers-reduced-motion: reduce) { html.lw-bereit .lw-i { transform: none; transition: none; } }

/* Handy: Der Wischer der Buchungsleiste deckt auch das Chat-Symbol zu (Michael 12.10.2026: "die Schrift wird dunkel, das Logo des Chatbots nicht").
   Der Knopf "Verfuegbarkeit" ist am Handy so breit wie die ganze Leiste; das Papier liegt unter dem Symbol, das Symbol blieb hell auf hell.
   Jetzt kippt das Symbol mit der Schrift: Blase dunkel, Augen hell (umgekehrt zum Ruhezustand). */
@media (max-width: 809px) {
  html.gl .buchbar .cg-ruf { transition: color 360ms var(--gl-aus); }
  html.gl .buchbar .cg-ruf svg rect { transition: fill 360ms var(--gl-aus); }
  html.gl .buchbar:has(.buchtext.gl-an) .cg-ruf,
  html.gl .buchbar:has(.buchtext:focus-visible) .cg-ruf { color: #3D3733; }
  html.gl .buchbar:has(.buchtext.gl-an) .cg-ruf svg rect,
  html.gl .buchbar:has(.buchtext:focus-visible) .cg-ruf svg rect { fill: #F3EEE7 !important; }
}
@media (max-width: 809px) and (hover: hover) and (pointer: fine) {
  html.gl .buchbar:has(.buchtext:hover) .cg-ruf { color: #3D3733; }
  html.gl .buchbar:has(.buchtext:hover) .cg-ruf svg rect { fill: #F3EEE7 !important; }
}

/* 12.10.2026, Michael: "Mach einen besseren Rollover, das sieht nicht gut aus, einfacher und eleganter." Der Wischer mit Maske und Weichzeichner
   entfaellt ganz. Jetzt: der Knopf hellt nur leise auf (Papierton, 10 %), die Schrift bleibt hell und steht still. Eine Eigenschaft, eine Dauer.
   Das Chat-Symbol kippt nicht mehr mit, es bleibt wie im Ruhezustand. */
html.gl .buchbar [data-gl="knopf"] > .gl-glas { display: none !important; }
html.gl .buchbar [data-gl="knopf"] { transition: background-color 420ms var(--gl-aus); }
@media (hover: hover) and (pointer: fine) {
  html.gl .buchbar [data-gl="knopf"]:hover { background-color: rgba(246,242,234,.10); color: #F6F2EA; }
}
html.gl .buchbar [data-gl="knopf"].gl-an,
html.gl .buchbar [data-gl="knopf"]:focus-visible { background-color: rgba(246,242,234,.10); color: #F6F2EA; }
@media (max-width: 809px) {
  html.gl .buchbar:has(.buchtext.gl-an) .cg-ruf,
  html.gl .buchbar:has(.buchtext:focus-visible) .cg-ruf { color: #F1ECE3; }
  html.gl .buchbar:has(.buchtext.gl-an) .cg-ruf svg rect,
  html.gl .buchbar:has(.buchtext:focus-visible) .cg-ruf svg rect { fill: #3D3733 !important; }
}
@media (max-width: 809px) and (hover: hover) and (pointer: fine) {
  html.gl .buchbar:has(.buchtext:hover) .cg-ruf { color: #F1ECE3; }
  html.gl .buchbar:has(.buchtext:hover) .cg-ruf svg rect { fill: #3D3733 !important; }
}

/* 13.10.2026, Michael: "Mach das Roll over bei allen dicken Button wie bei der Booking Bar, auf allen Breakpoints, bei allen Seiten."
   Ein Rollover fuer alle grossen Knoepfe: nur die Fuellung wandert leise (Papierton, 10 %), die Schrift bleibt, nichts hebt sich, nichts kippt um.
   Dunkle Knoepfe werden eine Spur heller (#504A45 = Tinte + 10 % Papier), Linienknoepfe bekommen eine zarte Tinte-Flaeche. Eine Eigenschaft, 420 ms, gleiche Kurve. */
html body .ts-knopf.ts-knopf.ts-knopf, html body .an-knopf.an-knopf.an-knopf, html body.rg .buchen.buchen.buchen {
  transition: background-color 420ms var(--gl-aus); }
@media (hover: hover) and (pointer: fine) {
  html body .ts-knopf.ts-knopf.ts-knopf:hover, html body .an-knopf.an-knopf.an-knopf:hover:not(.voll) { background: rgba(61,55,51,.08); color: var(--tinte, #3D3733); transform: none; box-shadow: none; }
  html body .an-knopf.an-knopf.an-knopf.voll:hover, html body .an-kartentafel .an-knopf.an-knopf.an-knopf:hover, html body.rg .buchen.buchen.buchen:hover { background: #504A45; color: #F3EEE7; transform: none; box-shadow: none; }
}
html body .ts-knopf.ts-knopf.ts-knopf:active, html body .an-knopf.an-knopf.an-knopf:active, html body.rg .buchen.buchen.buchen:active { transform: none; }
@media (prefers-reduced-motion: reduce) { html body .ts-knopf.ts-knopf.ts-knopf, html body .an-knopf.an-knopf.an-knopf, html body.rg .buchen.buchen.buchen { transition: none; } }

/* 16.10.2026, Michael: "einfachere Animation, diese passt nicht zu unserem Design". Die Knoepfe (data-gl="knopf") bekommen KEIN
   Glaslicht mehr (kein Lichtfleck unter dem Zeiger, kein Glanzstreifen, kein Anheben, kein Schatten, keine Lichtkante): nur der
   ruhige Farbwechsel, den die Knopfklasse selbst mitbringt (Fuellung wird dunkler oder hell hinterlegt). Links (data-gl="text")
   bleiben wie sie sind. Zurueck: leben.css.vor-knopf-ruhig-16102026 */
html.gl [data-gl="knopf"] > .gl-glas, html.gl [data-gl="knopf"] > .gl-linie { display: none !important; }
html.gl [data-gl="knopf"], html.gl [data-gl="knopf"]:hover { transform: none !important; box-shadow: none; transition: background-color .28s ease, color .28s ease, border-color .28s ease; }
html.gl [data-gl="knopf"]:active { transform: none !important; }

/* Michael 19.10.2026: "Kein Effekt beim rueber scrollen mit der Maus. Das ist zu viel."
   Glastropfen, Lichtfleck und Lichtlauf unter dem Zeiger sind aus. Die Unterstreichung
   der Textverweise (.gl-linie) bleibt: sie sagt nur, dass man klicken kann. */
html.gl [data-gl] > .gl-glas { display: none !important; }

/* 20.10.2026, Michael (FAQ, Inhalt): "Mach den Strich um 25 % weniger lang auf der rechten Seite, dass er nicht ganz
   nach aussen geht, und um 50 % heller." Gilt fuer die Inhaltsliste aller Textseiten (dieselbe Liste). */
html.gl .ts-inhalt [data-gl="text"] > .gl-linie, html.gl .ts-inhalt [data-gl="text"] > .gl-glas { display: none; }   /* 20.10.2026: dort gilt Variante A (textseiten.css) */

/* === /buchform.css === */
/* Buchungsformular ohne Promo-Code (Michael 16.10.2026): drei Felder (Anreise, Abreise, Belegung), mittig, so breit wie die haeufigen Fragen darueber (1144 px, Michael 17.10.2026, vorher 880); mehr Luft zwischen den
   Eingabelinien und dem Knopf (vorher 24 px, jetzt 56 px). Gilt ab 810 px; darunter bleibt das Handy-Raster aus lp-stil.css. */
@media (min-width: 810px) {
  /* 20.10.2026, Michael: "Mach die Buchungsleiste so breit wie oben die Fragen und unten die Bewertungen."
     Gemessen war sie 393 px statt 1144: max-width allein reicht einem Grid nicht, es bleibt so schmal wie
     sein Inhalt. Mit width 100% fuellt es den Satzspiegel der Fragen darueber. */
  html .buchform, html #buchen .buchform { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 56px 40px;
    width: 100%; max-width: 1144px; margin-inline: auto; box-sizing: border-box; }
}
@media (max-width: 809px) {
  /* 30.10.2026, Michael: Buchungsleiste so breit wie die Fragen darueber. Gemessen bei 390 px:
     Leiste 68-322, Fragen 36-354, weil probe-tafel-milchglas.css (max-width 809) 32 px Rand setzt. */
  html .buchform { row-gap: 40px; margin-left: 0; margin-right: 0; }
}

/* === /cookiebanner.css === */
/* Einwilligung: Hinweis, Einstellungen, Liste der Cookies.
   Haus-Stil: Papier #F3EEE7, Tinte #3D3733, Linie #DDD5C9, Radius 0 bei Knoepfen
   (Michael 05.09.2026), Schieber rund. Ueberschriften Cormorant Garamond 300,
   Text Abhaya Libre, Beschriftungen DM Mono in Versalien.
   Gleichwertigkeit: alle Knoepfe einer Ebene teilen EINE Regel (.cb-knopf).
   Es gibt bewusst keine Farbvariante fuer "Alles akzeptieren". */

.cookiebanner {
  --cb-grund: #F3EEE7; --cb-tinte: #3D3733; --cb-text: #5C554F; --cb-leise: #6E6862;
  --cb-linie: #DDD5C9; --cb-rand: clamp(20px, 3vw, 42px);
  font-family: "Abhaya Libre", "Abhaya Ersatz", Georgia, serif;
  color: var(--cb-tinte); font-size: 17px; line-height: 1.6;
}
.cookiebanner [hidden] { display: none !important; }
.cookiebanner *, .cookiebanner *::before, .cookiebanner *::after { box-sizing: border-box; }
.cookiebanner :where(h2, h3, p, dl, dd) { margin: 0; }
.cookiebanner :where(button) { font: inherit; color: inherit; }
.cookiebanner :where(a) { color: inherit; text-underline-offset: 3px; }
.cookiebanner :focus-visible { outline: 2px solid var(--cb-tinte); outline-offset: 3px; }
html.cb-sperre { overflow: hidden; }

/* ---------- ein Knopf, drei Aufgaben ---------- */

.cb-knopf {
  display: flex; align-items: center; justify-content: center; text-align: center;
  width: 100%; min-height: 52px; padding: 10px 20px;
  border: 1px solid var(--cb-tinte); border-radius: 0; background: transparent; cursor: pointer;
  font-family: "DM Mono", ui-monospace, monospace; font-size: 12px; font-weight: 500;
  letter-spacing: .2em; text-transform: uppercase; line-height: 1.3; color: var(--cb-tinte);
  transition: background-color .22s ease, color .22s ease;
}
.cb-knopf:hover { background: var(--cb-tinte); color: var(--cb-grund); }
.cb-knopf:active { transform: translateY(1px); }
.cb-knoepfe { display: grid; gap: 12px; }

.cb-textknopf, .cb-zu, .cb-sprache button, .cb-navdienst {
  background: none; border: 0; padding: 0; cursor: pointer; border-radius: 0;
}
.cb-textknopf {
  display: inline-flex; align-items: center; min-height: 44px; margin-top: 8px;
  font-family: "DM Mono", ui-monospace, monospace; font-size: 12px; letter-spacing: .16em; text-transform: uppercase;
  text-decoration: underline; text-underline-offset: 5px; text-decoration-thickness: 1px; color: var(--cb-tinte);
}
.cb-zu {
  min-height: 44px; padding: 0 2px;
  font-family: "DM Mono", ui-monospace, monospace; font-size: 12px; letter-spacing: .16em; text-transform: uppercase;
  text-decoration: underline; text-underline-offset: 5px; text-decoration-thickness: 1px;
}

/* ---------- Sprache ---------- */

.cb-sprache {
  display: inline-flex; align-items: center; gap: 2px; color: var(--cb-leise);
  font-family: "DM Mono", ui-monospace, monospace; font-size: 12px; letter-spacing: .16em;
}
.cb-sprache button {
  min-width: 44px; min-height: 44px; display: grid; place-items: center;
  font: inherit; letter-spacing: inherit; color: var(--cb-leise);
}
.cb-sprache button:last-child { justify-content: end; margin-right: -.16em; }
.cb-sprache button[aria-pressed="true"] { color: var(--cb-tinte); font-weight: 500; }

/* ---------- Ebene 1: Hinweis ---------- */

.cb-leiste {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 9000;
  background: var(--cb-grund); border-top: 1px solid var(--cb-linie);
  box-shadow: 0 -18px 48px rgba(61, 55, 51, .10);
  max-height: 100dvh; overflow-y: auto;
  /* Kein Einblenden mehr: Michael 19.10.2026 ("Stell A und B live"), der Hinweis steht sofort */
}
.cb-leiste[data-da] { opacity: 1; transform: none; }
.cb-innen {
  /* Swiss Grid (16.10.2026): 12 Spalten, 24 px Rinne. Titel Spalte 1 bis 4, Text 5 bis 9, Knoepfe 10 bis 12.
     --breite der Zimmerseiten (Kartenbreite) darf hier NICHT einfliessen: sie quetschte die Leiste auf 490 px. */
  max-width: 1435px; margin: 0 auto;
  padding: 28px var(--cb-rand) calc(24px + env(safe-area-inset-bottom));
  display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: 24px; row-gap: 16px; align-items: center;
}
.cb-links { grid-column: 1 / span 9; display: grid; grid-template-columns: repeat(9, minmax(0, 1fr)); column-gap: 24px; row-gap: 8px; align-items: start; }
.cb-links .cb-titel { grid-column: 1 / span 4; grid-row: 1 / span 2; }
.cb-links .cb-text { grid-column: 5 / span 5; grid-row: 1; margin-top: 0; max-width: none; }
.cb-links .cb-fuss { grid-column: 5 / span 5; grid-row: 2; margin-top: 6px; }
.cb-rechts { grid-column: 10 / span 3; }
@media (max-width: 900px) {
  .cb-innen { grid-template-columns: minmax(0, 1fr); }
  .cb-links, .cb-rechts { grid-column: 1; }
  .cb-links { grid-template-columns: minmax(0, 1fr); }
  .cb-links .cb-titel, .cb-links .cb-text, .cb-links .cb-fuss { grid-column: 1; grid-row: auto; }
}
.cb-titel {
  font-family: "Cormorant Garamond", "Cormorant Ersatz", Georgia, serif;
  font-weight: 300; font-size: 27px; line-height: 1.15; letter-spacing: -.005em; color: var(--cb-tinte);
}
.cb-text { margin-top: 8px; max-width: 80ch; font-size: 16px; line-height: 1.55; color: var(--cb-text); }
.cb-fuss { display: flex; flex-wrap: wrap; gap: 0 24px; margin-top: 2px; }
.cb-fuss a {
  display: inline-flex; align-items: center; min-height: 32px;
  font-family: "DM Mono", ui-monospace, monospace; font-size: 11.5px; letter-spacing: .16em; text-transform: uppercase;
  text-decoration: none; color: var(--cb-leise);
}
.cb-fuss a:last-child { margin-right: -.16em; }
.cb-fuss a:hover { color: var(--cb-tinte); text-decoration: underline; text-underline-offset: 5px; }
.cb-rechts { display: flex; flex-direction: column; justify-content: center; align-items: stretch; gap: 4px; }
.cb-rechts .cb-sprache { align-self: flex-end; margin: -8px 0 0 0; }
.cb-rechts .cb-knopf { min-height: 44px; }
.cb-rechts .cb-knoepfe { gap: 8px; }

/* ---------- Ebene 2 und 3: Fenster ---------- */

.cb-schleier {
  position: fixed; inset: 0; z-index: 9001; background: rgba(38, 34, 30, .52);
  animation: cb-ein .3s ease both;
}
.cb-modal {
  position: fixed; z-index: 9002; top: 50%; left: 50%; transform: translate(-50%, -50%);
  width: min(1040px, calc(100% - 32px)); height: min(820px, calc(100dvh - 32px));
  display: flex; flex-direction: column;
  background: var(--cb-grund); border: 1px solid var(--cb-linie); box-shadow: 0 30px 90px rgba(38, 34, 30, .35);
  animation: cb-auf .45s cubic-bezier(.22, 1, .36, 1) both;
}
.cb-kopf {
  display: flex; align-items: flex-start; justify-content: space-between; gap: 24px;
  padding: 32px 40px 0;
}
.cb-kopf .cb-titel { font-size: 32px; padding-top: 4px; }
.cb-kopfrechts { display: flex; align-items: center; gap: 4px; flex: none; margin-top: -6px; }
.cb-koerper { flex: 1 1 auto; overflow-y: auto; padding: 24px 40px 8px; overscroll-behavior: contain; }
.cb-modalfuss {
  flex: none; padding: 20px 40px calc(24px + env(safe-area-inset-bottom));
  border-top: 1px solid var(--cb-linie); display: grid; gap: 14px;
}
.cb-id { font-family: "DM Mono", ui-monospace, monospace; font-size: 11.5px; letter-spacing: .08em; color: var(--cb-leise); }
.cb-modalfuss .cb-knoepfe { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.cb-modalfuss .cb-knoepfe.cb-zwei { grid-template-columns: repeat(2, minmax(0, 1fr)); max-width: 640px; margin-left: auto; width: 100%; }

/* Auswahl */
.cb-zeile {
  display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 24px 48px; align-items: start;
  padding: 28px 0; border-bottom: 1px solid var(--cb-linie);
}
.cb-zeile:first-child { padding-top: 12px; }
.cb-zeile h3 {
  font-family: "Cormorant Garamond", "Cormorant Ersatz", Georgia, serif;
  font-weight: 400; font-size: 26px; line-height: 1.2;
}
.cb-zahl { font-family: "DM Mono", ui-monospace, monospace; font-size: 13px; letter-spacing: .08em; color: var(--cb-leise); vertical-align: .15em; }
.cb-zeile p { margin-top: 8px; max-width: 62ch; color: var(--cb-text); }

/* Schieber: rund (Hausregel), mit Wort daneben, damit der Zustand nicht nur an der Farbe haengt */
.cb-schalter { display: inline-flex; align-items: center; gap: 14px; cursor: pointer; min-height: 44px; position: relative; }
.cb-schalter input { position: absolute; opacity: 0; inset: 0; width: 100%; height: 100%; margin: 0; cursor: inherit; }
.cb-schiene {
  position: relative; flex: none; width: 52px; height: 30px; border-radius: 999px;
  border: 1px solid var(--cb-leise); background: transparent; transition: background-color .25s ease, border-color .25s ease;
}
.cb-schiene::after {
  content: ""; position: absolute; top: 4px; left: 4px; width: 20px; height: 20px; border-radius: 50%;
  background: var(--cb-leise); transition: transform .3s cubic-bezier(.22, 1, .36, 1), background-color .25s ease;
}
.cb-schalter input:checked + .cb-schiene { background: var(--cb-tinte); border-color: var(--cb-tinte); }
.cb-schalter input:checked + .cb-schiene::after { transform: translateX(22px); background: var(--cb-grund); }
.cb-schalter input:disabled { cursor: default; }
.cb-schalter input:disabled + .cb-schiene { opacity: .62; }
.cb-schalter input:focus-visible + .cb-schiene { outline: 2px solid var(--cb-tinte); outline-offset: 3px; }
.cb-zustand {
  min-width: 7.5em; font-family: "DM Mono", ui-monospace, monospace; font-size: 12px; letter-spacing: .14em; text-transform: uppercase; color: var(--cb-text);
}

/* Liste */
.cb-zweispalt { display: grid; grid-template-columns: 250px minmax(0, 1fr); gap: 0 48px; align-items: start; }
.cb-nav { position: sticky; top: 0; padding-right: 24px; border-right: 1px solid var(--cb-linie); }
.cb-navgruppe + .cb-navgruppe { margin-top: 28px; }
.cb-navkat {
  font-family: "Inter", system-ui, sans-serif; font-size: 12px; letter-spacing: .14em; text-transform: uppercase; color: var(--cb-leise); margin-bottom: 4px;
}
.cb-navdienst {
  display: block; width: 100%; text-align: left; min-height: 44px; padding: 8px 0 8px 14px; margin-left: -14px;
  border-left: 2px solid transparent; color: var(--cb-text); line-height: 1.3;
}
.cb-navdienst:hover { color: var(--cb-tinte); }
.cb-navdienst[aria-current="true"] { color: var(--cb-tinte); border-left-color: var(--cb-tinte); }
.cb-kopfzeile { display: flex; align-items: center; justify-content: space-between; gap: 24px; padding-bottom: 12px; border-bottom: 2px solid var(--cb-tinte); }
.cb-kopfzeile h2 { font-family: "Cormorant Garamond", "Cormorant Ersatz", Georgia, serif; font-weight: 400; font-size: 30px; line-height: 1.2; }
.cb-dienst { margin: 28px 0 8px; font-family: "Cormorant Garamond", "Cormorant Ersatz", Georgia, serif; font-weight: 500; font-size: 24px; line-height: 1.25; }
.cb-felder { display: grid; gap: 18px; margin-top: 16px; }
.cb-feld dt { font-family: "Inter", system-ui, sans-serif; font-size: 12px; letter-spacing: .14em; text-transform: uppercase; color: var(--cb-leise); margin-bottom: 2px; }
.cb-feld dd { color: var(--cb-text); overflow-wrap: anywhere; }
.cb-tabelle { width: 100%; margin: 28px 0 16px; border-collapse: collapse; font-size: 16px; text-align: left; }
.cb-tabelle caption { text-align: left; font-family: "Inter", system-ui, sans-serif; font-size: 12px; letter-spacing: .14em; text-transform: uppercase; color: var(--cb-leise); padding-bottom: 8px; }
.cb-tabelle th { font-family: "DM Mono", ui-monospace, monospace; font-size: 11.5px; font-weight: 500; letter-spacing: .14em; text-transform: uppercase; padding: 10px 14px 10px 0; border-bottom: 1px solid var(--cb-tinte); }
.cb-tabelle td { padding: 12px 14px 12px 0; border-bottom: 1px solid var(--cb-linie); vertical-align: top; color: var(--cb-text); }
.cb-tabelle td:first-child { font-family: "DM Mono", ui-monospace, monospace; font-size: 13px; color: var(--cb-tinte); overflow-wrap: anywhere; }

@keyframes cb-ein { from { opacity: 0; } to { opacity: 1; } }
@keyframes cb-auf { from { opacity: 0; transform: translate(-50%, -48%); } to { opacity: 1; transform: translate(-50%, -50%); } }

/* ---------- Tablet ---------- */
@media (max-width: 1100px) {
  .cb-innen { grid-template-columns: minmax(0, 1fr) 280px; gap: 16px 40px; }
}

/* ---------- Handy ---------- */
@media (max-width: 809px) {
  .cookiebanner { font-size: 16px; }
  .cb-leiste { max-height: 94dvh; }
  .cb-innen { grid-template-columns: 1fr; gap: 12px; padding: 14px var(--cb-rand) calc(14px + env(safe-area-inset-bottom)); }
  .cb-titel { font-size: 22px; }
  .cb-text { margin-top: 6px; font-size: 15.5px; }
  .cb-fuss { margin-top: 4px; justify-content: space-between; }
  .cb-rechts { display: contents; }
  .cb-rechts .cb-sprache { order: -1; justify-self: end; margin: -10px 0 -6px 0; }
  .cb-links { order: 0; }
  .cb-rechts .cb-knoepfe { order: 1; gap: 8px; }
  .cb-knopf, .cb-rechts .cb-knopf { min-height: 44px; }
  .cb-zustand { min-width: 0; }

  .cb-modal { inset: 0; top: 0; left: 0; transform: none; width: 100%; height: 100dvh; max-height: none; border: 0; animation: cb-ein .3s ease both; }
  .cb-kopf { padding: 18px var(--cb-rand) 0; flex-wrap: wrap; gap: 4px 12px; }
  .cb-kopf .cb-titel { font-size: 25px; order: 2; flex-basis: 100%; padding-top: 0; }
  .cb-kopfrechts { order: 1; margin: 0 0 0 auto; }
  .cb-koerper { padding: 12px var(--cb-rand) 8px; }
  .cb-modalfuss { padding: 14px var(--cb-rand) calc(16px + env(safe-area-inset-bottom)); gap: 10px; }
  .cb-modalfuss .cb-knoepfe, .cb-modalfuss .cb-knoepfe.cb-zwei { grid-template-columns: 1fr; max-width: none; gap: 8px; }
  .cb-zeile { grid-template-columns: 1fr; gap: 8px; padding: 22px 0; }
  .cb-zeile h3 { font-size: 23px; }

  .cb-zweispalt { grid-template-columns: 1fr; gap: 20px; }
  .cb-nav { position: static; padding: 0 0 16px; border-right: 0; border-bottom: 1px solid var(--cb-linie); }
  .cb-kopfzeile h2 { font-size: 25px; }
  .cb-tabelle thead { position: absolute; left: -9999px; }
  .cb-tabelle tr { display: block; padding: 10px 0; border-bottom: 1px solid var(--cb-linie); }
  .cb-tabelle td { display: block; border: 0; padding: 2px 0; }
  .cb-tabelle td::before { content: attr(data-l); display: block; font-family: "Inter", system-ui, sans-serif; font-size: 11px; letter-spacing: .14em; text-transform: uppercase; color: var(--cb-leise); margin-top: 6px; }
}

@media (prefers-reduced-motion: reduce) {
  .cb-leiste, .cb-schleier, .cb-modal, .cb-schiene, .cb-schiene::after, .cb-knopf { transition: none; animation: none; }
  .cb-leiste { transform: none; }
}

/* 16.10.2026: am Handy kompakter, die Leiste fuellte 62 % des Bildschirms (502 von 800 px) */
@media (max-width: 600px) {
  .cb-innen { padding-top: 14px; row-gap: 10px; }
  .cb-leiste .cb-titel { font-size: 21px; }
  .cb-leiste .cb-text { font-size: 14.5px; line-height: 1.45; }
  .cb-leiste .cb-fuss a { min-height: 28px; }
  .cb-leiste .cb-rechts .cb-knopf { min-height: 42px; }
  .cb-leiste .cb-rechts .cb-knoepfe { gap: 6px; }
}

/* ---------- Liste und Auswahl im Swiss Grid (Michael 16.10.2026: "grosszuegiger, eleganter, luxurioeser") ----------
   Raster: 12 Spalten, 32 px Rinne. Navigation Spalte 1 bis 3, Inhalt Spalte 5 bis 12. Haarlinien 1 px statt dicker Balken,
   Ueberschriften leicht (Cormorant 300), Beschriftungen DM Mono 11 px gesperrt, Abstaende auf 8-Punkt-Raster (24/32/48/64).
   Zurueck: cookiebanner.css.vor-liste-16102026 */
@media (min-width: 810px) {
  .cb-modal { width: min(1200px, calc(100% - 64px)); height: min(880px, calc(100dvh - 64px)); box-shadow: 0 40px 120px rgba(38, 34, 30, .32); }
  .cb-kopf { padding: 48px 64px 0; align-items: baseline; }
  .cb-kopf .cb-titel { font-size: 44px; font-weight: 300; line-height: 1.1; letter-spacing: -.01em; padding-top: 0; }
  .cb-kopfrechts { margin-top: 0; gap: 24px; }
  .cb-koerper { padding: 40px 64px 32px; }
  .cb-kopf + .cb-koerper { border-top: 1px solid var(--cb-linie); margin-top: 32px; }

  .cb-zweispalt { grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: 32px; }
  .cb-nav { grid-column: 1 / span 3; border-right: 0; padding-right: 0; top: 8px; }
  .cb-detail { grid-column: 5 / span 8; min-width: 0; }
  .cb-navgruppe + .cb-navgruppe { margin-top: 48px; }
  .cb-navkat { font-family: "DM Mono", ui-monospace, monospace; font-size: 11px; letter-spacing: .22em; margin-bottom: 12px; }
  .cb-navdienst { min-height: 40px; padding: 8px 0 8px 20px; margin-left: 0; border-left: 1px solid var(--cb-linie); font-size: 19px; line-height: 1.3; transition: color .25s ease, border-color .25s ease; }
  .cb-navdienst[aria-current="true"] { border-left-color: var(--cb-tinte); }

  .cb-kopfzeile { padding-bottom: 24px; border-bottom: 1px solid var(--cb-tinte); align-items: baseline; }
  .cb-kopfzeile h2 { font-size: 38px; font-weight: 300; letter-spacing: -.005em; }
  .cb-dienst { margin: 48px 0 24px; font-size: 28px; font-weight: 400; }
  .cb-felder { gap: 0; margin-top: 0; }
  .cb-feld { display: grid; grid-template-columns: repeat(8, minmax(0, 1fr)); column-gap: 32px; padding: 20px 0; border-top: 1px solid var(--cb-linie); }
  .cb-feld:last-child { border-bottom: 1px solid var(--cb-linie); }
  .cb-feld dt { grid-column: 1 / span 2; font-family: "DM Mono", ui-monospace, monospace; font-size: 11px; letter-spacing: .2em; margin: 5px 0 0; }
  .cb-feld dd { grid-column: 3 / span 6; font-size: 17px; line-height: 1.65; }
  .cb-tabelle { margin: 56px 0 24px; }
  .cb-tabelle caption { font-family: "DM Mono", ui-monospace, monospace; font-size: 11px; letter-spacing: .22em; padding-bottom: 16px; }
  .cb-tabelle th { font-size: 11px; letter-spacing: .2em; padding: 14px 24px 14px 0; border-bottom: 1px solid var(--cb-tinte); }
  .cb-tabelle td { padding: 18px 24px 18px 0; line-height: 1.55; }

  .cb-modalfuss { flex-direction: row; display: flex; align-items: center; justify-content: space-between; gap: 32px; padding: 28px 64px calc(32px + env(safe-area-inset-bottom)); }
  .cb-modalfuss .cb-knoepfe.cb-zwei { margin: 0; width: auto; max-width: none; grid-template-columns: repeat(2, 260px); gap: 16px; }
  .cb-modalfuss .cb-knoepfe { grid-template-columns: repeat(3, 220px); gap: 16px; }
  .cb-modalfuss .cb-knopf { min-height: 56px; }
}

/* 16.10.2026, Michael: Knoepfe rechts wieder wie am Anfang (320 x 44 px, 8 px Abstand), nur der Rahmen eine Spur heller.
   Zurueck: cookiebanner.css.vor-urform-16102026 */
.cb-leiste .cb-rechts .cb-knopf { border-color: rgba(61, 55, 51, .55); }
.cb-leiste .cb-rechts .cb-knopf:hover { border-color: var(--cb-tinte); }

/* 16.10.2026, Michael: "die drei Knoepfe gleich hoch wie der Fliesstext: Oberkante des Textes bis Unterkante des Textblocks, nach Swiss Grid".
   Der Textblock (Absatz + Links) bestimmt die Hoehe; die drei Knoepfe teilen sie sich zu gleichen Teilen (8 px Abstand, gemessen ca. 40 px je Knopf).
   Die Sprachwahl rutscht ueber den Block, in die obere Randzone. Am Handy unveraendert. Zurueck: cookiebanner.css.vor-bluendig-16102026 */
@media (min-width: 901px) {
  .cb-innen { padding-top: 64px; align-items: stretch; }
  .cb-links { min-height: 128px; align-content: start; }
  .cb-leiste .cb-rechts { position: relative; display: block; }
  .cb-leiste .cb-rechts .cb-sprache { position: absolute; right: 0; top: -48px; margin: 0; align-self: auto; }
  .cb-leiste .cb-rechts .cb-knoepfe { height: 100%; grid-template-rows: repeat(3, minmax(0, 1fr)); gap: 8px; }
  .cb-leiste .cb-rechts .cb-knopf { min-height: 0; height: 100%; padding: 0 20px; }
}

/* 16.10.2026, Michael: "Ueberschrift, Fliesstext und Knoepfe genau ausgerichtet". An Pixeln gemessen (Bildschirmfoto, doppelte Aufloesung):
   Tinte oben: Ueberschrift 4 px, Fliesstext 5,5 px unter der Oberkante der Knoepfe; Links endeten 12 px ueber der Unterkante.
   Jetzt beginnen alle drei auf EINER Linie und die Links enden auf der Unterkante der Knoepfe. Zurueck: cookiebanner.css.vor-ausrichtung-16102026 */
@media (min-width: 901px) {
  .cb-links .cb-titel { margin-top: -4px; }
  .cb-links .cb-text { margin-top: -5.5px; }
  .cb-links .cb-fuss { margin-bottom: -12px; }
}
/* 16.10.2026, Michael: Text lief bis an die Knoepfe, "frueher umbrechen": rechts 48 px Luft im Fliesstext (zusaetzlich zur Rinne). */
@media (min-width: 901px) { .cb-links .cb-text { padding-right: 48px; } }

/* 16.10.2026, Michael: "Verbessere die Typografie in diesem Breakpoint" (Cookie-Leiste, einspaltig 601 bis 900 px). Befund am Screenshot: Titel brach mit
   dem Einzelwort "Technologien." um, der Text lief mit rund 90 Zeichen je Zeile und endete auf "werden.". Jetzt: Titel ausgewogen umbrochen, Text auf
   etwa 62 Zeichen begrenzt, ruhigerer Zeilenabstand, keine Einzelwoerter am Absatzende, Anfuehrungszeichen haengen. Zurueck: cookiebanner.css.vor-satz-16102026 */
.cb-titel { text-wrap: balance; hanging-punctuation: first; }
.cb-text { text-wrap: pretty; hyphens: manual; }
@media (min-width: 601px) and (max-width: 900px) {
  .cb-links .cb-titel { font-size: 32px; line-height: 1.12; letter-spacing: -.01em; max-width: 26ch; }
  .cb-links .cb-text { margin-top: 14px; max-width: 62ch; font-size: 16.5px; line-height: 1.62; padding-right: 0; }
  .cb-links .cb-fuss { margin-top: 12px; }
}

/* ---- Responsive-Fix 28.10.2026 Teil 5: Cookie-Knoepfe am Handy mindestens 44 px hoch (vorher 42) ---- */
@media (max-width: 600px) { .cb-leiste .cb-rechts .cb-knopf { min-height: 44px; } }
