/* =========================================================
   PHILOSOPHIE — SCROLL MONSTER
========================================================= */
:root{
    --header-height:120px;
}

[class$="__sticky"]{
    padding-top:var(--header-height);
    box-sizing:border-box;
}

:root {
  --philo-paper: #ece9e1;
  --philo-paper-deep: #d8d2c6;
  --philo-ink: #111111;
  --philo-dark: #0c0c0c;
  --philo-white: #f4f1ea;
  --philo-red: #d93b27;

    --paper: #F4F1EA;
    --white: #FFFFFF;

    --anthracite-100: #3A3A3A;
    --anthracite-200: #2A2A2A;
    --anthracite-300: #1E1E1E;
    --anthracite-400: #141414;
    --black: #090909;

    --accent: rgb(224, 32, 38);

  --philo-container: 1560px;
  --philo-gutter: clamp(20px, 5vw, 88px);

  --scroll-progress: 0;
  --scroll-velocity: 0;
  --scroll-direction: 1;
  --mouse-x: 0;
  --mouse-y: 0;
}

html {
  scroll-behavior: auto;
}

body {
  overflow-x: hidden;
}

.philosophy-main {
  position: relative;
  isolation: isolate;
  overflow: clip;
  color: var(--philo-ink);
  background: var(--philo-paper);
}

.philosophy-main *,
.philosophy-main *::before,
.philosophy-main *::after {
  box-sizing: border-box;
}

.philo-container {
  position: relative;
  z-index: 3;
  width: min(
    calc(100% - (var(--philo-gutter) * 2)),
    var(--philo-container)
  );
  margin-inline: auto;
}

.philo-scroll-section {
  --section-progress: 0;
  --section-visible: 0;
  --section-enter: 0;
  --section-exit: 0;
  --section-center: 0;
  position: relative;
  isolation: isolate;
}

.philo-scroll-section::after {
  content: "";
  position: absolute;
  z-index: 30;
  right: 0;
  bottom: 0;
  left: 0;
  height: 14vh;
  pointer-events: none;
  background:
    linear-gradient(
      to bottom,
      transparent,
      rgba(0, 0, 0, 0.08)
    );
  opacity: calc(var(--section-exit) * 0.75);
}

.philo-eyebrow {
  position: relative;
  margin: 20px 0 clamp(20px, 2.6vw, 42px);
  font-size: clamp(0.72rem, 0.85vw, 0.95rem);
  font-weight: 800;
  line-height: 1;
  letter-spacing: 0.22em;
  text-transform: uppercase;
}

.philo-eyebrow::before {
  content: "";
  display: inline-block;
  width: clamp(32px, 4vw, 72px);
  height: 2px;
  margin-right: 14px;
  vertical-align: middle;
  background: currentColor;
  transform-origin: left;
  transform: scaleX(var(--section-enter));
}

.philo-title {
  margin: 0;
  font-weight: 900;
  line-height: 0.82;
  letter-spacing: -0.07em;
  text-transform: uppercase;
  text-wrap: balance;
}

.philo-title--hero {
  font-size: clamp(4rem, 10vw, 12.5rem);
}

.philo-title--huge {
  font-size: clamp(3.5rem, 8vw, 10.5rem);
}

.philo-title--large {
  font-size: clamp(3rem, 6vw, 8.4rem);
}

.philo-copy,
.philo-intro {
  position: relative;
  max-width: 90%;
  margin: clamp(34px, 5vw, 76px) 0 0;
  font-size: clamp(1rem, 1.35vw, 1.42rem);
  font-weight: 450;
  line-height: 1.65;
}

.philo-principle {
  position: relative;
  max-width: 1040px;
  margin: clamp(42px, 6vw, 96px) 0 0;
  padding-left: clamp(22px, 3vw, 52px);
  border-left: 3px solid currentColor;
  font-size: clamp(1.55rem, 2.5vw, 3.8rem);
  font-weight: 750;
  line-height: 1.08;
  letter-spacing: -0.045em;

}

#main > section.philo-understand.philo-scroll-section > blockquote {
  background: black;
  padding: 20px;
}


/*
.philo-principle::before{
    content:"„";
    position:absolute;
    top:var(--quote-y,0.9em);
    left:var(--quote-x,20px);
    font-size:var(--quote-size,2.4em);
    line-height:1;
    opacity:.14;
} */

.philo-principle span {
  display: block;
  margin-left: 30px;
}


.philo-principle--bottom {
  position: absolute;
  right: var(--philo-gutter);
  bottom: clamp(36px, 6vh, 90px);
  left: var(--philo-gutter);
}

.philo-reveal {
  opacity: 1;
  transform: none;

}

#main > section.philo-responsibility.philo-scroll-section > 
div > div.philo-container.philo-responsibility__content > 
p.philo-eyebrow.philo-reveal {
  color: var(--anthracite-100)
}

#main > section.philo-responsibility.philo-scroll-section > 
div > div.philo-container.philo-responsibility__content > 
p.philo-copy.philo-copy--narrow.philo-reveal {
  color: var(--accent)
}

/* =========================================================
   GLOBALE SCROLL-UI
========================================================= */

.philo-scroll-ui {
  position: fixed;
  z-index: 200;
  inset: 0;
  pointer-events: none;
  mix-blend-mode: difference;
  color: white;
}

.philo-progress {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 3px;
  transform-origin: left;
  transform: scaleX(var(--scroll-progress));
  background: currentColor;
}

.philo-chapter {
  position: absolute;
  right: clamp(16px, 2.4vw, 42px);
  top: 50%;
  display: flex;
  align-items: center;
  gap: 12px;
  writing-mode: vertical-rl;
  transform: translateY(-50%) rotate(180deg);
  font-size: 0.7rem;
  font-weight: 800;
  letter-spacing: 0.18em;
  text-transform: uppercase;
}

.philo-chapter__number {
  font-size: 1.5rem;
  letter-spacing: -0.05em;
}

.philo-chapter__line {
  width: 1px;
  height: 58px;
  background: currentColor;
  opacity: 0.45;
}

/* .philo-velocity-flash {
  position: absolute;
  inset: 0;
  opacity: calc(abs(var(--scroll-velocity)) * 0.8);
  background:
    linear-gradient(
      90deg,
      transparent,
      rgba(255, 255, 255, 0.04),
      transparent
    );
  transform:
    translateX(
      calc(
        var(--scroll-direction) *
        var(--scroll-velocity) *
        18vw
      )
    );
} 
*/ 

.philo-velocity-flash {
  display: none;
}


/* =========================================================
   GLOBALE KORN- UND LICHTEBENE
========================================================= */

.philo-noise {
  position: fixed;
  z-index: 190;
  inset: -50%;
  width: 200%;
  height: 200%;
  pointer-events: none;
  opacity: 0.035;
  background-image:
    url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.9'/%3E%3C/svg%3E");
  animation: philoNoise 0.18s steps(2) infinite;
}

@keyframes philoNoise {
  0% {
    transform: translate3d(-2%, -2%, 0);
  }

  25% {
    transform: translate3d(1%, -3%, 0);
  }

  50% {
    transform: translate3d(3%, 2%, 0);
  }

  75% {
    transform: translate3d(-3%, 1%, 0);
  }

  100% {
    transform: translate3d(2%, 3%, 0);
  }
}

.philo-light-orb {
  position: fixed;
  z-index: 180;
  top: 0;
  left: 0;
  width: 38vw;
  aspect-ratio: 1;
  border-radius: 50%;
  pointer-events: none;
  opacity: 0.14;
  filter: blur(90px);
  background: white;
  transform:
    translate3d(
      calc(var(--mouse-x) * 1px - 50%),
      calc(var(--mouse-y) * 1px - 50%),
      0
    );
  mix-blend-mode: overlay;
}

/* =========================================================
   SPLIT-TEXT
========================================================= */

[data-monster-split] {
  overflow: hidden;
}

.monster-line {
  display: block;
}

.monster-line__inner {
  display: block;
      margin-left: 15px;
  transform:
    translate3d(
      calc(
        var(--line-offset, 0) *
        var(--scroll-direction) *
        1vw
      ),
      calc((1 - var(--line-progress, 0)) * 120%),
      0
    )
    rotate(
      calc(
        (1 - var(--line-progress, 0)) *
        var(--line-rotate, 0deg)
      )
    );
  opacity: var(--line-progress, 0);
  will-change: transform, opacity;
}

.monster-char {
  display: inline-block;
  transform:
    translate3d(
      0,
      calc((1 - var(--char-progress, 0)) * 1.2em),
      0
    )
    rotate(
      calc((1 - var(--char-progress, 0)) * 8deg)
    );
  opacity: var(--char-progress, 0);
  will-change: transform, opacity;
}

/* =========================================================
   01 — HERO
========================================================= */

.philo-hero {
  height: 360vh;
  min-height: 2200px;
  background: var(--philo-paper);
}

