@font-face{font-family:'Outfit';src:url(data:font/woff2;base64,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) format('woff2');font-weight:100 900;font-style:normal;font-display:swap}

/* ══════════ Farbschicht — gemessen am Hauslogo ════════════════════════
   Das Logo ist eine feine weiße Linienzeichnung: zwei Fichten in einem
   Kreis, darunter „GARNI TROJER · FAM. OBERLEITER". Es hat keine eigene
   Farbe — also kommt die Hausfarbe aus dem Motiv: das Dunkelgrün der
   Fichten, dazu ein warmer Sandton für Flächen und Linien.
   WEISS trägt die Seite, die Fotos sind die einzigen großen Farbflächen.
   ══════════════════════════════════════════════════════════════════════ */
:root{
  --papier:#ffffff;
  --band:#f2f3ef;
  --band-tief:#e6e8e1;
  --tinte:#182018;
  --text:#464f45;
  --text-leise:#6b736a;
  --oliv:#3d5c36;
  --sand:#a9a184;
  --sand-tief:#726b4c;
  --fels:#141b14;
  --fels-tief:#0d120d;
  --schrift-hell:#f5f6f2;
  --schrift-hell-leise:rgba(245,246,242,.66);
  --linie:rgba(24,32,24,.13);
  --linie-hell:rgba(245,246,242,.18);
  --sans:'Outfit',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
}


/* ══════════════════════════════════════════════════════════════════════
   Gemeinsame Stilschicht der Webseiten-Entwuerfe.
   Uebernommen aus dem Entwurf „Mirabell Pro" (alpixai.com/mirabell-pro) —
   dort sind die Kommentare entstanden, sie erklaeren jede Falle.
   Die Farben stehen NICHT hier, sondern je Haus im :root der Seite.
   ══════════════════════════════════════════════════════════════════════ */

/* ===== Grundlagen ==================================================== */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;
  /* WINDOWS: die Haupt-Scrollleiste. Auf dem Mac ist sie ein Overlay mit
     0 px Breite und faellt nie auf — auf Windows steht sonst der breite
     hellgraue System-Balken neben der Seite. Dezent, palettenpassend.
     Firefox ueber scrollbar-*, Chrome/Edge ueber ::-webkit-scrollbar. */
  scrollbar-width:thin;scrollbar-color:var(--sand) transparent}
html::-webkit-scrollbar{width:11px;height:11px}
html::-webkit-scrollbar-track{background:transparent}
html::-webkit-scrollbar-thumb{background:var(--sand);border-radius:99px;
  border:3px solid var(--papier)}
html::-webkit-scrollbar-thumb:hover{background:var(--sand-tief)}
body{
  margin:0;background:var(--papier);color:var(--text);
  font-family:var(--sans);
  font-weight:400;font-size:clamp(1rem,.94rem + .3vw,1.16rem);line-height:1.72;
  -webkit-font-smoothing:antialiased;overflow-x:hidden;
}
img{display:block;max-width:100%}
a{color:inherit}
:focus-visible{outline:2px solid var(--oliv);outline-offset:5px;border-radius:2px}
::selection{background:var(--sand);color:var(--fels)}

/* ===== Typografie ==================================================== */
h1,h2,h3{font-weight:300;margin:0;color:var(--tinte);letter-spacing:-.012em}
/* WICHTIG: Die Groesse IST die Handschrift. Vorbild stock.at: 110 px bei den
   Abschnittsmarken. Vorher standen hier 4,3rem = 69 px — das wirkt sofort
   wie ein Baukasten. -> [[design-referenz-stock]] */
h2{font-size:clamp(2.5rem,1.1rem + 5.4vw,6.2rem);line-height:1.02;max-width:15ch;text-wrap:balance;
  letter-spacing:-.028em}
h3{font-size:clamp(1.6rem,1.25rem + 1.4vw,2.5rem);line-height:1.12;font-weight:300;letter-spacing:-.015em}
p{margin:0 0 1.2em}
.lead{font-size:clamp(1.16rem,1rem + .7vw,1.6rem);line-height:1.55;max-width:34ch;color:var(--tinte);font-weight:300}
.fliess{max-width:46ch;color:var(--text)}
.leise{color:var(--text-leise)}

.rubrik{
  font-weight:500;font-size:.68rem;letter-spacing:.3em;text-transform:uppercase;
  color:var(--oliv);margin:0 0 1.8rem;display:flex;align-items:center;gap:.95rem;
}
.rubrik::before{content:"";width:0;height:1px;background:currentColor;flex:none;
  transition:width 1.1s cubic-bezier(.16,.84,.34,1) .1s}
.sicht .rubrik::before{width:36px}
.mitte .rubrik{justify-content:center}
.mitte .rubrik::after{content:"";width:0;height:1px;background:currentColor;
  transition:width 1.1s cubic-bezier(.16,.84,.34,1) .1s}
.mitte.sicht .rubrik::after{width:36px}

/* dunkle Baender */
.tief{background:var(--fels);color:var(--schrift-hell)}
.tief h1,.tief h2,.tief h3{color:var(--schrift-hell)}
.tief .rubrik{color:var(--sand)}
.tief .fliess,.tief .leise{color:var(--schrift-hell-leise)}
.tief .lead{color:var(--schrift-hell)}

.mehr{
  display:inline-flex;align-items:center;gap:.8rem;text-decoration:none;
  font-weight:400;font-size:.79rem;letter-spacing:.18em;text-transform:uppercase;
  color:var(--oliv);padding:.6rem 0;min-height:28px;
}
.tief .mehr{color:var(--sand)}
.mehr::before{content:"";width:28px;height:1px;background:currentColor;
  transition:width .45s cubic-bezier(.16,.84,.34,1)}
.mehr:hover::before,.mehr:focus-visible::before{width:50px}

.knopf{
  display:inline-block;text-decoration:none;font-weight:400;font-size:.78rem;
  letter-spacing:.2em;text-transform:uppercase;padding:1.1rem 2.4rem;
  border:1px solid var(--tinte);color:var(--tinte);background:transparent;
  cursor:pointer;position:relative;overflow:hidden;isolation:isolate;
  transition:color .45s ease,border-color .45s ease;
}
.knopf::after{content:"";position:absolute;inset:0;background:var(--tinte);z-index:-1;
  transform:scaleY(0);transform-origin:bottom;
  transition:transform .5s cubic-bezier(.16,.84,.34,1)}
.knopf:hover,.knopf:focus-visible{color:var(--papier)}
.knopf:hover::after,.knopf:focus-visible::after{transform:scaleY(1)}
.knopf-hell{color:var(--schrift-hell);border-color:rgba(246,245,239,.55)}
.knopf-hell::after{background:var(--sand)}
.knopf-hell:hover,.knopf-hell:focus-visible{color:var(--fels);border-color:var(--sand)}

/* ===== Raster ======================================================== */
.band{padding:clamp(5.5rem,12vw,11rem) clamp(1.4rem,5vw,4.5rem)}
.innen{max-width:1340px;margin:0 auto}
.zwei{display:grid;grid-template-columns:1fr 1fr;gap:clamp(2.5rem,6vw,7rem);align-items:center}
.zwei.strecken{align-items:stretch}
.zwei.strecken .bildspalte{display:flex}
.zwei.strecken .bildspalte>*{flex:1;min-width:0}
.mitte{text-align:center}
.mitte h2,.mitte .lead,.mitte .fliess{margin-left:auto;margin-right:auto}
.mitte h2{max-width:22ch}   /* sonst bricht eine gesetzte Zeile noch einmal um */

/* ===== Signature: der Bogen ==========================================
   Das Haus hat echte Rundboegen — im Buffetraum und im Zimmerdurchgang.
   Schluesselbilder stehen deshalb im Bogen, alles andere bleibt streng. */
.bogen{border-radius:999px 999px 3px 3px;overflow:hidden;position:relative;aspect-ratio:3/4.15}
.bogen img,.rahmen img,.breitbild img{width:100%;height:100%;object-fit:cover}
.rahmen,.breitbild{overflow:hidden;position:relative}

/* ===== Bewegung ======================================================
   Alles, was etwas verbirgt, haengt an .js — laeuft das Skript nicht,
   steht die Seite sofort vollstaendig da statt leer. */
.vorhang{transition:clip-path 1.5s cubic-bezier(.16,.84,.34,1)}
.js .vorhang{clip-path:inset(0 0 100% 0)}
.js .sicht .vorhang,.js .vorhang.sicht{clip-path:inset(0 0 0 0)}
/* Der Ruhezustand ist bewusst 1.14 statt 1 — der Ueberschuss ist der
   Spielraum, in dem sich das Bild beim Scrollen im Rahmen bewegt.
   ACHTUNG: Zoom und Parallaxe duerfen sich NICHT dieselbe transform-Transition
   teilen: sonst laeuft die Parallaxe 2,2 s hinterher und wirkt gar nicht.
   Deshalb animiert nur die Variable --zoom, die Verschiebung folgt sofort. */
@property --zoom{syntax:'<number>';inherits:false;initial-value:1.18}
.vorhang img{transform:translate3d(0,var(--py,0px),0) scale(var(--zoom,1.18));
  transition:--zoom 2.2s cubic-bezier(.16,.84,.34,1)}
.js .vorhang img{--zoom:1.38}
.js .sicht .vorhang img,.js .vorhang.sicht img{--zoom:1.18}

/* MERKE: Beim Ueberfahren hebt sich ein Bild leicht an: der Ausschnitt zieht sanft
   naeher, das Bild wird eine Spur heller, der Rahmen bekommt Tiefe. Bewusst
   klein — es soll hochwertig wirken, nicht springen. Rein, Zoom in 0,8 s;
   raus, langsam ueber die vorhandenen 2,2 s. Das ergibt das teure Gefuehl.
   ACHTUNG: Zwei Dinge sind hier Pflicht:
   1. Der Zoom laeuft ueber `--zoom`, NICHT ueber `transform`. Auf `transform`
      schreibt die Scroll-Parallaxe ihren Versatz; zwei Effekte auf derselben
      Eigenschaft blockieren sich gegenseitig (schon einmal passiert).
   2. Alles in `@media (hover:hover)`. Auf einem Touchgeraet loest die erste
      Beruehrung sonst `mouseenter` aus und der Effekt blitzt vor dem Klick auf.
      Auf Windows mit Maus greift die Regel normal — dort ist Hover echt. */
@media (hover:hover){
  .vorhang{transition:box-shadow .55s cubic-bezier(.16,.84,.34,1)}
  .vorhang img{transition:--zoom 2.2s cubic-bezier(.16,.84,.34,1),filter .65s ease}
  .js .sicht .vorhang:hover,.js .vorhang.sicht:hover{box-shadow:0 20px 54px rgba(36,39,24,.2)}
  .js .sicht .vorhang:hover img,.js .vorhang.sicht:hover img{
    --zoom:1.21;filter:brightness(1.05) saturate(1.05);
    transition:--zoom .8s cubic-bezier(.16,.84,.34,1),filter .4s ease}
}

.stufe{transition:opacity 1.1s ease,transform 1.1s cubic-bezier(.16,.84,.34,1)}
.js .stufe{opacity:0;transform:translateY(48px)}
.js .sicht .stufe{opacity:1;transform:none}
.sicht .stufe:nth-child(2){transition-delay:.13s}
.sicht .stufe:nth-child(3){transition-delay:.26s}
.sicht .stufe:nth-child(4){transition-delay:.39s}
.sicht .stufe:nth-child(5){transition-delay:.52s}

/* Zeilenmaske: Ueberschriften fahren zeilenweise hoch */
/* ACHTUNG: Die Maske schneidet sonst die Unterlaengen ab — bei „ein ganzes Tal."
   stand das g ohne Bauch da. Innenabstand rein, Aussenabstand wieder raus:
   die Maske wird tiefer, der Zeilenabstand bleibt. */
.zeilen{overflow:hidden;display:block;padding-bottom:.16em;margin-bottom:-.16em}
.zeilen>span{display:block;transition:transform 1.4s cubic-bezier(.16,.84,.34,1)}
.js .zeilen>span{transform:translateY(112%)}
.js .sicht .zeilen>span{transform:none}
.js .sicht .zeilen+.zeilen>span{transition-delay:.16s}
.js .sicht .zeilen+.zeilen+.zeilen>span{transition-delay:.32s}

/* ===== Kopfzeile ===================================================== */
.kopf{
  position:fixed;top:0;left:0;right:0;z-index:60;isolation:isolate;
  display:flex;align-items:center;justify-content:space-between;gap:2rem;
  padding:1.6rem clamp(1.4rem,5vw,4.5rem);color:var(--schrift-hell);
  transition:background .55s ease,padding .55s ease,color .55s ease,box-shadow .55s ease;
}
.kopf::before{
  content:"";position:absolute;inset:0 0 auto;height:190%;pointer-events:none;z-index:-1;
  background:linear-gradient(180deg,rgba(28,30,19,.6),rgba(28,30,19,0));
  transition:opacity .5s ease;
}
.kopf::after{
  content:"";position:absolute;left:0;bottom:0;height:1px;width:var(--fortschritt,0%);
  background:var(--oliv);opacity:0;transition:opacity .4s ease;
}
.kopf.fest{
  background:rgba(255,255,255,.94);backdrop-filter:blur(16px) saturate(1.2);
  color:var(--tinte);padding-top:.95rem;padding-bottom:.95rem;
  box-shadow:0 1px 0 var(--linie);
}
.kopf.fest::before{opacity:0}
.kopf.fest::after{opacity:1}

/* Im Titelbild steht das Logo schon gross — dann waere es in der Kopfzeile
   doppelt. Es erscheint erst, wenn die Kopfzeile weiss wird. */
.marke{display:block;line-height:0;flex:none;position:relative;
  opacity:0;visibility:hidden;transition:opacity .55s ease,visibility .55s}
.kopf.fest .marke,.kopf.offen .marke{opacity:1;visibility:visible}
.marke img{display:block;width:clamp(112px,11vw,150px);height:auto;transition:opacity .5s ease}
.marke-dunkel{position:absolute;top:0;left:0;opacity:0;pointer-events:none}
.kopf.fest .marke-hell{opacity:0}
.kopf.fest .marke-dunkel{opacity:1}

.menue{display:flex;align-items:center;gap:clamp(1.2rem,2.5vw,2.5rem);list-style:none;margin:0;padding:0}
.menue a{
  text-decoration:none;font-size:.77rem;letter-spacing:.15em;text-transform:uppercase;
  opacity:.85;position:relative;padding:.55rem 0;transition:opacity .3s ease;
}
.menue a::after{content:"";position:absolute;left:0;right:100%;bottom:.3rem;height:1px;
  background:currentColor;opacity:.6;transition:right .45s cubic-bezier(.16,.84,.34,1)}
.menue a:hover,.menue a:focus-visible{opacity:1}
.menue a:hover::after,.menue a:focus-visible::after{right:0}
.kopf .knopf{padding:.78rem 1.6rem;font-size:.71rem;color:currentColor;border-color:currentColor}
.kopf .knopf::after{background:var(--sand)}
.kopf .knopf:hover,.kopf .knopf:focus-visible{color:var(--fels);border-color:var(--sand)}
.burger{display:none;background:none;border:0;color:inherit;padding:.6rem;cursor:pointer}
.burger span{display:block;width:24px;height:1px;background:currentColor;margin:6px 0;
  transition:transform .4s ease,opacity .3s ease}
.offen .burger span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.offen .burger span:nth-child(2){opacity:0}
.offen .burger span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}

/* ===== Titelbild ===================================================== */
/* Das Titelbild bleibt stehen, der weisse Block schiebt sich darueber. */
.titel{position:sticky;top:0;height:100svh;min-height:620px;overflow:hidden;background:var(--fels);z-index:0}
.nach-titel{position:relative;z-index:1;background:var(--papier)}
.titel-buehne{position:absolute;inset:0}
.titel-bild{position:absolute;inset:0;opacity:0;transition:opacity 2.4s ease}
.titel-bild.an{opacity:1}
/* ACHTUNG: Der Einstieg war da, aber unsichtbar: 7 % Zoom auf 24 Sekunden verteilt
   sind 0,3 % pro Sekunde — das nimmt kein Auge wahr. Jetzt zweistufig in EINER
   Animation (zwei Animationen auf derselben transform-Eigenschaft blockieren
   sich): die ersten 11 % der Laufzeit sind der spuerbare Einzug von 1,16 auf
   1,06 in knapp drei Sekunden, der Rest ist die ruhige Weiterfahrt. Der
   Bildwechsel startet die Animation neu, also bekommt jedes Titelbild seinen
   eigenen Einzug. */
.titel-bild img{width:100%;height:100%;object-fit:cover;transform:scale(1.22);
  animation:ruhig 24s linear forwards}
@keyframes ruhig{
  0%{transform:scale(1.22);animation-timing-function:cubic-bezier(.16,.84,.34,1)}
  13%{transform:scale(1.08)}
  100%{transform:scale(1)}}

/* ACHTUNG! Und der Einstieg darf erst laufen, wenn die Seite sichtbar IST. Alle
   Titel-Animationen starteten beim Parsen und waren nach 2,35 s vorbei — bei
   einem 3,5-MB-Dokument kann der erste Bildaufbau spaeter kommen, dann sieht
   der Besucher nur noch den Endzustand. `.bereit` setzt das Skript, sobald das
   Titelbild wirklich dekodiert ist. Die Pause haengt an `.js`: ohne Skript
   laeuft alles wie bisher, es kann also nichts unsichtbar haengenbleiben. */
.js .titel-bild img,.js .titel-ort,.js .titel h1 span i,.js .titel-zeile,.js .leiste{
  animation-play-state:paused}
.js.bereit .titel-bild img,.js.bereit .titel-ort,.js.bereit .titel h1 span i,
.js.bereit .titel-zeile,.js.bereit .leiste{animation-play-state:running}
.titel::after{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:
    /* ACHTUNG: Der Name steht unten LINKS und lag bei Passerhaus genau ueber der
       sonnigen Apfelwiese — mit dem alten Verlauf war er kaum zu lesen.
       Drei Schichten: oben ein Hauch fuer das Menue, unten ein kraeftiger
       Fuss, dazu eine Ecke links unten, die genau den Textblock traegt.
       Das Bild bleibt in der oberen Haelfte fast unberuehrt. */
    linear-gradient(180deg,rgba(18,22,17,.5) 0%,rgba(18,22,17,.06) 22%,rgba(18,22,17,.1) 40%,rgba(18,22,17,.55) 72%,rgba(18,22,17,.9) 100%),
    linear-gradient(100deg,rgba(18,22,17,.7) 0%,rgba(18,22,17,.4) 30%,rgba(18,22,17,.12) 52%,rgba(18,22,17,0) 70%),
    radial-gradient(120% 88% at 6% 100%,rgba(18,22,17,.72) 0%,rgba(18,22,17,.34) 42%,rgba(18,22,17,0) 74%);
}
.titel-inhalt{
  position:absolute;inset:0;z-index:2;display:flex;flex-direction:column;
  align-items:flex-start;justify-content:flex-end;text-align:left;color:var(--schrift-hell);
  padding:7rem clamp(1.4rem,5vw,4.5rem) clamp(5.5rem,11vh,8rem);pointer-events:none;
}
.titel-ort{
  font-size:.67rem;letter-spacing:.4em;text-transform:uppercase;opacity:0;margin:0 0 1.6rem;
  transform:translateY(14px);animation:auf .95s cubic-bezier(.16,.84,.34,1) .4s forwards;
  /* ACHTUNG: WINDOWS: `-webkit-font-smoothing` wirkt dort nicht, gerendert wird mit
     Subpixeln. Ein weicher Schatten mit 20 px Radius unter kleinem, gesperrtem
     Text laesst ihn ausgefranst wirken. Deshalb ein harter, kurzer Schatten fuer
     die Kante und ein schwacher Hof fuer die Lesbarkeit auf dem Foto. */
  text-shadow:0 1px 2px rgba(28,30,19,.9),0 1px 14px rgba(28,30,19,.5);
}
/* line-height:0 gilt fuer den Fall, dass im Titel ein Logo-BILD steht —
   dann traegt das Bild die Hoehe. Steht dort eine gesetzte Wortmarke,
   waere die Zeile 0 px hoch und die Maske (overflow:hidden) schnitte den
   Namen komplett weg. Genau das ist bei Passerhaus passiert. */
.titel h1{margin:0;line-height:0}
/* ACHTUNG: Und die Farbe muss mit. `h1,h2,h3{color:var(--tinte)}` faerbt die
   Ueberschrift fast schwarz — auf dem Titelfoto war der Name dadurch nur
   noch als Schatten zu ahnen. Beim Logo-BILD faellt das nicht auf, bei
   gesetzter Schrift schon. */
