/* ============================================================
   SCHRIFTEN — selbst ausgeliefert
   Vorher kamen sie von fonts.googleapis.com. Zwei Gruende fuer den Umzug:
   1. Vor dem ersten Text standen zwei zusaetzliche DNS-Aufloesungen und
      TLS-Handschlaege zu fremden Hosts.
   2. Bei jedem Seitenaufruf ging die IP-Adresse des Gastes an Google. Fuer
      eine Schweizer Seite unter revDSG ist das mindestens erklaerungsbeduerftig.
   Domine und Work Sans stehen unter der SIL Open Font License 1.1, die das
   Selbst-Ausliefern ausdruecklich erlaubt (assets/fonts/OFL.txt).
   Beide sind variable Schriften: eine Datei je Schnitt statt einer je Gewicht.
   ============================================================ */
@font-face{font-family:'Domine';font-style:normal;font-weight:400 700;font-display:swap;src:url('/assets/fonts/domine-normal-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'Domine';font-style:normal;font-weight:400 700;font-display:swap;src:url('/assets/fonts/domine-normal-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Work Sans';font-style:italic;font-weight:400 500;font-display:swap;src:url('/assets/fonts/work-sans-italic-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'Work Sans';font-style:italic;font-weight:400 500;font-display:swap;src:url('/assets/fonts/work-sans-italic-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Work Sans';font-style:normal;font-weight:300 600;font-display:swap;src:url('/assets/fonts/work-sans-normal-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'Work Sans';font-style:normal;font-weight:300 600;font-display:swap;src:url('/assets/fonts/work-sans-normal-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}

/* ============================================================
   PITSCHNA SCENA — Premium Restaurant Onepager
   CI-Farben (Saratz Pontresina, offizielle Restaurant-Palette):
   Dunkeloliv · Oliv · Gold · Dunkelrot · Braun · Rostbraun
   Schriften (CI): Eames Century Modern (Headlines) · Founders Grotesk Text
   → Web-Fallback: Domine + Work Sans (= reale saratz.ch-Webfonts)
   ============================================================ */

/* === CI-Schriften (Drop-in) ===========================================
   Lizenz-.woff2 nach assets/fonts/ legen → echte Fonts aktiv.
   Fehlen die Dateien, greift still der Fallback (Newsreader/Hanken). */

:root{
  /* --- Offizielle CI-Markenfarben (1:1 aus CI-Vorlage) --- */
  --dunkeloliv:#505346;
  --oliv:#7e7d5f;
  --gold:#dfca91;
  --dunkelrot:#64321a;
  --braun:#906d57;
  --rostbraun:#b1673b;
  /* Hotel-Saratz Sekundärtöne (sparsame Akzente, optional) */
  --waldgruen:#184428;
  --engadiner-herbst:#b9541e;
  --gletschermilch:#9dbebb;

  /* --- Rollen-Variablen (auf CI-Farben gemappt) --- */
  --espresso:#1b1611;        /* dunkle, cineastische Basis (warmes Fast-Schwarz) */
  --espresso-2:#261d15;
  --creme:#f5f1e8;           /* helle Basis: warmes Off-White, viel Weissraum */
  --creme-2:#ece3d3;
  --copper:#505346;          /* Aktions-/Akzentfarbe = Dunkeloliv (CI-Naturton statt Orange) */
  --copper-light:#7e7d5f;    /* Oliv (CI): hellerer Akzenttext, Hover, Verläufe – lesbar auf hell & dunkel */
  --sand:#dfca91;            /* feiner Trenner/Highlight = Gold (CI), sparsam */
  --pine:#2f3a2a;            /* Tiefenakzent = tiefes Waldgrün/Oliv */
  --ink:#261f18;             /* Text auf hell: warmes Fast-Schwarz */
  --muted:#857462;           /* gedämpfter Text = Braun-Taupe (CI) */
  --muted-light:#ab9c8b;
  --line:rgba(38,31,24,.14);
  --line-light:rgba(245,241,232,.16);

  --serif:'Domine',Georgia,serif;        /* Saratz-Web-Fonts. CI-Lizenzfonts: siehe assets/fonts/README.md */
  --sans:'Work Sans',system-ui,sans-serif;

  --ease:cubic-bezier(.22,1,.36,1);
  --ease-out:cubic-bezier(.16,1,.3,1);

  --container:1320px;
  --gutter:clamp(1.4rem, 5vw, 6rem);
}

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}

html{
  scroll-behavior:smooth;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.001ms !important;transition-duration:.001ms !important}
}

body{
  font-family:var(--sans);
  background:var(--creme);
  color:var(--ink);
  font-weight:300;
  line-height:1.7;
  overflow-x:hidden;
}

img{display:block;max-width:100%;height:auto}
a{color:inherit;text-decoration:none}
em{font-style:italic}

::selection{background:var(--copper);color:var(--creme)}

/* ---------- Shared type elements ---------- */
.section-index{
  display:inline-block;
  font-family:var(--sans);
  font-size:.72rem;
  font-weight:500;
  letter-spacing:.32em;
  text-transform:uppercase;
  color:var(--copper);
  margin-bottom:1.6rem;
}
.section-index.light{color:var(--copper-light)}

.section-title{
  font-family:var(--serif);
  font-weight:400;
  font-size:clamp(1.75rem, 6.2vw, 5.4rem);
  line-height:1.02;
  letter-spacing:-.01em;
  color:var(--ink);
}
.section-title em{color:var(--copper);font-weight:500}
.section-title.light{color:var(--creme)}
.section-title.light em{color:var(--copper-light)}

/* ---------- Buttons ---------- */
.btn{
  position:relative;
  display:inline-flex;align-items:center;justify-content:center;
  font-family:var(--sans);
  font-size:.82rem;font-weight:500;
  letter-spacing:.18em;text-transform:uppercase;
  padding:1.15em 2.4em;
  border-radius:100px;
  overflow:hidden;
  transition:transform .5s var(--ease), color .5s var(--ease);
  cursor:pointer;border:none;
  isolation:isolate;
}
.btn span{position:relative;z-index:2}
.btn::before{
  content:'';position:absolute;inset:0;z-index:1;
  transition:transform .6s var(--ease);
}
.btn--primary{background:var(--copper);color:var(--creme)}
.btn--primary::before{background:var(--copper-light);transform:translateY(101%)}
.btn--primary:hover::before{transform:translateY(0)}
.btn--primary:hover{transform:translateY(-3px)}

.btn--ghost{
  color:var(--creme);
  border:1px solid rgba(245,241,232,.4);
}
.btn--ghost::before{background:var(--creme);transform:translateY(101%)}
.btn--ghost:hover{color:var(--espresso)}
.btn--ghost:hover::before{transform:translateY(0)}

.btn--lg{padding:1.35em 3em;font-size:.86rem}

/* ============================================================
   PRELOADER
   ============================================================ */
.preloader{
  position:fixed;inset:0;z-index:1000;
  background:var(--espresso);
  display:flex;align-items:center;justify-content:center;
  transition:opacity 1s var(--ease), visibility 1s;
}
.preloader.done{opacity:0;visibility:hidden}
.preloader__inner{text-align:center;padding:2rem}
.preloader__kicker{
  display:block;
  font-size:.7rem;letter-spacing:.4em;text-transform:uppercase;
  color:var(--copper-light);
  opacity:0;transform:translateY(12px);
  animation:fadeUp .9s var(--ease) .2s forwards;
}
.preloader__brand{
  font-family:var(--serif);font-weight:300;
  font-size:clamp(2.6rem,9vw,5.5rem);
  color:var(--creme);
  margin:1rem 0 1.6rem;
  letter-spacing:.01em;
  opacity:0;transform:translateY(18px);
  animation:fadeUp 1.1s var(--ease) .4s forwards;
}
.preloader__line{
  width:min(280px,60vw);height:1px;margin:0 auto;
  background:var(--line-light);position:relative;overflow:hidden;
}
.preloader__line span{
  position:absolute;inset:0;background:var(--copper);
  transform:scaleX(0);transform-origin:left;
  animation:lineGrow 1.6s var(--ease) .6s forwards;
}
@keyframes fadeUp{to{opacity:1;transform:translateY(0)}}
@keyframes lineGrow{to{transform:scaleX(1)}}

/* ============================================================
   GRAIN + PROGRESS
   ============================================================ */
.grain{
  position:fixed;inset:-50%;z-index:900;pointer-events:none;
  opacity:.04;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
.scroll-progress{
  position:fixed;top:0;left:0;height:2px;width:0;z-index:950;
  background:linear-gradient(90deg,var(--copper),var(--copper-light));
  transition:width .1s linear;
}

/* ============================================================
   HEADER / NAV
   ============================================================ */
.header{
  position:fixed;top:0;left:0;width:100%;z-index:800;
  transition:background .5s var(--ease), box-shadow .5s var(--ease);
  padding:0;
}
.header.scrolled{
  background:rgba(27,22,17,.82);
  backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  box-shadow:0 1px 0 var(--line-light);
}
/* top utility row — hotel affiliation in the corner */
.header__util{
  max-width:var(--container);margin:0 auto;
  /* Sprachwahl und Saratz-Hinweis bilden rechts eine Servicezeile. Linksbuendig
     stand der Switcher exakt auf der Logo-Kante und wirkte gestapelt. */
  padding:.7rem var(--gutter) 0;display:flex;justify-content:flex-end;align-items:center;gap:1.8rem;
  transition:padding .5s var(--ease);
}
/* language switcher — kompakter Dropdown */
.lang-menu{position:relative}
.lang-menu__btn{
  display:inline-flex;align-items:center;gap:.5rem;
  background:none;border:1px solid rgba(245,241,232,.28);border-radius:100px;
  padding:.38em 1em;cursor:pointer;
  font-family:var(--sans);font-size:.68rem;letter-spacing:.16em;text-transform:uppercase;font-weight:500;
  color:var(--creme);transition:border-color .3s var(--ease),background .3s var(--ease);
}
.lang-menu__btn:hover,.lang-menu.open .lang-menu__btn{border-color:rgba(126,125,95,.9);background:rgba(80,83,70,.25)}
.lang-menu__globe{width:14px;height:14px;flex:none;opacity:.85}
.lang-menu__chev{width:12px;height:12px;flex:none;opacity:.7;transition:transform .35s var(--ease)}
.lang-menu.open .lang-menu__chev{transform:rotate(180deg)}
.lang-menu__list{
  position:absolute;top:calc(100% + 10px);left:0;z-index:950;
  min-width:190px;margin:0;padding:.45rem;list-style:none;
  background:rgba(27,22,17,.96);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  border:1px solid var(--line-light);border-radius:10px;
  box-shadow:0 24px 48px -18px rgba(0,0,0,.55);
  opacity:0;transform:translateY(-6px);pointer-events:none;
  transition:opacity .3s var(--ease),transform .3s var(--ease);
}
.lang-menu.open .lang-menu__list{opacity:1;transform:translateY(0);pointer-events:auto}
/* Im Kopf haengt das Panel am Header, nicht am Button: es faellt unter die
   gesamte Kopfzeile, statt Navigation und Reservieren-Button mitten im Wort zu
   zerschneiden. Rechte Kante buendig mit der Container-Kante, also mit CTA und
   Saratz-Hinweis darueber. .header ist position:fixed und damit der Bezug. */
.header .lang-menu{position:static}
.header .lang-menu__list{
  top:calc(100% + 8px);left:auto;
  right:max(var(--gutter), calc((100% - var(--container)) / 2 + var(--gutter)));
}
.lang-menu__opt{
  display:flex;align-items:center;gap:.7rem;
  padding:.55em .9em;border-radius:6px;
  font-size:.82rem;letter-spacing:.04em;color:var(--creme-2);
  transition:background .25s var(--ease),color .25s var(--ease);
}
.lang-menu__opt:hover{background:rgba(126,125,95,.22);color:var(--creme)}
.lang-menu__opt.active{color:var(--gold)}
.lang-menu__opt.active::after{content:'✓';margin-left:auto;font-size:.8em}
.lang-menu__flag{font-size:1.05rem;line-height:1;flex:none}
/* im Mobile-Menü öffnet die Liste nach oben */
/* Der Button sitzt rechts in der Fusszeile. Mit dem geerbten left:0 lief das
   190px breite Panel ueber den rechten Bildrand hinaus (84px bei 414px Breite,
   Sprachnamen abgeschnitten). Deshalb hier rechtsbuendig. */
.mobile-menu__foot .lang-menu__list{top:auto;bottom:calc(100% + 10px);left:auto;right:0}
.header__hotel{
  display:inline-flex;align-items:center;gap:.55rem;white-space:nowrap;
  opacity:.9;transition:opacity .3s var(--ease);
}
.header__hotel:hover{opacity:1}
.header__hotel-label{
  font-size:.68rem;letter-spacing:.2em;text-transform:uppercase;font-weight:500;
  color:var(--sand);
}
.header__hotel-logo{height:14px;width:auto;display:block}
.header__inner{
  max-width:var(--container);margin:0 auto;
  padding:.55rem var(--gutter) 1.05rem;
  display:flex;align-items:center;justify-content:space-between;gap:2rem;
  transition:padding .5s var(--ease);
}
.header.scrolled .header__util{padding-top:.45rem}
.header.scrolled .header__inner{padding-bottom:.7rem}
.brand{display:flex;flex-direction:column;line-height:1.1;color:var(--creme)}
.brand__name{font-family:var(--serif);font-size:1.5rem;font-weight:500;letter-spacing:.01em}
.brand__sub{font-size:.6rem;letter-spacing:.28em;text-transform:uppercase;color:var(--sand);margin-top:.15rem}

.nav{display:flex;align-items:center;gap:2.4rem}
.nav__link{
  position:relative;color:var(--creme);white-space:nowrap;
  font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;font-weight:400;
  opacity:.82;transition:opacity .4s;
}
.nav__link::after{
  content:'';position:absolute;left:0;bottom:-6px;width:100%;height:1px;
  background:var(--copper-light);transform:scaleX(0);transform-origin:right;
  transition:transform .5s var(--ease);
}
.nav__link:hover{opacity:1}
.nav__link:hover::after{transform:scaleX(1);transform-origin:left}
.nav__cta{
  color:var(--creme);white-space:nowrap;
  font-size:.74rem;letter-spacing:.16em;text-transform:uppercase;font-weight:500;
  padding:.7em 1.5em;border:1px solid rgba(245,241,232,.32);border-radius:100px;
  transition:background .4s var(--ease), color .4s var(--ease), border-color .4s;
}
.nav__cta:hover{background:var(--copper);border-color:var(--copper);color:var(--creme)}

/* Trefferflaeche auf ~54x44px; padding + negativer margin halten die Optik */
.burger{display:none;flex-direction:column;gap:6px;background:none;border:none;cursor:pointer;width:30px;position:relative;z-index:810;
  padding:1.1rem .75rem;margin:-1.1rem -.75rem;box-sizing:content-box}
.burger span{display:block;height:1.5px;width:100%;background:var(--creme);transition:transform .4s var(--ease), opacity .3s}
.burger.open span:nth-child(1){transform:translateY(3.75px) rotate(45deg)}
.burger.open span:nth-child(2){transform:translateY(-3.75px) rotate(-45deg)}

/* ---------- Mobile menu ---------- */
/* z-index BEWUSST unter dem Header (800): sonst deckt das Overlay den
   Schliess-Button ab und das Menue laesst sich nicht mehr schliessen. */
.mobile-menu{
  position:fixed;inset:0;z-index:790;
  background:var(--espresso);
  display:flex;flex-direction:column;justify-content:center;
  padding:var(--gutter);
  clip-path:circle(0% at 100% 0);
  transition:clip-path .8s var(--ease);
  pointer-events:none;
}
.mobile-menu.open{clip-path:circle(150% at 100% 0);pointer-events:auto}
.mobile-menu__nav{display:flex;flex-direction:column;gap:.4rem}
.mobile-menu__link{
  font-family:var(--serif);font-size:clamp(2rem,9vw,3.2rem);font-weight:400;
  color:var(--creme);display:flex;align-items:baseline;gap:1rem;
  opacity:0;transform:translateY(20px);transition:opacity .5s,transform .5s,color .3s;
}
.mobile-menu.open .mobile-menu__link{opacity:1;transform:translateY(0)}
.mobile-menu.open .mobile-menu__link:nth-child(1){transition-delay:.2s}
.mobile-menu.open .mobile-menu__link:nth-child(2){transition-delay:.27s}
.mobile-menu.open .mobile-menu__link:nth-child(3){transition-delay:.34s}
.mobile-menu.open .mobile-menu__link:nth-child(4){transition-delay:.41s}
.mobile-menu.open .mobile-menu__link:nth-child(5){transition-delay:.48s}
.mobile-menu.open .mobile-menu__link:nth-child(6){transition-delay:.55s}
.mobile-menu.open .mobile-menu__link:nth-child(7){transition-delay:.62s}
.mobile-menu__link:hover{color:var(--copper-light)}
.mobile-menu__idx{font-family:var(--sans);font-size:.7rem;letter-spacing:.2em;color:var(--copper);font-weight:500}
.mobile-menu__foot{
  margin-top:3rem;display:flex;justify-content:space-between;flex-wrap:wrap;gap:1rem;
  color:var(--sand);font-size:.8rem;letter-spacing:.1em;
  border-top:1px solid var(--line-light);padding-top:1.4rem;
}

/* ============================================================
   HERO
   ============================================================ */
.hero{
  position:relative;height:100svh;min-height:640px;
  display:flex;align-items:flex-end;
  overflow:hidden;background:var(--espresso);
}
.hero__media{position:absolute;inset:0;z-index:1}
.hero__img{
  width:100%;height:100%;object-fit:cover;
  transform:scale(1.12);
  animation:kenburns 24s ease-out forwards;
}
@keyframes kenburns{to{transform:scale(1)}}
.hero__veil{
  position:absolute;inset:0;
  background:
    linear-gradient(to top, rgba(27,22,17,.92) 2%, rgba(27,22,17,.35) 38%, rgba(27,22,17,.55) 100%),
    radial-gradient(120% 80% at 20% 90%, rgba(27,22,17,.7), transparent 60%);
}
.hero__content{
  position:relative;z-index:3;
  max-width:var(--container);width:100%;margin:0 auto;
  padding:0 var(--gutter) clamp(3.5rem,8vh,7rem);
}
.hero__kicker{
  display:block;color:var(--sand);
  font-size:.76rem;letter-spacing:.34em;text-transform:uppercase;font-weight:500;
  margin-bottom:1.5rem;
}
.hero__title{
  font-family:var(--serif);font-weight:300;
  font-size:clamp(3rem,15vw,12rem);
  line-height:.92;color:var(--creme);
  letter-spacing:-.01em;margin-bottom:1.6rem;
}
.hero__title .reveal-word{display:inline-block;overflow:hidden;vertical-align:top}
.hero__title-accent{color:var(--copper-light);font-style:italic;font-weight:400;margin-left:.1em}
.hero__claim{
  font-family:var(--serif);font-style:italic;font-weight:400;
  font-size:clamp(1.3rem,3vw,2.1rem);
  color:var(--creme-2);max-width:42ch;margin-bottom:.6rem;
}
.hero__sub{
  color:var(--sand);font-size:clamp(.95rem,1.4vw,1.1rem);font-weight:300;
  max-width:48ch;margin-bottom:2.6rem;
}
.hero__actions{display:flex;gap:1rem;flex-wrap:wrap}

.hero__scroll{
  position:absolute;right:var(--gutter);bottom:clamp(3.5rem,8vh,7rem);z-index:3;
  display:flex;flex-direction:column;align-items:center;gap:.8rem;
}
.hero__scroll-label{
  writing-mode:vertical-rl;font-size:.66rem;letter-spacing:.3em;text-transform:uppercase;
  color:var(--sand);
}
.hero__scroll-line{width:1px;height:60px;background:var(--line-light);position:relative;overflow:hidden}
.hero__scroll-line::after{
  content:'';position:absolute;top:0;left:0;width:100%;height:40%;
  background:var(--copper-light);animation:scrollPulse 2.2s var(--ease) infinite;
}
@keyframes scrollPulse{0%{transform:translateY(-100%)}60%,100%{transform:translateY(250%)}}

.hero__meta{
  position:absolute;top:50%;left:var(--gutter);z-index:3;
  transform:translateY(-50%) rotate(180deg);writing-mode:vertical-rl;
  display:flex;gap:2rem;color:var(--muted-light);
  font-size:.64rem;letter-spacing:.24em;text-transform:uppercase;
  opacity:.6;
}
@media (max-width:900px){.hero__meta{display:none}}

/* ============================================================
   MARQUEE
   ============================================================ */
.marquee{
  background:var(--espresso);color:var(--creme);
  padding:1.6rem 0;overflow:hidden;
  border-top:1px solid var(--line-light);border-bottom:1px solid var(--line-light);
  white-space:nowrap;
}
.marquee__track{display:inline-flex;align-items:center;gap:2.5rem;animation:marquee 32s linear infinite}
.marquee__track span,.marquee__item{
  font-family:var(--serif);font-style:italic;font-size:clamp(1.4rem,3vw,2.2rem);
  font-weight:400;color:var(--creme-2);
}
.marquee__item{display:inline-flex;align-items:center;gap:.7rem;transition:color .3s var(--ease)}
.marquee__item:hover{color:var(--gold)}
.marquee__thumb{
  width:clamp(34px,4vw,48px);height:clamp(34px,4vw,48px);border-radius:50%;object-fit:cover;
  border:1px solid var(--line-light);flex:none;
}
.marquee__dot{color:var(--copper-light) !important;font-style:normal !important;font-size:.9rem !important}
@keyframes marquee{to{transform:translateX(-50%)}}
.dish{scroll-margin-top:110px}

/* ============================================================
   STORY
   ============================================================ */
.story{
  max-width:var(--container);margin:0 auto;
  padding:clamp(6rem,14vh,11rem) var(--gutter) clamp(4rem,8vh,6rem);
}
.story__inner{
  /* Rechte Spalte nur so breit wie das Portrait: der Text bekommt den Rest.
     Bei 1fr 1fr blieb neben dem 300px-Bild eine halbe Spalte Luft stehen. */
  display:grid;grid-template-columns:1fr auto;gap:clamp(2rem,6vw,6rem);
  align-items:start;
}
.story__head{margin-bottom:1.8rem}
.story__lead{
  font-family:var(--serif);font-style:italic;
  font-size:clamp(1.4rem,2.4vw,1.9rem);line-height:1.45;
  color:var(--ink);margin-bottom:1.8rem;
}
.story__text p{color:var(--muted);font-size:1.05rem;margin-bottom:1.4rem;max-width:52ch}
.story__text em{color:var(--copper);font-style:italic}
/* Das Portrait steht in der rechten Spalte und laeuft mit, solange der Text
   links laenger ist. align-self:start ist dafuer noetig — ein gestreckter
   Rasterplatz (der Standard) ist so hoch wie die Zeile, und ein sticky
   Element kann sich innerhalb seiner eigenen Hoehe nirgends festhalten. */
.story__sign{
  position:sticky;top:14vh;align-self:start;
  display:flex;flex-direction:column;align-items:flex-start;gap:1.25rem;
  border-left:2px solid var(--copper);padding-left:1.5rem;
}
.story__sign-text{display:flex;flex-direction:column;min-width:0}
/* Portraet des Kuechenchefs.
   Bewusst KEIN Kreis: runde Bilder sind auf dieser Seite den kleinen Avataren
   bis 64px vorbehalten (Gaestestimmen, Marquee). Fotografie in dieser Groesse
   traegt hier ueberall border-radius:2px — siehe .feature__media.
   Die Datei wird im Verhaeltnis 4:5 zugeschnitten ausgeliefert
   (tools/portraet-zuschneiden.py), deshalb passt der Ausschnitt ohne
   object-position: ein solcher Wert haengt am Bildausschnitt der jeweiligen
   Lieferung und stimmt beim naechsten Foto nicht mehr. */
.story__sign-foto{
  width:clamp(200px,26vw,300px);aspect-ratio:4/5;flex:0 0 auto;
  border-radius:2px;object-fit:cover;
  box-shadow:0 16px 38px rgba(0,0,0,.13);
}
.story__sign-name{font-family:var(--serif);font-size:1.5rem;font-style:italic;color:var(--ink)}
.story__sign-role{font-size:.72rem;letter-spacing:.24em;text-transform:uppercase;color:var(--muted);margin-top:.2rem}

/* Kennzahlen — eigene Sektion, nicht mehr Anhaengsel der Story.
   Als letztes Kind von .story lief die Leiste in der halben Rasterbreite mit
   und nahm der Erzaehlung Platz weg. Jetzt spannt sie ueber die volle Breite
   und steht mittig, als Zaesur zwischen Story und Auftritt. */
.kennzahlen{
  max-width:var(--container);margin:0 auto;
  padding:clamp(2rem,5vh,4rem) var(--gutter) clamp(5rem,10vh,8rem);
  border-bottom:1px solid var(--line);
}
.kennzahlen__inner{
  display:flex;justify-content:center;gap:clamp(2.5rem,10vw,9rem);flex-wrap:wrap;
}
.count{display:flex;flex-direction:column;align-items:center;text-align:center}
/* Drei Kennzahlen nebeneinander brauchen Platz, den ein Handy nicht hat:
   "Kuechen, eine Buehne" allein ist breiter als ein Drittel der Zeile. Umbruch
   ergab 2+1, und die einzelne Zahl darunter sah nach Versehen aus. Deshalb auf
   schmalen Geraeten untereinander. */
@media (max-width:720px){
  .kennzahlen__inner{flex-direction:column;gap:2.6rem}
}
.count__num{font-family:var(--serif);font-size:clamp(3rem,7vw,5.5rem);font-weight:400;color:var(--copper);line-height:1}
.count__label{font-size:.74rem;letter-spacing:.2em;text-transform:uppercase;color:var(--muted);margin-top:.6rem}

/* ============================================================
   DISHES  (dark)
   ============================================================ */
.dishes{
  background:var(--espresso);color:var(--creme);
  padding:clamp(6rem,14vh,11rem) var(--gutter);
}
.dishes__head{max-width:var(--container);margin:0 auto clamp(3.5rem,7vh,6rem)}
.dishes__intro{
  color:var(--sand);font-size:1.1rem;font-weight:300;max-width:46ch;margin-top:1.8rem;
}
.dishes__grid{
  max-width:var(--container);margin:0 auto;
  display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(1rem,2vw,2rem);
  align-items:end;
}
.dish{position:relative;cursor:default}
.dish__media{
  position:relative;overflow:hidden;border-radius:2px;
  aspect-ratio:4/5;background:var(--espresso-2);
}
.dish--tall .dish__media{aspect-ratio:3/4.4}
.dish__media img{
  width:100%;height:110%;object-fit:cover;
  transition:transform 1s var(--ease), filter 1s var(--ease);
  filter:saturate(.92) brightness(.92);
}
.dish:hover .dish__media img{transform:scale(1.06);filter:saturate(1.05) brightness(1)}
.dish__caption{padding:1.6rem .2rem 0;display:flex;flex-direction:column}
.dish__no{font-family:var(--serif);font-style:italic;color:var(--copper-light);font-size:1.1rem;letter-spacing:.1em}
.dish__name{font-family:var(--serif);font-weight:400;font-size:clamp(1.6rem,2.6vw,2.3rem);color:var(--creme);margin:.2rem 0 .5rem}
.dish__desc{color:var(--muted-light);font-size:.95rem;font-weight:300;max-width:30ch}

/* ---------- Menu list ---------- */
.menu-list{
  max-width:var(--container);margin:clamp(5rem,10vh,8rem) auto 0;
  display:grid;grid-template-columns:.7fr 1.3fr;gap:clamp(2rem,5vw,5rem);
  align-items:start;
}
.menu-list__head{position:sticky;top:18vh}
.menu-list__title{font-family:var(--serif);font-weight:400;font-size:clamp(2rem,4vw,3rem);color:var(--creme);line-height:1.05}
.menu-list__items{list-style:none}
.menu-row{
  display:flex;align-items:baseline;gap:1rem;
  padding:1.5rem 0;border-bottom:1px solid var(--line-light);
  transition:padding-left .5s var(--ease);
}
.menu-row:hover{padding-left:1rem}
.menu-row__name{font-family:var(--serif);font-size:clamp(1.4rem,2.4vw,2rem);color:var(--creme);white-space:nowrap}
.menu-row:hover .menu-row__name{color:var(--copper-light)}
.menu-row__dots{flex:1;border-bottom:1px dotted rgba(245,241,232,.2);transform:translateY(-.3em)}
.menu-row__desc{color:var(--sand);font-size:.92rem;font-weight:300;text-align:right;max-width:36ch}
.menu-list__note{color:var(--muted-light);font-style:italic;font-family:var(--serif);font-size:1.15rem;margin-top:2rem}
.menu-list__cta{margin-top:2.2rem}

/* ============================================================
   ATMOSPHERE
   ============================================================ */
.atmosphere{padding:clamp(6rem,14vh,11rem) var(--gutter)}
.atmosphere__head{max-width:var(--container);margin:0 auto clamp(3.5rem,8vh,6rem)}

.feature{
  max-width:var(--container);margin:0 auto;
  display:grid;grid-template-columns:1.15fr .85fr;gap:clamp(2rem,6vw,6rem);
  align-items:center;padding:clamp(2.5rem,6vh,5rem) 0;
}
.feature--reverse{grid-template-columns:.85fr 1.15fr}
.feature--reverse .feature__media{order:2}
.feature--reverse .feature__text{order:1}
.feature__media{position:relative;overflow:hidden;border-radius:2px;aspect-ratio:16/11;background:var(--creme-2)}
.feature__media img{width:100%;height:118%;object-fit:cover;transition:transform 1.2s var(--ease)}
.feature__media:hover img{transform:scale(1.04)}
.feature__no{font-family:var(--serif);font-style:italic;font-size:1.4rem;color:var(--copper);letter-spacing:.1em}
.feature__title{font-family:var(--serif);font-weight:400;font-size:clamp(1.9rem,3.6vw,3rem);line-height:1.05;margin:.6rem 0 1.2rem;color:var(--ink)}
.feature__text p{color:var(--muted);font-size:1.08rem;max-width:42ch}
.feature__tag{display:inline-block;margin-top:1.6rem;font-size:.72rem;letter-spacing:.22em;text-transform:uppercase;color:var(--copper);border:1px solid var(--line);padding:.6em 1.2em;border-radius:100px}

.feature--band{
  background:var(--espresso);color:var(--creme);max-width:none;
  margin:clamp(2rem,5vh,4rem) calc(var(--gutter) * -1) 0;
  padding:clamp(4rem,10vh,7rem) var(--gutter);display:block;text-align:center;
}
.feature__text--center{margin:0 auto;max-width:640px}
.feature--band .feature__title{color:var(--creme)}
.feature--band .feature__text p{color:var(--sand);margin:0 auto;font-size:1.15rem}
.feature--band .feature__tag{color:var(--copper-light);border-color:var(--line-light)}

/* ============================================================
   EXPERIENCE  (parallax bg)
   ============================================================ */
.experience{position:relative;overflow:hidden;padding:clamp(7rem,16vh,13rem) var(--gutter);color:var(--creme)}
.experience__bg{position:absolute;inset:0;z-index:1}
.experience__bg img{width:100%;height:130%;object-fit:cover;will-change:transform}
.experience__veil{position:absolute;inset:0;background:linear-gradient(to right, rgba(27,22,17,.94) 10%, rgba(27,22,17,.6) 60%, rgba(27,22,17,.78))}
.experience__inner{position:relative;z-index:2;max-width:var(--container);margin:0 auto}
.moments{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(1.5rem,3vw,2.5rem);margin-top:clamp(3rem,6vh,5rem)}
.moment{padding-top:1.6rem;border-top:1px solid var(--line-light)}
.moment__time{font-size:.74rem;letter-spacing:.18em;text-transform:uppercase;color:var(--copper-light);font-weight:500}
.moment__title{font-family:var(--serif);font-weight:400;font-size:clamp(1.4rem,2.2vw,1.9rem);color:var(--creme);margin:.7rem 0 .5rem;line-height:1.1}
.moment p{color:var(--sand);font-size:.94rem;font-weight:300}

/* ============================================================
   VOICES
   ============================================================ */
.voices{background:var(--creme-2);padding:clamp(6rem,14vh,11rem) var(--gutter)}
.voices__head{max-width:var(--container);margin:0 auto clamp(3.5rem,7vh,5rem)}
.voices__badges{display:flex;gap:1.5rem;flex-wrap:wrap;margin-top:2.2rem}
.badge{display:flex;flex-direction:column;gap:.3rem;padding:1rem 1.6rem;background:var(--creme);border-radius:4px;border:1px solid var(--line)}
.badge__stars{color:var(--copper);letter-spacing:.15em;font-size:.9rem}
.badge__meta{font-size:.74rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}

.voices__grid{
  max-width:var(--container);margin:0 auto;
  display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(1.2rem,2vw,1.8rem);
}
.voice{
  background:var(--creme);border:1px solid var(--line);border-radius:4px;
  padding:2.2rem 1.8rem;display:flex;flex-direction:column;justify-content:space-between;gap:2rem;
  transition:transform .6s var(--ease), box-shadow .6s var(--ease);
}
.voice:hover{transform:translateY(-6px);box-shadow:0 30px 60px -30px rgba(38,31,24,.35)}
.voice p{font-family:var(--serif);font-style:italic;font-size:clamp(1.3rem,1.9vw,1.6rem);line-height:1.35;color:var(--ink)}
.voice footer{display:flex;flex-direction:column;gap:.4rem}
.voice__stars{color:var(--copper);letter-spacing:.12em;font-size:.85rem}
.voice cite{font-style:normal;font-size:.74rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
a.badge{transition:transform .4s var(--ease),box-shadow .4s var(--ease)}
a.badge:hover{transform:translateY(-3px);box-shadow:0 16px 32px -20px rgba(38,31,24,.4)}

/* ============================================================
   RESERVE
   ============================================================ */
.reserve{position:relative;overflow:hidden;color:var(--creme);padding:clamp(7rem,16vh,13rem) var(--gutter);text-align:center}
.reserve__bg{position:absolute;inset:0;z-index:1}
.reserve__bg img{width:100%;height:130%;object-fit:cover;will-change:transform}
.reserve__veil{position:absolute;inset:0;background:linear-gradient(to bottom, rgba(27,22,17,.88), rgba(27,22,17,.78))}
.reserve__inner{position:relative;z-index:2;max-width:880px;margin:0 auto}
.reserve__title{font-family:var(--serif);font-weight:300;font-size:clamp(2rem,7vw,6rem);line-height:1;color:var(--creme);margin:.4rem 0 1.4rem}
.reserve__title em{color:var(--copper-light);font-weight:400}
.reserve__lead{color:var(--sand);font-size:1.15rem;font-weight:300;max-width:44ch;margin:0 auto 2.6rem}
.reserve__info{
  display:grid;grid-template-columns:repeat(3,1fr);gap:2rem;
  margin-top:clamp(4rem,8vh,6rem);padding-top:clamp(3rem,5vh,4rem);
  border-top:1px solid var(--line-light);text-align:left;
}
.info-block__label{display:block;font-size:.72rem;letter-spacing:.24em;text-transform:uppercase;color:var(--copper-light);margin-bottom:1rem}
.info-block p{color:var(--creme-2);font-size:1.02rem;font-weight:300;line-height:1.7}
.info-block a:hover{color:var(--copper-light)}

/* ============================================================
   FOOTER
   ============================================================ */
.footer{background:var(--espresso);color:var(--creme);padding:clamp(4rem,8vh,6rem) var(--gutter) 2.5rem}
.footer__top{max-width:var(--container);margin:0 auto;display:grid;grid-template-columns:1.2fr 2fr;gap:clamp(2.5rem,6vw,6rem);padding-bottom:clamp(3rem,6vh,5rem);border-bottom:1px solid var(--line-light)}
.footer__name{font-family:var(--serif);font-size:2.2rem;font-weight:400}
.footer__tag{color:var(--sand);font-size:.98rem;font-weight:300;max-width:34ch;margin:1rem 0 2rem}
.footer__saratz{width:130px;opacity:.7}
.footer__cols{display:grid;grid-template-columns:repeat(3,1fr);gap:2rem}
.footer__col{display:flex;flex-direction:column;gap:.7rem}
.footer__col-title{font-size:.72rem;letter-spacing:.22em;text-transform:uppercase;color:var(--copper-light);margin-bottom:.6rem}
.footer__col a,.footer__col span{color:var(--sand);font-size:.92rem;font-weight:300;transition:color .3s}
.footer__col a:hover{color:var(--creme)}
.footer__bottom{max-width:var(--container);margin:2rem auto 0;display:flex;justify-content:space-between;flex-wrap:wrap;gap:1rem;color:var(--muted-light);font-size:.74rem;letter-spacing:.1em}

/* ============================================================
   REVEAL ANIMATIONS
   ============================================================ */
.reveal{opacity:0;transform:translateY(34px);transition:opacity 1s var(--ease-out), transform 1s var(--ease-out)}
.reveal.in{opacity:1;transform:translateY(0)}

.hero__title .reveal-word{transform:translateY(110%);transition:transform 1.1s var(--ease)}
.hero.loaded .reveal-word{transform:translateY(0)}
.hero.loaded .reveal-word:nth-child(2){transition-delay:.12s}

/* ============================================================
   RESPONSIVE
   ============================================================ */
@media (max-width:1024px){
  .dishes__grid{grid-template-columns:repeat(2,1fr)}
  .dish--tall{grid-column:span 2}
  .dish--tall .dish__media{aspect-ratio:16/9}
  .voices__grid{grid-template-columns:repeat(2,1fr)}
  .menu-list{grid-template-columns:1fr}
  .menu-list__head{position:static}
}
@media (max-width:860px){
  .nav{display:none}
  .burger{display:flex}
  .header__util{display:none}
  /* HINWEIS: Die <br> in den Ueberschriften NICHT per display:none entfernen.
     CSS ersetzt sie dann nicht durch ein Leerzeichen - die angrenzenden Woerter
     verkleben zu einem unbrechbaren Klotz ("Leichtigkeit,Buendner"), der aus
     dem Bild laeuft. Die kleineren Schriftgrade genuegen. */
  /* Die vertikale "Scrollen"-Marke sass mit 18x50px genau auf dem
     Reservieren-Button - auf jeder Telefonbreite von 320 bis 430px. Auf
     Touchgeraeten ist der Hinweis ohnehin entbehrlich. */
  .hero__scroll{display:none}
  /* Tap-Ziele: viele Textlinks lagen unter 32px Hoehe. padding vergroessert die
     Trefferflaeche, der negative margin haelt das Layout exakt gleich. */
  .footer__col a{display:inline-block;padding-block:.35rem;margin-block:-.35rem}
  .footer__col p a,.footer__saratz-link,.saratz__link,
  .voices__platforms a,.mobile-menu__foot>a{
    display:inline-block;padding-block:.55rem;margin-block:-.55rem}
  /* Die Sprachwahl ist auf Mobil das einzige sichtbare Exemplar - die Pille darf
     hier auch optisch groesser sein, sie soll bewusst auffallen. */
  .mobile-menu__foot .lang-menu__btn{padding:1.05em 1.3em}
  /* Telefon und E-Mail stehen im selben <p>, nur durch <br> getrennt. Erst den
     Zeilenabstand erhoehen, sonst ueberlappen sich die beiden Trefferflaechen. */
  .info-block p{line-height:2.2}
  .info-block a{display:inline-block;padding-block:.42rem;margin-block:-.42rem}
  /* Breadcrumb auf den Unterseiten war nur 14px hoch */
  .crumb a{display:inline-block;padding-block:.62rem;margin-block:-.62rem}
  .header__inner{padding-top:1.1rem;padding-bottom:1.1rem}
  .story__inner{grid-template-columns:1fr;gap:2.5rem}
  /* Einspaltig gibt es nichts, woran das Portrait sich festhalten koennte —
     sticky liesse es beim Scrollen ueber dem folgenden Text kleben. */
  .story__sign{position:static;margin-top:.6rem}
  .feature,.feature--reverse{grid-template-columns:1fr;gap:1.8rem}
  .feature--reverse .feature__media{order:0}
  .feature--reverse .feature__text{order:0}
  .moments{grid-template-columns:repeat(2,1fr)}
  .footer__top{grid-template-columns:1fr}
  .reserve__info{grid-template-columns:1fr;gap:2.2rem}
}
@media (max-width:560px){
  .dishes__grid{grid-template-columns:1fr}
  .dish--tall{grid-column:span 1}
  .dish--tall .dish__media{aspect-ratio:4/5}
  .voices__grid{grid-template-columns:1fr}
  .moments{grid-template-columns:1fr}
  .footer__cols{grid-template-columns:1fr}
  .hero__actions{flex-direction:column;align-items:flex-start;width:100%}
  .btn{width:100%}
  .menu-row{flex-wrap:wrap;gap:.3rem}
  .menu-row__dots{display:none}
  .menu-row__desc{text-align:left}
}

/* ============================================================
   ENHANCEMENT LAYER — luxury polish
   ============================================================ */

/* ---------- Custom cursor (fine pointers only) ---------- */
.cursor,.cursor-dot{position:fixed;top:0;left:0;z-index:990;pointer-events:none;border-radius:50%;mix-blend-mode:difference;opacity:0;transition:opacity .4s}
.cursor{width:30px;height:30px;border:1px solid rgba(245,241,232,.7);transform:translate(-50%,-50%);transition:width .3s var(--ease),height .3s var(--ease),background .3s var(--ease),opacity .3s,border-color .3s}
.cursor-dot{width:4px;height:4px;background:var(--creme);transform:translate(-50%,-50%)}
.cursor.is-hover{width:48px;height:48px;background:rgba(80,83,70,.14);border-color:rgba(126,125,95,.9)}
.cursor.is-hidden,.cursor-dot.is-hidden{opacity:0 !important}
body.cursor-ready.has-fine-pointer .cursor,
body.cursor-ready.has-fine-pointer .cursor-dot{opacity:1}
@media (hover:none),(pointer:coarse){.cursor,.cursor-dot{display:none}}
@media (prefers-reduced-motion:reduce){.cursor,.cursor-dot{display:none}}
body.has-fine-pointer.cursor-ready{cursor:none}
body.has-fine-pointer.cursor-ready a,
body.has-fine-pointer.cursor-ready button{cursor:none}

/* ---------- Ghost numerals (editorial depth) ---------- */
.ghost-num{
  position:absolute;font-family:var(--serif);font-weight:300;font-style:italic;
  font-size:clamp(9rem,26vw,24rem);line-height:.7;pointer-events:none;
  color:var(--copper);opacity:.06;z-index:0;user-select:none;letter-spacing:-.04em;
}
.story,.dishes__head,.atmosphere__head,.voices__head{position:relative}
.story .ghost-num{top:-3rem;right:0}
.dishes__head .ghost-num{top:-6rem;right:-1rem;color:var(--copper-light);opacity:.08}
.atmosphere__head .ghost-num{top:-5rem;right:0}
.voices__head .ghost-num{top:-6rem;right:0}
.story__inner,.dishes__head>*:not(.ghost-num),.atmosphere__head>*:not(.ghost-num),.voices__head>*:not(.ghost-num){position:relative;z-index:1}
@media (max-width:860px){.ghost-num{font-size:clamp(7rem,34vw,12rem);opacity:.05}}

/* ---------- Hero title underline ---------- */
.hero__title-rule{display:block;height:1px;width:0;background:linear-gradient(90deg,var(--copper-light),transparent);margin-top:1.4rem;transition:width 1.4s var(--ease) .5s}
.hero.loaded .hero__title-rule{width:min(420px,55vw)}

/* ---------- Marquee pause on hover ---------- */
.marquee:hover .marquee__track{animation-play-state:paused}

/* ---------- Focus visibility ---------- */
a:focus-visible,button:focus-visible{outline:2px solid var(--copper-light);outline-offset:4px;border-radius:2px}

/* ---------- Image grade consistency ---------- */
.feature__media img,.dish__media img{will-change:transform}
.experience__bg img,.reserve__bg img{filter:saturate(.96)}

/* ============================================================
   REAL LOGO INTEGRATION
   ============================================================ */
.brand{flex-direction:row;align-items:center;gap:.7rem;transition:opacity .6s var(--ease),transform .6s var(--ease)}
.brand__emblem{height:44px;width:auto;transition:height .5s var(--ease);filter:drop-shadow(0 1px 3px rgba(0,0,0,.45))}
.header.scrolled .brand__emblem{height:36px}
.brand__text{display:flex;flex-direction:column;line-height:1.1}
/* Home: header brand hidden until you scroll past the hero emblem (avoids double logo) */
.header.brand-hidden .brand{opacity:0;transform:translateY(12px);pointer-events:none}

.preloader__logo{
  display:block;width:min(380px,76vw);height:auto;margin:1.2rem auto 2rem;
  opacity:0;transform:translateY(18px);
  animation:fadeUp 1.2s var(--ease) .4s forwards;
}

.hero__emblem{
  height:clamp(54px,6vw,72px);width:auto;margin-bottom:1.5rem;
  filter:drop-shadow(0 2px 10px rgba(0,0,0,.45));
}

.footer__logo{width:240px;max-width:72%;height:auto;margin-bottom:1.3rem}

@media (max-width:560px){
  .brand__emblem{height:40px}
  .brand__sub{font-size:.55rem}
}

/* ============================================================
   HOTEL SARATZ AFFILIATION
   ============================================================ */
.nav__link--hotel{color:var(--copper-light);opacity:1}
.nav__link--hotel::after{background:var(--copper-light)}
.mobile-menu__link--hotel{color:var(--copper-light)}
.mobile-menu__link--hotel .mobile-menu__idx{color:var(--copper-light)}

/* Dark outline button (for light backgrounds) */
.btn--dark{color:var(--ink);border:1px solid rgba(38,31,24,.35)}
.btn--dark::before{background:var(--ink);transform:translateY(101%)}
.btn--dark:hover{color:var(--creme)}
.btn--dark:hover::before{transform:translateY(0)}

/* Affiliation band */
.saratz{
  background:
    radial-gradient(120% 100% at 50% 0%, var(--creme) 40%, var(--creme-2) 100%);
  border-top:1px solid var(--line);
  padding:clamp(5rem,11vh,8rem) var(--gutter);
  text-align:center;position:relative;
}
.saratz::before,.saratz::after{
  content:'';position:absolute;left:50%;transform:translateX(-50%);
  width:46px;height:1px;background:var(--copper);
}
.saratz::before{top:0}
.saratz::after{bottom:0;background:transparent}
.saratz__inner{max-width:680px;margin:0 auto;display:flex;flex-direction:column;align-items:center}
.saratz .section-index{margin-bottom:1.8rem}
.saratz__logo{width:clamp(140px,18vw,190px);height:auto;margin-bottom:1.8rem;opacity:.92}
.saratz__title{
  font-family:var(--serif);font-weight:400;
  font-size:clamp(2rem,4.6vw,3.4rem);line-height:1.05;color:var(--ink);
  margin-bottom:1.4rem;
}
.saratz__title em{color:var(--copper);font-style:italic}
.saratz__text{color:var(--muted);font-size:1.08rem;max-width:52ch;margin-bottom:2.4rem}
.saratz__actions{display:flex;align-items:center;gap:1.6rem;flex-wrap:wrap;justify-content:center}
.saratz__link{
  font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;font-weight:500;
  color:var(--copper);position:relative;padding-bottom:3px;
}
.saratz__link::after{content:'';position:absolute;left:0;bottom:0;width:100%;height:1px;background:var(--copper);transform:scaleX(0);transform-origin:right;transition:transform .5s var(--ease)}
.saratz__link:hover::after{transform:scaleX(1);transform-origin:left}

/* Footer Saratz backlink */
.footer__saratz-link{display:inline-flex;flex-direction:row;align-items:center;gap:.7rem;transition:opacity .4s}
.footer__saratz-label{font-size:.68rem;letter-spacing:.22em;text-transform:uppercase;color:var(--muted-light);white-space:nowrap}
.footer__saratz-link .footer__saratz{opacity:.72;transition:opacity .4s}
.footer__saratz-link:hover .footer__saratz{opacity:1}

@media (max-width:560px){
  .saratz__actions{flex-direction:column;gap:1.2rem}
  .saratz__actions .btn{width:100%}
}

/* ============================================================
   PULLQUOTE + EXTENDED SOCIAL PROOF
   ============================================================ */
.pullquote{
  background:var(--espresso);color:var(--creme);
  padding:clamp(5rem,13vh,9rem) var(--gutter);text-align:center;position:relative;overflow:hidden;
}
.pullquote__inner{max-width:900px;margin:0 auto;position:relative}
.pullquote__mark{
  display:block;font-family:var(--serif);font-size:clamp(6rem,15vw,12rem);
  line-height:.5;color:var(--copper);opacity:.5;margin-bottom:.4rem;
}
.pullquote__text{
  font-family:var(--serif);font-weight:300;
  font-size:clamp(2.2rem,5.6vw,4.6rem);line-height:1.06;color:var(--creme);margin-bottom:2rem;
}
.pullquote__text em{color:var(--copper-light);font-style:italic}
.pullquote__cite{font-style:normal;font-size:.78rem;letter-spacing:.24em;text-transform:uppercase;color:var(--sand)}

/* 6-card voices grid */
.voices__grid{grid-template-columns:repeat(3,1fr)}

/* ranking badge */
.badge--rank{flex-direction:row;align-items:center;gap:.7rem}
.badge__rank{font-family:var(--serif);font-size:2rem;color:var(--copper);line-height:.9}
.badge--rank .badge__meta{line-height:1.25}

/* platforms line */
.voices__platforms{
  max-width:var(--container);margin:clamp(2.8rem,6vh,4.5rem) auto 0;text-align:center;
  font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);
}
.voices__platforms strong{color:var(--ink);font-weight:500}

@media (max-width:1024px){.voices__grid{grid-template-columns:repeat(2,1fr)}}
@media (max-width:560px){.voices__grid{grid-template-columns:1fr}}

/* ============================================================
   VOICES — MODERN SLIDER
   ============================================================ */
.voices__slider{max-width:var(--container);margin:0 auto;position:relative}
.voices__track{
  display:flex;gap:1.5rem;overflow-x:auto;scroll-snap-type:x mandatory;
  scroll-behavior:smooth;padding:.5rem .2rem 1.6rem;
  -ms-overflow-style:none;scrollbar-width:none;cursor:grab;
}
.voices__track::-webkit-scrollbar{display:none}
.voices__track.dragging{cursor:grabbing;scroll-behavior:auto;scroll-snap-type:none}
.voices__track:focus-visible{outline:2px solid var(--copper-light);outline-offset:6px;border-radius:6px}
.voices__track .voice{flex:0 0 clamp(290px,31%,400px);scroll-snap-align:start;user-select:none}

.voices__controls{display:flex;align-items:center;gap:2rem;margin-top:1.2rem}
.voices__progress{flex:1;height:2px;background:var(--line);position:relative;border-radius:2px;overflow:hidden}
.voices__progress-bar{
  position:absolute;left:0;top:0;height:100%;width:25%;background:var(--copper);border-radius:2px;
  transition:width .25s var(--ease),left .25s var(--ease);
}
.voices__arrows{display:flex;gap:.7rem}
.slider-arrow{
  width:56px;height:56px;border-radius:50%;border:1px solid var(--line);
  background:transparent;color:var(--ink);
  display:flex;align-items:center;justify-content:center;cursor:pointer;
  transition:background .4s var(--ease),color .4s var(--ease),border-color .4s,transform .3s var(--ease);
}
.slider-arrow:hover{background:var(--copper);border-color:var(--copper);color:var(--creme)}
.slider-arrow:active{transform:scale(.93)}
.slider-arrow:disabled{opacity:.28;cursor:default}
.slider-arrow:disabled:hover{background:transparent;color:var(--ink);border-color:var(--line)}

@media (max-width:1024px){.voices__track .voice{flex-basis:clamp(260px,46%,380px)}}
@media (max-width:560px){
  .voices__track .voice{flex-basis:84%}
  .voices__controls{gap:1.2rem}
  .slider-arrow{width:50px;height:50px}
}

/* ============================================================
   FORMS — Reservation & Inquiry (reusable, light card)
   ============================================================ */
.book-form{
  background:var(--creme);
  border:1px solid var(--line);
  border-radius:6px;
  padding:clamp(1.8rem,4vw,3rem);
  text-align:left;
  box-shadow:0 40px 90px -50px rgba(0,0,0,.6);
}
.book-form__grid{
  display:grid;grid-template-columns:1fr 1fr;
  gap:1.2rem 1.4rem;
}
.field{display:flex;flex-direction:column;gap:.5rem}
.field--full{grid-column:1 / -1}
.field label{
  font-size:.7rem;letter-spacing:.2em;text-transform:uppercase;
  color:var(--muted);font-weight:500;
}
.field label .req{color:var(--copper)}
.field input,
.field select,
.field textarea{
  font-family:var(--sans);font-size:1rem;font-weight:300;color:var(--ink);
  background:var(--creme-2);
  border:1px solid var(--line);border-radius:3px;
  padding:.9em 1em;width:100%;
  transition:border-color .35s var(--ease),background .35s var(--ease),box-shadow .35s var(--ease);
  appearance:none;-webkit-appearance:none;
}
.field textarea{resize:vertical;min-height:120px;line-height:1.6}
.field select{
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%237a7066' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 1em center;padding-right:2.6em;cursor:pointer;
}
.field input:focus,
.field select:focus,
.field textarea:focus{
  outline:none;border-color:var(--copper);background:var(--creme);
  box-shadow:0 0 0 3px rgba(80,83,70,.14);
}
.field input::placeholder,
.field textarea::placeholder{color:var(--muted-light)}
.field input:invalid:not(:placeholder-shown),
.field.error input,.field.error select,.field.error textarea{border-color:#64321a}
.book-form__foot{
  display:flex;align-items:center;justify-content:space-between;gap:1.5rem;flex-wrap:wrap;
  margin-top:1.8rem;
}
.book-form__note{font-size:.82rem;color:var(--muted);font-weight:300;max-width:34ch}
.book-form__note a{color:var(--copper);font-weight:500}
.book-form .btn{cursor:pointer}
.book-form__hint{
  display:block;margin-top:1.2rem;font-size:.74rem;letter-spacing:.04em;
  color:var(--muted-light);font-style:italic;font-family:var(--serif)
}

/* success state */
.form-success{
  display:none;text-align:center;padding:clamp(1.5rem,4vw,2.5rem) 0;
}
.book-form.is-sent .book-form__grid,
.book-form.is-sent .book-form__foot,
.book-form.is-sent .book-form__hint,
.book-form.is-sent .booker__progress,
.book-form.is-sent .booker__step,
.book-form.is-sent .booker__nav{display:none}
.book-form.is-sent .form-success{display:block;animation:fadeUp .8s var(--ease) forwards}
.form-success__check{
  width:64px;height:64px;border-radius:50%;margin:0 auto 1.4rem;
  border:1.5px solid var(--copper);display:flex;align-items:center;justify-content:center;color:var(--copper);
}
.form-success__title{font-family:var(--serif);font-size:clamp(1.8rem,4vw,2.6rem);color:var(--ink);margin-bottom:.6rem}
.form-success__text{color:var(--muted);max-width:42ch;margin:0 auto;font-size:1.02rem;font-weight:300}

@media (max-width:560px){
  .book-form__grid{grid-template-columns:1fr}
  .book-form__foot{flex-direction:column-reverse;align-items:stretch}
  .book-form__foot .btn{width:100%}
}

/* Reserve section: constrain the form within the centered column */
.reserve__form-wrap{max-width:660px;margin:0 auto;text-align:left}

/* ============================================================
   MULTI-STEP BOOKER
   ============================================================ */
.booker__progress{margin-bottom:1.8rem}
.booker__progress-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:.7rem}
.booker__step-label{font-family:var(--serif);font-style:italic;font-size:1.25rem;color:var(--ink)}
.booker__step-count{font-size:.72rem;letter-spacing:.22em;text-transform:uppercase;color:var(--muted)}
.booker__step-count #bookerStepNum{color:var(--copper);font-weight:600}
.booker__progress-track{height:3px;background:var(--line);border-radius:3px;overflow:hidden}
.booker__progress-bar{display:block;height:100%;width:20%;background:linear-gradient(90deg,var(--copper),var(--copper-light));border-radius:3px;transition:width .5s var(--ease)}

.booker__step{display:none}
.booker__step.is-active{display:block;animation:bookerIn .5s var(--ease)}
@keyframes bookerIn{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
.booker__q{font-family:var(--serif);font-weight:400;font-size:clamp(1.4rem,2.6vw,1.9rem);color:var(--ink);margin-bottom:1.4rem;line-height:1.2}
.booker__hint-line{margin-top:1rem;font-size:.84rem;color:var(--muted);font-style:italic;font-family:var(--serif)}

/* option cards — editorial, icon-led */
.opt-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
.opt-card{
  position:relative;display:flex;align-items:center;gap:1.15rem;
  padding:1.35rem 2.8rem 1.35rem 1.5rem;
  background:transparent;border:1px solid var(--line);border-radius:4px;
  cursor:pointer;text-align:left;font-family:var(--sans);
  transition:border-color .45s var(--ease),background .45s var(--ease),transform .45s var(--ease),box-shadow .45s var(--ease);
}
.opt-card__icon{
  flex:0 0 auto;width:48px;height:48px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  border:1px solid var(--line);background:var(--creme);color:var(--copper);
  transition:background .45s var(--ease),color .45s var(--ease),border-color .45s var(--ease),transform .45s var(--ease);
}
.opt-card__icon svg{width:23px;height:23px}
.opt-card__label{font-family:var(--serif);font-size:1.35rem;font-weight:500;color:var(--ink);line-height:1.15}
/* chevron */
.opt-card::after{
  content:'';position:absolute;right:1.5rem;top:50%;width:7px;height:7px;
  border-right:1.5px solid var(--muted-light);border-top:1.5px solid var(--muted-light);
  transform:translateY(-50%) rotate(45deg);opacity:0;transition:opacity .4s var(--ease),right .4s var(--ease);
}
.opt-card:hover{transform:translateY(-3px);border-color:rgba(80,83,70,.55);box-shadow:0 26px 50px -34px rgba(38,31,24,.55)}
.opt-card:hover .opt-card__icon{background:var(--copper);color:var(--creme);border-color:var(--copper);transform:scale(1.05)}
.opt-card:hover::after{opacity:1;right:1.25rem;border-color:var(--copper)}
.opt-card.is-selected{border-color:var(--copper);background:rgba(80,83,70,.07);box-shadow:0 0 0 1px var(--copper) inset}
.opt-card.is-selected .opt-card__icon{background:var(--copper);color:var(--creme);border-color:var(--copper)}
.opt-card.is-selected::after{opacity:1;border-color:var(--copper)}

/* personen chips */
.chip-row{display:flex;flex-wrap:wrap;gap:.7rem}
.chip{
  min-width:54px;padding:.85em 1.2em;background:var(--creme-2);border:1px solid var(--line);border-radius:100px;
  cursor:pointer;font-family:var(--sans);font-size:1rem;font-weight:500;color:var(--ink);
  transition:border-color .3s var(--ease),background .3s var(--ease),transform .3s var(--ease);
}
.chip:hover{transform:translateY(-2px);border-color:rgba(80,83,70,.45)}
.chip.is-selected{border-color:var(--copper);background:var(--copper);color:var(--creme)}

/* summary */
.summary{display:flex;flex-direction:column;gap:0}
.summary__row{display:flex;justify-content:space-between;gap:1.5rem;padding:.85rem 0;border-bottom:1px solid var(--line)}
.summary__row:last-child{border-bottom:none}
.summary__key{font-size:.74rem;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);flex:0 0 auto}
.summary__val{font-family:var(--serif);font-size:1.15rem;color:var(--ink);text-align:right}

/* nav */
.booker__nav{display:flex;align-items:center;gap:1rem;margin-top:1.8rem}
.booker__nav .btn{cursor:pointer}
.btn--back{color:var(--ink);border:1px solid rgba(38,31,24,.28);background:transparent}
.btn--back::before{background:var(--ink);transform:translateY(101%)}
.btn--back:hover{color:var(--creme)}
.btn--back:hover::before{transform:translateY(0)}
.booker__nav .booker__advance{margin-left:auto}


@media (max-width:560px){
  .opt-grid{grid-template-columns:1fr}
  /* Mindestbreite der Kachel passte bei 320px nicht: 48px Icon plus 2,8rem
     rechter Innenabstand. Icon und Abstaende verkleinert. */
  .opt-card{padding:1.1rem 1.2rem;gap:.85rem;min-width:0}
  .opt-card__icon{width:40px;height:40px}
  .opt-card__icon svg{width:19px;height:19px}
  .booker__nav{flex-wrap:wrap}
  .booker__nav .btn{width:100%}
  .booker__nav .booker__advance{margin-left:0}
}

/* ============================================================
   SUBPAGE — shared page hero (Speisekarte / Anlässe)
   ============================================================ */
.page{padding-top:0}
.page-hero{
  position:relative;overflow:hidden;background:var(--espresso);color:var(--creme);
  min-height:62vh;display:flex;align-items:flex-end;
  padding:clamp(7rem,16vh,11rem) var(--gutter) clamp(3rem,7vh,5rem);
}
.page-hero__media{position:absolute;inset:0;z-index:1}
.page-hero__media img{width:100%;height:100%;object-fit:cover;transform:scale(1.08);animation:kenburns 22s ease-out forwards;filter:saturate(.96)}
.page-hero__veil{position:absolute;inset:0;background:linear-gradient(to top,rgba(27,22,17,.94) 4%,rgba(27,22,17,.45) 55%,rgba(27,22,17,.6) 100%)}
.page-hero__inner{position:relative;z-index:2;max-width:var(--container);width:100%;margin:0 auto}
.page-hero__title{font-family:var(--serif);font-weight:300;font-size:clamp(2.05rem,9vw,7rem);line-height:.98;color:var(--creme);margin:.4rem 0 1.2rem}
.page-hero__title em{color:var(--copper-light);font-style:italic;font-weight:400}
.page-hero__lead{color:var(--sand);font-size:clamp(1.05rem,1.6vw,1.25rem);font-weight:300;max-width:52ch}
.crumb{font-size:.72rem;letter-spacing:.24em;text-transform:uppercase;color:var(--copper-light);font-weight:500}
.crumb a{color:var(--sand)}
.crumb a:hover{color:var(--creme)}

/* Section intro block (light) */
.page-intro{max-width:var(--container);margin:0 auto;padding:clamp(4.5rem,10vh,8rem) var(--gutter) clamp(2rem,4vh,3rem);text-align:center}
.page-intro .section-title{margin:.6rem auto 0;max-width:18ch}
.page-intro__text{color:var(--muted);font-size:1.1rem;font-weight:300;max-width:56ch;margin:1.6rem auto 0}

.draft-note{
  max-width:var(--container);margin:0 auto;padding:0 var(--gutter);
}
.draft-note__inner{
  display:flex;gap:.8rem;align-items:flex-start;
  background:rgba(80,83,70,.08);border:1px dashed rgba(80,83,70,.4);border-radius:4px;
  padding:1rem 1.3rem;color:var(--muted);font-size:.86rem;font-weight:300;
}
.draft-note__inner strong{color:var(--copper);font-weight:600;letter-spacing:.04em}

/* ============================================================
   SPEISEKARTE
   ============================================================ */
.menu-page{max-width:920px;margin:0 auto;padding:clamp(3rem,7vh,5rem) var(--gutter) clamp(5rem,11vh,8rem)}
.menu-cat{margin-top:clamp(3rem,7vh,5rem)}
.menu-cat:first-child{margin-top:clamp(1.5rem,4vh,2.5rem)}
.menu-cat__head{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;border-bottom:1px solid var(--line);padding-bottom:1rem;margin-bottom:.6rem;flex-wrap:wrap}
.menu-cat__title{font-family:var(--serif);font-weight:400;font-size:clamp(1.9rem,3.6vw,2.8rem);color:var(--ink);line-height:1}
.menu-cat__title em{color:var(--copper);font-style:italic}
.menu-cat__hint{font-size:.74rem;letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}
.menu-item{display:grid;grid-template-columns:1fr auto;gap:.3rem 1.4rem;padding:1.15rem 0;border-bottom:1px solid var(--line);align-items:baseline}
.menu-item__name{font-family:var(--serif);font-size:clamp(1.25rem,2.2vw,1.6rem);color:var(--ink)}
.menu-item__tags{display:inline-flex;gap:.4rem;margin-left:.6rem;vertical-align:middle}
.menu-item__tag{font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;color:var(--pine);border:1px solid rgba(51,64,47,.35);border-radius:100px;padding:.18em .6em;font-family:var(--sans);font-weight:500}
.menu-item__tag--sig{color:var(--copper);border-color:rgba(80,83,70,.5)}
.menu-item__price{font-family:var(--serif);font-size:clamp(1.1rem,1.8vw,1.35rem);color:var(--copper);white-space:nowrap;text-align:right}
.menu-item__desc{grid-column:1 / -1;color:var(--muted);font-size:.96rem;font-weight:300;max-width:60ch;margin-top:.1rem}
.menu-foot{margin-top:clamp(3.5rem,7vh,5rem);text-align:center}
.menu-legend{display:flex;gap:1.4rem;justify-content:center;flex-wrap:wrap;color:var(--muted);font-size:.8rem;margin-bottom:2.4rem}
.menu-legend span strong{color:var(--ink)}

/* ============================================================
   ANLÄSSE / FEIERN
   ============================================================ */
.occasions{background:var(--espresso);color:var(--creme);padding:clamp(5rem,11vh,8rem) var(--gutter)}
.occasions__head{max-width:var(--container);margin:0 auto clamp(3rem,6vh,4.5rem);text-align:center}
.occasions__grid{max-width:var(--container);margin:0 auto;display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(1rem,2vw,1.6rem)}
.occasion{
  background:var(--espresso-2);border:1px solid var(--line-light);border-radius:5px;
  padding:2rem 1.8rem;display:flex;flex-direction:column;gap:.7rem;
  transition:transform .6s var(--ease),border-color .6s var(--ease),background .6s var(--ease);
}
.occasion:hover{transform:translateY(-6px);border-color:rgba(126,125,95,.5);background:#241f1a}
.occasion__no{font-family:var(--serif);font-style:italic;color:var(--copper-light);font-size:1.2rem}
.occasion__title{font-family:var(--serif);font-weight:400;font-size:clamp(1.5rem,2.6vw,2rem);color:var(--creme);line-height:1.05}
.occasion__text{color:var(--sand);font-size:.96rem;font-weight:300}

/* capacities */
.spaces{padding:clamp(5rem,11vh,8rem) var(--gutter)}
.spaces__head{max-width:var(--container);margin:0 auto clamp(2.5rem,5vh,4rem)}
.spaces__grid{max-width:var(--container);margin:0 auto;display:grid;grid-template-columns:repeat(2,1fr);gap:clamp(1.2rem,2.5vw,2rem)}
.space{display:grid;grid-template-columns:auto 1fr;gap:1.4rem;align-items:start;padding:1.8rem;border:1px solid var(--line);border-radius:5px;background:var(--creme)}
.space__cap{font-family:var(--serif);font-size:clamp(2.2rem,4vw,3rem);color:var(--copper);line-height:.9}
.space__cap small{display:block;font-family:var(--sans);font-size:.64rem;letter-spacing:.2em;text-transform:uppercase;color:var(--muted);margin-top:.4rem}
.space__title{font-family:var(--serif);font-size:1.5rem;color:var(--ink);margin-bottom:.3rem}
.space__text{color:var(--muted);font-size:.94rem;font-weight:300}

/* steps */
.steps{background:var(--creme-2);padding:clamp(5rem,11vh,8rem) var(--gutter)}
.steps__grid{max-width:var(--container);margin:clamp(2.5rem,5vh,3.5rem) auto 0;display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(1.5rem,3vw,3rem)}
.step{text-align:center}
.step__num{font-family:var(--serif);font-style:italic;font-size:clamp(2.4rem,5vw,3.4rem);color:var(--copper)}
.step__title{font-family:var(--serif);font-size:1.4rem;color:var(--ink);margin:.4rem 0 .6rem}
.step p{color:var(--muted);font-size:.96rem;font-weight:300;max-width:34ch;margin:0 auto}

/* inquiry section */
.inquiry{padding:clamp(5rem,12vh,9rem) var(--gutter);background:radial-gradient(120% 100% at 50% 0%,var(--creme) 40%,var(--creme-2) 100%)}
.inquiry__inner{max-width:760px;margin:0 auto;text-align:center}
.inquiry__form-wrap{margin-top:clamp(2.5rem,5vh,3.5rem);text-align:left}

@media (max-width:860px){
  .occasions__grid{grid-template-columns:1fr 1fr}
  .spaces__grid{grid-template-columns:1fr}
  .steps__grid{grid-template-columns:1fr;gap:2.5rem}
}
@media (max-width:560px){
  .occasions__grid{grid-template-columns:1fr}
  .menu-item{grid-template-columns:1fr;gap:.2rem}
  .menu-item__price{text-align:left}
  .space{grid-template-columns:1fr;gap:.6rem}
}

/* ============================================================
   EXPLORE — Homepage-Teaser zu den Unterseiten
   ============================================================ */
.explore{background:var(--espresso);padding:clamp(5rem,11vh,8rem) var(--gutter)}
.explore__head{max-width:var(--container);margin:0 auto clamp(3rem,6vh,4.5rem);text-align:center}
.explore__grid{
  max-width:var(--container);margin:0 auto;
  display:grid;grid-template-columns:repeat(2,1fr);gap:clamp(1rem,2vw,1.6rem);
}
.explore-card{
  position:relative;display:block;overflow:hidden;border-radius:5px;
  aspect-ratio:16/10;background:var(--espresso-2);
}
.explore-card img{width:100%;height:100%;object-fit:cover;filter:saturate(.92);transition:transform .9s var(--ease)}
.explore-card:hover img{transform:scale(1.05)}
.explore-card__veil{position:absolute;inset:0;background:linear-gradient(to top,rgba(27,22,17,.88) 8%,rgba(27,22,17,.12) 62%)}
.explore-card__body{
  position:absolute;left:clamp(1.2rem,2.5vw,2rem);right:clamp(1.2rem,2.5vw,2rem);bottom:clamp(1.1rem,2.2vw,1.8rem);
  display:flex;align-items:baseline;justify-content:space-between;gap:1rem;
}
.explore-card__no{font-family:var(--serif);font-style:italic;color:var(--copper-light);font-size:1rem;letter-spacing:.08em}
.explore-card__title{font-family:var(--serif);font-weight:400;color:var(--creme);font-size:clamp(1.5rem,2.8vw,2.3rem);line-height:1.05;flex:1}
.explore-card__arrow{color:var(--sand);font-size:1.3rem;transition:transform .5s var(--ease)}
.explore-card:hover .explore-card__arrow{transform:translateX(8px)}
@media (max-width:760px){.explore__grid{grid-template-columns:1fr}}

/* ============================================================
   ANLÄSSE — klickbare Karten + Detailsektionen
   ============================================================ */
a.occasion{color:inherit}
.occasion__more{
  margin-top:auto;padding-top:1rem;display:inline-flex;align-items:center;gap:.5rem;
  font-size:.68rem;letter-spacing:.2em;text-transform:uppercase;font-weight:500;color:var(--sand);
  opacity:.75;transition:opacity .4s var(--ease);
}
a.occasion:hover .occasion__more{opacity:1}

.odetails{max-width:var(--container);margin:0 auto;padding:clamp(4.5rem,10vh,8rem) var(--gutter) clamp(2rem,4vh,3rem)}
.odetails__head{margin-bottom:clamp(2.5rem,5vh,4rem)}
.odetail{
  display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.5fr);gap:clamp(1.5rem,4vw,4.5rem);
  padding:clamp(2rem,4vh,3rem) 0;border-top:1px solid var(--line);
  scroll-margin-top:120px;
}
.odetail__no{font-family:var(--serif);font-style:italic;color:var(--copper-light);font-size:1.1rem;letter-spacing:.08em}
.odetail__title{font-family:var(--serif);font-weight:400;font-size:clamp(1.7rem,3.2vw,2.4rem);color:var(--ink);line-height:1.1;margin:.3rem 0 .9rem}
.odetail__meta{display:flex;flex-direction:column;gap:.35rem;font-size:.82rem;letter-spacing:.06em;color:var(--muted)}
.odetail__meta strong{color:var(--copper);font-weight:500}
.odetail__body p{color:var(--muted);font-size:1.02rem;font-weight:300;max-width:62ch}
.odetail__body p + p{margin-top:.9rem}
.odetail__cta{
  display:inline-flex;align-items:center;gap:.5rem;margin-top:1.4rem;
  font-size:.72rem;letter-spacing:.2em;text-transform:uppercase;font-weight:500;color:var(--copper);
  border-bottom:1px solid var(--copper);padding-bottom:.2rem;transition:color .3s,border-color .3s;
}
.odetail__cta:hover{color:var(--copper-light);border-color:var(--copper-light)}
@media (max-width:760px){.odetail{grid-template-columns:1fr;gap:1.2rem}}

/* ============================================================
   DER AUFTRITT — scroll-gescrubbte Bildsequenz
   61 Frames aus einer durchgehenden Einstellung: der Koch richtet das
   Signature Dish an. Der Scrollfortschritt ist die Zeitachse.
   Ohne JavaScript, bei reduzierter Bewegung und auf Mobil steht das Standbild.
   ============================================================ */
.act{position:relative;min-height:320vh;background:var(--espresso)}
.act__stage{
  position:sticky;top:0;height:100vh;overflow:hidden;
  display:flex;flex-direction:column;justify-content:flex-end;
  padding:clamp(3rem,8vh,6rem) var(--gutter) clamp(3.5rem,9vh,6rem);
}
.act__canvas,.act__still{
  position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;
}
.act__canvas{opacity:0;transition:opacity .6s var(--ease)}
.act.is-ready .act__canvas{opacity:1}
.act.is-ready .act__still{opacity:0}
.act__still{transition:opacity .6s var(--ease)}
.act__veil{
  position:absolute;inset:0;
  background:linear-gradient(to top, rgba(27,22,17,.88) 0%, rgba(27,22,17,.28) 42%, rgba(27,22,17,.42) 100%);
}
.act__headline{
  position:relative;z-index:2;max-width:var(--container);margin:0 auto;width:100%;
  font-family:var(--serif);font-weight:300;line-height:1.08;color:var(--creme);
  font-size:clamp(2.2rem,6.4vw,5rem);
}
.act__headline .w{
  display:inline-block;margin-right:.28em;
  opacity:0;transform:translateY(.42em);
  transition:opacity .7s var(--ease),transform .7s var(--ease);
}
.act__headline .w.is-in{opacity:1;transform:none}
.act__headline .w--accent{font-style:italic;color:var(--gold)}
.act__rail{
  position:relative;z-index:2;max-width:var(--container);margin:clamp(1.8rem,4vh,2.8rem) auto 0;
  width:100%;height:1px;background:var(--line-light);overflow:hidden;
}
.act__rail-fill{
  position:absolute;inset:0;display:block;background:var(--gold);
  transform:scaleX(0);transform-origin:left;
}
/* Ladeanzeige — verschwindet, sobald die Sequenz steht */
.act__boot{
  position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:3;
  display:flex;flex-direction:column;align-items:center;gap:.9rem;
  color:var(--sand);font-family:var(--sans);font-size:.72rem;letter-spacing:.18em;text-transform:uppercase;
  transition:opacity .5s var(--ease);
}
.act.is-ready .act__boot,.act:not(.is-scrubbing) .act__boot{opacity:0;pointer-events:none}
.act__boot-bar{display:block;width:min(200px,40vw);height:1px;background:var(--line-light);overflow:hidden}
.act__boot-fill{display:block;height:100%;width:0;background:var(--gold)}

/* Kein Scrubbing: ruhiges Standbild, normale Sektionshoehe */
.act:not(.is-scrubbing){min-height:0}
.act:not(.is-scrubbing) .act__stage{position:static;height:auto;min-height:78vh}
.act:not(.is-scrubbing) .act__canvas{display:none}
.act:not(.is-scrubbing) .act__headline .w{opacity:1;transform:none}
.act:not(.is-scrubbing) .act__rail{display:none}

@media (max-width:860px){
  .act{min-height:0}
  .act__stage{position:static;height:auto;min-height:74vh}
}

/* ============================================================
   MOBILE KORREKTUREN — bewusst am DATEIENDE
   Diese Regeln standen zuerst in einem Media-Block weiter oben und blieben
   wirkungslos: die Basisregeln gleicher Spezifitaet folgen spaeter im
   Stylesheet und gewinnen dann in der Kaskade.
   ============================================================ */
@media (max-width:860px){
}
/* 18ch sind bei 320px breiter als der verfuegbare Platz - das erzeugte auf
   /kueche 14px Seitenueberlauf. */
.page-intro .section-title{max-width:min(18ch,100%)}

/* Auf dem Handy darf das Portrait die Spaltenbreite nutzen. */
@media (max-width:640px){
  .story__sign-foto{width:clamp(190px,58vw,300px)}
}
/* Bei 320px reicht die Zeilenbreite auch gestapelt nicht fuer
   "Giuseppe Marrancone" in 1.5rem. Eine Stufe kleiner, sonst zweizeilig. */
@media (max-width:360px){
  .story__sign-name{font-size:1.28rem}
}

/* Honeypot gegen Bots: fuer Menschen unsichtbar, aber nicht display:none —
   manche Bots ueberspringen ausgeblendete Felder gezielt. */
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}

/* Fehlermeldung, wenn die Anfrage nicht durchging. Bewusst deutlich: die
   Alternative waere, dem Gast eine Bestaetigung zu zeigen, die nicht stimmt. */
.form-error{
  margin-top:1.4rem;padding:1rem 1.2rem;
  border:1px solid var(--copper);border-left-width:3px;border-radius:2px;
  background:var(--creme);color:var(--ink);font-size:.98rem;line-height:1.5;
}

/* Telefonnummern nie umbrechen. "+41 81 839" / "40 00" ueber zwei Zeilen ist
   nicht nur unschoen, es macht die Nummer schwerer als eine Einheit lesbar.
   Gilt fuer alle tel:-Links, nicht nur fuer die im Formular. */
a[href^="tel:"]{white-space:nowrap}
