/* ==========================================================
   Dead Space VR - gemeinsame Stile fuer alle Seiten
   Aufbau wie TEW2 VR / RE4 VR, Farben: Tuerkis (RIG) + Orange (Ishimura-Lampen)
   ========================================================== */

/* Big Shoulders Display, selbst gehostet (SIL Open Font License,
   Lizenztext liegt als OFL-BigShoulders.txt daneben). Schrift der Seite. */
@font-face{
  font-family: "Big Shoulders";
  src: url("big-shoulders-semibold.ttf") format("truetype");
  font-weight: 100 700;
  font-display: swap;
}
@font-face{
  font-family: "Big Shoulders";
  src: url("big-shoulders-extrabold.ttf") format("truetype");
  font-weight: 800 900;
  font-display: swap;
}
@font-face{
  font-family: "Gotham Light";
  src: url("gotham-light.otf") format("opentype");
  font-weight: 300;
  font-display: swap;
}
/* Titelschrift "Dead Space" (Schrift aus dem Mod-Menue) - alle Ueberschriften */
@font-face{
  font-family: "DS Title";
  src: url("ds-title.ttf") format("truetype");
  font-weight: 100 900;
  font-display: swap;
}

:root{
  --display: "Big Shoulders", "Trebuchet MS", "Segoe UI", sans-serif;
  --title:   "DS Title", "Big Shoulders", "Trebuchet MS", sans-serif;

  --ink:   #020709;
  --bone:  #dceff0;
  --cyan:  #3fe0ea;              /* RIG-Leuchten */
  --cyan-deep: #0e8a94;
  --amber: #ff8a2b;              /* Lampen der Ishimura */
  --amber-deep: #b9501a;

  /* Breite des Trailers. Der dritte Wert begrenzt die Hoehe. */
  --player-w: min(30vw, 460px, 46vh);
}

*{ box-sizing: border-box; margin: 0; padding: 0; }

html{ background: var(--ink); scroll-behavior: smooth; }

body{
  color: var(--bone);
  font-family: var(--display);
  background: var(--ink);
  overflow-x: hidden;
}

/* ---------- Ebene 0: Artwork ---------- */
.bg{
  position: fixed;
  inset: 0;
  z-index: 0;
  background: url("dsvr-bg.jpg") center top / cover no-repeat;
  transform-origin: 40% 30%;
  animation: kenburns 46s ease-in-out infinite alternate;
  will-change: transform;
}
@keyframes kenburns{
  from{ transform: scale(1.02); }
  to  { transform: scale(1.10); }
}
/* Grosse oder hochaufloesende Schirme bekommen das 3344er Master-Artwork */
@media (min-width: 1400px), (min-resolution: 1.5dppx){
  .bg{ background-image: url("dsvr-bg-2x.jpg"); }
}

/* leichte Tuerkis-/Orange-Toenung: kalt oben links (RIG), warm unten (Lampen) */
.bg::after{
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    radial-gradient(ellipse at 20% 28%, rgba(63,224,234,.07) 0%, rgba(63,224,234,0) 40%),
    radial-gradient(ellipse at 55% 95%, rgba(255,138,43,.06) 0%, rgba(255,138,43,0) 45%),
    radial-gradient(ellipse at 50% 45%, rgba(0,0,0,0) 0%, rgba(2,7,9,.18) 85%);
}

/* ---------- Ebene 2: Verlauf ---------- */
body::before{
  content: "";
  position: fixed;
  inset: 0;
  z-index: 2;
  pointer-events: none;
  background:
    linear-gradient(to top,    rgba(2,7,9,.62) 0%, rgba(2,7,9,.22) 18%, rgba(2,7,9,0) 32%),
    linear-gradient(to bottom, rgba(2,7,9,.45) 0%, rgba(2,7,9,0)  16%);
}
.page .bg{
  background-image: url("dsvr-bg.jpg");
  animation-duration: 90s;
}

