/* =========================================================
   Ristorante Bella Vita — Stylesheet
   1. Tokens   2. Reset   3. Basis   4. Komponenten
   5. Sektionen   6. Overlays   7. Responsive   8. Motion
   ========================================================= */

/* ---------- 1. TOKENS ---------- */
:root{
  --c-ink:#1b1512;
  --c-ink-soft:#4a3f39;
  --c-muted:#7d6f66;
  --c-cream:#faf6f0;
  --c-cream-2:#f2eae0;
  --c-paper:#ffffff;
  --c-dark:#181211;
  --c-dark-2:#221a18;
  --c-line:rgba(27,21,18,.12);
  --c-line-light:rgba(255,255,255,.14);

  --c-brand:#9c1f28;         /* pomodoro */
  --c-brand-dark:#7a1720;
  --c-gold:#c9a227;          /* olio */
  --c-green:#3f6b4a;         /* basilico */

  --ff-display:"Cormorant Garamond", Georgia, "Times New Roman", serif;
  --ff-body:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Arial, sans-serif;

  --sp:clamp(3.5rem, 7vw, 7.5rem);
  --r-sm:6px;
  --r:14px;
  --r-lg:22px;
  --shadow-sm:0 4px 18px rgba(27,21,18,.07);
  --shadow:0 18px 45px -18px rgba(27,21,18,.28);
  --shadow-lg:0 40px 90px -30px rgba(27,21,18,.45);
  --ease:cubic-bezier(.22,.75,.28,1);
  --header-h:78px;
}

/* ---------- 2. RESET ---------- */
*,*::before,*::after{box-sizing:border-box;}
/* Muss vor allen Komponenten stehen: sonst ueberstimmt z. B. .modal{display:grid}
   das hidden-Attribut, und das unsichtbare Overlay schluckt jeden Klick. */
[hidden]{display:none !important;}
html{-webkit-text-size-adjust:100%;}
body,h1,h2,h3,h4,p,ul,ol,figure,blockquote,dl,dd{margin:0;}
ul,ol{padding:0;list-style:none;}
img{max-width:100%;display:block;height:auto;}
button,input,select,textarea{font:inherit;color:inherit;}
button{background:none;border:0;cursor:pointer;}
a{color:inherit;text-decoration:none;}
svg{display:block;}

/* Kein overflow auf <html>: das wuerde die Overflow-Propagation zum Viewport
   stoppen und position:sticky im Header ausser Kraft setzen. Das Off-Canvas-Menue
   wird stattdessen von .nav-shell abgeschnitten. */
html{scroll-behavior:smooth;scroll-padding-top:calc(var(--header-h) + 16px);}

/* "clip" begrenzt versehentliche Ueberbreiten, ohne wie hidden/auto einen
   Scroll-Container zu erzeugen (wichtig fuer den sticky Header). */
@supports (overflow:clip){
  html,body{overflow-x:clip;}
}

body{
  font-family:var(--ff-body);
  color:var(--c-ink);
  background:var(--c-cream);
  line-height:1.65;
  font-size:16px;
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
}
body.is-locked{overflow:hidden;}

