/* ===========================================================
   Nightscape Games — Landing Page
   =========================================================== */

@font-face{
  font-family: 'Norse Bold';
  src: url('../assets/fonts/Norsebold.otf') format('opentype');
  font-weight: 700;
  font-style: normal;
  font-display: swap;
}

@font-face{
  font-family: 'Bebas Neue';
  src: url('../assets/fonts/BebasNeue-Regular.woff2') format('woff2');
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

@font-face{
  font-family: 'Jost';
  src: url('../assets/fonts/Jost-Light.woff2') format('woff2');
  font-weight: 300;
  font-style: normal;
  font-display: swap;
}
@font-face{
  font-family: 'Jost';
  src: url('../assets/fonts/Jost-Regular.woff2') format('woff2');
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}
@font-face{
  font-family: 'Jost';
  src: url('../assets/fonts/Jost-Medium.woff2') format('woff2');
  font-weight: 500;
  font-style: normal;
  font-display: swap;
}
@font-face{
  font-family: 'Jost';
  src: url('../assets/fonts/Jost-SemiBold.woff2') format('woff2');
  font-weight: 600;
  font-style: normal;
  font-display: swap;
}

:root{
  --bg: #08090a;
  --bg-elev: #0d0f11;
  --white: #f4f4f5;
  --gray-200: #d4d4d8;
  --gray-300: #a8a8ad;
  --gray-500: #6b6b70;
  --gray-700: #333338;
  --gray-800: #1f2023;
  --border: rgba(244,244,245,0.12);
  --border-strong: rgba(244,244,245,0.28);
  --accent: #f4f4f5;

  --thorgard: #b5484a;
  --thorgard-dim: rgba(181,72,74,.14);
  --thorgard-border: rgba(181,72,74,.4);

  --font-display: 'Bebas Neue', sans-serif;
  --font-rune: 'Norse Bold', 'Pirata One', cursive;
  --font-body: 'Jost', sans-serif;

  --container: 1080px;
  --ease: cubic-bezier(.22,.61,.36,1);
}

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

html{
  scroll-behavior: smooth;
}

body{
  margin: 0;
  background: var(--bg);
  color: var(--white);
  font-family: var(--font-body);
  font-weight: 300;
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}

img, svg{ display:block; max-width:100%; }

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

::selection{ background: var(--white); color: var(--bg); }

/* ---------- texture / progress bar ---------- */

.noise-overlay{
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 1;
  opacity: .035;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

.scroll-progress{
  position: fixed;
  top: 0; left: 0; right: 0;
  height: 2px;
  z-index: 100;
  background: transparent;
}
.scroll-progress span{
  display:block;
  height: 100%;
  width: 0%;
  background: var(--white);
  opacity: .6;
  transition: width .1s linear;
}

/* ---------- header ---------- */

.site-header{
  position: sticky;
  top: 0;
  z-index: 50;
  padding: 28px 0;
  background: linear-gradient(to bottom, rgba(8,9,10,.9), rgba(8,9,10,0));
  backdrop-filter: blur(6px);
  transition: padding .35s var(--ease), background-color .35s var(--ease);
}

.site-header.scrolled{
  padding: 16px 0;
  background: rgba(8,9,10,.85);
  border-bottom: 1px solid var(--border);
}

.nav-wrap{
  max-width: var(--container);
  margin: 0 auto;
  padding: 0 32px;
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
}

.nav-links{
  list-style: none;
  margin: 0; padding: 0;
  display: flex;
  gap: 28px;
  font-family: var(--font-display);
  letter-spacing: .12em;
  font-size: 14px;
}

.nav-link{
  position: relative;
  color: var(--gray-300);
  padding-bottom: 4px;
  transition: color .25s var(--ease);
}
.nav-link::after{
  content: '';
  position: absolute;
  left: 0; bottom: 0;
  height: 1px;
  width: 0;
  background: var(--white);
  transition: width .3s var(--ease);
}
.nav-link:hover{ color: var(--white); }
.nav-link:hover::after,
.nav-link.active::after{ width: 100%; }
.nav-link.active{ color: var(--white); }

.brand-mark{
  justify-self: center;
  color: var(--white);
  opacity: .9;
  transition: opacity .25s var(--ease), transform .35s var(--ease);
}
.brand-mark:hover{ opacity: 1; transform: translateY(-1px); }
.brand-mark-icon{ width: 30px; height: auto; object-fit: contain; }

.nav-right{
  justify-self: end;
  display: flex;
  align-items: center;
  gap: 18px;
}

.lang-switch{
  display: flex;
  align-items: center;
  gap: 8px;
  font-family: var(--font-display);
  font-size: 13px;
  letter-spacing: .08em;
}
.lang-link{
  color: var(--gray-500);
  transition: color .25s var(--ease);
}
.lang-link:hover{ color: var(--gray-300); }
.lang-link.active{
  color: var(--white);
  pointer-events: none;
}
.lang-sep{
  color: var(--gray-700);
  font-size: 11px;
}

.icon-btn{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 38px; height: 38px;
  border-radius: 50%;
  color: var(--gray-300);
  border: 1px solid transparent;
  transition: color .25s var(--ease), border-color .25s var(--ease), transform .25s var(--ease);
}
.icon-btn:hover{
  color: var(--white);
  border-color: var(--border);
  transform: translateY(-2px);
}

/* ---------- hero ---------- */

.hero{
  position: relative;
  min-height: 92vh;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 80px 24px 40px;
}

.hero-inner{
  max-width: 720px;
  display: flex;
  flex-direction: column;
  align-items: center;
}

.hero-logo{
  width: 132px;
  height: auto;
  object-fit: contain;
  animation: floatY 7s ease-in-out infinite;
  filter: drop-shadow(0 0 40px rgba(244,244,245,0.08));
}

.hero-wordmark{
  margin-top: 18px;
  display: flex;
  flex-direction: column;
  align-items: center;
  line-height: 1;
}
.wordmark-main{
  font-family: var(--font-display);
  font-size: clamp(30px, 4vw, 40px);
  letter-spacing: .05em;
}
.wordmark-sub{
  margin-top: 6px;
  font-family: var(--font-display);
  font-size: 13px;
  letter-spacing: .55em;
  color: var(--gray-300);
  padding-left: .55em; /* optical centering for tracked text */
}

.hero-headline{
  margin: 40px 0 0;
  font-family: var(--font-display);
  font-weight: 400;
  font-size: clamp(40px, 8vw, 74px);
  line-height: 1.02;
  letter-spacing: .015em;
}
.headline-dim{ color: var(--gray-300); }

.divider{
  margin: 30px 0 26px;
  display: flex;
  align-items: center;
  gap: 14px;
  width: 260px;
  color: var(--gray-500);
}
.divider-line{
  flex: 1;
  height: 1px;
  background: linear-gradient(to right, transparent, var(--border-strong));
}
.divider .divider-line:last-child{
  background: linear-gradient(to left, transparent, var(--border-strong));
}
.divider-dot{ font-size: 12px; }

.hero-tagline{
  margin: 0;
  font-size: 17px;
  font-weight: 300;
  line-height: 1.7;
  color: var(--gray-300);
}

.hero-scroll-cue{
  position: absolute;
  bottom: 36px;
  left: 50%;
  transform: translateX(-50%);
  width: 22px;
  height: 36px;
  border: 1px solid var(--border-strong);
  border-radius: 12px;
}
.hero-scroll-cue span{
  display: block;
  width: 3px;
  height: 7px;
  margin: 6px auto 0;
  border-radius: 2px;
  background: var(--gray-300);
  animation: scrollCue 2s ease-in-out infinite;
}

@keyframes scrollCue{
  0%   { transform: translateY(0);   opacity: 1; }
  60%  { opacity: .3; }
  100% { transform: translateY(12px); opacity: 0; }
}

@keyframes floatY{
  0%, 100%{ transform: translateY(0); }
  50%     { transform: translateY(-10px); }
}

/* ---------- games / featured card ---------- */

.games{
  max-width: var(--container);
  margin: 0 auto;
  padding: 20px 24px 120px;
}

.game-card{
  position: relative;
  border: 1px solid var(--border);
  border-radius: 18px;
  padding: 64px 56px;
  display: grid;
  grid-template-columns: 1.15fr 1fr;
  align-items: center;
  gap: 40px;
  overflow: hidden;
  background: linear-gradient(180deg, rgba(255,255,255,.015), transparent 40%);
  transition: border-color .4s var(--ease), transform .4s var(--ease);
}
.game-card:hover{
  border-color: var(--border-strong);
}

.game-card-glow{
  position: absolute;
  top: 50%; right: -10%;
  width: 480px; height: 480px;
  transform: translateY(-50%);
  background: radial-gradient(circle, rgba(244,244,245,0.06), transparent 65%);
  pointer-events: none;
}

.eyebrow{
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 0 0 18px;
  font-family: var(--font-display);
  font-size: 13px;
  letter-spacing: .2em;
  color: var(--gray-300);
}
.eyebrow-bar{
  width: 22px; height: 1px;
  background: var(--gray-500);
}

.game-title{
  margin: 0;
  font-family: var(--font-rune);
  font-weight: 400;
  font-size: clamp(56px, 8vw, 92px);
  line-height: .95;
  letter-spacing: .02em;
}

.game-strapline{
  margin: 14px 0 22px;
  font-family: var(--font-display);
  font-size: 15px;
  letter-spacing: .12em;
  color: var(--white);
}

.game-desc{
  max-width: 40ch;
  margin: 0 0 34px;
  font-size: 15.5px;
  line-height: 1.75;
  color: var(--gray-300);
  font-weight: 300;
}

.btn-outline{
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 12px;
  padding: 15px 26px;
  border: 1px solid var(--border-strong);
  border-radius: 2px;
  font-family: var(--font-display);
  font-size: 14px;
  letter-spacing: .1em;
  overflow: hidden;
  transition: color .35s var(--ease), border-color .35s var(--ease);
}
.btn-outline::before{
  content: '';
  position: absolute;
  inset: 0;
  background: var(--white);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform .35s var(--ease);
  z-index: -1;
}
.btn-outline:hover{
  color: var(--bg);
  border-color: var(--white);
}
.btn-outline:hover::before{ transform: scaleX(1); }
.btn-outline svg{ transition: transform .35s var(--ease); }
.btn-outline:hover svg{ transform: translateX(4px); }

.game-card-actions{
  display: flex;
  flex-wrap: wrap;
  gap: 14px;
}

/* ---------- emblem ---------- */

.game-card-emblem{
  position: relative;
  aspect-ratio: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--gray-500);
}

.rune-ring{
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  animation: spin 60s linear infinite;
}
.rune-dots circle{ animation: pulseDot 3s ease-in-out infinite; }
.rune-dots circle:nth-child(2){ animation-delay: .75s; }
.rune-dots circle:nth-child(3){ animation-delay: 1.5s; }
.rune-dots circle:nth-child(4){ animation-delay: 2.25s; }

@keyframes spin{
  to{ transform: rotate(360deg); }
}
@keyframes pulseDot{
  0%, 100%{ opacity: .4; }
  50%     { opacity: 1; }
}

.helmet{
  position: relative;
  width: 40%;
  height: auto;
  filter: drop-shadow(0 10px 30px rgba(0,0,0,.5));
  animation: floatY 6s ease-in-out infinite;
}

/* ---------- sub-page hero (contact / impressum) ---------- */

.page-hero{
  padding: 96px 24px 20px;
  text-align: center;
}
.page-hero-compact{ padding-bottom: 8px; }

.page-hero-inner{
  max-width: 620px;
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  align-items: center;
}

.eyebrow-center{ justify-content: center; }

.page-headline{
  margin: 4px 0 0;
  font-family: var(--font-display);
  font-weight: 400;
  font-size: clamp(40px, 7vw, 60px);
  letter-spacing: .02em;
}

/* ---------- contact page ---------- */

.contact-section{
  max-width: var(--container);
  margin: 0 auto;
  padding: 40px 24px 120px;
  display: flex;
  justify-content: center;
}

.contact-card{
  position: relative;
  width: 100%;
  max-width: 620px;
  border: 1px solid var(--border);
  border-radius: 18px;
  padding: 64px 56px;
  text-align: center;
  overflow: hidden;
  background: linear-gradient(180deg, rgba(255,255,255,.015), transparent 40%);
  transition: border-color .4s var(--ease);
}
.contact-card:hover{ border-color: var(--border-strong); }
.contact-card .eyebrow{ justify-content: center; }

.contact-email{
  display: inline-block;
  margin: 6px 0 22px;
  font-family: var(--font-display);
  font-size: clamp(24px, 4vw, 34px);
  letter-spacing: .03em;
  color: var(--white);
  border-bottom: 1px solid var(--border-strong);
  padding-bottom: 6px;
  transition: color .25s var(--ease), border-color .25s var(--ease);
}
.contact-email:hover{
  color: var(--gray-300);
  border-color: var(--gray-300);
}

.contact-desc{
  max-width: 42ch;
  margin: 0 auto 36px;
  font-size: 15.5px;
  line-height: 1.75;
  color: var(--gray-300);
  font-weight: 300;
}

.contact-actions{
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 16px;
  flex-wrap: wrap;
}

.btn-ghost{
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 14px 22px;
  color: var(--gray-300);
  font-family: var(--font-display);
  font-size: 14px;
  letter-spacing: .1em;
  transition: color .25s var(--ease);
}
.btn-ghost:hover{ color: var(--white); }

/* ---------- legal / impressum page ---------- */

.legal-section{
  max-width: 760px;
  margin: 0 auto;
  padding: 24px 24px 120px;
}

.legal-card{
  border: 1px solid var(--border);
  border-radius: 18px;
  padding: 56px;
}

.legal-placeholder-note{
  margin: 0 0 40px;
  padding: 14px 18px;
  border: 1px dashed var(--border-strong);
  border-radius: 4px;
  font-size: 13.5px;
  line-height: 1.6;
  color: var(--gray-300);
}

.legal-card h2{
  margin: 40px 0 14px;
  font-family: var(--font-display);
  font-weight: 400;
  font-size: 20px;
  letter-spacing: .05em;
  color: var(--white);
  padding-top: 20px;
  border-top: 1px solid var(--border);
}
.legal-card h2:first-of-type{ margin-top: 0; padding-top: 0; border-top: 0; }

.legal-card h3{
  margin: 26px 0 10px;
  font-family: var(--font-display);
  font-weight: 400;
  font-size: 15.5px;
  letter-spacing: .04em;
  color: var(--gray-200);
}
.legal-card h2 + h3{ margin-top: 0; }

.legal-card h4{
  margin: 18px 0 6px;
  font-size: 15px;
  font-weight: 500;
  color: var(--gray-200);
}

.legal-card p{
  margin: 0 0 16px;
  font-size: 15px;
  line-height: 1.8;
  color: var(--gray-300);
  font-weight: 300;
}
.legal-card p:last-child{ margin-bottom: 0; }

.legal-card ul{
  margin: 0 0 16px;
  padding-left: 20px;
}
.legal-card li{
  font-size: 15px;
  line-height: 1.8;
  color: var(--gray-300);
  font-weight: 300;
  margin-bottom: 6px;
}

.legal-card a{
  color: var(--white);
  border-bottom: 1px solid var(--border-strong);
  transition: color .25s var(--ease), border-color .25s var(--ease);
}
.legal-card a:hover{
  color: var(--gray-300);
  border-color: var(--gray-300);
}

/* ---------- press kit ---------- */

.presskit-hero-actions{
  display: flex;
  justify-content: center;
  gap: 14px;
  flex-wrap: wrap;
  margin-top: 28px;
}

.presskit-section{
  max-width: 860px;
  margin: 0 auto;
  padding: 0 24px 72px;
}

.presskit-card{
  border: 1px solid var(--border);
  border-radius: 18px;
  padding: 48px;
}

.presskit-card h2{
  margin: 0 0 18px;
  font-family: var(--font-display);
  font-weight: 400;
  font-size: 20px;
  letter-spacing: .05em;
  color: var(--white);
}

.presskit-card p{
  margin: 0 0 16px;
  font-size: 15px;
  line-height: 1.8;
  color: var(--gray-300);
  font-weight: 300;
}
.presskit-card p:last-child{ margin-bottom: 0; }
.presskit-card p.presskit-pitch{
  color: var(--white);
  font-size: 16px;
}

.presskit-card a{
  color: var(--white);
  border-bottom: 1px solid var(--border-strong);
  transition: color .25s var(--ease), border-color .25s var(--ease);
}
.presskit-card a:hover{ color: var(--gray-300); border-color: var(--gray-300); }

.presskit-feature-list{
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px 24px;
  margin: 0;
  padding: 0;
  list-style: none;
}
.presskit-feature-list li{
  position: relative;
  padding-left: 16px;
  font-size: 14.5px;
  line-height: 1.6;
  color: var(--gray-300);
  font-weight: 300;
}
.presskit-feature-list li::before{
  content: '◇';
  position: absolute;
  left: 0; top: 1px;
  font-size: 10px;
  color: var(--thorgard);
}
.presskit-feature-list strong{ color: var(--white); font-weight: 500; }

.factsheet{
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 4px 32px;
  margin: 0;
}
.factsheet dt{
  font-family: var(--font-display);
  font-size: 11.5px;
  letter-spacing: .08em;
  color: var(--gray-500);
  margin: 14px 0 3px;
}
.factsheet dd{
  margin: 0;
  font-size: 15px;
  color: var(--white);
  font-weight: 400;
}

.media-grid{
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 16px;
}
.media-tile{
  display: block;
  border: 1px solid var(--border);
  border-radius: 12px;
  overflow: hidden;
  transition: border-color .3s var(--ease);
}
.media-tile:hover{ border-color: var(--thorgard-border); }
.media-tile img{
  display: block;
  width: 100%;
  aspect-ratio: 16 / 10;
  object-fit: cover;
}
.media-tile.media-tile-contain img{
  object-fit: contain;
  padding: 22px;
  background: var(--bg-elev);
}
.media-tile.media-tile-contain.media-tile-light img{
  background: var(--white);
}
.media-tile-cap{
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 10px 14px;
  border-top: 1px solid var(--border);
  font-family: var(--font-display);
  font-size: 11.5px;
  letter-spacing: .05em;
  color: var(--gray-300);
}
.media-tile-cap svg{ flex-shrink: 0; opacity: .7; }

/* ---------- thorgard: hero ---------- */

.thorgard-hero{
  max-width: var(--container);
  margin: 0 auto;
  padding: 72px 24px 40px;
}

.thorgard-hero-grid{
  display: grid;
  grid-template-columns: 1fr 1fr;
  align-items: center;
  gap: 56px;
}

.thorgard-hero-title{
  margin: 10px 0 0;
  font-family: var(--font-rune);
  font-weight: 400;
  font-size: clamp(64px, 9vw, 110px);
  line-height: .9;
  letter-spacing: .01em;
}

.thorgard-hero-strap{
  margin: 14px 0 22px;
  font-family: var(--font-display);
  font-size: 16px;
  letter-spacing: .12em;
  color: var(--thorgard);
}

.thorgard-hero-desc{
  max-width: 42ch;
  margin: 0 0 34px;
  font-size: 15.5px;
  line-height: 1.75;
  color: var(--gray-300);
  font-weight: 300;
}

.wishlist-actions{
  display: flex;
  flex-wrap: wrap;
  gap: 14px;
  margin-bottom: 22px;
}

.btn-wishlist{
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 12px;
  padding: 15px 24px;
  border-radius: 2px;
  font-family: var(--font-display);
  font-size: 14px;
  letter-spacing: .08em;
  transition: transform .3s var(--ease), border-color .3s var(--ease), background-color .3s var(--ease), color .3s var(--ease);
}
.btn-wishlist svg{ flex-shrink: 0; }
.btn-wishlist:hover{ transform: translateY(-2px); }

.btn-wishlist-primary{
  background: var(--thorgard);
  border: 1px solid var(--thorgard);
  color: var(--white);
}
.btn-wishlist-primary:hover{ background: #c85557; border-color: #c85557; }

.btn-wishlist-secondary{
  background: transparent;
  border: 1px solid var(--border-strong);
  color: var(--gray-200);
}
.btn-wishlist-secondary:hover{ border-color: var(--white); color: var(--white); }

.thorgard-hero-meta{
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 0;
  font-family: var(--font-display);
  font-size: 13px;
  letter-spacing: .1em;
  color: var(--gray-500);
}
.thorgard-hero-meta .meta-sep{ color: var(--gray-700); }

.thorgard-hero-visual{
  position: relative;
  aspect-ratio: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--gray-500);
}
.thorgard-hero-visual .rune-ring{ color: var(--thorgard); opacity: .8; }
.thorgard-hero-visual .helmet{ width: 46%; }
.thorgard-hero-visual-glow{
  position: absolute;
  inset: 10%;
  border-radius: 50%;
  background: radial-gradient(circle, var(--thorgard-dim), transparent 70%);
  pointer-events: none;
}

/* ---------- thorgard: section heading ---------- */

.section-heading{
  text-align: center;
  max-width: 640px;
  margin: 0 auto 56px;
  font-family: var(--font-display);
  font-size: clamp(22px, 3vw, 28px);
  letter-spacing: .1em;
  color: var(--gray-200);
}
.section-heading .divider-dot{ margin: 0 12px; color: var(--thorgard); }

/* ---------- thorgard: features ---------- */

.features-section{
  max-width: var(--container);
  margin: 0 auto;
  padding: 96px 24px;
  border-top: 1px solid var(--border);
}

.features-grid{
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 28px;
}

.feature-tile{ text-align: center; }

.feature-icon{
  width: 64px;
  height: 64px;
  margin: 0 auto 20px;
  display: flex;
  align-items: center;
  justify-content: center;
  transform: rotate(45deg);
  border: 1px solid var(--border-strong);
  color: var(--thorgard);
  transition: border-color .3s var(--ease), transform .3s var(--ease);
}
.feature-tile:hover .feature-icon{
  border-color: var(--thorgard-border);
  transform: rotate(45deg) scale(1.06);
}
.feature-icon svg{ transform: rotate(-45deg); }

.feature-title{
  margin: 0 0 8px;
  font-family: var(--font-display);
  font-size: 15px;
  letter-spacing: .08em;
}

.feature-desc{
  margin: 0;
  font-size: 13.5px;
  line-height: 1.65;
  color: var(--gray-300);
  font-weight: 300;
}

/* ---------- thorgard: roadmap ---------- */

.roadmap-section{
  max-width: var(--container);
  margin: 0 auto;
  padding: 0 24px 96px;
}

.roadmap-track{
  display: flex;
  align-items: stretch;
  gap: 0;
}

.roadmap-card{
  flex: 1;
  min-width: 0;
  border: 1px solid var(--border);
  border-radius: 14px;
  padding: 30px 22px;
  background: linear-gradient(180deg, rgba(255,255,255,.015), transparent 40%);
  transition: border-color .3s var(--ease);
}
.roadmap-card:hover{ border-color: var(--border-strong); }

.roadmap-connector{
  flex: 0 0 auto;
  width: 44px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--thorgard);
  opacity: .6;
}