/* ---------- Ebene 3: Filmkorn ---------- */
.grain{
  position: fixed;
  top: -50%; left: -50%;
  width: 200%; height: 200%;
  z-index: 3;
  pointer-events: none;
  opacity: .06;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='200' height='200'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/></filter><rect width='200' height='200' filter='url(%23n)'/></svg>");
  animation: grain .9s steps(5) infinite;
  will-change: transform;
}
@keyframes grain{
  0%{transform:translate(0,0)} 20%{transform:translate(-3%,2%)}
  40%{transform:translate(2%,-3%)} 60%{transform:translate(-2%,-2%)}
  80%{transform:translate(3%,1%)} 100%{transform:translate(0,0)}
}

/* Bildschirm-Scanlines wie auf den Holo-Anzeigen, ganz leicht */
.scan{
  position: fixed;
  inset: 0;
  z-index: 3;
  pointer-events: none;
  opacity: .22;
  background: repeating-linear-gradient(to bottom, rgba(63,224,234,.05) 0 1px, transparent 1px 4px);
  mix-blend-mode: screen;
}

/* ---------- Effekte im Startbild (dsfx.js) ----------
   Das Canvas haengt IN der .bg, zoomt mit dem Ken-Burns-Effekt mit. */
.bgfx{
  position: absolute;
  inset: 0;
  z-index: 1;
  width: 100%;
  height: 100%;
  pointer-events: none;
}

/* ---------- Navigation ---------- */
.nav{
  position: sticky;
  top: 0;
  z-index: 6;
  width: 100%;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: clamp(1rem, 3vw, 3.2rem);
  padding: clamp(1rem, 2vh, 1.6rem) 5vw;
  background: linear-gradient(rgba(2,7,9,.9), rgba(2,7,9,0));
  backdrop-filter: blur(3px);
}
.nav a{
  font-family: var(--display);
  font-weight: 600;
  font-size: clamp(.9rem, 1.5vw, 1.25rem);
  letter-spacing: .2em;
  text-transform: uppercase;
  text-decoration: none;
  color: rgba(220,239,240,.68);
  padding: .3em 0;
  border-bottom: 1px solid transparent;
  transition: color .2s ease, border-color .2s ease, text-shadow .2s ease;
}
.nav a:hover, .nav a:focus-visible, .nav a.is-current{
  color: #fff;
  border-color: var(--cyan);
  text-shadow: 0 0 10px rgba(63,224,234,.65);
  box-shadow: 0 6px 10px -8px rgba(63,224,234,.9);
}
.nav-home{ display: inline-flex; align-items: center; }
.nav-home svg{ display: block; width: 1.15rem; height: 1.15rem; }

@media (max-width: 520px){
  .nav{ gap: 1.05rem; padding: .9rem 4vw; }
  .nav a{ font-size: .7rem; letter-spacing: .13em; }
  .nav-home svg{ width: 1.05rem; height: 1.05rem; }
}

/* ---------- Startseite ---------- */
.hero{
  min-height: calc(100svh - 3.6rem);
  display: grid;
  align-content: start;
  justify-items: center;
  row-gap: clamp(.9rem, 2.2vh, 1.8rem);
  padding: 0 5vw 3vh;
}

.player{
  position: relative;
  z-index: 5;
  width: var(--player-w);
  padding: clamp(5px, .55vmin, 9px);
  background: rgba(2,7,9,.6);
  border: 1px solid rgba(63,224,234,.35);
  border-radius: 12px;
  backdrop-filter: blur(3px);
  box-shadow:
    0 26px 70px -26px rgba(0,0,0,.95),
    0 0 40px -12px rgba(63,224,234,.55),        /* Neon-Schein */
    inset 0 0 18px -10px rgba(63,224,234,.6);
  animation: neonFrame 6s ease-in-out infinite;
}
@keyframes neonFrame{
  0%, 100%{ border-color: rgba(63,224,234,.35); box-shadow: 0 26px 70px -26px rgba(0,0,0,.95), 0 0 40px -12px rgba(63,224,234,.55), inset 0 0 18px -10px rgba(63,224,234,.6); }
  50%     { border-color: rgba(63,224,234,.6);  box-shadow: 0 26px 70px -26px rgba(0,0,0,.95), 0 0 60px -10px rgba(63,224,234,.75), inset 0 0 22px -8px rgba(63,224,234,.7); }
}
.player-inner{
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 9;
  background: #000;
  border-radius: 7px;
  overflow: hidden;
  box-shadow: inset 0 0 0 1px rgba(220,239,240,.16);
}
.player-inner iframe{
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
  display: block;
}

