@charset "UTF-8";
/* ==========================================================================
   MZURE Gebäudereinigung — Design System
   Eine Datei, ein Farbsystem, eine Radius-Skala, eine Motion-Sprache.
   ========================================================================== */

/* --------------------------------------------------------------- 1. RESET */
*,*::before,*::after{box-sizing:border-box}
*{margin:0;padding:0}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
img,svg,video{display:block;max-width:100%;height:auto}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
input,select,textarea{font:inherit;color:inherit}
a{color:inherit;text-decoration:none}
ul,ol{list-style:none}
:target{scroll-margin-top:96px}

/* --------------------------------------------------------------- 2. TOKENS */
:root{
  /* Marke: Navy aus dem Logo, Azure aus der Arbeitskleidung. Genau ein Akzent. */
  --navy-900:#0A1B2E;
  --navy-800:#0E2540;
  --navy-700:#143459;
  --navy:#194272;
  --accent:#1268A8;
  --accent-hover:#0E5789;
  --accent-soft:#E8F2FA;

  /* Neutrale Skala, durchgehend kühl (kein Wechsel warm/kalt) */
  --bg:#FFFFFF;
  --bg-alt:#F4F7FA;
  --bg-deep:var(--navy-900);
  --surface:#FFFFFF;

  --ink:#0D1B2A;
  --ink-2:#48596D;
  --ink-3:#5C6D7E;
  --on-deep:#EAF1F8;
  --on-deep-2:#A9BDD2;

  --line:rgba(13,27,42,.11);
  --line-strong:rgba(13,27,42,.18);
  --line-deep:rgba(255,255,255,.14);

  /* Radius: Buttons = pill, Karten = lg, Felder = md. Keine Ausnahmen. */
  --r-sm:8px;
  --r-md:12px;
  --r-lg:18px;
  --r-xl:26px;
  --r-pill:999px;

  /* Schatten, in den Markenton getönt */
  --sh-1:0 1px 2px rgba(10,27,46,.05),0 6px 18px -8px rgba(10,27,46,.10);
  --sh-2:0 2px 6px rgba(10,27,46,.06),0 20px 48px -20px rgba(10,27,46,.20);
  --sh-3:0 4px 10px rgba(10,27,46,.08),0 40px 90px -32px rgba(10,27,46,.32);

  /* Typo */
  --font:-apple-system,BlinkMacSystemFont,"Segoe UI Variable Display","Segoe UI",system-ui,Roboto,"Helvetica Neue",Arial,sans-serif;
  --fs-display:clamp(2.25rem,1.45rem + 3.3vw,3.7rem);
  --fs-h2:clamp(1.8rem,1.15rem + 2.4vw,2.85rem);
  --fs-h3:clamp(1.12rem,1.04rem + .35vw,1.32rem);
  --fs-lead:clamp(1.06rem,1rem + .38vw,1.22rem);
  --fs-sm:.935rem;
  --fs-xs:.83rem;

  /* Raster und Rhythmus */
  --wrap:1220px;
  --gut:clamp(1.15rem,4vw,2rem);
  --sec:clamp(4.2rem,8vw,7.5rem);

  /* Motion */
  --e-out:cubic-bezier(.22,1,.36,1);
  --e-soft:cubic-bezier(.4,0,.2,1);
  --e-press:cubic-bezier(.34,.9,.4,1);
  --e-expo:cubic-bezier(.16,1,.3,1);
  --t:.42s var(--e-out);

  --success:#146B4B;
  --danger:#9B2C22;
  --whatsapp:#25D366;
}

@media (prefers-color-scheme:dark){
  :root{
    --bg:#0A1622;
    --bg-alt:#0E1E2F;
    --bg-deep:#060F1A;
    --surface:#11223440;

    --ink:#E9F0F7;
    --ink-2:#A7BBCE;
    --ink-3:#8194A8;
    --accent:#4BA3DD;
    --accent-hover:#6FB9EA;
    --accent-soft:#12293D;

    --line:rgba(255,255,255,.12);
    --line-strong:rgba(255,255,255,.20);

    --sh-1:0 1px 2px rgba(0,0,0,.4),0 6px 18px -8px rgba(0,0,0,.5);
    --sh-2:0 2px 6px rgba(0,0,0,.45),0 20px 48px -20px rgba(0,0,0,.6);
    --sh-3:0 4px 10px rgba(0,0,0,.5),0 40px 90px -32px rgba(0,0,0,.7);
    --success:#4FBF95;
    --danger:#E88379;
  }
}