.roadmap-stage{
  margin: 0 0 4px;
  font-family: var(--font-display);
  font-size: 12.5px;
  letter-spacing: .1em;
  color: var(--thorgard);
}
.roadmap-date{
  margin: 0 0 20px;
  font-size: 12px;
  color: var(--gray-500);
}
.roadmap-stage.roadmap-stage-only{ margin-bottom: 20px; }

.roadmap-icon{
  width: 56px;
  height: 56px;
  margin: 0 0 22px;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--border-strong);
  border-radius: 50%;
  color: var(--white);
  transition: border-color .3s var(--ease);
}
.roadmap-card:hover .roadmap-icon{ border-color: var(--thorgard-border); }

.roadmap-list{
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 9px;
}
.roadmap-list li{
  position: relative;
  padding-left: 15px;
  font-size: 13.5px;
  line-height: 1.5;
  color: var(--gray-300);
  font-weight: 300;
}
.roadmap-list li::before{
  content: '◇';
  position: absolute;
  left: 0;
  top: 0;
  font-size: 9px;
  color: var(--thorgard);
}

/* ---------- thorgard: trailer ---------- */

.trailer-section{
  max-width: var(--container);
  margin: 0 auto;
  padding: 0 24px 96px;
}

.trailer-grid{
  display: grid;
  grid-template-columns: 1.2fr 1fr;
  align-items: center;
  gap: 48px;
}