/* Logo zwischen Trailer und Download-Block. --lit setzt dsfx.js (Lampenflackern). */
.logo{
  position: relative;
  z-index: 5;
  display: block;
  width: min(80vw, 520px);
}
.logo img{
  display: block;
  width: 100%;
  height: auto;
  filter: brightness(var(--lit, 1))
          drop-shadow(0 0 16px rgba(255,138,43,.35))
          drop-shadow(0 8px 18px rgba(0,0,0,.85));
}
.logo.is-glitch img{ animation: logoGlitch .12s steps(2) infinite; }
@keyframes logoGlitch{
  0%  { translate: -4px 0; filter: drop-shadow(5px 0 0 rgba(63,224,234,.55)) drop-shadow(-5px 0 0 rgba(255,138,43,.45)); }
  50% { translate: 5px 1px; filter: drop-shadow(-6px 0 0 rgba(63,224,234,.55)) drop-shadow(4px 0 0 rgba(255,138,43,.45)); }
  100%{ translate: 0 -1px; }
}
.tagline{
  margin-bottom: clamp(.3rem, 1vh, .8rem);
  text-align: center;
  font-family: "Gotham Light", "Helvetica Neue", Arial, sans-serif;
  font-weight: 300;
  font-size: clamp(.7rem, 1.1vw, 1.05rem);
  letter-spacing: .32em;
  text-transform: uppercase;
  color: rgba(220,239,240,.75);
  text-shadow: 0 2px 6px rgba(0,0,0,.9);
}
.tagline em{
  font-style: normal;
  color: var(--cyan);
  text-shadow: 0 0 10px rgba(63,224,234,.8), 0 2px 6px rgba(0,0,0,.9);
}

.stack{
  position: relative;
  z-index: 5;
  display: grid;
  justify-items: center;
  gap: .45rem;
  text-align: center;
}

.download{
  display: block;
  position: relative;
  padding: clamp(.28rem, .7vmin, .45rem) clamp(.4rem, 1vmin, .65rem);
  background: rgba(2,7,9,.55);
  border: 1px solid rgba(63,224,234,.75);
  border-image: linear-gradient(90deg,
      rgba(63,224,234,.2), rgba(63,224,234,.9) 50%, rgba(63,224,234,.2)) 1;
  backdrop-filter: blur(2px);
  box-shadow: 0 0 45px -14px rgba(63,224,234,.6);
  transition: background .2s ease, box-shadow .2s ease, transform .2s ease;
}
.download img{
  display: block;
  width: min(20vw, 235px);
  height: auto;
  filter: drop-shadow(0 0 6px rgba(63,224,234,.55));
  transition: filter .2s ease;
}
.download:hover, .download:focus-visible{
  background: rgba(63,224,234,.1);
  border-image: linear-gradient(90deg,
      rgba(255,138,43,.3), var(--amber) 50%, rgba(255,138,43,.3)) 1;
  box-shadow: 0 0 60px -10px rgba(255,138,43,.75);
  transform: translateY(-2px);
}
.download:hover img, .download:focus-visible img{
  filter: brightness(1.3) drop-shadow(0 0 14px rgba(63,224,234,.9));
}
.download:active{ transform: translateY(0); }
.dl-wrap{ position: relative; display: inline-block; }

