/* Fonts: self-hosted (DSGVO). Static Inter Tight files in /assets/fonts/, see README. */
@font-face {
  font-family:'Inter Tight';
  font-style:normal;
  font-weight:400;
  font-display:swap;
  src:url('../assets/fonts/InterTight-Regular.ttf') format('truetype');
}

@font-face {
  font-family:'Inter Tight';
  font-style:normal;
  font-weight:500;
  font-display:swap;
  src:url('../assets/fonts/InterTight-Medium.ttf') format('truetype');
}

@font-face {
  font-family:'Inter Tight';
  font-style:normal;
  font-weight:600;
  font-display:swap;
  src:url('../assets/fonts/InterTight-SemiBold.ttf') format('truetype');
}

@font-face {
  font-family:'Inter Tight';
  font-style:normal;
  font-weight:700;
  font-display:swap;
  src:url('../assets/fonts/InterTight-Bold.ttf') format('truetype');
}

@font-face {
  font-family:'Inter Tight';
  font-style:normal;
  font-weight:800;
  font-display:swap;
  src:url('../assets/fonts/InterTight-ExtraBold.ttf') format('truetype');
}

@font-face {
  font-family:'Inter Tight';
  font-style:normal;
  font-weight:900;
  font-display:swap;
  src:url('../assets/fonts/InterTight-Black.ttf') format('truetype');
}

:root {
  --bg:#F2F2F4;
  --ink:#0A0A0B;
  --mute:#5D5D65;
  --quiet:#D9D9DE;
  --red:#E8432E;
  --accent:#D86AD9;
  --blue:#6B88E8;
  --num-gap:clamp(32px,6vw,56px);
  --pad:clamp(20px,5vw,72px);
  --font:'Inter Tight','Helvetica Neue',Helvetica,Arial,sans-serif;
  color-scheme:light;
  box-sizing:border-box;
  padding-top:env(safe-area-inset-top,0px);
  padding-bottom:env(safe-area-inset-bottom,0px);
}

html {
  scroll-padding-top:env(safe-area-inset-top,0px);
  scroll-behavior:smooth;
}

*,*::before,*::after {
  box-sizing:border-box;
}

body {
  margin:0;
  background:var(--bg);
  color:var(--ink);
  font-family:var(--font);
  -webkit-font-smoothing:antialiased;
  overflow-x:clip;
}

a {
  color:inherit;
}

a:focus-visible,button:focus-visible {
  outline:3px solid var(--blue);
  outline-offset:4px;
}

p {
  margin:0;
}

h1,h2,h3 {
  margin:0;
  font-weight:800;
}

/* chair (original logo asset) */
.chair {
  display:block;
  width:100%;
  height:auto;
}

/* header */
.top {
  position:fixed;
  inset:0 0 auto 0;
  z-index:20;
  display:flex;
  justify-content:space-between;
  align-items:center;
  padding:calc(env(safe-area-inset-top,0px) + 22px) var(--pad) 18px;
  background:color-mix(in srgb,var(--bg) 82%,transparent);
  -webkit-backdrop-filter:blur(14px);
  backdrop-filter:blur(14px);
  transition:box-shadow .3s;
}

.top.scrolled {
  box-shadow:0 1px 0 #D6D6DB;
}

.brand {
  position:relative;
  display:block;
  height:44px;
  width:150px;
  text-decoration:none;
}

.wordmark {
  position:absolute;
  left:0;
  top:50%;
  transform:translateY(-50%);
  height:34px;
  width:auto;
  transition:opacity .35s,transform .35s;
}

.mark {
  position:absolute;
  left:0;
  top:0;
  width:31px;
  height:41px;
  opacity:0;
  transform:translateY(6px);
  transition:opacity .35s,transform .35s;
}

.top.scrolled .wordmark {
  opacity:0;
  transform:translateY(-80%);
}

.top.scrolled .mark {
  opacity:1;
  transform:none;
}

.nav {
  display:inline-flex;
  align-items:center;
  min-height:44px;
  font-size:18px;
  color:var(--mute);
  text-decoration:none;
  padding:10px 0;
}

.nav:hover {
  color:var(--ink);
}