.trailer-visual{
  position: relative;
  display: block;
  width: 100%;
  aspect-ratio: 16 / 10;
  border: 1px solid var(--border);
  border-radius: 14px;
  overflow: hidden;
  padding: 0;
  cursor: pointer;
  background: var(--bg-elev);
  transition: border-color .3s var(--ease);
}
.trailer-visual:hover{ border-color: var(--border-strong); }

.trailer-thumb{
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform .5s var(--ease), filter .4s var(--ease);
}
.trailer-visual:hover .trailer-thumb{ transform: scale(1.045); filter: brightness(.75); }

.trailer-visual::after{
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,.1), rgba(0,0,0,.35));
  pointer-events: none;
}

.trailer-visual iframe{
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
  z-index: 2;
}

.play-button{
  position: absolute;
  top: 50%;
  left: 50%;
  z-index: 1;
  width: 64px; height: 64px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  border: 1px solid var(--border-strong);
  background: rgba(8,9,10,.6);
  color: var(--white);
  transform: translate(-50%, -50%);
  transition: transform .3s var(--ease), background-color .3s var(--ease);
}
.trailer-visual:hover .play-button{
  transform: translate(-50%, -50%) scale(1.08);
  background: var(--thorgard);
  border-color: var(--thorgard);
}
.play-button svg{ margin-left: 3px; }

