/* ============================================================
   MAD GODS STUDIO — madgods.studio
   Design rule: the world is grey. One colour — the godlight —
   appears only where power leaks through. Everything interactive
   bleeds violet on approach.
   ============================================================ */

:root{
  --void:      #0b0e12;   /* page */
  --slate:     #141a21;   /* panels */
  --ash:       #242d38;   /* borders, rules */
  --stone:     #99a3ae;   /* body text */
  --bone:      #e2e6eb;   /* headings */
  --moss:      #55614e;   /* quiet secondary detail */
  --godlight:  #b44dff;   /* the one colour */
  --godlight-soft: rgba(180, 77, 255, .35);
  --godlight-dim:  rgba(180, 77, 255, .12);

  --font-display: "Cinzel", serif;
  --font-body: "Crimson Pro", Georgia, serif;
  --font-mono: "IBM Plex Mono", ui-monospace, monospace;

  --wrap: 62rem;
}

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

html{ scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce){
  html{ scroll-behavior: auto; }
}

body{
  background: var(--void);
  color: var(--stone);
  font-family: var(--font-body);
  font-size: 1.2rem;
  line-height: 1.65;
  -webkit-font-smoothing: antialiased;
}

.wrap{ max-width: var(--wrap); margin-inline: auto; padding-inline: 1.5rem; }

/* ---------- accessibility ---------- */
.skip{
  position: absolute; left: -999px; top: 0;
  background: var(--godlight); color: var(--void);
  padding: .6rem 1rem; z-index: 99; font-family: var(--font-mono);
}
.skip:focus{ left: 0; }

a{ color: var(--bone); text-decoration-color: var(--ash); text-underline-offset: 3px; transition: color .25s, text-decoration-color .25s; }
a:hover, a:focus-visible{ color: var(--godlight); text-decoration-color: var(--godlight); }
:focus-visible{ outline: 2px solid var(--godlight); outline-offset: 3px; }

/* ---------- type ---------- */
.display{
  font-family: var(--font-display);
  font-weight: 700;
  font-size: clamp(2.6rem, 7vw, 4.6rem);
  line-height: 1.05;
  letter-spacing: .04em;
  color: var(--bone);
  text-transform: uppercase;
}
.display-sm{
  font-family: var(--font-display);
  font-weight: 500;
  font-size: clamp(1.6rem, 4vw, 2.4rem);
  line-height: 1.2;
  letter-spacing: .05em;
  color: var(--bone);
  text-transform: uppercase;
}
.eyebrow{
  font-family: var(--font-mono);
  font-size: .78rem;
  letter-spacing: .28em;
  text-transform: uppercase;
  color: var(--moss);
  margin-bottom: 1.2rem;
}
.mono{ font-family: var(--font-mono); font-size: .85rem; letter-spacing: .04em; }
.dim{ color: var(--moss); }
.lede{
  font-size: 1.45rem;
  line-height: 1.55;
  color: var(--bone);
  font-weight: 400;
}

/* ---------- the rune rule (section divider) ----------
   a thin ash line with a godlight node that ignites on reveal */
.rune-rule{
  height: 1px; background: var(--ash);
  margin: 1.8rem 0 2.4rem;
  position: relative;
}
.rune-rule span{
  position: absolute; left: 0; top: -3px;
  width: 7px; height: 7px;
  background: var(--ash);
  transform: rotate(45deg);
  transition: background 1.2s ease, box-shadow 1.2s ease;
}
.lit .rune-rule span, .rune-rule.lit span{
  background: var(--godlight);
  box-shadow: 0 0 14px var(--godlight-soft);
}

/* ---------- buttons ---------- */
.btn{
  display: inline-block;
  font-family: var(--font-mono);
  font-size: .9rem;
  letter-spacing: .12em;
  text-transform: uppercase;
  text-decoration: none;
  color: var(--bone);
  border: 1px solid var(--ash);
  padding: .9rem 1.8rem;
  transition: border-color .3s, color .3s, box-shadow .3s, background .3s;
}
.btn:hover, .btn:focus-visible{
  border-color: var(--godlight);
  color: var(--godlight);
  box-shadow: 0 0 22px var(--godlight-dim), inset 0 0 22px var(--godlight-dim);
}
.btn-god{
  border-color: var(--godlight-soft);
  color: var(--bone);
  background: var(--godlight-dim);
}
.btn-god:hover, .btn-god:focus-visible{
  background: var(--godlight);
  color: var(--void);
  box-shadow: 0 0 34px var(--godlight-soft);
}