/* hero */
.hero {
  min-height:100svh;
  padding:clamp(130px,18vh,190px) var(--pad) clamp(60px,10vh,120px);
  display:grid;
  align-content:space-between;
  gap:56px;
}

.ffn {
  font-size:clamp(54px,11.2vw,200px);
  line-height:.94;
  letter-spacing:-.03em;
  word-spacing:100vw; /* one word per line, as in the approved screenshot */
  font-weight:900;
}

.ffn span {
  display:block;
}

.ffn span:nth-child(2) {
  padding-left:.8em; /* = 12vw at the 15vw mobile size */
}

/* equal spacing FORM / FOLLOWS / TASK.: no extra blank line before TASK */
.ffn span:nth-child(2) br {
  display:none;
}

.intent {
  justify-self:start;
  width:min(100%,560px);
  font-size:clamp(24px,3vw,44px);
  line-height:1.08;
  letter-spacing:-.025em;
  font-weight:700;
}

.intent span {
  display:block;
}

.intent span + span {
  color:var(--mute);
}

/* desktop only: keep the intent line on one line */
@media (min-width:821px) {
  .intent {
    width:auto;
  }
  .intent span {
    white-space:nowrap;
  }
}

/* change block */
.change {
  padding:clamp(40px,8vh,90px) 0 clamp(30px,6vh,60px);
  overflow:hidden;
}

.crow {
  display:grid;
  grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);
  column-gap:.18em;
  font-size:clamp(46px,10vw,178px);
  line-height:1.02;
  letter-spacing:-.05em;
  font-weight:900;
  white-space:nowrap;
  will-change:transform;
}

.crow + .crow {
  margin-top:.1em;
}

.crow .w {
  text-align:right;
}

.crow .c {
  font-weight:400;
  letter-spacing:-.045em;
}

.crow:nth-child(2) .c {
  font-weight:500;
}

.crow:nth-child(3) .c {
  font-weight:600;
}

.crow:nth-child(4) .c {
  font-weight:800;
}

/* fixed structure */
.fixed {
  padding:clamp(70px,12vh,140px) var(--pad) clamp(80px,14vh,160px);
}

.fte {
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  column-gap:clamp(28px,7.8vw,120px);
  row-gap:clamp(64px,26vw,190px);
  margin-bottom:clamp(70px,12vw,150px);
}

.fte i {
  display:block;
  height:clamp(5px,.55vw,7px);
  border-radius:9px;
  background:var(--red);
  transform:scaleX(0);
  transform-origin:left center;
}

.fte.in i {
  animation:slot .01s steps(1) forwards;
  animation-delay:calc(var(--i) * 40ms);
}

@keyframes slot {
  to {
    transform:scaleX(1);
  }
}

.fixed h2 {
  font-size:clamp(44px,8.2vw,148px);
  line-height:.9;
  letter-spacing:-.05em;
  font-weight:900;
  max-width:12ch;
}

.fixed .deliver {
  margin-top:clamp(24px,3vw,40px);
  margin-left:clamp(0px,30vw,520px);
  font-size:clamp(26px,3.7vw,60px);
  line-height:1.02;
  letter-spacing:-.035em;
  font-weight:700;
}

.fixed .deliver span {
  display:block;
}

/* bridge */
.bridge {
  padding:clamp(90px,16vh,200px) var(--pad);
  border-top:1px solid #D6D6DB;
}

.bridge p {
  font-size:clamp(30px,4.5vw,76px);
  line-height:1.02;
  letter-spacing:-.04em;
  font-weight:700;
  max-width:20ch;
}

.bridge p + p {
  margin-top:.5em;
  margin-left:clamp(0px,12vw,240px);
  color:var(--mute);
  font-weight:600;
}

/* steps */
.steps {
  padding:clamp(60px,10vh,120px) 0 clamp(60px,10vh,120px);
}

.sect-h {
  padding:0 var(--pad);
  font-size:clamp(34px,5.4vw,92px);
  line-height:.92;
  letter-spacing:-.045em;
  font-weight:900;
  max-width:14ch;
}

.steps .sect-h {
  margin-bottom:clamp(50px,8vh,100px);
}

