/* =========================================================
   nicistuff_ — styles.css
   Dunkel #0D0D0D · Schrift #F2EFE9 · Signature Gold #DDA43C
   Dunkler Look wie philippreitz.com, Gold aus dem eigenen Leadsheet.
   Leitmotiv: das 9:16-Hochformat — Nic macht Reels.
   Gold ist Akzent, nie Fläche. Radien überall 2px, keine weichen Ecken.
   ========================================================= */

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

:root{
  /* Dunkel wie philippreitz.com. Die Variablennamen bleiben, nur die Werte
     drehen: --ink ist jetzt die helle Schriftfarbe auf dunklem Grund. */
  --bg:#0D0D0D;
  --surface:#171717;
  --ink:#F2EFE9;
  --ink-70:rgba(242,239,233,.72);
  --ink-50:rgba(242,239,233,.52);
  --ink-35:rgba(242,239,233,.38);
  --line:rgba(242,239,233,.14);
  --line-soft:rgba(242,239,233,.08);
  --gold:#DDA43C;
  --gold-ink:#E5B25A;
  --lake:#8FB3C9;

  /* Display: Archivo, im Leadsheet der Ersatz für Britti Sans. Body: Geist. */
  --font:'Geist',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Arial,sans-serif;
  --display:'Archivo','Geist',-apple-system,'Segoe UI',Arial,sans-serif;

  /* harte Ecken statt weicher Radien */
  --r-btn:2px;
  --r-input:2px;
  --r-card:2px;

  --max:105rem;
  --pad:clamp(1.25rem,5vw,3.5rem);
  --section:clamp(4.5rem,10vw,8rem);
  --ease:cubic-bezier(.22,1,.36,1);
}

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{
  background:var(--bg);color:var(--ink-70);font-family:var(--font);
  font-size:clamp(1rem,.97rem + .15vw,1.0625rem);line-height:1.62;
  -webkit-font-smoothing:antialiased;overflow-x:hidden;
  font-feature-settings:"ss01","cv01";
}
img,video,svg{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
::selection{background:var(--gold);color:#0D0D0D}

/* ---------- Typografie ---------- */
h1,h2,h3,h4{font-family:var(--display);color:var(--ink);font-weight:700;letter-spacing:-.03em;line-height:1.02;text-wrap:balance}
h1,h2{font-stretch:92%}
h1{font-size:clamp(2.45rem,6.2vw,4.5rem)}
h2{font-size:clamp(2rem,4.6vw,3.35rem)}
h3{font-size:clamp(1.2rem,1.8vw,1.5rem);letter-spacing:-.018em;line-height:1.12;font-weight:600}
h4{font-size:1.0625rem;letter-spacing:-.012em}
p{max-width:34em}
em,.italic{font-style:italic}
strong{color:var(--ink);font-weight:600}
.gold{color:var(--gold-ink)}
.lede{font-size:clamp(1.0625rem,1rem + .45vw,1.3125rem);line-height:1.5;color:var(--ink-70);max-width:32em}

.eyebrow{
  display:block;font-size:.7rem;font-weight:600;letter-spacing:.16em;
  text-transform:uppercase;color:var(--ink-35);
}
.eyebrow b{color:var(--ink);font-weight:600;font-variant-numeric:tabular-nums}
.shead .eyebrow{white-space:nowrap}
.eyebrow--lake{color:var(--lake)}
.num{font-variant-numeric:tabular-nums;letter-spacing:-.03em}

/* ---------- Layout ---------- */
.wrap{max-width:var(--max);margin-inline:auto;padding-inline:var(--pad)}
.section{padding-block:var(--section)}
.section + .section{padding-top:0}
.rule{border-top:1px solid var(--line)}

/* Sektionskopf: Label über dem Titel, alles bündig am linken Rand.
   Keine Label-Spalte mehr, die den Titel in die Mitte schiebt. */
.shead{display:grid;gap:.8rem;margin-bottom:clamp(2rem,4vw,3.25rem)}
.shead__right{display:flex;align-items:baseline;justify-content:space-between;gap:1.5rem 2rem;flex-wrap:wrap}

.more{
  display:inline-flex;align-items:center;gap:.5rem;height:44px;padding:0 1.15rem;
  border:1.5px solid var(--ink);border-radius:var(--r-btn);
  font-size:.875rem;font-weight:600;letter-spacing:.01em;color:var(--ink);white-space:nowrap;
  transition:background .2s var(--ease),color .2s var(--ease);
}
.more::after{content:"→";font-size:1em;line-height:1;transition:transform .35s var(--ease)}
.more:hover::after{transform:translateX(4px)}
.more:hover{background:var(--ink);color:var(--bg)}

/* ---------- Skip-Link ---------- */
.skip{position:absolute;left:-9999px;top:0;z-index:300;background:var(--ink);color:var(--bg);padding:.7rem 1.1rem;border-radius:0 0 10px 0}
.skip:focus{left:0}
:focus-visible{outline:2px solid var(--gold);outline-offset:3px;border-radius:4px}

/* ---------- Cursor (nur Zeigegeräte) ---------- */
.cursor-dot{
  position:fixed;top:0;left:0;z-index:400;width:10px;height:10px;border-radius:50%;
  background:#fff;mix-blend-mode:difference;pointer-events:none;opacity:0;
  transform:translate(-50%,-50%);
  transition:width .2s var(--ease),height .2s var(--ease),opacity .2s var(--ease);
}
.cursor-dot.on{opacity:1}
.cursor-dot.grow{width:44px;height:44px}
html.has-cursor,html.has-cursor *{cursor:none}

/* ---------- Header ---------- */
.hdr{
  position:sticky;top:0;z-index:100;background:var(--bg);
  border-bottom:1px solid transparent;
  transition:border-color .25s var(--ease);
}
.hdr.stuck{border-bottom-color:var(--line)}
.hdr__in{display:flex;align-items:center;gap:1.5rem;height:64px;max-width:var(--max);margin-inline:auto;padding-inline:var(--pad)}
.brand{
  font-family:var(--display);font-weight:800;font-stretch:88%;text-transform:uppercase;
  letter-spacing:-.02em;color:var(--ink);font-size:.95rem;margin-right:auto;line-height:1;
}
.brand span{font-size:.62em;vertical-align:super;font-weight:600;letter-spacing:.02em}
.nav{display:none;gap:1.75rem}
.nav a{position:relative;font-size:.875rem;font-weight:500;color:var(--ink-50);transition:color .22s var(--ease)}
.nav a::before{content:"";position:absolute;left:0;bottom:-6px;height:1.5px;width:0;background:var(--ink);transition:width .3s var(--ease)}
.nav a:hover{color:var(--ink)}
.nav a:hover::before{width:100%}
.nav a[aria-current="page"]{color:var(--ink)}
.nav a[aria-current="page"]::after{content:"";display:block;height:2px;background:var(--gold);margin-top:4px;border-radius:2px}
@media(min-width:900px){.nav{display:flex}}

.lang{display:flex;align-items:center;border:1px solid var(--line);border-radius:2px;overflow:hidden}
.lang button{
  font:inherit;font-size:.72rem;font-weight:600;letter-spacing:.06em;
  background:none;border:0;color:var(--ink-35);padding:.3rem .55rem;cursor:pointer;
  transition:color .18s var(--ease),background .18s var(--ease);
}
.lang button.is-active{background:var(--ink);color:var(--bg)}
html.has-cursor .lang button{cursor:none}

.burger{
  display:grid;place-content:center;gap:5px;width:40px;height:40px;margin-right:-.5rem;
  background:none;border:0;cursor:pointer;
}
.burger span{display:block;width:20px;height:1.5px;background:var(--ink);transition:transform .25s var(--ease),opacity .25s var(--ease)}
.burger[aria-expanded="true"] span:first-child{transform:translateY(3.25px) rotate(45deg)}
.burger[aria-expanded="true"] span:last-child{transform:translateY(-3.25px) rotate(-45deg)}
@media(min-width:900px){.burger{display:none}}

.mobile{
  position:fixed;inset:64px 0 auto;z-index:99;background:var(--bg);border-bottom:1px solid var(--line);
  display:grid;padding:1rem var(--pad) 2rem;
  transform:translateY(-8px);opacity:0;pointer-events:none;transition:opacity .22s var(--ease),transform .22s var(--ease);
}
.mobile.open{opacity:1;transform:none;pointer-events:auto}
.mobile a{padding:.85rem 0;font-size:1.35rem;font-weight:500;color:var(--ink);letter-spacing:-.02em;border-bottom:1px solid var(--line-soft)}

/* ---------- Buttons ---------- */
.btn{
  --h:52px;
  display:inline-flex;align-items:center;justify-content:center;gap:.55rem;
  height:var(--h);padding:0 1.5rem;border-radius:var(--r-btn);
  border:1.5px solid transparent;font:inherit;font-size:.9375rem;font-weight:500;
  cursor:pointer;background:none;color:var(--ink);white-space:nowrap;
  transition:background .2s var(--ease),border-color .2s var(--ease),color .2s var(--ease),transform .12s var(--ease);
}
html.has-cursor .btn{cursor:none}

.btn--primary{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.btn--primary:hover{background:#fff;border-color:#fff}
.btn--ghost{border-color:var(--line)}
.btn--ghost:hover{border-color:var(--ink);background:rgba(242,239,233,.06)}
.btn--sm{--h:42px;padding:0 1.1rem;font-size:.875rem}

/* ---------- Wortmarke ----------
   Der Name als Bildelement, edge to edge. Trägt die Seite optisch,
   damit sie nicht von Dekoration leben muss. */
.mark{
  display:block;font-family:var(--display);font-weight:800;font-stretch:88%;
  text-transform:uppercase;letter-spacing:-.045em;line-height:.8;white-space:nowrap;
  /* 7.522 ist die gemessene Breite von "Nicolas Wernli" in em bei diesem
     Schnitt. Bezugsgrösse ist die Inhaltsspalte, damit der Name exakt
     mit Navigation und Fliesstext bündig steht. */
  font-size:calc((min(100vw, var(--max)) - 2 * var(--pad) - 4px) / 7.522);
}

/* ---------- Hero: Vollbild-Film ---------- */
.film{
  position:relative;overflow:hidden;background:#0D0D0D;
  /* Genau der Rest unter der Kopfzeile: beim Öffnen sieht man nur Video und Text.
     svh statt vh, damit die Adressleiste auf dem Handy nichts verschiebt. */
  min-height:calc(100vh - 64px);
  min-height:calc(100svh - 64px);
  display:grid;grid-template-rows:1fr auto;align-items:end;
}
.film__bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.film::after{
  content:"";position:absolute;inset:0;
  background:
    linear-gradient(to top,rgba(8,8,10,.86) 0%,rgba(8,8,10,.55) 38%,rgba(8,8,10,.28) 70%,rgba(8,8,10,.22) 100%),
    linear-gradient(to right,rgba(8,8,10,.5) 0%,rgba(8,8,10,0) 62%);
}
.film__in{position:relative;z-index:2;width:100%;padding-top:clamp(2.5rem,6vw,4.5rem)}
/* Variante für die Startseite: Inhalt sitzt unten, direkt über der Wortmarke */
.film__in--low{align-self:end;padding-top:0;padding-bottom:clamp(2.5rem,5vw,4rem)}
.film__in--low .film__cta{margin-top:1.4rem}
.film__mark{position:relative;z-index:2;color:#F2EFE9;width:100%;max-width:var(--max);margin-inline:auto;padding:0 var(--pad) .05em}
.film__rail{display:flex;justify-content:space-between;gap:2rem;align-items:baseline;
  padding-bottom:.9rem;margin-bottom:1.6rem;border-bottom:1px solid rgba(242,239,233,.22)}
@media(max-width:699px){.film__rail{flex-direction:column;align-items:flex-start;gap:.35rem}}
.film__rail .eyebrow{line-height:1.5}   /* sonst schneidet der Unterstrich im Handle ab */
.film h1{color:#F2EFE9;max-width:16ch;font-size:clamp(2rem,4.4vw,4.4rem);font-weight:700;font-stretch:92%;letter-spacing:-.032em;line-height:1.02}
.film .eyebrow{color:rgba(242,239,233,.6)}
.film__sub{color:rgba(242,239,233,.82);font-size:clamp(1rem,.95rem + .4vw,1.2rem);max-width:34em;margin-top:1.1rem}
.film__cta{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:2rem}
.film__note{
  position:absolute;left:0;right:0;top:1.5rem;z-index:2;text-align:right;
  max-width:var(--max);margin-inline:auto;padding-inline:var(--pad);
  font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;color:rgba(242,239,233,.5);
}
.btn--light{background:#F2EFE9;color:#0D0D0D;border-color:#F2EFE9}
.btn--light:hover{background:#fff;border-color:#fff}
.btn--onFilm{border-color:rgba(242,239,233,.45);color:#F2EFE9}
.btn--onFilm:hover{border-color:#F2EFE9;background:rgba(242,239,233,.12)}

/* Seitenkopf der Unterseiten */
.phead{padding-block:clamp(3rem,6vw,5rem) clamp(2rem,4vw,3rem)}
.phead h1{margin:.85rem 0 1.25rem;max-width:17ch}

/* ---------- 9:16-Rahmen: das Leitmotiv ---------- */
.vframe{
  position:relative;aspect-ratio:9/16;border-radius:var(--r-card);overflow:hidden;
  background:var(--surface);border:1px solid var(--line-soft);
}
.vframe video,.vframe img{width:100%;height:100%;object-fit:cover}
.vframe--hero{width:min(100%,340px);margin-inline:auto}
@media(min-width:900px){.vframe--hero{width:min(100%,380px);margin-inline:auto 0}}
.vframe__sound{
  position:absolute;right:.75rem;bottom:.75rem;z-index:2;
  display:grid;place-content:center;width:40px;height:40px;border-radius:50%;
  background:rgba(20,20,20,.7);color:#fff;border:0;cursor:pointer;
  transition:background .2s var(--ease);
}
.vframe__sound:hover{background:rgba(20,20,20,.8)}
html.has-cursor .vframe__sound{cursor:none}

/* ---------- Zahlenband ---------- */
.stats{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;background:var(--line);border-block:1px solid var(--line)}
@media(min-width:760px){.stats{grid-template-columns:repeat(4,1fr)}}
.stat{background:var(--bg);padding:clamp(1.5rem,3vw,2.25rem) clamp(1rem,2vw,1.5rem)}
.stat__n{display:block;color:var(--ink);font-size:clamp(1.9rem,4vw,2.9rem);font-weight:600;letter-spacing:-.04em;line-height:1}
.stat__l{display:block;margin-top:.55rem;font-size:.78rem;color:var(--ink-50);line-height:1.35}
.stats__note{padding-top:.9rem;font-size:.75rem;color:var(--ink-35)}

/* ---------- Reel-Karten ----------
   Bewusst kleines Vorschaubild, grosse Zahl: die Screenshots sind nicht
   hochauflösend, die Reichweite ist das Argument. */
.reels{display:grid;gap:1px;background:var(--line);border-block:1px solid var(--line)}
@media(min-width:640px){.reels{grid-template-columns:repeat(2,1fr)}}
@media(min-width:1040px){.reels{grid-template-columns:repeat(2,1fr)}}
.reel{
  display:grid;grid-template-columns:82px minmax(0,1fr);gap:.15rem 1.1rem;align-items:start;
  background:var(--bg);padding:clamp(1.1rem,2vw,1.5rem);transition:background .2s var(--ease);
}
.reel > *{grid-column:2}                      /* alles Textliche in die zweite Spalte */
.reel .vframe{grid-column:1;grid-row:1 / -1;align-self:start}
.reel:hover{background:var(--surface)}
.reel .vframe{border:0;border-radius:2px}
.reel__meta{display:flex;align-items:baseline;justify-content:space-between;gap:.75rem;flex-wrap:wrap}
.reel__title{color:var(--ink);font-weight:600;font-size:.9375rem;letter-spacing:-.012em}
.reel__tag{font-size:.66rem;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-35);white-space:nowrap}
.reel__nums{display:flex;gap:1.5rem;margin-top:.75rem}
.reel__nums span{display:grid;gap:.1rem}
.reel__nums b{
  font-family:var(--display);color:var(--ink);font-weight:700;font-stretch:92%;
  font-size:clamp(1.25rem,2.2vw,1.6rem);letter-spacing:-.03em;line-height:1;
  font-variant-numeric:tabular-nums;
}
.reel__nums i{font-style:normal;font-size:.66rem;letter-spacing:.11em;text-transform:uppercase;color:var(--ink-35)}
.reel__note{margin-top:.7rem;font-size:.8125rem;line-height:1.4;color:var(--ink-50);max-width:none}
.reel__collab{color:var(--ink-35);white-space:nowrap}

/* ---------- Vorschau-Raster (Startseite) ----------
   Bild, Titel, eine Zeile Meta. Mehr nicht. Die Details stehen auf /projects. */
.work{display:grid;gap:clamp(1.75rem,3vw,2.75rem)}
@media(min-width:760px){.work{grid-template-columns:repeat(2,1fr)}}
.work__item{display:block}
.work__img{aspect-ratio:16/10;overflow:hidden;background:var(--surface);border-radius:var(--r-card)}
.work__img img{width:100%;height:100%;object-fit:cover;transition:transform .8s var(--ease)}
.work__item:hover .work__img img{transform:scale(1.035)}
.work__t{display:block;margin-top:1rem;color:var(--ink);font-weight:500;font-size:1.0625rem;letter-spacing:-.015em;transition:color .3s var(--ease)}
.work__m{display:block;margin-top:.3rem;font-size:.875rem;color:var(--ink-50)}
.work__item:hover .work__t{color:var(--gold-ink)}
.work__flag{
  display:inline-flex;align-items:center;gap:.5rem;margin-bottom:.15rem;
  font-size:.68rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--gold-ink);
}
.work__flag::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--gold)}

/* ---------- Projektreihen ---------- */
.prow{display:grid;gap:1.25rem;padding-block:clamp(2rem,4vw,3rem);border-top:1px solid var(--line)}
@media(min-width:820px){
  .prow{grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);gap:clamp(2rem,5vw,4rem);align-items:center}
}
.prow__img{overflow:hidden;background:var(--surface);aspect-ratio:4/3;border-radius:var(--r-card)}
.prow__img img{width:100%;height:100%;object-fit:cover;transition:transform .8s var(--ease)}
.prow:hover .prow__img img{transform:scale(1.03)}
.prow__body{display:grid;gap:.55rem;align-content:center}
.prow__body .eyebrow{margin-bottom:.2rem}
.prow__nums{display:flex;flex-wrap:wrap;gap:.4rem .9rem;margin-top:.7rem;font-size:.8125rem;color:var(--ink-50)}
.prow__nums b{color:var(--ink);font-weight:600;font-variant-numeric:tabular-nums}

/* aktuelles Projekt: grosser Block statt Zeile */
.now{display:grid;gap:1.5rem;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding-block:clamp(2rem,4vw,3rem)}
@media(min-width:900px){.now{grid-template-columns:minmax(0,.95fr) minmax(0,1fr);gap:clamp(2rem,5vw,4rem);align-items:center}}
.now__img{overflow:hidden;background:var(--surface);aspect-ratio:9/16;max-height:26rem;border-radius:var(--r-card)}
@media(min-width:900px){.now__img{max-height:none;aspect-ratio:4/5}}
.now__img img,.now__img video{width:100%;height:100%;object-fit:cover}
.now__body{display:grid;gap:.9rem;align-content:center}
.now__body h3{font-size:clamp(1.7rem,3.4vw,2.6rem);font-weight:700;letter-spacing:-.03em}
.live{display:inline-flex;align-items:center;gap:.5rem;font-size:.7rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--gold-ink)}
.live::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--gold)}

/* ---------- Porträt-Block (About) ---------- */
.bio{display:grid;gap:clamp(1.75rem,3vw,2.75rem)}
@media(min-width:820px){
  /* Beide Spalten wachsen mit. Vorher war rechts eine feste Breite, dadurch
     klaffte auf grossen Schirmen eine Lücke in der Mitte. */
  .bio{grid-template-columns:minmax(0,1.45fr) minmax(0,1fr);align-items:start;gap:clamp(2rem,5vw,4.5rem)}
}
.bio__text{display:grid;gap:1.15rem}
.bio__text p{max-width:none}
.bio__img{margin:0;max-width:34rem;aspect-ratio:2/3;overflow:hidden;background:var(--surface);border-radius:var(--r-card)}
.bio__img img{width:100%;height:100%;object-fit:cover;object-position:50% 40%}

/* ---------- Zeitstrahl ---------- */
.tl{position:relative;padding-left:2.25rem}
.tl::before{content:"";position:absolute;left:6px;top:.6rem;bottom:.6rem;width:1px;background:var(--line)}
.tl::after{
  content:"";position:absolute;left:6px;top:.6rem;width:1px;background:var(--gold);
  height:calc(var(--tl-progress,0) * (100% - 1.2rem));transition:height .12s linear;
}
.tl__item{position:relative;padding-block:clamp(1.5rem,3vw,2.25rem)}
.tl__item + .tl__item{border-top:1px solid var(--line-soft)}
.tl__item::before{
  content:"";position:absolute;left:-2.25rem;top:calc(clamp(1.5rem,3vw,2.25rem) + .45rem);
  width:13px;height:13px;border-radius:50%;background:var(--bg);border:1.5px solid var(--ink-35);
  transition:background .3s var(--ease),border-color .3s var(--ease);
}
.tl__item.lit::before{background:var(--gold);border-color:var(--gold)}
.tl__year{display:block;font-size:.75rem;font-weight:600;letter-spacing:.12em;color:var(--ink-35);margin-bottom:.45rem}
.tl__item.lit .tl__year{color:var(--gold-ink)}
.tl__item h3{margin-bottom:.5rem}

/* ---------- Leistungen: nummerierte Zeilen mit ruhiger Hover-Bewegung ---------- */
.svc{
  display:grid;gap:.4rem 2rem;align-items:baseline;position:relative;
  padding:clamp(1.5rem,3vw,2.25rem) 0;border-top:1px solid var(--line);
}
.svc:last-of-type{border-bottom:1px solid var(--line)}
@media(min-width:820px){
  .svc{grid-template-columns:3rem minmax(0,13rem) minmax(0,1fr) auto;gap:2.5rem}
}
/* Der Balken wächst beim Hover von links über die Zeile */
.svc::before{
  content:"";position:absolute;left:0;top:-1px;height:1px;width:0;background:var(--gold);
  transition:width .45s var(--ease);
}
.svc:hover::before{width:100%}
.svc__i{
  font-family:var(--display);font-size:.78rem;font-weight:700;letter-spacing:.06em;
  color:var(--ink-35);font-variant-numeric:tabular-nums;transition:color .3s var(--ease);
}
.svc:hover .svc__i{color:var(--gold)}
.svc h3{margin:0;transition:transform .35s var(--ease)}
.svc:hover h3{transform:translateX(6px)}
.svc p{font-size:.9375rem;margin:0}
.svc__go{
  display:inline-flex;align-items:center;gap:.45rem;font-size:.875rem;font-weight:500;
  color:var(--ink-50);white-space:nowrap;transition:color .3s var(--ease);
}
.svc__go::after{content:"→";transition:transform .35s var(--ease)}
.svc:hover .svc__go{color:var(--ink)}
.svc:hover .svc__go::after{transform:translateX(5px)}

/* ---------- GRW-Streifen ---------- */
.grw-strip{background:var(--surface);border-radius:var(--r-card);padding:clamp(1.75rem,4vw,2.75rem);display:grid;gap:1.25rem}
@media(min-width:760px){.grw-strip{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:clamp(2rem,5vw,4rem)}}
.grw-strip p{max-width:46em}
.bars{display:inline-block;color:var(--ink)}
.bars rect{fill:currentColor}

/* ---------- Placement-Aufruf ---------- */
.pitch{
  display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1.25rem 2rem;
  padding:clamp(1.1rem,2.5vw,1.5rem) 0;border-bottom:1px solid var(--line);
}
.pitch__t{font-family:var(--display);font-weight:700;font-stretch:92%;letter-spacing:-.02em;
  color:var(--ink);font-size:clamp(1.1rem,2.2vw,1.5rem);margin:0;max-width:none}

/* ---------- Publikums-Balken ---------- */
.bars-list{display:grid;gap:.85rem;max-width:none}
.bar__row{display:grid;grid-template-columns:minmax(6.5rem,auto) 1fr auto;gap:.9rem;align-items:center;font-size:.875rem}
.bar__track{display:block;height:6px;border-radius:3px;background:var(--line);overflow:hidden}
.bar__fill{display:block;height:100%;border-radius:3px;background:var(--gold);width:0;transition:width .9s var(--ease)}
.bar__val{color:var(--ink);font-weight:600;font-variant-numeric:tabular-nums;font-size:.8125rem}

/* ---------- Rechtstexte ---------- */
.legal{display:grid;gap:.6rem;max-width:44em}
.legal h3{font-size:.78rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;
  color:var(--ink-35);font-family:var(--font);margin-top:1.9rem}
.legal h3:first-child{margin-top:0}
.legal p{margin:0;max-width:none}
.legal a{color:var(--ink);border-bottom:1px solid var(--line);transition:border-color .2s var(--ease)}
.legal a:hover{border-color:var(--gold)}

/* ---------- Q&A: ausklappbar, eine Zeile pro Frage ---------- */
.qa{border-top:1px solid var(--line)}
.qa__item{border-bottom:1px solid var(--line)}
.qa__q{
  display:flex;align-items:center;justify-content:space-between;gap:2rem;width:100%;
  padding:clamp(1.1rem,2.4vw,1.6rem) 0;background:none;border:0;text-align:left;cursor:pointer;
  font-family:var(--display);font-weight:700;font-stretch:92%;letter-spacing:-.02em;color:var(--ink);
  font-size:clamp(1.05rem,1.8vw,1.35rem);line-height:1.2;transition:color .25s var(--ease);
}
html.has-cursor .qa__q{cursor:none}
.qa__q:hover{color:var(--gold-ink)}
.qa__sign{position:relative;flex:0 0 16px;width:16px;height:16px}
.qa__sign::before,.qa__sign::after{
  content:"";position:absolute;inset:50% 0 auto 0;height:1.5px;background:currentColor;
  transform:translateY(-50%);transition:transform .3s var(--ease),opacity .3s var(--ease);
}
.qa__sign::after{transform:translateY(-50%) rotate(90deg)}
.qa__item.open .qa__sign::after{transform:translateY(-50%) rotate(0deg);opacity:0}
.qa__a{overflow:hidden;height:0;transition:height .35s var(--ease)}
.qa__a > p{padding-bottom:clamp(1.1rem,2.4vw,1.6rem);margin:0;color:var(--ink-70);max-width:44em}

/* ---------- Formular ---------- */
.picker{display:grid;gap:1px;background:var(--line);border:1px solid var(--line);border-radius:var(--r-card);overflow:hidden;margin-bottom:2.5rem}
@media(min-width:700px){.picker{grid-template-columns:repeat(3,1fr)}}
.pick{
  background:var(--bg);border:0;font:inherit;text-align:left;cursor:pointer;
  padding:clamp(1.25rem,2.5vw,1.75rem);display:grid;gap:.4rem;align-content:start;
  transition:background .22s var(--ease);
}
html.has-cursor .pick{cursor:none}
.pick:hover{background:var(--surface)}
.pick__t{color:var(--ink);font-weight:600;font-size:1.0625rem;letter-spacing:-.015em}
.pick__d{font-size:.875rem;color:var(--ink-50);line-height:1.45}
.pick[aria-pressed="true"]{background:var(--ink)}
.pick[aria-pressed="true"] .pick__t{color:var(--bg)}
.pick[aria-pressed="true"] .pick__d{color:rgba(13,13,13,.62)}

.form{display:grid;gap:1.25rem;max-width:38rem}
.field{display:grid;gap:.45rem}
.field label{font-size:.72rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-35)}
.field input,.field textarea{
  font:inherit;font-size:1rem;color:var(--ink);background:var(--bg);
  border:1px solid var(--line);border-radius:var(--r-input);padding:.85rem 1rem;
  transition:border-color .2s var(--ease),background .2s var(--ease);
}
.field input:focus,.field textarea:focus{outline:none;border-color:var(--ink);background:var(--surface)}
.field textarea{min-height:150px;resize:vertical}
.field input::placeholder,.field textarea::placeholder{color:var(--ink-35)}
.hp{position:absolute;left:-9999px}
.form__note{font-size:.8125rem;color:var(--ink-35)}
.form__err{font-size:.8125rem;color:#E88374;display:none}
.form__err.show{display:block}
@media(min-width:600px){.form__row{display:grid;grid-template-columns:1fr 1fr;gap:1.25rem}}

/* ---------- Direktkontakt ---------- */
.direct{display:grid;gap:.9rem;padding-top:2rem;margin-top:2.5rem;border-top:1px solid var(--line)}
.direct a{color:var(--ink);font-weight:500;border-bottom:1px solid var(--line);width:max-content;padding-bottom:.1rem;transition:border-color .2s var(--ease)}
.direct a:hover{border-color:var(--gold)}

/* ---------- Footer: vier Spalten wie bei luahell.com ---------- */
.ftr{border-top:1px solid var(--line);padding-top:clamp(3rem,6vw,5rem)}
.ftr__top{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1.5rem 2rem;
  padding-bottom:clamp(2.5rem,5vw,4rem);border-bottom:1px solid var(--line)}
.ftr__h{font-size:clamp(1.6rem,3.2vw,2.6rem);margin:0}
.ftr__cols{display:grid;gap:2.5rem 2rem;padding-block:clamp(2.5rem,5vw,3.5rem)}
@media(min-width:640px){.ftr__cols{grid-template-columns:repeat(2,1fr)}}
@media(min-width:960px){.ftr__cols{grid-template-columns:repeat(4,1fr)}}
.ftr__col{display:grid;gap:.5rem;align-content:start;font-size:.9375rem}
.ftr__col .eyebrow{margin-bottom:.6rem}
.ftr__col p{margin:0;color:var(--ink-70);max-width:none}
.ftr__col a{width:max-content;color:var(--ink-70);border-bottom:1px solid var(--line);padding-bottom:.1rem;
  transition:color .22s var(--ease),border-color .22s var(--ease)}
.ftr__col a:hover{color:var(--ink);border-color:var(--gold)}
.ftr__time{color:var(--ink-35) !important;font-variant-numeric:tabular-nums;margin-top:.4rem !important}
.ftr__mark{color:var(--ink);margin-top:clamp(1.5rem,4vw,2.5rem);max-width:var(--max);margin-inline:auto;padding-inline:var(--pad)}
.ftr__links{display:flex;flex-wrap:wrap;gap:1.25rem;font-size:.875rem;color:var(--ink-50)}
.ftr__links a:hover{color:var(--ink)}
.ftr__bot{display:flex;flex-wrap:wrap;gap:1rem;justify-content:space-between;margin-top:1.5rem;
  padding-top:1.5rem;padding-bottom:2rem;border-top:1px solid var(--line-soft);font-size:.78rem;color:var(--ink-35)}

/* ---------- Hero blendet einmal auf ---------- */
.js .film__in > .wrap > *{opacity:0;transform:translateY(12px);animation:rise-in .7s var(--ease) forwards}
.js .film__rail{animation-delay:.05s}
.js .film h1{animation-delay:.14s}
.js .film__cta{animation-delay:.24s}
@keyframes rise-in{to{opacity:1;transform:none}}

/* ---------- Einblend-Animation ---------- */
.js .rise{opacity:0;transform:translateY(14px);transition:opacity .6s var(--ease),transform .6s var(--ease)}
.js .rise.in{opacity:1;transform:none}

@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms !important;transition-duration:.01ms !important;scroll-behavior:auto !important}
  .js .rise{opacity:1;transform:none}
  .js .film__in > .wrap > *{opacity:1;transform:none;animation:none}
  .work__item:hover .work__img img,.prow:hover .prow__img img{transform:none}
  html.has-cursor,html.has-cursor *{cursor:auto}
  .cursor-dot{display:none}
}

