/* ==========================================================================
   Barbershop KOÇ — Hannover-Döhren
   Designsystem v2 · „Präzision im Übergang“
   Keine Bibliotheken, keine externen Requests.
   ========================================================================== */

/* --- Schriften (selbst gehostet, DSGVO-konform) -------------------------- */
@font-face{font-family:'Clash Display';src:url('../fonts/clashdisplay-400.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:'Clash Display';src:url('../fonts/clashdisplay-500.woff2') format('woff2');font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:'Clash Display';src:url('../fonts/clashdisplay-600.woff2') format('woff2');font-weight:600;font-style:normal;font-display:swap}
@font-face{font-family:'Clash Display';src:url('../fonts/clashdisplay-700.woff2') format('woff2');font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:'Satoshi';src:url('../fonts/satoshi-400.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:'Satoshi';src:url('../fonts/satoshi-500.woff2') format('woff2');font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:'Satoshi';src:url('../fonts/satoshi-700.woff2') format('woff2');font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:'Satoshi';src:url('../fonts/satoshi-900.woff2') format('woff2');font-weight:900;font-style:normal;font-display:swap}

/* --- Tokens -------------------------------------------------------------- */
:root{
  color-scheme:dark;

  /* Flächen — warmes Fast-Schwarz, nie #000 */
  --bg:#0b0a0a;
  --bg-2:#100e0e;
  --surface:#151313;
  --surface-2:#1c1919;
  --surface-3:#252121;

  /* Text — eine warme Graufamilie */
  --text:#f4f0ea;
  --text-2:#aca59d;
  --text-3:#706a63;
  --text-4:#3f3a36;

  /* Ein Akzent: Rot. Grün nur als Zustand „geöffnet“. */
  --accent:#d51f2b;
  --accent-hi:#ef3a45;
  --accent-wash:rgba(213,31,43,.12);
  --accent-line:rgba(213,31,43,.38);
  --open:#5fd38a;

  /* Haarlinien & Schatten, getönt */
  --line:rgba(244,240,234,.085);
  --line-2:rgba(244,240,234,.15);
  --line-3:rgba(244,240,234,.3);
  --hi:inset 0 1px 0 rgba(244,240,234,.07);
  --shadow:0 40px 80px -36px rgba(4,2,2,.95),0 2px 8px -2px rgba(4,2,2,.55);
  --shadow-red:0 22px 50px -22px rgba(213,31,43,.7);

  /* Radien — konzentrisch, nicht überall gleich */
  --r-xl:34px;
  --r-lg:26px;
  --r-md:16px;
  --r-sm:10px;

  /* Bewegung (Kurven nach Emil Kowalski / Ionic) */
  --ease-out:cubic-bezier(.23,1,.32,1);
  --ease-expo:cubic-bezier(.16,1,.3,1);
  --ease-io:cubic-bezier(.77,0,.175,1);
  --ease-drawer:cubic-bezier(.32,.72,0,1);

  /* Rhythmus */
  --gutter:clamp(20px,4.6vw,72px);
  --maxw:1440px;
  --sec:clamp(112px,14vw,210px);
  --nav-h:74px;

  /* Ebenen */
  --z-base:1;
  --z-mbar:30;
  --z-menu:40;
  --z-nav:45;
  --z-cursor:55;
  --z-grain:60;
  --z-intro:70;
}

/* --- Reset --------------------------------------------------------------- */
*,*::before,*::after{box-sizing:border-box}
*{margin:0}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:110px;background:var(--bg)}
body{
  background:var(--bg);
  color:var(--text);
  font-family:'Satoshi',ui-sans-serif,system-ui,-apple-system,'Segoe UI',sans-serif;
  font-size:clamp(1rem,.96rem + .18vw,1.0625rem);
  line-height:1.68;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  overflow-x:clip;
}
img,video,svg{display:block;max-width:100%}
img,video{height:auto}
button,input{font:inherit;color:inherit}
button{background:none;border:0;cursor:pointer;padding:0}
a{color:inherit;text-decoration:none}
a,button{-webkit-tap-highlight-color:transparent}
ul,ol{list-style:none;padding:0}
dd{margin:0}
:focus-visible{outline:2px solid var(--accent-hi);outline-offset:3px;border-radius:6px}
::selection{background:var(--accent);color:#fff}
.sprite{position:absolute;width:0;height:0;overflow:hidden}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.num{font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}

/* --- Typografie ---------------------------------------------------------- */
h1,h2,h3,.h2,.h3{
  font-family:'Clash Display',ui-sans-serif,system-ui,sans-serif;
  font-weight:600;
  letter-spacing:-.03em;
  line-height:1;
  text-wrap:balance;
}
.h2{font-size:clamp(2.35rem,5.6vw,5.4rem);line-height:.95;letter-spacing:-.036em}
.h2--xl{font-size:clamp(3rem,9.4vw,9.2rem);line-height:.86;letter-spacing:-.045em}
.lead{font-size:clamp(1.08rem,1rem + .35vw,1.32rem);line-height:1.58;color:var(--text-2);max-width:52ch;text-wrap:pretty}
p{text-wrap:pretty}
.muted{color:var(--text-2)}
.dim{color:var(--text-3)}
.accent{color:var(--accent-hi)}

/* Abschnitts-Kennung: Nummer · Linie · Name — ohne Versalien */
.label{
  display:flex;align-items:center;gap:12px;
  font-size:.9rem;font-weight:500;color:var(--text-2);letter-spacing:.005em;
}
.label__n{
  font-family:'Clash Display',sans-serif;font-weight:500;font-size:.8rem;
  color:var(--accent-hi);font-variant-numeric:tabular-nums;
  display:inline-flex;align-items:center;gap:12px;
}
.label__n::after{content:"";width:28px;height:1px;background:var(--line-3)}

/* Alte Klassen der Unterseiten bleiben lesbar */
.eyebrow{display:inline-flex;align-items:center;gap:12px;font-size:.9rem;font-weight:500;color:var(--text-2)}
.eyebrow::before{content:"";width:28px;height:1px;background:var(--accent)}
.d2{font-size:clamp(2.35rem,5.6vw,5.4rem);line-height:.95;letter-spacing:-.036em}
.d3{font-size:clamp(1.7rem,3vw,2.6rem);letter-spacing:-.03em;line-height:1.04}
.row{display:flex;flex-wrap:wrap;align-items:center;gap:14px}

/* --- Layout -------------------------------------------------------------- */
.wrap{width:100%;max-width:var(--maxw);margin-inline:auto;padding-inline:var(--gutter)}
.section{padding-block:var(--sec) calc(var(--sec) * 1.08)}

.shead{display:grid;gap:22px;margin-bottom:clamp(56px,7vw,112px)}
.shead .h2{max-width:15ch}
.shead__aside{color:var(--text-2);max-width:46ch}
@media (min-width:960px){
  .shead{grid-template-columns:minmax(0,1.4fr) minmax(0,.6fr);align-items:end;column-gap:clamp(40px,5vw,96px)}
  .shead .label{grid-column:1/-1}
  .shead__aside{padding-bottom:.55em}
  .shead--stack{grid-template-columns:minmax(0,1fr)}
}

/* --- Filmkorn ------------------------------------------------------------ */
.grain{
  position:fixed;inset:-50%;z-index:var(--z-grain);pointer-events:none;
  opacity:.05;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  animation:grain 7s steps(6) infinite;
}
@keyframes grain{
  0%,100%{transform:translate3d(0,0,0)} 16%{transform:translate3d(-2%,-3%,0)}
  33%{transform:translate3d(3%,-2%,0)}  50%{transform:translate3d(-1%,2%,0)}
  66%{transform:translate3d(2%,3%,0)}   83%{transform:translate3d(-3%,1%,0)}
}

/* ==========================================================================
   Intro — das Logo wird mit einem Klingenschnitt geteilt
   ========================================================================== */
.intro{
  position:fixed;inset:0;z-index:var(--z-intro);
  /* Sicherheitsnetz: verschwindet von selbst, falls JavaScript ausfällt */
  animation:intro-failsafe 0s linear 6s forwards;
}
@keyframes intro-failsafe{to{visibility:hidden;opacity:0;pointer-events:none}}
.no-intro .intro{display:none}
html.has-intro:not(.intro-done){overflow:hidden}

.intro__half{position:absolute;left:0;right:0;overflow:hidden;background:var(--bg);will-change:transform}
.intro__half--top{top:0;height:calc(50% + 1px)}
.intro__half--bot{bottom:0;height:50%}
.intro__stage{position:absolute;left:0;right:0;height:100vh;height:100dvh;display:grid;place-items:center}
.intro__half--top .intro__stage{top:0}
.intro__half--bot .intro__stage{bottom:0}
.intro__logo{
  width:clamp(118px,15vw,160px);height:auto;
  opacity:0;transform:scale(.94);filter:blur(12px);
  animation:intro-logo 1.1s var(--ease-out) .12s forwards;
}
@keyframes intro-logo{to{opacity:1;transform:none;filter:blur(0)}}

.intro__blade{position:absolute;left:0;right:0;top:50%;height:1px;margin-top:-.5px;pointer-events:none}
.intro__blade i{
  position:absolute;inset:0;
  background:linear-gradient(90deg,rgba(255,255,255,0),#fff 30%,#fff 70%,rgba(255,255,255,0));
  box-shadow:0 0 18px 1px rgba(255,255,255,.55);
  transform:scaleX(0);transform-origin:left;
}
.intro__meta{
  position:absolute;left:var(--gutter);right:var(--gutter);bottom:clamp(22px,4vh,40px);
  display:flex;justify-content:space-between;gap:20px;
  font-size:.8rem;font-weight:500;color:var(--text-3);
  opacity:0;animation:intro-fade .8s var(--ease-out) .5s forwards;
  transition:opacity .3s var(--ease-out);
}
@keyframes intro-fade{to{opacity:1}}

/* Schnitt: Klinge fährt durch, Hälften zucken auseinander */
.intro.is-cut .intro__blade i{transform:scaleX(1);transition:transform .52s var(--ease-io)}
.intro.is-cut .intro__meta{opacity:0}
.intro.is-cut .intro__half--top{transform:translateY(-5px);transition:transform .3s var(--ease-out) .44s}
.intro.is-cut .intro__half--bot{transform:translateY(5px);transition:transform .3s var(--ease-out) .44s}

/* Öffnen: beide Hälften fahren aus dem Bild */
.intro.is-open .intro__half--top{transform:translateY(-101%);transition:transform 1.05s var(--ease-io)}
.intro.is-open .intro__half--bot{transform:translateY(101%);transition:transform 1.05s var(--ease-io)}
.intro.is-open .intro__blade{opacity:0;transition:opacity .25s var(--ease-out)}

/* ==========================================================================
   Buttons — Pille mit Icon-Kreis und Text-Wechsel beim Hover
   ========================================================================== */
.btn{
  position:relative;display:inline-flex;align-items:center;gap:14px;
  padding:9px 9px 9px 24px;border-radius:999px;
  font-weight:700;font-size:.97rem;letter-spacing:-.01em;line-height:1.3;white-space:nowrap;
  transition:transform .18s var(--ease-out),background-color .3s var(--ease-out),
             box-shadow .3s var(--ease-out),border-color .3s var(--ease-out),color .3s var(--ease-out);
  -webkit-tap-highlight-color:transparent;
}
.btn:active{transform:scale(.97)}
.btn__t{position:relative;display:grid;overflow:hidden}
.btn__a,.btn__b{grid-area:1/1;transition:transform .5s var(--ease-expo)}
.btn__b{transform:translateY(110%)}
.btn__ico{
  width:36px;height:36px;border-radius:999px;flex:none;display:grid;place-items:center;
  transition:transform .5s var(--ease-expo),background-color .3s var(--ease-out);
}
.btn__ico svg{width:15px;height:15px;overflow:visible}
@media (hover:hover) and (pointer:fine){
  .btn:hover .btn__a{transform:translateY(-110%)}
  .btn:hover .btn__b{transform:none}
  .btn:hover .btn__ico{transform:rotate(45deg)}
  .btn:hover .btn__ico svg[data-no-rotate]{transform:none}
}
.btn--primary{background:var(--accent);color:#fff;box-shadow:var(--shadow-red),var(--hi)}
.btn--primary .btn__ico{background:rgba(255,255,255,.16)}
.btn--primary:hover{background:var(--accent-hi)}
.btn--ghost{
  background:rgba(244,240,234,.05);color:var(--text);
  border:1px solid var(--line-2);box-shadow:var(--hi);
  -webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);
}
.btn--ghost .btn__ico{background:rgba(244,240,234,.08)}
.btn--ghost:hover{background:rgba(244,240,234,.09);border-color:var(--line-3)}
.btn--light{background:var(--text);color:var(--bg)}
.btn--light .btn__ico{background:rgba(11,10,10,.09)}
.btn--lg{padding:11px 11px 11px 28px;font-size:1.02rem}
.btn--lg .btn__ico{width:40px;height:40px}
.btn--xl{padding:13px 13px 13px 32px;font-size:clamp(1.02rem,1rem + .3vw,1.18rem)}
.btn--xl .btn__ico{width:48px;height:48px}
.btn--xl .btn__ico svg{width:17px;height:17px}

/* Telefon-Icon dreht sich nicht mit */
.btn[href^="tel:"]:hover .btn__ico{transform:scale(1.08)}

/* Textlink mit Unterstrich-Wischer */
.tlink{position:relative;display:inline-block;font-weight:600;color:var(--text-2);padding-bottom:2px;transition:color .3s var(--ease-out)}
.tlink::after{
  content:"";position:absolute;left:0;bottom:0;width:100%;height:1px;background:currentColor;
  transform:scaleX(0);transform-origin:right;transition:transform .5s var(--ease-expo);
}
.tlink:hover{color:var(--text)}
.tlink:hover::after{transform:scaleX(1);transform-origin:left}
.tlink--on{color:var(--text)}
.tlink--on::after{transform:scaleX(1);background:var(--accent-hi)}

/* Live-Status (geöffnet / geschlossen) */
.status{display:inline-flex;align-items:center;gap:10px;font-size:.875rem;font-weight:500;color:var(--text-2)}
.status__dot{position:relative;width:8px;height:8px;border-radius:99px;background:var(--text-3);flex:none}
html[data-open="true"] .status__dot{background:var(--open)}
html[data-open="true"] .status__dot::after{
  content:"";position:absolute;inset:0;border-radius:inherit;background:var(--open);
  animation:ping 2.2s var(--ease-out) infinite;
}
html[data-open="false"] .status__dot{background:var(--accent-hi)}
@keyframes ping{0%{transform:scale(1);opacity:.7}70%,100%{transform:scale(2.8);opacity:0}}

/* ==========================================================================
   Navigation — schwebende Pille mit Scroll-Ring und gleitender Markierung
   ========================================================================== */
.nav{
  position:fixed;top:clamp(12px,2vw,22px);left:50%;z-index:var(--z-nav);
  width:max-content;max-width:calc(100% - 24px);
  transform:translateX(-50%) translateY(0);
  transition:transform .6s var(--ease-drawer),opacity .4s var(--ease-out);
}
.nav.is-hidden{transform:translateX(-50%) translateY(-150%);opacity:0;pointer-events:none}
.js .nav{opacity:0;transform:translateX(-50%) translateY(-24px)}
.is-ready .nav{opacity:1;transform:translateX(-50%) translateY(0);transition-delay:.25s}
.is-ready .nav.is-hidden{transform:translateX(-50%) translateY(-150%);opacity:0;transition-delay:0s}

.nav__inner{
  display:flex;align-items:center;gap:clamp(8px,1.4vw,22px);
  padding:8px 8px 8px 10px;border-radius:999px;
  background:rgba(16,14,14,.58);border:1px solid var(--line);
  box-shadow:0 18px 44px -22px rgba(4,2,2,.95),var(--hi);
  -webkit-backdrop-filter:blur(22px) saturate(160%);backdrop-filter:blur(22px) saturate(160%);
  transition:background-color .5s var(--ease-out),border-color .5s var(--ease-out);
}
.nav.is-stuck .nav__inner{background:rgba(14,12,12,.84);border-color:var(--line-2)}

.nav__brand{position:relative;width:52px;height:52px;flex:none;display:grid;place-items:center}
.nav__brand img{width:40px;height:40px;transition:transform .6s var(--ease-expo)}
.nav__brand:hover img{transform:rotate(-8deg) scale(1.06)}
.nav__ring{position:absolute;inset:0;width:100%;height:100%;transform:rotate(-90deg);pointer-events:none}
.nav__ring circle{fill:none;stroke:var(--line);stroke-width:1.5}
.nav__ring .nav__ring-p{stroke:var(--accent-hi);stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:1}

.nav__links{position:relative;display:none;align-items:center}
@media (min-width:1000px){.nav__links{display:flex}}
.nav__pill{
  position:absolute;top:0;left:0;height:100%;width:0;border-radius:999px;
  background:rgba(244,240,234,.075);box-shadow:var(--hi);opacity:0;pointer-events:none;
  transition:transform .5s var(--ease-drawer),width .5s var(--ease-drawer),opacity .3s var(--ease-out);
}
.nav__link{
  position:relative;padding:10px 17px;border-radius:999px;
  font-size:1rem;line-height:1.25;font-weight:500;color:var(--text-2);
  transition:color .3s var(--ease-out);
}
.nav__link:hover,.nav__link.is-active{color:var(--text)}
.nav__cta{display:none}
@media (min-width:640px){.nav__cta{display:inline-flex}}
.nav--sub .nav__cta{display:inline-flex}
.nav .btn{padding:8px 8px 8px 22px;font-size:.98rem}
.nav .btn__ico{width:36px;height:36px}

.burger{
  width:52px;height:52px;border-radius:999px;flex:none;display:grid;place-items:center;
  background:rgba(244,240,234,.06);border:1px solid var(--line);
  transition:background-color .3s var(--ease-out),transform .18s var(--ease-out);
}
.burger:active{transform:scale(.94)}
@media (min-width:1000px){.burger{display:none}}
.burger__bars{position:relative;width:20px;height:8px}
.burger__bars i{
  position:absolute;left:0;width:100%;height:1.5px;border-radius:2px;background:var(--text);
  transition:transform .55s var(--ease-expo);
}
.burger__bars i:nth-child(1){top:0}
.burger__bars i:nth-child(2){bottom:0}
.is-menu-open .burger__bars i:nth-child(1){transform:translateY(3.25px) rotate(45deg)}
.is-menu-open .burger__bars i:nth-child(2){transform:translateY(-3.25px) rotate(-45deg)}

@media (max-width:639px){
  .nav{width:calc(100% - 24px)}
  .nav__inner{justify-content:space-between}
}

/* Vollflächiges Menü — öffnet sich als Kreis aus dem Burger heraus */
.menu{
  position:fixed;inset:0;z-index:var(--z-menu);
  background:var(--bg-2);
  display:flex;flex-direction:column;justify-content:flex-end;
  padding:120px var(--gutter) calc(34px + env(safe-area-inset-bottom));
  clip-path:circle(0 at var(--cx,calc(100% - 50px)) var(--cy,50px));
  visibility:hidden;
  transition:clip-path .55s var(--ease-io),visibility 0s linear .55s;
}
.is-menu-open .menu{
  clip-path:circle(150vmax at var(--cx,calc(100% - 50px)) var(--cy,50px));
  visibility:visible;
  transition:clip-path .8s var(--ease-io),visibility 0s;
}
/* Sieben Einträge: auf niedrigen Displays richtet sich die Schriftgröße nach der Höhe */
.menu__list{display:flex;flex-direction:column}
.menu__item{overflow:hidden;border-bottom:1px solid var(--line)}
.menu__item a{
  display:flex;align-items:baseline;gap:18px;padding:clamp(7px,1.5svh,12px) 0;
  font-family:'Clash Display',sans-serif;font-weight:600;
  font-size:clamp(1.6rem,min(10vw,4.6svh),4rem);letter-spacing:-.04em;line-height:1.05;
  transform:translateY(110%);transition:transform .3s var(--ease-out),color .3s var(--ease-out);
}
.menu__item a em{font-style:normal;font-family:'Clash Display',sans-serif;font-size:.8rem;font-weight:500;color:var(--accent-hi);letter-spacing:0;min-width:1.6em}
.menu__item a:active{color:var(--accent-hi)}
.is-menu-open .menu__item a{transform:none;transition:transform .9s var(--ease-expo) calc(.18s + var(--i,0) * 55ms)}
.menu__foot{
  display:flex;flex-wrap:wrap;gap:10px 28px;align-items:center;margin-top:28px;
  opacity:0;transform:translateY(12px);transition:opacity .2s var(--ease-out),transform .2s var(--ease-out);
}
.is-menu-open .menu__foot{opacity:1;transform:none;transition:opacity .7s var(--ease-out) .5s,transform .7s var(--ease-expo) .5s}
@media (max-height:620px){
  .menu{padding-bottom:calc(20px + env(safe-area-inset-bottom))}
  .menu__foot{margin-top:16px;gap:6px 28px}
}
.menu__addr{font-size:.85rem;color:var(--text-3)}

/* --- Skip-Link ----------------------------------------------------------- */
.skip{
  position:fixed;top:10px;left:10px;z-index:calc(var(--z-intro) + 1);
  transform:translateY(-160%);background:var(--text);color:var(--bg);
  padding:12px 20px;border-radius:var(--r-sm);font-weight:700;transition:transform .3s var(--ease-out);
}
.skip:focus-visible{transform:none}

/* ==========================================================================
   Wort-Reveal (per JS in Wörter zerlegt)
   ========================================================================== */
.sw{display:inline-block;overflow:hidden;vertical-align:top;padding-bottom:.1em;margin-bottom:-.1em;padding-inline:.02em;margin-inline:-.02em}
.sw__i{display:inline-block;transform:translateY(108%) rotate(4deg);transform-origin:0 100%}
.is-in .sw__i,.sw.is-in .sw__i{
  transform:none;
  transition:transform 1.05s var(--ease-expo) calc(var(--d,0ms) + var(--i,0) * 42ms);
}

/* Allgemeiner Reveal */
[data-reveal]{opacity:0;transform:translateY(28px);transition:opacity .9s var(--ease-out),transform 1.1s var(--ease-expo);transition-delay:var(--d,0ms)}
[data-reveal].is-in{opacity:1;transform:none}
html:not(.js) [data-reveal]{opacity:1;transform:none}

/* Masken-Reveal ohne Opacity — für das Video, das Chrome sonst als
   „unsichtbar“ einstuft und pausiert */
[data-reveal="clip"]{opacity:1;transform:scale(.94);clip-path:inset(10% 8% round var(--r-xl));transition:clip-path 1.3s var(--ease-expo),transform 1.3s var(--ease-expo)}
[data-reveal="clip"].is-in{clip-path:inset(0 round var(--r-xl));transform:none}
/* Nach dem Aufdecken ohne clip-path (siehe main.js, Video) */
[data-reveal="clip"].is-settled{clip-path:none}
html:not(.js) [data-reveal="clip"]{clip-path:none;transform:none}

/* ==========================================================================
   Hero
   ========================================================================== */
.hero{
  position:relative;isolation:isolate;overflow:clip;
  min-height:100svh;display:flex;flex-direction:column;justify-content:flex-end;
  padding:clamp(120px,19vh,210px) 0 clamp(26px,4.4vh,52px);
}
.hero__media{position:absolute;inset:0;z-index:-1;overflow:hidden;background:var(--bg)}
.hero__media::after{content:"";position:absolute;inset:0;background:var(--bg);opacity:var(--dim,0);pointer-events:none}
.hero__img{position:absolute;inset:-8% 0;will-change:transform}
.hero__img picture,.hero__img img{width:100%;height:100%}
.hero__img img{
  object-fit:cover;object-position:58% 42%;
  transform:scale(1.14);filter:saturate(.9) contrast(1.06);
}
.is-ready .hero__img img{transform:scale(1.02);transition:transform 2.6s var(--ease-expo)}
.hero__shade{
  position:absolute;inset:0;
  background:
    radial-gradient(110% 80% at 12% 88%,rgba(11,10,10,.95) 0%,rgba(11,10,10,.7) 38%,rgba(11,10,10,0) 74%),
    linear-gradient(to top,var(--bg) 1%,rgba(11,10,10,.5) 38%,rgba(11,10,10,.5) 72%,rgba(11,10,10,.78) 100%),
    linear-gradient(to right,rgba(11,10,10,.72) 0%,rgba(11,10,10,.1) 62%,rgba(11,10,10,.4) 100%);
}
@media (max-width:999px){
  .hero__shade{
    background:
      linear-gradient(to top,var(--bg) 3%,rgba(11,10,10,.9) 36%,rgba(11,10,10,.55) 70%,rgba(11,10,10,.75) 100%),
      linear-gradient(to right,rgba(11,10,10,.6) 0%,rgba(11,10,10,.3) 100%);
  }
}
.hero__wrap{display:flex;flex-direction:column;align-items:flex-start;will-change:transform}

.hero__status{
  padding:8px 16px 8px 13px;border-radius:999px;
  background:rgba(14,12,12,.5);border:1px solid var(--line-2);
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
  color:var(--text);
}
.hero__title{
  margin-top:clamp(18px,2.4vw,30px);
  font-size:clamp(2.5rem,9.8vw,10.4rem);
  line-height:.86;letter-spacing:-.048em;font-weight:600;
}
.hero__line{display:block;white-space:nowrap}
.hero__title .accent{color:var(--accent)}
.hero__title{--d:60ms}

.hero__foot{
  position:relative;width:100%;
  display:grid;gap:clamp(26px,3vw,40px);
  margin-top:clamp(28px,4vw,54px);padding-top:clamp(24px,3vw,36px);
}
.hero__foot::before{
  content:"";position:absolute;left:0;right:0;top:0;height:1px;background:var(--line-2);
  transform:scaleX(0);transform-origin:left;
}
.is-ready .hero__foot::before{transform:none;transition:transform 1.6s var(--ease-expo) .35s}
@media (min-width:1000px){
  .hero__foot{grid-template-columns:minmax(0,1fr) auto;align-items:end;column-gap:clamp(40px,5vw,90px)}
  .hero__lead{grid-column:1}
  .hero__actions{grid-column:1}
  .facts{grid-column:2;grid-row:1 / span 2;align-self:end}
}
.hero__lead{font-size:clamp(1.02rem,.98rem + .3vw,1.2rem);line-height:1.6;color:var(--text-2);max-width:48ch}
.hero__actions{display:flex;flex-wrap:wrap;gap:12px}

.hero__in{opacity:0;transform:translateY(22px)}
.is-ready .hero__in{
  opacity:1;transform:none;
  transition:opacity 1s var(--ease-out) calc(.35s + var(--o,0) * .09s),transform 1.2s var(--ease-expo) calc(.35s + var(--o,0) * .09s);
}
html:not(.js) .hero__in{opacity:1;transform:none}

/* Kennzahlen — ohne Kästen, nur Typografie und Haarlinien */
.facts{display:grid;grid-template-columns:repeat(4,auto);justify-content:start}
.fact{padding-inline:clamp(14px,2vw,30px);border-left:1px solid var(--line-2);display:flex;flex-direction:column-reverse;gap:4px}
.fact:first-child{padding-left:0;border-left:0}
.fact dd{
  font-family:'Clash Display',sans-serif;font-weight:600;font-size:clamp(1.45rem,2.3vw,2.2rem);
  line-height:1;letter-spacing:-.03em;display:flex;align-items:flex-start;gap:4px;white-space:nowrap;
}
.fact__star{width:.42em;height:.42em;color:var(--accent-hi);margin-top:.08em}
.fact dt{font-size:.78rem;font-weight:500;color:var(--text-3)}

.hero__cue{
  position:absolute;right:var(--gutter);bottom:clamp(26px,4.4vh,52px);
  width:1px;height:64px;background:var(--line-2);overflow:hidden;display:none;
}
.hero__cue span{position:absolute;left:0;top:0;width:1px;height:40%;background:var(--text);animation:cue 2.2s var(--ease-io) infinite}
@keyframes cue{0%{transform:translateY(-100%)}100%{transform:translateY(260%)}}
@media (min-width:1000px) and (min-height:760px){.hero__cue{display:block}}

/* ==========================================================================
   Laufband — Tempo und Richtung folgen dem Scrollen
   ========================================================================== */
.marquee{position:relative;overflow:hidden;border-block:1px solid var(--line);padding-block:clamp(18px,2.4vw,30px);background:var(--bg)}
.marquee__drift{width:max-content}
.marquee__track{display:flex;width:max-content}
@media (hover:hover) and (pointer:fine){.marquee__drift{will-change:transform}}
.marquee__group{display:flex;align-items:center;flex:none}
.marquee__item{
  padding-inline:clamp(18px,2.2vw,34px);
  font-family:'Clash Display',sans-serif;font-weight:600;
  font-size:clamp(1.7rem,4.2vw,3.7rem);letter-spacing:-.035em;line-height:1.1;white-space:nowrap;
}
.marquee__item--o{color:transparent;-webkit-text-stroke:1.2px rgba(244,240,234,.38)}
.marquee__sep{width:clamp(18px,2vw,28px);height:clamp(18px,2vw,28px);color:var(--accent);flex:none}
html:not(.js) .marquee__track{animation:none}

/* ==========================================================================
   Große Abschnittsnummer im Hintergrund — füllt sich beim Scrollen rot
   ========================================================================== */
.secnum{
  position:absolute;top:clamp(20px,5vw,80px);right:calc(var(--gutter) * -0.4);z-index:0;pointer-events:none;
  font-family:'Clash Display',sans-serif;font-weight:700;
  font-size:clamp(13rem,36vw,36rem);line-height:.8;letter-spacing:-.07em;
}
.secnum__o{display:block;color:transparent;-webkit-text-stroke:1px rgba(244,240,234,.075)}
.secnum__f{position:absolute;inset:0;overflow:hidden;will-change:transform}
.secnum__f > span{
  display:block;will-change:transform;
  background:linear-gradient(180deg,rgba(213,31,43,.26),rgba(213,31,43,.06));
  -webkit-background-clip:text;background-clip:text;color:transparent;
}

/* ==========================================================================
   01 · Schnitte — vier Bilder nebeneinander (Tablet: 2 × 2), auf dem Handy wischbar
   ========================================================================== */
.cuts__row{display:grid;gap:clamp(14px,2vw,28px)}
.cut{
  aspect-ratio:4/5;border-radius:var(--r-md);overflow:hidden;background:var(--surface-2);
  box-shadow:0 30px 60px -34px rgba(4,2,2,.95),0 0 0 1px rgba(244,240,234,.1);
}
.cut picture,.cut img{width:100%;height:100%}
.cut img{object-fit:cover;filter:saturate(.92) contrast(1.04)}
@media (min-width:820px){
  .cuts__row{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (min-width:1100px){
  .cuts__row{grid-template-columns:repeat(4,minmax(0,1fr));align-items:start}
  .cut:nth-child(even){margin-top:clamp(36px,4.4vw,72px)}
}
@media (max-width:819px){
  .cuts__row{
    grid-auto-flow:column;grid-auto-columns:72%;
    overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;
    margin-inline:calc(var(--gutter) * -1);padding-inline:var(--gutter);scroll-padding-inline:var(--gutter);
    scrollbar-width:none;
  }
  .cuts__row::-webkit-scrollbar{display:none}
  .cut{scroll-snap-align:start}
  /* In der Wischreihe sofort sichtbar — sonst blenden die Bilder erst beim Wischen ein */
  .cuts__row [data-reveal]{opacity:1;transform:none}
}

/* ==========================================================================
   Leitsatz — Worte leuchten mit dem Scrollen auf
   ========================================================================== */
.quote{padding-block:var(--sec) calc(var(--sec) * .6)}
.quote__text{
  font-family:'Clash Display',sans-serif;font-weight:500;
  font-size:clamp(2.1rem,5.8vw,6rem);line-height:1.02;letter-spacing:-.04em;
  max-width:17ch;text-wrap:balance;
}
.quote__text p{text-indent:-.36em}
.qw{color:var(--text-4);transition:color .5s var(--ease-out)}
.qw.is-lit{color:var(--text)}
.quote__hi .qw.is-lit{color:var(--accent-hi)}
html:not(.js) .quote__text{color:var(--text)}
.quote__by{display:flex;align-items:center;gap:14px;margin-top:clamp(32px,4vw,52px)}
.quote__by img{width:44px;height:44px}
.quote__by span{display:flex;flex-direction:column;font-size:.9rem;color:var(--text-3);line-height:1.35}
.quote__by b{color:var(--text);font-weight:600}
.quote__sub{margin-top:clamp(28px,3vw,40px);max-width:44ch;color:var(--text-2);margin-left:auto}
@media (min-width:960px){.quote__sub{margin-top:-4.2em}}

/* ==========================================================================
   02 · Handwerk — Video bleibt stehen, Schritte laufen daneben durch
   ========================================================================== */
.craft{--vid-h:min(78svh,760px);position:relative;overflow:clip}
.craft .wrap{position:relative;z-index:1}
.craft__grid{display:grid;gap:clamp(48px,6vw,96px)}
@media (min-width:960px){
  .craft__grid{grid-template-columns:minmax(0,.78fr) minmax(0,1.22fr);align-items:stretch}
  .craft__sticky{position:sticky;top:calc(50svh - var(--vid-h) / 2 + 20px)}
}
.vid{
  position:relative;width:min(100%,calc(var(--vid-h) * 9 / 16));aspect-ratio:9/16;margin-inline:auto;
  border-radius:var(--r-xl);overflow:hidden;background:#000;
  box-shadow:var(--shadow),0 0 0 1px var(--line-2);
}
@media (max-width:959px){.vid{width:min(100%,400px)}}
.vid video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.vid__bar{position:absolute;left:14px;right:14px;top:12px;z-index:2;height:2px;border-radius:2px;background:rgba(255,255,255,.22);overflow:hidden}
.vid__bar i{position:absolute;inset:0;background:#fff;transform-origin:left;transform:scaleX(0)}
.vid__badge{
  position:absolute;top:26px;left:14px;z-index:2;display:inline-flex;align-items:center;gap:8px;
  padding:6px 12px;border-radius:999px;background:rgba(9,8,8,.55);border:1px solid var(--line-2);
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
  font-size:.75rem;font-weight:600;color:var(--text);
}
.vid__badge i{width:6px;height:6px;border-radius:99px;background:var(--accent-hi);animation:blink 1.8s ease-in-out infinite}
@keyframes blink{50%{opacity:.25}}
.vid video{cursor:pointer}
/* Play/Pause — sichtbar, wenn Autoplay blockiert ist oder jemand pausiert hat */
.vid__play{
  position:absolute;left:50%;top:50%;z-index:3;width:78px;height:78px;margin:-39px 0 0 -39px;border-radius:999px;
  display:grid;place-items:center;color:#fff;
  background:rgba(9,8,8,.58);border:1px solid rgba(255,255,255,.3);box-shadow:0 18px 40px -16px rgba(0,0,0,.8);
  opacity:0;transform:scale(.82);pointer-events:none;
  transition:opacity .3s var(--ease-out),transform .5s var(--ease-expo),background-color .3s var(--ease-out);
}
.vid__play svg{width:26px;height:26px}
.vid__i-play{margin-left:3px}
.vid__i-pause{display:none}
.vid[data-state="playing"] .vid__i-play{display:none}
.vid[data-state="playing"] .vid__i-pause{display:block}
.vid[data-state="blocked"] .vid__play,
.vid[data-state="paused"] .vid__play,
.vid__play:focus-visible{opacity:1;transform:none;pointer-events:auto}
.vid__play:active{transform:scale(.94)}
.vid[data-state="blocked"] .vid__play{background:var(--accent);border-color:transparent;animation:vid-nudge 2.4s var(--ease-out) .4s infinite}
@keyframes vid-nudge{0%,60%,100%{box-shadow:0 0 0 0 rgba(213,31,43,.55)}30%{box-shadow:0 0 0 16px rgba(213,31,43,0)}}

.steps{position:relative;margin-top:clamp(40px,5vw,72px);padding-left:clamp(34px,4vw,56px)}
.steps__rail{position:absolute;left:5px;top:10px;bottom:10px;width:1px;background:var(--line-2)}
.steps__rail i{position:absolute;inset:0;background:var(--accent);transform-origin:top;transform:scaleY(0)}
.step{position:relative;padding-block:clamp(26px,3.4vw,44px);opacity:.34;transition:opacity .6s var(--ease-out)}
.step.is-active{opacity:1}
.step::before{
  content:"";position:absolute;left:calc(clamp(34px,4vw,56px) * -1);top:calc(clamp(26px,3.4vw,44px) + .45em);
  width:11px;height:11px;border-radius:99px;background:var(--bg);border:1px solid var(--line-3);
  transition:background-color .4s var(--ease-out),border-color .4s var(--ease-out),transform .5s var(--ease-expo);
}
.step.is-active::before{background:var(--accent);border-color:var(--accent);transform:scale(1.25)}
@media (min-width:960px){.step{min-height:34svh}}
.step__n{font-family:'Clash Display',sans-serif;font-weight:500;font-size:.85rem;color:var(--accent-hi)}
.step__t{margin-top:10px;font-size:clamp(1.45rem,2.3vw,2.15rem);letter-spacing:-.03em;line-height:1.08;max-width:22ch}
.step__p{margin-top:12px;color:var(--text-2);max-width:46ch}
html:not(.js) .step{opacity:1}

/* ==========================================================================
   04 · Preise — Umschalter „Beim Chef“ / „Ohne Termin“
   ========================================================================== */
.prices__grid{display:grid;gap:clamp(48px,6vw,96px)}
@media (min-width:1000px){
  .prices__grid{grid-template-columns:minmax(0,.92fr) minmax(0,1.08fr);align-items:start}
  .prices__side{align-self:stretch}
  .prices__sticky{position:sticky;top:120px}
}
.prices .h2{margin-top:22px;font-size:clamp(2.3rem,3.8vw,4rem);max-width:none}

/* Segment-Schalter: die helle Fläche ist eine zweite, beschnittene Kopie der
   Beschriftung — so wechselt die Schriftfarbe exakt an der Kante. */
.seg{
  position:relative;display:inline-grid;grid-template-columns:1fr 1fr;margin-top:clamp(30px,3.4vw,44px);
  padding:5px;border-radius:999px;background:var(--surface);border:1px solid var(--line);box-shadow:var(--hi);
}
.seg__btn{
  position:relative;padding:12px clamp(18px,2vw,28px);border-radius:999px;
  font-weight:600;font-size:.97rem;color:var(--text-2);white-space:nowrap;
  transition:color .3s var(--ease-out);
}
.seg__btn:hover{color:var(--text)}
.seg__ink{
  position:absolute;inset:5px;display:grid;grid-template-columns:1fr 1fr;border-radius:999px;pointer-events:none;
  background:var(--text);color:var(--bg);
  clip-path:inset(0 50% 0 0 round 999px);
  transition:clip-path .55s var(--ease-drawer);
}
.seg__ink span{display:grid;place-items:center;font-weight:600;font-size:.97rem;white-space:nowrap}
[data-mode="walk"] .seg__ink{clip-path:inset(0 0 0 50% round 999px)}
html:not(.js) .seg__btn[aria-pressed="true"]{background:var(--text);color:var(--bg)}

.modeinfo{display:grid;margin-top:clamp(26px,3vw,36px)}
.modeinfo__panel{
  grid-area:1/1;display:flex;flex-direction:column;align-items:flex-start;gap:14px;
  transition:opacity .45s var(--ease-out),transform .6s var(--ease-expo),filter .45s var(--ease-out);
}
.modeinfo__k{font-size:.85rem;font-weight:600;color:var(--text)}
.modeinfo__v{color:var(--text-2);max-width:40ch;margin-bottom:10px}
[data-mode="chef"] [data-when="walk"],
[data-mode="walk"] [data-when="chef"]{opacity:0;transform:translateY(10px);filter:blur(4px);pointer-events:none}

/* Preistafel mit Punkt-Führungslinien */
.board{display:flex;flex-direction:column}
.pgroup{display:grid;grid-template-rows:1fr;transition:grid-template-rows .6s var(--ease-drawer),opacity .4s var(--ease-out)}
.pgroup__in{min-height:0;overflow:hidden;padding-bottom:clamp(34px,4vw,52px)}
.pgroup.is-collapsed{grid-template-rows:0fr;opacity:0}
.pgroup.is-collapsed .pgroup__in{padding-bottom:0;transition:padding .6s var(--ease-drawer)}
.pgroup__in{transition:padding .6s var(--ease-drawer)}
.pgroup__t{
  display:flex;align-items:baseline;flex-wrap:wrap;gap:6px 14px;margin-bottom:6px;
  font-size:clamp(1.15rem,1.4vw,1.35rem);letter-spacing:-.02em;color:var(--text);
}
.pgroup__t small{font-family:'Satoshi',sans-serif;font-size:.8rem;font-weight:500;letter-spacing:0;color:var(--text-3)}

.prow{display:grid;grid-template-rows:1fr;transition:grid-template-rows .6s var(--ease-drawer),opacity .35s var(--ease-out)}
.prow.is-collapsed{grid-template-rows:0fr;opacity:0}
.prow__in{
  min-height:0;overflow:hidden;
  display:grid;grid-template-columns:auto minmax(28px,1fr) auto;column-gap:14px;align-items:baseline;
  padding-block:15px;border-top:1px solid var(--line);
  transition:padding .6s var(--ease-drawer),border-color .4s var(--ease-out);
}
.prow.is-collapsed .prow__in{padding-block:0;border-top-color:transparent}
.prow__n{font-weight:500;font-size:1.04rem;letter-spacing:-.01em;line-height:1.35;white-space:nowrap}
.prow__x{display:inline-block;max-width:7.5em;overflow:hidden;vertical-align:bottom;white-space:nowrap;transition:max-width .55s var(--ease-drawer),opacity .35s var(--ease-out)}
[data-mode="walk"] .prow__x{max-width:0;opacity:0}
.prow__lead{
  height:2px;align-self:baseline;transform:translateY(-.3em);
  background-image:radial-gradient(circle,var(--text-4) 1px,transparent 1.3px);
  background-size:7px 2px;background-repeat:repeat-x;background-position:left center;
}
.prow__p{
  font-family:'Clash Display',sans-serif;font-weight:600;font-size:clamp(1.2rem,1.5vw,1.45rem);
  letter-spacing:-.02em;white-space:nowrap;text-align:right;font-variant-numeric:tabular-nums;
  transition:color .3s var(--ease-out);
}
.prow__p small{font-family:'Satoshi',sans-serif;font-size:.62em;font-weight:500;color:var(--text-3);letter-spacing:0}
.prow__m{grid-column:1 / -1;font-size:.82rem;color:var(--text-3);margin-top:1px}
@media (hover:hover){.prow__in:hover .prow__p{color:var(--accent-hi)}}
@media (max-width:520px){
  .prow__n{white-space:normal}
  .prow__in{grid-template-columns:minmax(0,auto) minmax(18px,1fr) auto}
}

/* Buchbare Zeilen (nur „Beim Chef“): ganze Zeile ist der Button, rechts der Hinweis */
.prow--book .prow__in{position:relative}
.prow__hit{position:absolute;inset:0;z-index:1;cursor:pointer;-webkit-tap-highlight-color:transparent}
.prow__hit:focus-visible{outline:2px solid var(--accent-hi);outline-offset:-2px;border-radius:8px}
.prow--book .prow__m{display:flex;align-items:center;justify-content:space-between;gap:12px}
.prow__go{
  display:inline-flex;align-items:center;gap:6px;flex:none;
  font-size:.78rem;font-weight:700;letter-spacing:.01em;color:var(--text-2);
  transition:color .3s var(--ease-out),opacity .35s var(--ease-out);
}
.prow__go svg{width:11px;height:11px;transition:transform .45s var(--ease-expo)}
@media (hover:hover){
  .prow__go{color:var(--text-3)}
  .prow--book .prow__in:hover .prow__go{color:var(--accent-hi)}
  .prow--book .prow__in:hover .prow__go svg{transform:rotate(45deg)}
}
.prow--book .prow__in:active .prow__p{color:var(--accent-hi)}
[data-mode="walk"] .prow__go{opacity:0}
[data-mode="walk"] .prow__hit{display:none}

/* Rollende Ziffern */
.roll{display:inline-flex;height:1.1em;line-height:1.1;overflow:hidden;vertical-align:-.16em}
.roll__d{display:block;height:1.1em;overflow:hidden}
.roll__col{display:flex;flex-direction:column;transition:transform .9s var(--ease-expo);transition-delay:var(--rd,0ms)}
.roll__col span{display:block;height:1.1em;text-align:center}

/* ==========================================================================
   05 · Salon — horizontale Galerie
   ========================================================================== */
.gallery{position:relative;padding-top:var(--sec)}
.gallery__pin{position:relative}
.gallery__intro{padding-inline:var(--gutter);max-width:var(--maxw);margin-inline:auto}
.gallery__intro .h2{margin-top:22px;max-width:11ch}
@media (min-width:900px){.js .is-pinned .gallery__intro .h2{font-size:clamp(2.4rem,3.9vw,4.2rem)}}
.gallery__text{margin-top:22px;color:var(--text-2);max-width:40ch}
.gallery__hint{display:none}

/* Mobil & Tablet: natives Wischen mit Einrasten */
.gallery__rail{
  display:flex;gap:14px;margin-top:40px;
  overflow-x:auto;scroll-snap-type:x mandatory;scroll-padding-inline:var(--gutter);
  padding:0 var(--gutter) 6px;scrollbar-width:none;overscroll-behavior-x:contain;
}
.gallery__rail::-webkit-scrollbar{display:none}
.shot{flex:none;scroll-snap-align:start;display:flex;flex-direction:column;gap:14px}
.shot__btn{display:block;border-radius:var(--r-lg);cursor:zoom-in;-webkit-tap-highlight-color:transparent;transition:transform .2s var(--ease-out)}
.shot__btn:active{transform:scale(.985)}
.shot__frame{display:block;position:relative;overflow:hidden;border-radius:var(--r-lg);width:78vw;max-width:520px;aspect-ratio:4/5;background:var(--surface-2)}
.shot__frame picture{position:absolute;inset:0}
.shot__frame img{position:absolute;top:0;left:-40px;width:calc(100% + 80px);max-width:none;height:100%;object-fit:cover;will-change:transform;filter:saturate(.92) contrast(1.04)}
.shot__cap{display:flex;gap:12px;font-size:.88rem;color:var(--text-2)}
.shot__cap .num{color:var(--accent-hi);font-family:'Clash Display',sans-serif;font-weight:500;font-size:.8rem;padding-top:.15em}
.gallery__end{
  flex:none;scroll-snap-align:start;width:70vw;max-width:360px;
  display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:22px;
  padding:28px;border-radius:var(--r-lg);border:1px solid var(--line);background:var(--surface);
}
.gallery__end-k{font-family:'Clash Display',sans-serif;font-weight:600;font-size:clamp(1.4rem,2vw,1.8rem);letter-spacing:-.03em;line-height:1.1}
.gallery__progress{display:none}
.gallery__meter{display:flex;align-items:center;gap:16px;margin:22px var(--gutter) 0}
.gallery__count{font-family:'Clash Display',sans-serif;font-weight:500;font-size:.85rem;color:var(--text-2);min-width:4.2em}
.gallery__meter-bar{position:relative;flex:1;height:2px;border-radius:2px;background:var(--line);overflow:hidden}
.gallery__meter-bar i{position:absolute;inset:0;background:var(--text-2);transform-origin:left;transform:scaleX(.25);transition:transform .25s var(--ease-out)}
.js .is-pinned .gallery__meter{display:none}

/* Desktop: Abschnitt wird gepinnt, vertikales Scrollen schiebt die Galerie seitwärts */
@media (min-width:900px){
  .js .gallery.is-pinned{padding-top:0}
  .js .is-pinned .gallery__pin{position:sticky;top:0;height:100svh;overflow:hidden;display:flex;align-items:center}
  .js .is-pinned .gallery__track{display:flex;align-items:center;width:max-content;will-change:transform}
  .js .is-pinned .gallery__intro{flex:none;width:clamp(360px,34vw,520px);max-width:none;margin:0;padding-right:clamp(40px,5vw,90px)}
  .js .is-pinned .gallery__hint{display:flex;align-items:center;gap:12px;margin-top:40px;font-size:.85rem;color:var(--text-3)}
  .js .is-pinned .gallery__hint span{position:relative;width:48px;height:1px;background:var(--line-2);overflow:hidden}
  .js .is-pinned .gallery__hint span::after{content:"";position:absolute;inset:0;background:var(--text-2);animation:hint 2s var(--ease-io) infinite}
  .js .is-pinned .gallery__rail{margin:0;padding:0 var(--gutter) 0 0;overflow:visible;gap:clamp(28px,3.4vw,56px);align-items:center}
  .js .is-pinned .shot__frame{width:auto;max-width:none;height:var(--h);aspect-ratio:var(--ar)}
  .js .is-pinned .shot--a{--h:62svh;--ar:4/3}
  .js .is-pinned .shot--b{--h:50svh;--ar:4/5;align-self:flex-start;margin-top:12svh}
  .js .is-pinned .shot--c{--h:56svh;--ar:1/1;align-self:flex-end;margin-bottom:10svh}
  .js .is-pinned .shot--d{--h:66svh;--ar:3/2}
  .js .is-pinned .gallery__end{width:340px;background:none;border:0;padding:0 0 0 20px}
  .js .is-pinned .gallery__progress{display:block;position:absolute;left:var(--gutter);right:var(--gutter);bottom:clamp(24px,4svh,40px);height:1px;background:var(--line)}
  .js .is-pinned .gallery__progress i{position:absolute;inset:0;background:var(--text-2);transform-origin:left;transform:scaleX(0)}
}
@keyframes hint{0%{transform:translateX(-100%)}100%{transform:translateX(100%)}}

/* Lightbox */
.lb{
  position:fixed;inset:0;width:100%;height:100%;max-width:none;max-height:none;margin:0;padding:clamp(16px,4vw,48px);
  border:0;background:transparent;color:var(--text);overflow:hidden;
}
.lb[open]{display:grid;place-items:center}
.lb::backdrop{background:rgba(8,7,7,.9);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}
.lb__fig{display:grid;gap:16px;justify-items:start;max-width:min(100%,1500px)}
.lb__img{max-width:100%;max-height:calc(100svh - 150px);width:auto;height:auto;border-radius:var(--r-md);object-fit:contain}
.lb__cap{display:flex;gap:12px;font-size:.92rem;color:var(--text-2)}
.lb__cap .num{color:var(--accent-hi)}
.lb__btn{
  position:absolute;width:52px;height:52px;border-radius:999px;display:grid;place-items:center;
  background:rgba(244,240,234,.08);border:1px solid var(--line-2);color:var(--text);
  transition:background-color .25s var(--ease-out),transform .18s var(--ease-out);
}
.lb__btn:hover{background:rgba(244,240,234,.16)}
.lb__btn:active{transform:scale(.94)}
.lb__btn svg{width:18px;height:18px}
.lb__close{top:clamp(14px,3vw,30px);right:clamp(14px,3vw,30px)}
.lb__prev,.lb__next{top:50%;margin-top:-26px}
.lb__prev{left:clamp(10px,2vw,30px)}
.lb__prev svg{transform:scaleX(-1)}
.lb__next{right:clamp(10px,2vw,30px)}
@media (max-width:700px){.lb__prev,.lb__next{top:auto;bottom:22px;margin:0}}
.lb__img.is-swapping{opacity:0;filter:blur(6px);transform:scale(.985)}
.lb__img{transition:opacity .28s var(--ease-out),filter .28s var(--ease-out),transform .35s var(--ease-out)}
/* Fallback ohne View Transitions */
.lb:not(.lb--vt)[open] .lb__fig{animation:lb-in .45s var(--ease-expo)}
@keyframes lb-in{from{opacity:0;transform:scale(.96)}}
html.lb-open{overflow:hidden}

/* ==========================================================================
   Buchungsfenster — Planitys Modul (buchen.html) im iframe.
   Schwebende Karte in der Mitte, oben und unten Luft. Nur Einblenden,
   kein Hereinfahren: bleibt eine Animation hängen, steht die Karte trotzdem richtig.
   ========================================================================== */
html.bk-open{overflow:hidden}
.bk{
  position:fixed;inset:0;width:100%;height:100%;max-width:none;max-height:none;
  margin:0;padding:0;border:0;background:transparent;color:var(--text);overflow:hidden;
}
.bk[open]{
  display:flex;align-items:center;justify-content:center;
  padding:clamp(16px,5vh,56px) 16px;
  padding-top:max(clamp(16px,5vh,56px),env(safe-area-inset-top));
  padding-bottom:max(clamp(16px,5vh,56px),env(safe-area-inset-bottom));
}
.bk::backdrop{background:rgba(8,7,7,.66);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}
.bk__panel{
  position:relative;display:flex;flex-direction:column;
  width:min(560px,100%);height:min(900px,100%);
  background:var(--bg-2);border:1px solid var(--line-2);border-radius:var(--r-lg);overflow:hidden;
  box-shadow:0 50px 120px -40px rgba(0,0,0,.9),var(--hi);
}
.bk__head{
  display:flex;align-items:flex-start;justify-content:space-between;gap:18px;
  padding:clamp(20px,2.4vw,28px) clamp(20px,2.4vw,30px) 18px;border-bottom:1px solid var(--line);
}
.bk__hl{min-width:0}
.bk__k{font-size:.8rem;font-weight:600;color:var(--accent-hi)}
.bk__t{margin-top:4px;font-size:clamp(1.5rem,2.4vw,1.9rem);letter-spacing:-.03em;line-height:1.05}
.bk__meta{margin-top:6px;font-size:.9rem;color:var(--text-2)}
.bk__x{
  width:44px;height:44px;flex:none;display:grid;place-items:center;border-radius:999px;
  background:rgba(244,240,234,.06);border:1px solid var(--line-2);color:var(--text);
  transition:background-color .3s var(--ease-out),transform .18s var(--ease-out);
}
.bk__x:hover{background:rgba(244,240,234,.12)}
.bk__x:active{transform:scale(.94)}
.bk__x svg{width:16px;height:16px}
.bk__body{position:relative;flex:1;min-height:0;display:flex;flex-direction:column}
.bk__frame{flex:1;width:100%;min-height:0;border:0;background:#f4f0ea;color-scheme:light}
.bk__frame[hidden]{display:none}
.bk__consent{
  display:flex;flex-direction:column;align-items:flex-start;gap:16px;
  padding:clamp(28px,4vw,44px) clamp(20px,2.4vw,30px);
}
.bk__consent[hidden]{display:none}
.bk__badge{
  display:inline-flex;align-items:center;gap:8px;padding:6px 12px;border-radius:999px;
  background:rgba(95,211,138,.1);border:1px solid rgba(95,211,138,.28);
  font-size:.78rem;font-weight:700;letter-spacing:.02em;color:var(--open);
}
.bk__dot{width:7px;height:7px;border-radius:99px;background:var(--open);box-shadow:0 0 0 0 rgba(95,211,138,.5);animation:bk-pulse 2.2s var(--ease-out) infinite}
.bk__ck{font-family:'Clash Display',sans-serif;font-weight:600;font-size:clamp(1.35rem,2vw,1.6rem);letter-spacing:-.025em;line-height:1.12;max-width:18ch}
.bk__cv{color:var(--text-2);font-size:.95rem;max-width:44ch;margin-bottom:8px}
.bk__cv a{color:var(--text);text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--line-3)}
.bk__alt{font-size:.88rem;font-weight:600;color:var(--text-3);text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--line-2);transition:color .3s var(--ease-out)}
.bk__alt:hover{color:var(--text-2)}

.bk[open] .bk__panel{animation:bk-in .45s var(--ease-out) both}
.bk[open]::backdrop{animation:bk-fade .4s var(--ease-out) both}
.bk.is-closing .bk__panel{animation:bk-out .22s var(--ease-out) both}
.bk.is-closing::backdrop{animation:bk-fade-out .22s var(--ease-out) both}
@keyframes bk-in{from{opacity:0;transform:translate3d(0,14px,0) scale(.985)}}
@keyframes bk-out{to{opacity:0;transform:translate3d(0,8px,0) scale(.985)}}
@keyframes bk-fade{from{opacity:0}}
@keyframes bk-fade-out{to{opacity:0}}
@keyframes bk-pulse{70%{box-shadow:0 0 0 7px rgba(95,211,138,0)}100%{box-shadow:0 0 0 0 rgba(95,211,138,0)}}

@media (max-width:640px){
  .bk[open]{padding:max(12px,env(safe-area-inset-top)) 10px max(12px,env(safe-area-inset-bottom))}
  .bk__panel{border-radius:22px}
}
@media (prefers-reduced-motion:reduce){
  .bk[open] .bk__panel,.bk.is-closing .bk__panel{animation:bk-fade .2s linear both}
  .bk__dot{animation:none}
}

/* Morph zwischen Vorschaubild und Lightbox */
::view-transition-group(lb-img){animation-duration:.6s;animation-timing-function:var(--ease-drawer)}
::view-transition-old(lb-img),::view-transition-new(lb-img){height:100%;object-fit:cover;overflow:clip}
::view-transition-old(root),::view-transition-new(root){animation-duration:.4s}

/* Cursor-Plakette über der Galerie (nur Maus) */
.cursor{position:fixed;left:0;top:0;z-index:var(--z-cursor);pointer-events:none;will-change:transform}
.cursor span{
  display:grid;place-items:center;width:88px;height:88px;margin:-44px 0 0 -44px;border-radius:999px;
  background:var(--accent);color:#fff;font-size:.8rem;font-weight:700;letter-spacing:.01em;
  opacity:0;transform:scale(.4);transition:opacity .25s var(--ease-out),transform .4s var(--ease-expo);
}
.cursor.is-on span{opacity:1;transform:none}
@media (hover:hover) and (pointer:fine){.has-cursor [data-cursor]{cursor:none}}

/* ==========================================================================
   03 · Kundschaft — vier Fotokarten nebeneinander; Neigung, Folienschimmer und Glanz
   folgen der Maus (main.js). Auf Touch-Geräten ein einmaliger Glanz, siehe unten.
   ========================================================================== */
.guests .shead .h2{max-width:none}
.guests__row{display:grid;gap:clamp(14px,2vw,28px)}
.guest{--mx:50%;--my:50%;--glow:0;perspective:1100px}
.guest figure{
  position:relative;aspect-ratio:4/5;border-radius:var(--r-md);overflow:hidden;isolation:isolate;
  background:var(--surface-2);
  box-shadow:0 30px 60px -34px rgba(4,2,2,.95),0 0 0 1px rgba(244,240,234,.1);
  transform-style:preserve-3d;will-change:transform;
}
.guest picture,.guest img{width:100%;height:100%}
.guest img{object-fit:cover;filter:saturate(.9) contrast(1.05)}
.guest figure::after{
  content:"";position:absolute;inset:0;z-index:1;pointer-events:none;
  background:linear-gradient(to top,rgba(9,8,8,.94) 0%,rgba(9,8,8,.4) 30%,rgba(9,8,8,0) 54%);
}
.guest__foil{
  position:absolute;inset:0;z-index:2;pointer-events:none;
  mix-blend-mode:color-dodge;opacity:calc(var(--glow) * .5);
  background:
    repeating-linear-gradient(118deg,
      rgba(255,40,80,0) 0%,rgba(255,60,90,.34) 6%,rgba(255,210,90,.3) 12%,
      rgba(80,255,190,.28) 18%,rgba(80,150,255,.34) 24%,rgba(210,90,255,.3) 30%,rgba(255,40,80,0) 36%);
  background-size:260% 260%;
  background-position:var(--mx) var(--my);
  -webkit-mask-image:radial-gradient(90% 70% at var(--mx) var(--my),#000 10%,rgba(0,0,0,.25) 70%);
          mask-image:radial-gradient(90% 70% at var(--mx) var(--my),#000 10%,rgba(0,0,0,.25) 70%);
}
.guest__glare{
  position:absolute;inset:0;z-index:3;pointer-events:none;mix-blend-mode:overlay;opacity:var(--glow);
  background:radial-gradient(farthest-corner circle at var(--mx) var(--my),rgba(255,255,255,.62) 0%,rgba(255,255,255,.14) 24%,rgba(0,0,0,.3) 88%);
}
.guest figcaption{
  position:absolute;left:0;right:0;bottom:0;z-index:4;
  display:flex;flex-direction:column;gap:5px;padding:clamp(14px,1.6vw,24px);transform:translateZ(30px);
}
.guest figcaption span{font-size:.78rem;font-weight:500;color:var(--text-2)}
.guest figcaption b{
  font-family:'Clash Display',sans-serif;font-weight:600;
  font-size:clamp(1.05rem,1.7vw,1.6rem);letter-spacing:-.03em;line-height:1.05;
}
@media (min-width:820px){
  .guests__row{grid-template-columns:repeat(4,minmax(0,1fr));align-items:start}
}
@media (max-width:819px){
  .guests__row{
    grid-auto-flow:column;grid-auto-columns:70%;
    overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;
    margin-inline:calc(var(--gutter) * -1);padding-inline:var(--gutter);scroll-padding-inline:var(--gutter);
    scrollbar-width:none;
  }
  .guests__row::-webkit-scrollbar{display:none}
  .guest{scroll-snap-align:start}
  .guest figcaption b{font-size:1.3rem}
  .guests__row [data-reveal]{opacity:1;transform:none}
}

/* ==========================================================================
   06 · Der Chef
   ========================================================================== */
.chef{position:relative;overflow:clip}
.chef__grid{display:grid;gap:clamp(56px,7vw,110px);align-items:center}
@media (min-width:960px){.chef__grid{grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr)}}
.chef__text{display:flex;flex-direction:column;align-items:flex-start;gap:24px}
.chef__text .h2{margin-block:0 6px}

/* Stempel auf der Ecke der Bewertungskarte, dreht sich mit dem Scrollen */
.badge{
  position:absolute;top:clamp(-72px,-5vw,-54px);right:clamp(-34px,-2vw,-14px);z-index:2;
  width:clamp(118px,11vw,156px);aspect-ratio:1;border-radius:50%;pointer-events:none;
  background:var(--bg);border:1px solid var(--line-2);box-shadow:0 18px 40px -18px rgba(0,0,0,.9);
}
.badge__ring{position:absolute;inset:0;width:100%;height:100%;will-change:transform}
.badge__ring text{fill:var(--text-2);font-family:'Satoshi',sans-serif;font-weight:700;font-size:13.4px;letter-spacing:.14em}
.badge__logo{position:absolute;inset:27%;width:46%;height:46%;opacity:.95}
@media (max-width:559px){.badge{top:-58px;right:-6px;width:108px}}

.score{position:relative;margin-top:40px;padding:clamp(26px,3vw,42px);border-radius:var(--r-xl);background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow),var(--hi)}
.score__head{display:flex;align-items:flex-end;gap:clamp(18px,2.4vw,30px);flex-wrap:wrap}
.score__n{font-family:'Clash Display',sans-serif;font-weight:600;font-size:clamp(5rem,11vw,9.4rem);line-height:.78;letter-spacing:-.06em}
.score__stars{display:flex;gap:5px;color:var(--accent-hi)}
.score__stars svg{width:24px;height:24px;opacity:0;transform:scale(.5) rotate(-30deg)}
.score.is-in .score__stars svg{opacity:1;transform:none;transition:opacity .4s var(--ease-out),transform .7s cubic-bezier(.34,1.56,.64,1)}
.score.is-in .score__stars svg:nth-child(1){transition-delay:.35s}
.score.is-in .score__stars svg:nth-child(2){transition-delay:.43s}
.score.is-in .score__stars svg:nth-child(3){transition-delay:.51s}
.score.is-in .score__stars svg:nth-child(4){transition-delay:.59s}
.score.is-in .score__stars svg:nth-child(5){transition-delay:.67s}
.score__src{margin-top:10px;font-size:.88rem;color:var(--text-3)}
.rbars{margin-top:clamp(30px,3.4vw,44px);display:grid;gap:2px}
.rbar{display:grid;grid-template-columns:6.5em minmax(0,1fr) auto;align-items:center;gap:18px;padding-block:13px;border-top:1px solid var(--line)}
.rbar__l{font-size:.95rem;color:var(--text-2)}
.rbar__t{position:relative;height:3px;border-radius:3px;background:var(--line);overflow:hidden}
.rbar__t i{position:absolute;inset:0;border-radius:inherit;background:linear-gradient(90deg,var(--accent),var(--accent-hi));transform-origin:left;transform:scaleX(0)}
.score.is-in .rbar__t i{transform:none;transition:transform 1.4s var(--ease-expo)}
.score.is-in .rbar:nth-child(2) .rbar__t i{transition-delay:.08s}
.score.is-in .rbar:nth-child(3) .rbar__t i{transition-delay:.16s}
.score.is-in .rbar:nth-child(4) .rbar__t i{transition-delay:.24s}
.rbar__v{font-family:'Clash Display',sans-serif;font-weight:600;font-size:1.05rem}
html:not(.js) .score__stars svg{opacity:1;transform:none}
html:not(.js) .rbar__t i{transform:none}

/* ==========================================================================
   07 · Termin & Kontakt
   ========================================================================== */
.book{position:relative;overflow:clip;border-top:1px solid var(--line)}
.book .wrap{position:relative;z-index:1}
.book::before{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(60% 50% at 78% 12%,rgba(213,31,43,.1),rgba(213,31,43,0) 70%);
}

/* Wabenlicht */
.hexes{
  position:absolute;top:clamp(-120px,-6vw,-40px);right:clamp(-180px,-8vw,-40px);z-index:0;
  width:min(64vw,760px);height:auto;pointer-events:none;overflow:visible;
  -webkit-mask-image:radial-gradient(70% 70% at 62% 36%,#000 34%,transparent 80%);
          mask-image:radial-gradient(70% 70% at 62% 36%,#000 34%,transparent 80%);
}
.hexes path{stroke:#fff;stroke-width:3.2;stroke-linejoin:round;opacity:.05}
.hexes__glow{filter:blur(7px)}
.hexes__glow path{stroke-width:7}
.hexes.is-on path{animation:hex-on 1.5s linear forwards;animation-delay:var(--dl,0s)}
.hexes.is-on .hexes__glow path{animation-name:hex-glow}
@keyframes hex-on{0%{opacity:.05}6%{opacity:.85}10%{opacity:.08}16%{opacity:.7}20%{opacity:.14}34%,100%{opacity:.3}}
@keyframes hex-glow{0%{opacity:0}6%{opacity:.5}10%{opacity:0}16%{opacity:.4}20%{opacity:0}34%,100%{opacity:.16}}
@media (max-width:759px){.hexes{width:118vw;right:-40vw;top:0;opacity:.7}}

.book__grid{display:grid;gap:clamp(40px,5vw,72px)}
@media (min-width:1000px){.book__grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start}}
.book__cta{display:flex;flex-direction:column;align-items:flex-start;gap:20px}
.book__note{color:var(--text-3);font-size:.92rem;max-width:44ch}

.contacts{margin-top:clamp(36px,4vw,56px);border-top:1px solid var(--line)}
.contact{
  display:grid;grid-template-columns:42px 6em minmax(0,1fr) 16px;align-items:center;gap:16px;
  padding:18px 4px;border-bottom:1px solid var(--line);
  transition:background-color .3s var(--ease-out),padding .5s var(--ease-expo);
}
.contacts li:last-child .contact{border-bottom:0}
.contact__ico{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;background:rgba(244,240,234,.05);border:1px solid var(--line);color:var(--accent-hi)}
.contact__ico svg{width:16px;height:16px}
.contact__k{font-size:.85rem;color:var(--text-3)}
.contact__v{font-weight:600;line-height:1.4;overflow-wrap:anywhere}
.contact__go{width:14px;height:14px;color:var(--text-3);transition:transform .45s var(--ease-expo),color .3s var(--ease-out)}
@media (hover:hover){
  .contact:hover{padding-left:12px}
  .contact:hover .contact__go{transform:translate(2px,-2px);color:var(--text)}
}
@media (max-width:560px){
  .contact{grid-template-columns:42px minmax(0,1fr) 14px;grid-template-areas:"i k g" "i v g";row-gap:0;column-gap:14px}
  .contact__ico{grid-area:i}
  .contact__k{grid-area:k}
  .contact__v{grid-area:v}
  .contact__go{grid-area:g}
}

/* Öffnungszeiten als Zeitleiste */
.week{
  position:relative;padding:clamp(22px,2.8vw,38px);border-radius:var(--r-xl);
  background:rgba(21,19,19,.82);border:1px solid var(--line);box-shadow:var(--shadow),var(--hi);
  -webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);
}
.week__head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 20px;margin-bottom:clamp(20px,2.4vw,30px)}
.week__t{font-size:clamp(1.3rem,1.8vw,1.6rem);letter-spacing:-.025em}
.week__body{position:relative;--start:8;--span:12;--cols:6.6em minmax(0,1fr) 7.6em}
.week__axis,.wrow,.week__now{display:grid;grid-template-columns:var(--cols);column-gap:16px;padding-inline:12px}
.week__axis{position:relative;height:22px}
.week__axis span{
  grid-column:2;grid-row:1;justify-self:start;
  margin-left:calc((var(--h) - var(--start)) / var(--span) * 100%);transform:translateX(-50%);
  font-size:.72rem;color:var(--text-3);font-variant-numeric:tabular-nums;
}
.week__rows{display:grid;gap:2px}
.wrow{align-items:center;padding-block:11px;border-radius:12px;font-size:.93rem;transition:background-color .3s var(--ease-out)}
.wrow--today{background:rgba(244,240,234,.055)}
.wrow__d{font-weight:600}
.wrow--today .wrow__d{color:var(--text)}
.wrow__track{position:relative;height:8px;border-radius:99px;background:rgba(244,240,234,.045)}
.wrow__track i{
  position:absolute;top:0;bottom:0;border-radius:99px;background:var(--line-3);
  left:calc((var(--from) - var(--start)) / var(--span) * 100%);
  width:calc((var(--to) - var(--from)) / var(--span) * 100%);
  transform:scaleX(0);transform-origin:left;
}
.week.is-in .wrow__track i{transform:none;transition:transform 1.2s var(--ease-expo) calc(.2s + var(--r,0) * 60ms)}
.wrow--today .wrow__track i{background:linear-gradient(90deg,var(--accent),var(--accent-hi))}
.wrow__t{color:var(--text-2);text-align:right;font-size:.88rem}
.wrow--closed .wrow__d,.wrow--closed .wrow__t{color:var(--text-3)}
html:not(.js) .wrow__track i{transform:none}

.week__now{position:absolute;left:0;right:0;top:22px;bottom:0;pointer-events:none;opacity:0;transition:opacity .6s var(--ease-out) 1.2s}
.week.is-in .week__now.is-set{opacity:1}
.week__now::before{content:"";grid-column:2;grid-row:1;justify-self:start;width:1px;height:100%;margin-left:var(--now,0%);background:var(--text);box-shadow:0 0 12px rgba(244,240,234,.5)}
.week__now span{
  grid-column:2;grid-row:1;justify-self:start;align-self:start;margin-left:var(--now,0%);
  transform:translate(-50%,-100%);margin-top:-6px;
  padding:3px 8px;border-radius:6px;background:var(--text);color:var(--bg);
  font-size:.7rem;font-weight:700;white-space:nowrap;
}
@media (max-width:560px){
  .week__body{--cols:5.2em minmax(0,1fr) auto}
  .wrow,.week__axis,.week__now{column-gap:10px;padding-inline:8px}
  .wrow{font-size:.86rem}
  .wrow__t{font-size:.8rem}
}

.planity-mount:empty{display:none}

/* ==========================================================================
   Footer
   ========================================================================== */
.foot{position:relative;overflow:clip;border-top:1px solid var(--line);padding-top:clamp(70px,9vw,130px)}
.foot__grid{display:grid;gap:clamp(34px,4vw,56px)}
@media (min-width:820px){.foot__grid{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr) minmax(0,1fr)}}
.foot__intro{display:flex;flex-direction:column;gap:24px}
.foot__claim{font-family:'Clash Display',sans-serif;font-weight:500;font-size:clamp(1.3rem,2vw,1.75rem);letter-spacing:-.025em;line-height:1.2;max-width:22ch}
.foot__h{font-family:'Satoshi',sans-serif;font-size:.85rem;font-weight:500;letter-spacing:0;color:var(--text-3);margin-bottom:16px}
.foot__links{display:flex;flex-direction:column;gap:10px}
.foot__links a{color:var(--text-2);width:fit-content;transition:color .3s var(--ease-out),transform .45s var(--ease-expo)}
.foot__links a:hover{color:var(--text);transform:translateX(4px)}
.socials{display:flex;gap:10px}
.social{
  width:46px;height:46px;border-radius:14px;display:grid;place-items:center;
  background:rgba(244,240,234,.05);border:1px solid var(--line);color:var(--text-2);
  transition:background-color .3s var(--ease-out),color .3s var(--ease-out),transform .45s var(--ease-expo),border-color .3s var(--ease-out);
}
.social:hover{background:var(--accent);border-color:transparent;color:#fff;transform:translateY(-3px)}
.social:active{transform:scale(.95)}
.social svg{width:19px;height:19px}

.foot__mark{
  margin-top:clamp(50px,7vw,100px);
  font-family:'Clash Display',sans-serif;font-weight:700;
  font-size:clamp(7rem,36vw,40rem);line-height:.8;letter-spacing:-.07em;
  text-align:center;white-space:nowrap;user-select:none;
}
/* Unten Platz für die Cedille des Ç — sie gehört zum Namen */
.foot__mark .ch,
html:not(.js) .foot__mark{
  display:inline-block;padding-bottom:.2em;margin-bottom:-.04em;
  background:linear-gradient(180deg,rgba(244,240,234,.92) 0%,rgba(244,240,234,.3) 58%,rgba(244,240,234,.1) 100%);
  -webkit-background-clip:text;background-clip:text;color:transparent;
}
.foot__mark .ch{transform:translateY(55%);opacity:0}
.foot__mark.is-in .ch{transform:none;opacity:1;transition:transform 1.5s var(--ease-expo) calc(var(--i) * 90ms),opacity 1s var(--ease-out) calc(var(--i) * 90ms)}

.foot__bar{
  position:relative;z-index:1;
  display:flex;flex-wrap:wrap;gap:12px 26px;align-items:center;justify-content:space-between;
  padding-block:24px calc(24px + env(safe-area-inset-bottom));border-top:1px solid var(--line);
  font-size:.84rem;color:var(--text-3);
}
.foot__bar nav{display:flex;flex-wrap:wrap;gap:10px 22px}
.foot__bar a:hover{color:var(--text)}
/* Ganz unten: Hinweis auf die Agentur — der Link bewusst blau, damit er als Link erkennbar ist */
.foot__bar:has(+ .foot__credit){padding-bottom:20px}
.foot__credit{
  position:relative;z-index:1;
  padding:16px 0 calc(22px + env(safe-area-inset-bottom));border-top:1px solid var(--line);
  font-size:.8rem;color:var(--text-3);text-align:center;
}
.foot__credit a{
  color:#5aa9ff;font-weight:600;
  text-decoration:underline;text-decoration-color:rgba(90,169,255,.45);text-underline-offset:3px;
  transition:color .3s var(--ease-out),text-decoration-color .3s var(--ease-out);
}
.foot__credit a:hover{color:#8cc3ff;text-decoration-color:currentColor}
.totop{width:44px;height:44px;border-radius:999px;display:grid;place-items:center;border:1px solid var(--line-2);color:var(--text-2);transition:transform .45s var(--ease-expo),color .3s,border-color .3s}
.totop:hover{transform:translateY(-3px);color:var(--text);border-color:var(--line-3)}
.totop svg{width:16px;height:16px}

/* ==========================================================================
   Mobile Buchungsleiste
   ========================================================================== */
.mbar{
  position:fixed;left:12px;right:12px;bottom:calc(12px + env(safe-area-inset-bottom));z-index:var(--z-mbar);
  display:flex;gap:8px;padding:7px;border-radius:999px;
  background:rgba(18,16,16,.84);border:1px solid var(--line-2);box-shadow:0 20px 50px -18px rgba(0,0,0,.9),var(--hi);
  -webkit-backdrop-filter:blur(18px) saturate(150%);backdrop-filter:blur(18px) saturate(150%);
  transform:translateY(calc(100% + 40px));transition:transform .55s var(--ease-drawer);
}
.mbar.is-on{transform:none}
.is-menu-open .mbar{transform:translateY(calc(100% + 40px))}
.mbar__book{flex:1;justify-content:space-between;padding-block:7px}
.mbar__call{width:50px;height:50px;flex:none;border-radius:999px;display:grid;place-items:center;background:rgba(244,240,234,.08);border:1px solid var(--line-2);transition:transform .18s var(--ease-out)}
.mbar__call:active{transform:scale(.94)}
.mbar__call svg{width:18px;height:18px}
@media (min-width:900px){.mbar{display:none}}
html:not(.js) .mbar{display:none}

/* ==========================================================================
   Unterseiten (Impressum / Datenschutz / 404)
   ========================================================================== */
.page{padding-top:clamp(150px,20vh,230px);padding-bottom:var(--sec)}
.prose{max-width:72ch}
.prose h2{font-size:clamp(1.35rem,2.2vw,1.85rem);letter-spacing:-.024em;margin-top:52px;margin-bottom:14px}
.prose h3{font-size:1.05rem;margin-top:30px;margin-bottom:8px}
.prose p,.prose li{color:var(--text-2);font-size:.98rem}
.prose p + p{margin-top:14px}
.prose ul{margin-top:12px;display:flex;flex-direction:column;gap:9px}
.prose li{position:relative;padding-left:20px}
.prose li::before{content:"";position:absolute;left:0;top:.8em;width:8px;height:1px;background:var(--accent)}
.prose a:not(.tlink){color:var(--text);text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--accent-line)}
.prose a:not(.tlink):hover{text-decoration-color:var(--accent)}
.prose address{font-style:normal;color:var(--text-2)}
.page + .foot,.e404 + .foot{padding-top:0}

.e404{min-height:100svh;display:grid;place-items:center;text-align:center;padding:var(--gutter)}
.e404__n{
  font-family:'Clash Display',sans-serif;font-weight:700;
  font-size:clamp(8rem,30vw,22rem);line-height:.8;letter-spacing:-.07em;
  color:transparent;-webkit-text-stroke:1px var(--line-3);
}
.e404__n b{color:var(--accent);-webkit-text-stroke:0;font-weight:700}

/* ==========================================================================
   Seitenwechsel zwischen Startseite und Unterseiten (View Transitions)
   ========================================================================== */
@view-transition{navigation:auto;types:page}
html:active-view-transition-type(page)::view-transition-old(root){animation:vt-out .32s var(--ease-out) both}
html:active-view-transition-type(page)::view-transition-new(root){animation:vt-in .7s var(--ease-expo) both}
@keyframes vt-out{to{opacity:0;transform:translateY(-10px)}}
@keyframes vt-in{from{opacity:0;transform:translateY(18px)}}

/* ==========================================================================
   Mobil — die meisten Besucher kommen übers Handy
   ========================================================================== */
@media (max-width:760px){
  :root{--sec:clamp(84px,22vw,112px)}
  .shead .h2{max-width:none}
  /* Hero-Headline füllt die Breite exakt — auch auf 320–360-px-Handys ohne Abschneiden */
  .hero__title{font-size:calc((100vw - 2 * var(--gutter)) / 8.15)}
  .hero{padding-top:clamp(110px,16vh,150px)}
  /* Hochformat zeigt nur einen schmalen Streifen des Fotos: auf die Stühle ausrichten */
  .hero__img img{object-position:38% 42%}
  .shead{margin-bottom:clamp(40px,11vw,64px)}
  .tlink{padding-block:7px}
  .foot__links a{padding-block:3px}
}
@media (max-width:560px){
  .hero__actions{display:grid;grid-template-columns:1fr;width:100%}
  .hero__actions .btn{justify-content:space-between}
  .facts{grid-template-columns:repeat(4,auto);justify-content:space-between;width:100%}
  .fact{padding-inline:12px 0}
  .fact dd{font-size:clamp(1.1rem,5.4vw,1.3rem)}
  .fact dt{font-size:.7rem}
}
/* backdrop-filter auf mitscrollenden Flächen kostet auf dem Handy Leistung */
@media (max-width:1000px){
  .btn--ghost,.vid__badge,.hero__status,.week{-webkit-backdrop-filter:none;backdrop-filter:none}
  .btn--ghost{background:rgba(244,240,234,.07)}
  .vid__badge{background:rgba(9,8,8,.78)}
  .hero__status{background:rgba(14,12,12,.78)}
  .week{background:var(--surface)}
}
@media (max-width:760px){.grain{animation:none;opacity:.04}}

/* ==========================================================================
   Touch-Geräte (Handy, Tablet): alles, was beim Wischen ruckeln könnte,
   läuft auf dem Compositor-Thread oder entfällt.
   ========================================================================== */
@media (hover:none),(pointer:coarse){
  /* Vollflächiges Filmkorn mit Blend-Mode kostet bei jedem Scroll-Frame */
  .grain{display:none}
  /* Weichzeichner hinter festen Leisten entfällt — deckende Flächen statt Blur */
  .nav__inner{-webkit-backdrop-filter:none;backdrop-filter:none;background:rgba(16,14,14,.9)}
  .nav.is-stuck .nav__inner{background:rgba(14,12,12,.95)}
  .mbar{-webkit-backdrop-filter:none;backdrop-filter:none;background:rgba(20,18,18,.97)}
  /* Fotokarten: statt Neigung ein einmaliger Glanz beim Erscheinen */
  .guest__foil,.guest__glare{display:none}
  .guest figure::before{
    content:"";position:absolute;inset:-10% -80%;z-index:3;pointer-events:none;
    background:linear-gradient(105deg,rgba(255,255,255,0) 40%,rgba(255,255,255,.2) 47%,rgba(255,215,225,.14) 50%,rgba(170,215,255,.12) 53%,rgba(255,255,255,0) 60%);
    transform:translate3d(-60%,0,0);
  }
  .guest.is-in figure::before{animation:sheen 1.7s var(--ease-out) .45s both}
}
@keyframes sheen{to{transform:translate3d(60%,0,0)}}

/* Parallax auf Touch-Geräten über CSS Scroll-Driven Animations — läuft
   synchron mit dem Wischen statt einen Frame hinterher. Ohne Unterstützung
   bleibt das Bild einfach stehen. */
@media (hover:none),(pointer:coarse){
  @supports (animation-timeline:scroll()){
    .hero__img{animation:hero-par linear both;animation-timeline:scroll(root);animation-range:0 100svh}
    .hero__wrap{animation:hero-out linear both;animation-timeline:scroll(root);animation-range:0 90svh}
  }
}
@keyframes hero-par{to{transform:translate3d(0,18svh,0)}}
@keyframes hero-out{to{transform:translate3d(0,-6svh,0)}}

/* ==========================================================================
   Reduzierte Bewegung: keine Positions-Animationen, Inhalte sofort sichtbar
   ========================================================================== */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.001ms !important;animation-iteration-count:1 !important;transition-duration:.001ms !important;transition-delay:0s !important}
  .grain{animation:none}
  .intro{display:none}
  [data-reveal],.hero__in,.nav{opacity:1 !important;transform:none !important}
  [data-reveal="clip"]{clip-path:none !important}
  .nav{transform:translateX(-50%) !important}
  .nav.is-hidden{opacity:0 !important}
  .sw__i,.foot__mark .ch{transform:none !important;opacity:1 !important}
  .hero__img img{transform:none !important}
  .qw{color:var(--text)}
  .quote__hi .qw{color:var(--accent-hi)}
  .step{opacity:1}
  .score__stars svg,.rbar__t i,.wrow__track i{opacity:1 !important;transform:none !important}
  .hero__img,.hero__wrap{animation:none !important}
  .vid[data-state="blocked"] .vid__play{animation:none}
  @view-transition{navigation:none}
}
