/* ---------- Fonts ---------- */
@font-face {
  font-family: 'Bricolage Grotesque';
  src: url('../fonts/bricolage-latin.woff2') format('woff2');
  font-weight: 200 800;
  font-stretch: 75% 100%;
  font-display: swap;
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Bricolage Grotesque';
  src: url('../fonts/bricolage-latin-ext.woff2') format('woff2');
  font-weight: 200 800;
  font-stretch: 75% 100%;
  font-display: swap;
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* ---------- Tokens ---------- */
:root {
  --terra-950: oklch(0.28 0.07 38);   /* tiefster Ton, Text auf hell */
  --terra-900: oklch(0.34 0.09 36);   /* Wandton dunkel */
  --terra-800: oklch(0.42 0.11 38);   /* Marken-Terracotta, Flächen */
  --terra-700: oklch(0.48 0.12 40);   /* Buttons auf hell */
  --terra-100: oklch(0.93 0.02 45);   /* zarte Tönung */
  --bg:        oklch(0.972 0.008 50); /* warmes Off-White, zur Marken-Hue */
  --ink:       oklch(0.24 0.02 40);
  --ink-soft:  oklch(0.45 0.025 40);
  --paper-w:   oklch(0.97 0.012 60);  /* warmes Weiss auf Terra */
  --line:      oklch(0.88 0.015 50);
  --focus:     oklch(0.55 0.15 250);
}
* { margin: 0; padding: 0; box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  font-family: 'Bricolage Grotesque', 'Avenir Next', 'Segoe UI', system-ui, sans-serif;
  background: var(--bg);
  color: var(--ink);
  font-size: 1.125rem;
  line-height: 1.6;
  font-weight: 400;
  -webkit-font-smoothing: antialiased;
}
::selection { background: var(--terra-700); color: var(--paper-w); }
:focus-visible { outline: 3px solid var(--focus); outline-offset: 3px; }
img { max-width: 100%; display: block; }
a { color: var(--terra-700); }
h1, h2, h3 { text-wrap: balance; line-height: 1.08; letter-spacing: -0.02em; }
.wrap { max-width: 1240px; margin-inline: auto; padding-inline: clamp(20px, 4vw, 48px); }

/* ---------- Header ---------- */
.site-head {
  position: fixed; inset: 0 0 auto 0; z-index: 50;
  transition: background .35s ease, box-shadow .35s ease;
}
.site-head .wrap {
  display: flex; align-items: center; justify-content: space-between;
  padding-block: 18px;
  transition: padding .4s cubic-bezier(.22,1,.36,1);
}
.brand { display: flex; flex-direction: column; text-decoration: none; line-height: 1.1; }
.brand strong { font-size: 1.35rem; font-weight: 750; letter-spacing: 0.01em; color: var(--paper-w); transition: color .35s ease, font-size .4s cubic-bezier(.22,1,.36,1); }
.brand span { font-size: 0.78rem; color: oklch(0.9 0.02 60 / 0.85); font-weight: 450; transition: color .35s ease; }
.site-nav { display: flex; align-items: center; gap: clamp(16px, 2.5vw, 32px); }
.site-nav a.nav-link {
  color: var(--paper-w); text-decoration: none; font-weight: 500; font-size: 1rem;
  opacity: .92; transition: color .35s ease, opacity .2s ease;
}
.site-nav a.nav-link:hover { opacity: 1; }
.btn {
  display: inline-block; text-decoration: none; font-weight: 650;
  border-radius: 999px; padding: 13px 26px; font-size: 1.02rem;
  transition: transform .25s cubic-bezier(.22,1,.36,1), background .25s ease, color .25s ease;
}
.btn:hover { transform: translateY(-2px); }
.btn-head { background: var(--paper-w); color: var(--terra-800); padding: 11px 22px; }
.site-head.scrolled { background: oklch(0.972 0.008 50 / 0.92); backdrop-filter: blur(10px); box-shadow: 0 1px 0 var(--line); }
.site-head.scrolled .brand strong, .site-head.scrolled .site-nav a.nav-link { color: var(--ink); }
.site-head.scrolled .brand span { color: var(--ink-soft); }
.site-head.scrolled .btn-head { background: var(--terra-700); color: var(--paper-w); }
.site-head.scrolled .wrap { padding-block: 10px; }
.site-head.scrolled .brand strong { font-size: 1.15rem; }
.site-head.scrolled .brand span { font-size: 0.72rem; }
@media (max-width: 760px) { .site-nav a.nav-link { display: none; } }

/* ---------- Hero ---------- */
.hero {
  position: relative; min-height: 100svh;
  display: flex; align-items: flex-start;
  overflow: clip; color: var(--paper-w);
}
.hero-media { position: absolute; inset: 0; z-index: 0; }
.hero-media img { width: 100%; height: 100%; object-fit: cover; object-position: 62% 65%; }
.hero-video {
  position: absolute; inset: 0; width: 100%; height: 100%;
  object-fit: cover; object-position: 62% 65%;
  opacity: 0; transition: opacity 1.2s ease;
}
.hero-video.playing { opacity: 1; }
.hero-media::after {
  content: ""; position: absolute; inset: 0;
  background:
    linear-gradient(115deg, oklch(0.24 0.06 36 / 0.72) 0%, oklch(0.24 0.06 36 / 0.38) 38%, transparent 62%),
    linear-gradient(to top, oklch(0.24 0.06 36 / 0.35), transparent 30%);
}
.hero-inner { position: relative; z-index: 1; width: 100%; padding-top: clamp(110px, 16vh, 170px); padding-bottom: 64px; }
.hero-kicker { font-size: 1.02rem; font-weight: 550; opacity: .92; margin-bottom: 22px; }
.hero h1 {
  font-size: clamp(2.7rem, 6.2vw, 5.6rem);
  font-weight: 720;
  max-width: 12ch;
  margin-bottom: 28px;
}
.hero h1 .line { display: block; overflow: clip; }
.hero h1 .line > span { display: inline-block; }
.hero-sub {
  max-width: 46ch; font-size: clamp(1.1rem, 1.5vw, 1.3rem); line-height: 1.55;
  color: oklch(0.96 0.015 60 / 0.95); margin-bottom: 36px; font-weight: 420;
}
.hero-cta { display: flex; align-items: center; gap: 28px; flex-wrap: wrap; margin-bottom: 44px; }
.btn-hero { background: var(--paper-w); color: var(--terra-800); font-size: 1.1rem; padding: 16px 32px; }
.hero-alt { color: var(--paper-w); font-weight: 550; text-decoration: none; border-bottom: 1.5px solid oklch(0.96 0.015 60 / 0.55); padding-bottom: 3px; }
.hero-alt:hover { border-color: var(--paper-w); }
.hero-trust { font-size: 0.92rem; color: oklch(0.94 0.02 60 / 0.85); font-weight: 450; }

/* ---------- Problem ---------- */
.problem { padding-block: clamp(110px, 15vw, 190px); }
.problem .wrap { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: clamp(40px, 6vw, 96px); align-items: start; }
.problem h2 { font-size: clamp(2rem, 3.6vw, 3.2rem); font-weight: 680; max-width: 14ch; }
.problem-lines { display: flex; flex-direction: column; }
.problem-line {
  padding-block: 30px; border-bottom: 1px solid var(--line);
  font-size: clamp(1.25rem, 2vw, 1.7rem); line-height: 1.4; font-weight: 480;
  color: var(--ink); max-width: 30ch; text-wrap: pretty;
}
.problem-line:first-child { padding-top: 6px; }
.problem-line em { font-style: normal; color: var(--terra-700); font-weight: 650; }
@media (max-width: 860px) { .problem .wrap { grid-template-columns: 1fr; } }

/* ---------- Use-Cases ---------- */
.usecases { padding-bottom: clamp(110px, 14vw, 180px); }
.usecases-head { margin-bottom: clamp(36px, 5vw, 64px); display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: 32px; align-items: end; }
.usecases-head h2 { font-size: clamp(2.2rem, 4.4vw, 3.8rem); font-weight: 700; }
.usecases-head p { color: var(--ink-soft); font-size: 1.1rem; max-width: 40ch; justify-self: end; }
.usecases-grid { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: clamp(36px, 5vw, 80px); align-items: start; }
.usecases-visual { position: sticky; top: 110px; border-radius: 14px; overflow: hidden; }
.usecases-visual img { aspect-ratio: 4 / 3.4; object-fit: cover; width: 100%; }
.usecases-visual figcaption { font-size: .88rem; color: var(--ink-soft); padding-top: 12px; }
.uc-list { list-style: none; }
.uc-row { border-bottom: 1px solid var(--line); }
.uc-row:first-child { border-top: 1px solid var(--line); }
.uc-row button {
  all: unset; box-sizing: border-box; cursor: pointer; display: flex; width: 100%;
  align-items: baseline; gap: 18px; padding: 22px 6px;
}
.uc-row button:focus-visible { outline: 3px solid var(--focus); outline-offset: -3px; }
.uc-dot { width: 10px; height: 10px; flex: none; border-radius: 50%; background: var(--terra-700); transform: translateY(-2px); transition: transform .3s cubic-bezier(.22,1,.36,1); }
.uc-title { font-size: clamp(1.2rem, 1.8vw, 1.55rem); font-weight: 620; flex: 1; }
.uc-mark { font-size: 1.4rem; font-weight: 300; color: var(--ink-soft); transition: transform .35s cubic-bezier(.22,1,.36,1); }
.uc-body { display: grid; grid-template-rows: 0fr; transition: grid-template-rows .45s cubic-bezier(.22,1,.36,1); }
.uc-body > div { overflow: hidden; }
.uc-body p { color: var(--ink-soft); font-size: 1.08rem; max-width: 52ch; padding: 0 6px 24px 28px; }
.uc-row.open .uc-body { grid-template-rows: 1fr; }
.uc-row.open .uc-mark { transform: rotate(45deg); }
.uc-row.open .uc-dot { transform: translateY(-2px) scale(1.5); }
.uc-foot { padding-top: 26px; color: var(--ink-soft); font-size: 1.05rem; max-width: 56ch; }
@media (max-width: 960px) {
  .usecases-grid { grid-template-columns: 1fr; }
  .usecases-visual { position: static; max-width: 560px; }
  .usecases-head { grid-template-columns: 1fr; }
  .usecases-head p { justify-self: start; }
}

/* ---------- Statement-Band ---------- */
.statement { background: var(--terra-800); color: var(--paper-w); padding-block: clamp(96px, 13vw, 170px); overflow: clip; }
.statement p.big {
  font-size: clamp(2rem, 4.6vw, 4rem); font-weight: 700; line-height: 1.12;
  letter-spacing: -0.02em; max-width: 22ch; text-wrap: balance;
}
.statement p.small { margin-top: 26px; font-size: 1.15rem; color: oklch(0.95 0.02 60 / 0.9); max-width: 52ch; font-weight: 420; }

/* ---------- Angebot ---------- */
.offer { padding-block: clamp(110px, 14vw, 180px); }
.offer h2 { font-size: clamp(2.2rem, 4.4vw, 3.8rem); font-weight: 700; margin-bottom: clamp(40px, 6vw, 72px); }
.steps { list-style: none; display: grid; grid-template-columns: repeat(4, 1fr); gap: 0; border-top: 1px solid var(--line); counter-reset: step; }
.step { padding: 34px clamp(22px, 2.5vw, 36px) 40px; border-right: 1px solid var(--line); counter-increment: step; display: flex; flex-direction: column; }
.step:first-child { padding-left: 0; }
.step:last-child { border-right: 0; padding-right: 0; }
.step::before {
  content: counter(step, decimal-leading-zero);
  font-size: 0.95rem; font-weight: 650; color: var(--terra-700);
  font-variant-numeric: tabular-nums; margin-bottom: 20px;
}
.step h3 { font-size: 1.3rem; font-weight: 650; margin-bottom: 8px; }
.step .price { font-size: clamp(1.5rem, 2.2vw, 2rem); font-weight: 720; letter-spacing: -0.01em; margin-bottom: 14px; }
.step .price small { font-size: 0.6em; font-weight: 500; color: var(--ink-soft); }
.step p { color: var(--ink-soft); font-size: 1.02rem; flex: 1; text-wrap: pretty; }
.step .note { margin-top: 16px; font-size: 0.92rem; color: var(--terra-700); font-weight: 550; flex: none; }
.step.hot { background: var(--terra-100); border-radius: 0 0 14px 14px; padding-inline: clamp(18px, 2vw, 30px); box-shadow: inset 0 3px 0 var(--terra-700); }
@media (max-width: 1020px) {
  .steps { grid-template-columns: 1fr 1fr; }
  .step { border-bottom: 1px solid var(--line); }
  .step:nth-child(odd) { padding-left: 0; }
  .step:nth-child(even) { border-right: 0; padding-right: 0; }
}
@media (max-width: 620px) { .steps { grid-template-columns: 1fr; } .step { border-right: 0; padding-inline: 0; } }

/* ---------- Team ---------- */
.team { padding-block: clamp(110px, 14vw, 180px); }
.team h2 { font-size: clamp(2.2rem, 4.4vw, 3.8rem); font-weight: 700; margin-bottom: clamp(40px, 5vw, 64px); max-width: 16ch; }
.team-grid { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(32px, 5vw, 80px); }
.person { display: flex; flex-direction: column; gap: 16px; }
.person .portrait { margin-bottom: 18px; }
.person .portrait {
  width: 132px; height: 132px; border-radius: 50%;
  background: var(--terra-100); color: var(--terra-800);
  display: grid; place-items: center; font-weight: 700; font-size: 1.7rem;
}
.person h3 { font-size: 1.45rem; font-weight: 680; }
.person p { color: var(--ink-soft); max-width: 44ch; text-wrap: pretty; }
@media (max-width: 720px) { .team-grid { grid-template-columns: 1fr; } }

/* ---------- FAQ ---------- */
.faq { padding-bottom: clamp(110px, 14vw, 180px); }
.faq h2 { font-size: clamp(2.2rem, 4.4vw, 3.8rem); font-weight: 700; margin-bottom: clamp(36px, 5vw, 56px); max-width: 18ch; }
.faq-list { max-width: 820px; }
.faq-item { border-bottom: 1px solid var(--line); }
.faq-item:first-of-type { border-top: 1px solid var(--line); }
.faq-item summary {
  cursor: pointer; list-style: none; display: flex; align-items: baseline; gap: 16px;
  padding: 22px 6px; font-size: clamp(1.15rem, 1.6vw, 1.4rem); font-weight: 620;
}
.faq-item summary::-webkit-details-marker { display: none; }
.faq-item summary::after { content: "+"; margin-left: auto; font-weight: 300; font-size: 1.4rem; color: var(--ink-soft); transition: transform .35s cubic-bezier(.22,1,.36,1); }
.faq-item[open] summary::after { transform: rotate(45deg); }
.faq-item summary:focus-visible { outline: 3px solid var(--focus); outline-offset: -3px; }
.faq-item .faq-a { padding: 0 6px 26px; color: var(--ink-soft); max-width: 62ch; text-wrap: pretty; }

/* ---------- Finale ---------- */
.finale { background: var(--terra-900); color: var(--paper-w); overflow: clip; }
.finale .wrap { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: clamp(40px, 6vw, 90px); align-items: center; padding-block: clamp(96px, 12vw, 160px); }
.finale h2 { font-size: clamp(2.3rem, 4.6vw, 4rem); font-weight: 720; margin-bottom: 24px; max-width: 15ch; }
.finale p { color: oklch(0.95 0.02 60 / 0.92); max-width: 46ch; margin-bottom: 40px; font-size: 1.15rem; font-weight: 420; }
.finale .btn-hero { font-size: 1.12rem; }
.finale .mailline { margin-top: 22px; font-size: 1rem; color: oklch(0.93 0.02 60 / 0.85); }
.finale .mailline a { color: var(--paper-w); }
.finale-visual { border-radius: 16px; overflow: hidden; }
.finale-visual img { aspect-ratio: 4/3; object-fit: cover; }
.site-foot { border-top: 1px solid oklch(0.95 0.02 60 / 0.18); }
.site-foot .wrap { padding-block: 30px; font-size: 0.92rem; color: oklch(0.93 0.02 60 / 0.75); display: flex; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
.site-foot a { color: oklch(0.95 0.02 60 / 0.9); }
@media (max-width: 900px) { .finale .wrap { grid-template-columns: 1fr; } .finale-visual { max-width: 480px; } }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { transition-duration: 0.01ms !important; animation-duration: 0.01ms !important; }
}

/* ---------- Angebots-Details ---------- */
.step .meta { margin-top: 14px; font-size: 0.9rem; color: var(--ink-soft); flex: none; }

/* ---------- ROI-Rechner ---------- */
.roi { background: var(--terra-100); padding-block: clamp(96px, 13vw, 170px); }
.roi-grid { display: grid; grid-template-columns: minmax(0, 6fr) minmax(0, 5fr); gap: clamp(40px, 6vw, 96px); align-items: start; }
.roi h2 { font-size: clamp(2rem, 3.8vw, 3.2rem); font-weight: 700; margin-bottom: 16px; max-width: 16ch; }
.roi-intro { color: var(--ink-soft); max-width: 44ch; margin-bottom: 40px; }
.roi-inputs { display: flex; flex-direction: column; gap: 28px; }
.roi-inputs label { font-weight: 600; font-size: 1.02rem; display: block; }
.roi-slider { display: flex; align-items: center; gap: 18px; margin-top: 10px; }
.roi-slider input[type="range"] { flex: 1; accent-color: var(--terra-700); height: 6px; cursor: pointer; }
.roi-slider output { font-weight: 700; font-variant-numeric: tabular-nums; min-width: 5.5ch; text-align: right; font-size: 1.1rem; }
.roi-result { background: var(--terra-800); color: var(--paper-w); border-radius: 16px; padding: clamp(32px, 4vw, 48px); position: sticky; top: 110px; }
.roi-label { font-size: 1.02rem; color: oklch(0.95 0.02 60 / 0.85); margin-bottom: 10px; }
.roi-number { font-size: clamp(2.6rem, 4.5vw, 4rem); font-weight: 750; letter-spacing: -0.02em; line-height: 1.05; font-variant-numeric: tabular-nums; margin-bottom: 10px; }
.roi-hours { font-size: 1rem; color: oklch(0.95 0.02 60 / 0.85); margin-bottom: 30px; }
.btn-roi { background: var(--paper-w); color: var(--terra-800); }
.roi-note { margin-top: 20px; font-size: 0.92rem; color: oklch(0.95 0.02 60 / 0.8); max-width: 34ch; }
@media (max-width: 900px) { .roi-grid { grid-template-columns: 1fr; } .roi-result { position: static; } }

/* ---------- Unterseiten ---------- */
.subhero { padding-top: clamp(140px, 20vh, 220px); padding-bottom: clamp(56px, 8vw, 96px); }
.subhero h1 { font-size: clamp(2.4rem, 5vw, 4.4rem); font-weight: 720; max-width: 16ch; margin-bottom: 24px; }
.subhero .lead { font-size: clamp(1.15rem, 1.6vw, 1.35rem); color: var(--ink-soft); max-width: 52ch; }
.subvisual { border-radius: 16px; overflow: hidden; }
.subvisual img { width: 100%; aspect-ratio: 21/9; object-fit: cover; }
.site-head.solid { background: oklch(0.972 0.008 50 / 0.92); backdrop-filter: blur(10px); box-shadow: 0 1px 0 var(--line); }
.site-head.solid .brand strong, .site-head.solid .site-nav a.nav-link { color: var(--ink); }
.site-head.solid .brand span { color: var(--ink-soft); }
.site-head.solid .btn-head { background: var(--terra-700); color: var(--paper-w); }

/* ---------- Wort-Reveal (terra.js) ---------- */
.w { display: inline-block; overflow: clip; padding-bottom: 0.12em; margin-bottom: -0.12em; }
.w > span { display: inline-block; }

/* ---------- Angebots-Stufen: Mehr-Links ---------- */
.step .more { margin-top: 18px; font-weight: 600; font-size: 0.98rem; text-decoration: none; color: var(--terra-700); flex: none; }
.step .more:hover { text-decoration: underline; }

/* ---------- Scroll-Fortschritt ---------- */
.scroll-progress {
  position: fixed; top: 0; left: 0; right: 0; height: 3px;
  background: var(--terra-700);
  transform-origin: left; transform: scaleX(0);
  z-index: 60; pointer-events: none;
}
