:root{
  --bg:#050505;
  --fg:#f5f5f5;
  --muted: rgba(245,245,245,.72);
  --hair: rgba(245,245,245,.12);
  --hair2: rgba(245,245,245,.07);
  --accent: rgba(245,245,245,.92);
  --ease: cubic-bezier(.2,.9,.2,1);
  --ease2: cubic-bezier(.16,1,.3,1);
  --max: 1160px;
  --gsize: 84px; /* major grid */
  --gminor: 21px; /* minor grid */
}

*{ box-sizing:border-box; }
html,body{ height:100%; }
body{
  margin:0;
  font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, "Apple Color Emoji","Segoe UI Emoji";
  background: var(--bg);
  color: var(--fg);
  overflow-x:hidden;

  /* clean modern load motion */
  opacity:0;
  transform: translateY(10px);
  transition: opacity .28s var(--ease2), transform .28s var(--ease2);
}
body.is-loaded{ opacity:1; transform: translateY(0); }

a{ color:inherit; text-decoration:none; }
p{ margin:0; color:var(--muted); line-height:1.65; }
h1,h2,h3{ margin:0; letter-spacing:-.02em; }

.container{ width:min(var(--max), calc(100% - 48px)); margin:0 auto; }

/* GRID BACKDROP */
.grid-bg{
  position:fixed; inset:0; z-index:-2; pointer-events:none;
  background:
    /* major lines */
    repeating-linear-gradient(90deg, rgba(245,245,245,.12) 0 1px, transparent 1px var(--gsize)),
    repeating-linear-gradient(0deg, rgba(245,245,245,.12) 0 1px, transparent 1px var(--gsize)),
    /* minor lines */
    repeating-linear-gradient(90deg, rgba(245,245,245,.06) 0 1px, transparent 1px var(--gminor)),
    repeating-linear-gradient(0deg, rgba(245,245,245,.06) 0 1px, transparent 1px var(--gminor));
  background-position: calc(var(--gx,0px) * 1px) calc(var(--gy,0px) * 1px);
  opacity:.55;
  filter: contrast(1.1);
}
.grid-vignette{
  position:fixed; inset:-40vh -40vw; z-index:-1; pointer-events:none;
  background: radial-gradient(closest-side, rgba(0,0,0,.0), rgba(0,0,0,.78) 62%, rgba(0,0,0,.92));
}

/* TOP PROGRESS */
.progress{
  position:fixed; left:0; top:0; height:2px; width:100%;
  z-index:1000; transform-origin:left;
  background: rgba(245,245,245,.9);
  transform: scaleX(0);
  opacity:.75;
}

/* HEADER */
header{
  position:sticky; top:0; z-index:50;
  backdrop-filter: blur(10px);
  background: linear-gradient(to bottom, rgba(5,5,5,.86), rgba(5,5,5,.55));
  border-bottom: 1px solid rgba(245,245,245,.10);
}
.nav{
  display:flex; align-items:center; justify-content:space-between;
  padding: 18px 0;
}
.brand{
  display:flex; align-items:center; gap:14px;
  min-width: 200px;
}
.brand img{ height:26px; width:auto; display:block; filter: brightness(10); }
.brand .tag{
  font-size:12px; letter-spacing:.18em; text-transform:uppercase;
  color: rgba(245,245,245,.7);
}

.navlinks{
  display:flex; align-items:center; gap:18px; flex-wrap:wrap;
  justify-content:flex-end;
}
.navlinks a{
  position:relative;
  font-size:12px;
  letter-spacing:.14em;
  text-transform:uppercase;
  color: rgba(245,245,245,.78);
  padding: 8px 0;
}
.navlinks a::after{
  content:"";
  position:absolute; left:0; bottom:3px;
  height:1px; width:100%;
  background: rgba(245,245,245,.88);
  transform: scaleX(0);
  transform-origin:left;
  transition: transform .22s var(--ease2);
}
.navlinks a:hover{ color: rgba(245,245,245,.95); }
.navlinks a:hover::after{ transform: scaleX(1); }

