:root{
  --bg:#050507;
  --text:#ffffff;
  --muted:rgba(255,255,255,0.55);
  --line:rgba(255,255,255,0.10);

  --headerH:88px;
  --partnersH:72px;

  --padX:8vw;
}

*{margin:0;padding:0;box-sizing:border-box}
html,body{height:100%}

body{
  font-family:'Inter',sans-serif;
  background:var(--bg);
  color:var(--text);
  /* Desktop: rail-style, kein Scroll */
  overflow:hidden;
}

a{color:inherit;text-decoration:none}

/* ===== Topbar ===== */
.topbar{
  position:fixed;
  top:0; left:0; right:0;
  height:var(--headerH);
  padding:0 var(--padX);
  display:flex;
  justify-content:space-between;
  align-items:center;
  z-index:10;

  /* iOS safe area */
  padding-top: env(safe-area-inset-top);
  height: calc(var(--headerH) + env(safe-area-inset-top));

  background:linear-gradient(180deg, rgba(5,5,7,0.92), rgba(5,5,7,0.55));
  border-bottom:1px solid rgba(255,255,255,0.06);
}

.brand{
  display:flex;
  align-items:center;
  gap:18px;
}

.brand__logo{
  height:40px;
  width:auto;
  display:block;
}

.brand__logo--invert{
  filter:invert(1) brightness(2);
}

.header-actions a{
  font-size:0.75rem;
  letter-spacing:1.5px;
  text-transform:uppercase;
  margin-left:30px;
  opacity:0.65;
}
.header-actions a:hover{opacity:1}

/* ===== Rail ===== */
.rail{
  margin-top: calc(var(--headerH) + env(safe-area-inset-top));
  height: calc(100dvh - (var(--headerH) + env(safe-area-inset-top)) - (var(--partnersH) + env(safe-area-inset-bottom)));
  display:flex;
  align-items:stretch;
  justify-content:center;
  padding:0 var(--padX);
  gap:18px;
}

.split{
  flex:1;
  position:relative;
  overflow:hidden;
  cursor:pointer;
  border-left:1px solid rgba(255,255,255,0.06);
  transition: flex .45s cubic-bezier(.2,.8,.2,1), opacity .25s ease;
  min-width:0;
  border-radius:0;
}
.split:first-child{border-left:0}

.split img{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  filter:brightness(0.68);
  transform:scale(1.02);
  transition:transform .55s ease, filter .55s ease;
}

/* overlay */
.split::after{
  content:"";
  position:absolute;
  inset:0;
  background:linear-gradient(180deg, rgba(0,0,0,0.05), rgba(0,0,0,0.72));
  pointer-events:none;
}

/* Desktop label: vertical */
.label{
  position:absolute;
  top:26px;
  left:22px;
  z-index:2;

  font-size:clamp(1.25rem, 2.2vw, 2rem);
  font-weight:900;
  text-transform:uppercase;
  letter-spacing:1.2px;

  writing-mode:vertical-rl;
  text-orientation:mixed;
  transform:rotate(180deg);
  opacity:0.96;
  user-select:none;
}

.subtext{
  position:absolute;
  bottom:18px;
  left:22px;
  right:18px;
  z-index:2;

  font-size:0.9rem;
  color:rgba(255,255,255,0.68);
  letter-spacing:0.2px;
  transition: transform .25s ease;
}

/* Desktop hover expand */
@media (hover:hover) and (pointer:fine){
  .rail:hover .split{opacity:0.55; flex:0.75}
  .rail:hover .split:hover{opacity:1; flex:2.35}
  .split:hover img{transform:scale(1.06); filter:brightness(0.82)}
  .split:hover .subtext{transform:translateY(-2px)}
}

/* Touch focus */
.split.focus{flex:2.35; opacity:1}
.split.focus img{transform:scale(1.06); filter:brightness(0.82)}

.rail.has-focus .split{opacity:0.55; flex:0.75}
.rail.has-focus .split.focus{opacity:1}

/* Close (only in focus state; hidden on desktop by default interaction anyway) */
.close{
  position:absolute;
  top:18px;
  right:18px;
  z-index:3;

  width:42px;
  height:42px;
  border-radius:999px;
  border:1px solid rgba(255,255,255,0.16);
  background:rgba(0,0,0,0.35);
  backdrop-filter:blur(10px);

  display:none;
  align-items:center;
  justify-content:center;

  font-weight:900;
  letter-spacing:0.5px;

  user-select:none;
}
.split.focus .close{display:flex}
.close:focus{outline:2px solid rgba(255,255,255,0.35); outline-offset:2px}

/* ===== Partners ===== */
.partners{
  position:fixed;
  left:0; right:0; bottom:0;
  height: var(--partnersH);
  padding:0 var(--padX);
  display:flex;
  align-items:center;
  gap:18px;
  z-index:9;

  padding-bottom: env(safe-area-inset-bottom);
  height: calc(var(--partnersH) + env(safe-area-inset-bottom));

  border-top:1px solid rgba(255,255,255,0.06);
  background:linear-gradient(180deg, rgba(5,5,7,0.30), rgba(5,5,7,0.92));
}

.meta{
  display:flex;
  flex-direction:column;
  gap:2px;
  min-width:170px;
}

.meta__label{
  font-size:11px;
  letter-spacing:2px;
  text-transform:uppercase;
  opacity:0.65;
}

.meta__copy{
  font-size:12px;
  color:rgba(255,255,255,0.45);
}