/* Noch nicht freigegeben */
.download.is-soon{
  cursor: default;
  border-image: none;
  border-color: rgba(220,239,240,.28);
  box-shadow: none;
  background: rgba(2,7,9,.45);
}
.download.is-soon img{ filter: brightness(.55); }
.download.is-soon:hover{
  transform: none;
  background: rgba(2,7,9,.45);
  border-image: none;
  border-color: rgba(220,239,240,.28);
  box-shadow: none;
}
.download.is-soon:hover img{ filter: brightness(.55); }

/* "Coming Soon" liegt auf dem Button, faellt mit is-soon weg */
.soon{
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  font-family: var(--display);
  font-weight: 800;
  font-size: clamp(1rem, 2.6vw, 1.7rem);
  letter-spacing: .26em;
  text-indent: .26em;
  text-transform: uppercase;
  color: #fff;
  text-shadow:
    0 2px 5px rgba(0,0,0,.95),
    0 0 20px rgba(0,0,0,.85),
    0 0 40px rgba(0,0,0,.7);
  pointer-events: none;
}
.download:not(.is-soon) .soon{ display: none; }

.credit{
  font-family: var(--display);
  font-weight: 600;
  font-size: .72rem;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: rgba(220,239,240,.6);
}

:focus-visible{ outline: 2px solid var(--cyan); outline-offset: 5px; }

/* Versionszeile mit Strichen links und rechts (Start, Media) */
.verline{
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 1rem;
  margin: 2.8rem 0 1.1rem;
  font-family: var(--display);
  font-weight: 800;
  font-size: 1rem;
  letter-spacing: .34em;
  text-indent: .34em;
  text-transform: uppercase;
  color: rgba(220,239,240,.72);
}
.verline::before,
.verline::after{
  content: "";
  width: clamp(1.4rem, 6vmin, 3.2rem);
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(63,224,234,.85));
  box-shadow: 0 0 6px rgba(63,224,234,.6);
}
.verline::after{ transform: scaleX(-1); }
.stack .verline{ margin: .2rem 0 0; }

/* ---------- Unterseiten ---------- */
.section{
  position: relative;
  z-index: 5;
  max-width: 58rem;
  margin: 0 auto;
  padding: clamp(1.5rem, 4vh, 3rem) 5vw clamp(2rem, 5vh, 4rem);
}
.panel{
  position: relative;
  padding: clamp(1.6rem, 4.5vw, 3.2rem);
  background: rgba(2,7,9,.86);
  border: 1px solid rgba(63,224,234,.22);
  border-radius: 10px;
  backdrop-filter: blur(6px);
  box-shadow: 0 0 50px -24px rgba(63,224,234,.55), inset 0 0 30px -22px rgba(63,224,234,.5);
}
/* Neon-Leiste oben (tuerkis) und unten (orange) wie die Lichtleisten im Spiel */
.panel::before, .panel::after{
  content: "";
  position: absolute;
  left: 12%; right: 12%;
  height: 2px;
  border-radius: 2px;
  pointer-events: none;
}
.panel::before{
  top: -1px;
  background: linear-gradient(90deg, transparent, var(--cyan) 30%, var(--cyan) 70%, transparent);
  box-shadow: 0 0 12px 1px rgba(63,224,234,.75);
}
.panel::after{
  bottom: -1px;
  background: linear-gradient(90deg, transparent, var(--amber) 35%, var(--amber) 65%, transparent);
  box-shadow: 0 0 12px 1px rgba(255,138,43,.6);
  opacity: .8;
}