/* HERO */
.hero{
  padding: 72px 0 34px;
}
.heroTop{
  display:flex; align-items:flex-start; justify-content:space-between; gap:40px;
}
.hero h1{
  font-size: clamp(44px, 5vw, 74px);
  line-height: .96;
  max-width: 14ch;
}
.hero .sub{
  margin-top:14px;
  max-width: 58ch;
}
.heroAside{
  min-width:260px;
  display:flex; flex-direction:column; gap:14px;
  border-left: 1px solid rgba(245,245,245,.12);
  padding-left: 18px;
}
.kpi{
  display:flex; flex-direction:column; gap:4px;
}
.kpi b{ font-size:16px; letter-spacing:.02em; }
.kpi span{ font-size:12px; letter-spacing:.12em; text-transform:uppercase; color:rgba(245,245,245,.62); }

.heroActions{
  margin-top: 22px;
  display:flex; flex-wrap:wrap; gap:12px;
}

/* BUTTONS */
.btn{
  position:relative;
  display:inline-flex; align-items:center; justify-content:center;
  gap:10px;
  padding: 12px 16px;
  border: 1px solid rgba(245,245,245,.16);
  background: rgba(0,0,0,.18);
  color: rgba(245,245,245,.92);
  border-radius: 999px;
  font-size:12px;
  letter-spacing:.14em;
  text-transform:uppercase;
  transition: transform .18s var(--ease2), border-color .18s var(--ease2), background .18s var(--ease2);
  overflow:hidden;
}
.btn:hover{
  transform: translateY(-2px);
  border-color: rgba(245,245,245,.34);
  background: rgba(245,245,245,.06);
}
.btn:active{ transform: translateY(0); }
.btn.primary{
  background: rgba(245,245,245,.92);
  color: #050505;
  border-color: rgba(245,245,245,.92);
}
.btn.primary:hover{ background: rgba(245,245,245,1); }
.btn .dot{
  width:6px; height:6px; border-radius:99px; background: currentColor; opacity:.9;
}

/* cursor glow */
.cursorGlow{
  position:fixed; inset:auto auto 0 0; width: 420px; height:420px;
  border-radius:999px;
  pointer-events:none;
  background: radial-gradient(circle at center, rgba(245,245,245,.12), transparent 60%);
  filter: blur(2px);
  opacity: 0;
  z-index: 5;
  transform: translate(-999px,-999px);
  transition: opacity .25s var(--ease2);
}
body.has-pointer .cursorGlow{ opacity:1; }

/* SECTIONS */
.section{
  padding: 34px 0;
  border-top: 1px solid rgba(245,245,245,.10);
}
.sectionHead{
  display:flex; align-items:baseline; justify-content:space-between; gap:16px;
  margin-bottom: 16px;
}
.sectionHead h2{
  font-size: 14px;
  letter-spacing:.18em;
  text-transform:uppercase;
  color: rgba(245,245,245,.88);
}
.sectionHead p{
  font-size: 13px;
  max-width: 64ch;
}
.grid2{
  display:grid;
  grid-template-columns: 1.15fr .85fr;
  gap: 26px;
}

.ctaRow{
  margin-top: 18px;
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap: 18px;
  flex-wrap:wrap;
}
.ctaButtons{
  display:flex;
  gap: 10px;
  flex-wrap:wrap;
  justify-content:flex-end;
}

.steps{
  display:grid;
  grid-template-columns: repeat(2, minmax(0,1fr));
  gap: 16px 26px;
}
.step{
  display:flex;
  gap: 14px;
  padding: 14px 0;
  border-top: 1px solid rgba(245,245,245,.10);
}
.step .num{
  font-size: 12px;
  letter-spacing:.18em;
  text-transform:uppercase;
  color: rgba(245,245,245,.62);
  min-width: 44px;
}
.step .copy b{ display:block; font-weight:650; margin-bottom: 4px; }
.step .copy p{ font-size: 13px; }