::selection{background:var(--c-brand);color:#fff;}

/* Scrollbar */
::-webkit-scrollbar{width:11px;}
::-webkit-scrollbar-track{background:var(--c-cream-2);}
::-webkit-scrollbar-thumb{background:#c3b4a6;border-radius:99px;border:3px solid var(--c-cream-2);}
::-webkit-scrollbar-thumb:hover{background:var(--c-brand);}

/* ---------- 3. BASIS ---------- */
.container{width:min(1220px, 100% - 2.5rem);margin-inline:auto;}
.section{padding-block:var(--sp);position:relative;}
.section--dark{background:var(--c-dark);color:#efe6dc;}
.section--cream{background:var(--c-cream-2);}

.h2{
  font-family:var(--ff-display);
  font-weight:600;
  font-size:clamp(2.15rem, 4.6vw, 3.75rem);
  line-height:1.06;
  letter-spacing:-.015em;
}
.h2--light{color:#fff;}

h3{font-family:var(--ff-display);font-weight:600;font-size:1.45rem;line-height:1.25;}
h4{font-family:var(--ff-body);font-weight:600;font-size:1rem;}

p{color:var(--c-ink-soft);}
.section--dark p,.section--dark li{color:#c9bdb3;}

.eyebrow{
  display:flex;align-items:center;gap:.7rem;
  font-size:.76rem;font-weight:600;letter-spacing:.22em;text-transform:uppercase;
  color:var(--c-brand);margin-bottom:1rem;
}
.section--dark .eyebrow,.eyebrow--light{color:var(--c-gold);}
.eyebrow .line{width:38px;height:1px;background:currentColor;opacity:.6;display:block;flex:none;}

.section__head{max-width:640px;margin-bottom:3.2rem;}
.section__head--center{margin-inline:auto;text-align:center;}
.section__head--center .eyebrow{justify-content:center;}
.section__lead{margin-top:1rem;font-size:1.06rem;}

.signature{font-family:var(--ff-display);font-style:italic;font-size:1.9rem;color:var(--c-brand);}
.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;}
.hide-sm{display:inline-flex;}

.skiplink{
  position:fixed;top:-100px;left:1rem;z-index:999;background:var(--c-brand);color:#fff;
  padding:.7rem 1.2rem;border-radius:var(--r-sm);transition:top .25s;
}
.skiplink:focus{top:1rem;}

:focus-visible{outline:2px solid var(--c-gold);outline-offset:3px;border-radius:4px;}

.linklike{
  color:inherit;text-decoration:underline;text-underline-offset:3px;
  padding:0;font-size:inherit;font-family:inherit;
}
.linklike:hover{color:var(--c-brand);}

/* ---------- 4. KOMPONENTEN ---------- */
.btn{
  --btn-bg:var(--c-brand);--btn-fg:#fff;
  display:inline-flex;align-items:center;justify-content:center;gap:.55rem;
  padding:.9rem 1.7rem;border-radius:999px;
  font-size:.9rem;font-weight:600;letter-spacing:.03em;
  background:var(--btn-bg);color:var(--btn-fg);
  position:relative;overflow:hidden;isolation:isolate;
  transition:transform .35s var(--ease), box-shadow .35s var(--ease), color .3s, background .3s, border-color .3s;
  border:1px solid transparent;
  white-space:nowrap;
}
.btn::after{
  content:"";position:absolute;inset:0;z-index:-1;
  background:var(--c-ink);
  transform:translateY(101%);transition:transform .45s var(--ease);
}
.btn:hover{transform:translateY(-3px);box-shadow:0 14px 28px -12px rgba(27,21,18,.55);}
.btn:hover::after{transform:translateY(0);}
.btn:active{transform:translateY(-1px);}
.btn:disabled{
  cursor:not-allowed;opacity:.55;transform:none;box-shadow:none;pointer-events:none;
}
.btn:disabled::after{display:none;}

.btn--primary{--btn-bg:var(--c-brand);}
.btn--outline{--btn-bg:transparent;--btn-fg:#fff;border-color:rgba(255,255,255,.6);}
.btn--outline::after{background:#fff;}
.btn--outline:hover{color:var(--c-ink);border-color:#fff;}
.btn--outline-light{--btn-bg:transparent;--btn-fg:#fff;border-color:rgba(255,255,255,.55);}
.btn--outline-light::after{background:#fff;}
.btn--outline-light:hover{color:var(--c-brand);}
.btn--ghost{--btn-bg:transparent;--btn-fg:var(--c-ink);border-color:var(--c-line);}
.btn--ghost::after{background:var(--c-ink);}
.btn--ghost:hover{color:#fff;}
.btn--sm{padding:.62rem 1.2rem;font-size:.82rem;}
.btn--lg{padding:1.05rem 2.2rem;font-size:.95rem;}
.btn--full{width:100%;}

.tag{
  display:inline-block;vertical-align:middle;
  font-family:var(--ff-body);font-size:.62rem;font-weight:700;
  letter-spacing:.09em;text-transform:uppercase;
  padding:.22em .6em;border-radius:99px;margin-left:.4rem;
  border:1px solid currentColor;
}
.tag--veg{color:var(--c-green);}
.tag--vegan{color:#2f7d4f;}
.tag--hot{color:var(--c-brand);}
.section--dark .tag--veg{color:#8fbf9d;}
.section--dark .tag--vegan{color:#7fd3a0;}
.section--dark .tag--hot{color:#e0808a;}

.card{
  background:var(--c-paper);border-radius:var(--r);padding:1.7rem;
  box-shadow:var(--shadow-sm);border:1px solid var(--c-line);
}
.card + .card{margin-top:1.1rem;}
.card h3{margin-bottom:.7rem;}
.card--accent{background:var(--c-dark);color:#f0e7dd;border-color:transparent;}
.card--accent p{color:#c1b4aa;margin-bottom:1.1rem;}

.ticks li{position:relative;padding-left:1.6rem;margin-bottom:.55rem;font-size:.94rem;color:var(--c-ink-soft);}
.ticks li::before{
  content:"";position:absolute;left:0;top:.55em;width:.7rem;height:.4rem;
  border-left:2px solid var(--c-brand);border-bottom:2px solid var(--c-brand);
  transform:rotate(-45deg);
}

.ico{width:14px;height:14px;fill:currentColor;flex:none;}

/* ---------- PRELOADER ---------- */
.preloader{
  position:fixed;inset:0;z-index:1000;background:var(--c-dark);
  display:grid;place-items:center;transition:opacity .7s var(--ease), visibility .7s;
}
.preloader.is-done{opacity:0;visibility:hidden;}
.preloader__inner{text-align:center;}
.preloader__plate{
  width:92px;height:92px;border-radius:50%;margin:0 auto 1.2rem;
  display:grid;place-items:center;
  border:1px solid rgba(201,162,39,.4);
  color:var(--c-gold);font-family:var(--ff-display);font-size:1.9rem;letter-spacing:.06em;
  position:relative;
}
.preloader__plate::before{
  content:"";position:absolute;inset:-9px;border-radius:50%;
  border:1px solid transparent;border-top-color:var(--c-brand);
  animation:spin 1.05s linear infinite;
}
.preloader__text{
  font-family:var(--ff-display);color:#e9dccb;font-size:1.15rem;
  letter-spacing:.32em;text-transform:uppercase;
}
@keyframes spin{to{transform:rotate(360deg);}}

/* ---------- TOPBAR ---------- */
.topbar{background:var(--c-dark);color:#bfb2a7;font-size:.8rem;position:relative;z-index:60;}
.topbar__inner{display:flex;justify-content:space-between;align-items:center;gap:1rem;min-height:40px;flex-wrap:wrap;}
.topbar__status{display:inline-flex;align-items:center;gap:.5rem;font-weight:500;}
.topbar__status .dot{width:8px;height:8px;border-radius:50%;background:var(--c-muted);flex:none;position:relative;}
.ts-short{display:none;}
/* Frueher als box-shadow animiert – das erzwingt Neuzeichnen bei jedem Frame.
   Der Ring ist jetzt ein Pseudoelement und laeuft rein auf der GPU. */
.topbar__status.is-open .dot{background:#4ec27a;}
.topbar__status.is-open .dot::after{
  content:"";position:absolute;inset:0;border-radius:50%;
  background:#4ec27a;
  animation:pulseRing 2.2s ease-out infinite;
  will-change:transform,opacity;
}
.topbar__status.is-open{color:#a8e6c0;}
.topbar__status.is-closed .dot{background:#d3706f;}
@keyframes pulseRing{
  0%{transform:scale(1);opacity:.55;}
  70%{transform:scale(3.4);opacity:0;}
  100%{transform:scale(3.4);opacity:0;}
}
.topbar__links{display:flex;gap:1.4rem;}
.topbar__links a{display:inline-flex;align-items:center;gap:.42rem;transition:color .25s;}
.topbar__links a:hover{color:var(--c-gold);}

/* ---------- HEADER ---------- */
/* Wichtig: backdrop-filter darf NICHT auf .header selbst liegen. Es wuerde dort
   einen Bezugsrahmen fuer position:fixed erzeugen und das Off-Canvas-Menue auf die
   Header-Hoehe einsperren. Der Glaseffekt liegt deshalb auf einer Pseudo-Ebene. */
.header{
  position:sticky;top:0;z-index:500;
  border-bottom:1px solid transparent;
  transition:box-shadow .4s, border-color .4s;
}
/* Bewusst OHNE backdrop-filter: Der Header steht dauerhaft im Bild, und ein
   Weichzeichner muesste bei jedem Scroll-Frame neu berechnet werden. Das ist
   auf Mittelklasse-Geraeten die haeufigste Ruckelquelle beim Scrollen.
   Bei .94 Deckkraft ist der Unterschied ohnehin kaum zu sehen. */
.header::before{
  content:"";position:absolute;inset:0;z-index:-1;
  background:rgba(250,246,240,.94);
  transition:background .4s;
}
.header.is-stuck::before{background:rgba(250,246,240,.985);}
.header.is-stuck{box-shadow:0 6px 26px -14px rgba(27,21,18,.35);border-bottom-color:var(--c-line);}
.header__inner{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;min-height:var(--header-h);}

.logo{display:flex;align-items:center;gap:.75rem;flex:none;}
.logo__mark{
  width:44px;height:44px;border-radius:50%;flex:none;
  display:grid;place-items:center;
  background:var(--c-brand);color:#fff;
  font-family:var(--ff-display);font-size:1.15rem;letter-spacing:.04em;
  transition:transform .5s var(--ease);
}
.logo:hover .logo__mark{transform:rotate(-12deg) scale(1.06);}
.logo__text{display:flex;flex-direction:column;line-height:1.1;}
.logo__text strong{font-family:var(--ff-display);font-size:1.4rem;font-weight:700;letter-spacing:.005em;}
.logo__text em{font-style:normal;font-size:.62rem;letter-spacing:.24em;text-transform:uppercase;color:var(--c-muted);}
.logo--light{color:#fff;}
.logo--light .logo__text em{color:rgba(255,255,255,.55);}

.nav-shell{display:contents;}
.nav{display:flex;align-items:center;gap:2rem;}
.nav__list{display:flex;gap:1.55rem;}
.nav__link{
  position:relative;font-size:.9rem;font-weight:500;padding:.35rem 0;
  transition:color .25s;
}
.nav__link::after{
  content:"";position:absolute;left:0;bottom:0;height:1.5px;width:100%;
  background:var(--c-brand);transform:scaleX(0);transform-origin:right;
  transition:transform .38s var(--ease);
}
.nav__link:hover::after,.nav__link.is-active::after{transform:scaleX(1);transform-origin:left;}
.nav__link.is-active{color:var(--c-brand);}

.burger{display:none;width:44px;height:44px;position:relative;flex:none;}
.burger span{
  position:absolute;left:11px;width:22px;height:2px;background:var(--c-ink);border-radius:2px;
  transition:transform .4s var(--ease), opacity .25s;
}
.burger span:nth-child(1){top:15px;}
.burger span:nth-child(2){top:21px;}
.burger span:nth-child(3){top:27px;}
.burger.is-open span:nth-child(1){transform:translateY(6px) rotate(45deg);}
.burger.is-open span:nth-child(2){opacity:0;transform:scaleX(.4);}
.burger.is-open span:nth-child(3){transform:translateY(-6px) rotate(-45deg);}

/* ---------- 5. HERO ---------- */
.hero{
  position:relative;min-height:clamp(600px, 92vh, 940px);
  display:flex;align-items:center;overflow:hidden;color:#fff;
  background:var(--c-dark);
  contain:paint;
}
.hero__slides,.hero__overlay{position:absolute;inset:0;}
.hero__slides{transform:translateZ(0);}
.hero__slide{
  position:absolute;inset:0;
  background-image:var(--img);background-size:cover;background-position:center;
  opacity:0;transform:scale(1.12) translateZ(0);
  transition:opacity 1.6s var(--ease);
  /* Eigene GPU-Ebene: sonst wird das grosse Hintergrundbild bei jedem
     Animationsschritt neu gerastert – das ist die Ruckelquelle. */
  will-change:opacity;
  backface-visibility:hidden;
}
.hero__slide.is-active{opacity:1;animation:kenburns 12s ease-out forwards;will-change:opacity,transform;}
@keyframes kenburns{from{transform:scale(1.14) translateZ(0);}to{transform:scale(1) translateZ(0);}}

/* Ausserhalb des Sichtbereichs (oder bei inaktivem Tab) nichts animieren. */
.hero:not(.is-inview) .hero__slide{animation-play-state:paused;will-change:auto;}
.hero__slide.is-fallback{background:linear-gradient(135deg,#2a1c19,#4a2a24 55%,#1b1512);}

.hero__overlay{
  background:
    linear-gradient(105deg, rgba(20,14,12,.9) 0%, rgba(20,14,12,.66) 42%, rgba(20,14,12,.28) 75%),
    linear-gradient(to top, rgba(20,14,12,.85), transparent 45%);
}
.hero__content{position:relative;z-index:2;padding-block:clamp(4rem,10vh,7rem);max-width:820px;}
.hero__eyebrow{
  display:flex;align-items:center;gap:.75rem;color:var(--c-gold);
  font-size:.78rem;letter-spacing:.28em;text-transform:uppercase;font-weight:600;margin-bottom:1.3rem;
}
.hero__eyebrow .line{width:46px;height:1px;background:currentColor;display:block;}

.hero__title{
  font-family:var(--ff-display);font-weight:600;
  font-size:clamp(3rem, 8.5vw, 6.6rem);line-height:.98;letter-spacing:-.02em;
  margin-bottom:1.5rem;
}
.hero__title .accent{color:var(--c-gold);font-style:italic;}
.hero__title .word{
  display:inline-block;
  opacity:0;transform:translateY(70%) rotate(3deg);
  animation:wordUp .95s var(--ease) forwards;
}
.hero__title .word:nth-child(1){animation-delay:.25s;}
.hero__title .word:nth-child(2){animation-delay:.33s;}
.hero__title .word:nth-child(3){animation-delay:.41s;}
.hero__title .word:nth-child(5){animation-delay:.49s;}
.hero__title .word:nth-child(6){animation-delay:.57s;}
.hero__title .word:nth-child(7){animation-delay:.65s;}
@keyframes wordUp{to{opacity:1;transform:translateY(0) rotate(0);}}

.hero__sub{
  max-width:520px;font-size:clamp(1rem,1.5vw,1.18rem);color:rgba(255,255,255,.85);
  margin-bottom:2.2rem;opacity:0;animation:fadeUp .9s var(--ease) .8s forwards;
}
.hero__actions{display:flex;gap:.9rem;flex-wrap:wrap;opacity:0;animation:fadeUp .9s var(--ease) .95s forwards;}
@keyframes fadeUp{from{opacity:0;transform:translateY(26px);}to{opacity:1;transform:translateY(0);}}

.hero__facts{
  display:flex;gap:clamp(1.5rem,4vw,3.2rem);margin-top:3rem;flex-wrap:wrap;
  opacity:0;animation:fadeUp .9s var(--ease) 1.15s forwards;
}
.hero__facts li{display:flex;flex-direction:column;position:relative;padding-right:clamp(1.5rem,4vw,3.2rem);}
.hero__facts li:not(:last-child)::after{
  content:"";position:absolute;right:0;top:.4rem;bottom:.4rem;width:1px;background:rgba(255,255,255,.2);
}
.hero__facts strong{font-family:var(--ff-display);font-size:2.1rem;line-height:1;color:var(--c-gold);}
.hero__facts span{font-size:.78rem;letter-spacing:.06em;color:rgba(255,255,255,.7);margin-top:.25rem;}

.hero__dots{position:absolute;right:2.2rem;top:50%;transform:translateY(-50%);z-index:3;display:flex;flex-direction:column;gap:.7rem;}
.hero__dots button{
  width:9px;height:9px;border-radius:50%;background:rgba(255,255,255,.35);
  transition:background .35s var(--ease), transform .35s var(--ease);
}
.hero__dots button.is-active{background:var(--c-gold);transform:scale(1.5);}

/* ---------- MARQUEE ---------- */
.marquee{
  background:var(--c-brand);color:#fff;padding:.85rem 0;overflow:hidden;
  border-block:1px solid rgba(0,0,0,.12);contain:layout paint;
}
.marquee__track{
  display:flex;align-items:center;width:max-content;
  animation:marquee-loop 64s linear infinite;
  transform:translate3d(0,0,0);will-change:transform;
}
/* Zwei identische Gruppen: jede deckt mindestens den ganzen Viewport ab.
   Bei -50 % liegt dadurch exakt die zweite Gruppe an der Startposition. */
.marquee__group{
  display:flex;align-items:center;justify-content:space-around;
  flex:0 0 auto;gap:1.6rem;width:max-content;min-width:100vw;
  padding-inline:.8rem;
}
.marquee__track span{
  font-family:var(--ff-display);font-style:italic;font-size:1.35rem;white-space:nowrap;
}
.marquee__track i{color:var(--c-gold);font-style:normal;font-size:.75rem;}
@keyframes marquee-loop{to{transform:translate3d(-50%,0,0);}}

/* ---------- USP ---------- */
.usp{padding-block:clamp(3rem,6vw,4.8rem);background:var(--c-paper);}
.usp__grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--c-line);border:1px solid var(--c-line);border-radius:var(--r);overflow:hidden;}
.usp__item{background:var(--c-paper);padding:2.2rem 1.7rem;transition:background .4s var(--ease);position:relative;}
.usp__item::before{
  content:"";position:absolute;left:0;right:0;bottom:0;height:3px;background:var(--c-brand);
  transform:scaleX(0);transform-origin:left;transition:transform .45s var(--ease);
}
.usp__item:hover{background:var(--c-cream);}
.usp__item:hover::before{transform:scaleX(1);}
.usp__ico{font-size:1.9rem;display:block;margin-bottom:.9rem;transition:transform .45s var(--ease);}
.usp__item:hover .usp__ico{transform:translateY(-4px) scale(1.1);}
.usp__item h3{font-size:1.22rem;margin-bottom:.5rem;}
.usp__item p{font-size:.9rem;line-height:1.55;}

/* ---------- STORY ---------- */
.story__grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(2.5rem,6vw,5.5rem);align-items:center;}
.story__media{position:relative;padding-bottom:3.5rem;padding-right:2.5rem;}
.story__img{overflow:hidden;border-radius:var(--r-lg);box-shadow:var(--shadow);}
.story__img img{transition:transform 1.1s var(--ease);}
.story__img:hover img{transform:scale(1.06);}
.story__img--main{aspect-ratio:4/5;}
.story__img--main img{height:100%;object-fit:cover;}
.story__img--sub{
  position:absolute;right:0;bottom:0;width:52%;aspect-ratio:1;
  border:8px solid var(--c-cream);border-radius:var(--r-lg);
}
.story__img--sub img{height:100%;object-fit:cover;}
/* Bewusst OHNE Dauerbewegung.
   Vorher schwebte die Box in einer Endlosschleife. Eine Animation, die
   permanent laeuft, laesst sich auf schwaecheren Geraeten nicht zuverlaessig
   fluessig halten: Der Kasten traegt Text und einen Schatten, und sobald der
   Browser die GPU-Ebene aus irgendeinem Grund verwirft, wird beides bei jedem
   Frame neu gerastert – sichtbares Ruckeln. Statt weiter daran zu justieren
   gibt es jetzt eine einmalige Einblendung beim Hereinscrollen und danach
   null Arbeit pro Frame. */
.story__badge{
  position:absolute;left:-1.2rem;top:2rem;z-index:3;
  background:var(--c-brand);color:#fff;border-radius:var(--r);
  padding:1rem 1.2rem;text-align:center;
  box-shadow:0 10px 24px -10px rgba(27,21,18,.5);
  font-size:.7rem;line-height:1.35;letter-spacing:.06em;
}
/* Nur ausblenden, wenn JS die Einblendung auch wieder anschalten kann –
   ohne JS bliebe der Kasten sonst dauerhaft unsichtbar. */
.js .story__badge{opacity:0;transform:translateY(14px) scale(.96);}
.js .story__media.is-in .story__badge{
  opacity:1;transform:none;
  transition:opacity .7s var(--ease) .35s, transform .7s var(--ease) .35s;
}
@media (prefers-reduced-motion:reduce){
  .story__badge{opacity:1;transform:none;}
  .js .story__media.is-in .story__badge{transition:none;}
}
.story__badge-num{display:block;font-family:var(--ff-display);font-size:1.9rem;line-height:1;margin-bottom:.25rem;letter-spacing:0;}

.story__text p{margin-bottom:1.1rem;font-size:1.03rem;}
.story__text .h2{margin-bottom:1.4rem;}
.story__stats{display:flex;gap:2.2rem;margin:2rem 0;flex-wrap:wrap;}
.story__stats li{display:flex;flex-direction:column;}
.story__stats strong{font-family:var(--ff-display);font-size:2.6rem;line-height:1;color:var(--c-brand);}
.story__stats span{font-size:.8rem;letter-spacing:.06em;color:var(--c-muted);text-transform:uppercase;}
.story__sign{display:flex;flex-direction:column;padding-top:1.2rem;border-top:1px solid var(--c-line);}
.story__sign em{font-style:normal;font-size:.78rem;letter-spacing:.13em;text-transform:uppercase;color:var(--c-muted);}

/* ---------- MENU ---------- */
.menu__tabs{
  display:flex;gap:.5rem;flex-wrap:wrap;justify-content:center;
  margin-bottom:2.8rem;padding-bottom:.2rem;
}
.menu__tab{
  padding:.7rem 1.4rem;border-radius:999px;font-size:.87rem;font-weight:500;
  color:#bcaea4;border:1px solid var(--c-line-light);
  transition:background .35s var(--ease), border-color .35s var(--ease), color .35s var(--ease);white-space:nowrap;
}
.menu__tab:hover{color:#fff;border-color:rgba(255,255,255,.4);}
.menu__tab.is-active{background:var(--c-brand);border-color:var(--c-brand);color:#fff;}

.menu__panels{position:relative;}
.menu__panel{display:none;}
.menu__panel.is-active{display:block;animation:panelIn .55s var(--ease);}
@keyframes panelIn{from{opacity:0;transform:translateY(18px);}to{opacity:1;transform:translateY(0);}}
.menu__panel-inner{display:grid;grid-template-columns:1fr 380px;gap:clamp(2rem,5vw,4rem);align-items:start;}

.menu__note{
  font-size:.85rem;font-style:italic;color:var(--c-gold);
  border-left:2px solid rgba(201,162,39,.4);padding-left:1rem;margin-bottom:1.8rem;
}
.menu__list{display:flex;flex-direction:column;gap:1.55rem;}
.dish{transition:transform .35s var(--ease);}
@media (hover:hover) and (pointer:fine){
  .dish:hover{transform:translateX(6px);}
}
.dish__head{display:flex;align-items:baseline;gap:.6rem;}
.dish__head h3{font-size:1.18rem;font-weight:600;color:#f5ede4;flex:none;max-width:78%;}
.dish__dots{flex:1;border-bottom:1px dotted rgba(255,255,255,.28);transform:translateY(-4px);min-width:14px;}
.dish__price{
  font-family:var(--ff-display);font-size:1.28rem;color:var(--c-gold);flex:none;font-weight:600;
}
.dish p{font-size:.88rem;line-height:1.5;margin-top:.3rem;max-width:60ch;}
.dish sup{font-size:.66rem;color:var(--c-muted);letter-spacing:.04em;}

.menu__figure{
  position:sticky;top:calc(var(--header-h) + 24px);
  border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--shadow-lg);
}
.menu__figure img{aspect-ratio:4/5;object-fit:cover;width:100%;transition:transform 1.2s var(--ease);}
.menu__figure:hover img{transform:scale(1.05);}

/* Anfassbare Bildflaeche mit Lupen-Hinweis */
.zoomable{display:block;width:100%;position:relative;overflow:hidden;cursor:zoom-in;}
.zoomable::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(to top,rgba(15,10,9,.55),transparent 45%);
  opacity:0;transition:opacity .4s var(--ease);
}
.zoomable:hover::after,.zoomable:focus-visible::after{opacity:1;}
.zoomable__ico{
  position:absolute;right:1rem;top:1rem;z-index:2;
  width:40px;height:40px;border-radius:50%;
  display:grid;place-items:center;
  background:rgba(24,18,17,.6);color:#fff;
  backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);
  opacity:0;transform:scale(.8);
  transition:opacity .35s var(--ease), transform .35s var(--ease);
}
.zoomable__ico svg{width:19px;height:19px;}
.zoomable:hover .zoomable__ico,.zoomable:focus-visible .zoomable__ico{opacity:1;transform:scale(1);}
.gallery__item{cursor:zoom-in;}

/* Auf Touch-Geraeten dauerhaft sichtbar – dort gibt es kein Hover */
@media (hover:none){
  .zoomable__ico{opacity:1;transform:scale(1);background:rgba(24,18,17,.5);}
}
.menu__figure figcaption{
  position:absolute;left:0;right:0;bottom:0;padding:2.5rem 1.4rem 1.2rem;
  background:linear-gradient(to top,rgba(15,10,9,.92),transparent);
  font-family:var(--ff-display);font-style:italic;font-size:1.1rem;color:#fff;
}

/* Aktionsknöpfe unter der Speisekarte: brauchen deutlich Luft nach oben,
   sonst kleben sie am letzten Gericht. */
.menu__actions{
  display:flex;gap:.9rem;flex-wrap:wrap;justify-content:center;
  margin-top:clamp(2.8rem,6vw,4.5rem);
  padding-top:clamp(2rem,4vw,3rem);
  border-top:1px solid var(--c-line-light);
}
@media (max-width:600px){
  .menu__actions{flex-direction:column;}
  .menu__actions .btn{width:100%;}
}

.allergene{
  margin-top:2.5rem;border:1px solid var(--c-line-light);border-radius:var(--r);
  background:rgba(255,255,255,.03);
}
.allergene summary{
  cursor:pointer;padding:1.1rem 1.5rem;font-weight:600;font-size:.95rem;color:#e8ded4;
  list-style:none;display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;
}
.allergene summary::-webkit-details-marker{display:none;}
.allergene summary::before{content:"+";color:var(--c-gold);font-size:1.3rem;line-height:1;transition:transform .3s;}
.allergene[open] summary::before{transform:rotate(45deg);}
.allergene summary span{font-weight:400;font-size:.8rem;color:var(--c-muted);}
.allergene__grid{display:grid;grid-template-columns:1fr 1fr;gap:1.8rem;padding:0 1.5rem 1rem;}
.allergene h4{color:var(--c-gold);margin-bottom:.5rem;font-size:.8rem;letter-spacing:.14em;text-transform:uppercase;}
.allergene p{font-size:.83rem;line-height:1.7;}
.allergene sup{color:var(--c-gold);font-weight:600;}
.allergene__hint{padding:0 1.5rem 1.4rem;font-size:.83rem;font-style:italic;}

/* ---------- MITTAGSTISCH ---------- */
.mittag__grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1.2rem;}
.lunch{
  background:var(--c-paper);border:1px solid var(--c-line);border-radius:var(--r);
  padding:1.7rem 1.5rem;position:relative;overflow:hidden;
  transition:transform .4s var(--ease), box-shadow .4s var(--ease);
}
.lunch:hover{transform:translateY(-6px);box-shadow:var(--shadow);}
.lunch__day{
  font-size:.7rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase;
  color:var(--c-muted);display:block;margin-bottom:.7rem;
}
.lunch h3{font-size:1.28rem;margin-bottom:.45rem;}
.lunch p{font-size:.88rem;margin-bottom:1.1rem;}
.lunch__price{font-family:var(--ff-display);font-size:1.5rem;color:var(--c-brand);font-weight:600;}
.lunch.is-today{border-color:var(--c-brand);background:linear-gradient(180deg,#fff, #fdf4f1);}
.lunch.is-today::before{
  content:"Heute";position:absolute;right:-30px;top:14px;
  background:var(--c-brand);color:#fff;font-size:.62rem;font-weight:700;letter-spacing:.14em;
  text-transform:uppercase;padding:.28rem 2.4rem;transform:rotate(38deg);
}
.mittag__hint{text-align:center;margin-top:2.2rem;font-style:italic;font-size:.95rem;}

/* ---------- LIEFERUNG ---------- */
.lieferung__grid{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(2.5rem,6vw,5rem);align-items:center;}
.lieferung__text > p{margin-bottom:1.8rem;font-size:1.03rem;}
.steps{display:flex;flex-direction:column;gap:1.3rem;margin-bottom:2.2rem;}
.steps li{display:flex;gap:1.1rem;align-items:flex-start;}
.steps__num{
  width:38px;height:38px;border-radius:50%;flex:none;display:grid;place-items:center;
  border:1px solid var(--c-brand);color:var(--c-brand);
  font-family:var(--ff-display);font-size:1.15rem;font-weight:600;
}
.steps h4{margin-bottom:.15rem;}
.steps p{font-size:.9rem;margin:0;}
.steps a{color:var(--c-brand);text-decoration:underline;text-underline-offset:3px;}

.lieferung__facts{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem;margin-bottom:1.4rem;}
.lieferung__facts div{
  background:var(--c-paper);border-radius:var(--r-sm);padding:1rem .9rem;
  border:1px solid var(--c-line);text-align:center;
}
.lieferung__facts strong{display:block;font-family:var(--ff-display);font-size:1.5rem;color:var(--c-brand);line-height:1.1;}
.lieferung__facts span{font-size:.72rem;color:var(--c-muted);letter-spacing:.03em;}
.lieferung__pay{font-size:.88rem;margin-bottom:1.6rem;}
.lieferung__cta{display:flex;gap:.8rem;flex-wrap:wrap;}
.lieferung__cta .btn--outline{--btn-fg:var(--c-ink);border-color:var(--c-ink);}
.lieferung__cta .btn--outline::after{background:var(--c-ink);}
.lieferung__cta .btn--outline:hover{color:#fff;}

/* Lieferpartner */
.partners{margin-top:2.4rem;}
.partners__label{
  display:flex;align-items:center;gap:.7rem;margin-bottom:1rem;
  font-size:.72rem;font-weight:600;letter-spacing:.2em;text-transform:uppercase;
  color:var(--c-muted);
}
.partners__label .line{width:28px;height:1px;background:currentColor;opacity:.5;display:block;flex:none;}

.partners__list{display:grid;grid-template-columns:1fr 1fr;gap:.7rem;}
.partner{
  --brand:var(--c-muted);
  display:flex;align-items:center;gap:.75rem;
  background:var(--c-paper);border:1px solid var(--c-line);border-radius:var(--r);
  padding:.85rem 1rem;position:relative;overflow:hidden;
  transition:transform .35s var(--ease), box-shadow .35s var(--ease), border-color .35s;
}
.partner::before{
  content:"";position:absolute;left:0;top:0;bottom:0;width:3px;
  background:var(--brand);transform:scaleY(0);transform-origin:bottom;
  transition:transform .4s var(--ease);
}
.partner:hover{transform:translateY(-3px);box-shadow:var(--shadow-sm);border-color:var(--brand);}
.partner:hover::before{transform:scaleY(1);transform-origin:top;}

.partner__mark{
  width:38px;height:38px;border-radius:11px;flex:none;
  display:grid;place-items:center;
  background:var(--brand);color:#fff;
  box-shadow:0 4px 12px -5px var(--brand);
  transition:transform .35s var(--ease);
}
.partner__mark svg{width:21px;height:21px;}
.partner:hover .partner__mark{transform:scale(1.07) rotate(-4deg);}
.partner__text{display:flex;flex-direction:column;line-height:1.25;min-width:0;}
.partner__text strong{font-size:.92rem;font-weight:600;color:var(--c-ink);}
.partner__text span{font-size:.74rem;color:var(--c-muted);}
.partner__arrow{
  margin-left:auto;color:var(--brand);font-size:.95rem;flex:none;
  transition:transform .35s var(--ease);
}
.partner:hover .partner__arrow{transform:translate(2px,-2px);}
.partner--direct:hover .partner__arrow{transform:translateX(4px);}

.partner--lieferando{--brand:#ff8000;}
.partner--ubereats{--brand:#06c167;}
.partner--wolt{--brand:#009de0;}
.partner--direct{--brand:var(--c-brand);background:#fdf6f4;border-style:dashed;}

.partners__hint{font-size:.8rem;line-height:1.55;color:var(--c-muted);margin-top:1rem;font-style:italic;}

.lieferung__media{position:relative;border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--shadow);}
.lieferung__media img{aspect-ratio:4/5;object-fit:cover;width:100%;transition:transform 1.1s var(--ease);}
.lieferung__media:hover img{transform:scale(1.05);}
.lieferung__sticker{
  position:absolute;left:1.4rem;bottom:1.4rem;
  background:rgba(24,18,17,.86);backdrop-filter:blur(8px);
  color:#fff;padding:.9rem 1.2rem;border-radius:var(--r-sm);
}
.lieferung__sticker strong{display:block;font-family:var(--ff-display);font-size:1.35rem;color:var(--c-gold);line-height:1.1;}
.lieferung__sticker span{font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:rgba(255,255,255,.7);}

/* ---------- GALERIE ---------- */
.gallery{
  display:grid;grid-template-columns:repeat(4,1fr);
  grid-auto-rows:210px;gap:1rem;
}
.gallery__item{
  position:relative;overflow:hidden;border-radius:var(--r);
  display:block;width:100%;height:100%;
}
.gallery__item--tall{grid-row:span 2;}
.gallery__item--wide{grid-column:span 2;}
.gallery__item img{width:100%;height:100%;object-fit:cover;transition:transform 1s var(--ease), filter .5s;}
.gallery__item::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(to top,rgba(15,10,9,.85),transparent 55%);
  opacity:0;transition:opacity .45s var(--ease);
}
.gallery__item:hover img{transform:scale(1.09);}
.gallery__item:hover::after{opacity:1;}
.gallery__cap{
  position:absolute;left:1rem;bottom:.9rem;z-index:2;
  color:#fff;font-family:var(--ff-display);font-style:italic;font-size:1.05rem;
  opacity:0;transform:translateY(10px);transition:opacity .45s var(--ease), transform .45s var(--ease);text-align:left;
}
.gallery__item:hover .gallery__cap{opacity:1;transform:translateY(0);}

/* ---------- REVIEWS ---------- */
.reviews__score{display:flex;flex-direction:column;align-items:center;gap:.3rem;margin-top:1.2rem;}
.stars{color:var(--c-gold);letter-spacing:.18em;font-size:1.2rem;}
.reviews__score strong{font-family:var(--ff-display);font-size:1.9rem;line-height:1;}
.reviews__score span:last-child{font-size:.82rem;color:var(--c-muted);}

.slider__viewport{overflow:hidden;}
.slider__track{display:flex;transition:transform .65s var(--ease);}
.review{
  flex:0 0 100%;padding:0 clamp(.5rem,2vw,1.5rem);
  display:flex;flex-direction:column;align-items:center;text-align:center;
}
.review__quote{
  font-family:var(--ff-display);font-size:5rem;line-height:.4;color:var(--c-brand);opacity:.28;
  margin-bottom:1.4rem;height:2rem;
}
.review p{font-family:var(--ff-display);font-size:clamp(1.25rem,2.4vw,1.75rem);line-height:1.5;color:var(--c-ink);max-width:44ch;}
.review footer{margin-top:1.5rem;display:flex;flex-direction:column;gap:.15rem;}
.review footer strong{font-weight:600;font-size:.95rem;}
.review footer span{font-size:.78rem;color:var(--c-muted);letter-spacing:.05em;}

.slider__nav{display:flex;align-items:center;justify-content:center;gap:1.4rem;margin-top:2.4rem;}
.slider__btn{
  width:46px;height:46px;border-radius:50%;border:1px solid var(--c-line);
  font-size:1.4rem;line-height:1;color:var(--c-ink-soft);
  transition:background .35s var(--ease), border-color .35s var(--ease), color .35s var(--ease), transform .35s var(--ease);
}
.slider__btn:hover{background:var(--c-brand);border-color:var(--c-brand);color:#fff;transform:scale(1.08);}
.slider__dots{display:flex;gap:.5rem;}
.slider__dots button{width:8px;height:8px;border-radius:50%;background:var(--c-line);transition:background .35s var(--ease), width .35s var(--ease);}
.slider__dots button.is-active{background:var(--c-brand);width:24px;border-radius:99px;}

/* ---------- FEIERN ---------- */
.feiern__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.6rem;align-items:start;}
.package{
  background:var(--c-paper);border-radius:var(--r-lg);overflow:hidden;
  border:1px solid var(--c-line);position:relative;
  transition:transform .45s var(--ease), box-shadow .45s var(--ease);
}
.package:hover{transform:translateY(-8px);box-shadow:var(--shadow);}
.package__img{aspect-ratio:16/10;overflow:hidden;}
.package__img img{width:100%;height:100%;object-fit:cover;transition:transform 1s var(--ease);}
.package:hover .package__img img{transform:scale(1.07);}
.package__body{padding:1.6rem;}
.package__body h3{margin-bottom:.2rem;}
.package__price{font-family:var(--ff-display);font-size:1.35rem;color:var(--c-brand);margin-bottom:1rem;font-weight:600;}
.package ul li{position:relative;padding-left:1.4rem;font-size:.9rem;margin-bottom:.5rem;color:var(--c-ink-soft);}
.package ul li::before{content:"·";position:absolute;left:.35rem;color:var(--c-brand);font-size:1.4rem;line-height:1;top:-.05em;}
.package--featured{border-color:var(--c-brand);box-shadow:var(--shadow);}
.package__flag{
  position:absolute;right:1rem;top:1rem;z-index:2;
  background:var(--c-brand);color:#fff;font-size:.66rem;font-weight:700;
  letter-spacing:.14em;text-transform:uppercase;padding:.35rem .8rem;border-radius:99px;
}
.feiern__cta{
  margin-top:3rem;text-align:center;display:flex;flex-direction:column;align-items:center;gap:1.2rem;
}
.feiern__cta p{max-width:52ch;font-size:1.02rem;}

/* ---------- GUTSCHEIN ---------- */
.gift{position:relative;overflow:hidden;padding-block:clamp(5rem,11vw,9rem);color:#fff;text-align:center;background:var(--c-dark);}
.gift__bg{
  position:absolute;inset:-15% 0;
  background-image:linear-gradient(rgba(18,12,11,.76),rgba(18,12,11,.86)),
    url("../img/bv-1510812431401-41d2bd2722f3-1400.jpg");
  background-size:cover;background-position:center;
  transform:translateZ(0);backface-visibility:hidden;
}
@media (max-width:720px){
  .gift__bg{
    background-image:linear-gradient(rgba(18,12,11,.76),rgba(18,12,11,.86)),
      url("../img/bv-1510812431401-41d2bd2722f3-800.jpg");
  }
}
.gift__inner{position:relative;z-index:2;max-width:660px;margin-inline:auto;}
.gift__inner .eyebrow{justify-content:center;}
.gift__inner > p{color:rgba(255,255,255,.82);margin:1.2rem 0 2rem;font-size:1.05rem;}
.gift__values{display:flex;gap:.6rem;justify-content:center;flex-wrap:wrap;margin-bottom:2.2rem;}
.gift__values span{
  border:1px solid rgba(255,255,255,.32);border-radius:999px;padding:.5rem 1.15rem;
  font-size:.88rem;font-weight:500;cursor:default;
  transition:background .35s var(--ease), border-color .35s var(--ease), color .35s var(--ease), transform .35s var(--ease);
}
.gift__values span:hover{background:var(--c-gold);border-color:var(--c-gold);color:var(--c-ink);transform:translateY(-3px);}
.gift__note{font-size:.8rem;color:rgba(255,255,255,.55);margin-top:1.4rem;}

/* ---------- RESERVIERUNG ---------- */
.reservierung__grid{display:grid;grid-template-columns:1.15fr .85fr;gap:clamp(2.5rem,5vw,4.5rem);align-items:start;}
.reservierung__lead{margin:1rem 0 2rem;}

.form__row{display:grid;grid-template-columns:1fr 1fr;gap:1rem;}
.form__row--3{grid-template-columns:1fr 1fr 1fr;}
.field{margin-bottom:1.1rem;display:flex;flex-direction:column;}
.field label{font-size:.8rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--c-muted);margin-bottom:.4rem;}
.field input,.field select,.field textarea{
  width:100%;padding:.85rem 1rem;border-radius:var(--r-sm);
  border:1px solid var(--c-line);background:var(--c-paper);
  transition:border-color .3s, box-shadow .3s, background .3s;
  font-size:.95rem;
}
.field textarea{resize:vertical;min-height:88px;}
.field select{appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath fill='%237d6f66' d='M1 1l5 5 5-5'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 1rem center;background-size:11px;padding-right:2.4rem;}
.field input:focus,.field select:focus,.field textarea:focus{
  outline:none;border-color:var(--c-brand);box-shadow:0 0 0 3px rgba(156,31,40,.12);
}
.field.has-error input,.field.has-error select{border-color:#c0392b;background:#fdf3f2;}
.field__error{color:#c0392b;font-size:.76rem;margin-top:.3rem;min-height:1em;display:block;}

.check{display:flex;gap:.7rem;align-items:flex-start;margin-bottom:.8rem;font-size:.86rem;line-height:1.5;color:var(--c-ink-soft);cursor:pointer;}
.check input{margin-top:.25rem;width:17px;height:17px;accent-color:var(--c-brand);flex:none;cursor:pointer;}
.check--optional{margin-bottom:1.6rem;}
.form__hint{font-size:.78rem;color:var(--c-muted);margin-top:.9rem;text-align:center;}

.form__success{
  margin-top:1.5rem;padding:1.6rem;border-radius:var(--r);text-align:center;
  background:#f0f7f2;border:1px solid #cde5d6;
  animation:fadeUp .55s var(--ease);
}
.form__success-ico{
  display:grid;place-items:center;width:52px;height:52px;border-radius:50%;
  background:var(--c-green);color:#fff;font-size:1.5rem;margin:0 auto .8rem;
}
.form__success h3{color:var(--c-green);margin-bottom:.3rem;}
.form__success p{font-size:.92rem;color:#3b5a45;}

.hours__list li{
  display:flex;justify-content:space-between;gap:1rem;
  padding:.5rem 0;border-bottom:1px dotted var(--c-line);font-size:.9rem;
}
.hours__list li:last-child{border-bottom:0;}
.hours__list li.is-today{color:var(--c-brand);font-weight:600;}
.hours__list li span:first-child{color:var(--c-ink-soft);}
.hours__list li.is-today span{color:var(--c-brand);}
.hours__note{font-size:.78rem;color:var(--c-muted);margin-top:.9rem;font-style:italic;}

/* ---------- KONTAKT ---------- */
.kontakt__grid{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:clamp(2rem,5vw,3.5rem);align-items:start;}

.infolist{
  border:1px solid var(--c-line-light);border-radius:var(--r-lg);
  background:rgba(255,255,255,.035);
  padding:.4rem 1.5rem;margin-bottom:1.2rem;
}
.infoitem{
  display:flex;gap:1.1rem;align-items:flex-start;
  padding:1.35rem 0;border-bottom:1px solid rgba(255,255,255,.08);
}
.infoitem:last-child{border-bottom:0;}
.infoitem__ico{
  width:42px;height:42px;border-radius:50%;flex:none;display:grid;place-items:center;
  border:1px solid rgba(201,162,39,.35);color:var(--c-gold);
  background:rgba(201,162,39,.07);
  transition:background .35s var(--ease), transform .35s var(--ease);
}
.infoitem__ico svg{width:20px;height:20px;}
.infoitem:hover .infoitem__ico{background:rgba(201,162,39,.16);transform:translateY(-2px);}
.infoitem__body{min-width:0;}
.infoitem h3{
  font-family:var(--ff-body);font-size:.72rem;font-weight:600;
  letter-spacing:.16em;text-transform:uppercase;color:var(--c-gold);
  margin-bottom:.4rem;
}
.infoitem p{font-size:.95rem;line-height:1.65;margin:0;}
.infoitem p + p{margin-top:.35rem;}
.infoitem strong{color:#efe6dc;font-weight:600;}
.infoitem__soft{color:var(--c-muted);font-size:.85rem;}
.infoitem a{transition:color .25s;}
.infoitem a:hover{color:var(--c-gold);}
.infoitem__link{
  display:inline-flex;align-items:center;gap:.35rem;margin-top:.55rem;
  font-size:.82rem;font-weight:600;color:var(--c-gold);
  border-bottom:1px solid rgba(201,162,39,.4);padding-bottom:.1rem;
}
.infoitem__link span{transition:transform .3s var(--ease);display:inline-block;}
.infoitem__link:hover span{transform:translate(2px,-2px);}

.kontakt__social{display:flex;gap:.6rem;flex-wrap:wrap;}
.kontakt__social a{
  display:inline-flex;align-items:center;gap:.5rem;
  border:1px solid var(--c-line-light);border-radius:999px;padding:.55rem 1.15rem;
  font-size:.82rem;font-weight:500;
  transition:background .35s var(--ease), border-color .35s var(--ease), color .35s var(--ease), transform .35s var(--ease);
}
.kontakt__social svg{width:16px;height:16px;}
.kontakt__social a:hover{background:var(--c-brand);border-color:var(--c-brand);color:#fff;transform:translateY(-2px);}

.kontakt__map{
  min-height:520px;height:100%;border-radius:var(--r-lg);overflow:hidden;position:relative;
  border:1px solid var(--c-line-light);background:#241c1a;
}
.kontakt__map iframe{width:100%;height:100%;min-height:520px;border:0;display:block;filter:grayscale(.2) contrast(1.04);}
.map-consent{
  position:absolute;inset:0;display:grid;place-items:center;text-align:center;padding:2rem;
  background:
    linear-gradient(rgba(24,18,17,.84),rgba(24,18,17,.92)),
    repeating-linear-gradient(45deg,#2b211f 0 14px,#241c1a 14px 28px);
}
.map-consent__inner{max-width:34ch;}
.map-consent__ico{
  width:54px;height:54px;border-radius:50%;margin:0 auto 1rem;
  display:grid;place-items:center;
  border:1px solid rgba(201,162,39,.35);color:var(--c-gold);background:rgba(201,162,39,.08);
}
.map-consent__ico svg{width:26px;height:26px;}
.map-consent h3{color:#fff;margin-bottom:.5rem;}
.map-consent p{font-size:.86rem;margin:0 auto 1.3rem;}

/* ---------- NEWSLETTER ---------- */
.newsletter{background:var(--c-brand);color:#fff;padding-block:clamp(3rem,6vw,4.5rem);}
.newsletter__inner{display:grid;grid-template-columns:1fr 1fr;gap:2.5rem;align-items:center;}
.newsletter h2{font-family:var(--ff-display);font-size:clamp(1.7rem,3vw,2.5rem);font-weight:600;line-height:1.1;margin-bottom:.5rem;}
.newsletter p{color:rgba(255,255,255,.82);font-size:.95rem;}
.newsletter__form{display:flex;gap:.6rem;flex-wrap:wrap;position:relative;}
.newsletter__form input{
  flex:1;min-width:220px;padding:.95rem 1.2rem;border-radius:999px;border:1px solid rgba(255,255,255,.35);
  background:rgba(255,255,255,.1);color:#fff;
}
.newsletter__form input::placeholder{color:rgba(255,255,255,.6);}
.newsletter__form input:focus{outline:none;background:rgba(255,255,255,.18);border-color:#fff;}
.newsletter__form .btn{--btn-bg:#fff;--btn-fg:var(--c-brand);}
.newsletter__form .btn::after{background:var(--c-ink);}
.newsletter__form .btn:hover{color:#fff;}
.newsletter__msg{flex-basis:100%;font-size:.83rem;color:#ffe9b8;min-height:1.2em;margin:0;}

/* ---------- FOOTER ---------- */
.footer{background:var(--c-dark-2);color:#b7a99e;padding-top:clamp(3rem,6vw,4.5rem);}
.footer__grid{display:grid;grid-template-columns:1.4fr 1fr 1fr 1.1fr;gap:2.5rem;padding-bottom:3rem;}
.footer__col h4{color:#fff;font-size:.8rem;letter-spacing:.16em;text-transform:uppercase;margin-bottom:1.1rem;}
.footer__col li{margin-bottom:.55rem;}
.footer__col a{font-size:.92rem;transition:color .25s;}
.footer__col a:hover{color:var(--c-gold);}
.footer__col--brand .logo{margin-bottom:1.1rem;color:#fff;}
.footer__col--brand .logo__text em{color:rgba(255,255,255,.45);}
.footer__col--brand p{font-size:.92rem;line-height:1.9;color:#b7a99e;}
.footer__hours{display:flex;flex-direction:column;gap:.15rem;}
.footer__hours li{
  display:grid;grid-template-columns:4.6rem 1fr;gap:.6rem;align-items:baseline;
  padding:.5rem .65rem;border-radius:var(--r-sm);margin:0;
  transition:background .3s;
}
.footer__hours .fh-day{
  font-size:.72rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;
  color:#8c8078;white-space:nowrap;
}
.footer__hours .fh-time{display:flex;flex-direction:column;gap:.1rem;font-size:.86rem;color:#c3b6ab;}
.footer__hours .fh-time span{font-variant-numeric:tabular-nums;}
.footer__hours .fh-closed{color:#8c8078;font-style:italic;}
.footer__hours li.is-today{background:rgba(201,162,39,.1);}
.footer__hours li.is-today .fh-day{color:var(--c-gold);}
.footer__hours li.is-today .fh-time{color:#f0e5d6;}
.footer__hours-today{
  display:inline-flex;align-items:center;gap:.4rem;margin-top:.7rem;
  font-size:.74rem;letter-spacing:.04em;color:#8c8078;
}
.footer__hours-today i{width:7px;height:7px;border-radius:50%;background:#8c8078;flex:none;}
.footer__hours-today.is-open i{background:#4ec27a;}
.footer__hours-today.is-open{color:#a8e6c0;}

/* Sidebar-Zeiten zweizeilig */
.hours__list li{align-items:baseline;}
.hours__list .h-time{display:flex;flex-direction:column;gap:.1rem;text-align:right;font-variant-numeric:tabular-nums;}
.footer__notice{
  border-top:1px solid var(--c-line-light);
  background:rgba(255,255,255,.03);
  padding-block:1rem;
}
.footer__notice p{
  font-size:.8rem;line-height:1.6;color:#9d9088;margin:0;
  max-width:96ch;
}
.footer__notice strong{color:var(--c-gold);font-weight:600;}

.footer__bottom{border-top:1px solid var(--c-line-light);padding-block:1.3rem;}
.footer__bottom-inner{display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap;font-size:.82rem;}
.footer__bottom p{color:#8c8078;margin:0;font-size:.82rem;}
.footer__legal{display:flex;gap:1.3rem;flex-wrap:wrap;}
.footer__legal .linklike{text-decoration:none;color:#b7a99e;}
.footer__legal .linklike:hover{color:var(--c-gold);text-decoration:underline;}

/* ---------- 6. OVERLAYS ---------- */
.totop{
  position:fixed;right:1.5rem;bottom:1.5rem;z-index:400;
  width:48px;height:48px;border-radius:50%;background:var(--c-brand);color:#fff;font-size:1.2rem;
  box-shadow:var(--shadow);opacity:0;visibility:hidden;transform:translateY(16px);
  transition:opacity .4s var(--ease), transform .4s var(--ease), background .4s var(--ease), visibility .4s;
}
.totop.is-visible{opacity:1;visibility:visible;transform:translateY(0);}
.totop:hover{background:var(--c-ink);transform:translateY(-4px);}

.actionbar{display:none;}

.lightbox{
  position:fixed;inset:0;z-index:900;background:rgba(12,8,7,.94);
  display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:1rem;padding:2rem;
  opacity:0;transition:opacity .4s var(--ease);
  backdrop-filter:blur(6px);
}
.lightbox.is-open{opacity:1;}
.lightbox__figure{display:flex;flex-direction:column;align-items:center;gap:1rem;max-height:88vh;}
.lightbox__figure img{
  max-height:78vh;max-width:100%;object-fit:contain;border-radius:var(--r);
  box-shadow:0 40px 90px -25px rgba(0,0,0,.9);
  animation:lbIn .5s var(--ease);
}
@keyframes lbIn{from{opacity:0;transform:scale(.94);}to{opacity:1;transform:scale(1);}}
.lightbox__figure figcaption{color:#e6dcd2;font-family:var(--ff-display);font-style:italic;font-size:1.1rem;text-align:center;}
.lightbox__nav,.lightbox__close{
  color:#fff;width:52px;height:52px;border-radius:50%;
  border:1px solid rgba(255,255,255,.25);font-size:1.8rem;line-height:1;
  display:grid;place-items:center;flex:none;
  transition:background .3s var(--ease), border-color .3s var(--ease), transform .3s var(--ease);
}
.lightbox__nav:hover,.lightbox__close:hover{background:var(--c-brand);border-color:var(--c-brand);}
.lightbox__nav[hidden]{display:none !important;}
.lightbox__close{position:absolute;right:1.5rem;top:1.5rem;font-size:1.5rem;z-index:2;}

.modal{position:fixed;inset:0;z-index:950;display:grid;place-items:center;padding:1.5rem;opacity:0;transition:opacity .35s var(--ease);}
.modal.is-open{opacity:1;}
.modal__backdrop{position:absolute;inset:0;background:rgba(12,8,7,.7);backdrop-filter:blur(4px);}
.modal__box{
  position:relative;background:var(--c-paper);border-radius:var(--r-lg);
  max-width:760px;width:100%;max-height:86vh;overflow-y:auto;padding:2.5rem;
  box-shadow:var(--shadow-lg);animation:lbIn .45s var(--ease);
}
.modal__box h2{font-family:var(--ff-display);font-size:2rem;font-weight:600;margin-bottom:1.2rem;}
.modal__close{
  position:absolute;right:1.1rem;top:1.1rem;width:40px;height:40px;border-radius:50%;
  font-size:1.5rem;line-height:1;color:var(--c-muted);
  transition:background .3s, color .3s;
}
.modal__close:hover{background:var(--c-cream-2);color:var(--c-brand);}
.modal__content h3{font-size:1.1rem;margin:1.5rem 0 .4rem;}
.modal__content h3:first-child{margin-top:0;}
.modal__content p,.modal__content li{font-size:.92rem;line-height:1.7;margin-bottom:.7rem;}
.modal__content ul{list-style:disc;padding-left:1.2rem;margin-bottom:1rem;}
.modal__content ul li{margin-bottom:.3rem;}

/* Endlos laufende Deko-Animationen: JS setzt .anim-off, sobald das Element
   aus dem Sichtbereich scrollt oder der Tab in den Hintergrund geht. */
.anim-off,.anim-off::after,.anim-off::before{animation-play-state:paused !important;}
/* Kein will-change:auto hier! Das Umschalten zerstoert die GPU-Ebene und baut
   sie beim Zurueckscrollen neu auf – genau waehrend des Scrollens. Pausieren
   allein kostet nichts, die Ebene darf bestehen bleiben. */

/* ---------- 8. REVEAL ---------- */
.js [data-reveal]{opacity:0;transform:translateY(34px);transition:opacity .8s var(--ease), transform .8s var(--ease);}
.js [data-reveal].is-in{opacity:1;transform:none;}

/* ---------- 7. RESPONSIVE ---------- */
@media (max-width:1100px){
  .usp__grid{grid-template-columns:repeat(2,1fr);}
  .menu__panel-inner{grid-template-columns:1fr;}
  .menu__figure{position:static;max-width:520px;margin-inline:auto;}
  .menu__figure img{aspect-ratio:16/10;}
  .mittag__grid{grid-template-columns:repeat(2,1fr);}
  .feiern__grid{grid-template-columns:1fr;max-width:560px;margin-inline:auto;}
  .kontakt__grid{grid-template-columns:1fr;}
  .footer__grid{grid-template-columns:1fr 1fr;gap:2rem;}
  .gallery{grid-template-columns:repeat(3,1fr);}
}

@media (max-width:980px){
  :root{--header-h:70px;}
  .container{
    padding-left:max(0px, calc(env(safe-area-inset-left) - 1.25rem));
    padding-right:max(0px, calc(env(safe-area-inset-right) - 1.25rem));
  }
  /* Die Shell ist exakt viewportgross und schneidet das ausgefahrene Menue ab –
     dadurch entsteht kein horizontales Scrollen, ohne overflow auf <html>. */
  .nav-shell{
    display:block;position:fixed;inset:0;
    overflow:hidden;pointer-events:none;z-index:520;
  }
  .nav{
    position:absolute;inset:0 0 0 auto;width:min(360px,86vw);
    background:var(--c-cream);flex-direction:column;align-items:flex-start;
    justify-content:flex-start;gap:0;padding:6rem 2rem 2rem;
    transform:translateX(100%);visibility:hidden;pointer-events:auto;
    transition:transform .55s var(--ease), visibility 0s .55s;
    box-shadow:-20px 0 60px -20px rgba(27,21,18,.4);
    overflow-y:auto;padding-right:max(2rem, env(safe-area-inset-right));
  }
  .nav.is-open{transform:translateX(0);visibility:visible;transition:transform .55s var(--ease), visibility 0s 0s;}
  .nav__list{flex-direction:column;gap:0;width:100%;}
  .nav__list li{border-bottom:1px solid var(--c-line);}
  .nav__link{display:block;padding:1rem 0;font-size:1.15rem;font-family:var(--ff-display);}
  .nav__link::after{display:none;}
  .nav__cta{margin-top:1.8rem;width:100%;}
  .burger{display:block;z-index:530;}
  /* z-index unter dem Header (500): der Header bildet einen eigenen Stapelkontext,
     eine hoehere Zahl hier wuerde das darin liegende Menue verdecken. */
  .nav-backdrop{
    position:fixed;inset:0;background:rgba(12,8,7,.5);z-index:480;
    opacity:0;visibility:hidden;transition:opacity .4s, visibility 0s .4s;
  }
  .nav-backdrop.is-open{transition:opacity .4s, visibility 0s 0s;}
  .nav-backdrop.is-open{opacity:1;visibility:visible;}

  .story__grid,.lieferung__grid,.reservierung__grid{grid-template-columns:1fr;}
  .story__media{max-width:520px;margin-inline:auto;padding-right:1.5rem;}
  .lieferung__media{max-width:520px;margin-inline:auto;}
  .newsletter__inner{grid-template-columns:1fr;}
  .kontakt__map{min-height:380px;}
  .kontakt__map iframe{min-height:380px;}
  .hero__dots{display:none;}
}

@media (max-width:720px){
  .container{
    width:auto;min-width:0;
    margin-left:max(1rem, env(safe-area-inset-left));
    margin-right:max(1rem, env(safe-area-inset-right));
    padding-left:0;padding-right:0;
  }
  .hide-sm{display:none;}

  /* Kopfbereich kompakt: eine Statuszeile + schlanker Header.
     Die Telefonnummer sitzt auf Mobil in der unteren Aktionsleiste. */
  :root{--header-h:62px;}
  .topbar{font-size:.73rem;}
  .topbar__inner{
    justify-content:center;flex-wrap:nowrap;gap:0;
    min-height:30px;padding-block:.25rem;
  }
  .topbar__links{display:none;}
  .topbar__status{gap:.45rem;letter-spacing:.01em;white-space:nowrap;}
  .topbar__status .dot{width:7px;height:7px;}
  .ts-full{display:none;}
  .ts-short{display:inline;}

  .header__inner{min-height:var(--header-h);gap:1rem;}
  .logo{gap:.6rem;}
  .logo__mark{width:38px;height:38px;font-size:1rem;}
  .logo__text strong{font-size:1.28rem;}
  .logo__text em{font-size:.56rem;letter-spacing:.17em;}
  .burger{width:44px;height:44px;margin-right:0;}
  .burger span{left:11px;}
  .burger span:nth-child(1){top:16px;}
  .burger span:nth-child(2){top:21px;}
  .burger span:nth-child(3){top:26px;}
  /* Der erste Menuepunkt muss unter dem Schliessen-Kreuz beginnen. */
  .nav{padding-top:5.75rem;}
  .usp__grid{grid-template-columns:1fr;}
  .mittag__grid{grid-template-columns:1fr;gap:.8rem;}
  .lunch{padding:1.15rem 1.1rem;}
  .lunch__day{margin-bottom:.45rem;}
  .lunch h3{font-size:1.16rem;margin-bottom:.3rem;}
  .lunch p{margin-bottom:.75rem;}
  .lunch__price{font-size:1.35rem;}
  .lieferung__facts{grid-template-columns:1fr 1fr;}
  .partners__list{grid-template-columns:1fr;}
  .form__row,.form__row--3{grid-template-columns:1fr;}
  .gallery{grid-template-columns:repeat(2,1fr);grid-auto-rows:150px;}
  .gallery__item--wide{grid-column:span 2;}
  .allergene__grid{grid-template-columns:1fr;}
  .footer__grid{grid-template-columns:1fr;}
  .footer__bottom-inner{flex-direction:column;text-align:center;}

  .hero{min-height:auto;padding-top:2rem;}
  .hero__content{padding-block:4.5rem 6.5rem;}
  .hero__facts{gap:1.2rem;}
  .hero__facts li{padding-right:1.2rem;}
  .hero__facts strong{font-size:1.6rem;}
  .modal__box{padding:1.8rem 1.4rem;}
  .modal{
    padding:calc(.75rem + env(safe-area-inset-top))
      max(.75rem, env(safe-area-inset-right))
      calc(.75rem + env(safe-area-inset-bottom))
      max(.75rem, env(safe-area-inset-left));
  }
  .modal__box{
    max-height:calc(100vh - 1.5rem - env(safe-area-inset-top) - env(safe-area-inset-bottom));
    max-height:calc(100dvh - 1.5rem - env(safe-area-inset-top) - env(safe-area-inset-bottom));
  }
  input,select,textarea,
  .field input,.field select,.field textarea{font-size:1rem;}
  .review p{font-size:1.15rem;}
  .dish__head{flex-wrap:wrap;}
  .dish__head h3{max-width:100%;flex:1 1 auto;}
  .dish__dots{display:none;}
  .menu__tabs{
    flex-wrap:nowrap;overflow-x:auto;justify-content:flex-start;
    scrollbar-width:none;-webkit-overflow-scrolling:touch;
    margin-inline:0;padding-inline:0;
  }
  .menu__tabs::-webkit-scrollbar{display:none;}
  .story__stats{gap:1.4rem;}
  .story__stats strong{font-size:2rem;}
  .lightbox{grid-template-columns:1fr;padding:1rem;}
  .lightbox__nav{position:absolute;bottom:1.5rem;}
  .lightbox__nav--prev{left:calc(50% - 62px);}
  .lightbox__nav--next{right:calc(50% - 62px);}

  .story__badge{left:.5rem;}
  .totop{display:none;}
  .actionbar{
    display:grid;grid-template-columns:repeat(3,minmax(0,1fr)) minmax(84px,1.25fr);
    gap:.2rem;
    position:fixed;
    left:max(.75rem, calc(env(safe-area-inset-left) + .25rem));
    right:max(.75rem, calc(env(safe-area-inset-right) + .25rem));
    bottom:calc(.55rem + env(safe-area-inset-bottom));z-index:650;
    width:auto;max-width:460px;margin-inline:auto;padding:.35rem;
    background:rgba(250,246,240,.96);
    border:1px solid rgba(27,21,18,.12);border-radius:20px;
    box-shadow:0 16px 42px -18px rgba(27,21,18,.55);
    -webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);
  }
  .actionbar a{
    display:flex;min-width:0;min-height:48px;flex-direction:column;
    align-items:center;justify-content:center;gap:.15rem;
    padding:.35rem .2rem;border-radius:14px;
    font-size:.8rem;font-weight:650;line-height:1.1;letter-spacing:.01em;
  }
  .actionbar svg{width:20px;height:20px;flex:none;}
  .actionbar__label{white-space:nowrap;}
  .actionbar .actionbar__primary{
    flex-direction:row;gap:.35rem;padding-inline:.45rem;
    background:var(--c-brand);color:#fff;
  }
  .actionbar__primary svg{width:18px;height:18px;}
  body{padding-bottom:0;}
  .home-page{scroll-padding-bottom:calc(6.4rem + env(safe-area-inset-bottom));}
  .home-page .footer{padding-bottom:calc(6.4rem + env(safe-area-inset-bottom));}
}

/* Erst auf sehr schmalen Geraeten (unter 340 px) faellt die Zusatzzeile weg –
   auf 375 px (iPhone) ist genug Platz. */
@media (max-width:339px){
  .logo__text em{display:none;}
  .logo__text strong{font-size:1.12rem;}
  .logo__mark{width:34px;height:34px;font-size:.92rem;}
  .topbar{font-size:.68rem;}
}

@media (max-width:420px){
  .gallery{grid-template-columns:1fr;}
  .gallery__item--wide,.gallery__item--tall{grid-column:span 1;grid-row:span 1;}
  .hero__actions .btn{width:100%;}
}

/* ---------- MOTION ---------- */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto;}
  *,*::before,*::after{
    animation-duration:.001ms !important;animation-iteration-count:1 !important;
    transition-duration:.001ms !important;scroll-behavior:auto !important;
  }
  .marquee__track{animation:none !important;transform:none !important;}
  .js [data-reveal]{opacity:1;transform:none;}
  .hero__title .word,.hero__sub,.hero__actions,.hero__facts{opacity:1;}
}

@media print{
  .header,.topbar,.hero__scroll,.actionbar,.totop,.cookie,.newsletter,.gift{display:none !important;}
  body{background:#fff;color:#000;}
  .section{padding-block:1.5rem;}
  .menu__panel{display:block !important;}
}