.panel h1{
  width: fit-content;
  max-width: 100%;
  position: relative;
  margin: 0 auto .5rem;
  font-family: var(--title);
  font-size: clamp(2.4rem, 7.5vw, 4.2rem);
  font-weight: 400;
  line-height: 1.05;
  letter-spacing: .06em;
  text-transform: uppercase;
  text-align: center;
  color: #e9fbfc;
  text-shadow: 0 0 6px rgba(63,224,234,.85), 0 0 22px rgba(63,224,234,.55), 0 0 44px rgba(63,224,234,.3);
}
/* Erster Buchstabe in Orange-Neon */
.panel h1::first-letter, .panel h1 .word::first-letter{
  color: #ff8a2b;
  text-shadow: 0 0 6px rgba(255,138,43,.95), 0 0 22px rgba(255,138,43,.65), 0 0 44px rgba(255,138,43,.35);
}
.panel h1 .word{ position: relative; display: inline-block; }
/* Lange Ueberschrift (INSTALLATION ~9.3em breit) an die Panel-Breite koppeln, sonst ragt sie rechts raus */
.panel{ container-type: inline-size; }
.panel h1.long{ font-size: min(clamp(2.4rem, 7.5vw, 4.2rem), 9.8cqi); }
/* Neon-Flackern der Ueberschrift: meist ruhig, ab und zu ein kurzes Aussetzen */
@media (prefers-reduced-motion: no-preference){
  .panel h1{ animation: neonFlicker 7s linear infinite; }
  @keyframes neonFlicker{
    0%, 18%, 22%, 61%, 63%, 65%, 100%{ opacity: 1; }
    20%{ opacity: .55; }
    62%{ opacity: .35; }
    64%{ opacity: .8; }
  }
}
.lead.centered{ text-align: center; }