/* ----------------------------------------------------------------- 3. BASE */
body{
  font-family:var(--font);
  font-size:17px;
  line-height:1.62;
  color:var(--ink);
  background:var(--bg);
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  text-rendering:optimizeLegibility;
  overflow-x:hidden;
  letter-spacing:-.011em;
}
h1,h2,h3,h4{line-height:1.08;letter-spacing:-.032em;font-weight:680;text-wrap:balance}
h1{font-size:var(--fs-display)}
h2{font-size:var(--fs-h2)}
h3{font-size:var(--fs-h3);line-height:1.25;letter-spacing:-.02em;font-weight:640}
p{text-wrap:pretty}
strong{font-weight:640;color:var(--ink)}
::selection{background:var(--accent);color:#fff}

.wrap{width:100%;max-width:var(--wrap);margin-inline:auto;padding-inline:var(--gut)}
.wrap-narrow{max-width:780px}
.sec{padding-block:var(--sec)}
.sec-alt{background:var(--bg-alt)}
.sec-deep{background:var(--bg-deep);color:var(--on-deep)}
.sec-deep h2,.sec-deep h3{color:#fff}
.sec-deep p{color:var(--on-deep-2)}

.skip{position:absolute;left:-9999px;top:0;z-index:200;background:var(--accent);color:#fff;padding:.8rem 1.2rem;border-radius:0 0 var(--r-md) 0;font-weight:620}
.skip:focus{left:0}

:where(a,button,input,select,textarea,summary,details):focus-visible{
  outline:3px solid var(--accent);outline-offset:3px;border-radius:var(--r-sm);
}

/* ------------------------------------------------------------ 4. TYPO-HILFEN */
.eyebrow{
  display:inline-block;font-size:var(--fs-xs);font-weight:660;letter-spacing:.14em;
  text-transform:uppercase;color:var(--accent);margin-bottom:.85rem;
}
.lead{font-size:var(--fs-lead);color:var(--ink-2);line-height:1.58;max-width:62ch}
.em{color:var(--accent);position:relative}
.h2-mark{
  background-image:linear-gradient(transparent 62%,color-mix(in srgb,var(--accent) 22%,transparent) 62%);
  background-repeat:no-repeat;background-size:0 100%;
  transition:background-size .9s var(--e-expo) .25s;
}
.rv.on .h2-mark,.rv-load .h2-mark{background-size:100% 100%}
.sec-deep .em{color:#7DC0EE}
.muted{color:var(--ink-3);font-size:var(--fs-sm)}

.sec-head{max-width:66ch;margin-bottom:clamp(2.2rem,4vw,3.4rem)}
.sec-head p{margin-top:1.05rem}

/* --------------------------------------------------------------- 5. BUTTONS */
/* Buttonsprache wie auf restaurant-ali.de, uebersetzt auf das MZURE-Blau:
   Pille, Verlauf, Glanzkante oben, Sheen-Sweep beim Hover, Druckpunkt beim Klick. */
.btn{
  position:relative;overflow:hidden;isolation:isolate;
  display:inline-flex;align-items:center;justify-content:center;gap:.55rem;
  padding:.95rem 1.65rem;border-radius:var(--r-pill);
  font-weight:660;font-size:1rem;letter-spacing:-.014em;white-space:nowrap;
  transition:
    transform .18s var(--e-press),
    box-shadow .34s var(--e-out),
    background-color .34s var(--e-out),
    border-color .34s var(--e-out),
    color .34s var(--e-out);
}
.btn svg{width:1.15em;height:1.15em;flex:none}
.btn:active{transform:scale(.965)}

/* Glanzstreifen, der beim Hover einmal ueber die Flaeche laeuft */
.btn::after{
  content:"";position:absolute;inset:0;z-index:2;pointer-events:none;border-radius:inherit;
  background:linear-gradient(110deg,transparent 42%,rgba(255,255,255,.30) 50%,transparent 58%);
  transform:translateX(-130%);
}
@media (hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){
  .btn:hover::after{transform:translateX(130%);transition:transform .72s var(--e-out)}
}

.btn-primary{
  background:linear-gradient(135deg,#2E8FD4,#1268A8 46%,#0C5386);
  color:#fff;
  box-shadow:0 10px 30px -12px rgba(18,104,168,.62),inset 0 1px 0 rgba(255,255,255,.22);
}
/* Auf dunklem Grund braucht der Verlauf mehr Leuchtkraft, sonst versinkt er. */
@media (prefers-color-scheme:dark){
  .btn-primary{
    background:linear-gradient(135deg,#5CB4EA,#2E8FD4 48%,#15679F);
    color:#04213A;
    box-shadow:0 10px 30px -12px rgba(75,163,221,.5),inset 0 1px 0 rgba(255,255,255,.35);
  }
  .btn-primary:hover{box-shadow:0 18px 44px -14px rgba(75,163,221,.62),inset 0 1px 0 rgba(255,255,255,.4)}
}
.btn-ghost{
  background:transparent;color:var(--ink);
  border:1.5px solid var(--line-strong);
}
.btn-wa{
  background:linear-gradient(135deg,#37E07A,var(--whatsapp) 48%,#12A44B);
  color:#04331A;
  box-shadow:0 10px 30px -12px rgba(37,211,102,.55),inset 0 1px 0 rgba(255,255,255,.32);
}
@media (hover:hover) and (pointer:fine){
  .btn-primary:hover{
    transform:translateY(-2px);
    box-shadow:0 18px 44px -14px rgba(18,104,168,.75),inset 0 1px 0 rgba(255,255,255,.28);
  }
  .btn-ghost:hover{
    transform:translateY(-2px);
    border-color:color-mix(in srgb,var(--accent) 55%,transparent);
    color:var(--accent);background:var(--accent-soft);
  }
  .btn-wa:hover{transform:translateY(-2px);filter:brightness(1.05)}
  .btn:hover:active{transform:scale(.965)}
}
.sec-deep .btn-ghost,.band .btn-ghost{color:#fff;border-color:rgba(255,255,255,.28)}
.sec-deep .btn-ghost:hover,.band .btn-ghost:hover{
  background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.46);color:#fff;
}
.btn-sm{padding:.64rem 1.2rem;font-size:.93rem}
.btn-block{width:100%}

/* Magnetischer Versatz, den die Runtime setzt */
.btn[data-magnetic]{will-change:transform}

.link-arrow{
  display:inline-flex;align-items:center;gap:.42rem;color:var(--accent);
  font-weight:620;font-size:var(--fs-sm);transition:gap .25s var(--e-out),color var(--t);
}
.link-arrow svg{width:1.05em;height:1.05em;transition:transform .25s var(--e-out)}
.link-arrow:hover{gap:.68rem;color:var(--accent-hover)}
.link-arrow:hover svg{transform:translateX(2px)}


/* ------------------------------------------------- 5b. LEUCHT-BUTTON
   Derselbe Aufbau wie der Shiny-CTA auf alis-restaurant-preetz.de,
   uebersetzt auf das MZURE-Blau: rotierender Conic-Ring auf der
   Rahmenflaeche, Punktraster, innerer Schimmer und ein Glimmen beim
   Zeigen. Der Ring steht still und laeuft erst bei Hover oder Fokus.
   Der Inhalt MUSS in einem <span> liegen, sonst fehlt das Glimmen.   */
@property --gradient-angle{syntax:"<angle>";initial-value:0deg;inherits:false}
@property --gradient-angle-offset{syntax:"<angle>";initial-value:0deg;inherits:false}
@property --gradient-percent{syntax:"<percentage>";initial-value:5%;inherits:false}
@property --gradient-shine{syntax:"<color>";initial-value:#fff;inherits:false}

.btn-shine{
  --sh-bg:#12365E;
  --sh-bg-subtle:#1D4A7A;
  --sh-fg:#ffffff;
  --sh-hi:#4BA3DD;
  --sh-hi-subtle:#C8E6F9;
  --sh-anim:gradient-angle linear infinite;
  --sh-dur:3s;
  --sh-shadow:2px;
  --sh-trans:800ms cubic-bezier(.25,1,.5,1);

  isolation:isolate;position:relative;overflow:hidden;cursor:pointer;
  color:var(--sh-fg);
  border:1px solid transparent;
  background:
    linear-gradient(var(--sh-bg),var(--sh-bg)) padding-box,
    conic-gradient(from calc(var(--gradient-angle) - var(--gradient-angle-offset)),
      transparent,
      var(--sh-hi) var(--gradient-percent),
      var(--gradient-shine) calc(var(--gradient-percent) * 2),
      var(--sh-hi) calc(var(--gradient-percent) * 3),
      transparent calc(var(--gradient-percent) * 4)) border-box;
  box-shadow:inset 0 0 0 1px var(--sh-bg-subtle),0 10px 30px -14px rgba(18,54,94,.6);
  transition:var(--sh-trans);
  transition-property:--gradient-angle-offset,--gradient-percent,--gradient-shine,box-shadow;
}
.btn-shine::before,.btn-shine::after,.btn-shine>span::before{
  content:"";pointer-events:none;position:absolute;
  inset-inline-start:50%;inset-block-start:50%;translate:-50% -50%;z-index:-1;
}
.btn-shine:active{translate:0 1px;transform:none}

/* Punktraster, durch den laufenden Winkel maskiert */
.btn-shine::before{
  --size:calc(100% - var(--sh-shadow) * 3);
  --pos:2px;
  --space:calc(var(--pos) * 2);
  width:var(--size);height:var(--size);
  background:radial-gradient(circle at var(--pos) var(--pos),#fff calc(var(--pos)/4),transparent 0) padding-box;
  background-size:var(--space) var(--space);
  background-repeat:space;
  mask-image:conic-gradient(from calc(var(--gradient-angle) + 45deg),#000,transparent 10% 90%,#000);
  border-radius:inherit;opacity:.32;
  transform:none;
}
/* Innerer Schimmer */
.btn-shine::after{
  --sh-anim:shimmerSpin linear infinite;
  width:100%;aspect-ratio:1;
  background:linear-gradient(-50deg,transparent,var(--sh-hi),transparent);
  mask-image:radial-gradient(circle at bottom,transparent 40%,#000);
  opacity:.55;transform:none;
}
.btn-shine>span{position:relative;z-index:1;display:inline-flex;align-items:center;gap:.55rem}
.btn-shine>span::before{
  --size:calc(100% + 1rem);
  width:var(--size);height:var(--size);
  box-shadow:inset 0 -1ex 2rem 4px var(--sh-hi);
  opacity:0;transition:opacity var(--sh-trans);
  animation:calc(var(--sh-dur) * 1.5) shineBreathe linear infinite;
}
.btn-shine,.btn-shine::before,.btn-shine::after{
  animation:var(--sh-anim) var(--sh-dur),var(--sh-anim) calc(var(--sh-dur) / .4) reverse paused;
  animation-composition:add;
}
.btn-shine:is(:hover,:focus-visible){
  --gradient-percent:20%;
  --gradient-angle-offset:95deg;
  --gradient-shine:var(--sh-hi-subtle);
  box-shadow:inset 0 0 0 1px var(--sh-bg-subtle),0 18px 44px -16px rgba(18,54,94,.72);
}
.btn-shine:is(:hover,:focus-visible),
.btn-shine:is(:hover,:focus-visible)::before,
.btn-shine:is(:hover,:focus-visible)::after{animation-play-state:running}
.btn-shine:is(:hover,:focus-visible)>span::before{opacity:1}

@keyframes gradient-angle{to{--gradient-angle:360deg}}
@keyframes shimmerSpin{to{rotate:360deg}}
@keyframes shineBreathe{from,to{scale:1}50%{scale:1.2}}

@media (prefers-color-scheme:dark){
  .btn-shine{--sh-bg:#0F2C4D;--sh-bg-subtle:#1F5286;--sh-hi:#5CB4EA;--sh-hi-subtle:#D5EEFC}
}
@media (prefers-reduced-motion:reduce){
  .btn-shine,.btn-shine::before,.btn-shine::after,.btn-shine>span::before{animation:none}
}

/* ---------------------------------------------------------------- 6. HEADER */
.hdr{
  position:sticky;top:0;z-index:80;
  background:color-mix(in srgb,var(--bg) 86%,transparent);
  backdrop-filter:saturate(180%) blur(18px);
  -webkit-backdrop-filter:saturate(180%) blur(18px);
  border-bottom:1px solid transparent;
  transition:border-color var(--t),box-shadow var(--t),background var(--t);
}
.hdr.is-stuck{border-bottom-color:var(--line);box-shadow:var(--sh-1)}
@supports not (backdrop-filter:blur(1px)){.hdr{background:var(--bg)}}

.hdr-in{display:flex;align-items:center;gap:1.1rem;height:70px;transition:height .4s var(--e-out)}
.hdr.is-stuck .hdr-in{height:60px}
.brand{display:flex;align-items:center;gap:.62rem;flex:none;margin-right:auto}
.brand-mark{width:34px;height:34px;flex:none}
.brand-txt{display:flex;flex-direction:column;line-height:1.02}
.brand-name{font-weight:740;font-size:1.14rem;letter-spacing:-.03em;color:var(--ink)}
.brand-sub{font-size:.6rem;font-weight:600;letter-spacing:.155em;text-transform:uppercase;color:var(--ink-3)}

.nav{display:flex;align-items:center;gap:.15rem}
.nav-item{position:relative}
.nav-link{
  display:flex;align-items:center;gap:.28rem;padding:.55rem .78rem;border-radius:var(--r-pill);
  font-size:.945rem;font-weight:560;color:var(--ink-2);transition:color var(--t),background var(--t);
}
.nav-link:hover,.nav-item:hover>.nav-link,.nav-link[aria-current="page"]{color:var(--ink);background:var(--bg-alt)}
.nav-link[aria-current="page"]{color:var(--accent)}
.nav-link .chev{width:.72em;height:.72em;transition:transform .28s var(--e-out);opacity:.6}
.nav-item:hover .chev{transform:rotate(180deg)}

.drop{
  position:absolute;top:calc(100% + .35rem);left:50%;translate:-50% 0;
  min-width:300px;padding:.55rem;border-radius:var(--r-lg);
  background:var(--bg);border:1px solid var(--line);box-shadow:var(--sh-3);
  opacity:0;visibility:hidden;transform:translateY(-7px);
  transition:opacity .22s var(--e-out),transform .22s var(--e-out),visibility .22s;
}
.nav-item:hover .drop,.nav-item:focus-within .drop{opacity:1;visibility:visible;transform:translateY(0)}
.drop a{
  display:block;padding:.6rem .8rem;border-radius:var(--r-md);
  font-size:.93rem;font-weight:560;color:var(--ink-2);transition:background var(--t),color var(--t);
}
.drop a:hover{background:var(--accent-soft);color:var(--accent)}
.drop a span{display:block;font-size:.79rem;font-weight:440;color:var(--ink-3);margin-top:.08rem}
.drop a:hover span{color:var(--ink-2)}
.drop-2{display:grid;grid-template-columns:1fr 1fr;min-width:520px}

.hdr-cta{display:flex;align-items:center;gap:.5rem;flex:none}
.hdr-tel{
  display:inline-flex;align-items:center;gap:.4rem;padding:.55rem .9rem;border-radius:var(--r-pill);
  font-weight:620;font-size:.93rem;color:var(--ink);transition:background var(--t),color var(--t);
}
.hdr-tel svg{width:1.05em;height:1.05em;color:var(--accent)}
.hdr-tel:hover{background:var(--accent-soft);color:var(--accent)}

.burger{display:none;width:42px;height:42px;border-radius:var(--r-pill);align-items:center;justify-content:center;flex:none}
.burger:hover{background:var(--bg-alt)}
.burger span{display:block;width:19px;height:1.8px;background:var(--ink);border-radius:2px;position:relative;transition:transform .3s var(--e-out),background .2s}
.burger span::before,.burger span::after{content:"";position:absolute;left:0;width:19px;height:1.8px;background:var(--ink);border-radius:2px;transition:transform .3s var(--e-out),top .3s var(--e-out)}
.burger span::before{top:-6px}
.burger span::after{top:6px}
.burger[aria-expanded="true"] span{background:transparent}
.burger[aria-expanded="true"] span::before{top:0;transform:rotate(45deg)}
.burger[aria-expanded="true"] span::after{top:0;transform:rotate(-45deg)}

.mnav{
  display:none;position:fixed;inset:70px 0 0;z-index:79;
  background:var(--bg);overflow-y:auto;padding:1.4rem var(--gut) 3rem;
  animation:mnavIn .3s var(--e-out);
}
.mnav.is-open{display:block}
@keyframes mnavIn{from{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:none}}
.mnav h4{font-size:var(--fs-xs);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);margin:1.5rem 0 .5rem;font-weight:660}
.mnav h4:first-child{margin-top:.4rem}
.mnav a{display:block;padding:.72rem .2rem;font-size:1.06rem;font-weight:560;border-bottom:1px solid var(--line)}
.mnav .mnav-cta{display:grid;gap:.6rem;margin-top:1.9rem}
.mnav .mnav-cta a{border:0;padding:.92rem 1.6rem}

@media (max-width:1080px){
  .nav{display:none}
  .burger{display:flex}
  .hdr-tel span{display:none}
}
@media (max-width:560px){
  .hdr-cta .btn{display:none}
  .brand-sub{display:none}
}

/* ------------------------------------------------------------------ 7. HERO */
.hero{position:relative;padding-block:clamp(2rem,3.4vw,3.1rem) clamp(3rem,6vw,5.5rem);overflow:hidden}
.hero::before{
  content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;
  background:
    radial-gradient(58% 70% at 92% 4%,color-mix(in srgb,var(--accent) 13%,transparent),transparent 62%),
    radial-gradient(46% 58% at 2% 96%,color-mix(in srgb,var(--navy) 9%,transparent),transparent 66%);
}
.hero-grid{display:grid;grid-template-columns:1.06fr .94fr;gap:clamp(2rem,5vw,4.2rem);align-items:center}

.badge{
  display:inline-flex;align-items:center;gap:.5rem;padding:.42rem .95rem .42rem .62rem;
  border-radius:var(--r-pill);background:var(--accent-soft);color:var(--accent);
  font-size:var(--fs-xs);font-weight:640;letter-spacing:-.005em;margin-bottom:1.35rem;
  border:1px solid color-mix(in srgb,var(--accent) 20%,transparent);
}
.badge svg{width:.95rem;height:.95rem}

.hero h1{margin-bottom:1.25rem}
.hero .lead{max-width:52ch}

.hero-usp{display:grid;gap:.58rem;margin:1.6rem 0 1.9rem}
.hero-usp li{display:flex;align-items:flex-start;gap:.62rem;font-size:1.005rem;font-weight:540;color:var(--ink-2)}
.hero-usp svg{width:1.15rem;height:1.15rem;flex:none;color:var(--accent);margin-top:.2rem}

.hero-ctas{display:flex;flex-wrap:wrap;gap:.72rem}

.hero-media{position:relative}
.hero-media::after{
  content:"";position:absolute;inset:0;border-radius:var(--r-xl);pointer-events:none;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.34),inset 0 0 0 1px rgba(13,27,42,.09);
}
@media (prefers-color-scheme:dark){
  .hero-media::after{box-shadow:inset 0 1px 0 rgba(255,255,255,.14),inset 0 0 0 1px rgba(255,255,255,.09)}
}
.hero-img{
  width:100%;border-radius:var(--r-xl);box-shadow:var(--sh-3);
  aspect-ratio:4/5;object-fit:cover;object-position:60% 32%;
}
@media (max-width:900px){.hero-img{aspect-ratio:5/4;object-position:60% 30%}}
.hero-tag{
  position:absolute;left:-18px;bottom:-16px;max-width:262px;z-index:2;
  padding:1rem 1.2rem;border-radius:var(--r-lg);
  background:color-mix(in srgb,var(--bg) 97%,transparent);
  backdrop-filter:blur(18px) saturate(180%);-webkit-backdrop-filter:blur(14px) saturate(180%);
  border:1px solid var(--line);
  box-shadow:var(--sh-3),inset 0 1px 0 rgba(255,255,255,.5);
}
@media (prefers-color-scheme:dark){
  .hero-tag{box-shadow:var(--sh-3),inset 0 1px 0 rgba(255,255,255,.1)}
}
.hero-tag::before{
  content:"";position:absolute;left:1.2rem;top:-1px;width:34px;height:2px;border-radius:2px;
  background:linear-gradient(90deg,var(--accent),transparent);
}
.hero-tag strong{display:block;font-size:.96rem;letter-spacing:-.02em}
.hero-tag span{display:block;font-size:var(--fs-xs);color:var(--ink-2);margin-top:.2rem;line-height:1.5}

@media (max-width:900px){
  .hero-grid{grid-template-columns:1fr;gap:2.4rem}
  .hero-media{max-width:460px;margin-inline:auto;width:100%}
  .hero-tag{left:auto;right:-6px;bottom:-14px}
}
@media (max-width:560px){
  .hero-tag{position:static;max-width:none;margin-top:1rem;box-shadow:var(--sh-1)}
}

/* ------------------------------------------------------- 8. FAKTENLEISTE */
.facts{border-block:1px solid var(--line);background:var(--bg-alt)}
.facts-in{display:grid;grid-template-columns:repeat(4,1fr);gap:0}
.fact{padding:1.9rem 1.5rem;border-left:1px solid var(--line)}
.fact:first-child{border-left:0;padding-left:0}
.fact strong{display:block;font-size:.96rem;font-weight:660;letter-spacing:-.018em;margin-bottom:.34rem;color:var(--ink)}
.fact p{font-size:var(--fs-sm);color:var(--ink-3);line-height:1.5}
@media (max-width:820px){
  .facts-in{grid-template-columns:1fr 1fr}
  .fact{padding:1.4rem 1.2rem;border-top:1px solid var(--line)}
  .fact:nth-child(-n+2){border-top:0}
  .fact:nth-child(odd){border-left:0;padding-left:0}
}
@media (max-width:480px){
  .facts-in{grid-template-columns:1fr}
  .fact{border-left:0;padding-inline:0}
}

/* ---------------------------------------------------------- 9. BENTO-GRID */
.bento{display:grid;grid-template-columns:repeat(6,1fr);gap:clamp(.85rem,1.6vw,1.15rem)}
.card{
  position:relative;display:flex;flex-direction:column;
  padding:1.65rem;border-radius:var(--r-lg);
  background:var(--surface);border:1px solid var(--line);
  transition:transform .35s var(--e-out),box-shadow .35s var(--e-out),border-color .35s var(--e-out);
  overflow:hidden;
}
@media (prefers-color-scheme:dark){.card{background:rgba(255,255,255,.028)}}
.card:hover{transform:translateY(-3px);box-shadow:var(--sh-2);border-color:color-mix(in srgb,var(--accent) 32%,transparent)}
.card h3{margin-bottom:.5rem}
.card p{font-size:var(--fs-sm);color:var(--ink-2);line-height:1.56;flex:1}
.card .link-arrow{margin-top:1.05rem}
.card-ico{
  width:42px;height:42px;border-radius:var(--r-md);display:grid;place-items:center;
  background:var(--accent-soft);color:var(--accent);margin-bottom:1.05rem;flex:none;
}
.card-ico svg{width:21px;height:21px}

/* Zellen: 8 Leistungen, exakt 8 Zellen, bewusst ungleich verteilt */
.b-hero{grid-column:span 3;grid-row:span 2;padding:0;overflow:hidden;min-height:340px}
.b-hero img{width:100%;height:100%;object-fit:cover;position:absolute;inset:0;z-index:0}
.b-hero-body{
  position:relative;z-index:1;margin-top:auto;padding:1.75rem;width:100%;
  background:linear-gradient(to top,rgba(6,15,26,.94) 12%,rgba(6,15,26,.72) 52%,rgba(6,15,26,0));
  color:#fff;
}
.b-hero-body h3,.b-hero-body p{color:#fff}
.b-hero-body p{color:rgba(255,255,255,.82)}
.b-hero .link-arrow{color:#8FCBF2}
.b-hero:hover .link-arrow{color:#B9E0F8}
.b-wide{grid-column:span 3}
.card-tint{
  background:linear-gradient(160deg,var(--accent-soft),color-mix(in srgb,var(--accent-soft) 45%,var(--surface)));
  border-color:color-mix(in srgb,var(--accent) 18%,transparent);
}
@media (prefers-color-scheme:dark){
  .card-tint{background:linear-gradient(160deg,color-mix(in srgb,var(--accent) 15%,transparent),rgba(255,255,255,.03))}
}
.card-tint .card-ico{background:color-mix(in srgb,var(--accent) 16%,transparent)}
.b-third{grid-column:span 2}

@media (max-width:960px){
  .bento{grid-template-columns:repeat(4,1fr)}
  .b-hero{grid-column:span 4;grid-row:auto;min-height:300px}
  .b-wide{grid-column:span 2}
  .b-third{grid-column:span 2}
}
@media (max-width:620px){
  .bento{grid-template-columns:1fr}
  .b-hero,.b-wide,.b-third{grid-column:span 1}
}

/* ------------------------------------------------------------- 10. SCHRITTE */
.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(1.2rem,2.6vw,2.2rem);counter-reset:s}
.step{position:relative;counter-increment:s}
.step::before{
  content:counter(s,decimal-leading-zero);
  display:block;font-size:.82rem;font-weight:700;letter-spacing:.06em;
  color:var(--accent);margin-bottom:.85rem;
}
.step::after{
  content:"";position:absolute;top:.42rem;left:2.1rem;right:-1.4rem;height:1px;
  background:linear-gradient(90deg,var(--line-strong),transparent);
}
.step:last-child::after{display:none}
.step h3{margin-bottom:.45rem}
.step p{font-size:var(--fs-sm);color:var(--ink-2)}
.sec-deep .step::before{color:#7DC0EE}
.sec-deep .step::after{background:linear-gradient(90deg,var(--line-deep),transparent)}
.sec-deep .step p{color:var(--on-deep-2)}
@media (max-width:860px){
  .steps{grid-template-columns:1fr 1fr}
  .step:nth-child(2)::after{display:none}
}
@media (max-width:520px){
  .steps{grid-template-columns:1fr;gap:1.5rem}
  .step::after{display:none}
}

/* ------------------------------------------------------------ 11. STANDORTE */
.geo{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(.85rem,1.6vw,1.15rem)}
.geo-card{
  display:flex;flex-direction:column;padding:1.55rem;border-radius:var(--r-lg);
  background:var(--surface);border:1px solid var(--line);
  transition:transform .35s var(--e-out),box-shadow .35s var(--e-out),border-color .35s var(--e-out);
}
@media (prefers-color-scheme:dark){.geo-card{background:rgba(255,255,255,.028)}}
.geo-card:hover{transform:translateY(-3px);box-shadow:var(--sh-2);border-color:color-mix(in srgb,var(--accent) 32%,transparent)}
.geo-card h3{margin-bottom:.3rem}
.geo-dist{font-size:var(--fs-xs);font-weight:620;color:var(--accent);letter-spacing:-.005em}
.geo-card p{font-size:var(--fs-sm);color:var(--ink-2);margin-top:.7rem;flex:1}
.geo-card .link-arrow{margin-top:1rem}
.geo-more{margin-top:1.8rem;font-size:var(--fs-sm);color:var(--ink-3);max-width:78ch}
.geo-more strong{color:var(--ink-2);font-weight:600}
@media (max-width:900px){.geo{grid-template-columns:1fr 1fr}}
@media (max-width:520px){.geo{grid-template-columns:1fr}}


/* ------------------------------------------------------------ 11b. VIDEOS */
/*  Hochformat aus dem Arbeitsalltag. Die Dateien laden erst beim Klick
    (preload="none"), sichtbar ist bis dahin nur das Vorschaubild.          */
.reels{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(.9rem,2vw,1.4rem)}
.reel{
  position:relative;border-radius:var(--r-lg);overflow:hidden;background:var(--navy-900);
  aspect-ratio:9/16;box-shadow:var(--sh-2);border:1px solid var(--line);
}
.reel video{width:100%;height:100%;object-fit:cover;display:block;background:var(--navy-900)}
.reel figcaption{
  position:absolute;left:0;right:0;bottom:0;padding:1.5rem 1rem .95rem;
  background:linear-gradient(to top,rgba(6,15,26,.92),rgba(6,15,26,0));
  color:#fff;font-size:var(--fs-sm);font-weight:600;letter-spacing:-.015em;
  pointer-events:none;transition:opacity .3s var(--e-out);
}
.reel:has(video[controls]:not([data-idle])) figcaption{opacity:1}
@media (max-width:820px){
  .reels{grid-template-columns:1fr 1fr}
  .reels .reel:nth-child(3){grid-column:span 2;aspect-ratio:16/10}
}
@media (max-width:520px){
  .reels{grid-template-columns:1fr}
  .reels .reel:nth-child(3){grid-column:span 1;aspect-ratio:9/16}
}

/* ---------------------------------------------------------------- 12. SPLIT */
.split{display:grid;grid-template-columns:.95fr 1.05fr;gap:clamp(2rem,5vw,4.4rem);align-items:center}
.split-rev{grid-template-columns:1.05fr .95fr}
.split img{border-radius:var(--r-xl);box-shadow:var(--sh-2);width:100%}
.split-body h2{margin-bottom:1.15rem}
.split-body p+p{margin-top:1rem}
.split-list{display:grid;gap:.72rem;margin-top:1.7rem}
.split-list li{display:flex;gap:.65rem;align-items:flex-start;font-size:var(--fs-sm);color:var(--ink-2)}
.split-list svg{width:1.1rem;height:1.1rem;flex:none;color:var(--accent);margin-top:.24rem}
.sig{margin-top:1.9rem;padding-top:1.4rem;border-top:1px solid var(--line)}
.sig strong{display:block;font-size:1rem;letter-spacing:-.02em}
.sig span{font-size:var(--fs-sm);color:var(--ink-3)}
@media (max-width:880px){
  .split,.split-rev{grid-template-columns:1fr;gap:2.2rem}
  .split-media{order:-1;max-width:520px;margin-inline:auto;width:100%}
}

/* ---------------------------------------------------------------- 13. PREISE */
.ptable{border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;background:var(--surface)}
@media (prefers-color-scheme:dark){.ptable{background:rgba(255,255,255,.028)}}
.prow{
  display:grid;grid-template-columns:1.15fr auto;gap:.4rem 1.6rem;align-items:baseline;
  padding:1.25rem 1.5rem;border-top:1px solid var(--line);
}
.prow:first-child{border-top:0}
.prow strong{font-size:1.02rem;font-weight:620;letter-spacing:-.022em}
.pprice{font-size:1.02rem;font-weight:680;color:var(--accent);white-space:nowrap;letter-spacing:-.024em}
.prow p{grid-column:1/-1;font-size:var(--fs-sm);color:var(--ink-3);line-height:1.52;margin-top:.1rem}
@media (max-width:560px){
  .prow{grid-template-columns:1fr;padding:1.15rem 1.15rem}
  .pprice{grid-row:2}
  .prow p{grid-row:3}
}
.pnote{
  margin-top:1.4rem;padding:1.05rem 1.25rem;border-radius:var(--r-md);
  background:var(--accent-soft);border:1px solid color-mix(in srgb,var(--accent) 18%,transparent);
  font-size:var(--fs-sm);color:var(--ink-2);line-height:1.55;
}
.pnote strong{color:var(--ink)}

.factors{display:grid;grid-template-columns:1fr 1fr;gap:1.6rem 2.4rem;margin-top:2.6rem}
.factor h3{margin-bottom:.4rem}
.factor p{font-size:var(--fs-sm);color:var(--ink-2)}
@media (max-width:700px){.factors{grid-template-columns:1fr;gap:1.5rem}}

/* ------------------------------------------------------------------- 14. FAQ */
.faq{display:grid;gap:.5rem;max-width:860px}
.faq details{
  border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);
  transition:border-color var(--t),box-shadow var(--t);
}
@media (prefers-color-scheme:dark){.faq details{background:rgba(255,255,255,.028)}}
.faq details[open]{border-color:color-mix(in srgb,var(--accent) 30%,transparent);box-shadow:var(--sh-1)}
.faq summary{
  display:flex;align-items:flex-start;justify-content:space-between;gap:1.2rem;
  padding:1.12rem 1.35rem;cursor:pointer;list-style:none;
  font-weight:600;font-size:1.01rem;letter-spacing:-.02em;line-height:1.4;
}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{
  content:"";flex:none;width:.72rem;height:.72rem;margin-top:.35rem;
  border-right:2px solid var(--ink-3);border-bottom:2px solid var(--ink-3);
  transform:rotate(45deg);transition:transform .3s var(--e-out),border-color .3s;
}
.faq details[open] summary::after{transform:rotate(-135deg);border-color:var(--accent)}
.faq summary:hover{color:var(--accent)}
.faq-body{padding:0 1.35rem 1.3rem;font-size:var(--fs-sm);color:var(--ink-2);line-height:1.65;max-width:72ch}

/* -------------------------------------------------------------- 15. KONTAKT */
.contact{display:grid;grid-template-columns:1.08fr .92fr;gap:clamp(2rem,4.5vw,3.6rem);align-items:start}
@media (max-width:920px){.contact{grid-template-columns:1fr}}

.form{display:grid;gap:1.05rem}
.frow{display:grid;grid-template-columns:1fr 1fr;gap:1.05rem}
@media (max-width:560px){.frow{grid-template-columns:1fr}}
.field{display:grid;gap:.4rem}
.field label{font-size:var(--fs-sm);font-weight:600;color:var(--ink);letter-spacing:-.012em}
.field .req{color:var(--accent)}
.field input,.field select,.field textarea{
  width:100%;padding:.82rem 1rem;border-radius:var(--r-md);
  background:var(--bg);border:1.5px solid var(--line-strong);color:var(--ink);
  font-size:1rem;transition:border-color var(--t),box-shadow var(--t),background var(--t);
}
@media (prefers-color-scheme:dark){.field input,.field select,.field textarea{background:rgba(255,255,255,.04)}}
.field input::placeholder,.field textarea::placeholder{color:var(--ink-3);opacity:1}
.field input:hover,.field select:hover,.field textarea:hover{border-color:var(--ink-3)}
.field input:focus,.field select:focus,.field textarea:focus{
  outline:none;border-color:var(--accent);
  box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 16%,transparent);
}
.field textarea{resize:vertical;min-height:120px;line-height:1.55}
.field .hint{font-size:var(--fs-xs);color:var(--ink-3)}
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}

.consent{display:flex;gap:.7rem;align-items:flex-start;font-size:var(--fs-xs);color:var(--ink-3);line-height:1.55}
.consent input{width:1.15rem;height:1.15rem;margin-top:.16rem;flex:none;accent-color:var(--accent)}
.consent a{color:var(--accent);text-decoration:underline;text-underline-offset:2px}

.alert{padding:1rem 1.2rem;border-radius:var(--r-md);font-size:var(--fs-sm);line-height:1.55;display:flex;gap:.7rem;align-items:flex-start}
.alert svg{width:1.2rem;height:1.2rem;flex:none;margin-top:.1rem}
.alert-ok{background:color-mix(in srgb,var(--success) 12%,transparent);color:var(--success);border:1px solid color-mix(in srgb,var(--success) 30%,transparent)}
.alert-err{background:color-mix(in srgb,var(--danger) 10%,transparent);color:var(--danger);border:1px solid color-mix(in srgb,var(--danger) 28%,transparent)}

.cbox{padding:1.6rem;border-radius:var(--r-lg);background:var(--bg-alt);border:1px solid var(--line)}
.cbox+.cbox{margin-top:1rem}
.cbox h3{margin-bottom:.9rem}
.cline{display:flex;gap:.85rem;align-items:flex-start;padding:.62rem 0;border-top:1px solid var(--line)}
.cline:first-of-type{border-top:0;padding-top:0}
.cline svg{width:1.15rem;height:1.15rem;flex:none;color:var(--accent);margin-top:.28rem}
.cline strong{display:block;font-size:.99rem;font-weight:620;letter-spacing:-.02em}
.cline span,.cline a{font-size:var(--fs-sm);color:var(--ink-2);line-height:1.5}
.cline a:hover{color:var(--accent)}

/* ------------------------------------------------------------- 16. CTA-BAND */
.band{background:var(--bg-deep);color:var(--on-deep);border-radius:var(--r-xl);padding:clamp(2.2rem,4.5vw,3.4rem);text-align:center}
.band h2{color:#fff;margin-bottom:.9rem}
.band p{color:var(--on-deep-2);max-width:56ch;margin-inline:auto}
.band-ctas{display:flex;flex-wrap:wrap;gap:.72rem;justify-content:center;margin-top:1.9rem}
.band .btn-ghost{color:#fff;border-color:rgba(255,255,255,.28)}
.band .btn-ghost:hover{background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.45);color:#fff}

/* ---------------------------------------------------------- 17. BREADCRUMBS */
.crumbs{padding-block:1.1rem;border-bottom:1px solid var(--line);font-size:var(--fs-xs)}
.crumbs ol{display:flex;flex-wrap:wrap;gap:.42rem;align-items:center;color:var(--ink-3)}
.crumbs li{display:flex;align-items:center;gap:.42rem}
.crumbs li+li::before{content:"›";color:var(--ink-3);opacity:.6}
.crumbs a:hover{color:var(--accent)}
.crumbs [aria-current]{color:var(--ink-2);font-weight:560}

/* ---------------------------------------------------------- 18. ARTIKELTEXT */
.prose{max-width:70ch;font-size:1.055rem;line-height:1.72}
.prose h2{font-size:clamp(1.42rem,1.1rem + 1.2vw,1.92rem);margin:2.7rem 0 .95rem}
.prose h2:first-child{margin-top:0}
.prose p+p{margin-top:1.05rem}
.prose ul{display:grid;gap:.6rem;margin:1.2rem 0}
.prose ul li{display:flex;gap:.7rem;align-items:flex-start;color:var(--ink-2)}
.prose ul li::before{content:"";flex:none;width:.42rem;height:.42rem;border-radius:50%;background:var(--accent);margin-top:.62rem}
.answer-box{
  padding:1.35rem 1.5rem;border-radius:var(--r-lg);background:var(--accent-soft);
  border:1px solid color-mix(in srgb,var(--accent) 20%,transparent);margin-bottom:2.2rem;
}
.answer-box strong{display:block;font-size:var(--fs-xs);letter-spacing:.13em;text-transform:uppercase;color:var(--accent);margin-bottom:.5rem;font-weight:680}
.answer-box p{font-size:1.03rem;line-height:1.6;color:var(--ink)}
.meta-line{display:flex;flex-wrap:wrap;gap:1.2rem;font-size:var(--fs-xs);color:var(--ink-3);margin-top:1.2rem}
.meta-line b{font-weight:600;color:var(--ink-2)}

.alist{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(.85rem,1.6vw,1.15rem)}
@media (max-width:900px){.alist{grid-template-columns:1fr 1fr}}
@media (max-width:600px){.alist{grid-template-columns:1fr}}

/* --------------------------------------------------------------- 19. FOOTER */
.ftr{background:var(--bg-deep);color:var(--on-deep-2);padding-block:clamp(3rem,5vw,4.4rem) 2rem;font-size:var(--fs-sm)}
.ftr-grid{display:grid;grid-template-columns:1.5fr 1fr 1fr 1.15fr;gap:2.4rem}
.ftr h4{font-size:var(--fs-xs);letter-spacing:.13em;text-transform:uppercase;color:#fff;margin-bottom:1rem;font-weight:660}
.ftr a{color:var(--on-deep-2);transition:color var(--t)}
.ftr a:hover{color:#fff}
.ftr li{margin-bottom:.52rem}
.ftr .brand-name{color:#fff}
.ftr .brand-sub{color:var(--on-deep-2)}
.ftr-about{max-width:34ch;margin-top:1rem;line-height:1.6}
.ftr-nap{margin-top:1.2rem;line-height:1.72;font-style:normal}
.ftr-nap a{font-weight:600;color:#fff}
.ftr-bot{
  display:flex;flex-wrap:wrap;gap:.7rem 1.6rem;justify-content:space-between;align-items:center;
  margin-top:3rem;padding-top:1.5rem;border-top:1px solid var(--line-deep);font-size:var(--fs-xs);
}
.ftr-bot nav{display:flex;flex-wrap:wrap;gap:1.3rem}
@media (max-width:880px){.ftr-grid{grid-template-columns:1fr 1fr;gap:2rem}}
@media (max-width:520px){.ftr-grid{grid-template-columns:1fr}}

/* ------------------------------------------------------- 20. MOBILE CTA-BAR */
.cta-bar{
  position:fixed;left:0;right:0;bottom:0;z-index:70;display:none;
  gap:.55rem;padding:.6rem .7rem calc(.6rem + env(safe-area-inset-bottom));
  background:color-mix(in srgb,var(--bg) 92%,transparent);
  backdrop-filter:blur(16px) saturate(180%);-webkit-backdrop-filter:blur(16px) saturate(180%);
  border-top:1px solid var(--line);
  transform:translateY(102%);transition:transform .35s var(--e-out);
}
.cta-bar.is-on{transform:none}
.cta-bar .btn{flex:1;padding:.82rem .9rem;font-size:.95rem}
@media (max-width:760px){
  .cta-bar{display:flex}
  body{padding-bottom:74px}
}

/* ------------------------------------------------------- 21. BEWEGUNGSEBENE */
/*  Regie: Stripe als Referenz. Gemessen, professionell, nie verspielt.
    Bewegt werden ausschliesslich transform, opacity, filter und clip-path.
    Alles laeuft nur, wenn Skripte aktiv sind und Bewegung erwuenscht ist.     */

/* --- 21.1 Scroll-Reveal fuer Abschnitte --------------------------------- */
@media (scripting: enabled){
  .rv{opacity:0;transform:translateY(20px);transition:opacity .8s var(--e-expo),transform .8s var(--e-expo)}
  .rv.on{opacity:1;transform:none}
}

/* --- 21.2 Hero: laeuft per CSS, damit das LCP-Bild skriptfrei bleibt ----- */
@keyframes riseIn{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
.rv-load{animation:riseIn .85s var(--e-expo) both}
.rv-load.d1{animation-delay:.09s}
.rv-load.d2{animation-delay:.18s}

/* --- 21.3 Wort-fuer-Wort-Reveal der Ueberschrift ------------------------ */
/*  Die Runtime zerlegt [data-words] in <span class="wd">. Ohne Skript bleibt
    die Zeile unveraendert stehen, es geht also kein Text verloren.          */
.wd{display:inline-block;will-change:transform,opacity,filter}
@media (scripting: enabled) and (prefers-reduced-motion: no-preference){
  [data-words] .wd{
    opacity:0;transform:translateY(.38em);filter:blur(6px);
    animation:wordIn .82s var(--e-expo) forwards;
    animation-delay:calc(var(--i) * 58ms + var(--base, 0ms));
  }
}
@keyframes wordIn{to{opacity:1;transform:none;filter:blur(0)}}

/* --- 21.4 Bilder: Wischblende statt hartem Einblenden ------------------- */
/*  Die Blende arbeitet mit clip-path auf dem Rahmen und scale auf dem Bild.
    Die Parallaxe weiter unten nutzt die eigenstaendige translate-Eigenschaft,
    deshalb kommen sich beide Effekte auf demselben Bild nicht ins Gehege.    */
.wipe picture{display:block;border-radius:inherit;overflow:hidden}
@media (scripting: enabled) and (prefers-reduced-motion: no-preference){
  .wipe picture{clip-path:inset(0 0 100% 0);transition:clip-path 1.1s var(--e-expo)}
  .wipe.on picture{clip-path:inset(0 0 0 0)}
  .wipe img{transform:scale(1.07);transform-origin:50% 55%;transition:transform 1.4s var(--e-expo)}
  .wipe.on img{transform:scale(1)}
}

/* --- 21.5 Lesefortschritt im Kopfbereich -------------------------------- */
.hdr-progress{
  position:absolute;left:0;bottom:-1px;height:2px;width:100%;
  transform:scaleX(var(--p,0));transform-origin:0 50%;
  background:linear-gradient(90deg,var(--accent),#4BA3DD);
  opacity:0;transition:opacity .3s var(--e-out);pointer-events:none;
}
.hdr.is-stuck .hdr-progress{opacity:1}

/* --- 21.6 Zahlen, die beim Erscheinen hochzaehlen ----------------------- */
.fact-num{
  display:block;font-size:clamp(2.1rem,1.3rem + 2.4vw,2.9rem);font-weight:700;
  letter-spacing:-.04em;line-height:1;color:var(--accent);
  font-variant-numeric:tabular-nums;margin-bottom:.42rem;
}
.fact-num sub{font-size:.42em;font-weight:640;letter-spacing:-.01em;
  color:var(--ink-3);vertical-align:baseline;margin-left:.22em}

/* --- 21.7 Karten: Hebung plus wandernder Lichtrand ---------------------- */
@media (hover:hover) and (pointer:fine){
  .card,.geo-card{transition:transform .42s var(--e-expo),box-shadow .42s var(--e-expo),border-color .42s var(--e-out)}
  .card:hover,.geo-card:hover{transform:translateY(-4px)}
  .card::before{
    content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;
    background:radial-gradient(320px circle at var(--mx,50%) var(--my,0%),
      color-mix(in srgb,var(--accent) 13%,transparent),transparent 62%);
    opacity:0;transition:opacity .38s var(--e-out);z-index:0;
  }
  .card:hover::before{opacity:1}
  .card>*{position:relative;z-index:1}
  .b-hero::before{display:none}
}

/* --- 21.8 FAQ: Hoehe ueber grid-template-rows statt height -------------- */
.faq details{overflow:hidden}
.faq-body{
  display:grid;grid-template-rows:0fr;
  transition:grid-template-rows .42s var(--e-expo),opacity .32s var(--e-out);
  opacity:0;padding:0 1.35rem;
}
.faq details[open] .faq-body{grid-template-rows:1fr;opacity:1;padding-bottom:1.3rem}
.faq-body>p{overflow:hidden;min-height:0}

/* --- 21.9 Scrollgebundene Effekte, komplett ohne JavaScript -------------- */
/*  Scroll-Driven Animations laufen im Compositor. Browser ohne Unterstuetzung
    zeigen die Seite unveraendert, es geht also nichts verloren.              */
@supports (animation-timeline: scroll()){
  @media (prefers-reduced-motion: no-preference){
    @keyframes progressGrow{from{transform:scaleX(0)}to{transform:scaleX(1)}}
    .hdr-progress{animation:progressGrow linear both;animation-timeline:scroll(root block)}

    @keyframes parallaxDrift{from{translate:0 -1.8%}to{translate:0 1.8%}}
    .parallax img{
      animation:parallaxDrift linear both;
      animation-timeline:view();
      animation-range:entry 0% exit 100%;
    }
  }
}

/* --- 21.10 Weniger Bewegung, wenn gewuenscht --------------------------- */
@media (prefers-reduced-motion:reduce){
  .rv{opacity:1;transform:none;transition:none}
  .rv-load{animation:none}
  .wd{opacity:1!important;transform:none!important;filter:none!important;animation:none!important}
  .img-wipe{clip-path:none!important;transform:none!important}
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
}

/* --------------------------------------------------------------- 22. PRINT */
@media print{
  .hdr,.cta-bar,.mnav,.band,.hero::before{display:none!important}
  body{padding:0;font-size:11pt;color:#000;background:#fff}
  .rv{opacity:1;transform:none}
  a[href^="http"]::after{content:" (" attr(href) ")";font-size:9pt;color:#555}
  .sec{padding-block:1.2rem}
}