/* =========================================================
   STARTSEITE ALS STRECKE (One-Pager)
   Grundzustand: alles steht normal untereinander (ohne JS, Handy,
   reduzierte Bewegung). Erst html.stage schaltet Stopps und Bewegung
   ein, gesteuert von js/stage.js. Bewegt werden nur transform,
   opacity und clip-path.
   ========================================================= */

/* ---------- Kopfzeile: Name, Kapitel, Menü ---------- */
.hdr--min .brand{margin-right:0}
.hdr__chap{
  margin-right:auto;display:none;overflow:hidden;height:1.2em;
  font-size:.7rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-35);
}
.hdr__chap::before{content:"/";margin-right:.7em;color:var(--ink-35)}
.hdr__chap:empty{visibility:hidden}
.hdr__chap.swap{animation:chap-in .45s var(--ease)}
@keyframes chap-in{from{opacity:0;transform:translateY(70%)}}
@media(min-width:640px){.hdr__chap{display:block}}
@media(max-width:639px){.hdr--min .brand{margin-right:auto}}
.hdr__bar{position:absolute;left:0;bottom:-1px;width:100%;height:1px;background:var(--gold);
  transform-origin:0 50%;transform:scaleX(var(--page,0))}
.hdr--min .burger--txt{display:inline-flex}
.burger--txt{
  width:auto;align-items:center;gap:.65rem;padding:0 .25rem;margin-right:-.25rem;
  font:inherit;font-size:.8125rem;color:var(--ink);
}
.burger--txt b{font-weight:600;letter-spacing:.01em}
.burger--txt i{display:grid;gap:5px}
html.has-cursor .burger{cursor:none}
.mobile--full{inset:64px 0 0;align-content:center;gap:0;padding-block:2rem}
.mobile--full a{
  font-family:var(--display);font-weight:800;font-stretch:88%;text-transform:uppercase;
  letter-spacing:-.04em;line-height:1;font-size:clamp(2.2rem,7vw,5.5rem);padding:.2em 0;
  transition:color .25s var(--ease);
}
.mobile--full a:hover{color:var(--gold-ink)}
.film__scroll{display:inline-flex;align-items:center;gap:.5rem}
.film__scroll::after{content:"↓"}