.titel h1.wortmarke-titel{line-height:1.02;color:var(--schrift-hell)}
.titel h1.wortmarke-titel span{padding-bottom:.2em}
.titel h1 span{display:block;overflow:hidden;padding-bottom:.6rem}
.titel h1 span i{display:block;font-style:normal;transform:translateY(105%);
  animation:hoch 1.2s cubic-bezier(.16,.84,.34,1) .55s forwards}
.titel-logo img{display:block;width:clamp(214px,26vw,352px);height:auto;
  filter:drop-shadow(0 3px 30px rgba(28,30,19,.6))}
.titel-zeile{
  max-width:31ch;margin:2.2rem 0 0;font-size:clamp(1rem,.95rem + .32vw,1.18rem);
  line-height:1.72;opacity:0;animation:auf 1s ease 1.2s forwards;
  text-shadow:0 1px 2px rgba(28,30,19,.9),0 1px 16px rgba(28,30,19,.55);
}
@keyframes hoch{to{transform:translateY(0)}}
@keyframes auf{to{opacity:1;transform:translateY(0)}}

/* ===== Leiser Hinweis nach unten ====================================
   Statt einer Buchungsleiste im Titelbild: ein Strich, der wandert.
   Die besten Suedtiroler Hotelseiten halten das Titelbild frei —
   ein Bild, ein Name, ein Satz. -> [[design-referenz-quellenhof]] */
.runter{position:absolute;left:50%;transform:translateX(-50%);bottom:clamp(1.8rem,4vh,3rem);z-index:3;
  display:flex;flex-direction:column;align-items:center;gap:.9rem;text-decoration:none;
  color:var(--schrift-hell);opacity:0;animation:auf .9s ease 1.6s forwards}
.runter span{font-size:.6rem;letter-spacing:.34em;text-transform:uppercase;
  text-shadow:0 1px 2px rgba(10,12,8,.85)}
.runter i{display:block;width:1px;height:3rem;background:rgba(246,245,239,.45);position:relative;overflow:hidden}
.runter i::after{content:"";position:absolute;inset:0;background:var(--schrift-hell);
  animation:tropf 2.6s cubic-bezier(.6,0,.3,1) infinite}
@keyframes tropf{0%{transform:translateY(-100%)}62%,100%{transform:translateY(100%)}}
@media not all{.runter i::after{animation:none;opacity:.55}}
@media (max-width:760px){.runter{display:none}}

/* ===== Kennzahlen ==================================================== */
.kennzahlen{display:flex;gap:clamp(2rem,4.5vw,4rem);margin:3rem 0 0;flex-wrap:wrap}
.kennzahl b{display:block;font-weight:300;font-size:clamp(2rem,1.4rem + 1.7vw,3rem);
  line-height:1;color:var(--oliv);letter-spacing:-.02em}
.kennzahl span{display:block;font-size:.66rem;letter-spacing:.22em;text-transform:uppercase;
  color:var(--text-leise);margin-top:.75rem}

/* ===== Vollbildband ================================================== */
.zitat{position:relative;min-height:min(88vh,860px);display:flex;align-items:center;
  justify-content:center;overflow:hidden;background:var(--fels)}
.zitat-bild{position:absolute;inset:-30% 0}
.zitat-bild img{width:100%;height:100%;object-fit:cover}
.zitat::after{content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(28,30,19,.5),rgba(28,30,19,.24) 45%,rgba(28,30,19,.66))}
.zitat-inhalt{position:relative;z-index:2;text-align:center;color:var(--schrift-hell);
  padding:5rem clamp(1.4rem,5vw,4.5rem);max-width:980px}
.zitat-inhalt p{font-weight:300;font-size:clamp(1.9rem,1.1rem + 3.4vw,5rem);line-height:1.1;
  margin:0;letter-spacing:-.015em;color:var(--schrift-hell);
  /* zweistufig: harte Kante + weiter Hof. Ein einziger weicher Schatten
     franst auf Windows aus. -> [[demo-effekte-windows-pruefen]] */
  text-shadow:0 1px 2px rgba(18,22,17,.75),0 2px 34px rgba(18,22,17,.5)}
.zitat-inhalt cite{display:block;margin-top:2.4rem;font-style:normal;font-size:.68rem;
  letter-spacing:.32em;text-transform:uppercase;opacity:.76}

/* ===== Zimmer: das Bild bleibt stehen, der Text laeuft ================ */
.zimmer-buehne{display:grid;grid-template-columns:1fr 1.05fr;gap:clamp(2.5rem,6vw,6rem);
  margin-top:clamp(3rem,6vw,5rem);align-items:start}
/* Die klebende Buehne ist so hoch wie der Bildschirm. Der Rahmen darin
   hat ein festes Seitenverhaeltnis (3/4.15) — bei breiter Spalte wurde er
   damit HOEHER als der Bildschirm und lief oben unter die Kopfzeile und
   unten aus dem Bild. Deshalb begrenzt max-height jetzt die Hoehe, und
   die Breite ergibt sich daraus (statt umgekehrt).                      */
.zimmer-fach{position:sticky;top:0;height:100svh;display:flex;
  align-items:center;justify-content:center;padding:5.5rem 0 2.5rem}
.zimmer-rahmen{position:relative;width:100%;aspect-ratio:3/4.15;
  max-height:100%;margin-inline:auto;
  border-radius:999px 999px 3px 3px;overflow:hidden;background:var(--band)}
.zimmer-rahmen img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
  opacity:0;transform:translate3d(0,var(--py,0px),0) scale(var(--zoom,1.16));
  transition:opacity 1.1s cubic-bezier(.16,.84,.34,1),--zoom 1.7s cubic-bezier(.16,.84,.34,1)}
.zimmer-rahmen img.an{opacity:1;--zoom:1.06}
.zimmer-texte{padding:clamp(2rem,9vh,7rem) 0}
/* Jedes Zimmer bekommt fast eine Bildschirmhoehe — nur dann klebt das Bild
   lange genug, dass der Wechsel spuerbar wird. */
.zimmer{min-height:82svh;display:flex;flex-direction:column;justify-content:center;
  padding:clamp(2rem,5vh,4rem) 0;border-bottom:1px solid var(--linie)}
.zimmer:last-child{border-bottom:0}
.zimmer-kopf{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;
  margin-bottom:1.6rem}
.zimmer-kopf b{font-weight:400;font-size:.74rem;letter-spacing:.18em;text-transform:uppercase;
  color:var(--sand-tief);white-space:nowrap}
.zimmer-bild-mobil{display:none}
.merkmale{list-style:none;margin:1.8rem 0 2.2rem;padding:0;
  display:grid;grid-template-columns:1fr 1fr;gap:.6rem 1.5rem}
.merkmale li{font-size:.9rem;color:var(--text-leise);display:flex;gap:.7rem;
  align-items:baseline;line-height:1.55}
.merkmale li::before{content:"";width:10px;height:1px;background:var(--sand);flex:none;
  transform:translateY(-5px)}

/* Ohne klebende Bildbuehne: eine ruhige Liste. Bei Ladurn gibt es online
   nur zwei Innenaufnahmen — ein Landschaftsfoto auf einer Suiten-Karte waere
   eine Behauptung, also steht dort Typografie statt Bild. */
.zimmer-liste{max-width:900px;margin:clamp(3rem,6vw,5rem) auto 0}
.zimmer-liste .zimmer{min-height:0;padding:clamp(2.2rem,4vw,3.2rem) 0}

/* ===== Bildpaare ===================================================== */
.doppelbild{display:grid;grid-template-columns:1fr 1fr;gap:clamp(1rem,2vw,1.8rem);
  margin-top:clamp(1rem,2vw,1.8rem)}
/* ACHTUNG: Zwei Reihen uebereinander brauchen DIESELBE Rinne, sonst sitzt die Naht
   der unteren Reihe neben der Bildkante der oberen. Bei 1440 px hatte .zwei
   86,4 px Rinne (Spalten 604,8) und .doppelbild 28,8 px (Spalten 633,6) — die
   untere Naht lag 28,8 px daneben, und beide Bilder ragten ueber die Spalten
   darueber hinaus. Das war das Unruhige im Wellness-Abschnitt.
   Nur die WAAGRECHTE Rinne angleichen: am Handy stapelt die Reihe, dort zaehlt
   allein der Zeilenabstand — der bleibt eng. */
/* ACHTUNG: Und die Rinne muss in BEIDE Richtungen gleich sein. Erst war nur die
   waagrechte angeglichen: 86 px seitlich gegen 29 px nach oben — die zwei
   unteren Bilder klebten am oberen und standen zugleich weit auseinander.
   Ein Raster wirkt nur ruhig, wenn ein einziger Abstand alles regelt. */
.doppelbild.weit{column-gap:clamp(2.5rem,6vw,7rem);margin-top:clamp(2.5rem,6vw,7rem)}
.wellness-zahl{
  position:absolute;left:clamp(1.4rem,3vw,2.8rem);bottom:clamp(1.2rem,3vw,2.4rem);
  font-weight:300;font-size:clamp(2.6rem,2rem + 2.6vw,4.6rem);line-height:1;
  color:var(--schrift-hell);z-index:2;letter-spacing:-.03em;
}
.wellness-zahl small{display:block;font-weight:300;font-size:.6rem;letter-spacing:.28em;
  text-transform:uppercase;opacity:.82;margin-top:.7rem}
.breitbild:has(.wellness-zahl)::after{
  content:"";position:absolute;left:0;right:0;bottom:0;height:54%;pointer-events:none;
  background:linear-gradient(180deg,rgba(28,30,19,0),rgba(28,30,19,.6));
}

/* ===== Lage ==========================================================
   Aus dem Vorbild uebernommen: die Adresse als Definitionsliste und eine
   Karte, die erst auf Klick von Google geladen wird. */
.adresse{list-style:none;margin:2.6rem 0 0;padding:0}
.adresse li{display:grid;grid-template-columns:7.5rem 1fr;gap:1.6rem;padding:1.2rem 0;
  border-top:1px solid var(--linie);font-size:.95rem}
.tief .adresse li{border-color:var(--linie-hell)}
.adresse b{font-weight:400;font-size:.66rem;letter-spacing:.22em;text-transform:uppercase;
  color:var(--oliv);padding-top:.32rem}
.tief .adresse b{color:var(--sand)}
.adresse a{display:inline-block;padding:.15rem 0;min-height:26px;text-decoration:none;
  border-bottom:1px solid transparent;transition:border-color .3s ease}
.adresse a:hover,.adresse a:focus-visible{border-color:var(--sand)}
.karte{position:relative;background:var(--band);min-height:360px;height:100%;width:100%;
  display:flex;align-items:center;justify-content:center;text-align:center;padding:2.5rem;
  border:1px solid var(--linie)}
.karte iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.karte-hinweis{font-size:.78rem;color:var(--text-leise);max-width:32ch;margin:1.3rem auto 0;line-height:1.6}
.karte-nadel{width:1px;height:40px;background:var(--oliv);margin:0 auto 1.5rem}

/* ===== Anfrage ======================================================= */
.formular{display:grid;grid-template-columns:1fr 1fr;gap:1.8rem 2.2rem;margin-top:2.8rem}
.feld{display:flex;flex-direction:column;gap:.55rem}
.feld.weit{grid-column:1/-1}
.feld label{font-size:.65rem;letter-spacing:.24em;text-transform:uppercase;color:var(--sand)}
.feld input,.feld textarea{
  background:none;border:0;border-bottom:1px solid var(--linie-hell);color:var(--schrift-hell);
  font-family:var(--sans);font-weight:300;font-size:1rem;padding:.75rem 0;transition:border-color .35s ease;
}
.feld input:focus,.feld textarea:focus{outline:none;border-color:var(--sand)}
.feld textarea{resize:vertical;min-height:5.5rem}
.formular-fuss{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;
  gap:2rem;flex-wrap:wrap;margin-top:1rem}
.formular-fuss small{font-size:.76rem;color:var(--schrift-hell-leise);max-width:42ch;line-height:1.6}

/* ===== Fusszeile ===================================================== */
.fuss{background:var(--fels-tief);color:var(--schrift-hell);
  padding:clamp(4rem,8vw,6.5rem) clamp(1.4rem,5vw,4.5rem) 2.5rem}
.fuss-raster{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:clamp(2.5rem,5vw,4.5rem);
  max-width:1340px;margin:0 auto}
.fuss h4{font-weight:500;font-size:.66rem;letter-spacing:.26em;text-transform:uppercase;
  color:var(--sand);margin:0 0 1.5rem}
.fuss ul{list-style:none;margin:0;padding:0}
.fuss li{margin-bottom:.8rem}
.fuss a{display:inline-block;text-decoration:none;font-size:.92rem;padding:.2rem 0;min-height:26px;
  color:var(--schrift-hell-leise);transition:color .3s ease}
.fuss a:hover,.fuss a:focus-visible{color:var(--sand)}
.fuss-logo{width:178px;height:auto;margin:0 0 1.6rem}
.fuss-schluss{max-width:1340px;margin:clamp(3rem,6vw,4.5rem) auto 0;padding-top:2rem;
  border-top:1px solid var(--linie-hell);display:flex;justify-content:space-between;gap:1.5rem;
  flex-wrap:wrap;font-size:.75rem;color:var(--schrift-hell-leise)}

/* ===== Entwurfsmarke ================================================= */
.entwurf{
  position:fixed;left:1rem;bottom:1rem;z-index:80;background:rgba(20,24,18,.92);
  color:var(--schrift-hell);border:1px solid var(--linie-hell);backdrop-filter:blur(10px);
  font-size:.65rem;letter-spacing:.15em;text-transform:uppercase;padding:.62rem .95rem;
  display:flex;align-items:center;gap:.65rem;
}
.entwurf i{width:5px;height:5px;border-radius:50%;background:var(--sand);flex:none}
.entwurf button{background:none;border:0;color:inherit;cursor:pointer;opacity:.6;font-size:1rem;
  line-height:1;padding:.4rem;margin:-.4rem -.2rem -.4rem .2rem;min-width:26px;min-height:26px}

/* ===== Wortmarke =====================================================
   Drei der vier Haeuser haben kein Logo als Datei. Statt ein Bild zu
   erfinden, steht der Name gesetzt da: sehr leicht, weit gesperrt, mit
   einer Unterzeile. Das traegt genauso und bleibt bei jeder Groesse scharf. */
.wortmarke{display:block;line-height:1;text-decoration:none;color:inherit}
.wortmarke b{display:block;font-weight:400;font-size:1.32rem;letter-spacing:.04em;white-space:nowrap}
.wortmarke span{display:block;font-size:.55rem;letter-spacing:.34em;text-transform:uppercase;
  opacity:.72;margin-top:.42rem;white-space:nowrap}
.titel-logo .wortmarke b{font-size:clamp(2.5rem,1.2rem + 5.4vw,5.6rem);letter-spacing:-.005em;
  text-shadow:0 1px 2px rgba(10,12,8,.8),0 2px 30px rgba(10,12,8,.65)}
.titel-logo .wortmarke span{font-size:clamp(.6rem,.5rem + .3vw,.76rem);letter-spacing:.42em;
  margin-top:1.1rem;opacity:.9;text-shadow:0 1px 2px rgba(10,12,8,.8)}
.fuss .wortmarke{margin-bottom:1.6rem}
.fuss .wortmarke b{font-size:1.5rem}

/* ===== Preistabelle ==================================================
   Die Haeuser veroeffentlichen echte Saisonpreise. Eine Tabelle ist dafuer
   das richtige Werkzeug — und bei Trojer der eigentliche Fortschritt:
   dort liegen die Preise heute als Bilddatei auf der Seite. */
.preisrahmen{overflow-x:auto;margin-top:clamp(2.2rem,4vw,3.2rem);
  scrollbar-width:thin;scrollbar-color:var(--sand) transparent}
.preisrahmen::-webkit-scrollbar{height:9px}
.preisrahmen::-webkit-scrollbar-track{background:transparent}
.preisrahmen::-webkit-scrollbar-thumb{background:var(--sand);border-radius:99px}
table.preise{border-collapse:collapse;width:100%;min-width:620px;font-size:.93rem}
table.preise caption{text-align:left;padding:0 0 1.2rem;font-size:.66rem;letter-spacing:.26em;
  text-transform:uppercase;color:var(--text-leise)}
.tief table.preise caption{color:var(--schrift-hell-leise)}
table.preise th,table.preise td{padding:1rem 1.4rem 1rem 0;text-align:left;
  border-bottom:1px solid var(--linie);vertical-align:baseline}
.tief table.preise th,.tief table.preise td{border-color:var(--linie-hell)}
table.preise thead th{font-weight:400;font-size:.66rem;letter-spacing:.2em;text-transform:uppercase;
  color:var(--oliv);white-space:nowrap;padding-bottom:1.1rem}
.tief table.preise thead th{color:var(--sand)}
table.preise tbody th{font-weight:300;color:var(--text);white-space:nowrap}
.tief table.preise tbody th{color:var(--schrift-hell)}
table.preise td{font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--text-leise)}
.tief table.preise td{color:var(--schrift-hell-leise)}
table.preise tbody tr:last-child th,table.preise tbody tr:last-child td{border-bottom:0}
table.preise .klein{display:block;font-size:.78rem;color:var(--text-leise);margin-top:.25rem}
.tief table.preise .klein{color:var(--schrift-hell-leise)}

/* ===== Hinweiszeilen unter Tabellen und Listen ======================= */
.hinweise{list-style:none;margin:clamp(2rem,4vw,3rem) 0 0;padding:0;
  display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1.6rem 2.6rem}
.hinweise li{border-top:1px solid var(--linie);padding-top:1.1rem;font-size:.92rem;color:var(--text-leise);line-height:1.6}
.tief .hinweise li{border-color:var(--linie-hell);color:var(--schrift-hell-leise)}
.hinweise b{display:block;font-weight:400;font-size:.66rem;letter-spacing:.22em;text-transform:uppercase;
  color:var(--oliv);margin-bottom:.5rem}
.tief .hinweise b{color:var(--sand)}

/* ===== Schmale Bildschirme =========================================== */
@media (max-width:1024px){
  /* Die klebende Bildbuehne braucht zwei Spalten. Am Handy steht das Bild
     stattdessen ueber jedem Text. */
  .zimmer-buehne{grid-template-columns:1fr;gap:0}
  .zimmer-fach{display:none}
  .zimmer-bild-mobil{display:block;margin-bottom:2rem}
  .zimmer-texte{padding:0}
  .zimmer{min-height:0;display:block;padding:clamp(2.5rem,6vw,4rem) 0}
}
@media (max-width:980px){
  .zwei,.formular,.fuss-raster{grid-template-columns:1fr}
  .leistungen{columns:1}
  .zwei .bildspalte{order:-1}
  .zwei .kartenspalte{order:0}
  .lead,.fliess,.mitte .lead{max-width:none}
  h2{max-width:none}
}
@media (max-width:760px){
  .menue,.kopf .knopf{display:none}
  .burger{display:block}
  .kopf.offen{background:var(--papier);color:var(--tinte);flex-wrap:wrap;height:100dvh;align-content:flex-start}
  .kopf.offen::before{opacity:0}
  .kopf.offen .marke-hell{opacity:0}
  .kopf.offen .marke-dunkel{opacity:1}
  .kopf.offen .menue{display:flex;flex-direction:column;align-items:flex-start;gap:.5rem;
    width:100%;margin-top:3.5rem}
  .kopf.offen .menue a{font-size:1.7rem;font-weight:300;letter-spacing:0;text-transform:none;opacity:1}
  .kopf.offen .knopf{display:inline-block;margin-top:2rem;color:var(--tinte);border-color:var(--tinte)}
  .titel{height:100dvh}
  .titel-inhalt{padding-bottom:5rem}
  .doppelbild{grid-template-columns:1fr}
  .doppelbild.eng{grid-template-columns:1fr 1fr}
  .merkmale{grid-template-columns:1fr}
  .adresse li{grid-template-columns:1fr;gap:.3rem}
  .entwurf{left:.7rem;right:.7rem;bottom:.9rem;font-size:.56rem;justify-content:center}
  /* Am Handy liegt der Name mitten im Bild — der Verlauf muss frueher greifen. */
  .titel::after{background:
    linear-gradient(180deg,rgba(18,22,17,.5) 0%,rgba(18,22,17,.1) 18%,rgba(18,22,17,.45) 42%,rgba(18,22,17,.8) 66%,rgba(18,22,17,.94) 100%)}
}