.philo-hero__sticky {
  position: sticky;
  top: 0;
  height: 110vh;
  min-height: 720px;
  display: flex;
  align-items: center;
  overflow: hidden;
  perspective: 1300px;
}

.philo-hero__content {
  transform:
    translate3d(
      calc(var(--mouse-x-local, 0) * -2.5vw),
      calc(var(--mouse-y-local, 0) * -1.5vw),
      calc(var(--section-center) * 60px)
    )
    rotateX(calc(var(--mouse-y-local, 0) * -2deg))
    rotateY(calc(var(--mouse-x-local, 0) * 3deg));
  transform-style: preserve-3d;
}

.philo-hero__background {
  position: absolute;
  inset: -10%;
  pointer-events: none;
  transform:
    rotate(
      calc(
        -3deg +
        var(--scroll-velocity) * 2deg
      )
    )
    scale(calc(1 + var(--section-center) * 0.08));
}

.philo-hero__line {
  position: absolute;
  top: -20%;
  bottom: -20%;
  width: 1px;
  background: rgba(17, 17, 17, 0.15);
  transform:
    scaleY(var(--section-progress))
    translateY(
      calc(
        var(--scroll-direction) *
        var(--scroll-velocity) *
        10vh
      )
    );
  transform-origin: top;
}

.philo-hero__line:nth-child(1) {
  left: 12%;
}

.philo-hero__line:nth-child(2) {
  left: 37%;
}

.philo-hero__line:nth-child(3) {
  left: 64%;
}

.philo-hero__line:nth-child(4) {
  left: 88%;
}

.philo-hero::before {
  content: "HALTUNG";
  position: absolute;
  z-index: 0;
  top: 50%;
  left: 50%;
  font-size: clamp(12rem, 32vw, 35rem);
  font-weight: 950;
  line-height: 0.7;
  letter-spacing: -0.09em;
  color: rgba(17, 17, 17, 0.035);
  transform:
    translate(
      calc(-50% + var(--section-progress) * -15vw),
      -50%
    )
    scale(calc(0.72 + var(--section-progress) * 0.5));
  white-space: nowrap;
}

.philo-title__line {
  display: block;
  transform:
    translate3d(
      calc(
        (1 - var(--line-opacity, 0)) *
        var(--hero-direction, 1) *
        18vw
      ),
      0,
      calc((1 - var(--line-opacity, 0)) * -180px)
    )
    rotateY(
      calc(
        (1 - var(--line-opacity, 0)) *
        var(--hero-direction, 1) *
        22deg
      )
    );
  opacity: var(--line-opacity, 0);
  transform-origin: center left;
}

.philo-title__line:nth-child(2) {
  --hero-direction: -1;
}

.philo-title__line:nth-child(3) {
  --hero-direction: 1;
}

.philo-intro {
  max-width: 610px;
  opacity: var(--hero-copy-progress, 0);
  transform:
    translate3d(
      calc((1 - var(--hero-copy-progress, 0)) * 12vw),
      calc((1 - var(--hero-copy-progress, 0)) * 45px),
      0
    );
}

.philo-scroll-hint {
  position: absolute;
  right: clamp(22px, 4vw, 70px);
  bottom: clamp(24px, 5vh, 58px);
  display: flex;
  align-items: center;
  gap: 14px;
  font-size: 0.7rem;
  font-weight: 800;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  opacity: calc(1 - var(--section-progress) * 5);
}

.philo-scroll-hint i {
  position: relative;
  width: 68px;
  height: 2px;
  overflow: hidden;
  background: rgba(17, 17, 17, 0.2);
}

.philo-scroll-hint i::after {
  content: "";
  position: absolute;
  inset: 0;
  background: currentColor;
  animation: philoScrollLine 1.4s infinite cubic-bezier(0.76, 0, 0.24, 1);
}

@keyframes philoScrollLine {
  0% {
    transform: translateX(-105%);
  }

  50% {
    transform: translateX(0);
  }

  100% {
    transform: translateX(105%);
  }
}

/* =========================================================
   02 — VERSTEHEN
========================================================= */

.philo-understand {
  height: 430vh;
  min-height: 2700px;
  color: var(--philo-white);
  background: var(--philo-dark);
}

.philo-understand__sticky {
  position: sticky;
  top: 0;
  height: 100svh;
  min-height: 720px;
  overflow: hidden;
  perspective: 1500px;
}

.philo-understand::before {
  content: "VERSTEHEN";
  position: absolute;
  z-index: 0;
  top: 8%;
  left: -12vw;
  font-size: clamp(9rem, 28vw, 32rem);
  font-weight: 950;
  line-height: 0.7;
  letter-spacing: -0.1em;
  color: rgba(255, 255, 255, 0.035);
  transform:
    translateX(calc(var(--section-progress) * 32vw))
    rotate(-4deg);
  white-space: nowrap;
}

.philo-understand__layout {
  height: 100%;
  display: grid;
  grid-template-columns: minmax(0, 1.08fr) minmax(360px, 0.92fr);
  align-items: center;
  gap: clamp(50px, 8vw, 140px);
}

.philo-understand__text {
  transform:
    translate3d(
      calc(var(--scroll-velocity) * -6vw),
      0,
      calc(var(--section-center) * 80px)
    );
}

.philo-word-step {
  display: block;
  width: max-content;
  max-width: 100%;
  color:
    color-mix(
      in srgb,
      var(--philo-white)
      calc(var(--word-progress, 0) * 100%),
      rgba(255, 255, 255, 0.08)
    );
  transform:
    translate3d(
      calc(
        (1 - var(--word-progress, 0)) *
        var(--word-direction, 1) *
        32vw
      ),
      0,
      0
    )
    skewX(
      calc(
        (1 - var(--word-progress, 0)) *
        var(--word-direction, 1) *
        -12deg
      )
    );
  filter:
    blur(
      calc(
        (1 - var(--word-progress, 0)) *
        12px
      )
    );
}

.philo-word-step:nth-child(even) {
  --word-direction: -1;
}

.philo-inspection {
  position: relative;
  width: min(42vw, 660px);
  aspect-ratio: 0.86;
  margin-inline: auto;
  overflow: hidden;
  border: 1px solid rgba(255, 255, 255, 0.18);
  background:
    linear-gradient(
      145deg,
      rgba(255, 255, 255, 0.06),
      transparent
    );
  transform:
    rotateY(calc((1 - var(--section-enter)) * -38deg))
    rotateX(calc(var(--mouse-y-local, 0) * 5deg))
    translate3d(
      calc(var(--mouse-x-local, 0) * 3vw),
      calc(var(--mouse-y-local, 0) * 2vw),
      0
    );
  transform-style: preserve-3d;
}

.philo-inspection::before,
.philo-inspection::after {
  content: "";
  position: absolute;
  background: rgba(255, 255, 255, 0.16);
}

.philo-inspection::before {
  top: 0;
  bottom: 0;
  left: 50%;
  width: 1px;
}

.philo-inspection::after {
  top: 50%;
  right: 0;
  left: 0;
  height: 1px;
}

.philo-inspection__building {
  position: absolute;
  inset: 17%;
  transform:
    scale(calc(0.75 + var(--section-enter) * 0.25))
    translateZ(80px);
}

.philo-inspection__roof {
  position: absolute;
  top: 7%;
  left: 8%;
  width: 84%;
  height: 36%;
  border-top: 4px solid currentColor;
  border-right: 4px solid currentColor;
  transform: skewY(-28deg);
}

.philo-inspection__house {
  position: absolute;
  right: 17%;
  bottom: 11%;
  left: 17%;
  height: 60%;
  border: 4px solid currentColor;
  border-top: 0;
}

.philo-inspection__window {
  position: absolute;
  right: 29%;
  bottom: 29%;
  width: 20%;
  aspect-ratio: 1;
  border: 3px solid currentColor;
}

.philo-inspection__scan {
  position: absolute;
  z-index: 4;
  top: -12%;
  right: 0;
  left: 0;
  height: 18%;
  border-bottom: 2px solid white;
  background:
    linear-gradient(
      to bottom,
      transparent,
      rgba(255, 255, 255, 0.12)
    );
  box-shadow: 0 18px 40px rgba(255, 255, 255, 0.08);
  transform: translateY(calc(var(--section-progress) * 650%));
}

.philo-inspection__label {
  position: absolute;
  z-index: 5;
  padding: 8px 11px;
  border: 1px solid rgba(255, 255, 255, 0.28);
  background: rgba(12, 12, 12, 0.76);
  backdrop-filter: blur(8px);
  font-size: clamp(0.6rem, 0.72vw, 0.8rem);
  font-weight: 800;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  opacity: var(--label-opacity, 0);
  transform:
    translate3d(
      calc((1 - var(--label-opacity, 0)) * 60px),
      0,
      100px
    )
    scale(calc(0.72 + var(--label-opacity, 0) * 0.28));
}

.philo-inspection__label--one {
  top: 15%;
  left: 7%;
}