/* ---------- Kapitel: Grundform ---------- */
.scene{position:relative}
.scene__pin{padding-block:var(--section)}
.scene + .scene .scene__pin{padding-top:0}

html.stage .scene__pin{
  position:sticky;top:64px;height:calc(100vh - 64px);height:calc(100svh - 64px);
  overflow:hidden;padding:0;display:grid;align-content:center;
  grid-template-columns:minmax(0,1fr);
}
html.stage .scene__pin > .wrap{width:100%}

/* ---------- 01 Wer ---------- */
.who{display:grid;width:100%}
.who__eye{margin-bottom:clamp(1rem,2.5vh,2rem)}
.who__name{
  font-family:var(--display);font-weight:800;font-stretch:88%;text-transform:uppercase;
  letter-spacing:-.045em;line-height:.82;color:var(--ink);white-space:nowrap;max-width:none;
  font-size:clamp(3.4rem,min(13.5vw,24vh),19rem);
}
.who__name--r{justify-self:end}
.who__foot{
  display:grid;grid-template-columns:auto minmax(0,1fr);gap:clamp(1rem,3vw,3rem);align-items:end;
  margin-top:clamp(1.5rem,4vh,3rem);
}
.who__img{margin:0;width:clamp(4.5rem,min(11vw,17vh),12rem);aspect-ratio:2/3;overflow:hidden;background:var(--surface);border-radius:var(--r-card)}
.who__img img{width:100%;height:100%;object-fit:cover;object-position:50% 35%}
.who__txt{
  font-family:var(--display);font-weight:600;font-stretch:95%;letter-spacing:-.02em;line-height:1.15;
  color:var(--ink);font-size:clamp(1.15rem,2.4vw,2.5rem);max-width:30ch;text-wrap:pretty;
}
.who__txt .w{transition:opacity .15s linear}
@media(max-width:599px){.who__foot{grid-template-columns:1fr}.who__img{width:8rem}}