/* ===== Ruhemodus ===================================================== */
/* ACHTUNG! Frueher stand hier die Abrissbirne: `*{animation-duration:.01ms}` plus
   `transition-duration:.01ms` legte JEDE Regung still. Auf Windows ist diese
   Einstellung haeufig an, ohne dass der Nutzer es weiss — und dann wirkte der
   Entwurf voellig tot. Jetzt bleibt weg, was den Gleichgewichtssinn reizt
   (grosse Verschiebungen, scrollgekoppelte Zooms), und was sanft ist, bleibt:
   Einblenden ueber Deckkraft, der langsame Titelzoom, das Karussell. */
@media not all{
  html{scroll-behavior:auto}
  /* raus: alles, was gross ueber den Schirm wandert */
  .js .stufe,.stufe{transform:none!important}
  .js .vorhang,.vorhang{clip-path:none!important}
  .js .vorhang img,.vorhang img{--zoom:1!important}
  .zimmer-rahmen img,.zimmer-rahmen img.an{--zoom:1!important}
  .titel{position:relative}
  .js .zeilen>span,.zeilen>span{transform:none!important;animation:none!important}
  .titel h1 span i{transform:none;animation:none!important}
  .rubrik::before,.mitte .rubrik::after{width:36px}
  .zimmer-fach{position:static;height:auto}
  /* bleibt: Deckkraft-Einblendungen und ein ruhigerer Titelzoom */
  .titel-bild img{animation-duration:40s!important}
}

/* ══════════════════════════════════════════════════════════════════════
   EFFEKT- EBENE — die zweite, laute Schicht ueber dem ruhigen Kern.
   Ziel: die Seite soll beim ersten Scrollen umhauen, ohne billig zu wirken.
   Alles hier ist additiv; der Kern (stil.css) bleibt unberuehrt und traegt
   die Seite auch dann, wenn diese Schicht abgeschaltet wird.

   REGELN, die hier genauso gelten wie im Kern:
   - Grosse, scrollgekoppelte Bewegungen NUR ausserhalb von reduced-motion.
   - Alles Cursor-Abhaengige NUR in @media (hover:hover) — sonst blitzt es
     auf dem ersten Touch auf. -> [[handy-tipp-loest-mouseenter-aus]]
   - Kein 100vw, gestaltete Scrollleiste, zweistufige Schatten. Windows.
   - Textschatten nie als einziger weicher Schein unter kleiner Schrift.
   ══════════════════════════════════════════════════════════════════════ */

/* ===== 1 · Wort-Aufzug mit Schaerfe ==================================
   Der Kern faehrt Ueberschriften zeilenweise hoch. Das hier setzt eine
   Stufe drauf: jedes WORT steigt einzeln, leicht unscharf und tiefer
   startend, und wird beim Ankommen scharf. Das Auge liest die Zeile
   entstehen — teurer Effekt, den man von den grossen Hotelseiten kennt.
   Das Skript zerlegt <span class="zeilen"> in <span class="wort">-Stuecke;
   faellt das Skript aus, bleibt der Kern-Effekt (ganze Zeile) bestehen. */
.js .worte .wort{
  display:inline-block;white-space:pre;
  transform:translateY(130%) rotate(4deg) scale(.94);
  filter:blur(11px);opacity:0;transform-origin:0 90%;
  transition:transform 1.25s cubic-bezier(.16,.84,.34,1),
             filter .95s ease,opacity .9s ease;
}
.js .worte{overflow:hidden;display:inline;padding-bottom:.18em;margin-bottom:-.18em}
/* Damit die Maske die Unterlaengen nicht kappt (das g in „Tag"): der
   Zeilenkasten bekommt unten Luft, die per negativem Rand zurueckgeholt
   wird — wie .zeilen im Kern, aber je Wortzeile. */
.js .sicht .worte .wort{transform:none;filter:blur(0);opacity:1}
/* Staffelung ueber eine vom Skript gesetzte Variable --wi (Wortindex). */
.js .sicht .worte .wort{transition-delay:calc(var(--wi,0) * 82ms)}
@media not all{
  .js .worte .wort,.js .sicht .worte .wort{
    transform:none!important;filter:none!important;opacity:1!important;transition:none!important}
}

/* ===== 2 · Aufziehende Bildmaske =====================================
   Bilder mit .enthuellen erscheinen nicht per Deckkraft, sondern eine
   Blende faehrt hoch (clip-path) waehrend das Bild aus 1.12 sanft auf
   Mass geht. Das ist der „Vorhang" des Kerns, aber schneller und mit
   einem duennen Lichtstrich, der mit der Blende mitlaeuft. */
.enthuellen{position:relative;overflow:hidden}
.js .enthuellen>img,.js .enthuellen .bild{
  clip-path:inset(100% 0 0 0);
  transform:scale(1.2);
  transition:clip-path 1.5s cubic-bezier(.16,.84,.34,1),
             transform 1.9s cubic-bezier(.16,.84,.34,1);
}
.js .sicht.enthuellen>img,.js .sicht .enthuellen>img,
.js .sicht.enthuellen .bild,.js .sicht .enthuellen .bild{
  clip-path:inset(0 0 0 0);transform:scale(1);
}
/* Der Lichtstrich: eine helle Kante, die genau an der Blende sitzt und
   mit ihr nach oben verschwindet. */
.enthuellen::after{
  content:"";position:absolute;left:0;right:0;top:0;height:42%;z-index:3;pointer-events:none;
  background:linear-gradient(180deg,rgba(255,255,255,0),rgba(255,255,255,.14) 82%,rgba(255,255,255,.5));
  opacity:0;transform:translateY(-10%);
}
.js .enthuellen::after{opacity:0;transform:translateY(100%)}
.js .sicht.enthuellen::after,.js .sicht .enthuellen::after{
  opacity:0;transform:translateY(-30%);
  transition:transform 1.35s cubic-bezier(.16,.84,.34,1),opacity 1.35s ease;
}
@media not all{
  .js .enthuellen>img,.js .enthuellen .bild,
  .js .sicht .enthuellen>img,.js .sicht .enthuellen .bild{
    clip-path:none!important;transform:none!important}
  .enthuellen::after{display:none}
}

/* ===== 3 · Bogenbild kippt zum Zeiger (3D-Tilt) ======================
   Auf grossen Schluesselbildern (der Bogen) liegt eine leichte
   Raeumlichkeit: das Bild neigt sich sanft in die Richtung, in die die
   Maus zeigt, und ein Glanzfleck wandert mit. Sehr klein gehalten —
   hochwertig, nicht verspielt. Das Skript setzt --nx/--ny (-1..1) und
   --gx/--gy (Glanzposition in %). */
@media (hover:hover){
  .kippt{transform-style:preserve-3d;will-change:transform;perspective:1100px}
  .kippt>img,.kippt .bild{
    transform:rotateX(calc(var(--ny,0) * -6deg)) rotateY(calc(var(--nx,0) * 6deg)) scale(1.05);
    transition:transform .3s cubic-bezier(.16,.84,.34,1);
  }
  .kippt.ruht>img,.kippt.ruht .bild{transition:transform .9s cubic-bezier(.16,.84,.34,1)}
  /* Glanz: ein weicher Lichtfleck, folgt dem Zeiger. Multiplikativ hell,
     bleibt im Rahmen (overflow der Bogen-Klasse). */
  .kippt::before{
    content:"";position:absolute;inset:0;z-index:2;pointer-events:none;mix-blend-mode:soft-light;
    background:radial-gradient(38% 38% at var(--gx,50%) var(--gy,42%),rgba(255,255,255,.85),rgba(255,255,255,0) 70%);
    opacity:0;transition:opacity .4s ease;
  }
  .kippt:hover::before{opacity:.9}
}

/* ===== 4 · Titelbild: Kino-Auflage ===================================
   Ueber das Titelfoto kommen zwei Schichten, die den teuren Look machen:
   ein feines, statisches Filmkorn und eine sanft atmende Vignette am
   Rand. Beides bewusst schwach — es soll das Foto adeln, nicht zukleben.
   Liegt UNTER .titel-inhalt (Text bleibt oben), UEBER dem Bild. */
.titel-korn{position:absolute;inset:0;z-index:1;pointer-events:none;opacity:.035;mix-blend-mode:overlay;
  background-image:var(--korn);background-size:200px 200px}
.titel-vignette{position:absolute;inset:0;z-index:1;pointer-events:none;
  background:radial-gradient(135% 125% at 50% 40%,rgba(0,0,0,0) 58%,rgba(8,10,6,.28));
  animation:atmen 11s ease-in-out infinite alternate}
@keyframes atmen{from{opacity:.55}to{opacity:.9}}
.js .titel-vignette{animation-play-state:paused}
.js.bereit .titel-vignette{animation-play-state:running}
@media not all{.titel-vignette{animation:none;opacity:.85}}

/* Der Licht-Sweep ueber dem Titelbild ist RAUS (02.09.2026).
   Jannik: "dieser komische Effekt, der aussieht wie eine PowerPoint".
   Ein Balken, der einmal ueber das Bild wischt, ist ein Praesentations-
   Uebergang, kein Gestaltungsmittel. Das Markup traegt das leere
   <div class="titel-sweep"> weiterhin, es tut nur nichts mehr.
   NICHT wieder einbauen. */
.titel-sweep{display:none}

/* ===== 5 · Magnet-Knopf: Glanzwisch ==================================
   Der Kern hat schon den fuellenden Hintergrund. Hier zusaetzlich ein
   heller Streifen, der beim Ueberfahren einmal ueber den Knopf wischt. */
@media (hover:hover){
  .knopf{--wisch:-120%}
  .knopf::before{
    content:"";position:absolute;top:0;bottom:0;left:0;width:60%;z-index:1;pointer-events:none;
    background:linear-gradient(100deg,rgba(255,255,255,0),rgba(255,255,255,.28),rgba(255,255,255,0));
    transform:translateX(var(--wisch)) skewX(-14deg);
  }
  .knopf:hover::before,.knopf:focus-visible::before{
    --wisch:220%;transition:transform .9s cubic-bezier(.22,.61,.36,1)}
  /* der Text muss ueber dem Wisch bleiben */
  .knopf{isolation:isolate}
}

/* ===== 6 · Sektionsmarke: die grosse Zahl im Hintergrund =============
   Optional pro Band: eine sehr grosse, sehr blasse Ziffer/Wort, die beim
   Reinscrollen quer einschwebt. Gibt langen Baendern Struktur und Tiefe,
   ohne Inhalt hinzuzufuegen. Nur wo die Klasse gesetzt ist. */
/* Statt das Band zu beschneiden, bleibt die Kennziffer selbst im Rahmen:
   sie sitzt jetzt am Rand (right:0 statt -2%) und wird nicht mehr
   ueberstehend positioniert. */
.marke-gross{position:absolute;z-index:0;pointer-events:none;user-select:none;
  max-width:100%;overflow:hidden;
  font-weight:200;line-height:.8;letter-spacing:-.04em;
  font-size:clamp(7rem,28vw,22rem);color:var(--tinte);opacity:.04;
  transform:translateX(6%);transition:transform 1.6s cubic-bezier(.16,.84,.34,1),opacity 1.6s ease}
.tief .marke-gross{color:var(--schrift-hell)}
.js .marke-gross{opacity:0;transform:translateX(14%)}
.js .sicht .marke-gross{opacity:.05;transform:translateX(0)}
/* ⛔⛔ HIER LAG DER FEHLER (gefunden 02.09.2026)
   Dieses overflow:hidden kam mit der Effektschicht dazu, damit die grosse
   blasse Kennziffer (.marke-gross) nicht ueber den Bandrand hinausragt.
   Nebenwirkung: overflow:hidden auf einem VORFAHREN schaltet
   position:sticky im ganzen Band ab. Die klebende Zimmerbuehne klebte
   damit nicht mehr, sondern scrollte mit und lief unter die Kopfzeile —
   genau der "verschissene" Zimmer-Effekt.

   Loesung: nicht das Band beschneiden, sondern die Kennziffer selbst
   (clip-path auf .marke-gross, siehe unten). sticht bleibt heil.
   NICHT wieder overflow:hidden auf .band setzen.                        */
.band{position:relative}
.band>.innen{position:relative;z-index:1}
@media not all{
  .js .marke-gross,.js .sicht .marke-gross{transform:none!important;opacity:.045!important}
}

/* ===== 7 · Randlinien, die sich ziehen ===============================
   Duenne Trennlinien (unter Rubriken, ueber Fusszeilen) wachsen beim
   Reinscrollen aus dem Nichts. Der Kern macht das schon fuer .rubrik;
   hier fuer eine frei setzbare .strichlinie. */
.strichlinie{position:relative;height:1px;background:var(--linie);overflow:hidden;margin:0}
.strichlinie::after{content:"";position:absolute;inset:0;background:var(--oliv);
  transform:scaleX(0);transform-origin:left;transition:transform 1.3s cubic-bezier(.16,.84,.34,1)}
.js .sicht .strichlinie::after,.js .sicht.strichlinie::after{transform:scaleX(1)}

/* ===== 8 · Sanfter Auftakt — bewusst NICHT ueber body-opacity =========
   Ein Fade des GANZEN body ueber .bereit ist zu gefaehrlich: greift der
   Schalter auf einem Geraet nicht, bleibt die komplette Seite unsichtbar
   („lautlos tot"). Der Kern blendet Titelbild und Text ohnehin schon
   sauber ein — ein zusaetzlicher Ganzseiten-Fade ist den Einsatz nicht
   wert. Deshalb hier bewusst leer gelassen. */

/* ══════════════════════════════════════════════════════════════════════
   inhalt.css — Bausteine für INHALT, die dem Pro-Kern fehlten
   ----------------------------------------------------------------------
   Beim Umbau auf den Mirabell-Pro-Stil (01.09.2026) sind die inhaltlichen
   Bausteine der ersten Fassung mit rausgeflogen: die Ausflugskarten, die
   Inklusivleistungen, die Infolisten, die Galerie. Genau die Abschnitte,
   die den Kunden verkaufen — Pool, Kinder, Wellness, was im Preis drin ist.

   Diese Datei bringt sie zurück, aber in der Formsprache des Pro-Kerns:
   dünne Linien statt Kästen, Sand als einzige Akzentfläche, Versalien-
   Rubriken, keine zweite Schriftfamilie, kein zweites Grün.

   Wird NACH stil.css und effekt.css eingebunden.
   ══════════════════════════════════════════════════════════════════════ */

/* ── Ausflugskarten ────────────────────────────────────────────────────
   Drei Ziele nebeneinander. Bild im Bogen-Anschnitt oben, darunter Text.
   Bewusst ohne Kasten und ohne Schatten — die Trennung macht eine
   Haarlinie, wie überall sonst auf der Seite auch.                      */
.ziele{
  display:grid;grid-template-columns:repeat(3,1fr);
  gap:clamp(2rem,4.5vw,4.5rem);
  margin-top:clamp(2.8rem,6vw,5rem);
}

.ziel{display:flex;flex-direction:column}

.ziel-bild{
  position:relative;overflow:hidden;aspect-ratio:4/3;
  border-radius:220px 220px 3px 3px;
  background:var(--band-tief);
}

.ziel-bild img{
  width:100%;height:100%;object-fit:cover;display:block;
  transition:transform 1.2s cubic-bezier(.16,.84,.34,1);
}

/* Nur auf echten Zeigergeräten — sonst klebt der Zustand am Finger fest. */
@media (hover:hover){
  .ziel:hover .ziel-bild img{transform:scale(1.06)}
}

.ziel h3{
  font-size:clamp(1.28rem,2vw,1.62rem);font-weight:300;letter-spacing:-.01em;
  margin:1.6rem 0 0;line-height:1.2;
}

/* Meta-Zeile: Länge, Dauer, Schwierigkeit. Zahlen tragen die Information,
   deshalb stehen sie in der Hausfarbe und gesperrt.                     */
.ziel-meta{
  display:flex;flex-wrap:wrap;gap:.55rem 1.1rem;margin:.85rem 0 0;
  font-size:.7rem;letter-spacing:.16em;text-transform:uppercase;
  color:var(--oliv);
}

.ziel-meta span{display:inline-flex;align-items:center;gap:.6rem}
.ziel-meta span+span::before{
  content:"";width:3px;height:3px;border-radius:99px;background:var(--sand);
  margin-right:.5rem;flex:none;
}

.ziel p{
  font-size:.94rem;line-height:1.72;color:var(--text-leise);
  margin:1rem 0 0;
}

/* ── Leistungsliste ────────────────────────────────────────────────────
   „Was in jeder Wohnung selbstverständlich ist." Zwei Spalten, je Zeile
   eine Haarlinie darüber — dasselbe Muster wie .adresse, damit die Seite
   nicht in zwei Gestaltungswelten zerfällt.                             */
.leistungen{
  list-style:none;margin:clamp(2.4rem,5vw,3.6rem) 0 0;padding:0;
  display:grid;grid-template-columns:1fr 1fr;
  column-gap:clamp(2.5rem,6vw,6rem);
}

.leistungen li{
  display:grid;grid-template-columns:auto 1fr;gap:1.4rem;
  padding:1.5rem 0;border-top:1px solid var(--linie);
}

.leistungen b{
  grid-column:1/-1;font-weight:400;
  font-size:.68rem;letter-spacing:.22em;text-transform:uppercase;
  color:var(--oliv);margin-bottom:.55rem;
}

.leistungen span{
  grid-column:1/-1;
  font-size:.95rem;line-height:1.7;color:var(--text-leise);
}

/* Auf dunklem Band (.tief) drehen sich Linie und Textfarbe. */
.tief .leistungen li{border-color:var(--linie-hell)}
.tief .leistungen span{color:var(--schrift-hell-leise)}
.tief .leistungen b{color:var(--sand)}
.tief .ziel p{color:var(--schrift-hell-leise)}
.tief .ziel-meta{color:var(--sand)}

/* ── Zwei Infospalten ──────────────────────────────────────────────────
   „Im Preis inbegriffen" / „Dazu kommt". Keine Kästen: eine senkrechte
   Haarlinie trennt, mehr braucht es nicht.                              */
.spalten{
  display:grid;grid-template-columns:1fr 1fr;
  gap:clamp(2.5rem,6vw,6rem);
  margin-top:clamp(2.4rem,5vw,3.6rem);
}

.spalten>div+div{
  padding-left:clamp(2.5rem,6vw,6rem);
  border-left:1px solid var(--linie);
  margin-left:calc(-1 * clamp(2.5rem,6vw,6rem));
}

.tief .spalten>div+div{border-color:var(--linie-hell)}

.spalten h3{
  font-size:clamp(1.15rem,1.7vw,1.4rem);font-weight:300;
  margin:0 0 .4rem;letter-spacing:-.005em;
}

.spalten .leistungen{grid-template-columns:1fr;margin-top:1.4rem}

/* ── Galerie ───────────────────────────────────────────────────────────
   Ein unregelmäßiges Raster, das Luft lässt. Die Bilder tragen den
   .enthuellen-Effekt aus effekt.css.                                    */
.galerie{
  display:grid;grid-template-columns:repeat(6,1fr);
  gap:clamp(.9rem,2vw,1.6rem);
  margin-top:clamp(2.5rem,6vw,5rem);
}

.galerie figure{margin:0;position:relative;overflow:hidden;border-radius:3px}
.galerie img{width:100%;height:100%;object-fit:cover;display:block}

.galerie .g-a{grid-column:span 4;aspect-ratio:3/2}
.galerie .g-b{grid-column:span 2;aspect-ratio:1/1}
.galerie .g-c{grid-column:span 2;aspect-ratio:4/5}
.galerie .g-d{grid-column:span 2;aspect-ratio:4/5}
.galerie .g-e{grid-column:span 2;aspect-ratio:4/5}

/* ══════════ Handy-Regeln ══════════
   ⛔ Diese Blöcke bleiben am ENDE der Datei und gehören zu den Klassen
   darüber. Beim Herausschneiden von Bausteinen sind sie schon einmal
   mitgegangen — danach war die Seite am Handy kaputt, ohne dass am
   Schreibtisch etwas auffiel. -> [[webseiten-demos-baukasten]]           */

@media (max-width:1000px){
  .ziele{grid-template-columns:1fr 1fr;gap:clamp(1.8rem,4vw,3rem)}
  .ziele .ziel:last-child{grid-column:1/-1}
  .ziele .ziel:last-child .ziel-bild{aspect-ratio:16/9;border-radius:180px 180px 3px 3px}
}

@media (max-width:760px){
  .ziele{grid-template-columns:1fr;gap:2.6rem}
  .ziele .ziel:last-child .ziel-bild{aspect-ratio:4/3;border-radius:220px 220px 3px 3px}

  .leistungen{grid-template-columns:1fr}

  .spalten{grid-template-columns:1fr;gap:0}
  .spalten>div+div{
    padding-left:0;border-left:0;margin-left:0;
    margin-top:2.4rem;padding-top:2.4rem;border-top:1px solid var(--linie);
  }
  .tief .spalten>div+div{border-color:var(--linie-hell)}

  .galerie{grid-template-columns:repeat(2,1fr)}
  .galerie .g-a{grid-column:span 2}
  .galerie .g-b,.galerie .g-c,.galerie .g-d,.galerie .g-e{grid-column:span 1}
}