.step {
  position:relative;
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  column-gap:calc(var(--pad) * 1.5);
  row-gap:var(--num-gap);
  padding-right:var(--pad);
  align-items:end;
}

.num {
  font-size:clamp(202.4px,36.08vw,563.2px);
  line-height:.74;
  letter-spacing:-.075em;
  font-weight:900;
  margin-left:-.10941em;
  user-select:none;
}

.step h3 {
  font-size:clamp(30px,3.6vw,56px);
  line-height:1;
  letter-spacing:-.035em;
  font-weight:800;
  margin-bottom:.7em;
}

.step .sub {
  font-size:clamp(20px,1.9vw,27px);
  line-height:1.2;
  letter-spacing:-.02em;
  font-weight:700;
  margin-bottom:.95em;
  max-width:28ch;
}

.step .copy {
  font-size:clamp(18px,1.6vw,22px);
  line-height:1.5;
  color:var(--mute);
  max-width:40ch;
}

.step .copy .nw {
  white-space:nowrap;
}

.step .copy + .copy {
  margin-top:.8em;
}

.s1 {
  margin-bottom:clamp(110px,18vh,220px);
}

.s1 .body {
  align-self:start;
  padding-top:clamp(20px,6vw,90px);
}

.s2 {
  margin-bottom:clamp(110px,18vh,220px);
}

.s2 .body {
  padding-bottom:clamp(10px,2vw,30px);
}

.crew {
  display:flex;
  align-items:flex-end;
  gap:clamp(12px,2vw,26px);
  margin-top:clamp(28px,4vw,48px);
}

.crew .chair {
  width:clamp(36px,4.2vw,58px);
  opacity:0;
  transform:translateY(18px);
  transition:opacity .5s,transform .7s cubic-bezier(.2,.9,.25,1.2);
}

.crew .chair:nth-child(2) {
  transition-delay:.12s;
}

.crew .chair:nth-child(3) {
  transition-delay:.24s;
}

.crew .chair:nth-child(4) {
  transition-delay:.36s;
}

.crew .chair:nth-child(5) {
  transition-delay:.48s;
}

.crew.in .chair {
  opacity:1;
  transform:none;
}

.s3 {
  grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);
  margin-bottom:clamp(110px,18vh,220px);
}

.s4 {
  grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);
}

.s4 .num {
  color:var(--quiet);
}

/* Desktop only: optically even distance numeral -> text (Inter Tight).
   02 is the reference; 01 (flat stem) moves in, 03 (round) moves out. */
@media (min-width:821px) {
  .s1 .body {
    margin-left:max(-7.9vw,-114px);
  }
  .s3 .body {
    margin-left:min(5vw,72px);
  }
  .s4 .body {
    margin-left:min(7vw,101px);
  }
}

.stage {
  margin-top:clamp(32px,4vw,52px);
}

.blink {
  display:flex;
  justify-content:space-between;
  align-items:flex-end;
  padding:0 4%;
  height:clamp(52px,6vw,84px);
}

.blink .chair {
  width:clamp(32px,3.7vw,52px);
  transform-origin:50% 100%;
  opacity:0;
  transform:scaleY(.04);
}

/* 03: chairs build up left to right like a loading bar and stay
   (same unfolding motion as before: flat -> upright, .48s each) */
.blink.in .chair {
  animation:build .48s cubic-bezier(.6,0,.3,1) both;
}

.blink .chair:nth-child(1) {
  animation-delay:0.00s;
}

.blink .chair:nth-child(2) {
  animation-delay:0.30s;
}

.blink .chair:nth-child(3) {
  animation-delay:0.60s;
}

.blink .chair:nth-child(4) {
  animation-delay:0.90s;
}

.blink .chair:nth-child(5) {
  animation-delay:1.20s;
}

.blink .chair:nth-child(6) {
  animation-delay:1.50s;
}

@keyframes build {
  0% {
    opacity:0;
    transform:scaleY(.04);
  }

  100% {
    opacity:1;
    transform:scaleY(1);
  }
}

/* 04: the finished setup folds away (chairs fold flat, then bars retract) */
.fold .blink .chair {
  opacity:1;
  transform:none;
}