.trailer-copy .eyebrow{ color: var(--thorgard); }
.trailer-copy .eyebrow .eyebrow-bar{ background: var(--thorgard); }

.trailer-title{
  margin: 4px 0 16px;
  font-family: var(--font-display);
  font-weight: 400;
  font-size: clamp(26px, 3.4vw, 36px);
  letter-spacing: .02em;
}

.trailer-desc{
  max-width: 38ch;
  margin: 0 0 28px;
  font-size: 15px;
  line-height: 1.75;
  color: var(--gray-300);
  font-weight: 300;
}

/* ---------- thorgard: screenshots ---------- */

.screenshots-section{
  max-width: var(--container);
  margin: 0 auto;
  padding: 0 24px 96px;
}

.screenshots-head{
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 24px;
}
.screenshots-head .eyebrow{ margin: 0; }

.gallery-controls{ display: flex; gap: 10px; }
.gallery-arrow{
  width: 38px; height: 38px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--border-strong);
  color: var(--gray-300);
  transition: color .25s var(--ease), border-color .25s var(--ease), transform .2s var(--ease);
}
.gallery-arrow:hover{ color: var(--white); border-color: var(--white); }
.gallery-arrow:active{ transform: scale(.94); }

.screenshots-track{
  display: flex;
  gap: 18px;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  padding-bottom: 8px;
  scrollbar-width: none;
}
.screenshots-track::-webkit-scrollbar{ display: none; }