.philo-inspection__label--two {
  top: 36%;
  right: 5%;
}

.philo-inspection__label--three {
  right: 8%;
  bottom: 22%;
}

.philo-inspection__label--four {
  bottom: 8%;
  left: 6%;
}

/* =========================================================
   03 — BERATUNG
========================================================= */

.philo-advice {
  height: 390vh;
  min-height: 2450px;
  background: var(--philo-paper-deep);
}

.philo-advice__sticky {
  position: sticky;
  top: 0;
  height: 100svh;
  min-height: 720px;
  display: flex;
  align-items: center;
  overflow: hidden;
}

.philo-advice::before,
.philo-advice::after {
  content: "";
  position: absolute;
  z-index: 0;
  top: 0;
  bottom: 0;
  width: 50%;
  background: var(--philo-dark);
  transform: scaleX(var(--advice-curtain, 0));
}

.philo-advice::before {
  left: 0;
  transform-origin: left;
}

.philo-advice::after {
  right: 0;
  transform-origin: right;
}

.philo-advice__content{
    position: relative;
    z-index: 4;

    transition: color .2s linear;

    color: color-mix(
        in srgb,
        var(--philo-white)
        calc(var(--advice-curtain, 0) * 100%),
        var(--philo-ink)
    );
}

.philo-advice__choice {
  position: absolute;
  z-index: 2;
  top: 50%;
  font-size: clamp(10rem, 30vw, 36rem);
  font-weight: 950;
  line-height: 0.66;
  letter-spacing: -0.1em;
  text-transform: uppercase;
  white-space: nowrap;
  pointer-events: none;
}

.philo-advice__choice--large {
  left: -7vw;
  color: rgba(17, 17, 17, 0.11);
  transform:
    translate3d(
      calc(var(--section-progress) * -80vw),
      -50%,
      0
    )
    scale(calc(1 + var(--section-progress) * 1.3))
    skewX(calc(var(--scroll-velocity) * -8deg));
}

.philo-advice__choice--right {
  right: -3vw;
  color: rgba(255, 255, 255, 0.085);
  transform:
    translate3d(
      calc((1 - var(--section-progress)) * 95vw),
      -50%,
      0
    )
    skewX(calc(var(--scroll-velocity) * 8deg));
}

.philo-advice .philo-title {
  transform:
    scale(calc(0.82 + var(--section-center) * 0.18))
    translate3d(
      calc(var(--scroll-velocity) * -5vw),
      0,
      0
    );
}

.philo-advice .philo-principle {
  transform:
    translate3d(
      calc((1 - var(--advice-quote, 0)) * 18vw),
      0,
      0
    );
  opacity: var(--advice-quote, 0);
}

/* =========================================================
   04 — MATERIAL
========================================================= */

.philo-material {
  min-height: 3300px;
  color: var(--philo-white);
  background: var(--philo-dark);
}

.philo-material__sticky {
  position: sticky;
  top: 0;
  height: 100svh;
  min-height: 720px;
  overflow: hidden;
  perspective: 1600px;
}

.philo-material__image {
  position: absolute;
  inset: -10%;
  clip-path:
    inset(
      calc(var(--material-mask-top, 0) * 1%)
      calc(var(--material-mask-side, 0) * 1%)
      calc(var(--material-mask-bottom, 0) * 1%)
      calc(var(--material-mask-side, 0) * 1%)
      round calc(var(--material-radius, 0) * 1px)
    );
  transform:
    scale(calc(1.35 - var(--section-progress) * 0.24))
    translate3d(
      calc(var(--mouse-x-local, 0) * 3vw),
      calc(var(--mouse-y-local, 0) * 2vw),
      0
    );
}

.philo-material__image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  filter:
    saturate(calc(0.2 + var(--section-progress) * 0.8))
    contrast(calc(1.15 + var(--section-center) * 0.2));
}

.philo-material__image-overlay {
  position: absolute;
  inset: 0;
  background:
    linear-gradient(
      90deg,
      rgba(8, 8, 8, 0.96) 0%,
      rgba(8, 8, 8, 0.82) 43%,
      rgba(8, 8, 8, 0.28) 100%
    );
}

.philo-material::before {
  content: "MATERIAL";
  position: absolute;
  z-index: 1;
  top: 50%;
  right: -18vw;
  font-size: clamp(11rem, 32vw, 37rem);
  font-weight: 950;
  line-height: 0.68;
  letter-spacing: -0.1em;
  color: rgba(255, 255, 255, 0.055);
  transform:
    translateY(-50%)
    translateX(calc((1 - var(--section-progress)) * 55vw))
    rotate(90deg);
  transform-origin: center;
  white-space: nowrap;
}