/* ============================================================
   HERO
   ============================================================ */
.hero{
  position: relative;
  min-height: 100svh;
  display: grid;
  place-items: center;
  text-align: center;
  background:
    linear-gradient(rgba(11,14,18,.55), rgba(11,14,18,.9)),
    url("../assets/bg.jpg") center / cover no-repeat;
  overflow: hidden;
}
.hero-inner{ padding: 4rem 1.5rem 6rem; max-width: 56rem; }
.hero-logo{
  width: min(620px, 88vw);
  height: auto;
  display: block;
  margin-inline: auto;
  filter: drop-shadow(0 18px 50px rgba(0,0,0,.7));
}
/* the ignition: the world starts grey; the godlight arrives */
.ignite{
  filter: grayscale(1) drop-shadow(0 18px 50px rgba(0,0,0,.7));
  animation: ignite 3s ease .4s forwards;
}
@keyframes ignite{
  to{ filter: grayscale(0) drop-shadow(0 18px 50px rgba(0,0,0,.7)); }
}
@media (prefers-reduced-motion: reduce){
  .ignite{ filter: none; animation: none; }
}
.hero-line{
  margin-top: 1.6rem;
  font-size: clamp(1.2rem, 2.6vw, 1.5rem);
  font-style: italic;
  color: var(--stone);
}
.hero-cta{
  margin-top: 2.2rem;
  display: flex; gap: 1rem; justify-content: center; flex-wrap: wrap;
}
.hero-fade{
  position: absolute; inset: auto 0 0 0; height: 30vh;
  background: linear-gradient(transparent, var(--void));
  pointer-events: none;
}

/* ============================================================
   SECTIONS
   ============================================================ */
.section{ padding: 6rem 0; }
.section-dark{ background: var(--slate); border-block: 1px solid var(--ash); }

.pitch{ max-width: 44rem; }
.pitch p + p{ margin-top: 1.2rem; }

/* ---------- tablets (features) ---------- */
.tablets{
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr));
  gap: 1.5rem;
  margin-top: 1rem;
}
.tablet{
  background: var(--void);
  border: 1px solid var(--ash);
  border-top: 2px solid var(--moss);
  padding: 2rem 1.6rem;
  transition: border-top-color .4s, box-shadow .4s, transform .4s;
}
.tablet:hover{
  border-top-color: var(--godlight);
  box-shadow: 0 12px 34px rgba(0,0,0,.45), 0 0 24px var(--godlight-dim);
  transform: translateY(-3px);
}
@media (prefers-reduced-motion: reduce){
  .tablet:hover{ transform: none; }
}
.tablet h2{
  font-family: var(--font-display);
  font-weight: 500;
  font-size: 1.15rem;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--bone);
  margin-bottom: .9rem;
}
.tablet p{ font-size: 1.08rem; }

/* ---------- wishlist band ---------- */
.band{ text-align: center; }
.band-inner{ max-width: 44rem; }
.band p{ margin-top: 1.2rem; }

/* ============================================================
   FOOTER
   ============================================================ */
.footer{
  border-top: 1px solid var(--ash);
  padding: 3rem 0;
}
.footer-inner{ display: grid; gap: 1rem; text-align: center; }
.footer-links{ display: flex; gap: 1.6rem; justify-content: center; flex-wrap: wrap; }
.footer-links a{ font-family: var(--font-mono); font-size: .85rem; text-decoration: none; }

/* ============================================================
   REVEAL ON SCROLL (js adds .lit)
   ============================================================ */
.reveal{
  opacity: 0;
  transform: translateY(14px);
  transition: opacity .9s ease, transform .9s ease;
}
.reveal.lit{ opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce){
  .reveal{ opacity: 1; transform: none; transition: none; }
}
/* no-js fallback: everything visible */
.no-observer .reveal{ opacity: 1; transform: none; }