/* Nebenüberschrift in einem zweispaltigen Block — die volle h2-Größe
   (bis 6,2rem) sprengt dort die Spalte. */
h2.klein{font-size:clamp(1.9rem,1.2rem + 2.1vw,3rem)!important;line-height:1.12}


/* ══════════════════════════════════════════════════════════════════════
   Trojer-eigene Ergaenzungen — nur was der gemeinsame Kern nicht kennt.
   Aktuell: die Kachel-Galerie der Startseite (fuenf Bildkacheln, die auf
   die Unterseiten fuehren) und die schlanke Kopf-/Fussnavigation fuer den
   Mehrseiten-Aufbau.
   ══════════════════════════════════════════════════════════════════════ */

/* ===== Kachel-Galerie der Startseite ================================
   Die echte Wix-Startseite ist eine Reihe quadratischer Bildkacheln
   (Gourmet, Zimmer, Freizeit, Wellness, Ueber uns). Hier dieselbe Idee,
   nur edler: grosse Bilder im Bogen-Anklang, Titel steigt beim
   Ueberfahren, ein feiner Schleier traegt die Schrift. */
.kacheln{
  display:grid;grid-template-columns:repeat(3,1fr);
  gap:clamp(1rem,2vw,1.8rem);margin-top:clamp(3rem,6vw,5rem);
}
/* Fuenf Kacheln auf drei Spalten: die ersten beiden Reihen 3+2, die
   zweite Reihe zentriert. */
.kachel{
  position:relative;display:block;text-decoration:none;color:var(--schrift-hell);
  aspect-ratio:4/5;overflow:hidden;border-radius:3px;isolation:isolate;
  background:var(--band);
}
.kachel img{
  position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
  transform:scale(1.04);transition:transform 1.1s cubic-bezier(.16,.84,.34,1),filter .5s ease;
}
.kachel::after{
  content:"";position:absolute;inset:0;z-index:1;pointer-events:none;
  background:linear-gradient(180deg,rgba(16,20,14,0) 38%,rgba(16,20,14,.34) 66%,rgba(16,20,14,.8));
  transition:background .5s ease;
}
.kachel-text{
  position:absolute;left:0;right:0;bottom:0;z-index:2;
  padding:clamp(1.4rem,3vw,2.2rem);
}
.kachel-text b{
  display:block;font-weight:300;font-size:clamp(1.4rem,1.1rem + 1vw,2rem);
  letter-spacing:.01em;line-height:1.05;
  text-shadow:0 1px 2px rgba(10,12,8,.7),0 2px 20px rgba(10,12,8,.5);
}
.kachel-text span{
  display:inline-flex;align-items:center;gap:.6rem;margin-top:.7rem;
  font-size:.68rem;letter-spacing:.22em;text-transform:uppercase;
  color:var(--sand);opacity:0;transform:translateY(8px);
  transition:opacity .5s ease,transform .5s cubic-bezier(.16,.84,.34,1);
}
.kachel-text span::before{content:"";width:22px;height:1px;background:currentColor;transition:width .45s ease}
@media (hover:hover){
  .kachel:hover img{transform:scale(1.1);filter:brightness(1.04)}
  .kachel:hover::after{background:linear-gradient(180deg,rgba(16,20,14,.1) 20%,rgba(16,20,14,.42) 60%,rgba(16,20,14,.86))}
  .kachel:hover .kachel-text span{opacity:1;transform:none}
  .kachel:hover .kachel-text span::before{width:34px}
}
.kachel:focus-visible{outline:2px solid var(--sand);outline-offset:4px}
/* auf schmaleren Schirmen: zwei Spalten, dann eine */
@media (max-width:900px){.kacheln{grid-template-columns:repeat(2,1fr)}}
@media (max-width:560px){.kacheln{grid-template-columns:1fr}.kachel{aspect-ratio:16/11}}

/* ===== Rueckkehr-Zeile auf Unterseiten ==============================
   Kleiner Textlink „zurueck zur Startseite" oben im ersten Band. */
.zurueck{
  display:inline-flex;align-items:center;gap:.7rem;text-decoration:none;
  font-size:.7rem;letter-spacing:.2em;text-transform:uppercase;color:var(--text-leise);
  /* Der Link stand linksbuendig unmittelbar ueber einem zentrierten
     Textblock — das las sich wie eine verrutschte Zeile der Ueberschrift.
     Jetzt steht er als eigene Zeile frei, durch eine Haarlinie darunter
     sichtbar von der Ueberschrift getrennt. */
  margin:0 0 clamp(3rem,6vw,4.5rem);
  padding-bottom:1.4rem;
  border-bottom:1px solid var(--linie);
  width:100%;
}
.zurueck:hover,.zurueck:focus-visible{color:var(--oliv)}
.zurueck::before{content:"";width:22px;height:1px;background:currentColor;transition:width .4s ease}
.zurueck:hover::before{width:34px}

/* ===== Unterseiten-Titel schlanker ==================================
   Die Unterseiten brauchen kein volles 100svh-Titelbild wie die
   Startseite — ein ruhiger, halbhoher Kopf reicht und laesst den Inhalt
   frueher beginnen. */
.kopfbild{position:relative;height:clamp(46vh,52vh,560px);min-height:340px;overflow:hidden;background:var(--fels)}
.kopfbild>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transform:scale(1.08);
  animation:ruhig 22s linear forwards}
.kopfbild::after{content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(16,20,14,.42),rgba(16,20,14,.15) 45%,rgba(16,20,14,.72))}
.kopfbild .kopfbild-inhalt{position:absolute;inset:0;z-index:2;display:flex;flex-direction:column;
  justify-content:flex-end;align-items:flex-start;color:var(--schrift-hell);
  padding:clamp(3rem,7vw,6rem) clamp(1.4rem,5vw,4.5rem) clamp(2.5rem,5vw,4rem)}
.kopfbild .rubrik{color:var(--sand)}
.kopfbild h1{margin:0;font-weight:200;font-size:clamp(2.4rem,1.4rem + 4.4vw,5rem);
  line-height:1.02;letter-spacing:-.02em;color:var(--schrift-hell);
  text-shadow:0 1px 2px rgba(10,12,8,.7),0 2px 30px rgba(10,12,8,.55)}

/* ══════════════════════════════════════════════════════════════════════
   Kopfzeile mit RUNDEM Logo (02.09.2026)
   ----------------------------------------------------------------------
   Der Kern rechnet mit einer Wortmarke — einer flachen Textzeile. Das
   Trojer-Logo ist ein Kreis, also fast quadratisch: bei 150 px Breite
   wurde die Kopfzeile 171 px hoch statt der üblichen ~77. Folge: das
   Zitatband "Der Berg ruft." verschwand hinter der festen Kopfzeile.
   Gemessen, nicht geschätzt: Kopf-Unterkante 171 px, Zitattext bei 118.

   Zwei Stellschrauben, beide klein gehalten:
   1. das Logo auf eine Höhe bringen, die zur Zeile passt
   2. den Zitatinhalten so viel Polster geben, dass sie nie dahinter
      rutschen — auch auf kurzen Schirmen
   ══════════════════════════════════════════════════════════════════════ */

/* Höhe statt Breite steuern: ein rundes Logo skaliert sonst über die
   Zeilenhöhe hinaus. */
.marke img{
  width:auto;
  height:clamp(52px,5.4vw,68px);
}

/* Im festen Zustand rückt die Kopfzeile ohnehin zusammen — das Logo geht
   einen Schritt mit, damit die Zeile schlank bleibt. */
.kopf.fest .marke img{height:clamp(44px,4.4vw,54px)}

/* Das Zitatband mittig, aber mit Sicherheitsabstand nach oben: die feste
   Kopfzeile darf den Satz nie anschneiden. */
.zitat-inhalt{
  padding-top:max(7rem,14vh);
  padding-bottom:max(5rem,10vh);
}

@media (max-width:760px){
  .marke img{height:clamp(44px,11vw,56px)}
  .kopf.fest .marke img{height:clamp(38px,9vw,46px)}
  .zitat-inhalt{padding-top:max(6rem,12vh)}
}

/* ── Kachel-Galerie: Feinschliff (02.09.2026) ──────────────────────────
   Zwei gemessene Schwächen:

   1. Fünf Kacheln auf drei Spalten lassen in der zweiten Reihe rechts ein
      Loch. Jetzt tragen die beiden Kacheln der zweiten Reihe je anderthalb
      Spalten — die Reihe ist voll, und der Wechsel im Rhythmus wirkt
      gewollt statt zufällig.

   2. Der Verlauf ist für die dunklen Motive gebaut. Über der Bettdecke
      (Helligkeit 203 im unteren Drittel, gemessen) trägt er die weiße
      Schrift zwar rechnerisch (Kontrast 8,6), sie steht aber sichtbar
      flauer als auf den anderen vier. Der Verlauf greift dort etwas
      früher und tiefer — nur dort, über eine eigene Klasse.            */

.kacheln > .kachel:nth-child(4),
.kacheln > .kachel:nth-child(5){
  grid-column:span 3;      /* bei 6 Spalten = anderthalb der Dreierreihe */
}
.kacheln{grid-template-columns:repeat(6,1fr)}
.kacheln > .kachel:nth-child(-n+3){grid-column:span 2}

/* ⛔ Verworfen: ein dunkles Kästchen unter der Schrift der hellen Kachel.
   Es sah aus wie ein Fehler, nicht wie Gestaltung, und brach die Reihe.
   Auch "einfach das Bild tauschen" war keine Lösung: die echten
   Zimmerfotos sind messbar besser (Schärfe 390 statt 13, unten dunkler),
   sehen aber altbacken aus — roter Teppich, alte Möbel.

   Stattdessen EINE Behandlung für alle fünf Kacheln, nur kräftiger als
   vorher: der Verlauf setzt früher an und wird unten satter. Das trägt
   die Schrift auch auf dem hellsten Motiv (gemessen: Helligkeit 203 im
   unteren Drittel) und lässt die Reihe als Einheit stehen.             */
.kachel::after{
  background:linear-gradient(180deg,rgba(16,20,14,0) 30%,rgba(16,20,14,.42) 62%,rgba(16,20,14,.88));
}
@media (hover:hover){
  .kachel:hover::after{
    background:linear-gradient(180deg,rgba(16,20,14,.12) 16%,rgba(16,20,14,.5) 56%,rgba(16,20,14,.92));
  }
}

@media (max-width:900px){
  .kacheln{grid-template-columns:repeat(2,1fr)}
  .kacheln > .kachel:nth-child(-n+3),
  .kacheln > .kachel:nth-child(4),
  .kacheln > .kachel:nth-child(5){grid-column:span 1}
  .kacheln > .kachel:nth-child(5){grid-column:span 2;aspect-ratio:16/10}
}
@media (max-width:560px){
  .kacheln{grid-template-columns:1fr}
  .kacheln > .kachel:nth-child(n){grid-column:span 1;aspect-ratio:16/11}
}

/* ── Logo auf den UNTERSEITEN von Anfang an sichtbar ───────────────────
   Der Kern versteckt die Kopfzeilen-Marke, bis die Kopfzeile weiß wird —
   richtig auf der Startseite, wo der Name groß im Titelbild steht.
   Die Unterseiten haben aber nur ein halbhohes .kopfbild ohne Logo:
   dort blieb die Kopfzeile oben links schlicht leer (gemessen:
   opacity 0, visibility hidden).

   Auf jeder Seite MIT .kopfbild ist die Marke deshalb sofort da — in der
   hellen Fassung, weil sie über dem Foto steht.                        */
body:has(.kopfbild) .kopf .marke{opacity:1;visibility:visible}

/* ── Erster Abschnitt nach dem Kopfbild ────────────────────────────────
   Der Kern gibt jedem .band ein großzügiges Polster (bis 176 px), damit
   Abschnitte auf weißem Grund Luft haben. Direkt unter einem 494 px hohen
   Kopfbild ist das zu viel: es entsteht ein leeres Feld, bevor der Inhalt
   anfängt. Der erste Abschnitt rückt deshalb näher heran.               */
.kopfbild + .band,
.kopfbild + * > .band:first-child{
  padding-top:clamp(3.5rem,7vw,6rem);
}

/* ── Das Familienbild ──────────────────────────────────────────────────
   Ein Gruppenfoto ist quer. Im hochkanten Bogen (3x4.15) blieben davon
   gemessen nur 42 % der Breite übrig — Werner war ganz weg, Alex halb.
   Jannik: „schau, dass die ganze Familie gezeigt wird."

   Also über die volle Spaltenbreite im 16:9, mit einer Bildunterschrift,
   die die Namen nennt. Die Namen sind der eigentliche Wert: ein Gesicht
   ohne Namen ist ein Stockfoto, mit Namen ist es der Gastgeber.        */
.familie{margin-top:clamp(3.5rem,7vw,6rem)}

.familie-bild{
  margin:0;position:relative;overflow:hidden;
  border-radius:3px;
  background:var(--band);
}
.familie-bild>img{width:100%;height:auto;display:block}

.familie-bild figcaption{
  position:absolute;left:0;right:0;bottom:0;z-index:2;
  padding:clamp(3rem,7vw,5rem) clamp(1.4rem,3vw,2.6rem) clamp(1.2rem,2.4vw,1.9rem);
  color:var(--schrift-hell);
  background:linear-gradient(180deg,rgba(16,20,14,0),rgba(16,20,14,.74));
  text-shadow:0 1px 2px rgba(16,20,14,.8);
}
.familie-bild figcaption b{
  display:block;font-weight:300;
  font-size:clamp(1.2rem,1rem + .8vw,1.7rem);letter-spacing:.01em;line-height:1.1;
}
.familie-bild figcaption span{
  display:block;margin-top:.55rem;
  font-size:.72rem;letter-spacing:.2em;text-transform:uppercase;
  color:var(--sand);
}

.familie-text{
  max-width:52ch;margin:clamp(1.6rem,3vw,2.4rem) 0 0;
}

@media (max-width:760px){
  .familie-bild figcaption{padding-top:2.4rem}
}

/* ── Die fünf Porträts ─────────────────────────────────────────────────
   Lagen ungenutzt in den Bilddaten: professionelle Schwarzweiß-Aufnahmen,
   hochkant. Fünf gleich große Bilder in einer Reihe — das ist die
   Familie, ohne dass ein Wort nötig wäre.                               */
.portraits{
  display:grid;grid-template-columns:repeat(5,1fr);
  gap:clamp(.7rem,1.6vw,1.4rem);
  margin-top:clamp(2rem,4vw,3.2rem);
}
.portrait{margin:0;overflow:hidden;border-radius:2px;background:var(--band)}
.portrait img{
  width:100%;height:100%;object-fit:cover;display:block;
  filter:grayscale(1) contrast(1.02);
  transition:filter .6s ease,scale .9s cubic-bezier(.16,.84,.34,1);
}
/* Beim Überfahren kommt ein Hauch Farbe zurück — kleine Geste, die zeigt,
   dass hinter den Gesichtern echte Menschen stehen. */
@media (hover:hover){
  .portrait:hover img{filter:grayscale(.55) contrast(1.02);scale:1.04}
}
@media not all{
  .portrait img{transition:none!important}
  .portrait:hover img{scale:1!important}
}
@media (max-width:760px){
  .portraits{grid-template-columns:repeat(3,1fr)}
  .portraits .portrait:nth-child(4){grid-column:1/2}
  .portraits .portrait:nth-child(5){grid-column:2/3}
}

/* ===== Digitale Rezeptionistin =======================================
   CSS 1:1 aus dem AUSGELIEFERTEN Kundenbot (alpixai.com/bacher)
   uebernommen — nicht aus dem Verkaufs-Demo-Bot. Jede Klasse, ID,
   Variable und Animation mit alx- praefixt, damit nichts mit dem
   Seiten-CSS kollidiert. Getauscht ist nur die Hausfarbe --alx-brand. */