.philo-material__content {
  z-index: 5;
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.philo-material__content .philo-title {
  transform:
    translate3d(
      calc(var(--scroll-velocity) * -4vw),
      0,
      calc(var(--section-center) * 80px)
    );
}

.philo-material__layers {
  position: absolute;
  z-index: 4;
  top: 50%;
  right: 3vw;
  width: min(42vw, 650px);
  aspect-ratio: 1.15;
  transform:
    translateY(-50%)
    rotateX(calc(52deg + var(--mouse-y-local, 0) * 8deg))
    rotateZ(calc(-14deg + var(--mouse-x-local, 0) * 4deg));
  transform-style: preserve-3d;
}

.philo-material__layer {
  position: absolute;
  inset: 18%;
  border: 1px solid rgba(255, 255, 255, 0.68);
  background: rgba(255, 255, 255, 0.035);
  backdrop-filter: blur(3px);
  opacity: var(--layer-progress, 0);
  transform:
    translate3d(
      calc(
        (1 - var(--layer-progress, 0)) *
        var(--layer-direction, 1) *
        65vw
      ),
      calc((var(--layer-index) - 1.5) * 72px),
      calc((var(--layer-index) - 1.5) * 100px)
    )
    scale(calc(0.72 + var(--layer-progress, 0) * 0.28));
}

.philo-material__layer:nth-child(1) {
  --layer-index: 0;
  --layer-direction: -1;
}

.philo-material__layer:nth-child(2) {
  --layer-index: 1;
  --layer-direction: 1;
}

.philo-material__layer:nth-child(3) {
  --layer-index: 2;
  --layer-direction: -1;
}

.philo-material__layer:nth-child(4) {
  --layer-index: 3;
  --layer-direction: 1;
}

.philo-keywords {
  display: grid;
  max-width: 800px;
  margin: clamp(40px, 2vw, 76px) 0 0; 
  padding: 0;
  list-style: none;
}

.philo-keyword {
  position: relative;
  padding: 13px 0;
  border-top: 1px solid rgba(255, 255, 255, 0.2);
  overflow: hidden;
  font-size: clamp(1rem, 1.8vw, 2.2rem);
  font-weight: 850;
  letter-spacing: -0.035em;
  transform:
    translate3d(
      calc(
        (1 - var(--keyword-progress, 0)) *
        var(--keyword-direction, 1) *
        28vw
      ),
      0,
      0
    );
  opacity: var(--keyword-progress, 0);
}

.philo-keyword:nth-child(even) {
  --keyword-direction: -1;
}

.philo-keyword:last-child {
  border-bottom: 1px solid rgba(255, 255, 255, 0.2);
}

.philo-keyword::after {
  content: "";
  position: absolute;
  inset: 0;
  background: var(--accent);
  transform:
    translateX(
      calc(
        -105% +
        var(--keyword-progress, 0) *
        210%
      )
    );
  mix-blend-mode: difference;
}

.philo-keyword {
  isolation: isolate;
  color: #fff;
}

.philo-keyword::after {
  z-index: -1;
  mix-blend-mode: normal;
}


/* =========================================================
   05 — ENTSCHEIDUNGEN
========================================================= */

.philo-decisions {
  height: 430vh;
  min-height: 2750px;
  background: var(--philo-paper);
}

.philo-decisions__sticky {
  position: sticky;
  top: 0;
  /* height: 100svh; */
  height: auto;
  min-height: 720px;
  overflow: visible;
}

.philo-decisions::before {
  content: "ENTSCHEIDUNG";
  position: absolute;
  top: 50%;
  left: -10vw;
  font-size: clamp(9rem, 26vw, 30rem);
  font-weight: 950;
  line-height: 0.68;
  letter-spacing: -0.1em;
  color: rgba(17, 17, 17, 0.045);
  transform:
    translateY(-50%)
    translateX(calc(var(--section-progress) * 42vw))
    skewX(calc(var(--scroll-velocity) * -5deg));
  white-space: nowrap;
}

.philo-decisions__layout {
  height: 100%;
  display: grid;
  grid-template-columns: minmax(0, 0.98fr) minmax(420px, 1.02fr);
  align-items: center;
  gap: clamp(50px, 8vw, 140px);
}

.philo-decisions__content {
  transform:
    translate3d(
      calc(var(--scroll-velocity) * -5vw),
      0,
      0
    );
}

.philo-decisions__diagram {
  perspective: 1200px;
}

.philo-system {
  position: relative;
  width: min(44vw, 680px);
  aspect-ratio: 1;
  margin-inline: auto;
  border: 2px solid rgba(17, 17, 17, 0.22);
  border-radius: 50%;
  transform:
    rotate(calc(var(--section-progress) * 110deg))
    rotateX(calc(var(--mouse-y-local, 0) * 8deg))
    rotateY(calc(var(--mouse-x-local, 0) * 8deg))
    scale(calc(0.72 + var(--section-center) * 0.28));
  transform-style: preserve-3d;
}

.philo-system::before,
.philo-system::after {
  content: "";
  position: absolute;
  border: 1px solid rgba(17, 17, 17, 0.2);
  border-radius: 50%;
}

.philo-system::before {
  inset: 14%;
}

.philo-system::after {
  inset: 31%;
}

.philo-system__center,
.philo-system__node {
  position: absolute;
  display: grid;
  place-items: center;
  border: 1px solid currentColor;
  background: var(--philo-paper);
  font-size: clamp(0.64rem, 0.85vw, 0.92rem);
  font-weight: 850;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  box-shadow: 0 18px 50px rgba(0, 0, 0, 0.08);
}

.philo-system__center {
  top: 50%;
  left: 50%;
  width: clamp(100px, 10vw, 142px);
  aspect-ratio: 1;
  border-radius: 50%;
  transform:
    translate(-50%, -50%)
    rotate(calc(var(--section-progress) * -110deg));
}

.philo-system__node {
  width: clamp(100px, 12vw, 165px);
  height: 48px;
  transform:
    translate(-50%, -50%)
    rotate(calc(var(--section-progress) * -110deg));
}

.philo-system__node--one {
  top: 8%;
  left: 50%;
}

.philo-system__node--two {
  top: 50%;
  left: 94%;
}

.philo-system__node--three {
  top: 92%;
  left: 50%;
}

.philo-system__node--four {
  top: 50%;
  left: 6%;
}

.philo-system__line {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 43%;
  height: 2px;
  background: currentColor;
  transform-origin: left;
  opacity: 0.5;
}

.philo-system__line--one {
  transform: rotate(-90deg) scaleX(var(--decision-line, 0));
}

.philo-system__line--two {
  transform: rotate(0deg) scaleX(var(--decision-line, 0));
}

.philo-system__line--three {
  transform: rotate(90deg) scaleX(var(--decision-line, 0));
}

.philo-system__line--four {
  transform: rotate(180deg) scaleX(var(--decision-line, 0));
}

/* =========================================================
   06 — RESPEKT
========================================================= */

.philo-respect {
  height: 470vh;
  min-height: 3000px;
  color: var(--philo-white);
  background: var(--philo-dark);
}

.philo-respect__media {
  position: absolute;
  inset: 0;
  height: 100%;
  overflow: hidden;
}

.philo-respect__media{
    position:sticky;
    top:0;
    height:100vh;
    overflow:hidden;
}

.philo-respect__media img{
    position:absolute;
    inset:0;

    width:100%;


    object-fit:cover;
    object-position:center;

    transform:
      scale(calc(1.28 - var(--section-progress) * 0.18))
      translate3d(
        calc(var(--mouse-x-local,0) * 3vw),
        calc(var(--mouse-y-local,0) * 2vw),
        0
      );

    z-index:0;
}

.philo-respect__overlay{
    position:absolute;
    inset:0;

    background:
      linear-gradient(
        90deg,
        rgba(7,7,7,.94) 0%,
        rgba(7,7,7,.72) 48%,
        rgba(7,7,7,.18) 100%
      );

    z-index:1;
    pointer-events:none;
}

.philo-respect__sticky {
  position: sticky;
  top: 0;
  min-height: 720px;
  display: flex;
  align-items: center;
  overflow: hidden;
}

.philo-respect__content {
  z-index: 3;
}

.philo-respect::before {
  content: "RESPEKT";
  position: absolute;
  z-index: 2;
  right: -12vw;
  bottom: 2vh;
  font-size: clamp(10rem, 30vw, 34rem);
  font-weight: 950;
  line-height: 0.65;
  letter-spacing: -0.1em;
  color: rgba(255, 255, 255, 0.07);
  transform:
    translateX(calc((1 - var(--section-progress)) * 75vw))
    skewX(calc(var(--scroll-velocity) * 8deg));
}

.philo-respect__values {
  display: grid;
  max-width: 920px;
  margin-top: clamp(40px, 4vw, 80px);
}

.philo-respect__value {
  display: block;
  padding: 7px 0;
  border-bottom: 1px solid rgba(255, 255, 255, 0.24);
  overflow: hidden;
  font-size: clamp(1.45rem, 2.5vw, 4.3rem);
  font-weight: 850;
  line-height: 0.98;
  letter-spacing: -0.05em;
  opacity: var(--value-progress, 0);
  transform:
    translate3d(
      calc(
        (1 - var(--value-progress, 0)) *
        var(--value-direction, 1) *
        34vw
      ),
      0,
      0
    )
    skewX(
      calc(
        (1 - var(--value-progress, 0)) *
        var(--value-direction, 1) *
        -10deg
      )
    );
}

.philo-respect__value:nth-child(even) {
  --value-direction: -1;
}

.philo-accent{
    color: rgb(224,32,38);
    display: inline;
}

/* =========================================================
   07 — PROBLEME
========================================================= */

.philo-problems {
  height: 410vh;
  min-height: 2600px;
  background: #d4cec2;
}

.philo-problems__sticky {
  position: sticky;
  top: 0;
  height: 100svh;
  min-height: 720px;
  display: flex;
  align-items: center;
  overflow: hidden;
}

.philo-problems::before {
  content: "";
  position: absolute;
  z-index: 0;
  inset: 0;
  background:
    linear-gradient(
      110deg,
      transparent 0 46%,
      rgba(17, 17, 17, 0.08) 46.2% 46.5%,
      transparent 46.7% 100%
    );
  transform:
    scaleX(calc(0.2 + var(--section-progress) * 1.2))
    skewX(calc(var(--scroll-velocity) * 5deg));
}

.philo-problems__content {
  z-index: 3;
}

.philo-problems__content .philo-title {
  transform:
    translate3d(
      calc(var(--problem-shake, 0) * 1px),
      calc(var(--problem-shake-y, 0) * 1px),
      0
    );
}

.philo-problems__crack {
  position: absolute;
  z-index: 2;
  top: -10%;
  right: 5vw;
  bottom: -10%;
  width: min(42vw, 680px);
  transform:
    scale(calc(0.75 + var(--section-progress) * 0.45))
    rotate(calc(var(--scroll-velocity) * 3deg));
}

.philo-problems__crack svg {
  width: 100%;
  height: 100%;
}

.philo-problems__crack path {
  fill: none;
  stroke: rgba(17, 17, 17, 0.78);
  stroke-width: 5;
  stroke-linecap: square;
  stroke-linecap: butt;
stroke-linejoin: bevel;
  stroke-dasharray: 1800;
  stroke-dashoffset:
    calc(
      1800 -
      1800 *
      var(--section-progress)
    );
}

/* =========================================================
   08 — VERANTWORTUNG
========================================================= */

.philo-responsibility {
  height: 500vh;
  min-height: 3200px;
  color: var(--philo-white);
  background: var(--philo-dark);
}

.philo-responsibility__sticky {
  position: sticky;
  top: 0;
  height: 100svh;
  min-height: 720px;
  display: flex;
  align-items: center;
  overflow: hidden;
}

.philo-responsibility__content {
  z-index: 3;
}

.philo-responsibility__years {
  position: absolute;
  z-index: 1;
  top: 50%;
  right: -5vw;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  transform:
    translateY(
      calc(
        -8% -
        var(--section-progress) *
        72%
      )
    )
    skewY(calc(var(--scroll-velocity) * 4deg));
}

.philo-responsibility__years span {
  display: block;
  font-size: clamp(10rem, 31vw, 38rem);
  font-weight: 950;
  line-height: 0.68;
  letter-spacing: -0.11em;
  color: rgba(255, 255, 255, 0.055);
}

.philo-responsibility__content{
    position:relative;
    z-index:3;
}

.philo-responsibility__content::before{
    content:"";
    position:absolute;
    inset:-4rem -3rem;
    z-index:-1;

    background:linear-gradient(
        to right,
        rgba(12,12,12,.92),
        rgba(12,12,12,.70),
        transparent
    );
}

/* =========================================================
   09 — NAME
========================================================= */

.philo-name {
  height: 460vh;
  min-height: 2950px;
  color: var(--philo-white);
  background: var(--philo-dark);
}

.philo-name__image {
  position: absolute;
  inset: 0;
  overflow: hidden;
}

.philo-name__image img {
  position: sticky;
  top: 0;
  width: 100%;
  height: 100svh;
  object-fit: cover;
  transform:
    scale(calc(1.42 - var(--section-progress) * 0.3))
    translate3d(
      calc(
        (var(--section-progress) - 0.5) *
        -12vw
      ),
      calc(var(--mouse-y-local, 0) * 2vw),
      0
    );
  filter:
    contrast(calc(1.05 + var(--section-center) * 0.25))
    saturate(calc(0.35 + var(--section-center) * 0.65));
}

.philo-name__overlay {
  position: sticky;
  top: 0;
  height: 100svh;
  margin-top: -101vh;
  background:
    linear-gradient(
      90deg,
      rgba(6, 6, 6, 0.96),
      rgba(6, 6, 6, 0.52)
    );
}

.philo-name__sticky {
  position: sticky;
  top: 0;
  height: 100svh;
  min-height: 720px;
  display: flex;
  align-items: center;
  overflow: hidden;
}

.philo-name__content {
  z-index: 3;
}

.philo-name::before {
    content: "";
    position: absolute;
    z-index: 2;

    top: 50%;
    right: 30vw;

    width: 900px;
    height: 350px;

    opacity: .08;   /* z.B. 0.08 = sehr dezent */

    background: url("../bilder/logodach.webp") center / contain no-repeat;

    transform:
        translateY(-50%)
        translateX(calc((1 - var(--section-progress)) * 70vw));
}

.philo-name {
    position: relative;
    z-index: 2;
}

.philo-name::before {
    z-index: -1;
}

/* =========================================================
   10 — FINALE
========================================================= */

.philo-final {
  height: 390vh;
  min-height: 2450px;
  background: var(--philo-paper);
}

.philo-final__sticky {
  position: sticky;
  top: 0;
  height: 100svh;
  min-height: 720px;
  display: flex;
  align-items: center;
  overflow: hidden;
}

.philo-final__content {
  z-index: 3;
  text-align: center;
  transform:
    scale(calc(0.68 + var(--section-center) * 0.32))
    translate3d(
      calc(var(--scroll-velocity) * -4vw),
      0,
      0
    );
}

.philo-final__content .philo-title {
  max-width: none;
  margin-inline: auto;
}

.philo-final__background-word {
  position: absolute;
  top: 50%;
  left: 50%;
  font-size: clamp(11rem, 34vw, 40rem);
  font-weight: 950;
  line-height: 0.64;
  letter-spacing: -0.09em;
  color: rgba(17, 17, 17, 0.1);
  transform:
    translate(-50%, -50%)
    scale(calc(0.4 + var(--section-progress) * 1.35))
    rotate(calc(var(--scroll-velocity) * 3deg));
  white-space: nowrap;
}

.philo-final__answer {
  margin: clamp(30px, 5vw, 70px) 0 0;
  font-size: clamp(1.8rem, 5vw, 6rem);
  font-weight: 900;
  line-height: 0.92;
  letter-spacing: -0.06em;
  opacity: var(--final-answer, 0);
  transform:
    translate3d(
      0,
      calc((1 - var(--final-answer, 0)) * 120px),
      0
    )
    scale(calc(0.7 + var(--final-answer, 0) * 0.3));
}

.philo-button {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 20px;
  min-height: 64px;
  margin-top: clamp(38px, 6vw, 84px);
  padding: 18px 32px;
  overflow: hidden;
  border: 2px solid currentColor;
  color: inherit;
  text-decoration: none;
  font-size: 0.86rem;
  font-weight: 850;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  transform:
    translate3d(
      calc(var(--magnet-x, 0) * 1px),
      calc(var(--magnet-y, 0) * 1px),
      0
    );
}

.philo-button::before {
  content: "";
  position: absolute;
  inset: 0;
  background: var(--philo-ink);
  transform: translateY(105%);
  transition: transform 450ms cubic-bezier(0.76, 0, 0.24, 1);
}

.philo-button:hover {
  color: var(--philo-white);
}

.philo-button:hover::before {
  transform: translateY(0);
}

.philo-button span,
.philo-button {
  isolation: isolate;
}

.philo-button span {
  position: relative;
  z-index: 1;
}

.philo-button{
    position: relative;
    isolation: isolate;
}

.philo-button::before{
    z-index: -1;
}

.philo-button:hover{
    color: var(--philo-paper);
}


/* =========================================================
   RESPONSIVE
========================================================= */
@media (max-width: 630px) {
  #main > section.philo-understand.philo-scroll-section > div > div > div.philo-understand__text > p.philo-copy.philo-reveal {
margin-top:10px;
}  
}



