/* =========================================================
   Seventyseven Media e.U. — 77media
   Nachbau der Originalseite: Vollbild-Showreel, Logo fix oben links,
   vier Beschriftungen unten, Panels erscheinen darüber.
   Maße aus der Muse-Vorlage: Panel 569×470, Deck bottom 15px /
   left 50%−324px, Logo top 30 / left 37 / breit 177, Social-Icons
   bottom 34 ab 50%+316px.
   ========================================================= */

/* ---------- Fonts ---------- */
@font-face {
  font-family: 'Yanone Kaffeesatz';
  src: url('../fonts/yanone-kaffeesatz-var.woff2') format('woff2-variations'),
       url('../fonts/yanone-kaffeesatz-var.woff2') format('woff2');
  font-weight: 200 700;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: 'Inter';
  src: url('../fonts/inter-var.woff2') format('woff2-variations'),
       url('../fonts/inter-var.woff2') format('woff2');
  font-weight: 100 900;
  font-style: normal;
  font-display: swap;
}

/* ---------- Tokens ---------- */
:root {
  --flame:  #e5471b;
  --paper:  #ffffff;
  --ink:    #3c3c3c;
  --ink-2:  #6d6d6d;

  --display: 'Yanone Kaffeesatz', 'Arial Narrow', sans-serif;
  --body:    'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif;

  --deck-w: 569px;   /* Panelbreite im Original */
  --ease:   cubic-bezier(.22, .61, .36, 1);
}

/* ---------- Basis ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  min-height: 100svh;
  background: #0b0b0d;
  color: #fff;
  font-family: var(--body);
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
  overflow: hidden;           /* das Original ist eine feste Bildschirmseite */
}
img { max-width: 100%; height: auto; display: block; }
a { color: inherit; }
ul { margin: 0; padding: 0; }
li { list-style: none; }
p  { margin: 0; }
button { font: inherit; color: inherit; background: none; border: 0; }

:focus-visible { outline: 2px solid var(--flame); outline-offset: 4px; }

.sr-only {
  position: absolute; width: 1px; height: 1px;
  padding: 0; margin: -1px; overflow: hidden;
  clip-path: inset(50%); white-space: nowrap;
}
.skip {
  position: fixed; left: 50%; top: 0; z-index: 200;
  transform: translate(-50%, -120%);
  background: var(--flame); color: #fff;
  padding: .6rem 1.1rem; text-decoration: none;
  font-size: .8rem; letter-spacing: .08em; text-transform: uppercase;
}
.skip:focus { transform: translate(-50%, 0); }

/* =========================================================
   Bühne — Showreel im Vollbild
   ========================================================= */
.stage {
  position: fixed;
  inset: 0;
  z-index: 0;
  overflow: hidden;
  background: #0b0b0d;
}
.stage__poster {
  position: absolute;
  inset: 0;
  width: 100%; height: 100%;
  object-fit: cover;
}
.stage__video {
  position: absolute;
  inset: 0;
  opacity: 0;
  transition: opacity 1.6s var(--ease);
}
.stage__video.is-playing { opacity: 1; }
/* scale(1.4) beschneidet großzügig, damit YouTubes Titel- und Logo-
   Einblendungen außerhalb des sichtbaren Bereichs liegen. */
.stage__video iframe {
  position: absolute;
  top: 50%; left: 50%;
  transform: translate(-50%, -50%) scale(1.4);
  width: 100vw;
  height: 56.25vw;
  min-height: 100%;
  min-width: 177.78vh;
  border: 0;
  pointer-events: none;
}
.stage__scrim {
  position: absolute;
  inset: 0;
  background:
    linear-gradient(180deg, rgba(11,11,13,.55) 0%, rgba(11,11,13,0) 26%),
    linear-gradient(0deg,   rgba(11,11,13,.62) 0%, rgba(11,11,13,0) 42%),
    radial-gradient(130% 110% at 50% 45%, rgba(11,11,13,0) 38%, rgba(11,11,13,.5) 100%);
}

/* =========================================================
   Logo — fix oben links
   ========================================================= */
.logo {
  position: fixed;
  top: 30px; left: 37px;
  z-index: 30;
  margin: 0;
  width: 177px;
  animation: rise .9s var(--ease) both;
}
.logo a { display: block; }
.logo img { width: 100%; }
@keyframes rise {
  from { opacity: 0; transform: translateY(-10px); }
  to   { opacity: 1; transform: none; }
}

/* =========================================================
   Deck — Panels und Beschriftungen
   ========================================================= */