/* ─────────────────────────────────────────────────────────
   ALPIX AI CHAT-WIDGET — THEMING
   Neues Hotel einfaerben: EINE Farbe genuegt.
     • db.alx-json  config.alx-brand: "#RRGGBB"   -> init() setzt alle Tokens
     • oder einmalig im Code:  alpixSetBrand('#RRGGBB')
   Alles andere (Flaechen, Raender, Schatten, Hover, Fokus,
   Scrollbalken, Text-auf-Marke) leitet sich automatisch ab.
   REGEL: ausserhalb dieses :root-Blocks steht KEIN Farbwert.
   ───────────────────────────────────────────────────────── */
  .alx-wurzel{/* ── DER EINZIGE EINGABEWERT (je Hotel aus db.alx-json) ───── */
    --alx-brand:#6c6526;
    --alx-brand-h:54; --alx-brand-s:48%; --alx-brand-l:29%;   /* von init()/alpixSetBrand gesetzt */

    /* Deckmasken. #000 ist hier KEINE Farbe, sondern "voll deckend" - deshalb
       stehen sie in diesem Block. */
    --alx-mask-top: linear-gradient(180deg,transparent 0,#000 20px);
    /* Zusaetzlich unten ausblenden, SOLANGE noch Text folgt. Warum: eine lange Antwort
       endete bisher hart an der Fensterkante — kein Schatten, kein Verlauf, nichts. Bei
       Hotel Senoner brach die Aufzaehlung mitten im Satz ab, und der Gast musste raten,
       ob da noch etwas kommt. */
    --alx-mask-beide: linear-gradient(180deg,transparent 0,#000 20px,#000 calc(100% - 34px),transparent 100%);
    --alx-mask-rim: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);

    /* ── LIQUID GLASS: Specular-Lichtkante ──────────────────────
       Apples Erkennungszeichen ist nicht der Weichzeichner, sondern die um die
       Kante WANDERNDE Lichtreflexion (hell oben links + unten rechts, matt an
       den Flanken). Echte Brechung (backdrop-filter:url(#svg)) beherrscht nur
       Chrome - auf iPhone/Safari waere sie unsichtbar, daher bewusst nicht. */
    --alx-rim:      conic-gradient(from 210deg, hsl(0 0% 100% / .9), hsl(0 0% 100% / .1) 22%, hsl(0 0% 100% / .6) 48%, hsl(0 0% 100% / .08) 74%, hsl(0 0% 100% / .9));
    --alx-rim-soft: conic-gradient(from 210deg, hsl(0 0% 100% / .55), hsl(0 0% 100% / .05) 25%, hsl(0 0% 100% / .3) 50%, hsl(0 0% 100% / .04) 75%, hsl(0 0% 100% / .55));

    /* ── ABGELEITETE MARKEN-SKALA ─────────────────────────── */
    --alx-brand-50:  hsl(var(--alx-brand-h) var(--alx-brand-s) 97%);
    --alx-brand-100: hsl(var(--alx-brand-h) var(--alx-brand-s) 94%);
    --alx-brand-200: hsl(var(--alx-brand-h) var(--alx-brand-s) 86%);
    --alx-brand-300: hsl(var(--alx-brand-h) var(--alx-brand-s) 72%);
    --alx-brand-400: hsl(var(--alx-brand-h) var(--alx-brand-s) 52%);
    --alx-brand-600: hsl(var(--alx-brand-h) var(--alx-brand-s) calc(var(--alx-brand-l) - 6%));
    --alx-brand-700: hsl(var(--alx-brand-h) var(--alx-brand-s) calc(var(--alx-brand-l) - 12%));
    /* oben heller = Lichtquelle ueber dem Panel. Bewusst ABGELEITET statt aus
       brand2: bei manchen Hotels ist brand2 dunkler als brand (Graf Hartwig). */
    --alx-brand-lift: hsl(var(--alx-brand-h) var(--alx-brand-s) calc(var(--alx-brand-l) + 5%));
    /* Markenton fuer Text auf HELLEN Flaechen. init()/alpixSetBrand dunkelt ihn so weit
       ab, bis AA gegen Weiss sicher steht (eine helle Marke waere als Text unlesbar).
       Fallback hier = Marke selbst, falls JS nicht laeuft. */
    --alx-brand-ink: var(--alx-brand);
    --alx-brand2: var(--alx-brand-ink);                     /* Alt-Token; db.alx-json darf ueberschreiben */

    /* ── MARKENGETOENTE NEUTRALE ──────────────────────────── */
    --alx-surface:   hsl(var(--alx-brand-h)  6% 99%);
    --alx-surface-2: hsl(var(--alx-brand-h)  5% 98%);
    --alx-bg:        hsl(var(--alx-brand-h)  5% 98%);
    --alx-border:    hsl(var(--alx-brand-h)  8% 90%);
    /* Neutrale fast entsaettigt (nur ein Hauch Markenton): der Text liest sich neutral-grau
       statt gruen/getoent (David: "alles zu gruen, unprofessionell"). Die Marke lebt in den
       Akzenten -> --alx-brand-ink, Buttons, Preise, Kopf. 42% L bei --alx-muted fuer AA-Kontrast. */
    --alx-ink:       hsl(var(--alx-brand-h)  4% 16%);
    --alx-muted:     hsl(var(--alx-brand-h)  4% 42%);
    --alx-glass:     hsl(0 0% 100% / .72);
    --alx-glass-hi:  hsl(0 0% 100% / .60);

    /* ── TEXT AUF MARKENFARBE (init prueft Kontrast, kippt auf dunkel) */
    --alx-on-brand:#fff;

    /* ── STATUS ───────────────────────────────────────────── */
    --alx-online: hsl(140 62% 62%);
    --alx-danger: hsl(4 72% 56%);

    /* ── TIEFE: markengetoent, nie reines Schwarz ─────────── */
    --alx-sh-sm: 0 1px 2px hsl(var(--alx-brand-h) 30% 10% / .06);
    --alx-sh-md: 0 4px 12px hsl(var(--alx-brand-h) 30% 10% / .08), 0 1px 3px hsl(var(--alx-brand-h) 30% 10% / .06);
    --alx-sh-lg: 0 24px 60px hsl(var(--alx-brand-h) 30% 10% / .18), 0 8px 24px hsl(var(--alx-brand-h) 30% 10% / .10), 0 1px 2px hsl(var(--alx-brand-h) 30% 10% / .08);
    --alx-sh-xl: 0 40px 96px hsl(var(--alx-brand-h) 30% 10% / .26), 0 12px 32px hsl(var(--alx-brand-h) 30% 10% / .12), 0 1px 2px hsl(var(--alx-brand-h) 30% 10% / .08);
    --alx-sh-brand: 0 6px 18px hsl(var(--alx-brand-h) var(--alx-brand-s) 28% / .30);
    --alx-hl-top: inset 0 1px 0 hsl(0 0% 100% / .5);

    /* ── BEWEGUNG ─────────────────────────────────────────── */
    --alx-ease: cubic-bezier(.32,.72,0,1);
    --alx-ease-out: cubic-bezier(.16,1,.3,1);
    --alx-dur-fast:140ms; --alx-dur-base:240ms; --alx-dur-slow:420ms;

    /* ── FORM ─────────────────────────────────────────────── */
    --alx-r-panel:22px; --alx-r-bubble:16px; --alx-r-pill:999px;

    /* Launcher-Durchmesser. EINZIGE Stelle - Schrift, Online-Punkt und der
       Sprechblasen-Zipfel rechnen sich daraus ab (die Brueche treffen bei 88px
       exakt die alten Festwerte 32/16/6/3/37px, deshalb aendert sich ohne
       config.alx-launcherSize an keinem Hotel ein Pixel). Je Haus ueberschreibbar
       ueber config.alx-launcherSize (siehe alpixSetzeLauncher). */
    --alx-launcher:88px;

    /* Panel-Groesse im Normalzustand. Je Haus ueber config.alx-panelWidth/panelHeight
       ueberschreibbar (siehe wendeConfigAn). Die Vorgaben 390/720 sind exakt die
       frueheren Festwerte -> ohne die Schalter aendert sich an keinem Hotel etwas.
       Der Vollbild-Modus (#alx-wrap.alx-big) hat eigene Werte und bleibt davon unberuehrt. */
    /* Auf Janniks Wunsch kleiner als die Vorgabe des ausgelieferten Bots
       (dort 390 x 720). Diese Seite ist bildfuellend, da wirkt das Fenster
       schwer. Es sind genau die zwei Schalter, die der Bot dafuer vorsieht —
       alles darin skaliert mit, nichts anderes wurde angefasst. */
    --alx-panel-w:340px; --alx-panel-h:600px;}
/* ⛔ WINDOWS: die Scrollleiste hat dort echte Breite und ist ohne Zutun ein
   breiter hellgrauer Balken, auch neben den dunklen Baendern. Auf Mac und iOS
   ist sie ein Overlay, deshalb sieht man davon hier nie etwas. Beide Schreibweisen
   noetig: `scrollbar-*` fuer Firefox, `::-webkit-scrollbar*` fuer Chrome und Edge. */
html{scrollbar-width:thin;scrollbar-color:rgba(108,101,38,.45) rgba(36,39,24,.08)}
html::-webkit-scrollbar{width:12px}
html::-webkit-scrollbar-track{background:rgba(36,39,24,.06)}
html::-webkit-scrollbar-thumb{background:rgba(108,101,38,.42);border-radius:8px;
  border:3px solid transparent;background-clip:content-box}
html::-webkit-scrollbar-thumb:hover{background:rgba(108,101,38,.66);background-clip:content-box}

*{box-sizing:border-box}
/* Schaerfe: eigene GPU-Ebene fuer Panel und Launcher -> Kanten landen auf ganzen
     Geraetepixeln statt dazwischen (auf 1x-Schirmen sichtbar, auf iOS ohnehin). */
  #alx-wrap,#alx-launcher{transform:translateZ(0);backface-visibility:hidden}
/* Abdunklung hinter dem Panel im Grossmodus (reines CSS, kein DOM-Eingriff).
   ⛔ Zweimal tot uebernommen: der ausgelieferte Bot haengt sie an `body` und
   schaltet sie mit `body:has(#wrap.big:not(.hide))`. Beim Einbau in diese Seite
   fehlte erstens die Schaltregel, zweitens gehoert `body` dem Hotel — dort sind
   die Marken-Variablen gar nicht in Reichweite, die Farbe waere ungueltig
   gewesen. Beides geloest, indem sie an der Wurzel haengt: Variablen in
   Reichweite, Seite unangetastet. z-index:-1 legt sie hinter Panel und Glocke,
   aber vor die Seite (die Wurzel ist eine eigene Stapelebene). */
  .alx-wurzel::after{content:"";position:fixed;inset:0;background:hsl(var(--alx-brand-h) var(--alx-brand-s) 10% / .38);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);opacity:0;pointer-events:none;transition:opacity var(--alx-dur-slow) var(--alx-ease);z-index:-1}
  .alx-wurzel:has(#alx-wrap.alx-big:not(.alx-hide))::after{opacity:1}
/* ── PANEL ─────────────────────────────────────────────── */
  #alx-wrap{position:relative;z-index:1;width:var(--alx-panel-w);max-width:calc(100vw - 32px);height:min(90vh,var(--alx-panel-h));display:flex;flex-direction:column;
    /* Das Panel ist das EINZIGE Element mit backdrop-filter. Apple raet ausdruecklich
       von "Glas auf Glas" ab, und mehrere Glas-Ebenen uebereinander kosten auf Safari
       und schwachen GPUs spuerbar Leistung. Alles darin sind nur Toenungen. */
    background:linear-gradient(155deg, hsl(var(--alx-brand-h) 20% 100% / .74), hsl(var(--alx-brand-h) 16% 97% / .9));
    -webkit-backdrop-filter:blur(30px) saturate(1.8) brightness(1.04);backdrop-filter:blur(30px) saturate(1.8) brightness(1.04);
    border:0;border-radius:var(--alx-r-panel);overflow:hidden;
    box-shadow:var(--alx-sh-lg),var(--alx-hl-top);transform-origin:bottom right;
    transition:opacity var(--alx-dur-base) var(--alx-ease),transform var(--alx-dur-base) var(--alx-ease),width var(--alx-dur-slow) var(--alx-ease),height var(--alx-dur-slow) var(--alx-ease),border-radius var(--alx-dur-slow) var(--alx-ease);
    animation:alx-panelIn var(--alx-dur-slow) var(--alx-ease-out) backwards}
#alx-wrap::before{content:"";position:absolute;inset:0;z-index:4;pointer-events:none;border-radius:inherit;padding:1px;
    background:var(--alx-rim);-webkit-mask:var(--alx-mask-rim);-webkit-mask-composite:xor;mask:var(--alx-mask-rim);mask-composite:exclude}
@keyframes alx-panelIn{from{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:none}}
/* animation:none ist Pflicht: eine laufende/gefuellte Animation wuerde diese Regel
     ueberstimmen - genau daran liess sich der Chat nicht mehr schliessen. */
  #alx-wrap.alx-hide{animation:none;opacity:0;transform:translateY(12px) scale(.98);pointer-events:none}
/* ── Genie-Effekt (nur wenn config.alx-openAnim gesetzt) ─────────────────────
     Das Panel waechst beim Oeffnen aus dem Launcher (unten rechts) heraus und zieht
     sich beim Schliessen dorthin zurueck - das Gefuehl der macOS-Fenster-/Tab-Animation.
     KEIN Apple-Code (der ist nicht oeffentlich): gleiches Gefuehl mit dem, was CSS kann -
     transform-origin an der Launcher-Ecke + Feder-Easing beim Oeffnen, sauberes
     Beschleunigen beim Schliessen. body ist unten-rechts verankert, transform-origin
     ist schon 'bottom right' -> Skalieren zieht genau zur Launcher-Ecke. */
  #alx-wrap.alx-genie{animation:alx-genieOpen 520ms cubic-bezier(.22,.9,.24,1.12) backwards}
@keyframes alx-genieOpen{
    0%{opacity:0;transform:translate(34px,50px) scale(.24);border-radius:46px}
    55%{opacity:1}
    100%{opacity:1;transform:none;border-radius:var(--alx-r-panel)}}
/* Schliessen: Feder waere hier falsch (Ueberschwinger beim Reinziehen) -> beschleunigt
     sauber in den Launcher. animation:none ist Pflicht, sonst ueberstimmt die gefuellte
     Open-Animation die .alx-hide-Regel und der Chat laesst sich nicht schliessen (alter Bug).
     Spezifitaet 0,3,0 schlaegt #alx-wrap.alx-genie (0,2,0). */
  #alx-wrap.alx-genie.alx-hide{animation:none;transform:translate(34px,50px) scale(.24);border-radius:46px;
    transition:opacity 300ms cubic-bezier(.5,0,.9,.35),transform 320ms cubic-bezier(.5,0,.9,.35),border-radius 320ms var(--alx-ease)}
@media not all{#alx-wrap.alx-genie{animation:alx-panelIn var(--alx-dur-slow) var(--alx-ease-out) backwards}
#alx-wrap.alx-genie.alx-hide{transform:translateY(12px) scale(.98);border-radius:var(--alx-r-panel);
      transition:opacity var(--alx-dur-base) var(--alx-ease),transform var(--alx-dur-base) var(--alx-ease)}}
/* Grossmodus: gleiches Design, nur groesser. EINE Inhaltsspalte fuer alles. */
  #alx-wrap.alx-big{--alx-col:820px;width:min(1080px,calc(100vw - 32px));height:min(94vh,940px);border-radius:26px;box-shadow:var(--alx-sh-xl),var(--alx-hl-top)}
#alx-wrap.alx-big #alx-msgs,#alx-wrap.alx-big #alx-menu,#alx-wrap.alx-big #alx-actions,#alx-wrap.alx-big #alx-f{padding-inline:max(20px,calc((100% - var(--alx-col)) / 2))}
#alx-wrap.alx-big #alx-msgs{padding-top:24px;padding-bottom:24px;gap:10px}
#alx-wrap.alx-big header{padding:15px 16px}
#alx-wrap.alx-big header .alx-logo{width:40px;height:40px;flex:0 0 40px}
#alx-wrap.alx-big header .alx-t b{font-size:17px}
@media(max-width:760px){#alx-wrap.alx-big{position:fixed;inset:0;width:auto;max-width:none;height:auto;border-radius:0;z-index:99998}}
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){/* Ohne Glas-Unterstuetzung: deckend, aber weiterhin schoen (Lichtkante bleibt) */
    #alx-wrap{background:var(--alx-surface)}
#alx-f,.alx-foot,#alx-menu,#alx-actions{background:var(--alx-surface-2)}}
/* ── KOPF ──────────────────────────────────────────────── */
  .alx-wurzel header{background:linear-gradient(180deg,var(--alx-brand-lift),var(--alx-brand));
    color:var(--alx-on-brand);padding:12px 12px 12px 14px;display:flex;align-items:center;gap:10px;flex:0 0 auto;
    border-bottom:1px solid hsl(var(--alx-brand-h) var(--alx-brand-s) 12% / .3);box-shadow:var(--alx-hl-top)}
header .alx-logo{width:36px;height:36px;border-radius:50%;background:hsl(0 0% 100% / .18);display:flex;align-items:center;justify-content:center;font-size:19px;flex:0 0 36px;overflow:hidden;padding:0;box-shadow:0 0 0 1px hsl(0 0% 100% / .25),var(--alx-sh-sm);transition:transform var(--alx-dur-base) var(--alx-ease-out)}
header .alx-logo:hover{transform:scale(1.05)}
/* overflow:hidden ist Pflicht - sonst laeuft der Statustext aus seinem Kasten. */
  header .alx-t{flex:1;min-width:0;overflow:hidden}
header .alx-t b{font-size:15px;font-weight:600;letter-spacing:-.01em;display:block;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media(max-width:400px){header .alx-t b{font-size:13.5px;letter-spacing:-.02em}}
/* keine opacity: sie senkt den Kontrast unsichtbar (Titel 4.26 vs Status 3.18 bei
     identischer Farbe). Zurueckhaltung kommt ueber Groesse/Gewicht. */
  header .alx-t .alx-stat{font-size:12px;font-weight:500;display:flex;align-items:center;gap:6px;white-space:nowrap;margin-top:2px;overflow:hidden}
header .alx-t .alx-stat span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
header .alx-dot{position:relative;width:7px;height:7px;border-radius:50%;background:var(--alx-online);flex:0 0 7px;animation:alx-breathe 2.4s var(--alx-ease) infinite}
header .alx-dot::after{content:"";position:absolute;inset:0;border-radius:50%;background:var(--alx-online);animation:alx-halo 2.4s var(--alx-ease) infinite}
@keyframes alx-breathe{0%,100%{opacity:.7}50%{opacity:1}}
@keyframes alx-halo{0%{transform:scale(1);opacity:.5}70%,100%{transform:scale(1.9);opacity:0}}
header .alx-hx{width:32px;height:32px;display:grid;place-items:center;border:none;background:transparent;color:var(--alx-on-brand);cursor:pointer;opacity:.72;padding:0;flex:0 0 auto;border-radius:50%;transition:opacity var(--alx-dur-fast) var(--alx-ease),background var(--alx-dur-fast) var(--alx-ease),transform var(--alx-dur-fast) var(--alx-ease)}
header .alx-hx svg{width:16px;height:16px;display:block}
header .alx-hx:hover{opacity:1;background:hsl(0 0% 100% / .14)}
header .alx-hx:active{transform:scale(.92)}
header .alx-hx:focus-visible{outline:2px solid var(--alx-on-brand);outline-offset:2px}
header #alx-trashBtn:hover,header #alx-closeBtn:hover{background:hsl(4 72% 56% / .3)}
/* Scharf gestellter Papierkorb: einmal getippt, wartet auf die Bestaetigung. */
  header #alx-trashBtn.alx-frage{background:hsl(4 72% 56% / .85);opacity:1}
header #alx-trashBtn.alx-frage svg{animation:alx-wackel .5s var(--alx-ease) 1}
@keyframes alx-wackel{0%,100%{transform:none}25%{transform:rotate(-9deg)}75%{transform:rotate(9deg)}}
/* ── NACHRICHTENFLAECHE ────────────────────────────────── */
  #alx-msgs{flex:1;overflow-y:auto;overflow-x:hidden;padding:16px;display:flex;flex-direction:column;gap:8px;
    background:linear-gradient(180deg,var(--alx-surface),var(--alx-surface-2));
    -webkit-mask-image:var(--alx-mask-top);mask-image:var(--alx-mask-top);
    scrollbar-width:thin;scrollbar-color:hsl(var(--alx-brand-h) var(--alx-brand-s) 40% / .22) transparent}
/* Setzt scrollWaechter(), sobald unten noch etwas steht. */
  #alx-msgs.alx-mehrUnten{-webkit-mask-image:var(--alx-mask-beide);mask-image:var(--alx-mask-beide)}
/* Kleiner Pfeil als zweites, eindeutiges Zeichen — der Verlauf allein ist am Handy in
     hellen Raeumen kaum zu sehen. Sitzt ueber dem Verlauf, tippbar, springt nach unten. */
  #alx-runter{position:absolute;left:50%;transform:translateX(-50%) translateY(6px);
    bottom:8px;z-index:4;width:32px;height:32px;border-radius:50%;border:1px solid var(--alx-border);
    background:var(--alx-surface);color:var(--alx-brand-ink);box-shadow:var(--alx-sh-md);
    display:none;align-items:center;justify-content:center;cursor:pointer;font-size:15px;
    opacity:0;transition:opacity var(--alx-dur-fast) var(--alx-ease),transform var(--alx-dur-fast) var(--alx-ease)}
#alx-runter.alx-an{display:flex;opacity:1;transform:translateX(-50%) translateY(0)}
#alx-runter:hover{transform:translateX(-50%) translateY(-2px)}
#alx-msgs::-webkit-scrollbar{width:6px}
#alx-msgs::-webkit-scrollbar-track{background:transparent}
#alx-msgs::-webkit-scrollbar-thumb{background:transparent;border-radius:var(--alx-r-pill);transition:background var(--alx-dur-base) var(--alx-ease)}
#alx-msgs:hover::-webkit-scrollbar-thumb{background:hsl(var(--alx-brand-h) var(--alx-brand-s) 40% / .22)}
.alx-row{display:flex;gap:8px;align-items:flex-end;max-width:100%;animation:alx-msgIn var(--alx-dur-base) var(--alx-ease-out) backwards}
@keyframes alx-msgIn{from{opacity:0;transform:translateY(8px) scale(.985)}to{opacity:1;transform:none}}
.alx-row.alx-usr{justify-content:flex-end}
.alx-av{width:28px;height:28px;border-radius:50%;background:var(--alx-brand);color:var(--alx-on-brand);display:flex;align-items:center;justify-content:center;font-size:14px;flex:0 0 28px;margin-bottom:2px;overflow:hidden;box-shadow:var(--alx-sh-sm);animation:alx-avIn var(--alx-dur-base) var(--alx-ease-out) 60ms backwards}
@keyframes alx-avIn{from{opacity:0}to{opacity:1}}
/* Profilbild (Rezeptionistin) statt Glocke - in Chat-Avatar, Kopf und Launcher */
  .alx-av img,header .alx-logo img,#alx-launcher img{width:100%;height:100%;object-fit:cover;border-radius:50%;display:block}
.alx-bwrap{display:flex;flex-direction:column;gap:2px;min-width:0;max-width:min(82%,720px)}
.alx-row.alx-usr .alx-bwrap{align-items:flex-end}
/* Folge-Nachricht: Platz des Avatars bleibt, das Bild nicht — und die Blasen ruecken
     enger zusammen, damit sie als EIN Block lesbar sind statt als vier Einzelmeldungen. */
  .alx-row.alx-bot.alx-folge{margin-top:-4px}
.alx-row.alx-bot.alx-folge .alx-av{background:transparent;box-shadow:none;animation:none}
.alx-m{max-width:100%;padding:11px 14px;border-radius:var(--alx-r-bubble);white-space:pre-wrap;line-height:1.55;font-size:15px;word-wrap:break-word;overflow-wrap:anywhere}
/* Die Blase lag weiss auf weiss und hob sich nur ueber den Schatten ab — das wirkt
     flach statt ruhig. Jetzt eine Spur Markenfarbe im Grund (3 %) und ein leichterer
     Schatten: die Antwort steht klarer da, ohne lauter zu werden. */
  .alx-m.alx-bot{background:color-mix(in srgb,var(--alx-brand) 3%,var(--alx-surface));
    border:1px solid var(--alx-border);border-bottom-left-radius:6px;box-shadow:var(--alx-sh-sm)}
