:root {
  --void:#080808;
  --void2:#111111;
  --void3:#181818;
  --void4:#202020;
  --amber:#E03540;
  --amber2:#C2282D;
  --amber3:#9E1A1F;
  --cyan:#4B6FCC;
  --cyan2:#3659A8;
  --green:#5BBD2E;
  --green2:#4A9E25;
  --chalk:#ffffff;
  --chalk2:#e0e0e0;
  --slate:#a8a8a8;
  --line:rgba(255,255,255,0.08);
  --line2:rgba(255,255,255,0.17);
  --h:72px;
  --ease:cubic-bezier(0.22,1,0.36,1);
  --easeIn:cubic-bezier(0.65,0,0.35,1);
  --fD:'Barlow',sans-serif;
  --fB:'DM Sans',sans-serif;
  --fM:'DM Mono',monospace;
  --rad:13px;
}
*,*::before,*::after {
  box-sizing:border-box;
  margin:0;
  padding:0;
}
html {
  scroll-behavior:smooth;
  -webkit-text-size-adjust:100%;
}
body {
  background:var(--void);
  color:var(--chalk);
  font-family:var(--fB);
  font-weight:400;
  line-height:1.7;
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
}
img {
  display:block;
  max-width:100%;
}
a {
  color:inherit;
  text-decoration:none;
}
button {
  cursor:pointer;
  font-family:inherit;
}
ul {
  list-style:none;
}
::selection {
  background:var(--amber);
  color:var(--void);
}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible {
  outline:2px solid var(--amber);
  outline-offset:3px;
  border-radius:inherit;
}
body::after {
  content:'';
  position:fixed;
  inset:0;
  pointer-events:none;
  z-index:9990;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='300'%3E%3Cfilter id='g'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.75' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='300' height='300' filter='url(%23g)' opacity='0.03'/%3E%3C/svg%3E");
  opacity:.5;
}
#spot {
  position:fixed;
  left:0;
  top:0;
  width:520px;
  height:520px;
  margin:-260px 0 0 -260px;
  pointer-events:none;
  z-index:1;
  background:radial-gradient(circle,rgba(224,53,64,0.055) 0%,rgba(75,111,204,0.025) 38%,transparent 65%);
  opacity:0;
  transition:opacity .6s var(--ease);
  will-change:transform;
}
body.spot-on #spot {
  opacity:1;
}
#progress {
  position:fixed;
  top:0;
  left:0;
  height:2px;
  width:100%;
  z-index:2000;
  transform-origin:0 50%;
  transform:scaleX(0);
  background:linear-gradient(90deg,var(--amber),var(--cyan),#5BBD2E);
  box-shadow:0 0 12px rgba(224,53,64,.5);
}
nav {
  position:fixed;
  top:0;
  left:0;
  right:0;
  height:var(--h);
  z-index:1000;
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:0 clamp(1.25rem,4vw,3.5rem);
  transition:background .45s var(--ease),border-color .45s var(--ease),transform .45s var(--ease),backdrop-filter .45s var(--ease);
  border-bottom:1px solid transparent;
  transform:translateY(0);
}
nav.solid {
  background:rgba(5,6,8,0.82);
  backdrop-filter:blur(20px) saturate(1.4);
  -webkit-backdrop-filter:blur(20px) saturate(1.4);
  border-color:var(--line);
}
nav.hide {
  transform:translateY(-100%);
}
.nav-logo {
  display:flex;
  align-items:center;
  position:relative;
  z-index:2;
}
.nav-logo img {
  height:46px;
  width:auto;
  transition:transform .4s var(--ease);
}
.nav-logo:hover img {
  transform:scale(1.04);
}
.nav-links {
  display:flex;
  align-items:center;
  gap:clamp(.9rem,2vw,1.9rem);
}
.nav-links>li>a:not(.nav-pill):not(.btn) {
  font-family:var(--fM);
  font-size:.78rem;
  letter-spacing:.08em;
  text-transform:uppercase;
  color:var(--chalk2);
  position:relative;
  padding:4px 0;
  white-space:nowrap;
  transition:color .3s;
}
.nav-links>li>a:not(.nav-pill):not(.btn)::after {
  content:'';
  position:absolute;
  left:0;
  bottom:0;
  height:1px;
  width:100%;
  background:linear-gradient(90deg,var(--amber),var(--cyan));
  transform:scaleX(0);
  transform-origin:100% 50%;
  transition:transform .4s var(--ease);
}
.nav-links>li>a:not(.nav-pill):not(.btn):hover {
  color:var(--chalk);
}
.nav-links>li>a:not(.nav-pill):not(.btn):hover::after {
  transform:scaleX(1);
  transform-origin:0 50%;
}
.nav-pill {
  display:inline-flex;
  align-items:center;
  gap:.45rem;
  border:1px solid var(--line2);
  color:var(--chalk);
  padding:.45rem 1.05rem;
  font-family:var(--fM);
  font-size:.74rem;
  letter-spacing:.08em;
  text-transform:uppercase;
  border-radius:99px;
  transition:border-color .3s,background .3s,color .3s,transform .3s;
}
.nav-pill:hover {
  border-color:var(--cyan);
  color:var(--cyan);
  transform:translateY(-1px);
}
.nav-pill svg {
  width:11px;
  height:11px;
  flex-shrink:0;
}
.burger {
  display:none;
  flex-direction:column;
  gap:5px;
  background:none;
  border:none;
  padding:8px;
  z-index:1002;
}
.burger span {
  display:block;
  width:24px;
  height:1.5px;
  background:var(--chalk2);
  transition:transform .4s var(--ease),opacity .3s;
}
.burger.open span:nth-child(1) {
  transform:translateY(6.5px) rotate(45deg);
}
.burger.open span:nth-child(2) {
  opacity:0;
}
.burger.open span:nth-child(3) {
  transform:translateY(-6.5px) rotate(-45deg);
}
.mob-nav {
  position:fixed;
  inset:0;
  z-index:1001;
  background:rgba(5,6,8,0.96);
  backdrop-filter:blur(28px);
  -webkit-backdrop-filter:blur(28px);
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:1.6rem;
  opacity:0;
  visibility:hidden;
  transition:opacity .45s var(--ease),visibility .45s;
}
.mob-nav.show {
  opacity:1;
  visibility:visible;
}
.mob-nav a.mnl {
  font-family:var(--fD);
  font-weight:700;
  font-size:clamp(1.9rem,7vw,2.8rem);
  letter-spacing:-0.02em;
  color:var(--chalk);
  opacity:0;
  transform:translateY(24px);
  transition:opacity .5s var(--ease),transform .5s var(--ease),color .3s;
}
.mob-nav.show a.mnl {
  opacity:1;
  transform:translateY(0);
}
.mob-nav.show a.mnl:nth-child(1) {
  transition-delay:.05s;
}
.mob-nav.show a.mnl:nth-child(2) {
  transition-delay:.1s;
}
.mob-nav.show a.mnl:nth-child(3) {
  transition-delay:.15s;
}
.mob-nav.show a.mnl:nth-child(4) {
  transition-delay:.2s;
}
.mob-nav.show a.mnl:nth-child(5) {
  transition-delay:.25s;
}
.mob-nav a.mnl:hover {
  color:var(--amber);
}
.mob-nav .mob-cta {
  display:flex;
  gap:1rem;
  margin-top:1.2rem;
  flex-wrap:wrap;
  justify-content:center;
}
.wrap {
  max-width:1320px;
  margin:0 auto;
  padding:clamp(4.5rem,11vw,8.5rem) clamp(1.25rem,4vw,3.5rem);
  position:relative;
}
.kicker {
  display:inline-flex;
  align-items:center;
  gap:.65rem;
  font-family:var(--fM);
  font-size:.76rem;
  letter-spacing:.12em;
  text-transform:uppercase;
  margin-bottom:1.2rem;
}
.kicker i {
  display:block;
  width:26px;
  height:1px;
  transform:scaleX(0);
  transform-origin:0 50%;
  transition:transform .8s var(--ease) .2s;
}
.in .kicker i,.kicker.now i {
  transform:scaleX(1);
}
.kicker.a {
  color:var(--amber);
}
.kicker.a i {
  background:var(--amber);
}
.kicker.c {
  color:var(--cyan);
}
.kicker.c i {
  background:var(--cyan);
}
h2.hed {
  font-family:var(--fD);
  font-weight:800;
  font-size:clamp(2.5rem,6vw,5.2rem);
  letter-spacing:-0.04em;
  line-height:.94;
  color:var(--chalk);
}
h2.hed .a {
  color:var(--amber);
}
h2.hed .c {
  color:var(--cyan);
}
h2.hed em {
  font-style:normal;
  color:var(--amber);
}
h2.hed em.cy {
  color:var(--cyan);
}
.lead {
  color:var(--chalk2);
  font-weight:400;
  font-size:clamp(1rem,1.5vw,1.15rem);
  max-width:52ch;
}
.ghost {
  position:absolute;
  top:clamp(1rem,4vw,2.5rem);
  right:clamp(.5rem,3vw,2rem);
  font-family:var(--fD);
  font-weight:700;
  font-size:clamp(6rem,16vw,13rem);
  line-height:1;
  color:transparent;
  -webkit-text-stroke:1px rgba(244,246,250,0.05);
  pointer-events:none;
  user-select:none;
  z-index:0;
}
.btn {
  position:relative;
  display:inline-flex;
  align-items:center;
  gap:.6rem;
  font-family:var(--fM);
  font-size:.8rem;
  font-weight:700;
  letter-spacing:.08em;
  text-transform:uppercase;
  padding:.95rem 1.7rem;
  border-radius:99px;
  border:none;
  overflow:hidden;
  isolation:isolate;
  transition:transform .35s var(--ease),box-shadow .35s var(--ease),border-color .3s,color .3s,background .3s;
}
.btn svg {
  width:13px;
  height:13px;
  flex-shrink:0;
  transition:transform .35s var(--ease);
}
.btn:hover svg {
  transform:translateX(4px);
}
.btn::before {
  content:'';
  position:absolute;
  inset:0;
  z-index:-1;
  background:linear-gradient(105deg,transparent 38%,rgba(255,255,255,.35) 50%,transparent 62%);
  transform:translateX(-110%);
  transition:transform .7s var(--ease);
}
.btn:hover::before {
  transform:translateX(110%);
}
.btn-amber {
  background:linear-gradient(135deg,var(--amber) 0%,var(--amber2) 100%);
  color:var(--void);
  box-shadow:0 4px 24px rgba(194,40,45,.22);
}
.btn-amber:hover {
  transform:translateY(-2px);
  box-shadow:0 10px 36px rgba(194,40,45,.38);
}
.btn-ghost {
  background:transparent;
  color:var(--chalk);
  border:1px solid var(--line2);
  box-shadow:none;
}
.btn-ghost:hover {
  transform:translateY(-2px);
  border-color:var(--cyan);
  color:var(--cyan);
}
.rv {
  opacity:0;
  transform:translateY(36px);
  transition:opacity .9s var(--ease),transform .9s var(--ease);
  will-change:opacity,transform;
}
.rv.in {
  opacity:1;
  transform:none;
}
.d1 {
  transition-delay:.12s;
}
.d2 {
  transition-delay:.24s;
}
.d3 {
  transition-delay:.36s;
}
.stagger>* {
  opacity:0;
  transform:translateY(28px);
  transition:opacity .8s var(--ease),transform .8s var(--ease);
}
.stagger.in>* {
  opacity:1;
  transform:none;
}
.stagger.in>*:nth-child(1) {
  transition-delay:.05s;
}
.stagger.in>*:nth-child(2) {
  transition-delay:.13s;
}
.stagger.in>*:nth-child(3) {
  transition-delay:.21s;
}
.stagger.in>*:nth-child(4) {
  transition-delay:.29s;
}
.stagger.in>*:nth-child(5) {
  transition-delay:.37s;
}
.stagger.in>*:nth-child(6) {
  transition-delay:.45s;
}
.stagger.in>*:nth-child(7) {
  transition-delay:.53s;
}
.stagger.in>*:nth-child(8) {
  transition-delay:.61s;
}
.stagger.in>*:nth-child(9) {
  transition-delay:.69s;
}
#hero {
  position:relative;
  min-height:100svh;
  display:flex;
  flex-direction:column;
  justify-content:center;
  overflow:hidden;
}
.hero-bg {
  position:absolute;
  inset:-6%;
  z-index:0;
}
.hero-bg img,.hero-bg iframe {
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
}
.hero-bg iframe {
  top:50%;
  left:50%;
  width:177.78vh;
  height:56.25vw;
  min-width:100%;
  min-height:100%;
  transform:translate(-50%,-50%);
  border:0;
  pointer-events:none;
}
.hero-bg img {
  animation:kenburns 26s var(--ease) infinite alternate;
  filter:saturate(1.08) brightness(.92);
  z-index:0;
}
.hero-bg iframe {
  z-index:1;
  filter:brightness(.82);
  opacity:0;
  animation:vidFadeIn 1.5s ease 0.8s forwards;
}
@keyframes vidFadeIn {
  to {
    opacity:1;
  }
}
@keyframes kenburns {
  from {
    transform:scale(1) translate(0,0);
  }
  to {
    transform:scale(1.09) translate(-1.2%,1%);
  }
}
.hero-scrim {
  position:absolute;
  inset:0;
  z-index:1;
  background:linear-gradient(180deg,rgba(5,6,8,.62) 0%,rgba(5,6,8,.28) 40%,rgba(5,6,8,.88) 88%,var(--void) 100%),radial-gradient(120% 90% at 18% 42%,rgba(5,6,8,.55) 0%,transparent 60%);
}
.beams {
  position:absolute;
  inset:0;
  z-index:2;
  pointer-events:none;
  mix-blend-mode:screen;
  opacity:.38;
}
.beam {
  position:absolute;
  top:-30%;
  width:140px;
  height:160%;
  filter:blur(26px);
  transform-origin:50% 0;
}
.beam.b1 {
  left:12%;
  background:linear-gradient(180deg,rgba(224,53,64,.30),transparent 78%);
  animation:sweep 11s var(--easeIn) infinite alternate;
}
.beam.b2 {
  left:46%;
  background:linear-gradient(180deg,rgba(75,111,204,.22),transparent 75%);
  animation:sweep 13s var(--easeIn) -4s infinite alternate-reverse;
}
.beam.b3 {
  left:76%;
  background:linear-gradient(180deg,rgba(91,189,46,.20),transparent 72%);
  animation:sweep 9.5s var(--easeIn) -2s infinite alternate;
}
@keyframes sweep {
  0% {
    transform:rotate(-14deg);
    opacity:.45;
  }
  50% {
    opacity:.95;
  }
  100% {
    transform:rotate(13deg);
    opacity:.5;
  }
}
.hero-inner {
  position:relative;
  z-index:3;
  max-width:1120px;
  width:100%;
  margin:0 auto;
  padding:calc(var(--h) + 3.5rem) clamp(1.25rem,4vw,3.5rem) 7rem;
  display:flex;
  flex-direction:column;
  align-items:center;
  text-align:center;
}
h1 {
  font-family:var(--fD);
  font-weight:900;
  font-size:clamp(3.2rem,13vw,10.5rem);
  line-height:.86;
  letter-spacing:-0.04em;
  text-transform:uppercase;
  color:var(--chalk);
}
h1 .line {
  display:block;
  overflow:hidden;
}
h1 .line>span {
  display:inline-block;
  transform:translateY(110%);
  animation:rise 1s var(--ease) forwards;
}
h1 .line:nth-child(1)>span {
  animation-delay:.15s;
}
h1 .line:nth-child(2)>span {
  animation-delay:.28s;
}
h1 .line:nth-child(3)>span {
  animation-delay:.41s;
}
@keyframes rise {
  to {
    transform:translateY(0);
  }
}
h1 em {
  font-style:normal;
  color:var(--amber);
  animation:rise 1s var(--ease) forwards;
}
h1 strong {
  font-weight:700;
  color:transparent;
  -webkit-text-stroke:2.5px var(--cyan);
  text-shadow:0 0 38px rgba(75,111,204,.35);
}
@keyframes fadeUp {
  from {
    opacity:0;
    transform:translateY(22px);
  }
  to {
    opacity:1;
    transform:none;
  }
}
#about {
  position:relative;
}
#about::before {
  content:'';
  position:absolute;
  top:-10%;
  left:-15%;
  width:55vw;
  height:55vw;
  max-width:760px;
  max-height:760px;
  background:radial-gradient(circle,rgba(224,53,64,.05) 0%,transparent 65%);
  pointer-events:none;
}
.about-layout {
  display:grid;
  grid-template-columns:1.05fr .95fr;
  gap:clamp(2.5rem,6vw,5rem);
  align-items:center;
  position:relative;
  z-index:1;
}
.about-body p {
  color:var(--chalk2);
  font-weight:400;
  margin-bottom:1.1rem;
}
.about-body p strong {
  color:var(--chalk);
  font-weight:500;
}
.bento {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:.9rem;
}
.bcard {
  position:relative;
  border:1px solid var(--line);
  border-radius:var(--rad);
  background:linear-gradient(160deg,var(--void3),var(--void2));
  padding:1.6rem 1.5rem;
  overflow:hidden;
  transition:transform .45s var(--ease),border-color .45s;
}
.bcard:hover {
  transform:translateY(-5px);
  border-color:var(--line2);
}
.bcard::after {
  content:'';
  position:absolute;
  inset:0;
  opacity:0;
  transition:opacity .5s;
  background:radial-gradient(420px circle at var(--mx,50%) var(--my,50%),rgba(224,53,64,.09),transparent 42%);
  pointer-events:none;
}
.bcard.cy::after {
  background:radial-gradient(420px circle at var(--mx,50%) var(--my,50%),rgba(75,111,204,.08),transparent 42%);
}
.bcard:hover::after {
  opacity:1;
}
.bcard-n {
  font-family:var(--fD);
  font-weight:700;
  font-size:clamp(2.2rem,3.6vw,3rem);
  line-height:1;
  color:var(--amber);
  letter-spacing:-.02em;
}
.bcard.cy .bcard-n {
  color:var(--cyan);
}
.bcard-lbl {
  font-family:var(--fM);
  font-size:.76rem;
  letter-spacing:.1em;
  text-transform:uppercase;
  color:var(--chalk);
  margin:.7rem 0 .5rem;
}
.bcard-txt {
  font-size:.95rem;
  font-weight:400;
  color:var(--slate);
  line-height:1.6;
}
#gallery {
  background:var(--void2);
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
  position:relative;
  overflow:hidden;
}
.gallery-intro {
  display:flex;
  justify-content:space-between;
  align-items:flex-end;
  gap:2rem;
  flex-wrap:wrap;
  margin-bottom:clamp(2rem,4.5vw,3.6rem);
  position:relative;
  z-index:1;
}
.gallery-grid {
  display:grid;
  gap:.9rem;
  grid-template-columns:repeat(6,1fr);
  grid-auto-rows:clamp(140px,21vw,250px);
  position:relative;
  z-index:1;
}
.gi {
  position:relative;
  border-radius:var(--rad);
  overflow:hidden;
  cursor:pointer;
  border:1px solid var(--line);
}
.gi img {
  width:100%;
  height:100%;
  object-fit:cover;
  transition:transform 1.1s var(--ease),filter .7s;
  filter:saturate(1.02);
}
.gi:hover img {
  transform:scale(1.07);
  filter:saturate(1.15) brightness(1.06);
}
.gi-veil {
  position:absolute;
  inset:0;
  background:linear-gradient(185deg,transparent 48%,rgba(5,6,8,.88) 100%);
  opacity:.85;
  transition:opacity .5s;
}
.gi:hover .gi-veil {
  opacity:1;
}
.gi-cap {
  position:absolute;
  left:0;
  right:0;
  bottom:0;
  padding:1.1rem 1.25rem;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:.8rem;
}
.gi-cap span {
  font-family:var(--fD);
  font-weight:600;
  font-size:clamp(.85rem,1.2vw,1.02rem);
  letter-spacing:.01em;
  color:var(--chalk);
  transform:translateY(6px);
  opacity:.85;
  transition:transform .5s var(--ease),opacity .5s;
}
.gi:hover .gi-cap span {
  transform:translateY(0);
  opacity:1;
}
.gi-cap::after {
  content:'↗';
  font-family:var(--fM);
  color:var(--amber);
  font-size:.95rem;
  opacity:0;
  transform:translate(-6px,6px);
  transition:all .45s var(--ease);
}
.gi:hover .gi-cap::after {
  opacity:1;
  transform:translate(0,0);
}
.gi-1 {
  grid-column:1/4;
  grid-row:1/3;
}
.gi-2 {
  grid-column:4/7;
  grid-row:1/2;
}
.gi-3 {
  grid-column:4/6;
  grid-row:2/3;
}
.gi-4 {
  grid-column:6/7;
  grid-row:2/3;
}
.gi-5 {
  grid-column:1/3;
  grid-row:3/4;
}
.gi-6 {
  grid-column:3/7;
  grid-row:3/4;
}
.gi-7 {
  grid-column:1/4;
  grid-row:4/5;
}
.gi-8 {
  grid-column:4/6;
  grid-row:4/5;
}
.gi-9 {
  grid-column:6/7;
  grid-row:4/5;
}
#lb {
  position:fixed;
  inset:0;
  z-index:3000;
  background:rgba(5,6,8,.94);
  backdrop-filter:blur(18px);
  -webkit-backdrop-filter:blur(18px);
  display:flex;
  align-items:center;
  justify-content:center;
  flex-direction:column;
  gap:1.1rem;
  opacity:0;
  visibility:hidden;
  transition:opacity .4s var(--ease),visibility .4s;
  padding:clamp(1rem,4vw,3rem);
}
#lb.show {
  opacity:1;
  visibility:visible;
}
#lb img {
  max-width:min(1100px,100%);
  max-height:78vh;
  object-fit:contain;
  border-radius:var(--rad);
  border:1px solid var(--line2);
  box-shadow:0 30px 90px rgba(0,0,0,.6);
  transform:scale(.94);
  transition:transform .45s var(--ease);
}
#lb.show img {
  transform:scale(1);
}
#lb figcaption {
  font-family:var(--fD);
  font-size:1.05rem;
  color:var(--chalk);
  letter-spacing:.01em;
}
#lbClose {
  position:absolute;
  top:1.4rem;
  right:1.6rem;
  background:none;
  border:1px solid var(--line2);
  border-radius:50%;
  width:44px;
  height:44px;
  color:var(--chalk);
  font-size:1.1rem;
  transition:border-color .3s,color .3s,transform .3s;
}
#lbClose:hover {
  border-color:var(--amber);
  color:var(--amber);
  transform:rotate(90deg);
}
#services {
  position:relative;
}
.svc-intro {
  display:flex;
  justify-content:space-between;
  align-items:flex-end;
  gap:2rem;
  flex-wrap:wrap;
  margin-bottom:clamp(2rem,4.5vw,3.6rem);
}
.svc-grid {
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:.9rem;
}
.sc {
  position:relative;
  border:1px solid var(--line);
  border-radius:var(--rad);
  background:linear-gradient(165deg,var(--void3) 0%,var(--void2) 100%);
  padding:2.4rem 2rem 2.1rem;
  overflow:hidden;
  transition:transform .45s var(--ease),border-color .45s;
}
.sc:hover {
  transform:translateY(-6px);
  border-color:var(--line2);
}
.sc::after {
  content:'';
  position:absolute;
  inset:0;
  opacity:0;
  transition:opacity .5s;
  pointer-events:none;
  background:radial-gradient(560px circle at var(--mx,50%) var(--my,50%),rgba(224,53,64,.10),transparent 45%);
}
.sc.cy::after {
  background:radial-gradient(560px circle at var(--mx,50%) var(--my,50%),rgba(75,111,204,.09),transparent 45%);
}
.sc:hover::after {
  opacity:1;
}
.sc h3 {
  font-family:var(--fD);
  font-weight:600;
  font-size:clamp(1.35rem,1.7vw,1.6rem);
  letter-spacing:-.015em;
  margin-bottom:.85rem;
  color:var(--chalk);
  transition:color .3s;
}
.sc:hover h3 {
  color:var(--amber);
}
.sc.cy:hover h3 {
  color:var(--cyan);
}
.sc.g:hover h3 {
  color:var(--green);
}
.sc p {
  font-size:clamp(1rem,1.1vw,1.08rem);
  font-weight:400;
  color:var(--chalk2);
  line-height:1.65;
  margin-bottom:1.5rem;
}
.sc-tag {
  display:inline-block;
  font-family:var(--fM);
  font-size:.7rem;
  letter-spacing:.1em;
  text-transform:uppercase;
  padding:.34rem .8rem;
  border-radius:99px;
  border:1px solid;
}
.sc-tag.a {
  color:var(--amber);
  border-color:rgba(224,53,64,.35);
  background:rgba(224,53,64,.06);
}
.sc-tag.c {
  color:var(--cyan);
  border-color:rgba(75,111,204,.32);
  background:rgba(75,111,204,.05);
}
#markets {
  background:var(--void2);
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
  position:relative;
  overflow:hidden;
}
#markets::before {
  content:'';
  position:absolute;
  bottom:-30%;
  right:-12%;
  width:48vw;
  height:48vw;
  max-width:680px;
  max-height:680px;
  background:radial-gradient(circle,rgba(75,111,204,.05) 0%,transparent 65%);
  pointer-events:none;
}
.mkt-grid {
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:0;
  margin-top:clamp(2rem,4.5vw,3.4rem);
  border-top:1px solid var(--line);
  border-left:1px solid var(--line);
  position:relative;
  z-index:1;
}
.mk {
  position:relative;
  padding:2.2rem 1.9rem 2.4rem;
  border-right:1px solid var(--line);
  border-bottom:1px solid var(--line);
  transition:background .45s;
  overflow:hidden;
}
.mk::before {
  content:'';
  position:absolute;
  left:0;
  top:0;
  width:100%;
  height:2px;
  background:linear-gradient(90deg,var(--amber),var(--cyan));
  transform:scaleX(0);
  transform-origin:0 50%;
  transition:transform .5s var(--ease);
}
.mk:hover {
  background:var(--void3);
}
.mk:hover::before {
  transform:scaleX(1);
}
.mk h4 {
  font-family:var(--fD);
  font-weight:600;
  font-size:clamp(1.2rem,1.5vw,1.4rem);
  color:var(--chalk);
  margin-bottom:.7rem;
  letter-spacing:-.01em;
  transition:color .3s;
}
.mk:hover h4 {
  color:var(--amber);
}
.mk p {
  font-size:clamp(.98rem,1.1vw,1.05rem);
  font-weight:400;
  color:var(--chalk2);
  line-height:1.65;
}
.brands-lede {
  display:flex;
  justify-content:space-between;
  align-items:flex-end;
  gap:2rem;
  flex-wrap:wrap;
  margin-bottom:clamp(2rem,4.5vw,3.6rem);
}
.brand-cards {
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:.9rem;
}
.bc {
  position:relative;
  display:flex;
  flex-direction:column;
  border:1px solid var(--line);
  border-radius:var(--rad);
  background:linear-gradient(165deg,var(--void3),var(--void2));
  padding:2.1rem 1.9rem;
  overflow:hidden;
  transition:transform .45s var(--ease),border-color .45s,box-shadow .45s;
}
.bc:hover {
  transform:translateY(-6px);
  border-color:var(--line2);
  box-shadow:0 24px 60px rgba(0,0,0,.4);
}
.bc::before {
  content:'';
  position:absolute;
  top:0;
  left:0;
  right:0;
  height:1px;
  background:linear-gradient(90deg,transparent,var(--amber),transparent);
  opacity:0;
  transition:opacity .5s;
}
.bc:hover::before {
  opacity:1;
}
.bc-logo {
  height:46px;
  display:flex;
  align-items:center;
  margin-bottom:1.5rem;
}
.bc-logo img {
  max-height:100%;
  width:auto;
  max-width:200px;
  object-fit:contain;
  filter:brightness(1.05);
  transition:transform .45s var(--ease);
}
.bc:hover .bc-logo img {
  transform:scale(1.05);
}
.bc h3 {
  font-family:var(--fD);
  font-weight:600;
  font-size:1.25rem;
  color:var(--chalk);
  margin-bottom:.7rem;
  letter-spacing:-.01em;
}
.bc p {
  font-size:1rem;
  font-weight:400;
  color:var(--slate);
  line-height:1.65;
  margin-bottom:1rem;
}
.bc-meta {
  font-size:.92rem !important;
  color:var(--chalk2) !important;
}
.bc-meta strong {
  color:var(--amber);
  font-weight:500;
}
.bc-link {
  margin-top:auto;
  padding-top:1.2rem;
  display:inline-flex;
  align-items:center;
  gap:.5rem;
  font-family:var(--fM);
  font-size:.76rem;
  letter-spacing:.1em;
  text-transform:uppercase;
}
.bc-link svg {
  width:12px;
  height:12px;
  transition:transform .35s var(--ease);
}
.bc-link:hover svg {
  transform:translateX(4px);
}
.bc-link.a {
  color:var(--amber);
}
.bc-link.c {
  color:var(--cyan);
}
.bc-link.w {
  color:var(--chalk);
}
.kinetic-strip {
  margin-top:.9rem;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:2rem;
  border:1px solid rgba(91,189,46,.28);
  border-radius:var(--rad);
  padding:2rem 2.2rem;
  background:radial-gradient(70% 160% at 8% 50%,rgba(91,189,46,.09) 0%,transparent 55%),linear-gradient(165deg,var(--void3),var(--void2));
  position:relative;
  overflow:hidden;
}
.kinetic-strip::after {
  content:'';
  position:absolute;
  top:-60%;
  right:-4%;
  width:280px;
  height:220%;
  background:linear-gradient(180deg,rgba(91,189,46,.07),transparent 80%);
  filter:blur(30px);
  transform:rotate(16deg);
  animation:sweep 12s var(--easeIn) infinite alternate;
  pointer-events:none;
}
.kinetic-info h3 {
  font-family:var(--fD);
  font-weight:600;
  font-size:1.4rem;
  color:var(--chalk);
  margin-bottom:.55rem;
}
.kinetic-info p {
  font-size:1rem;
  font-weight:400;
  color:var(--slate);
  max-width:62ch;
}
#store .store-inner {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:2.4rem;
  flex-wrap:wrap;
  border:1px solid var(--line);
  border-radius:calc(var(--rad) + 6px);
  padding:clamp(2.2rem,5vw,3.6rem);
  background:radial-gradient(90% 180% at 92% 0%,rgba(75,111,204,.07) 0%,transparent 55%),radial-gradient(80% 160% at 4% 100%,rgba(224,53,64,.08) 0%,transparent 50%),linear-gradient(165deg,var(--void3),var(--void2));
  position:relative;
  overflow:hidden;
}
.store-hed {
  font-family:var(--fD);
  font-weight:700;
  font-size:clamp(1.9rem,4vw,3rem);
  letter-spacing:-.02em;
  line-height:1.05;
  color:var(--chalk);
}
.store-hed span {
  color:var(--amber);
}
.store-sub {
  margin-top:.9rem;
  color:var(--chalk2);
  font-weight:400;
  max-width:54ch;
}
#contact {
  background:var(--void2);
  border-top:1px solid var(--line);
  position:relative;
  overflow:hidden;
}
#contact::before {
  content:'';
  position:absolute;
  top:-22%;
  right:-10%;
  width:50vw;
  height:50vw;
  max-width:700px;
  max-height:700px;
  background:radial-gradient(circle,rgba(75,111,204,.05) 0%,transparent 62%);
  pointer-events:none;
}
.contact-layout {
  display:grid;
  grid-template-columns:.85fr 1.15fr;
  gap:clamp(2.5rem,5vw,4.5rem);
  margin-top:clamp(2rem,4vw,3.4rem);
  position:relative;
  z-index:1;
}
.contact-info h3 {
  font-family:var(--fD);
  font-weight:600;
  font-size:1.35rem;
  color:var(--chalk);
  margin-bottom:1.6rem;
}
.cd {
  display:flex;
  gap:1.1rem;
  padding:1.15rem 0;
  border-bottom:1px solid var(--line);
}
.cd:first-of-type {
  border-top:1px solid var(--line);
}
.cd-ico {
  flex-shrink:0;
  width:44px;
  height:44px;
  border-radius:12px;
  border:1px solid var(--line);
  background:var(--void3);
  display:flex;
  align-items:center;
  justify-content:center;
  transition:border-color .4s,transform .4s var(--ease);
}
.cd:hover .cd-ico {
  border-color:rgba(224,53,64,.4);
  transform:translateY(-2px);
}
.cd-ico svg {
  width:18px;
  height:18px;
}
.cd-lbl {
  font-family:var(--fM);
  font-size:.74rem;
  letter-spacing:.12em;
  text-transform:uppercase;
  color:var(--slate);
  margin-bottom:.3rem;
}
.cd-val {
  font-size:1rem;
  color:var(--chalk2);
  font-weight:400;
  line-height:1.55;
}
.cd-val a {
  color:var(--amber);
  transition:opacity .3s;
}
.cd-val a:hover {
  opacity:.75;
}
.contact-social {
  margin-top:1.8rem;
}
.contact-social-lbl {
  font-family:var(--fM);
  font-size:.74rem;
  letter-spacing:.12em;
  text-transform:uppercase;
  color:var(--slate);
  margin-bottom:.5rem;
}
.contact-social a {
  font-size:1rem;
  color:var(--cyan);
  font-weight:400;
  transition:opacity .3s;
}
.contact-social a:hover {
  opacity:.75;
}
.cform-wrap {
  border:1px solid var(--line);
  border-radius:calc(var(--rad) + 4px);
  background:linear-gradient(170deg,var(--void3),var(--void2));
  padding:clamp(1.6rem,3.4vw,2.6rem);
}
.cform-title {
  display:flex;
  align-items:center;
  gap:.6rem;
  font-family:var(--fM);
  font-size:.74rem;
  letter-spacing:.1em;
  text-transform:uppercase;
  color:var(--cyan);
  margin-bottom:1.8rem;
  padding-bottom:1.2rem;
  border-bottom:1px solid var(--line);
}
.cform-title svg {
  width:13px;
  height:13px;
  flex-shrink:0;
}
.honeypot {
  position:absolute;
  left:-9999px;
  opacity:0;
  height:0;
  overflow:hidden;
}
.frow {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:1rem;
}
.fg {
  margin-bottom:1.15rem;
}
.fg label {
  display:block;
  font-family:var(--fM);
  font-size:.74rem;
  letter-spacing:.1em;
  text-transform:uppercase;
  color:var(--chalk2);
  margin-bottom:.5rem;
}
.fg .req {
  color:var(--amber);
  margin-left:2px;
}
.fg input,.fg select,.fg textarea {
  width:100%;
  padding:.85rem 1rem;
  background:var(--void2);
  color:var(--chalk);
  border:1px solid var(--line);
  border-radius:12px;
  font-family:var(--fB);
  font-size:1rem;
  font-weight:400;
  outline:none;
  transition:border-color .35s,box-shadow .35s,background .35s;
  appearance:none;
  -webkit-appearance:none;
}
.fg select {
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%237c8499' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat;
  background-position:right 1rem center;
}
.fg input::placeholder,.fg textarea::placeholder {
  color:rgba(170,180,200,.85);
}
.fg input:focus,.fg select:focus,.fg textarea:focus {
  border-color:rgba(224,53,64,.55);
  box-shadow:0 0 0 3px rgba(224,53,64,.1);
  background:var(--void3);
}
.fg input.e,.fg select.e,.fg textarea.e {
  border-color:#e25555;
}
.fe {
  display:none;
  font-size:.76rem;
  color:#e88;
  margin-top:.4rem;
}
textarea {
  resize:vertical;
  min-height:120px;
}
.priv {
  display:flex;
  gap:.6rem;
  align-items:flex-start;
  font-size:.86rem;
  color:var(--slate);
  font-weight:400;
  margin:.4rem 0 1.4rem;
  line-height:1.55;
}
.priv svg {
  width:12px;
  height:12px;
  flex-shrink:0;
  margin-top:3px;
  color:var(--cyan);
}
.priv a {
  color:var(--cyan);
}
.fsuccess {
  display:none;
  text-align:center;
  padding:2.5rem 1rem;
}
.fsuccess-ico {
  width:68px;
  height:68px;
  margin:0 auto 1.4rem;
  border-radius:50%;
  border:1px solid rgba(75,111,204,.4);
  background:rgba(75,111,204,.06);
  display:flex;
  align-items:center;
  justify-content:center;
  animation:popIn .6s var(--ease);
}
@keyframes popIn {
  from {
    transform:scale(.5);
    opacity:0;
  }
  to {
    transform:scale(1);
    opacity:1;
  }
}
.fsuccess-ico svg {
  width:30px;
  height:30px;
}
.fsuccess h4 {
  font-family:var(--fD);
  font-weight:600;
  font-size:1.4rem;
  color:var(--chalk);
  margin-bottom:.6rem;
}
.fsuccess p {
  color:var(--chalk2);
  font-weight:400;
  font-size:1rem;
  max-width:42ch;
  margin:0 auto;
}
.amber-bar {
  height:2px;
  background:linear-gradient(90deg,var(--amber) 0%,var(--cyan) 50%,#5BBD2E 100%);
}
footer {
  background:var(--void);
  padding:clamp(3rem,7vw,5rem) clamp(1.25rem,4vw,3.5rem) 2rem;
}
.footer-top {
  max-width:1320px;
  margin:0 auto;
  display:grid;
  grid-template-columns:1.4fr .8fr .8fr 1fr;
  gap:clamp(2rem,4vw,3.5rem);
  padding-bottom:clamp(2.2rem,5vw,3.6rem);
  border-bottom:1px solid var(--line);
}
.footer-brand img {
  height:34px;
  width:auto;
  margin-bottom:1.3rem;
}
.footer-about {
  font-size:.95rem;
  font-weight:400;
  color:var(--slate);
  line-height:1.65;
  max-width:38ch;
  margin-bottom:1.3rem;
}
.footer-addr {
  font-size:.95rem;
  font-weight:400;
  color:var(--chalk2);
  line-height:1.7;
}
.footer-addr a {
  color:var(--amber);
  transition:opacity .3s;
}
.footer-addr a:hover {
  opacity:.7;
}
.fcol h5 {
  font-family:var(--fM);
  font-size:.76rem;
  letter-spacing:.12em;
  text-transform:uppercase;
  color:var(--chalk);
  margin-bottom:1.2rem;
}
.fcol li {
  margin-bottom:.6rem;
}
.fcol a {
  font-size:.95rem;
  font-weight:400;
  color:var(--slate);
  position:relative;
  transition:color .3s,padding-left .3s var(--ease);
}
.fcol a::before {
  content:'';
  position:absolute;
  left:0;
  top:50%;
  width:0;
  height:1px;
  background:var(--amber);
  transition:width .3s var(--ease);
}
.fcol a:hover {
  color:var(--chalk);
  padding-left:14px;
}
.fcol a:hover::before {
  width:9px;
}
.footer-bottom {
  max-width:1320px;
  margin:0 auto;
  padding-top:1.6rem;
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:1rem;
  flex-wrap:wrap;
}
.footer-copy {
  font-size:.85rem;
  font-weight:400;
  color:var(--slate);
}
.footer-legal {
  display:flex;
  gap:1.4rem;
}
.footer-legal a {
  font-size:.85rem;
  font-weight:400;
  color:var(--slate);
  transition:color .3s;
}
.footer-legal a:hover {
  color:var(--chalk);
}
@media (prefers-reduced-motion:reduce) {
  *,*::before,*::after {
    animation-duration:.01ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.01ms !important;
  }
  html {
    scroll-behavior:auto;
  }
  .rv,.stagger>* {
    opacity:1 !important;
    transform:none !important;
  }
  h1 .line>span {
    transform:none;
  }
  #spot {
    display:none;
  }
}
@media (max-width:1080px) {
  .svc-grid {
    grid-template-columns:1fr 1fr;
  }
  .brand-cards {
    grid-template-columns:1fr 1fr;
  }
  .mkt-grid {
    grid-template-columns:1fr 1fr;
  }
}
@media (max-width:880px) {
  .about-layout {
    grid-template-columns:1fr;
  }
  .contact-layout {
    grid-template-columns:1fr;
  }
  .gallery-grid {
    grid-template-columns:1fr 1fr;
    grid-auto-rows:auto;
  }
  .gi {
    aspect-ratio:4/3;
  }
  .gi-1,.gi-2,.gi-3,.gi-4,.gi-5,.gi-6,.gi-7,.gi-8,.gi-9 {
    grid-column:auto;
    grid-row:auto;
  }
}
@media (max-width:720px) {
  .svc-grid {
    grid-template-columns:1fr;
  }
  .brand-cards {
    grid-template-columns:1fr;
  }
  .footer-top {
    grid-template-columns:1fr 1fr;
  }
  .footer-bottom {
    flex-direction:column;
    text-align:center;
  }
  .footer-legal {
    flex-wrap:wrap;
    justify-content:center;
  }
  .kinetic-strip {
    flex-direction:column;
    align-items:flex-start;
  }
  #store .store-inner {
    flex-direction:column;
    align-items:flex-start;
  }
  #spot {
    display:none;
  }
}
@media (max-width:460px) {
  .bento {
    grid-template-columns:1fr;
  }
  .mkt-grid {
    grid-template-columns:1fr;
  }
  .gallery-grid {
    grid-template-columns:1fr;
  }
  .frow {
    grid-template-columns:1fr;
  }
  .footer-top {
    grid-template-columns:1fr;
  }
}
.sc-tag.g {
  color:var(--green);
  border-color:rgba(91,189,46,.35);
  background:rgba(91,189,46,.06);
}
.bc-link.g {
  color:var(--green);
}
.bc-link.g:hover svg {
  transform:translateX(4px);
}
.kicker.g {
  color:var(--green);
}
.kicker.g i {
  background:var(--green);
}
.sc.g::after {
  background:radial-gradient(560px circle at var(--mx,50%) var(--my,50%),rgba(91,189,46,.09),transparent 45%);
}
.bcard.gr .bcard-n {
  color:var(--green);
}
.bcard.gr::after {
  background:radial-gradient(420px circle at var(--mx,50%) var(--my,50%),rgba(91,189,46,.08),transparent 42%);
}
#spot {
  display:none !important;
}
body::after {
  opacity:.18 !important;
}
nav.solid {
  background:rgba(8,8,8,0.92) !important;
}
.mob-nav {
  background:rgba(8,8,8,0.98) !important;
}
@media (max-width:1080px) {
  .nav-links {
    display:none !important;
  }
  .burger {
    display:flex !important;
  }
}
.hero-scrim {
  background:linear-gradient(180deg,rgba(8,8,8,.68) 0%,rgba(8,8,8,.18) 50%,rgba(8,8,8,.88) 94%,var(--void) 100%),radial-gradient(75% 55% at 50% 45%,rgba(8,8,8,.3) 0%,transparent 70%) !important;
}
.hero-left {
  display:flex;
  flex-direction:column;
  align-items:center;
  width:100%;
}
#lb {
  background:rgba(8,8,8,0.96) !important;
}
.ghost {
  -webkit-text-stroke:1px rgba(255,255,255,0.03) !important;
}
#progress {
  box-shadow:0 0 14px rgba(224,53,64,.45);
}
.svc-intro,.brands-lede,.gallery-intro {
  margin-bottom:clamp(2.5rem,5vw,4rem);
}
.hero-scroll-cue {
  position:absolute;
  left:50%;
  margin-left:-19px;
  bottom:2rem;
  display:flex;
  align-items:center;
  justify-content:center;
  width:38px;
  height:38px;
  color:rgba(255,255,255,.6);
  opacity:0;
  text-decoration:none;
  transition:color .25s ease;
  z-index:5;
  animation:cueFade 1s var(--ease) 1.4s forwards,cueBounce 2.4s ease-in-out 2.4s infinite;
}
.hero-scroll-cue svg {
  width:26px;
  height:26px;
  filter:drop-shadow(0 1px 6px rgba(0,0,0,.4));
}
.hero-scroll-cue:hover {
  color:var(--amber,#ffb400);
}
@keyframes cueFade {
  from {
    opacity:0;
    transform:translateY(10px);
  }
  to {
    opacity:1;
    transform:translateY(0);
  }
}
@keyframes cueBounce {
  0%,100% {
    transform:translateY(0);
  }
  50% {
    transform:translateY(8px);
  }
}
@media (prefers-reduced-motion:reduce) {
  .hero-scroll-cue {
    animation:cueFade 1s var(--ease) 1.4s forwards;
  }
}
@media (max-width:720px) {
  .fcol a,.footer-legal a,.contact-social a {
    min-height:44px;
    display:inline-flex;
    align-items:center;
    padding:.5rem 0;
  }
  .fcol li {
    margin-bottom:.2rem;
  }
  .footer-legal {
    gap:.6rem;
  }
  .cd-val a {
    display:inline-flex;
    align-items:center;
    min-height:44px;
    padding:.5rem 0;
  }
  .mob-nav a.mnl {
    min-height:56px;
    display:inline-flex;
    align-items:center;
  }
  .beams {
    display:none;
  }
  .hero-bg img {
    animation:none;
  }
}

/* ════════════════════════════════════════════════════════════════════════════
   Polish + motion pass, 14 Oct 2026. Same design, tightened.
   ════════════════════════════════════════════════════════════════════════════ */

/* Nav: settles in on load (backwards fill, so .hide keeps working afterwards),
   and the link for the section on screen stays lit. */
nav {
  animation:navIn .9s var(--ease) .1s backwards;
}
@keyframes navIn {
  from {
    opacity:0;
    transform:translateY(-16px);
  }
}
.nav-links>li>a.on:not(.nav-pill):not(.btn) {
  color:var(--chalk);
}
.nav-links>li>a.on:not(.nav-pill):not(.btn)::after {
  transform:scaleX(1);
  transform-origin:0 50%;
}

/* Hero: a line of fact and two ways in, arriving after the headline. */
.hero-sub {
  margin-top:clamp(1.4rem,3vw,2.2rem);
  max-width:54ch;
  color:var(--chalk2);
  font-weight:400;
  font-size:clamp(1rem,1.35vw,1.15rem);
  line-height:1.6;
  text-wrap:balance;
  text-shadow:0 1px 18px rgba(0,0,0,.5);
  animation:fadeUp 1s var(--ease) .75s both;
}
.hero-cta {
  display:flex;
  flex-wrap:wrap;
  justify-content:center;
  gap:.8rem;
  margin-top:clamp(1.6rem,3vw,2.4rem);
  animation:fadeUp 1s var(--ease) .9s both;
}
.hero-cta .btn-ghost {
  background:rgba(8,8,8,.32);
  -webkit-backdrop-filter:blur(10px);
  backdrop-filter:blur(10px);
}
.hero-inner {
  will-change:opacity,translate;
}

/* Section headings rise line by line out of a mask, like the hero. */
h2.hed .ln {
  display:block;
  overflow:hidden;
  padding-bottom:.12em;
  margin-bottom:-.12em;
}
h2.hed .ln>span {
  display:inline-block;
  transform:translateY(108%);
  transition:transform 1.1s var(--ease) .08s;
}
.in h2.hed .ln>span {
  transform:none;
}
.in h2.hed .ln:nth-child(2)>span {
  transition-delay:.2s;
}

/* Gallery: each photo wipes up into its frame and settles from a slight zoom.
   The zoom is a backwards-fill animation so the hover scale still works. */
.gallery-grid.stagger>.gi {
  opacity:1;
  transform:none;
  clip-path:inset(100% 0 0 0 round var(--rad));
  transition:clip-path 1.25s var(--ease);
}
.gallery-grid.stagger.in>.gi {
  clip-path:inset(0 0 0 0 round var(--rad));
}
.gallery-grid.in .gi img {
  animation:giSettle 1.8s var(--ease) backwards;
}
.gallery-grid.in>.gi:nth-child(1) img { animation-delay:.05s; }
.gallery-grid.in>.gi:nth-child(2) img { animation-delay:.13s; }
.gallery-grid.in>.gi:nth-child(3) img { animation-delay:.21s; }
.gallery-grid.in>.gi:nth-child(4) img { animation-delay:.29s; }
.gallery-grid.in>.gi:nth-child(5) img { animation-delay:.37s; }
.gallery-grid.in>.gi:nth-child(6) img { animation-delay:.45s; }
.gallery-grid.in>.gi:nth-child(7) img { animation-delay:.53s; }
.gallery-grid.in>.gi:nth-child(8) img { animation-delay:.61s; }
.gallery-grid.in>.gi:nth-child(9) img { animation-delay:.69s; }
@keyframes giSettle {
  from {
    transform:scale(1.2);
  }
}
.gi:focus-visible {
  outline-offset:4px;
}

/* Cards: a hairline of the brand colour draws across the top on hover. */
.sc::before {
  content:'';
  position:absolute;
  top:0;
  left:0;
  right:0;
  height:2px;
  background:var(--amber);
  transform:scaleX(0);
  transform-origin:0 50%;
  transition:transform .6s var(--ease);
}
.sc.cy::before { background:var(--cyan); }
.sc.g::before { background:var(--green); }
.sc:hover::before {
  transform:scaleX(1);
}
.sc,.bc,.bcard {
  will-change:transform;
}

/* Lightbox: step through the set with arrows, keys or a swipe. */
.lb-nav {
  position:absolute;
  top:50%;
  width:52px;
  height:52px;
  margin-top:-26px;
  border-radius:50%;
  border:1px solid var(--line2);
  background:rgba(8,8,8,.55);
  color:var(--chalk);
  display:flex;
  align-items:center;
  justify-content:center;
  z-index:2;
  transition:border-color .3s,color .3s,transform .35s var(--ease);
}
.lb-nav svg {
  width:22px;
  height:22px;
}
.lb-nav.prev { left:clamp(.75rem,3vw,2rem); }
.lb-nav.next { right:clamp(.75rem,3vw,2rem); }
.lb-nav:hover {
  border-color:var(--amber);
  color:var(--amber);
}
.lb-nav.prev:hover { transform:translateX(-3px); }
.lb-nav.next:hover { transform:translateX(3px); }
.lb-meta {
  display:flex;
  align-items:baseline;
  gap:1.1rem;
}
#lbCount {
  font-family:var(--fM);
  font-size:.8rem;
  letter-spacing:.08em;
  color:var(--slate);
}
#lb img {
  transition:transform .45s var(--ease),opacity .2s ease;
}
#lb.swap img {
  opacity:0;
  transform:translateX(calc(var(--dir,0) * -32px));
}
#lb.enter img {
  opacity:0;
  transform:translateX(calc(var(--dir,0) * 32px));
  transition:none;
}
@media (max-width:720px) {
  .lb-nav {
    width:44px;
    height:44px;
    margin-top:-22px;
    top:auto;
    bottom:1.4rem;
  }
  .hero-cta .btn {
    flex:1 1 100%;
    justify-content:center;
  }
}

/* The privacy note was a flex row, which split its text and link into separate
   columns. Plain flow with the lock icon hung in the margin instead. */
.priv {
  display:block;
  position:relative;
  padding-left:1.35rem;
}
.priv svg {
  position:absolute;
  left:0;
  top:.28em;
  margin:0;
}

@media (prefers-reduced-motion:reduce) {
  h2.hed .ln>span {
    transform:none !important;
  }
  .gallery-grid.stagger>.gi {
    clip-path:none !important;
  }
  .gallery-grid .gi img {
    animation:none !important;
  }
  .hero-inner {
    opacity:1 !important;
    translate:none !important;
  }
}