/* ---------- 02 Zahlen ---------- */
.nums{display:grid;width:100%;position:relative}
.nums__eye{margin-bottom:1.5rem}
.nums__list{list-style:none}
.nums__item{display:grid;gap:.5rem;padding-block:clamp(1.25rem,3vw,2rem);border-top:1px solid var(--line)}
.nums__n{
  font-family:var(--display);font-weight:800;font-stretch:88%;letter-spacing:-.05em;line-height:.84;
  color:var(--ink);white-space:nowrap;font-size:clamp(3.6rem,17vw,18rem);
}
.nums__l{font-size:clamp(1rem,1.5vw,1.35rem);color:var(--ink-70);max-width:none}
.nums__note{margin-top:1.25rem;font-size:.75rem;color:var(--ink-35)}
.nums__count{display:none}

html.stage .scene--nums .scene__pin{align-content:stretch}
html.stage .nums{height:100%;grid-template-rows:auto 1fr auto;padding-block:clamp(1.5rem,5vh,3.5rem)}
html.stage .nums__list{position:relative}
html.stage .nums__item{position:absolute;inset:0;border:0;padding:0;align-content:center;will-change:transform,clip-path}
html.stage .nums__item[data-side="right"]{justify-items:end;text-align:right}
html.stage .nums__note{margin:0}
html.stage .nums__count{
  display:block;position:absolute;right:var(--pad);bottom:clamp(1.5rem,5vh,3.5rem);
  font-size:.75rem;letter-spacing:.12em;color:var(--ink-35);
}
html.stage .nums__count b{color:var(--ink);font-weight:600}