.deck {
  position: fixed;
  bottom: 15px;
  left: 50%;
  margin-left: -324px;
  width: var(--deck-w);
  z-index: 20;
}

/* ---------- Beschriftungen ---------- */
.labels {
  display: flex;
  align-items: baseline;
  gap: 40px;
  padding-left: 28px;   /* Versatz der Beschriftungszeile im Original */
  height: 46px;
}
.labels button {
  position: relative;
  padding: 0 0 8px;
  font-family: var(--display);
  font-weight: 300;
  font-size: 22px;
  line-height: 1;
  letter-spacing: .13em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, .72);
  cursor: pointer;
  transition: color .3s var(--ease);
  text-shadow: 0 1px 12px rgba(0, 0, 0, .55);
}
.labels button::after {
  content: '';
  position: absolute;
  left: 0; bottom: 0;
  width: 100%; height: 1px;
  background: var(--flame);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform .35s var(--ease);
}
.labels button:hover,
.labels button[aria-expanded="true"] { color: #fff; }
.labels button:hover::after,
.labels button[aria-expanded="true"]::after { transform: scaleX(1); }

/* ---------- Panels ---------- */
.panel {
  position: absolute;
  left: 0;
  bottom: 56px;          /* Panelunterkante im Original */
  width: var(--deck-w);
  min-height: 470px;     /* Panelhöhe im Original */
  max-height: calc(100svh - 140px);
  display: flex;
  overflow-y: auto;
  overscroll-behavior: contain;
  /* Wie im Original liegt die Durchsichtigkeit auf dem ganzen Panel, nicht nur
     auf dem Hintergrund — sonst stechen die weißen Logoflächen als Kästchen hervor. */
  background: #fff;
  box-shadow: 0 24px 60px rgba(0, 0, 0, .45);
  color: var(--ink);
  opacity: 0;
  visibility: hidden;
  transform: translateY(14px);
  transition: opacity .5s var(--ease), transform .5s var(--ease), visibility .5s;
}
.panel.is-open {
  opacity: .96;
  visibility: visible;
  transform: none;
}
.panel__inner {
  flex: 1;
  display: flex;
  flex-direction: column;
  padding: 40px 44px 44px;
}

.panel__title {
  font-family: var(--display);
  font-weight: 300;
  font-size: 27px;
  line-height: 1.1;
  letter-spacing: .05em;
  text-transform: uppercase;
  color: #2f2f2f;
}
.panel__title span {
  color: var(--ink-2);
  letter-spacing: .07em;
}

/* ---------- Über mich ---------- */
.about {
  display: grid;
  grid-template-columns: 240px 1fr;
  gap: 30px;
  align-items: stretch;
  flex: 1;
}
.about__photo {
  width: 100%;
  height: 100%;
  min-height: 300px;
  object-fit: cover;
}
.about__text { align-self: center; }
.about__name {
  font-family: var(--display);
  font-weight: 200;
  font-size: 38px;
  line-height: 1;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: #2f2f2f;
}
.about__roles {
  margin-top: 18px;
  font-family: var(--display);
  font-weight: 300;
  font-size: 20px;
  line-height: 1.28;
  letter-spacing: .07em;
  text-transform: uppercase;
  color: var(--ink-2);
}
.about__contact {
  margin-top: 26px;
  font-family: var(--display);
  font-weight: 300;
  font-size: 18px;
  line-height: 1.6;
  letter-spacing: .04em;
  color: var(--ink-2);
}
.about__contact a {
  color: var(--flame);
  text-decoration: none;
  border-bottom: 1px solid transparent;
  transition: border-color .3s var(--ease);
}
.about__contact a:hover { border-bottom-color: var(--flame); }

/* ---------- Logoraster (Referenzen und Partner) ---------- */
.marks {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  gap: 22px 30px;
  margin-top: 30px;
}
.marks li {
  display: grid;
  place-items: center;
  width: 118px;
  height: 58px;
}
.marks img {
  max-height: 52px;
  width: auto;
}
.marks--partner { gap: 26px 40px; margin-top: auto; margin-bottom: auto; }
.marks--partner li { width: 132px; height: 84px; }
.marks--partner img { max-height: 78px; }
.marks--partner a {
  display: grid;
  place-items: center;
  transition: transform .3s var(--ease), opacity .3s var(--ease);
}
.marks--partner a:hover { transform: translateY(-2px); }

/* ---------- Impressum ---------- */
.imp__data {
  margin-top: 26px;
  font-size: 12.5px;
  line-height: 1.85;
  color: var(--ink-2);
}
.imp__agb { margin-top: 22px; }
.imp__agb a {
  font-family: var(--display);
  font-size: 19px;
  letter-spacing: .05em;
  color: var(--flame);
  text-decoration: none;
  border-bottom: 1px solid transparent;
  transition: border-color .3s var(--ease);
}
.imp__agb a:hover { border-bottom-color: var(--flame); }
.imp__legal {
  margin-top: 22px;
  font-size: 10.5px;
  line-height: 1.75;
  color: #8a8a8a;
}

/* =========================================================
   Social — rechts neben dem Deck, wie im Original
   ========================================================= */
.social {
  position: fixed;
  bottom: 34px;
  left: 50%;
  margin-left: 316px;
  z-index: 20;
  display: flex;
  gap: 25px;
}
.social a {
  display: grid;
  place-items: center;
  width: 50px; height: 50px;
  color: #fff;
  opacity: .5;
  transition: opacity .3s var(--ease), transform .3s var(--ease);
}
.social a:hover { opacity: .95; transform: translateY(-2px); }
.social svg { width: 27px; height: 27px; }

/* =========================================================
   Video anhalten — WCAG 2.2.2
   ========================================================= */
.motion {
  position: fixed;
  right: 26px; bottom: 26px;
  z-index: 25;
  display: inline-flex;
  align-items: center;
  gap: .6rem;
  padding: .45rem .85rem;
  border: 1px solid rgba(255, 255, 255, .22);
  border-radius: 999px;
  background: rgba(11, 11, 13, .4);
  cursor: pointer;
  backdrop-filter: blur(6px);
  transition: border-color .3s var(--ease), background-color .3s var(--ease);
}
.motion[hidden] { display: none; }
.motion:hover { border-color: var(--flame); background: rgba(229, 71, 27, .22); }
.motion__text {
  font-size: 9.5px;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, .8);
}
.motion__icon {
  width: 8px; height: 10px;
  flex: none;
  border-left: 3px solid #fff;
  border-right: 3px solid #fff;
}
.motion[aria-pressed="false"] .motion__icon {
  width: 0; height: 0;
  border-left: 8px solid #fff;
  border-right: 0;
  border-top: 5px solid transparent;
  border-bottom: 5px solid transparent;
}