/* ============================================================
   PRESS PAGE
   ============================================================ */
.press-head{
  padding: 5rem 0 2rem;
  background: var(--slate);
  border-bottom: 1px solid var(--ash);
}
.press-head .lede{ max-width: 44rem; margin-top: .5rem; padding-bottom: 3rem; }
.crumb{ text-decoration: none; color: var(--moss); }

.press-grid{ display: grid; gap: 4.5rem; padding-block: 4.5rem; }
.press-h{
  font-family: var(--font-display);
  font-weight: 500;
  font-size: 1.3rem;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--bone);
  margin-bottom: 1.4rem;
  padding-bottom: .6rem;
  border-bottom: 1px solid var(--ash);
  position: relative;
}
.press-h::after{
  content:"";
  position: absolute; left: 0; bottom: -4px;
  width: 7px; height: 7px;
  background: var(--godlight);
  transform: rotate(45deg) translateY(0);
  box-shadow: 0 0 10px var(--godlight-soft);
}
.press-sub{
  color: var(--moss);
  text-transform: uppercase;
  letter-spacing: .2em;
  margin: 1.6rem 0 .5rem;
  font-weight: 500;
}
.press p{ max-width: 44rem; }
.press p + p{ margin-top: 1rem; }

.facts{ display: grid; gap: .55rem; max-width: 36rem; }
.facts > div{
  display: grid;
  grid-template-columns: 11rem 1fr;
  gap: 1rem;
  padding: .45rem 0;
  border-bottom: 1px dotted var(--ash);
}
.facts dt{ color: var(--moss); }
.facts dd{ color: var(--bone); }
@media (max-width: 30rem){
  .facts > div{ grid-template-columns: 1fr; gap: .1rem; }
}

.feature-list{
  list-style: none;
  max-width: 44rem;
  display: grid; gap: .9rem;
}
.feature-list li{
  padding-left: 1.4rem;
  position: relative;
}
.feature-list li::before{
  content:"";
  position: absolute; left: 0; top: .55em;
  width: 6px; height: 6px;
  background: var(--moss);
  transform: rotate(45deg);
}
.feature-list li:hover::before{ background: var(--godlight); box-shadow: 0 0 8px var(--godlight-soft); }

.asset{ max-width: 44rem; margin-top: 1.5rem; }
.asset img{
  width: 100%; height: auto; display: block;
  border: 1px solid var(--ash);
}
.asset figcaption{ margin-top: .6rem; }

/* ============================================================
   TEAM PAGE
   ============================================================ */
.team-grid{
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr));
  gap: 1.5rem;
}
.member{
  background: var(--slate);
  border: 1px solid var(--ash);
  padding: 2rem 1.6rem;
  transition: box-shadow .4s, border-color .4s;
}
.member:hover{
  border-color: var(--godlight-soft);
  box-shadow: 0 12px 34px rgba(0,0,0,.45), 0 0 24px var(--godlight-dim);
}
.member-mark{
  width: 3rem; height: 3rem;
  border: 1px solid var(--ash);
  display: grid; place-items: center;
  margin-bottom: 1.2rem;
}
.member-mark span{
  width: 9px; height: 9px;
  background: var(--moss);
  transform: rotate(45deg);
  transition: background .4s, box-shadow .4s;
}
.member:hover .member-mark span{
  background: var(--godlight);
  box-shadow: 0 0 12px var(--godlight-soft);
}
.member-photo{
  width: 100%; aspect-ratio: 1;
  object-fit: cover;
  display: block;
  margin-bottom: 1.2rem;
  border: 1px solid var(--ash);
  filter: grayscale(1);
  transition: filter .6s;
}
.member:hover .member-photo{ filter: grayscale(0); }
@media (prefers-reduced-motion: reduce){
  .member-photo{ filter: none; }
}
.member-name{
  font-family: var(--font-display);
  font-weight: 500;
  font-size: 1.1rem;
  letter-spacing: .05em;
  text-transform: uppercase;
  color: var(--bone);
}
.member-role{
  color: var(--moss);
  margin: .35rem 0 .9rem;
}
.member-bio{ font-size: 1.05rem; }