.screenshot-tile{
  flex: 0 0 auto;
  width: min(320px, 78vw);
  aspect-ratio: 16 / 10;
  scroll-snap-align: start;
  border: 1px solid var(--border);
  border-radius: 12px;
  overflow: hidden;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  flex-direction: column;
  background: var(--bg-elev);
  color: var(--gray-500);
  transition: border-color .3s var(--ease);
}
.screenshot-tile:hover{ border-color: var(--border-strong); }
.screenshot-tile img{ width: 100%; height: 100%; object-fit: cover; }
.screenshot-tile span{
  font-family: var(--font-display);
  font-size: 12px;
  letter-spacing: .1em;
}

/* ---------- thorgard: wishlist banner ---------- */

.wishlist-banner{
  position: relative;
  max-width: var(--container);
  margin: 0 auto 96px;
  padding: 64px 48px;
  border: 1px solid var(--thorgard-border);
  border-radius: 18px;
  background: linear-gradient(180deg, var(--thorgard-dim), transparent 60%);
  text-align: center;
  overflow: visible;
}

.wishlist-banner-viking{
  position: absolute;
  right: 6%;
  bottom: -34px;
  width: 130px;
  height: auto;
  pointer-events: none;
  filter: drop-shadow(0 14px 24px rgba(0,0,0,.5));
  z-index: 2;
}