.marquee{
  flex:1;
  height:44px;
  overflow:hidden;
  position:relative;
  mask-image: linear-gradient(90deg, transparent, #000 10%, #000 90%, transparent);
}

.track{
  display:flex;
  align-items:center;
  gap:34px;
  height:44px;
  width:max-content;
  will-change:transform;
  animation: marquee 22s linear infinite;
}

.partner{
  display:flex;
  align-items:center;
  gap:10px;
  opacity:0.85;
  transition:opacity .2s ease;
}
.partner:hover{opacity:1}

.partner img{
  height:44px;
  width:auto;
  display:block;
  filter:grayscale(1) contrast(1.05) brightness(1.05);
  opacity:0.9;
}

.partner span{
  font-size:22px;
  letter-spacing:1.6px;
  text-transform:uppercase;
  color:rgba(255,255,255,0.72);
  white-space:nowrap;
}

@keyframes marquee{
  from{transform:translateX(18%)}
  to{transform:translateX(-50%)}
}

/* Pause marquee when focusing on touch */
.rail.has-focus ~ .partners .track{animation-play-state:paused;}

@media (prefers-reduced-motion: reduce){
  .track{animation:none;}
}

/* ===== Mobile: Swipe Rail (Option B) ===== */
@media (max-width: 900px){
  :root{
    --padX:6vw;
    --headerH:76px;
    --partnersH:72px;

    /* Slider card width */
    --cardW: 86vw;
    --cardR: 18px;
    --edge: rgba(255,255,255,0.10);
    --edgeStrong: rgba(255,255,255,0.18);
  }

  body{
    overflow:hidden; /* Mobile fühlt sich “App-like” an */
  }

  .topbar{
    position:fixed;
    top:0;
    height: calc(var(--headerH) + env(safe-area-inset-top));
    padding: 0 var(--padX);
    padding-top: env(safe-area-inset-top);
  }

  /* Rail wird horizontal scrollbar (Swipe) */
  .rail{
	  justify-content: flex-start;
    margin-top: calc(var(--headerH) + env(safe-area-inset-top));
    height: calc(100dvh - (var(--headerH) + env(safe-area-inset-top)) - (var(--partnersH) + env(safe-area-inset-bottom)));

    display:flex;
    flex-direction:row;
    align-items:stretch;
    gap:14px;

    overflow-x:auto;
    overflow-y:hidden;
    -webkit-overflow-scrolling: touch;

    scroll-snap-type: x mandatory;
    --gutter: calc((100vw - var(--cardW)) / 2);

scroll-padding-left:  calc(var(--gutter) + env(safe-area-inset-left));
scroll-padding-right: calc(var(--gutter) + env(safe-area-inset-right));

padding: 14px calc(var(--gutter) + env(safe-area-inset-left)) 18px calc(var(--gutter) + env(safe-area-inset-right));

    /* hide scrollbar */
    scrollbar-width: none;
  }
  .rail::-webkit-scrollbar{ display:none; }

  /* Cards: feste Breite, snap to center */
  .split{
    flex: 0 0 var(--cardW);
    border-left:0;

    border-radius: var(--cardR);
    border:1px solid rgba(255,255,255,0.06);
    box-shadow: 0 10px 40px rgba(0,0,0,0.35);

    scroll-snap-align: center;
    scroll-snap-stop: always;

    opacity: 0.78;
    transition: opacity .25s ease, transform .25s ease, border-color .25s ease;
  }

  /* Active card gets same “wow” wie Desktop hover */
  .split.is-active{
    opacity:1;
    border-color: var(--edgeStrong);
    transform: translateY(-1px);
  }
  .split.is-active img{
    transform: scale(1.06);
    filter: brightness(0.82);
  }

  /* Mobile: Label horizontal (aber typografisch gleich) */
  .label{
    writing-mode:initial;
    transform:none;

    top:auto;
    left:18px;
    bottom:64px;

    font-size: clamp(1.15rem, 5vw, 1.6rem);
    letter-spacing: 1.0px;
    text-shadow: 0 10px 35px rgba(0,0,0,0.65);
  }

  .subtext{
    left:18px;
    right:18px;
    bottom:18px;
    font-size:0.95rem;
    text-shadow: 0 10px 30px rgba(0,0,0,0.55);
  }

  /* Close button macht im Swipe-Modus keinen Sinn -> aus */
  .close{ display:none !important; }

  /* Partners bleibt fixed wie Desktop (Style bleibt!) */
  .partners{
    position:fixed;
    left:0; right:0; bottom:0;

    height: calc(var(--partnersH) + env(safe-area-inset-bottom));
    padding: 0 var(--padX);
    padding-bottom: env(safe-area-inset-bottom);
  }

  /* Dots (wird via JS injected) */
  .dots{
    position: fixed;
    left:0; right:0;
    bottom: calc(var(--partnersH) + env(safe-area-inset-bottom) + 10px);
    display:flex;
    justify-content:center;
    gap:8px;
    z-index: 11;
    pointer-events:auto;
  }

  .dot{
    width:8px; height:8px;
    border-radius:999px;
    border:1px solid rgba(255,255,255,0.28);
    background: rgba(255,255,255,0.10);
    opacity:0.65;
    transition: transform .2s ease, opacity .2s ease, background .2s ease;
  }
  .dot[aria-current="true"]{
    opacity:1;
    transform: scale(1.25);
    background: rgba(255,255,255,0.35);
  }
}