.alx-m.alx-bot a{color:var(--alx-brand-ink);text-decoration:underline;font-weight:600;word-break:break-word}
.alx-m.alx-bot.alx-fmt{white-space:normal}
.alx-m.alx-bot.alx-fmt .alx-bp{display:block}
.alx-m.alx-bot.alx-fmt .alx-bp+.alx-bp{margin-top:6px}
.alx-m.alx-bot.alx-fmt strong{font-weight:700}
.alx-m.alx-bot.alx-fmt .alx-botul{margin:6px 0 2px;padding-left:1.2em;list-style:disc}
.alx-m.alx-bot.alx-fmt .alx-botul li{margin:3px 0;padding-left:2px}
.alx-m.alx-bot.alx-fmt .alx-botul+.alx-bp{margin-top:6px}
.alx-m.alx-usr{background:linear-gradient(180deg,var(--alx-brand-lift),var(--alx-brand));color:var(--alx-on-brand);border:1px solid transparent;border-bottom-right-radius:6px;box-shadow:var(--alx-sh-brand)}
/* KEINE opacity auf Text: sie senkt den Kontrast unsichtbar unter AA.
     Zurueckhaltung kommt ueber Groesse/Farbe, nicht ueber Transparenz. */
  .alx-stamp{font-size:11px;color:var(--alx-muted);padding:0 5px;display:flex;gap:3px;align-items:center}
.alx-rcpt{transition:color var(--alx-dur-base)}
.alx-rcpt.alx-read{color:var(--alx-brand-ink);font-weight:700}
/* Daumen zur Bewertung einer Antwort - sitzt IN der Zeitstempel-Zeile, nicht darunter.
     Eigene Zeile + Text "Hat das geholfen?" kostete gut 21px pro Antwort; im 360px-Panel
     von Graf Hartwig bleiben nur 268px Antwortflaeche, da faellt das auf. Die Frage lebt
     jetzt im title/aria-label, sichtbar sind nur zwei kleine, halbtransparente Daumen, die
     beim Darueberfahren aufklaren.
     display:none bis die Zeilen-ID da ist (.alx-in) - so zuckt der Chat nicht, und faellt das
     Protokoll aus, gibt es gar keinen Daumen statt eines toten. */
  .alx-fb{display:none;align-items:center;gap:1px;margin-left:5px;opacity:0;transition:opacity var(--alx-dur-base) var(--alx-ease)}
.alx-fb.alx-in{display:inline-flex;opacity:1}
.alx-fb-q{font-size:11px;color:var(--alx-muted)}
.alx-fb-b{display:inline-flex;align-items:center;justify-content:center;width:17px;height:15px;padding:0;border:0;border-radius:4px;background:none;color:var(--alx-muted);opacity:.5;cursor:pointer;transition:color var(--alx-dur-fast) var(--alx-ease),opacity var(--alx-dur-fast) var(--alx-ease)}
.alx-fb-b:hover{color:var(--alx-brand-ink);opacity:1}
.alx-fb-b svg{width:11px;height:11px;fill:currentColor}
.alx-typing .alx-m{display:flex;gap:4px;padding:14px 16px;align-items:center}
.alx-typing i{width:7px;height:7px;border-radius:50%;background:hsl(var(--alx-brand-h) var(--alx-brand-s) 55% / .5);display:inline-block;animation:alx-bob 1s var(--alx-ease) infinite}
.alx-typing i:nth-child(2){animation-delay:.14s}
.alx-typing i:nth-child(3){animation-delay:.28s}
@keyframes alx-bob{0%,80%,100%{transform:translateY(0);opacity:.5}40%{transform:translateY(-4px);opacity:1}}
/* ── KARTEN (Zimmer / Preise / Standort) ───────────────── */
  .alx-rooms{display:flex;flex-direction:column;gap:10px;max-width:100%;animation:alx-msgIn var(--alx-dur-base) var(--alx-ease-out) backwards}
.alx-rcard,.alx-pcard,.alx-mapscard{background:var(--alx-surface);border:1px solid var(--alx-border);border-radius:14px;overflow:hidden;box-shadow:var(--alx-sh-md);max-width:100%}
.alx-rcard{transition:transform var(--alx-dur-fast) var(--alx-ease),box-shadow var(--alx-dur-fast) var(--alx-ease)}
.alx-rcard:hover{transform:translateY(-2px);box-shadow:var(--alx-sh-lg)}
.alx-rcard .alx-rc-body{padding:12px 14px}
.alx-rcard .alx-rc-name{font-size:14px;font-weight:700;color:var(--alx-brand-ink);line-height:1.2;margin-bottom:3px}
.alx-rcard .alx-rc-price{font-size:13px;font-weight:700;color:var(--alx-ink);line-height:1.35;margin-bottom:5px}
.alx-rcard .alx-rc-meta{font-size:12px;color:var(--alx-muted);line-height:1.45}
.alx-rcard .alx-rc-meta .alx-sep{color:var(--alx-border);margin:0 5px}
.alx-rcard .alx-rc-feat{font-size:12px;color:var(--alx-muted);opacity:.85;margin-top:4px;line-height:1.4}
/* Merkmal-Chips. Gleiche Formensprache wie die Antwort-Chips, aber kleiner und
     stumpfer - sie sind bewusst NICHT klickbar. */
  .alx-rcard .alx-rc-tags{display:flex;flex-wrap:wrap;gap:5px;margin-top:8px}
/* Alle Chips sehen gleich aus (Davids Ansage 10.08.2026). Die Wichtigkeit
     steuert weiter die REIHENFOLGE - Bett und Balkon stehen vorn -, sie wird
     nur nicht mehr farblich hervorgehoben. */
  .alx-rcard .alx-rc-tag{display:inline-flex;align-items:center;border:1px solid var(--alx-border);background:var(--alx-surface-2);color:var(--alx-ink);border-radius:var(--alx-r-pill);padding:3px 9px;font-size:11.5px;line-height:1.55;box-shadow:var(--alx-sh-sm)}
/* "Ausserdem" als <details> - klappt ohne JavaScript auf, damit keine
     Inline-Handler noetig sind (die blockiert die CSP auf Fremd-Domains). */
  .alx-rcard .alx-rc-mehr{margin-top:8px}
.alx-rcard .alx-rc-mehr summary{display:inline-block;font-size:11.5px;color:var(--alx-muted);border:1px dashed var(--alx-border);border-radius:var(--alx-r-pill);padding:3px 11px;cursor:pointer;list-style:none;transition:border-color var(--alx-dur-fast) var(--alx-ease),color var(--alx-dur-fast) var(--alx-ease)}
.alx-rcard .alx-rc-mehr summary::-webkit-details-marker{display:none}
.alx-rcard .alx-rc-mehr summary:hover,.alx-rcard .alx-rc-mehr summary:focus-visible{border-color:var(--alx-brand);color:var(--alx-brand-ink)}
.alx-rcard .alx-rc-mehr .alx-rc-rest{font-size:11.5px;color:var(--alx-muted);line-height:1.5;margin-top:6px}
/* EINE Zeile fuer das, was alle Zimmer teilen - statt auf jeder Karte. */
  .alx-rooms-gemein{font-size:12.5px;color:var(--alx-ink);background:var(--alx-surface-2);border:1px solid var(--alx-border);border-left:3px solid var(--alx-brand);border-radius:10px;padding:9px 12px;line-height:1.55;margin-top:2px}
.alx-rooms-gemein b{color:var(--alx-brand-ink)}
.alx-pcard{display:flex;gap:10px;align-items:stretch;margin:5px 0}
.alx-pcard img{width:104px;min-height:76px;object-fit:cover;flex:0 0 auto;background:var(--alx-surface-2)}
.alx-pcard .alx-pc-b{padding:9px 12px;display:flex;flex-direction:column;justify-content:center;min-width:0}
.alx-pcard .alx-pc-n{font-size:14px;font-weight:700;color:var(--alx-brand-ink);line-height:1.2}
.alx-pcard .alx-pc-p{font-size:13.5px;font-weight:600;color:var(--alx-ink);margin-top:2px}
.alx-pc-opt{display:flex;align-items:center;justify-content:space-between;gap:6px;width:100%;min-height:40px;margin-top:6px;padding:7px 9px;border:1px solid var(--alx-border);border-radius:10px;background:var(--alx-surface-2);color:var(--alx-ink);font:inherit;text-align:left;cursor:pointer;transition:transform .18s cubic-bezier(.34,1.3,.64,1),border-color .18s,background .18s}
.alx-pc-opt:hover,.alx-pc-opt:focus-visible{border-color:var(--alx-brand);background:var(--alx-surface);transform:translateY(-1px)}
.alx-pc-opt:active{transform:translateY(0)}
.alx-pc-opt b{font-size:12.5px;font-weight:600;min-width:0;line-height:1.15}
.alx-pc-opt span{font-size:13.5px;font-weight:700;color:var(--alx-brand-ink);white-space:nowrap}
.alx-rcard .alx-rc-img{display:block;width:100%;height:132px;object-fit:cover;background:var(--alx-surface-2)}
.alx-mapscard .alx-mc-addr{padding:11px 13px 8px;font-size:13px;color:var(--alx-brand-ink);line-height:1.45}
.alx-mapscard .alx-mc-map{display:block;width:100%;height:186px;border:0}
.alx-mapscard .alx-mc-open{display:block;margin:10px;text-align:center}
/* Wetterkarte (opt-in config.alx-weather) - Vorhersage aus Open-Meteo, Look wie die anderen Karten */
  .alx-wcard{background:var(--alx-surface);border:1px solid var(--alx-border);border-radius:14px;overflow:hidden;box-shadow:var(--alx-sh-md);max-width:100%;margin-top:2px}
.alx-wcard .alx-wc-h{padding:10px 13px;font-weight:600;color:var(--alx-brand-ink);border-bottom:1px solid var(--alx-border)}
.alx-wcard .alx-wc-day{display:flex;align-items:center;gap:10px;padding:8px 13px;font-size:13px;border-bottom:1px solid var(--alx-border)}
.alx-wcard .alx-wc-day:last-of-type{border-bottom:0}
.alx-wcard .alx-wc-d{color:var(--alx-ink);min-width:54px;font-weight:500}
.alx-wcard .alx-wc-i{font-size:20px;width:26px;text-align:center}
.alx-wcard .alx-wc-i img{width:22px;height:22px;display:inline-block;vertical-align:middle}
.alx-wcard .alx-wc-txt{color:var(--alx-muted);flex:1}
.alx-wcard .alx-wc-t{color:var(--alx-ink);min-width:74px;text-align:right;font-variant-numeric:tabular-nums}
.alx-wcard .alx-wc-src{padding:6px 13px;font-size:11px;color:var(--alx-muted)}
/* Veranstaltungskarte (opt-in config.alx-events) - Live-Events aus der guest.alx-net-API */
  .alx-ecard{background:var(--alx-surface);border:1px solid var(--alx-border);border-radius:14px;overflow:hidden;box-shadow:var(--alx-sh-md);max-width:100%;margin-top:2px}
.alx-ecard .alx-ec-h{padding:10px 13px;font-weight:600;color:var(--alx-brand-ink);border-bottom:1px solid var(--alx-border)}
.alx-ecard .alx-ec-e{display:block;padding:9px 13px;border-bottom:1px solid var(--alx-border);text-decoration:none;color:inherit;transition:background var(--alx-dur-fast) var(--alx-ease)}
.alx-ecard .alx-ec-e:hover{background:var(--alx-surface-2)}
.alx-ecard .alx-ec-w{display:block;font-size:11.5px;color:var(--alx-brand-ink);font-weight:600}
.alx-ecard .alx-ec-t{display:block;font-size:13px;color:var(--alx-ink);line-height:1.35;margin-top:1px}
.alx-ecard .alx-ec-c{display:inline-block;font-size:11px;color:var(--alx-muted);margin-top:2px}
.alx-ecard .alx-ec-empty{padding:11px 13px;font-size:13px;color:var(--alx-muted);border-bottom:1px solid var(--alx-border)}
/* Uebergabe-Karte fuer externe Buchungsprogramme (booking.alx-mode "extern") */
  .alx-xcard{background:var(--alx-surface);border:1px solid var(--alx-border);border-radius:14px;overflow:hidden;box-shadow:var(--alx-sh-md);max-width:100%;margin-top:2px;animation:alx-msgIn var(--alx-dur-base) var(--alx-ease-out) backwards}
.alx-xcard .alx-xc-h{padding:11px 14px;font-weight:600;color:var(--alx-brand-ink);border-bottom:1px solid var(--alx-border)}
.alx-xcard .alx-xc-row{display:flex;align-items:baseline;justify-content:space-between;gap:14px;padding:9px 14px;border-bottom:1px solid var(--alx-border);font-size:13.5px}
.alx-xcard .alx-xc-k{color:var(--alx-muted);white-space:nowrap}
.alx-xcard .alx-xc-v{font-weight:600;color:var(--alx-ink);text-align:right}
.alx-xcard .alx-xc-go{display:block;margin:13px 14px 7px;text-align:center;text-decoration:none}
.alx-xcard .alx-xc-note{padding:0 14px 13px;font-size:12px;color:var(--alx-muted);text-align:center;line-height:1.45}
.alx-ecard .alx-ec-all{display:block;padding:9px 13px;text-align:center;font-size:12.5px;font-weight:600;color:var(--alx-brand-ink);text-decoration:none}
.alx-bookbtn{display:inline-block;background:linear-gradient(180deg,var(--alx-brand-lift),var(--alx-brand));color:var(--alx-on-brand);text-decoration:none;border:none;border-radius:var(--alx-r-pill);padding:12px 18px;font-size:14px;font-weight:600;font-family:inherit;cursor:pointer;box-shadow:var(--alx-sh-brand),var(--alx-hl-top);animation:alx-msgIn var(--alx-dur-base) var(--alx-ease-out) backwards;text-align:center;transition:transform var(--alx-dur-fast) var(--alx-ease),box-shadow var(--alx-dur-fast) var(--alx-ease)}
.alx-bookbtn:hover{transform:translateY(-2px);box-shadow:var(--alx-sh-lg),var(--alx-hl-top)}
.alx-bookbtn:active{transform:scale(.985)}
/* Verweis auf die passende Unterseite der Hotel-Website.
     BEWUSST leise gehalten: kein zweiter Knopf neben "Jetzt buchen" - der Buchen-Knopf
     muss der auffaelligste Punkt der Antwort bleiben. Deshalb Textlink statt Flaeche,
     eingerueckt wie die Chips, damit er zur Bot-Nachricht darueber gehoert. */
  /* Abgerundeter Balken, kein nackter Link — er soll zum Chatfenster gehoeren und nicht
     wie ein Fremdkoerper wirken. Bewusst RUHIG gehalten: heller Grund, duenner Rand,
     KEINE Markenflaeche. Der Buchen-Knopf muss der auffaelligste Punkt bleiben, sonst
     konkurrieren zwei Elemente um denselben Blick.
     Der linke Rand kommt von .alx-chiprow (36px), hier keiner. */
  .alx-seitenlink{display:flex;align-items:center;gap:11px;width:100%;max-width:330px;
    box-sizing:border-box;padding:11px 13px;
    background:var(--alx-surface);border:1px solid var(--alx-border);border-radius:14px;
    color:var(--alx-brand-ink);text-decoration:none;box-shadow:var(--alx-sh-sm);
    animation:alx-msgIn var(--alx-dur-base) var(--alx-ease-out) backwards;
    transition:transform var(--alx-dur-fast) var(--alx-ease),box-shadow var(--alx-dur-fast) var(--alx-ease),border-color var(--alx-dur-fast) var(--alx-ease)}
/* Symbol in einem getoenten Kreis — gibt dem Balken einen Anker, ohne laut zu sein. */
  .alx-seitenlink .alx-sl-ico{flex:0 0 auto;width:30px;height:30px;border-radius:50%;
    display:flex;align-items:center;justify-content:center;font-size:14px;
    background:color-mix(in srgb,var(--alx-brand) 12%,transparent)}
.alx-seitenlink .alx-sl-txt{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:1px}
.alx-seitenlink .alx-sl-txt b{font-size:13.5px;font-weight:600;line-height:1.25;
    overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.alx-seitenlink .alx-sl-txt span{font-size:11.5px;opacity:.68;line-height:1.25}
.alx-seitenlink .alx-sl-arr{flex:0 0 auto;font-size:17px;opacity:.5;
    transition:transform var(--alx-dur-fast) var(--alx-ease),opacity var(--alx-dur-fast) var(--alx-ease)}
.alx-seitenlink:hover{transform:translateY(-1px);box-shadow:var(--alx-sh-md,var(--alx-sh-sm));border-color:var(--alx-brand)}
.alx-seitenlink:hover .alx-sl-arr{transform:translateX(3px);opacity:.85}
.alx-seitenlink:active{transform:scale(.99)}
@media (pointer: coarse){.alx-seitenlink{padding:13px}}
/* ── IN-CHAT-CHIPS ─────────────────────────────────────── */
  .alx-chiprow{display:flex;flex-wrap:wrap;align-items:flex-start;gap:7px;margin:2px 0 10px 36px}
.alx-chip{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--alx-border);background:var(--alx-surface);color:var(--alx-brand-ink);border-radius:var(--alx-r-pill);padding:7px 13px;font-size:13px;cursor:pointer;font-weight:500;font-family:inherit;box-shadow:var(--alx-sh-sm);transition:transform var(--alx-dur-fast) var(--alx-ease),background var(--alx-dur-fast) var(--alx-ease),border-color var(--alx-dur-fast) var(--alx-ease),box-shadow var(--alx-dur-fast) var(--alx-ease)}
.alx-chip:hover{transform:translateY(-2px);background:var(--alx-brand-50);border-color:var(--alx-brand-200);box-shadow:var(--alx-sh-md)}
.alx-chip:active{transform:translateY(0) scale(.98)}
.alx-chip:focus-visible{outline:2px solid var(--alx-brand);outline-offset:2px}
.alx-chip.alx-book{background:linear-gradient(180deg,var(--alx-brand-lift),var(--alx-brand));color:var(--alx-on-brand);border-color:transparent;box-shadow:var(--alx-sh-brand)}
/* ── SCHNELLWAHL-CHIPS (feste Reihe) ───────────────────── */
  #alx-menu{display:flex;flex-wrap:wrap;gap:8px;padding:12px;border-top:1px solid hsl(0 0% 100% / .5);background:hsl(0 0% 100% / .5);flex:0 0 auto}
#alx-menu button{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--alx-border);background:var(--alx-surface);border-radius:var(--alx-r-pill);padding:7px 13px;font-size:13px;line-height:1.2;cursor:pointer;color:var(--alx-brand-ink);font-weight:500;font-family:inherit;box-shadow:var(--alx-sh-sm);
    animation:alx-chipIn var(--alx-dur-base) var(--alx-ease-out) backwards;
    transition:transform var(--alx-dur-fast) var(--alx-ease),background var(--alx-dur-fast) var(--alx-ease),border-color var(--alx-dur-fast) var(--alx-ease),box-shadow var(--alx-dur-fast) var(--alx-ease)}
@keyframes alx-chipIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
#alx-menu button:nth-child(1){animation-delay:0ms}
#alx-menu button:nth-child(2){animation-delay:28ms}
#alx-menu button:nth-child(3){animation-delay:56ms}
#alx-menu button:nth-child(4){animation-delay:84ms}
#alx-menu button:nth-child(5){animation-delay:112ms}
#alx-menu button:nth-child(6){animation-delay:140ms}
#alx-menu button:nth-child(n+7){animation-delay:168ms}
#alx-menu button .alx-mi{font-size:15px;line-height:1}
#alx-menu button:hover{transform:translateY(-2px);background:var(--alx-brand-50);border-color:var(--alx-brand-200);box-shadow:var(--alx-sh-md)}
#alx-menu button:active{transform:translateY(0) scale(.98)}
#alx-menu button:focus-visible{outline:2px solid var(--alx-brand);outline-offset:2px}
#alx-menu button.alx-book{background:linear-gradient(180deg,var(--alx-brand-lift),var(--alx-brand));color:var(--alx-on-brand);border-color:transparent;box-shadow:var(--alx-sh-brand)}
/* ── CTA-LEISTE: Anfrage + Buchung immer sichtbar ──────── */
  #alx-actions{display:flex;gap:10px;padding:10px 12px;background:hsl(0 0% 100% / .5);border-top:1px solid hsl(0 0% 100% / .5);flex:0 0 auto}
#alx-actions button{position:relative;overflow:hidden;flex:1;display:inline-flex;align-items:center;justify-content:center;gap:7px;border:1px solid transparent;border-radius:var(--alx-r-pill);padding:12px 10px;font-size:14px;font-weight:600;line-height:1.2;cursor:pointer;font-family:inherit;
    transition:transform var(--alx-dur-fast) var(--alx-ease),background var(--alx-dur-fast) var(--alx-ease),box-shadow var(--alx-dur-fast) var(--alx-ease),border-color var(--alx-dur-fast) var(--alx-ease)}