@media (max-width: 980px) {
  .philo-understand__layout,
  .philo-decisions__layout {
    grid-template-columns: 1fr;
  }

  .philo-understand__visual {
    position: relative;
    bottom: auto;
    z-index: 1;
    opacity: 1;
    max-height: 50vh;
  }

  .philo-decisions__diagram {
    position: absolute;
    bottom: 40vh;
    z-index: 0;
    opacity: 0.28;
  }

  .philo-understand__text,
  .philo-decisions__content {
    position: relative;
    z-index: 2;
  }

  #main > section.philo-understand.philo-scroll-section > div > div > div.philo-understand__text > p.philo-copy.philo-reveal {
  max-width: 45vw;
  text-align: right;
}

.philo-understand__text{
    position: relative;
}

.philo-understand__text > .philo-copy.philo-reveal{
    position: absolute;
    top: 2rem;
    right: 2rem;

    margin: 0;
}

}

  .philo-understand__text,
  .philo-decisions__content {
    position: relative;
    z-index: 2;
  }

  .philo-inspection,
  .philo-system {
    width: min(65vw, 540px);
  }

  .philo-material__layers {
    right: -12vw;
    opacity: 0.34;
  }

  .philo-principle--bottom {
    margin-top: 45px;
  }

  .philo-understand__sticky,
  .philo-decisions__sticky {
    display: flex;
    align-items: center;
  }

  .philo-chapter {
    display: none;
  }





@media (max-width: 700px) {
  :root {
    --philo-gutter: 20px;
  }

  .philo-title--hero {
    font-size: clamp(3.6rem, 17vw, 5rem);
  }

  .philo-title--huge {
    font-size: clamp(3.2rem, 15vw, 5.9rem);
  }

    .philo-title--large {
        font-size: clamp(1.6rem, 7vw, 2.3rem);
    }

  .philo-copy,
  .philo-intro {
    max-width: 94%;
    font-size: 1rem;
    line-height: 1.55;
  }

  .philo-principle {
    max-width: 95%;
    bottom: 0%;
    padding-left: 18px;
    font-size: clamp(1.35rem, 5vw, 2.2rem);
  }

  .philo-understand__visual,
  .philo-decisions__diagram,
  .philo-material__layers {
    display: none;
  }

  .philo-hero {
    height: 320vh;
  }

  .philo-understand,
  .philo-advice,
  .philo-decisions,
  .philo-problems,
  .philo-final {
    height: 350vh;
  }

  .philo-material,
  .philo-respect,
  .philo-responsibility,
  .philo-name {
    height: 400vh;
  }

  .philo-respect__value {
    font-size: clamp(1.3rem, 7vw, 2.5rem);
  }

  .philo-problems__crack {
    right: -32vw;
    width: 110vw;
    opacity: 0.25;
  }

  .philo-material__image-overlay {
    background: rgba(7, 7, 7, 0.78);
  }
}

@media (max-width: 630px) {
  #main > section.philo-understand.philo-scroll-section > div > div > div.philo-understand__text > p.philo-copy.philo-reveal {
max-width: 40vw;
text-shadow:
    0 1px 2px rgba(0,0,0,.6),
    0 8px 24px rgba(0,0,0,.45),
    0 18px 48px rgba(0,0,0,.25);

}  
}

@media (max-width: 400px) {
  #main > section.philo-understand.philo-scroll-section > div > div > div.philo-understand__text > p.philo-copy.philo-reveal {
max-width: 30vw;
}  
}


/* =========================================================
   REDUCED MOTION
========================================================= */

@media (prefers-reduced-motion: reduce) {
  .philo-scroll-section {
    --section-progress: 1 !important;
    --section-enter: 1 !important;
    --section-center: 1 !important;
  }

  *,
  *::before,
  *::after {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    scroll-behavior: auto !important;
  }



  .monster-line__inner,
  .monster-char,
  .philo-title__line,
  .philo-word-step,
  .philo-inspection__label,
  .philo-material__layer,
  .philo-keyword,
  .philo-respect__value {
    opacity: 1 !important;
    filter: none !important;
    transform: none !important;
  }
}


/* HINTERGRÜNDE */

[data-philo-section="hero"] {
    background: var(--paper);
}

[data-philo-section="understand"] {
    background: var(--anthracite-400);
}

[data-philo-section="advice"] {
    background: var(--philo-paper-deep);
}

[data-philo-section="material"] {
    background: var(--anthracite-300);
}

[data-philo-section="decisions"] {
    background: var(--paper);
}

[data-philo-section="respect"] {
    background: var(--black);
}