.panel h1 + .lead{
  margin-bottom: 2.4rem;
  padding-bottom: 1.4rem;
  border-bottom: 1px solid rgba(63,224,234,.35);
  font-size: 1.02rem;
  color: rgba(220,239,240,.72);
}
.panel h2{
  margin: 2.8rem 0 1.1rem;
  font-family: var(--display);
  font-size: clamp(1.25rem, 3.1vw, 1.65rem);
  font-weight: 800;
  letter-spacing: .1em;
  color: #fff;
}
.panel h1 + h2, .panel .lead + h2{ margin-top: 0; }
.panel ul + h2, .panel ol + h2{ margin-top: 3.4rem; }
.panel h3{
  margin: 1.8rem 0 .6rem;
  font-family: var(--display);
  font-weight: 800;
  font-size: .95rem;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--cyan);
  text-shadow: 0 0 10px rgba(63,224,234,.45);
}
.panel p, .panel li{
  font-size: .97rem;
  line-height: 1.8;
  color: rgba(220,239,240,.84);
}
.panel p + p{ margin-top: 1rem; }
.panel ul, .panel ol{ margin: .8rem 0 2rem 1.3rem; }
.panel li{ margin-bottom: .55rem; }
.panel li::marker{ color: var(--amber); }
.panel a{ color: var(--cyan); }
.panel strong{ color: #fff; }
.panel code{
  font-family: Consolas, "Courier New", monospace;
  font-size: .88em;
  padding: .1em .4em;
  background: rgba(220,239,240,.08);
  border-radius: 3px;
}
.panel .closing{
  margin-top: 1.6rem;
  padding-top: 1.4rem;
  border-top: 1px solid rgba(220,239,240,.12);
  font-style: italic;
  color: rgba(220,239,240,.66);
}
.panel .closing.plain{ border-top: 0; padding-top: 0; }
.panel p.centered{ text-align: center; color: rgba(220,239,240,.7); }

/* Download-Link auf Unterseiten */
.dl-link{
  display: inline-block;
  margin: .9rem 0 .2rem;
  padding: .8em 1.8em;
  font-size: .82rem;
  font-weight: 700;
  letter-spacing: .2em;
  text-transform: uppercase;
  text-decoration: none;
  color: var(--bone);
  background: rgba(63,224,234,.12);
  border: 1px solid var(--cyan);
  border-radius: 6px;
  transition: background .2s ease, color .2s ease, box-shadow .2s ease;
}
.dl-link:hover, .dl-link:focus-visible{ background: var(--cyan-deep); color: #fff; box-shadow: 0 0 18px rgba(63,224,234,.6); }
.dl-link.is-soon{
  cursor: default;
  color: rgba(220,239,240,.45);
  background: rgba(220,239,240,.05);
  border-color: rgba(220,239,240,.22);
  box-shadow: none;
}
.dl-link.is-soon:hover{ background: rgba(220,239,240,.05); color: rgba(220,239,240,.45); }

/* Installationsschritte */
.steps{ margin: 1.4rem 0 0 1.3rem; }
.steps > li{ margin-bottom: 1.6rem; }
.steps > li > strong{
  display: block;
  margin-bottom: .3rem;
  font-family: var(--display);
  font-weight: 800;
  font-size: 1.1rem;
  letter-spacing: .04em;
  color: #fff;
}
.steps ul{ margin-top: .6rem; }

/* Bindings-Bild */
.chart{ margin: 0 0 2.4rem; }
.chart a{ display: block; }
.chart img{
  display: block;
  width: 100%;
  height: auto;
  border: 1px solid rgba(63,224,234,.3);
  border-radius: 8px;
  box-shadow: 0 0 30px -12px rgba(63,224,234,.6);
}
.chart figcaption{
  margin-top: .7rem;
  font-size: .75rem;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: rgba(220,239,240,.45);
  text-align: center;
}

/* Sprungleiste unter der Seitenueberschrift */
.jump{
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: clamp(.8rem, 2.5vw, 2rem);
  margin: 0 0 1.6rem;
}
.jump a{
  font-family: var(--display);
  font-weight: 600;
  font-size: .82rem;
  letter-spacing: .18em;
  text-transform: uppercase;
  text-decoration: none;
  color: rgba(220,239,240,.62);
  padding-bottom: .25em;
  border-bottom: 1px solid transparent;
  transition: color .2s ease, border-color .2s ease;
}
.jump a:hover, .jump a:focus-visible{ color: #fff; border-color: var(--cyan); }

.section-title[id], .panel h2[id]{ scroll-margin-top: 5rem; }

/* Trennlinie zwischen zwei Bereichen: Neon-Strich */
.rule{
  height: 0;
  margin: 2.6rem 0 2.4rem;
  border: 0;
  border-top: 1px solid rgba(63,224,234,.45);
  box-shadow: 0 0 10px rgba(63,224,234,.35);
}

/* Bereichstitel in der Titelschrift, mittig wie die Seitenueberschrift */
.panel h2.section-title{
  margin: 0 0 1.6rem;
  font-family: var(--title);
  font-size: clamp(2rem, 6vw, 3.4rem);
  font-weight: 400;
  line-height: 1.05;
  letter-spacing: .06em;
  text-transform: uppercase;
  text-align: center;
  color: #e9fbfc;
  text-shadow: 0 0 6px rgba(63,224,234,.8), 0 0 20px rgba(63,224,234,.45);
}
.panel .r{
  color: #ff8a2b;
  text-shadow: 0 0 6px rgba(255,138,43,.95), 0 0 20px rgba(255,138,43,.55);
}

/* Optionsliste: Name fett, Erklaerung dahinter */
.options{ margin-top: 1.2rem; }
.options > div{
  padding: .85rem 0;
  border-bottom: 1px solid rgba(220,239,240,.1);
}
.options b{
  display: block;
  margin-bottom: .2rem;
  font-family: var(--display);
  font-weight: 800;
  font-size: 1.02rem;
  letter-spacing: .05em;
  color: #fff;
}
.options span{
  font-size: .95rem;
  line-height: 1.7;
  color: rgba(220,239,240,.8);
}
.options .group{
  padding: 1.6rem 0 .3rem;
  border-bottom: 0;
  font-family: var(--display);
  font-weight: 800;
  font-size: .8rem;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--amber);
  text-shadow: 0 0 10px rgba(255,138,43,.45);
}

/* Credits */
.credits{ list-style: none; margin: 1.6rem 0 0; padding: 0; }
.credits li{
  display: grid;
  grid-template-columns: 56px 1fr;
  align-items: center;
  gap: 1.1rem;
  padding: .9rem 0;
  border-bottom: 1px solid rgba(220,239,240,.1);
}
.credits li:last-child{ border-bottom: 0; }
.panel .closing.credits-end{ margin-top: .9rem; text-align: center; }
.credits .avatar{
  width: 56px;
  height: 56px;
  border-radius: 50%;
  object-fit: cover;
  border: 2px solid rgba(63,224,234,.8);
  box-shadow: 0 0 12px -2px rgba(63,224,234,.65);
}
.credits .avatar.avatar-thick{ border-width: 3px; }
@media (max-width: 480px){
  .credits li{ grid-template-columns: 44px 1fr; gap: .9rem; }
  .credits .avatar{ width: 44px; height: 44px; }
}
.credits b{
  display: block;
  margin-bottom: .15rem;
  font-family: var(--display);
  font-weight: 800;
  font-size: 1.15rem;
  letter-spacing: .06em;
  color: #fff;
}
.credits span{
  font-size: .95rem;
  line-height: 1.7;
  color: rgba(220,239,240,.78);
}

/* Galerie + Videos */
.gallery{
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 1rem;
  margin-top: 1.4rem;
}
.gallery a{ display: block; }
.gallery img{
  display: block;
  width: 100%;
  aspect-ratio: 16 / 9;
  object-fit: cover;
  border: 1px solid rgba(220,239,240,.15);
  border-radius: 8px;
  transition: border-color .2s ease, transform .2s ease;
}
.gallery a:hover img{ border-color: var(--cyan); transform: translateY(-2px); }
.videos{
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 1rem;
  margin-top: 1.4rem;
  margin-bottom: 2.6rem;
}
.video-frame{
  position: relative;
  aspect-ratio: 16 / 9;
  background: #000;
  border: 1px solid rgba(63,224,234,.3);
  border-radius: 8px;
  overflow: hidden;
}
.video-frame iframe{ position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }

/* Tastenbelegung */
.binds{
  display: grid;
  grid-template-columns: minmax(9rem, 17rem) 1fr;
  gap: .1rem 1.5rem;
  margin-top: .8rem;
}
.binds dt{
  padding: .55rem 0;
  font-family: var(--display);
  font-weight: 600;
  font-size: .92rem;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: #fff;
  border-bottom: 1px solid rgba(220,239,240,.1);
}
.binds dd{
  padding: .55rem 0;
  font-size: .93rem;
  color: rgba(220,239,240,.75);
  border-bottom: 1px solid rgba(220,239,240,.1);
}
@media (max-width: 600px){
  .binds{ grid-template-columns: 1fr; gap: 0; }
  .binds dt{ border-bottom: 0; padding-bottom: .1rem; }
  .binds dd{ margin-bottom: .4rem; }
}

.totop{
  display: block;
  position: relative;
  z-index: 5;
  padding: 0 5vw 3.5rem;
  text-align: center;
  font-size: .74rem;
  letter-spacing: .2em;
  text-transform: uppercase;
  text-decoration: none;
  color: rgba(220,239,240,.45);
}
.totop:hover{ color: var(--cyan); }

/* ---------- Zeile "Visit also: ..." (sites.js) ---------- */
.sisters{
  margin-top: clamp(1rem, 3.2vh, 2.2rem);
  font-family: var(--display);
  font-weight: 600;
  font-size: clamp(.6rem, 1.35vh, .78rem);
  letter-spacing: .2em;
  text-transform: uppercase;
  color: rgba(220,239,240,.32);
  text-shadow: 0 2px 6px rgba(0,0,0,.9);
}
.sisters a{
  color: rgba(220,239,240,.5);
  text-decoration: none;
  border-bottom: 1px solid transparent;
  transition: color .2s ease, border-color .2s ease;
}
.sisters a:hover, .sisters a:focus-visible{ color: #fff; border-color: var(--cyan); }

/* ---------- Intro-Blende ---------- */
.curtain{
  position: fixed;
  inset: 0;
  z-index: 9;
  background: var(--ink);
  pointer-events: none;
}
@media (prefers-reduced-motion: no-preference){
  .curtain{ animation: curtainOut 1.7s ease .15s forwards; }
  @keyframes curtainOut{ to{ opacity: 0; visibility: hidden; } }

  .nav, .player, .logo, .stack{ opacity: 0; animation: rise 1.2s ease 1.05s forwards; }
  .player{ animation: rise 1.2s ease 1.05s forwards, neonFrame 6s ease-in-out 2.3s infinite; }
  @keyframes rise{
    from{ opacity: 0; transform: translateY(16px); }
    to  { opacity: 1; transform: none; }
  }
  .page .nav{ animation-delay: .05s; animation-duration: .6s; }
  .page::after{
    content: "";
    position: fixed;
    inset: 0;
    z-index: 9;
    background: var(--ink);
    pointer-events: none;
    animation: curtainOut .55s ease .03s forwards;
  }
  .page .section{ opacity: 0; animation: rise .6s ease .12s forwards; }
  .page .totop{ opacity: 0; animation: rise .6s ease .28s forwards; }
}
@media (prefers-reduced-motion: reduce){
  html{ scroll-behavior: auto; }
  .curtain, .bgfx, .grain, .scan{ display: none; }
  .bg, .panel h1, .player{ animation: none; }
  .download, .download img{ transition: none; }
  .download:hover{ transform: none; }
}

/* ---------- Querformat ----------
   Spalte nach rechts versetzt (Mitte ~60 % der Breite): Isaac mit dem Headset
   bleibt links frei, Trailer ueber der Ishimura-Decke, Logo vor dem Schiffsnamen,
   Download auf dem Boden zwischen Isaac und dem Necromorph. */
@media (min-aspect-ratio: 1/1){
  :root{ --player-w: min(26vw, 420px, 30vh); }
  .hero{
    align-content: space-between;
    row-gap: 2vh;
    padding-left: 29vw;
    padding-top: clamp(1.5rem, 8vh, 5rem);
    padding-bottom: clamp(1.5rem, 5vh, 3rem);
  }
  .stack{ gap: clamp(.4rem, 1vh, .7rem); }
  .logo{ width: min(36vw, 600px, 62vh); }
  .download{ padding: clamp(.4rem, 1vmin, .7rem) clamp(.6rem, 1.4vmin, 1rem); }
  .download img{ width: min(26vw, 360px); }
  .credit{ font-size: clamp(.66rem, 1.6vh, .9rem); }
}

/* ---------- Hochkant / schmale Displays ---------- */
@media (max-aspect-ratio: 1/1){
  :root{ --player-w: min(66vw, 340px); }
  .hero{
    align-content: space-between;
    row-gap: 3vh;
    padding-bottom: clamp(2rem, 7vh, 4rem);
  }
  .bg{
    background-image: url("dsvr-bg.jpg");
    background-size: cover;
    background-position: 30% 30%;
    transform-origin: 30% 30%;
    animation-name: kenburnsPortrait;
  }
  @keyframes kenburnsPortrait{
    from{ transform: scale(1); }
    to  { transform: scale(1.05); }
  }
  .download img{ width: min(52vw, 275px); }
}

/* Platzhalter, solange es noch keinen Trailer gibt (in index.html gegen das iframe tauschen) */
.player-soon{
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  font-family: var(--display);
  font-weight: 800;
  font-size: clamp(.8rem, 1.6vw, 1.2rem);
  letter-spacing: .3em;
  text-indent: .3em;
  text-transform: uppercase;
  color: rgba(220,239,240,.55);
  background:
    radial-gradient(ellipse at 50% 50%, rgba(63,224,234,.12), rgba(0,0,0,0) 70%),
    repeating-linear-gradient(to bottom, rgba(63,224,234,.06) 0 1px, transparent 1px 3px), #000;
  text-shadow: 0 0 10px rgba(63,224,234,.6);
}