.fold.in .blink .chair {
  animation:foldaway .48s cubic-bezier(.6,0,.3,1) forwards;
}

.fold.in .blink .chair:nth-child(6) { animation-delay:0.60s; }
.fold.in .blink .chair:nth-child(5) { animation-delay:0.72s; }
.fold.in .blink .chair:nth-child(4) { animation-delay:0.84s; }
.fold.in .blink .chair:nth-child(3) { animation-delay:0.96s; }
.fold.in .blink .chair:nth-child(2) { animation-delay:1.08s; }
.fold.in .blink .chair:nth-child(1) { animation-delay:1.20s; }

.fold .bars i {
  transform-origin:left center;
}

.fold.in .bars i {
  animation:retract .48s cubic-bezier(.6,0,.3,1) forwards;
}

.fold.in .bars i:nth-child(3) { animation-delay:1.70s; }
.fold.in .bars i:nth-child(2) { animation-delay:1.82s; }
.fold.in .bars i:nth-child(1) { animation-delay:1.94s; }

/* ...then the step 04 text folds away too, bottom to top (same motion) */
.s4 .body > h3,
.s4 .body > .sub,
.s4 .body > .copy {
  transform-origin:50% 100%;
}

.s4 .body:has(.fold.in) > .copy {
  animation:foldaway .48s cubic-bezier(.6,0,.3,1) 2.50s forwards;
}

.s4 .body:has(.fold.in) > .sub {
  animation:foldaway .48s cubic-bezier(.6,0,.3,1) 2.62s forwards;
}

.s4 .body:has(.fold.in) > h3 {
  animation:foldaway .48s cubic-bezier(.6,0,.3,1) 2.74s forwards;
}

@keyframes foldaway {
  0% {
    opacity:1;
    transform:scaleY(1);
  }

  100% {
    opacity:0;
    transform:scaleY(.04);
  }
}

@keyframes retract {
  0% {
    transform:scaleX(1);
  }

  100% {
    transform:scaleX(0);
  }
}

.bars {
  display:grid;
  gap:clamp(10px,1.2vw,16px);
  margin-top:10px;
}

.bars i {
  display:block;
  height:clamp(6px,.7vw,10px);
  background:var(--red);
}

.bars i:nth-child(2) {
  width:78%;
}

.bars i:nth-child(3) {
  width:52%;
}

/* offers */
.offers {
  padding:clamp(90px,14vh,170px) var(--pad);
  border-top:1px solid #D6D6DB;
}

.offers .sect-h {
  padding:0;
  margin-bottom:clamp(50px,8vh,100px);
}

.offer {
  display:grid;
  gap:clamp(18px,2vw,28px);
}

.offer + .offer {
  margin-top:clamp(90px,14vh,170px);
}

.offer h3 {
  line-height:.86;
  letter-spacing:-.055em;
  font-weight:900;
}

.lead {
  font-size:clamp(22px,2.4vw,36px);
  line-height:1.12;
  letter-spacing:-.025em;
  font-weight:700;
  max-width:26ch;
}

.desc {
  font-size:clamp(17px,1.5vw,21px);
  line-height:1.5;
  color:var(--mute);
  max-width:52ch;
}

.chain {
  list-style:none;
  margin:6px 0 0;
  padding:0;
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  row-gap:10px;
  font-size:clamp(15px,1.3vw,18px);
  font-weight:600;
}

.chain li {
  display:flex;
  align-items:center;
}

.chain li + li::before {
  content:"";
  display:block;
  width:clamp(16px,2vw,30px);
  height:4px;
  background:var(--red);
  margin:0 12px;
}

.strong {
  font-size:clamp(17px,1.5vw,21px);
  line-height:1.5;
  font-weight:700;
  max-width:52ch;
}

.price {
  font-size:clamp(18px,1.7vw,24px);
  font-weight:800;
  letter-spacing:-.015em;
  margin-top:6px;
}

.o1 {
  grid-template-columns:minmax(0,1fr);
  column-gap:var(--pad);
  align-items:start;
}

.o1 h3 {
  font-size:clamp(52px,7.5vw,130px);
}