[data-philo-section="problems"] {
    background: #ddd8cf;
}

[data-philo-section="responsibility"] {
    background: var(--anthracite-200);
}

[data-philo-section="name"] {
    background: var(--black);
}

[data-philo-section="final"] {
    background: var(--paper);
}



/* =====================================================
   UNDERSTAND — VORHER / NACHHER
===================================================== */

.philo-understand__visual {
  position: relative;
  overflow: hidden;
  isolation: isolate;
}

.philo-understand__image {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;

  object-fit: cover;

  /*
   * Verschiebt den Ausschnitt stärker zum Haus.
   * Bei Bedarf z. B. 65% oder 75% testen.
   */
  object-position: 68% center;

  pointer-events: none;
  user-select: none;
  will-change: opacity, clip-path;
}

.philo-understand__image--before {
  z-index: 1;
  opacity: 1;
}

.philo-understand__image--after {
  z-index: 2;

  /*
   * Nutzt die bereits vorhandene Scroll-Variable.
   * Keine neue Scroll-Logik nötig.
   */
  opacity: clamp(
    0,
    calc((var(--section-progress, 0) - 0.2) * 2.5),
    1
  );
}

/* =====================================================
   UNDERSTAND VISUAL — ZUHÖREN / ANALYSIEREN / VERSTEHEN
===================================================== */

.philo-understand__visual {
  position: relative;
  overflow: hidden;
  isolation: isolate;
}

/* Bilder */

.philo-understand__images {
  position: absolute;
  inset: 0;
  overflow: hidden;
  background: #171717;
}

.philo-understand__image {
  position: absolute;
  inset: 0;

  width: 100%;
  height: 100%;

  object-fit: cover;
  object-position: 68% center;

  pointer-events: none;
  user-select: none;
}

.philo-understand__image--before {
  z-index: 1;
}

.philo-understand__after-mask {
  position: absolute;
  z-index: 2;
  inset: 0;

  overflow: hidden;

  clip-path: inset(
    0
    0
    calc(
      (1 - var(--understand-image-progress, 0)) * 100%
    )
    0
  );

    will-change: clip-path;
}

.philo-understand__image--after {
  width: 100%;
  height: 100%;
}

/* leichte Abdunklung für bessere Lesbarkeit */

.philo-understand__images::after {
  content: "";
  position: absolute;
  z-index: 3;
  inset: 0;

  pointer-events: none;

  background:
    linear-gradient(
      90deg,
      rgba(10, 10, 10, 0.72) 0%,
      rgba(10, 10, 10, 0.28) 34%,
      transparent 63%
    );
}

/* Konstruktion */

.philo-understand__construction {
  position: absolute;
  z-index: 5;

  top: 12%;
  bottom: 12%;
  left: clamp(28px, 4vw, 72px);

  width: min(260px, 34%);
}

/* vertikale Linie */

.philo-understand__line {
  position: absolute;

  top: 0;
  bottom: 0;
  left: 0;

  width: 1px;

  background: rgba(255, 255, 255, 0.22);

  transform: scaleY(
    var(--understand-line-progress, 0)
  );

  transform-origin: top;
  will-change: transform;
}

.philo-understand__line::after {
  content: "";
  position: absolute;

  right: -3px;
  bottom: 0;

  width: 7px;
  height: 7px;

  border-radius: 50%;
  background: var(--accent, rgb(224, 32, 38));

  opacity: clamp(
    0,
    calc(var(--understand-line-progress, 0) * 2),
    1
  );
}

/* Wörter */

.philo-understand__stage {
  position: absolute;
  left: 24px;

  display: flex;
  align-items: center;
  gap: 14px;

  color: #fff;

  font-size: clamp(0.7rem, 0.85vw, 0.95rem);
  font-weight: 600;
  line-height: 1;
  letter-spacing: 0.18em;
  text-transform: uppercase;

  opacity: var(--stage-progress, 0);

  transform:
    translate3d(
      0,
      calc((1 - var(--stage-progress, 0)) * 22px),
      0
    );

  will-change: transform, opacity;
}

.philo-understand__stage::before {
  content: "";

  width: calc(
    12px +
    var(--stage-progress, 0) *
    32px
  );

  height: 1px;

  background: rgba(255, 255, 255, 0.62);
}

.philo-understand__stage::after {
  content: "";

  position: absolute;
  left: -27px;

  width: 7px;
  height: 7px;

  border-radius: 50%;

  background: var(--accent, rgb(224, 32, 38));

  transform: scale(
    var(--stage-progress, 0)
  );
}

[data-understand-stage="listen"] {
  top: 10%;
}

[data-understand-stage="analyse"] {
  top: 48%;
}

[data-understand-stage="understand"] {
  top: 86%;
}

/* rote Trennlinie zwischen Vorher und Nachher */

.philo-understand__after-mask::before {
  content: "";

  position: absolute;
  z-index: 4;

  left: 0;
  right: 0;

  top: calc(
    var(--understand-image-progress, 0) * 100%
  );

  height: 2px;

  background: var(--accent, rgb(224, 32, 38));

  box-shadow:
    0 0 18px rgba(224, 32, 38, 0.28);

  transform: translateY(-1px);

  opacity: clamp(
    0,
    calc(
      var(--understand-image-progress, 0) * 3
    ),
    1
  );

  pointer-events: none;
}

/* Mobile */

@media (max-width: 900px) {


  .philo-understand__construction {
    left: 26px;
    width: 220px;
  }

  .philo-understand__image {
    object-position: 66% center;
  }
}

/* =====================================================
   UNDERSTAND – RESPONSIVE + STICKY SCROLL
===================================================== */

@media (max-width: 900px) {

  /*
   * Scroll-Strecke beibehalten.
   * Nicht auf height:auto setzen.
   */
  .philo-understand {
    position: relative;
    height: 300svh;
    min-height: 300svh;
    overflow: visible;
  }

  /*
   * Section bleibt während der Animation stehen.
   */
  .philo-understand__sticky {
    position: sticky;
    top: 0;

    width: 100%;
    height: 100svh;
    min-height: 100svh;

    overflow: hidden;
    display: flex;
    align-items: center;

    padding:
      max(140px, env(safe-area-inset-top))
      0
      max(140px, env(safe-area-inset-bottom));
  }

  /*
   * Text und Bild untereinander.
   */
  .philo-understand__layout {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    grid-template-rows: auto minmax(0, 1fr);

    gap: clamp(1.25rem, 3vh, 2.5rem);

    width: 100%;
    height: 100%;
    max-height: 100%;
  }

  .philo-understand__text {
    width: 100%;
    max-width: none;
  }

  /*
   * Das Bild erhält innerhalb des Sticky-Viewports
   * eine echte, flexible Höhe.
   */
  .philo-understand__visual {
    position: relative;

    display: block;

    overflow: hidden;
  }

  .philo-understand__images,
  .philo-understand__after-mask {
    position: absolute;
    inset: 0;

    width: 100%;
    height: 100%;
  }

  .philo-understand__images {
    overflow: hidden;
  }

  .philo-understand__image {
    position: absolute;
    inset: 0;

    display: block;
    width: 100%;
    height: 100%;

    object-fit: cover;
    object-position: center;
  }

  /*
   * Fertiges Haus wird von oben nach unten sichtbar.
   */
  .philo-understand__after-mask {
    overflow: hidden;

    clip-path: inset(
      0
      0
      calc(
        (1 - var(--understand-image-progress, 0)) * 100%
      )
      0
    );

    will-change: clip-path;
  }

  /*
   * Horizontale rote Übergangslinie.
   */
  .philo-understand__after-mask::before {
    content: "";

    position: absolute;
    z-index: 4;

    top: calc(
      var(--understand-image-progress, 0) * 100%
    );
    left: 0;
    right: 0;

    width: 100%;
    height: 2px;

    background: var(--accent, rgb(224, 32, 38));

    box-shadow:
      0 0 18px rgba(224, 32, 38, 0.28);

    transform: translateY(-1px);

    opacity: clamp(
      0,
      calc(var(--understand-image-progress, 0) * 3),
      1
    );

    pointer-events: none;
  }

  .philo-understand__construction {
    position: absolute;
    z-index: 10;

    top: 7%;
    bottom: 7%;
    left: clamp(1rem, 5vw, 2rem);

    width: min(45%, 190px);
  }

  /*
   * Prinzip bleibt im Sticky-Bereich,
   * ohne das Bild nach unten herauszudrücken.
   */
  .philo-understand .philo-principle--bottom {
    position: absolute;

    left: 50%;
    bottom: clamp(1rem, 3vh, 2rem);

    width: min(
      calc(100% - 2rem),
      760px
    );

    margin: 0;

    transform: translateX(-50%);
    z-index: 20;
  }
}

.philo-scroll-section > * {
    padding-top: var(--header-height);
margin-top: calc(var(--header-height) - 10px);
}