/* =========================================================
   Schmale Fenster — das Original hatte dafür eigene Seiten,
   hier übernimmt es dasselbe Dokument.
   ========================================================= */
@media (max-width: 980px), (max-height: 680px) {
  body { overflow-y: auto; }

  .logo { top: 22px; left: 22px; width: 132px; }

  .deck {
    left: 0;
    right: 0;
    margin-left: 0;
    width: auto;
    bottom: 0;
    padding: 0 18px 18px;
  }
  .labels {
    gap: 22px;
    padding-left: 0;
    height: auto;
    flex-wrap: wrap;
    justify-content: center;
    padding-bottom: 4px;
  }
  .labels button { font-size: 19px; }

  .panel {
    left: 18px; right: 18px;
    width: auto;
    min-height: 0;
    bottom: 62px;
    max-height: calc(100svh - 150px);
  }
  .panel__inner { padding: 26px 24px 30px; }
  .panel__title { font-size: 22px; }

  .about { grid-template-columns: 1fr; gap: 20px; height: auto; }
  .about__photo { max-width: 220px; height: auto; aspect-ratio: 240 / 310; min-height: 0; }
  .about__name { font-size: 31px; }

  .marks { gap: 16px 22px; margin-top: 22px; }
  .marks li { width: 96px; height: 48px; }
  .marks img { max-height: 42px; }
  .marks--partner li { width: 110px; height: 70px; }

  .social {
    left: 50%;
    margin-left: 0;
    transform: translateX(-50%);
    bottom: auto;
    top: 26px;
    gap: 6px;
  }
  .social a { width: 40px; height: 40px; }
  .social svg { width: 22px; height: 22px; }

  .motion { right: 16px; bottom: auto; top: 22px; padding: .4rem .55rem; }
  .motion__text {
    position: absolute; width: 1px; height: 1px;
    padding: 0; margin: -1px; overflow: hidden;
    clip-path: inset(50%); white-space: nowrap;
  }
}

@media (max-width: 420px) {
  .labels { gap: 14px; }
  .labels button { font-size: 17px; letter-spacing: .1em; }
}

/* =========================================================
   Bewegung reduzieren
   ========================================================= */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .001ms !important;
  }
}