.o1 .side {
  display:grid;
  gap:clamp(16px,1.8vw,24px);
  padding-top:.6em;
}

.o2 h3 {
  font-size:clamp(76px,17vw,300px);
  margin-left:-.05em;
}

.o2 .cols {
  display:grid;
  grid-template-columns:minmax(0,1fr);
  column-gap:var(--pad);
  row-gap:24px;
  align-items:start;
}

.o2 .cols .right {
  display:grid;
  gap:clamp(16px,1.8vw,24px);
}

.o3 {
  grid-template-columns:minmax(0,1fr);
  column-gap:var(--pad);
  align-items:start;
}

.o3 h3 {
  font-size:clamp(52px,7.5vw,130px);
  grid-column:1;
  grid-row:1;
  text-align:left;
}

.o3 .side {
  grid-column:1;
  grid-row:2;
  display:grid;
  gap:clamp(16px,1.8vw,24px);
}

.skills {
  list-style:none;
  margin:0;
  padding:0;
  display:grid;
  gap:10px;
  font-size:clamp(20px,2.2vw,32px);
  font-weight:700;
  letter-spacing:-.025em;
  line-height:1.15;
}

.skills li:nth-child(2) {
  padding-left:1.2em;
}

.skills .on {
  display:block;
  color:var(--mute);
  margin-bottom:6px;
}

.skills .set {
  display:flex;
  flex-wrap:wrap;
  gap:4px .9em;
  max-width:20.5em; /* line grouping as in the approved screenshot */
}

.skills .set span:nth-child(3n+2) {
  padding-left:.8em;
}

/* founder */
.founder {
  background:var(--blue);
  color:var(--ink);
  padding:clamp(80px,12vh,150px) var(--pad);
  position:relative;
  overflow:hidden;
  display:grid;
  grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);
  gap:clamp(32px,5vw,80px);
  align-items:start;
}

.founder-copy {
  min-width:0;
}

.founder-portrait {
  display:block;
  width:100%;
  height:auto;
}

.name {
  font-size:clamp(37px,7.8vw,150px);
  line-height:.82;
  letter-spacing:-.06em;
  font-weight:900;
  position:relative;
  z-index:2;
}

.name span {
  display:block;
}

.role {
  font-size:clamp(24px,2.8vw,42px);
  font-weight:700;
  letter-spacing:-.03em;
  margin:clamp(22px,2.4vw,34px) 0 clamp(20px,2vw,30px);
}

.bio strong {
  font-weight:700;
}

.bio {
  font-size:clamp(18px,1.6vw,22px);
  line-height:1.5;
  max-width:44ch;
  display:grid;
  gap:1em;
}

/* statement */
.statement {
  padding:clamp(100px,16vh,200px) var(--pad) clamp(40px,6vh,80px);
}

.statement p {
  font-size:clamp(41px,8.8vw,160px);
  line-height:.88;
  letter-spacing:-.06em;
  font-weight:900;
}

.statement p + p {
  margin-top:.12em;
  padding-left:clamp(0px,8vw,160px);
}

.dot {
  color:var(--accent);
}

/* final chair: slides in from the right with the rear leg still loose,
   then the loose leg folds in and slots into the gap */
.finale {
  display:flex;
  justify-content:flex-end;
  padding:0 var(--pad);
  overflow-x:clip;
}

.fchair {
  display:block;
  width:clamp(150px,20vw,300px);
  height:auto;
  overflow:visible;
  color:var(--ink);
  transform:translateX(calc(100% + var(--pad)));
  transition:transform 1.2s cubic-bezier(.22,.7,.2,1);
}

.finale.in .fchair {
  transform:none;
}

.finale .p {
  stroke-dasharray:1 2;
  stroke-dashoffset:0;
}

.finale .p-leg {
  transform:translate(26px,14px) rotate(-14deg);
}

.finale.in .p-leg {
  animation:flegfold 1.1s cubic-bezier(.6,0,.3,1) 1.7s both;
}

/* folds inward to upright, then slides up into the open gap under the back post */
@keyframes flegfold {
  0%   { transform:translate(26px,14px) rotate(-14deg); }
  50%  { transform:translate(14px,24px) rotate(0deg); }
  100% { transform:translate(0,0) rotate(0deg); }
}