.stats{
  display:grid;
  grid-template-columns: repeat(3, minmax(0,1fr));
  gap: 18px;
}
.stat{
  padding: 14px 0;
  border-top: 1px solid rgba(245,245,245,.10);
}
.stat .big{
  font-size: 28px;
  letter-spacing:-.02em;
  line-height: 1.05;
  margin-bottom: 6px;
}
.stat p{ font-size: 13px; margin-top: 8px; }

.ctaBand{
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap: 22px;
  flex-wrap:wrap;
  padding: 20px 0 4px;
}
.ctaBand h3{
  font-size: 28px;
  line-height: 1.08;
  max-width: 28ch;
  margin-top: 6px;
}
.ctaBand p{ max-width: 64ch; margin-top: 10px; }
.list{
  display:grid; gap: 10px;
}
.listItem{
  padding: 12px 0;
  border-bottom: 1px solid rgba(245,245,245,.10);
  display:flex; justify-content:space-between; gap:18px;
}
.listItem b{ font-weight:600; }
.listItem span{ color: rgba(245,245,245,.62); font-size:12px; letter-spacing:.10em; text-transform:uppercase; }
.mini{
  font-size:12px;
  letter-spacing:.12em;
  text-transform:uppercase;
  color: rgba(245,245,245,.62);
}

/* REVEALS */
[data-reveal]{
  opacity:0;
  transform: translateY(14px);
  transition: opacity .42s var(--ease2), transform .42s var(--ease2);
  will-change: opacity, transform;
}
[data-reveal].is-in{
  opacity:1;
  transform: translateY(0);
}

/* RAILS */
.railWrap{
  position:relative;
  margin-top: 14px;
}
.rail{
  display:flex;
  gap: 16px;
  overflow:auto;
  scroll-behavior:smooth;
  padding: 6px 2px 14px;
  scrollbar-width:none;
}
.rail::-webkit-scrollbar{ display:none; }
.tile{
  flex: 0 0 auto;
  width: 320px;
  border: 1px solid rgba(245,245,245,.12);
  border-radius: 18px;
  background: rgba(0,0,0,.18);
  overflow:hidden;
  transition: transform .22s var(--ease2), border-color .22s var(--ease2), background .22s var(--ease2);
}
.tile:hover{
  transform: translateY(-2px);
  border-color: rgba(245,245,245,.30);
  background: rgba(245,245,245,.05);
}
.tile .img{
  aspect-ratio: 1 / 1;
  background: rgba(245,245,245,.06);
  display:block;
}
.tile .img img{
  width:100%; height:100%; object-fit:cover; display:block;
}
.tile .meta{
  padding: 14px 14px 16px;
  display:grid; gap:8px;
}
.tile .meta b{ font-size:16px; }
.tile .meta small{ color: rgba(245,245,245,.66); line-height:1.5; }

.railArrows{
  position:absolute;
  inset: 0 -2px auto -2px;
  display:flex; justify-content:space-between; align-items:center;
  pointer-events:none;
  height: 0;
}
.arrow{
  pointer-events:auto;
  width: 44px; height:44px;
  border-radius: 999px;
  border: 1px solid rgba(245,245,245,.16);
  background: rgba(0,0,0,.28);
  display:grid; place-items:center;
  cursor:pointer;
  transition: transform .18s var(--ease2), background .18s var(--ease2), border-color .18s var(--ease2);
}
.arrow:hover{
  transform: translateY(-1px);
  background: rgba(245,245,245,.06);
  border-color: rgba(245,245,245,.34);
}
.arrow svg{ width:18px; height:18px; opacity:.9; }