.philo-understand__visual {
    position: relative;

    width: 100%;
    aspect-ratio: 4 / 5;

    overflow: hidden;
}


.philo-principle philo-principle--bottom{
    position: relative;

    display: flex;
    justify-content: center;
    align-items: center;

    min-height: 100svh;

    padding: 8rem var(--philo-gutter);

    background: var(--philo-dark);
    color: var(--philo-white);

    overflow: hidden;
}

.philo-principle philo-principle--bottom{
    max-width: 900px;
    margin: 0;
    border-left: none;
    padding-left: 0;
    text-align: center;
    font-size: clamp(2rem,4vw,4.5rem);

}


/* ---------------------------- */
/* ---------- QUOTES ---------- */
/* ---------------------------- */

.philo-principle > span{
    position:relative;
    display:inline-block;
}

.philo-principle > span::before{
    content:"„";
    position:absolute;
    left:-0.45em;
    top:-0.72em;

    font-size:2.4em;
    line-height:1;
    opacity:.14;
}

.philo-principle > span {
  display: block;

}

.philo-principle .philo-accent {
  display: inline;
  color: rgb(224, 32, 38);
  margin: 0;
}

.philo-scroll-hint{
    position: fixed;
    right: 30px;
    bottom: 30px;
    z-index: 9999;
}


.philo-scroll-ui {
  position: fixed;
  inset: 0;
  z-index: 9999;
  pointer-events: none;
  color: #fff;
  mix-blend-mode: normal;
}

.philo-chapter {
  display: flex !important;
  position: absolute;
  top: 50%;
  right: 15px;
  align-items: center;
  gap: 12px;
  writing-mode: vertical-rl;
  transform: translateY(-50%) rotate(180deg);
}

.philo-chapter {
    text-shadow:
        0 1px 3px rgba(0,0,0,.4),
        0 4px 12px rgba(0,0,0,.25);
}

.section {
  padding-top: 120px;
}

blockquote {
    margin-bottom: 15px !important;
}


/* ==========================================================
   GLOBAL RESPONSIVE PATCH
========================================================== */


/* Container etwas schmaler */
.philo-container{
    width:min(
        calc(100% - clamp(24px,5vw,80px)),
        1400px
    );
}

/* Große Headlines */
.philo-title--hero{
    font-size:clamp(3.2rem,5vw,9rem) !important;
}

.philo-title--huge{
    font-size:clamp(2.8rem,5vw,7.5rem) !important;
}

.philo-title--large{
    font-size:clamp(2.2rem,5vw,5.8rem) !important;
}

/* Fließtext */
.philo-copy,
.philo-intro{
    font-size:clamp(1rem,1.1vw,1.3rem);
}

/* Zitate */
.philo-principle{
    max-width:min(100%,900px);
}



/* Hintergrund-Wörter */
.philo-hero::before,
.philo-understand::before,
.philo-material::before,
.philo-decisions::before,
.philo-respect::before,
.philo-name::before,
.philo-final__background-word{
    font-size:clamp(8rem,18vw,20rem) !important;
}

/* Bilder etwas weniger gezoomt */
.philo-material__image{
    transform:
        scale(calc(1.18 - var(--section-progress)*0.08))
        translate3d(
            calc(var(--mouse-x-local,0)*2vw),
            calc(var(--mouse-y-local,0)*1.5vw),
            0
        ) !important;
}

.philo-respect__media img{
    height:100%;
    transform:
        scale(calc(1.15 - var(--section-progress)*0.08))
        translate3d(
            calc(var(--mouse-x-local,0)*2vw),
            calc(var(--mouse-y-local,0)*1.5vw),
            0
        ) !important;
}

.philo-name__image img{
    transform:
        scale(calc(1.18 - var(--section-progress)*0.12))
        translate3d(
            calc((var(--section-progress)-.5)*-6vw),
            calc(var(--mouse-y-local,0)*1.5vw),
            0
        ) !important;
}



@media (max-width:980px){

.philo-understand__text{
    position:relative;
}

.philo-understand__text > .philo-copy.philo-reveal{

    position:absolute;
    right:2.5rem;

    top:calc(
        45vh - var(--section-progress) * 95vh
    );

    margin:0;
    max-width:min(40vw,280px) !important;
}

}

.philo-respect__sticky{
    overflow: visible;
}

.philo-respect__content{
    overflow: visible;
}

.philo-respect__text{
    overflow: visible;
}

.philo-respect__text{
    overflow: visible;
    padding-bottom: 12px;
}

.philo-respect .philo-title--huge{
    padding-bottom:.15em;
}




@media (max-width:900px){

.philo-respect__values{
    transform:scale(.78);
    transform-origin:top center;
}

}


@media (max-width:900px){

.philo-respect__content{
    padding-bottom:120px;
}

.philo-respect .philo-principle{
    position:relative;
    bottom:auto;
    left:auto;
    right:auto;

    margin-top:2rem;
    max-width:100%;
}

}

.philo-principle--manifest{
    opacity:0;
    transform:translateY(40px) scale(.96);
    filter:blur(8px);
    transition:
        opacity .9s ease,
        transform 1.1s cubic-bezier(.19,1,.22,1),
        filter .9s ease;
}

.philo-principle--manifest.is-visible{
    opacity:1;
    transform:translateY(0) scale(1);
    filter:blur(0);
}

.philo-principle--manifest span{
    position:relative;
        max-width: 80%;

}

.philo-principle--manifest span::after{
    content:"";
    position:absolute;
    left:0;
    bottom:-16px;
    width:100%;
    height:2px;
    background:rgb(224,32,38);

    transform:scaleX(0);
    transform-origin:left;
    transition:transform 1.2s cubic-bezier(.19,1,.22,1);
}

.philo-principle--manifest.is-visible span::after{
    transform:scaleX(1);
}


/* =========================================================
   TECHNISCHE WERKSTATTZEICHNUNG
   ========================================================= */

.philo-blueprint {
    position: relative;
    width: min(620px, 100%);
    min-height: 520px;
    margin-inline: auto;
    padding: 34px 38px 40px;

    color: #17212b;
    background-color: #f3f0df;

    border: 1px solid rgba(23, 33, 43, 0.18);
    box-shadow:
        0 30px 80px rgba(0, 0, 0, 0.28),
        inset 0 0 80px rgba(92, 76, 43, 0.08);

    overflow: hidden;
    isolation: isolate;

    transform: rotate(-0.6deg);
}

/* Karopapier */

.philo-blueprint::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: -2;

    background-image:
        linear-gradient(
            rgba(59, 102, 139, 0.11) 1px,
            transparent 1px
        ),
        linear-gradient(
            90deg,
            rgba(59, 102, 139, 0.11) 1px,
            transparent 1px
        ),
        linear-gradient(
            rgba(59, 102, 139, 0.045) 1px,
            transparent 1px
        ),
        linear-gradient(
            90deg,
            rgba(59, 102, 139, 0.045) 1px,
            transparent 1px
        );

    background-size:
        25px 25px,
        25px 25px,
        5px 5px,
        5px 5px;
}

/* Papierstruktur und leichte Alterung */

.philo-blueprint::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: -1;
    pointer-events: none;

    background:
        radial-gradient(
            circle at 12% 16%,
            rgba(118, 83, 38, 0.08),
            transparent 20%
        ),
        radial-gradient(
            circle at 88% 82%,
            rgba(118, 83, 38, 0.06),
            transparent 24%
        ),
        linear-gradient(
            115deg,
            rgba(255, 255, 255, 0.2),
            transparent 45%
        );

    mix-blend-mode: multiply;
}

/* Kopfzeile */

.bp-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 24px;

    padding-bottom: 16px;
    margin-bottom: 44px;

    border-bottom: 1px solid rgba(23, 33, 43, 0.35);

    font-family: "Courier New", monospace;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.18em;
    text-transform: uppercase;
}

.bp-header span:last-child {
    opacity: 0.55;
    font-weight: 400;
}

/* Dachaufbau */

.bp-drawing {
    position: relative;
    width: 65%;
    margin-left: auto;
    margin-right: 0;
    padding-block: 12px 20px;
}



@media (max-width: 1200px) {
    .bp-drawing {
        width: 90%;
        max-width: 65%;
    }
}

.bp-layer {
    position: relative;
    height: 42px;
    margin-bottom: 11px;

    border-top: 2px solid #17212b;
    border-bottom: 1px solid rgba(23, 33, 43, 0.55);

    transform: scaleX(0);
    transform-origin: left center;

    animation: bpDrawLayer 0.9s
        cubic-bezier(0.77, 0, 0.18, 1) forwards;
}

.bp-layer::before {
    content: "";
    position: absolute;
    left: -9px;
    top: -5px;

    width: 7px;
    height: calc(100% + 9px);

    border-left: 1px solid rgba(23, 33, 43, 0.65);
    border-top: 1px solid rgba(23, 33, 43, 0.65);
    border-bottom: 1px solid rgba(23, 33, 43, 0.65);
}