/* ---------- 03 Journey ---------- */
.jr__head{display:grid;gap:.8rem;margin-bottom:clamp(2rem,5vh,3.5rem)}
.jr__h{
  font-family:var(--display);font-weight:700;font-stretch:92%;letter-spacing:-.03em;line-height:1.02;
  color:var(--ink);font-size:clamp(2rem,4.6vw,3.35rem);max-width:none;
}
.jr__track{list-style:none;max-width:var(--max);margin-inline:auto;padding-inline:var(--pad)}
.jr__st{
  position:relative;display:grid;grid-template-columns:5.5rem minmax(0,1fr);gap:.25rem 1.25rem;
  padding-block:1.25rem;border-top:1px solid var(--line);
}
.jr__y{grid-row:span 2;font-family:var(--display);font-weight:700;font-stretch:92%;letter-spacing:-.03em;
  color:var(--ink-35);font-size:1.15rem;line-height:1.2}
.jr__st h3{font-size:clamp(1.1rem,1.6vw,1.4rem)}
.jr__st p{margin:0;font-size:.9375rem;color:var(--ink-50)}
.jr__st--now .jr__y{color:var(--gold-ink)}

html.stage .jr__track{
  display:flex;width:max-content;justify-self:start;max-width:none;margin:0;will-change:transform;
  padding-inline:max(var(--pad),calc((100vw - var(--max)) / 2 + var(--pad))) 30vw;
}
html.stage .jr__st{
  width:clamp(17rem,27vw,26rem);grid-template-columns:1fr;align-content:start;gap:.6rem;
  padding:1.6rem 3rem 0 0;border-top:1px solid var(--line);
}
html.stage .jr__st::before{
  content:"";position:absolute;left:0;top:-5px;width:9px;height:9px;border-radius:50%;
  background:var(--bg);border:1.5px solid var(--ink-35);transition:background .3s var(--ease),border-color .3s var(--ease);
}
html.stage .jr__y{
  grid-row:auto;font-weight:800;font-stretch:88%;letter-spacing:-.05em;line-height:.9;
  font-size:clamp(3.5rem,8vw,8.5rem);color:var(--line);transition:color .4s var(--ease);
}
html.stage .jr__st.lit::before{background:var(--gold);border-color:var(--gold)}
html.stage .jr__st.lit .jr__y{color:var(--ink)}
html.stage .jr__st--now.lit .jr__y{color:var(--gold-ink)}
html.stage .jr__st p{max-width:24ch}