.wishlist-banner-title{
  margin: 0 0 10px;
  font-family: var(--font-display);
  font-weight: 400;
  font-size: clamp(24px, 3.6vw, 34px);
  letter-spacing: .04em;
}
.wishlist-banner-title .divider-dot{ color: var(--thorgard); margin: 0 12px; }

.wishlist-banner-sub{
  margin: 0 0 32px;
  font-size: 15px;
  color: var(--gray-300);
  font-weight: 300;
}

.wishlist-banner-actions{
  display: flex;
  justify-content: center;
  gap: 14px;
  flex-wrap: wrap;
}

/* ---------- thorgard: reviews ---------- */

.reviews-section{
  max-width: var(--container);
  margin: 0 auto;
  padding: 0 24px 96px;
}

.reviews-grid{
  display: flex;
  flex-direction: column;
  gap: 18px;
  max-width: 720px;
  margin: 0 auto;
}

.reviews-grid img{
  display: block;
  width: 100%;
  height: auto;
  border-radius: 14px;
  filter: drop-shadow(0 8px 20px rgba(0,0,0,.35));
  transition: transform .3s var(--ease);
}
.reviews-grid img:hover{ transform: translateY(-4px); }

/* ---------- footer ---------- */

.site-footer{
  border-top: 1px solid var(--border);
  padding: 44px 24px 56px;
}
.footer-container{
  max-width: var(--container);
  margin: 0 auto;
}
.footer-nav{
  display: flex;
  justify-content: center;
  gap: 36px;
  list-style: none;
  margin: 0 0 32px;
  padding: 0 0 32px;
  border-bottom: 1px solid var(--border);
}
.footer-nav a{
  position: relative;
  padding-bottom: 4px;
  font-family: var(--font-display);
  font-size: 13px;
  letter-spacing: .12em;
  color: var(--gray-300);
  transition: color .25s var(--ease);
}
.footer-nav a::after{
  content: '';
  position: absolute;
  left: 0; bottom: 0;
  height: 1px;
  width: 0;
  background: var(--white);
  transition: width .3s var(--ease);
}
.footer-nav a:hover{ color: var(--white); }
.footer-nav a:hover::after{ width: 100%; }