.bp-layer span {
    position: absolute;
    right: 10px;
    top: 50%;

    transform: translateY(-50%);
    opacity: 0;

    padding-left: 10px;
    background: #f3f0df;

    font-family: "Courier New", monospace;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;

    animation: bpShowText 0.5s ease forwards;
}

/* Unterschiedliche Materialdarstellungen */

.bp-layer--roof {
    background:
        repeating-linear-gradient(
            -35deg,
            rgba(23, 33, 43, 0.14) 0,
            rgba(23, 33, 43, 0.14) 2px,
            transparent 2px,
            transparent 10px
        );

    animation-delay: 0.2s;
}

.bp-layer--roof span {
    animation-delay: 0.85s;
}

.bp-layer--batten {
    height: 27px;

    background:
        repeating-linear-gradient(
            90deg,
            transparent 0,
            transparent 24px,
            rgba(23, 33, 43, 0.35) 24px,
            rgba(23, 33, 43, 0.35) 26px
        );

    animation-delay: 0.45s;
}

.bp-layer--batten span {
    animation-delay: 1.1s;
}

.bp-layer--membrane {
    height: 30px;

    border-top-style: dashed;
    border-bottom-style: dashed;

    animation-delay: 0.7s;
}

.bp-layer--membrane span {
    animation-delay: 1.35s;
}

.bp-layer--deck {
    height: 36px;

    background:
        repeating-linear-gradient(
            0deg,
            rgba(23, 33, 43, 0.08) 0,
            rgba(23, 33, 43, 0.08) 1px,
            transparent 1px,
            transparent 8px
        );

    animation-delay: 0.95s;
}

.bp-layer--deck span {
    animation-delay: 1.6s;
}

.bp-layer--rafter {
    height: 52px;

    background:
        repeating-linear-gradient(
            90deg,
            rgba(23, 33, 43, 0.12) 0,
            rgba(23, 33, 43, 0.12) 18px,
            transparent 18px,
            transparent 34px
        );

    animation-delay: 1.2s;
}

.bp-layer--rafter span {
    animation-delay: 1.85s;
}

/* Begriffe links */

.bp-notes {
    position: absolute;
    left: 38px;
    top: 132px;

    display: flex;
    flex-direction: column;
    gap: 44px;
}

.bp-note {
    position: relative;

    font-family: "Courier New", monospace;
    font-size: 13px;
    font-weight: 700;
    letter-spacing: 0.04em;
    z-index: 99999;
    opacity: 0;
    transform: translateX(-14px);

    animation: bpShowNote 0.55s ease forwards;
}



.bp-note--1 {
    animation-delay: 1.3s;
}

.bp-note--1::after {
    animation-delay: 1.45s;
}

.bp-note--2 {
    animation-delay: 1.55s;
}

.bp-note--2::after {
    animation-delay: 1.7s;
}

.bp-note--3 {
    animation-delay: 1.8s;
}

.bp-note--3::after {
    animation-delay: 1.95s;
}

.bp-note--4 {
    animation-delay: 2.05s;
}

.bp-note--4::after {
    animation-delay: 2.2s;
}

/* Rote Meister-Markierungen */

.bp-red {
    position: absolute;
    inset: 0;
    pointer-events: none;

    color: #bd1f24;
}

.bp-circle {
    position: absolute;
    right: 1px;
    top: 100px;

    width: 420px;
    height: 300px;

    border: 3px solid currentColor;
    border-radius: 50% 44% 53% 47%;

    opacity: 0;
    transform: rotate(-8deg) scale(0.75);

    animation: bpCircle 0.5s ease 2.45s forwards;
}


  @media (max-width: 500px) {
.bp-circle {
    right: -40px;
}
  }

    @media (max-width: 400px) {
.bp-circle {
    right: -60px;
}
  }


.bp-arrow {
    position: absolute;
    right: 72%;
    top: 450px;

    width: 120px;
    height: 2px;
    background: currentColor;

    opacity: 0;

    /* Linie verläuft nach rechts oben */
    transform: rotate(-25deg) scaleX(0);
    transform-origin: left center;

    animation: bpArrow 0.45s ease 2.75s forwards;
}

/* Pfeilspitze jetzt RECHTS */

.bp-arrow::before,
.bp-arrow::after {
    content: "";
    position: absolute;
    right: 0;
    left: auto;

    width: 15px;
    height: 2px;
    background: currentColor;

    transform-origin: right center;
}

.bp-arrow::before {
    transform: rotate(35deg);
}

.bp-arrow::after {
    transform: rotate(-35deg);
}

@keyframes bpArrow {
    to {
        opacity: 0.9;
        transform: rotate(-25deg) scaleX(1);
    }
}

.bp-handwriting {
    position: absolute;
    right: 60%;
    top: 440px;
    text-wrap: nowrap;
    font-family: "Comic Sans MS", "Segoe Print", cursive;
    font-size: 21px;
    font-weight: 700;

    opacity: 0;
    transform: rotate(-6deg) translateY(8px);

    animation: bpHandwriting 0.55s ease 3s forwards;
}

.bp-check {
    position: absolute;
    right: 0;
    top: 420px;

    padding: 9px 15px;

    border: 3px solid currentColor;

    font-family: "Courier New", monospace;
    font-size: 16px;
    font-weight: 900;
    letter-spacing: 0.06em;
    text-transform: uppercase;

    opacity: 0;
    transform: rotate(-5deg) scale(1.3);

    animation: bpStamp 0.38s
        cubic-bezier(0.34, 1.56, 0.64, 1) 3.35s forwards;
}

/* Animationen */

@keyframes bpDrawLayer {
    to {
        transform: scaleX(1);
    }
}

@keyframes bpShowText {
    to {
        opacity: 1;
    }
}

@keyframes bpShowNote {
    to {
        opacity: 1;
        transform: translateX(0);
    }
}

@keyframes bpDrawNoteLine {
    to {
        transform: scaleX(1);
    }
}

@keyframes bpCircle {
    to {
        opacity: 0.9;
        transform: rotate(-8deg) scale(1);
    }
}



@keyframes bpHandwriting {
    to {
        opacity: 1;
        transform: rotate(-6deg) translateY(0);
    }
}

@keyframes bpStamp {
    to {
        opacity: 0.85;
        transform: rotate(-5deg) scale(1);
    }
}

/* Barrierefreiheit */

@media (prefers-reduced-motion: reduce) {
    .bp-layer,
    .bp-layer span,
    .bp-note,
    .bp-note::after,
    .bp-circle,
    .bp-arrow,
    .bp-handwriting,
    .bp-check {
        animation: none;
        opacity: 1;
        transform: none;
    }
}

.philo-blueprint:not(.is-active) .bp-layer,
.philo-blueprint:not(.is-active) .bp-layer span,
.philo-blueprint:not(.is-active) .bp-note,
.philo-blueprint:not(.is-active) .bp-note::after,
.philo-blueprint:not(.is-active) .bp-circle,
.philo-blueprint:not(.is-active) .bp-arrow,
.philo-blueprint:not(.is-active) .bp-handwriting,
.philo-blueprint:not(.is-active) .bp-check {
    animation: none !important;
}

.bp-layer--insulation {
    background-image: url("../bilder/Daemmung.png");
    background-repeat: repeat-x;      /* nur horizontal wiederholen */
    background-size: auto 100%;       /* Höhe = Layerhöhe */
    background-position: center;
}




.philo-blueprint {
    position: relative;
    display: grid;
        right: 2vw;
}

.bp-paper,
.bp-red {
    grid-area: 1 / 1;
}

.bp-paper {
    position: relative;
    width: 100%;
}

.bp-red {
    position: relative;
    inset: auto;
    z-index: 10;
    pointer-events: none;
    color: #bd1f24;
}

@media (max-width: 980px) {
    .philo-blueprint {
        top: -10%;
    }



}

@media (max-width: 380px) {
    .philo-blueprint {
        top: -22%;
    }
}





@media (max-width: 700px) {
    .philo-blueprint {
        transform:scale(.78);
    }
  }


@media (max-width: 500px) {
    .philo-blueprint {
        transform:scale(.68);
                overflow: visible;
    }
  }

  @media (max-width: 375px) {
  .philo-material__sticky {
    min-height: 115svh;
  }
}

  @media (max-width: 337px) {
  .philo-material__sticky {
    min-height: 120svh;
  }
}

  @media (max-width: 287px) {
  .philo-material__sticky {
    min-height: 125svh;
  }
}

  @media (max-width: 900px) {
.philo-principle > span {
    display: block;
    max-width: 90%;
    
  }
}

  @media (max-width: 900px) {
.philo-keywords {
    display: grid;
    max-width: 800px;
    margin: 0;
}
  }

  /* Speicherintensive Effekte entschärfen */
.philo-noise {
  inset: 0;
  width: 100%;
  height: 100%;
  animation: none;
}

.monster-char,
.monster-line__inner {
  will-change: auto;
}