/* ---------- 04 Projekte: Kartenstapel ---------- */
.pl{padding-block:var(--section)}
.pl__eye{margin-bottom:clamp(1.5rem,3vw,2.5rem)}
.pl__stack{display:grid;gap:1rem}
.pl__card{
  position:relative;display:grid;overflow:hidden;background:var(--surface);
  border:1px solid var(--line-soft);border-radius:var(--r-card);transform-origin:50% 0;
}
.pl__card::after{content:"";position:absolute;inset:0;background:#000;opacity:var(--dim,0);pointer-events:none}
.pl__img{display:block;aspect-ratio:16/10;overflow:hidden;background:var(--bg)}
.pl__img img{width:100%;height:100%;object-fit:cover;transition:transform .9s var(--ease)}
.pl__card:hover .pl__img img{transform:scale(1.03)}
.pl__body{display:flex;flex-direction:column;gap:.55rem;padding:clamp(1.25rem,3vw,2.75rem)}
.pl__n{padding-bottom:1.25rem;font-size:.75rem;font-weight:600;letter-spacing:.12em;color:var(--ink-35)}
.pl__t{
  font-family:var(--display);font-weight:700;font-stretch:92%;letter-spacing:-.035em;line-height:.98;
  color:var(--ink);font-size:clamp(1.9rem,4.2vw,4.4rem);text-wrap:balance;transition:color .3s var(--ease);
}
.pl__m{color:var(--ink-50);font-size:.9375rem}
.pl__go{display:inline-flex;align-items:center;gap:.45rem;margin-top:auto;padding-top:1.5rem;font-size:.875rem;font-weight:500;color:var(--ink-70)}
.pl__go::after{content:"→";transition:transform .35s var(--ease)}
.pl__card:hover .pl__t{color:var(--gold-ink)}
.pl__card:hover .pl__go::after{transform:translateX(5px)}
@media(min-width:760px){
  .pl__card{grid-template-columns:minmax(0,1.3fr) minmax(0,1fr)}
  .pl__card--r .pl__img{order:2}
  .pl__img{aspect-ratio:auto;min-height:22rem}
}
html.stage .pl__stack{gap:0}
html.stage .pl__card{
  position:sticky;top:calc(64px + 1.5rem + var(--i) * 12px);
  height:calc(100vh - 64px - 3rem - 60px);height:calc(100svh - 64px - 3rem - 60px);
  margin-bottom:3rem;will-change:transform;
}
html.stage .pl__card:last-child{margin-bottom:0}
html.stage .pl__img{min-height:0;height:100%}

/* ---------- 05 Zusammenarbeit ---------- */
.co{padding-block:var(--section) clamp(3rem,6vw,5rem);overflow-x:clip}
.co__big{
  display:grid;max-width:none;margin:clamp(1.25rem,3vw,2.5rem) 0 clamp(2.5rem,6vw,5rem);
  font-family:var(--display);font-weight:800;font-stretch:88%;text-transform:uppercase;
  letter-spacing:-.045em;line-height:.86;color:var(--ink);white-space:nowrap;
  /* "ZUSAMMENARBEITEN." füllt genau die Inhaltsbreite */
  font-size:calc((min(100vw, var(--max)) - 2 * var(--pad) - 4px) / 10.05);
}
.co__r{justify-self:end}
.co__l,.co__r{display:block}

/* ---------- Seiten zum Schluss: nur Schrift ---------- */
.again{padding-block:clamp(3rem,6vw,5rem) var(--section)}
.again__h{
  font-family:var(--font);font-weight:500;letter-spacing:-.015em;line-height:1.3;
  color:var(--ink-50);font-size:clamp(1.15rem,2vw,1.6rem);margin-bottom:clamp(1.25rem,3vw,2rem);
}
.again__list{display:grid;border-top:1px solid var(--line)}
.again__list a{
  display:flex;align-items:center;justify-content:space-between;gap:1rem;overflow:hidden;
  padding-block:.14em .08em;border-bottom:1px solid var(--line);
  font-family:var(--display);font-weight:800;font-stretch:88%;text-transform:uppercase;
  letter-spacing:-.045em;line-height:.92;color:var(--ink);font-size:clamp(2.6rem,9.5vw,10rem);
  transition:color .3s var(--ease);
}
.again__list a span{display:inline-block;transition:transform .5s var(--ease)}
.again__list a::after{
  content:"→";font-size:.45em;letter-spacing:0;opacity:0;transform:translateX(-.5em);
  transition:opacity .3s var(--ease),transform .45s var(--ease);
}
.again__list a:hover{color:var(--gold-ink)}
.again__list a:hover span{transform:translateX(.1em)}
.again__list a:hover::after{opacity:1;transform:none}

html.stage .again__list a span{transform:translateY(105%);transition:transform .9s var(--ease)}
html.stage .again__list.in a span{transform:none}
html.stage .again__list.in a:nth-child(2) span{transition-delay:.07s}
html.stage .again__list.in a:nth-child(3) span{transition-delay:.14s}
html.stage .again__list.in a:nth-child(4) span{transition-delay:.21s}
html.stage .again__list.in a:nth-child(5) span{transition-delay:.28s}
html.stage .again__list.in a:hover span{transform:translateX(.1em);transition-delay:0s;transition-duration:.5s}

/* Startseite: Footer ohne eigenen Aufruf, der steht direkt darüber */
.hdr--min ~ main + .ftr{padding-top:0}