@media (prefers-reduced-motion: reduce) {
  .fchair {
    transform:none;
    transition:none;
  }
  .finale .p-leg {
    animation:none!important;
    transform:none;
  }
}

/* closing */
.close {
  padding:clamp(56px,10vh,120px) var(--pad) clamp(90px,14vh,160px);
  display:flex;
  flex-wrap:wrap;
  align-items:baseline;
  gap:12px clamp(20px,3vw,44px);
}

.seat {
  text-decoration:none;
  font-size:clamp(56px,11.5vw,212px);
  line-height:.86;
  letter-spacing:-.06em;
  font-weight:900;
  color:var(--accent);
}

.seat:hover,
.seat:hover .seat-end {
  text-decoration:underline;
  text-decoration-thickness:.05em;
  text-underline-offset:.1em;
}

/* CTA indicator: hangs off the end of "seat." without adding to the text width,
   so the line breaks exactly as before and nothing can cause horizontal scroll */
.seat-end {
  display:inline-block;
  position:relative;
  white-space:nowrap;
}

.seat-arrow {
  position:absolute;
  top:0;
  left:calc(100% - .06em);
  width:.36em;
  height:.36em;
  overflow:visible;
}

footer {
  display:flex;
  justify-content:space-between;
  gap:20px;
  padding:26px var(--pad);
  border-top:1px solid #D6D6DB;
  font-size:16px;
  color:var(--mute);
}

footer a {
  text-decoration:none;
}

/* responsive */
@media (max-width:820px) {
  /* founder */
  .founder {
    grid-template-columns:minmax(0,1fr);
  }
  .founder-portrait {
    max-width:520px;
  }

  /* hero */
  .ffn {
    font-size:15vw;
    word-spacing:100vw; /* one word per line on mobile, independent of font metrics */
  }
  .ffn span:nth-child(2) {
    padding-left:12vw;
  }

  /* change rows: word and "change." as a staggered stair */
  .crow {
    grid-template-columns:minmax(0,1fr);
    font-size:14vw;
    line-height:1.02;
    padding:0 var(--pad);
  }
  .crow .w {
    text-align:left;
  }
  .crow:nth-child(1) .c { padding-left:22vw; }
  .crow:nth-child(2) .c { padding-left:36vw; }
  .crow:nth-child(3) .c { padding-left:8vw; }
  .crow:nth-child(4) .c { padding-left:28vw; }
  .crow + .crow {
    margin-top:.3em;
  }

  /* fixed structure */
  .fixed .deliver {
    margin-left:12vw;
  }

  /* steps */
  .step,.s3,.s4 {
    grid-template-columns:minmax(0,1fr);
    padding-left:var(--pad);
  }
  .num {
    margin-left:calc(var(--pad) * -1 - .10941em);
    font-size:51.04vw;
  }
  .step .body {
    padding-top:0;
    padding-bottom:0;
  }

  /* offers */
  .o1,.o3,.o2 .cols {
    grid-template-columns:minmax(0,1fr);
  }
  .o2 h3 {
    font-size:22vw;
  }
  .o3 h3 {
    grid-column:1;
    grid-row:1;
    text-align:left;
  }
  .o3 .side {
    grid-row:2;
  }
}

@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior:auto;
  }
  .fte i {
    transform:none!important;
    animation:none!important;
  }
  .crew .chair {
    opacity:1;
    transform:none;
    transition:none;
  }
  .blink .chair,.blink.in .chair {
    animation:none!important;
    opacity:1;
    transform:none;
  }
  .fold .bars i,.s4 .body > h3,.s4 .body > .sub,.s4 .body > .copy {
    animation:none!important;
  }
  .crow {
    transform:none!important;
  }
}

/* custom cursor: minimal pink dot, desktop (fine pointer) only */
@media (hover:hover) and (pointer:fine) {
  *,*::before,*::after {
    cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 14 14'%3E%3Ccircle cx='7' cy='7' r='5.5' fill='%23D86AD9' stroke='%23F2F2F4' stroke-width='1'/%3E%3C/svg%3E") 7 7, auto;
  }
}