/* WORK SHOWREEL */
.marquee{
  position:relative;
  overflow:hidden;
  margin-top: 14px;
  border-top: 1px solid rgba(245,245,245,.10);
  border-bottom: 1px solid rgba(245,245,245,.10);
}
.track{
  display:flex;
  gap: 18px;
  padding: 18px 0;
  width: max-content;
  animation: marquee-ltr 28s linear infinite;
}
.marquee:hover .track{ animation-play-state: paused; }
.workShot{
  width: 300px;
  aspect-ratio: 16/9;
  border-radius: 16px;
  overflow:hidden;
  border: 1px solid rgba(245,245,245,.12);
  background: rgba(0,0,0,.18);
  flex: 0 0 auto;
  transition: transform .22s var(--ease2), border-color .22s var(--ease2);
}
.workShot:hover{
  transform: translateY(-2px) scale(1.015);
  border-color: rgba(245,245,245,.34);
}
.workShot img{ width:100%; height:100%; object-fit:cover; display:block; filter:none; }

@keyframes marquee-ltr{
  from{ transform: translateX(-35%); }
  to{ transform: translateX(0%); }
}

/* FORMS */
.form{
  display:grid; gap: 14px;
  max-width: 640px;
}
.input{
  border:none;
  border-bottom: 1px solid rgba(245,245,245,.18);
  background: transparent;
  padding: 12px 0;
  color: rgba(245,245,245,.92);
  font-size:14px;
  outline:none;
}
.input::placeholder{ color: rgba(245,245,245,.42); }
textarea.input{ min-height: 120px; resize: vertical; }

/* FOOTER */
footer{
  padding: 26px 0 36px;
  border-top: 1px solid rgba(245,245,245,.10);
}
.foot{
  display:flex; align-items:flex-start; justify-content:space-between; gap:18px; flex-wrap:wrap;
}
.foot small{ color: rgba(245,245,245,.55); }
.social{
  display:flex; gap: 14px; flex-wrap:wrap;
}
.social a{
  font-size:12px;
  letter-spacing:.14em;
  text-transform:uppercase;
  color: rgba(245,245,245,.70);
}
.social a:hover{ color: rgba(245,245,245,.95); }

/* LOADING / GATE */
.gate{
  min-height:100vh;
  display:grid;
  place-items:center;
  padding: 44px 0;
}
.gateInner{
  width: min(560px, calc(100% - 48px));
  text-align:center;
}
.gateLogo{
  width: 180px;
  height:auto;
  display:block;
  margin: 0 auto 18px;
  filter: brightness(10) contrast(1.05);
  transform: translateY(8px);
  opacity:0;
  animation: popIn .55s var(--ease2) .05s forwards;
}
@keyframes popIn{
  to{ transform: translateY(0); opacity:1; }
}
.loadingWord{
  font-size: 12px;
  letter-spacing:.22em;
  text-transform:uppercase;
  color: rgba(245,245,245,.72);
  margin-bottom: 26px;
}
.gateForm{
  display:flex; gap:10px; justify-content:center; align-items:center; flex-wrap:wrap;
  margin-top: 10px;
}
.gatePass{
  width: 220px;
  border: 1px solid rgba(245,245,245,.16);
  background: rgba(0,0,0,.24);
  border-radius: 999px;
  padding: 12px 14px;
  color: rgba(245,245,245,.92);
  outline:none;
  text-align:center;
}
.gatePass:focus{ border-color: rgba(245,245,245,.34); }
.gateHint{
  margin-top: 16px;
  font-size:12px;
  color: rgba(245,245,245,.56);
}

/* RESPONSIVE */
@media (max-width: 860px){
  .heroTop{ flex-direction:column; }
  .heroAside{ border-left:none; padding-left:0; border-top:1px solid rgba(245,245,245,.10); padding-top:14px; }
  .grid2{ grid-template-columns: 1fr; }
  .steps{ grid-template-columns: 1fr; }
  .stats{ grid-template-columns: 1fr; }
  .workShot{ width: 240px; }
  .tile{ width: 280px; }
}