#alx-actions button .alx-ai{font-size:15px;line-height:1;position:relative;z-index:1}
#alx-actions button.alx-enq{background:linear-gradient(180deg,var(--alx-brand-lift),var(--alx-brand));color:var(--alx-on-brand);box-shadow:var(--alx-sh-brand),var(--alx-hl-top)}
#alx-actions button.alx-enq::before{content:"";position:absolute;inset:0;z-index:2;pointer-events:none;border-radius:inherit;padding:1px;
    background:var(--alx-rim-soft);-webkit-mask:var(--alx-mask-rim);-webkit-mask-composite:xor;mask:var(--alx-mask-rim);mask-composite:exclude}
/* Durchlaufender Schimmer auf "Anfrage" entfernt (David: "der nervt"). Knopf + der
     dezente Hover-Lift bleiben. */
  #alx-actions button.alx-bk{background:var(--alx-surface);color:var(--alx-brand-ink);border-color:var(--alx-brand-200);box-shadow:var(--alx-sh-sm)}
#alx-actions button:hover{transform:translateY(-2px)}
#alx-actions button.alx-enq:hover{background:linear-gradient(180deg,var(--alx-brand),var(--alx-brand-600));box-shadow:var(--alx-sh-lg),var(--alx-hl-top)}
#alx-actions button.alx-bk:hover{background:var(--alx-brand-50);border-color:var(--alx-brand-300);box-shadow:var(--alx-sh-md)}
/* EIN Hauptweg. Der Hauptknopf bekommt die Marke und mehr Breite, der zweite wird zum
     ruhigen Umriss. Vorher waren beide gefuellt und gleich breit — zwei Knoepfe, die
     gleich laut rufen, heben sich gegenseitig auf.
     WICHTIG: Diese Regeln muessen NACH .alx-enq und .alx-bk stehen. Beim ersten Anlauf standen
     sie davor — gleiche Spezifitaet, also gewann die aeltere Regel, und im Bild leuchtete
     "Anfrage" waehrend "Buchung" blass blieb: genau verkehrt herum. */
  #alx-actions button.alx-haupt{flex:1.7;background:linear-gradient(180deg,var(--alx-brand-lift),var(--alx-brand));
    color:var(--alx-on-brand);border-color:transparent;box-shadow:var(--alx-sh-brand),var(--alx-hl-top);font-weight:600}
#alx-actions button.alx-haupt:hover{background:linear-gradient(180deg,var(--alx-brand),var(--alx-brand-600));
    box-shadow:var(--alx-sh-lg),var(--alx-hl-top)}
#alx-actions button.alx-neben{flex:1;background:transparent;color:var(--alx-brand-ink);
    border-color:var(--alx-border);box-shadow:none;font-weight:500}
#alx-actions button.alx-neben::before{display:none}
#alx-actions button.alx-neben:hover{background:var(--alx-surface);border-color:var(--alx-brand);box-shadow:none}
#alx-actions button:active{transform:scale(.985)}
#alx-actions button:focus-visible{outline:2px solid var(--alx-brand);outline-offset:2px}
/* ── EINGABE ───────────────────────────────────────────── */
  /* NUR unser Eingabefeld stylen (#alx-f/#alx-in) - nackte form{}
/input{}
-Regeln schlagen sonst auf
     eingebettete Fremd-Widgets durch (das HGV-Anfrageformular wurde dadurch zerlegt). */
  #alx-f{display:flex;gap:9px;align-items:center;padding:10px 12px;padding-bottom:max(12px,env(safe-area-inset-bottom));background:hsl(0 0% 100% / .5);flex:0 0 auto}
#alx-in{flex:1;min-width:0;border:1px solid var(--alx-border);background:var(--alx-surface);border-radius:var(--alx-r-pill);padding:13px 16px;font-size:15px;font-family:inherit;color:var(--alx-ink);outline:none;transition:border-color var(--alx-dur-fast) var(--alx-ease),box-shadow var(--alx-dur-fast) var(--alx-ease)}
#alx-in::placeholder{color:var(--alx-muted);opacity:.75}
#alx-in:focus{border-color:var(--alx-brand-400);box-shadow:0 0 0 3px hsl(var(--alx-brand-h) var(--alx-brand-s) 45% / .12)}
button.alx-send{position:relative;background:linear-gradient(180deg,var(--alx-brand-lift),var(--alx-brand));color:var(--alx-on-brand);border:none;border-radius:50%;width:44px;height:44px;font-size:17px;cursor:pointer;flex:0 0 44px;display:grid;place-items:center;box-shadow:var(--alx-sh-brand),var(--alx-hl-top);transition:transform var(--alx-dur-fast) var(--alx-ease-out),box-shadow var(--alx-dur-fast) var(--alx-ease),opacity var(--alx-dur-base) var(--alx-ease)}
button.alx-send::before{content:"";position:absolute;inset:0;pointer-events:none;border-radius:50%;padding:1px;
    background:var(--alx-rim-soft);-webkit-mask:var(--alx-mask-rim);-webkit-mask-composite:xor;mask:var(--alx-mask-rim);mask-composite:exclude}
button.alx-send:hover{transform:scale(1.06) translate(1px,-1px);box-shadow:var(--alx-sh-lg),var(--alx-hl-top)}
button.alx-send:active{transform:scale(.92)}
button.alx-send:focus-visible{outline:2px solid var(--alx-brand);outline-offset:2px}
/* Leeres Feld -> Senden optisch zurueckgenommen. NUR Optik; die vorhandene
     disabled-Logik bleibt unangetastet. */
  #alx-in:placeholder-shown ~ button.alx-send{opacity:.55}
button.alx-send:disabled{opacity:.5;cursor:default}
/* ── FUSSZEILE ─────────────────────────────────────────── */
  /* Fusszeile bleibt leise ueber Groesse, NICHT ueber opacity: mit 50% Deckkraft
     faellt der Kontrast unter AA (bei Waldgruen gemessen 4.26 -> durchgefallen). */
  .alx-foot{font-size:11px;color:var(--alx-muted);text-align:center;padding:8px 10px 10px;background:hsl(0 0% 100% / .5);transition:color var(--alx-dur-base) var(--alx-ease)}
#alx-wrap:hover .alx-foot{color:var(--alx-ink)}
.alx-foot a{color:var(--alx-brand-ink);font-weight:600;text-decoration:none;border-bottom:1px solid transparent;transition:border-color var(--alx-dur-fast) var(--alx-ease)}
.alx-foot a:hover{border-bottom-color:var(--alx-brand-ink)}
.alx-foot a:focus-visible{outline:2px solid var(--alx-brand);outline-offset:2px;border-radius:3px}
/* ── LAUNCHER + EINSTIEGSFRAGEN ────────────────────────── */
  #alx-launchDock{position:fixed;right:20px;bottom:20px;display:none;flex-direction:column;align-items:flex-end;gap:12px;z-index:20}
#alx-launchDock.alx-show{display:flex}
#alx-launcher{width:var(--alx-launcher);height:var(--alx-launcher);border-radius:50%;background:linear-gradient(180deg,var(--alx-brand-lift),var(--alx-brand));color:var(--alx-on-brand);font-size:calc(var(--alx-launcher) * 4 / 11);display:flex;align-items:center;justify-content:center;cursor:pointer;overflow:hidden;box-shadow:var(--alx-sh-lg);transition:transform var(--alx-dur-base) var(--alx-ease-out),box-shadow var(--alx-dur-base) var(--alx-ease);animation:alx-launchPulse 2.4s var(--alx-ease) infinite}
#alx-launcher{position:relative;overflow:visible}
#alx-launcher::after{content:"";position:absolute;inset:0;pointer-events:none;border-radius:50%;padding:1px;
    background:var(--alx-rim);-webkit-mask:var(--alx-mask-rim);-webkit-mask-composite:xor;mask:var(--alx-mask-rim);mask-composite:exclude}
/* Online-Punkt am Launcher (David: "wie bei ALPIX"). Bei einem PROFILFOTO gehoert das
     Online-Zeichen unten rechts hin (WhatsApp/Slack-Konvention) - ALPIX hat es oben rechts,
     dort ist der Launcher aber ein Icon, kein Gesicht.
     GEOMETRIE (nachgerechnet, nicht geschaetzt): Launcher 88px -> r=44, Mitte (44,44).
     Punkt 16px -> r=8. Bei right/bottom:6px liegt der Mittelpunkt auf (74|74),
     Abstand zur Mitte = sqrt(2*30²) = 42,4 < 44 -> der Punkt sitzt AUF dem Rand statt
     aussen anzukleben (mit 17px/2px lag er bei 37,5 und wirkte aufgeklebt).
     WICHTIG beim Groesserziehen: Punktgroesse UND Versatz mitskalieren, sonst rutscht
     der Punkt nach innen (zu kleiner Versatz) oder klebt aussen an. Verhaeltnis
     Abstand/Radius bleibt ~0,96 (vorher 74px/14px/5px -> 35,4/37).
     ERLEDIGT die Skalierung jetzt selbst: alles rechnet aus --alx-launcher. Die Brueche
     treffen bei 88px exakt die alten Festwerte (2/11*88=16, 3/44*88=6, 3/88*88=3),
     und das Verhaeltnis Abstand/Radius bleibt bei JEDER Groesse 0,964 - der Punkt
     sitzt also auch bei 64px genauso auf dem Rand. Nicht wieder Festwerte eintragen.
     KEIN weisser Ring (David: "nicht sehr schoen"): der Ring nimmt die Markenfarbe des
     Launchers auf -> der Punkt wirkt in den Launcher gestanzt statt aufgeklebt. Dazu ein
     zarter dunkler Saum, damit er auf hellen Fotos nicht ausfranst. */
  #alx-launcher::before{content:"";position:absolute;
    right:calc(var(--alx-launcher) * 3 / 44);bottom:calc(var(--alx-launcher) * 3 / 44);
    width:calc(var(--alx-launcher) * 2 / 11);height:calc(var(--alx-launcher) * 2 / 11);border-radius:50%;
    background:var(--alx-online);z-index:3;pointer-events:none;
    box-shadow:0 0 0 calc(var(--alx-launcher) * 3 / 88) var(--alx-brand), 0 1px 3px hsl(var(--alx-brand-h) 30% 10% / .35);
    animation:alx-breathe 2.4s var(--alx-ease) infinite}
#alx-launcher:hover{transform:translateZ(0) scale(1.06);animation-play-state:paused}
/* launchPulse animiert box-shadow = Neuzeichnen bei JEDEM Frame, dauerhaft. Steht man
     auf einer FRAGE (nicht auf dem Launcher), pulsierte er weiter und liess die Fragen
     daneben mitflimmern. Sobald die Maus irgendwo im Dock ist, pausiert der Puls - seine
     Aufgabe (auffallen) ist dann ohnehin erledigt. */
  #alx-launchDock:hover #alx-launcher{animation-play-state:paused}
#alx-launcher:active{transform:scale(.95)}
@keyframes alx-launchPulse{
    0%   {box-shadow:var(--alx-sh-lg),0 0 0 0 hsl(var(--alx-brand-h) var(--alx-brand-s) 45% / .55), 0 0 0 0 hsl(var(--alx-brand-h) var(--alx-brand-s) 45% / .3); transform:translateZ(0) scale(1)}
    50%  {transform:translateZ(0) scale(1.04)}
    70%  {box-shadow:var(--alx-sh-lg),0 0 0 18px hsl(var(--alx-brand-h) var(--alx-brand-s) 45% / 0), 0 0 0 30px hsl(var(--alx-brand-h) var(--alx-brand-s) 45% / 0)}
    100% {box-shadow:var(--alx-sh-lg),0 0 0 0 hsl(var(--alx-brand-h) var(--alx-brand-s) 45% / 0), 0 0 0 0 hsl(var(--alx-brand-h) var(--alx-brand-s) 45% / 0); transform:translateZ(0) scale(1)}
  }
#alx-hints{display:flex;flex-direction:column;align-items:flex-end;gap:9px}
/* Hover-Fragen: schlicht von unten nach oben einblenden (David). Das EINBLENDEN
     bleibt sanft - nur Hochgleiten + Fade, keine Skalierung, kein Ueberschwingen.
     Die Reihenfolge (unten zuerst) macht showHints() ueber den Versatz.
     Faehrt der Gast dann ueber eine EINZELNE Frage, hellt sie auf und hebt sich 2px
     (Jannik 17.7.2026 - die Fragen sollen auf den Mauszeiger reagieren, sonst wirken
     sie tot). Bewusst gegen Davids urspruengliches "kein Hover-Sprung": der Sprung galt
     der ganzen Kaskade beim Einschweben, nicht dem Hover einer stehenden Blase. Der Lift
     geht nach OBEN, die Maus bleibt auf der Blase -> loest das alte Flackern
     (hintHideTimer, s.alx-u.) nicht neu aus. Rueckbau = beide Zeilen wieder auf nur
     box-shadow:var(--alx-sh-xl) im Hover + die zwei Transitions raus. */
  /* translateZ(0)+backface-visibility: eigene GPU-Ebene, wie es das Projekt fuer #alx-wrap und
     #alx-launcher schon macht (Zeile 85). OHNE das rastert der Browser bei jedem Frame der
     Bewegung Text + Verlauf + Schatten neu -> sichtbares Flimmern. Das translateZ(0) MUSS
     in beiden transform-Werten stehen, sonst hebt .alx-in die Ebene wieder auf. */
  #alx-hints .alx-hintTitle{font-size:11px;font-weight:600;letter-spacing:.02em;color:var(--alx-on-brand);background:hsl(var(--alx-brand-h) var(--alx-brand-s) 10% / .82);padding:5px 11px;border-radius:9px;box-shadow:var(--alx-sh-md);opacity:0;transform:translateY(8px) translateZ(0);backface-visibility:hidden;will-change:transform,opacity;pointer-events:none;transition:opacity var(--alx-dur-base) var(--alx-ease),transform var(--alx-dur-base) var(--alx-ease)}
#alx-hints .alx-hintTitle.alx-in{opacity:1;transform:translateZ(0)}
.alx-hint{background:linear-gradient(180deg,var(--alx-brand-lift),var(--alx-brand));color:var(--alx-on-brand);border:1px solid var(--alx-glass-hi);border-radius:15px;padding:10px 15px;font-size:13px;font-weight:600;font-family:inherit;cursor:pointer;box-shadow:var(--alx-sh-lg);white-space:nowrap;max-width:min(74vw,260px);overflow:hidden;text-overflow:ellipsis;opacity:0;transform:translateY(12px) translateZ(0);backface-visibility:hidden;will-change:transform,opacity;pointer-events:none;transition:opacity var(--alx-dur-base) var(--alx-ease),transform var(--alx-dur-base) var(--alx-ease),box-shadow var(--alx-dur-fast) var(--alx-ease),background var(--alx-dur-fast) var(--alx-ease),border-color var(--alx-dur-fast) var(--alx-ease)}
.alx-hint.alx-in{opacity:1;transform:translateZ(0);pointer-events:auto}
/* Hinweis-Blasen ueber dem Launcher: weisse Schrift (auf jeder Markenfarbe UND ueber dem
     Website-Hintergrund lesbar) + weiche Feder-Animation statt stockig. Die helle Sprechblasen-
     Variante (.alx-hint.alx-bubble) bleibt dunkel - ihre Regel steht spaeter und gewinnt. */
  #alx-hints .alx-hintTitle{color:#fff}