.footer-inner{
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  flex-wrap: wrap;
}
.footer-brand{
  display: flex;
  align-items: center;
  gap: 10px;
  font-family: var(--font-display);
  letter-spacing: .08em;
  font-size: 14px;
  color: var(--gray-300);
}
.footer-mark{ width: 22px; height: auto; object-fit: contain; opacity: .75; }

.footer-mid{
  text-align: center;
  font-size: 13px;
  color: var(--gray-500);
  line-height: 1.9;
}
.footer-copyright{
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
}

.footer-links{ display: flex; gap: 10px; }

/* ---------- scroll reveal ---------- */

[data-reveal]{
  opacity: 0;
  transform: translateY(22px);
  transition: opacity .8s var(--ease), transform .8s var(--ease);
  transition-delay: calc(var(--d, 0) * 90ms);
}
[data-reveal].in-view{
  opacity: 1;
  transform: translateY(0);
}

/* ---------- responsive ---------- */

@media (max-width: 860px){
  .game-card{
    grid-template-columns: 1fr;
    padding: 48px 32px;
    text-align: left;
  }
  .game-card-emblem{
    order: -1;
    width: 60%;
    max-width: 260px;
    margin: 0 auto 12px;
  }
  .game-desc{ max-width: none; }

  .thorgard-hero-grid{ grid-template-columns: 1fr; text-align: center; }
  .thorgard-hero-desc{ margin-left: auto; margin-right: auto; }
  .thorgard-hero-visual{ order: -1; width: 62%; max-width: 320px; margin: 0 auto; }
  .wishlist-actions{ justify-content: center; }
  .thorgard-hero-meta{ justify-content: center; }

  .features-grid{ grid-template-columns: repeat(3, 1fr); row-gap: 40px; }

  .roadmap-track{ flex-direction: column; }
  .roadmap-connector{ width: auto; height: 32px; transform: rotate(90deg); }

  .trailer-grid{ grid-template-columns: 1fr; }
  .trailer-copy{ text-align: center; }
  .trailer-copy .eyebrow{ justify-content: center; }
  .trailer-desc{ margin-left: auto; margin-right: auto; }
}