.alx-hint:not(.alx-bubble){color:#fff;text-shadow:0 1px 3px hsl(0 0% 0% / .5)}
#alx-hints .alx-hintTitle,#alx-hints .alx-hint{transition:opacity 300ms cubic-bezier(.22,1,.36,1),transform 340ms cubic-bezier(.22,1,.36,1),box-shadow var(--alx-dur-fast) var(--alx-ease),background var(--alx-dur-fast) var(--alx-ease),border-color var(--alx-dur-fast) var(--alx-ease)}
/* Beim Hover: aufhellen (+12% L oben), Rand weiss aufleuchten, groesserer Schatten und
     2px Lift. transition-duration hier fast -> knackig rein; raus faellt transform ueber
     die Basis (dur-base) sanft zurueck. NUR fuer die echten Fragen (:not(.alx-bubble)) - die
     helle hintBubble (Graf Hartwig) wuerde sonst beim Hover markenfarben umkippen, weil
     .alx-hint.alx-in:hover (3 Klassen) das hellere .alx-hint.alx-bubble (2 Klassen) schlaegt. */
  .alx-hint.alx-in:hover:not(.alx-bubble){background:linear-gradient(180deg,hsl(var(--alx-brand-h) var(--alx-brand-s) calc(var(--alx-brand-l) + 12%)),hsl(var(--alx-brand-h) var(--alx-brand-s) calc(var(--alx-brand-l) + 5%)));border-color:hsl(0 0% 100% / .95);box-shadow:var(--alx-sh-xl);transform:translateY(-2px) translateZ(0);transition-duration:var(--alx-dur-fast)}
/* Die Sprechblase bleibt exakt wie vorher (nur groesserer Schatten) - hell, kein Lift,
     kein Farbwechsel. So aendert sich bei Graf Hartwig gegenueber dem Live-Stand nichts. */
  .alx-hint.alx-bubble.alx-in:hover{box-shadow:var(--alx-sh-xl)}
/* EINE Sprechblase statt der Fragen-Kaskade (config.alx-hintBubble, Barbara/Graf Hartwig:
     "nur einen Hinweis mit einer Sprechblase"). Bewusst HELL statt markenfarben: der
     Launcher darunter ist ein voller Markenkreis, eine zweite Markenflaeche direkt
     darueber verschmilzt damit. Der Zipfel zeigt auf die Launcher-MITTE: Dock und Blase
     sind rechtsbuendig, die Launcher-Mitte liegt also --alx-launcher/2 links von der
     Blasenkante; der 14px-Zipfel sitzt bei der Haelfte minus 7. Aus --alx-launcher gerechnet,
     damit er bei einer anderen Launcher-Groesse nicht ins Leere zeigt (bei 88px = 37px).
     overflow:visible ist PFLICHT: .alx-hint hat overflow:hidden (fuer das Ellipsis der
     einzeiligen Fragen) und schnitt den Zipfel spurlos ab - die "Sprechblase" war dann
     nur ein Kasten. Ellipsis braucht die Blase nicht, sie darf umbrechen (white-space:normal). */
  .alx-hint.alx-bubble{background:var(--alx-surface);color:var(--alx-ink);border:1px solid var(--alx-border);
    white-space:normal;overflow:visible;max-width:min(74vw,208px);line-height:1.35;position:relative}
.alx-hint.alx-bubble::after{content:"";position:absolute;right:calc(var(--alx-launcher) / 2 - 7px);bottom:-7px;width:14px;height:14px;
    background:var(--alx-surface);border-right:1px solid var(--alx-border);border-bottom:1px solid var(--alx-border);
    transform:rotate(45deg);border-bottom-right-radius:3px}
/* ── EMBED-MODUS (?embed=1 im iframe, Loader: public/widget.alx-js) ──────────
     Der Bot laeuft dann als Widget IN einer fremden Hotel-Website: das iframe ist
     durchsichtig, darunter liegt die echte Seite - deshalb KEIN eigener Hintergrund.
     background:none !important schlaegt auch das inline gesetzte bgImage aus
     wendeConfigAn, so braucht der Embed-Fall dort keine Sonderbehandlung.
     Panel-Hoehe: widget.alx-js macht das iframe panelH+96px hoch (80px Luft oben fuer
     den Schatten + 16px Body-Padding unten); min(90vh,…) wuerde in diesem knappen
     iframe das Panel um ein paar Pixel stauchen -> eigene Formel, die bei voller
     iframe-Hoehe exakt --alx-panel-h ergibt und auf kleinen Handys weiter mitschrumpft.
     Panel-Glas: backdrop-filter kann die ELTERN-Seite nicht erfassen (Browser-
     Grenze, das Glas saehe nur das leere iframe) -> die Hotel-Seite schiene
     UNVERWISCHT durch die 74%-Toenung und der Text wuerde schwer lesbar. Deshalb
     im Embed fast deckend - gleiche Optik, nur ohne Durchschein-Risiko. */
  html.alx-embed, html.alx-embed body{background:none !important}
/* ⛔⛔ DIESELBE FALLE WIE BEI SCHRIFT UND ABDUNKLUNG: Der ausgelieferte Bot
   steht beim Kunden allein im iframe, dort MEINT `*` genau ihn. In diese Seite
   eingebaut legte dieses eine Sternchen die **ganze Hotelseite** stumm, sobald
   Windows die Animationseffekte abschaltet — keine Einblendung, keine
   Ueberblendung der Titelbilder, nichts. Deshalb an die Bot-Wurzel gebunden.
   (David ist am 04.08.2026 schon einmal darueber gestolpert, damals fror es
   im Bot die Tippen-Punkte ein — siehe die Ausnahme weiter unten.) */
@media not all{.alx-wurzel,.alx-wurzel *,.alx-wurzel *::before,.alx-wurzel *::after{animation-duration:.01ms !important;animation-iteration-count:1 !important;transition-duration:.01ms !important;scroll-behavior:auto !important}
/* ⭐⭐ 04.08.2026, David: „die Punkte sehen aus, als wären sie eingefroren."
       Genau so war es: Wer in Windows die Animationseffekte ausschaltet (und
       das sind nicht wenige), bekam durch die Regel oben AUCH das Tipp-Zeichen
       stillgelegt. Drei graue Punkte, die sich nie rühren — der Bot wirkt
       abgestürzt, obwohl er arbeitet.

       Das Tipp-Zeichen ist kein Schmuck. Es ist die einzige Rückmeldung
       „ich bin noch dran", und die darf eine Bewegungs-Einstellung nicht
       wegnehmen. Deshalb hier die Ausnahme — aber OHNE Bewegung: es pulst nur
       die Deckkraft. Das ist die Art Animation, die auch bei reduzierter
       Bewegung unbedenklich ist (nichts wandert, nichts springt), und
       gleichzeitig sieht man sofort, dass etwas läuft.
       Bewusst langsamer als die normale Fassung: 1,6 s statt 1 s. */
    .alx-typing i{animation:alx-blass 1.6s ease-in-out infinite !important}
.alx-typing i:nth-child(2){animation-delay:.27s !important}
.alx-typing i:nth-child(3){animation-delay:.54s !important}}
@keyframes alx-blass{0%,100%{opacity:.28}50%{opacity:.95}}
/* ⛔ Der ausgelieferte Bot laeuft beim Kunden in einem iframe, das unten
   rechts klebt — deshalb ist sein Panel nur `position:relative`. Direkt in
   eine Seite eingebaut braucht er den Rahmen, den sonst das iframe stellt. */
/* ⛔ Die Wurzel darf KEINE eigene Ausdehnung haben. Das geschlossene Panel
   ist nur `opacity:0`, nicht `display:none` — es bleibt also im Fluss. In
   einer Flex-Spalte wuchs der Container dadurch 872 px nach oben und schob
   die Glocke an den oberen Bildrand. Deshalb: reiner Ankerpunkt, beide
   Kinder haengen absolut an seiner unteren rechten Ecke. */
/* ⛔ SCHRIFT. Der ausgelieferte Bot setzt seine Schrift auf `body` — dort steht
   beim Kunden nur der Bot, denn er laeuft im eigenen iframe. Alles in ihm erbt
   sie ueber `font-family:inherit`. Direkt in diese Seite eingebaut gehoert der
   `body` dagegen dem Hotel, und der Bot erbte **Jost** — gemessen in jeder
   Blase, jedem Chip, jedem Knopf. Gleiche Form, falsche Schrift: genau das
   laesst ihn wie einen Nachbau aussehen. Deshalb steht die Systemschrift hier
   auf der Wurzel — sie deckt den ganzen Bot ab, ohne die Seite anzufassen. */
.alx-wurzel{
  position:fixed;right:clamp(14px,2vw,22px);bottom:clamp(14px,2vw,22px);
  width:0;height:0;z-index:2147483000;pointer-events:none;
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Inter,Roboto,system-ui,sans-serif;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
}
.alx-wurzel>*{pointer-events:auto}
#alx-launchDock{position:absolute;right:0;bottom:0;left:auto;top:auto}
#alx-wrap{position:absolute;right:0;bottom:0;left:auto;top:auto}
/* Der Chat-Knopf erscheint erst, wenn das Skript laeuft. */
#alx-launchDock{display:none}
.js #alx-launchDock.alx-show{display:flex}
/* Vollbild-Modus: dann darf das Panel den Rahmen sprengen */
#alx-wrap.alx-big{position:fixed;right:16px;bottom:16px}


/* ═══════════════════════════════════════════════════════════════════════════
   ALPIX-ZUSATZ  ·  18.08.2026
   Genau vier Dinge. Nichts an der Kopfzeile, nichts am Titel, nichts am
   Naturpark-Band — die bleiben, wie Jannik sie gebaut hat.

   ⛔ HARTE REGEL, dreimal teuer gelernt: diese Schicht setzt NIEMALS
      `position`, `display`, `overflow` oder `filter` auf einen Behaelter.
      Nur Farbe, Schrift, Uebergang — und Bewegung nur am <img> selbst.
   ═══════════════════════════════════════════════════════════════════════════ */

/* ── 1 · Logo eine Spur groesser ──────────────────────────────────────── */
.titel-logo img{ width:clamp(248px,30vw,408px) }

/* ── 2 · ⛔ Aufgeklappte Auswahl war weiss auf weiss ───────────────────
   Die Auswahl steht auf dunklem Grund und ist deshalb hell — die Optionen
   zeichnet der Browser aber auf seinem EIGENEN Grund. Getrennt setzen. */
select option, select optgroup{ color:#1c1e13 !important; background:#fff !important }

/* ── 3 · ⛔ Unterlaengen wurden gekappt ────────────────────────────────
   `.zeilen` und `h1 span` haben `overflow:hidden` als Maske, hinter der die
   Zeilen hochfahren. Sie schnitt auch das Bein von g, j, p, q, y ab.
   Luft geben und unten wieder abziehen, damit der Zeilenabstand haelt. */
.zeilen, .zeilen > span, h1 span, h2 span{
  padding-bottom:.24em; margin-bottom:-.24em;
}

/* ── 4 · Schrift laeuft beim Scrollen weich ein ────────────────────────
   Zwei Bewegungen zusammen: sie steigt auf UND schaerft sich aus einer Spur
   Unschaerfe heraus. Eine Verschiebung allein wirkt mechanisch.
   `animation-timeline: view()` laeuft im Compositor — kein Skript, kein
   Ruckeln, und es kann nichts haengen bleiben. */
@supports (animation-timeline: view()){
  .innen p, .innen li, .innen h2, .innen h3,
  .zimmer p, .zimmer li, .kennzahl, .kennzahlen > *{
    animation:alpix-ein linear both;
    animation-timeline:view();
    animation-range:entry 3% cover 28%;
  }
  @keyframes alpix-ein{
    from{ opacity:0; transform:translateY(22px); filter:blur(3px) }
    to  { opacity:1; transform:none;             filter:blur(0)  }
  }
  /* Aufzaehlungen nacheinander, nie alle auf einmal */
  .zimmer li:nth-child(2){ animation-range:entry 6% cover 30% }
  .zimmer li:nth-child(3){ animation-range:entry 9% cover 32% }
  .zimmer li:nth-child(n+4){ animation-range:entry 12% cover 34% }
}

/* ── 5 · Bilder reagieren beim Ueberfahren ─────────────────────────────
   ⛔ Nur die EINZELNEN Bildbehaelter ansprechen, nie ihren gemeinsamen
   Elternteil. Vorher traf meine Regel `.bildspalte` — dadurch wurden beide
   Wellness-Bilder zusammen animiert, sobald man eines beruehrte. */
.bogen img,
.breitbild img,
.zimmer-rahmen img,
.zimmer-bild-mobil img{
  transition:transform 1.3s cubic-bezier(.19,1,.22,1),
             filter .6s cubic-bezier(.19,1,.22,1);
}
.bogen:hover img,
.breitbild:hover img,
.zimmer-rahmen:hover img,
.zimmer-bild-mobil:hover img{
  transform:scale(1.045);
  filter:saturate(1.08) contrast(1.04);
}

/* ── 6 · Weniger Bewegung ──────────────────────────────────────────────
   Janniks Einteilung: Deckkraft ja, Verschiebung nein. */
@media not all{
  .innen p, .innen li, .innen h2, .innen h3,
  .zimmer p, .zimmer li, .kennzahl, .kennzahlen > *{
    animation:none; opacity:1; transform:none; filter:none;
  }
  .bogen:hover img, .breitbild:hover img,
  .zimmer-rahmen:hover img, .zimmer-bild-mobil:hover img{ transform:none }
}

/* ── 7 · Schrift kraeftiger und eine Spur groesser ──────────────────────
   Der Fliesstext war sehr duenn gesetzt. Eine Stufe mehr Gewicht und rund
   6 % mehr Groesse; die Ruhe der Seite bleibt. */
.innen p, .innen li, .zimmer p, .zimmer li{
  font-size:1.06em;
  line-height:1.68;
}
.innen h3, .zimmer h3, figcaption, small{ font-weight:500 }

/* ── 8 · Kopfzeile besser lesbar ───────────────────────────────────────
   ⛔ KEIN Textschatten auf der weissen Leiste — der sah schmutzig aus.
   Ueber dem Foto traegt ihn Janniks eigenes CSS bereits. Hier nur Gewicht
   und Laufweite, das reicht. */
.kopf nav a{ font-weight:600; letter-spacing:.15em }

/* ── 9 · Sprachumschalter rechts neben dem Anfragen-Knopf ───────────────
   44 px Tippziel. Die aktive Sprache bekommt einen Strich, nicht nur eine
   andere Farbe — Farbe allein reicht nicht, wenn jemand Farben schlecht
   unterscheidet. */
.alpix-sprachen{
  display:inline-flex; align-items:center; gap:0;
  margin-left:auto; margin-right:clamp(16px,2vw,32px);
  padding-right:clamp(14px,1.8vw,26px);
  border-right:1px solid currentColor;
}
.alpix-sprachen button{
  min-width:44px; min-height:44px; padding:0 8px;
  border:0; background:none; cursor:pointer; color:inherit;
  font:600 .84rem/1 inherit; letter-spacing:.12em; text-transform:uppercase;
  opacity:.62; position:relative;
  transition:opacity .3s cubic-bezier(.19,1,.22,1);
}
.alpix-sprachen button:hover{ opacity:1 }
.alpix-sprachen button[aria-current="true"]{ opacity:1 }
.alpix-sprachen button[aria-current="true"]::after{
  content:""; position:absolute; left:24%; right:24%; bottom:10px;
  height:2px; background:currentColor;
}
@media (max-width:900px){
  .alpix-sprachen{ border-right:0; padding-right:0; margin-right:8px }
  .alpix-sprachen button{ min-width:38px; font-size:.76rem }
}

/* ── 10 · Menuereihe in die Mitte ──────────────────────────────────────
   Gemessen: sie stand 171 px links von der Fenstermitte, weil das Logo
   breiter ist als der Anfragen-Knopf.
   ⛔ Bewusst OHNE `position:absolute` — das hat heute schon zweimal ein
   Layout zerrissen. `margin-inline:auto` schiebt sie in die Mitte des
   freien Raums, und die rechte Seite bekommt eine Mindestbreite, damit
   der Raum symmetrisch wird. */
.kopf nav{ margin-inline:auto }
.kopf .knopf{ margin-left:0 }

/* ── 11 · Mehr Bewegung an den Bildern ─────────────────────────────────
   Vorher war es zu zaghaft. Jetzt faehrt das Bild deutlicher heran, hebt
   sich leicht und wird waermer — alles mit derselben weichen Kurve, nur
   laenger, damit es nicht hektisch wirkt. */
.bogen img, .breitbild img, .zimmer-rahmen img, .zimmer-bild-mobil img{
  transition:transform 1.6s cubic-bezier(.19,1,.22,1),
             filter .8s cubic-bezier(.19,1,.22,1) !important;
}
.bogen:hover img, .breitbild:hover img,
.zimmer-rahmen:hover img, .zimmer-bild-mobil:hover img{
  transform:scale(1.085) !important;
  filter:saturate(1.14) contrast(1.06) brightness(1.03) !important;
}
/* Der Rahmen selbst hebt sich eine Spur — das gibt der Bewegung Tiefe,
   ohne `position` oder `filter` anzufassen. */
.bogen, .breitbild, .zimmer-rahmen, .zimmer-bild-mobil{
  transition:box-shadow .8s cubic-bezier(.19,1,.22,1);
}
.bogen:hover, .breitbild:hover, .zimmer-rahmen:hover, .zimmer-bild-mobil:hover{
  box-shadow:0 26px 60px -30px rgba(28,30,19,.55);
}

/* ── 12 · Sicherheitsnetz gegen abgeschnittene Unterlaengen ────────────
   Auf breiteren Bildschirmen wird die Schrift groesser, und die Masken
   schneiden dann wieder. Deshalb wachsen sie mit. */
.zeilen, .zeilen > span, .zeilen > *,
h1 span, h2 span, h3 span, .titel h1 span{
  padding-bottom:.28em !important;
  margin-bottom:-.28em !important;
}
h1, h2, h3{ padding-bottom:.06em }

/* ═══ A-003 v3 · BLOCK-REVEAL ══════════════════════════
   ⛔ Kein Zeilen- und kein Wort-Split mehr. Davids Ansage: die Überschrift
   kommt GANZ herein, der Text kommt GANZ herein — nicht Zeile für Zeile,
   nicht Wort für Wort.

   Warum das besser ist, nicht nur einfacher:
   • Kein Ticken mehr. Ein Absatz mit 40 Wörtern hatte 40 Startzeitpunkte —
     das liest das Auge als Aufzählung, nicht als Bewegung.
   • Stärker möglich. Ein einzelner Block darf einen weiten Weg gehen, ohne
     unruhig zu wirken. 40 Wörter auf demselben Weg wären Chaos.
   • Viel weniger DOM: aus 207 Spans werden 0. Nichts zu splitten heißt auch
     nichts, was Umlaute, Komposita oder Vorlesehilfen zerlegen kann.

   Alles steigt weiterhin ausschließlich AUF. */
/* ⛔⛔ Hier stand die fremde Textanimation (.rv-block / .rv-an) — entfernt
   03.09.2026. Sie kam aus dem Schwarzenbach-Projekt, hat mit dem Chatbot
   nichts zu tun und setzte Textblöcke der Seite auf opacity:0.
   Details im zugehoerigen Kommentar in bot/skript.js. */

[class*="kennzahl"] b, [class*="kennzahl"] strong{ font-variant-numeric:tabular-nums }

/* ═══ NACHBESSERUNG ═══════════════════════════════════════════════════════
   ⛔ Mein Fehler: das absolut gesetzte nav verschwand beim Scrollen. Ein
   absolutes Element traegt nichts zur Hoehe der Kopfzeile bei — sobald
   Jannik sie beim Scrollen schmaler macht (.fest), rutschte das Menue aus
   dem sichtbaren Bereich. Jetzt gilt die Mittigstellung in BEIDEN Zustaenden
   und die Kopfzeile behaelt eine Mindesthoehe. */
@media (min-width:1400px){
  /* ⛔ HIER STAND position:relative — und hat Janniks position:fixed
     ueberschrieben. Dadurch scrollte die Kopfzeile mit der Seite weg.
     ZUM VIERTEN MAL heute derselbe Fehler: eine Ergaenzung darf NIE
     position auf einen Behaelter setzen.
     Seine fixed-Kopfzeile ist ohnehin ein gueltiger Bezugsrahmen fuer
     absolute Kinder — das nav zentriert sich auch ohne mein Zutun. */
  .kopf, .kopf.fest{ min-height:62px }
  .kopf nav, .kopf.fest nav{
    position:absolute; left:50%; top:50%;
    transform:translate(-50%, -50%);
    margin:0; white-space:nowrap;
  }
}

/* ═══ RAHMEN UM JEDES BILD, RUNDHERUM ════════════════════════════════════
   Nicht mehr nur versetzt dahinter, sondern eine echte Linie rundherum in
   der Hausfarbe.  mit spread=0 und Offset 0 legt sie exakt auf
   die Kante — und folgt dabei der Rundung, also auch dem Bogen.
   Zweite Lage nach aussen versetzt: die faehrt beim Ueberfahren heran. */
.bogen, .breitbild, .zimmer-rahmen, .zimmer-bild-mobil{
  box-shadow:
    0 0 0 2px var(--oliv, #6c6526),
    16px 16px 0 -2px color-mix(in srgb, var(--oliv, #6c6526) 45%, transparent);
  transition:box-shadow 1.1s cubic-bezier(.16,1,.3,1);
}
.bogen:hover, .breitbild:hover, .zimmer-rahmen:hover, .zimmer-bild-mobil:hover{
  box-shadow:
    0 0 0 2px var(--oliv, #6c6526),
    0 0 0 -2px color-mix(in srgb, var(--oliv, #6c6526) 45%, transparent),
    0 24px 52px -28px rgba(28,30,19,.5);
}
@media (max-width:760px){
  .bogen, .breitbild, .zimmer-rahmen, .zimmer-bild-mobil{
    box-shadow:0 0 0 2px var(--oliv, #6c6526), 9px 9px 0 -2px color-mix(in srgb, var(--oliv,#6c6526) 45%, transparent);
  }
}

/* ═══ JEDES ZIMMER ZEIGT SEIN EIGENES FOTO ════════════════════
   Bisher teilten sich Alpin und Kristall EINEN Bildrahmen, in dem das Foto
   beim Scrollen getauscht wurde. Deshalb sah es bei Kristall so aus, als
   fehle das Bild — es war da, aber nur eingeblendet, wenn der Tausch lief.

   Jannik hat fuer das Handy bereits ein eigenes Bild je Zimmer angelegt
   (.zimmer-bild-mobil). Das zeigen wir jetzt auch auf dem Rechner: jedes
   Zimmer hat sein Foto direkt daneben, dauerhaft sichtbar. Kein Tausch,
   kein Verschwinden, beide gleich behandelt. */
@media (min-width:861px){
  .zimmer-bild-mobil{
    display:block !important;
    margin-bottom:clamp(18px,2vw,30px);
    border-radius:999px 999px 3px 3px;      /* derselbe Bogen wie nebenan */
    overflow:hidden;
    aspect-ratio:3/4.15;
  }
  .zimmer-bild-mobil img{ width:100%; height:100%; object-fit:cover; display:block }
  /* Der geteilte Rahmen wird dadurch ueberfluessig */
  /* ⛔ NUR den geteilten Bildrahmen ausblenden. .zimmer-buehne ist der
     Elternteil von Bild UND Texten - den auszublenden hat den ganzen
     Zimmerbereich geloescht. Gemessen: Hoehe 0. */
  .zimmer-rahmen{ display:none !important }
  .zimmer-buehne{ display:block !important }
  /* Die Texte bekommen den freien Platz und stehen nebeneinander */
  /* Zimmer UNTEREINANDER, nicht nebeneinander. Jedes Zimmer bleibt EIN
     Block - dadurch behaelt es den Texteffekt, der als Ganzes aufsteigt.
     Innerhalb des Zimmers steht das Foto neben dem Text. */
  .zimmer-texte{
    display:grid;
    grid-template-columns:1fr;
    gap:clamp(56px,7vw,110px);
  }
  /* ⛔ HIER STAND display:grid AUF .zimmer — und hat Janniks interne
     Anordnung zerstoert. Ueberschrift, Massangabe, Beschreibung und
     Stichpunkte wurden willkuerlich in Rasterzellen verteilt.
     Genau die Regel, die in Karte 11 steht: eine Ergaenzungsschicht darf
     NIE display auf einen Behaelter setzen. Fuenftes Mal heute.

     Jetzt bleibt Janniks Anordnung im Zimmer unangetastet. Das Foto sitzt
     einfach OBEN im Block, der Text darunter - wie er es fuers Handy
     ohnehin vorgesehen hat. Die Zimmer stehen untereinander, jedes bleibt
     ein Block mit dem Texteffekt. */
  /* Bild links, Text rechts — nebeneinander.
     ⛔ `.zimmer` ist bei Jannik `display:flex`. Hätte ich einfach
     `flex-direction:row` gesetzt, würden Titel, Maßangabe, Beschreibung,
     Liste und Link ZU FÜNF EIGENEN SPALTEN — genau das Chaos von vorhin.
     Deshalb fasst das Skript alle Textteile vorher in EINEN Behälter
     (.zimmer-text). Dann sind es nur noch zwei Flex-Kinder: Bild und Text. */
  .zimmer{
    flex-direction:row;
    align-items:center;
    gap:clamp(32px,4vw,72px);
  }
  .zimmer-bild-mobil{
    flex:0 0 clamp(300px, 42%, 520px);   /* wieder deutlich größer */
    max-width:none;
    margin:0 !important;
    align-self:stretch;
  }
  .zimmer-text{ flex:1 1 auto; min-width:0 }

  /* Jedes zweite Zimmer gespiegelt — sonst wirkt die Liste wie eine Tabelle */
  .zimmer:nth-of-type(even){ flex-direction:row-reverse }

  @media (max-width:1100px){
    .zimmer{ flex-direction:column; align-items:stretch }
    .zimmer:nth-of-type(even){ flex-direction:column }
    .zimmer-bild-mobil{ flex:none; width:100%; max-width:min(480px,60%) }
  }
}