@media (max-width: 640px){
  .nav-wrap{ padding: 0 20px; }
  .nav-links{ gap: 18px; font-size: 12px; }
  .nav-right{ gap: 12px; }
  .lang-switch{ font-size: 12px; }
  .icon-btn{ width: 34px; height: 34px; }
  .hero{ padding-top: 64px; min-height: 88vh; }
  .hero-logo{ width: 104px; }
  .hero-tagline{ font-size: 15.5px; }
  .games{ padding-bottom: 80px; }
  .game-card{ padding: 40px 22px; border-radius: 14px; }
  .footer-nav{ gap: 22px; }
  .footer-inner{ flex-direction: column; text-align: center; }
  .footer-links{ order: -1; }

  .contact-card{ padding: 40px 26px; border-radius: 14px; }
  .legal-card{ padding: 32px 24px; border-radius: 14px; }

  .presskit-card{ padding: 32px 24px; border-radius: 14px; }
  .presskit-feature-list{ grid-template-columns: 1fr; }
  .factsheet{ grid-template-columns: 1fr; }
  .media-grid{ grid-template-columns: repeat(2, 1fr); }
  .legal-section{ padding-top: 8px; }

  .thorgard-hero{ padding-top: 48px; }
  .thorgard-hero-title{ font-size: clamp(48px, 15vw, 74px); }
  .btn-wishlist{ width: 100%; justify-content: center; }
  .wishlist-actions{ flex-direction: column; }

  .features-section{ padding: 64px 20px; }
  .features-grid{ grid-template-columns: repeat(2, 1fr); gap: 36px 20px; }

  .roadmap-section{ padding-bottom: 64px; }
  .roadmap-card{ padding: 26px 22px; }

  .trailer-section{ padding-bottom: 64px; }

  .screenshots-section{ padding-bottom: 64px; }
  .screenshots-head{ align-items: flex-end; }

  .wishlist-banner{ padding: 44px 24px; border-radius: 14px; margin-bottom: 64px; }
  .wishlist-banner-actions{ flex-direction: column; }
  .wishlist-banner-actions .btn-wishlist{ width: 100%; }
  .wishlist-banner-viking{ width: 90px; right: 16px; bottom: -22px; }

  .reviews-section{ padding-bottom: 64px; }
}

/* ---------- reduced motion ---------- */

@media (prefers-reduced-motion: reduce){
  *{
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
    scroll-behavior: auto !important;
  }
}
