:root{
  --bg:#0A0A0A;
  --surface:#141412;
  --fg:#F5F3ED;
  --lime:#B2F467;
  --muted:#8A897F;
  --line:rgba(245,243,237,0.14);

  --display:'Archivo',sans-serif;
  --body:'Space Grotesk',sans-serif;

  --nav-h:76px;
  --ease:cubic-bezier(.16,1,.3,1);
}

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

html{
  scroll-behavior:smooth;
}

body{
  background:var(--bg);
  color:var(--fg);
  font-family:var(--body);
  padding-top:var(--nav-h);
  overflow-x:hidden;
  position:relative;
}

body::before{
  content:"";
  position:fixed;
  inset:0;
  pointer-events:none;
  z-index:-2;
  background:
    radial-gradient(
      circle at 50% 0%,
      rgba(178,244,103,.035),
      transparent 40%
    );
}

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

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

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

a:focus-visible,
button:focus-visible{
  outline:2px solid var(--lime);
  outline-offset:3px;
}

/* =========================================================
   NOISE
========================================================= */

.noise{
  position:fixed;
  inset:0;
  pointer-events:none;
  opacity:.045;
  z-index:500;
  mix-blend-mode:overlay;

  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%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");

  animation:noiseMove .2s steps(2) infinite;
}

@keyframes noiseMove{
  0%{transform:translate(0,0)}
  25%{transform:translate(2%,-1%)}
  50%{transform:translate(-1%,2%)}
  75%{transform:translate(1%,1%)}
  100%{transform:translate(0,0)}
}

/* =========================================================
   SCROLL PROGRESS
========================================================= */

.scroll-progress{
  position:fixed;
  top:0;
  left:0;
  width:0%;
  height:2px;
  background:var(--lime);
  z-index:1000;
  box-shadow:0 0 12px rgba(178,244,103,.5);
}

/* =========================================================
   CUSTOM CURSOR
========================================================= */

.cursor-dot{
  position:fixed;
  top:0;
  left:0;
  width:14px;
  height:14px;

  border:1.5px solid var(--lime);
  border-radius:50%;

  pointer-events:none;
  z-index:1001;

  transform:translate(-50%,-50%);

  transition:
    width .35s var(--ease),
    height .35s var(--ease),
    background .35s ease,
    border-color .35s ease;
}

.cursor-dot.active{
  width:46px;
  height:46px;
  background:rgba(178,244,103,.1);
}

.cursor-dot.large{
  width:68px;
  height:68px;
  background:rgba(178,244,103,.08);
}

.cursor-label{
  position:fixed;
  left:0;
  top:0;

  pointer-events:none;
  z-index:1002;

  font-size:8px;
  font-weight:700;
  letter-spacing:.1em;

  color:var(--bg);
  background:var(--lime);

  padding:5px 7px;

  opacity:0;
  transform:translate(18px,18px) scale(.8);

  transition:
    opacity .25s ease,
    transform .35s var(--ease);
}

.cursor-label.show{
  opacity:1;
  transform:translate(18px,18px) scale(1);
}

@media(pointer:coarse){
  .cursor-dot,
  .cursor-label{
    display:none;
  }
}

/* =========================================================
   NAV
========================================================= */

.site-nav{
  position:fixed;
  top:0;
  left:0;
  right:0;

  height:var(--nav-h);

  z-index:100;

  display:flex;
  align-items:center;
  justify-content:space-between;

  padding:0 clamp(20px,5vw,56px);

  background:rgba(10,10,10,.72);
  backdrop-filter:blur(14px);

  border-bottom:1px solid var(--line);

  transform:translateY(-100%);
  animation:navEnter 1s var(--ease) .1s forwards;

  transition:
    background .4s ease,
    border-color .4s ease;
}

.site-nav.scrolled{
  background:rgba(10,10,10,.88);
  border-color:rgba(178,244,103,.18);
}

@keyframes navEnter{
  to{
    transform:translateY(0);
  }
}

.logo{
  font-family:var(--display);
  font-weight:900;
  font-size:1.05rem;
  letter-spacing:.01em;
}

.navlinks{
  display:flex;
  gap:clamp(20px,3vw,40px);
}

.navlinks a{
  position:relative;

  font-size:.82rem;
  letter-spacing:.04em;
  text-transform:uppercase;

  padding-bottom:4px;

  transition:
    color .3s ease,
    transform .3s var(--ease);
}

.navlinks a:hover{
  color:var(--lime);
  transform:translateY(-2px);
}

.navlinks a::after{
  content:"";

  position:absolute;
  left:0;
  bottom:0;

  width:100%;
  height:1.5px;

  background:var(--lime);

  transform:scaleX(0);
  transform-origin:right;

  transition:transform .4s var(--ease);
}

.navlinks a:hover::after{
  transform:scaleX(1);
  transform-origin:left;
}

@media(max-width:640px){
  .navlinks{
    gap:16px;
  }

  .navlinks a{
    font-size:.72rem;
  }
}

/* =========================================================
   HERO
========================================================= */

.hero{
  padding:0 clamp(20px,5vw,56px);
  width:100%;
  max-width:none;
  margin:0;

  position:relative;
  overflow:hidden;
}

.hero::before{
  content:"";

  position:absolute;

  width:900px;
  height:700px;

  left:-250px;
  top:80px;

  background:
    radial-gradient(
      circle at 30% 40%,
      rgba(178,244,103,.28) 0%,
      rgba(178,244,103,.12) 25%,
      transparent 65%
    ),
    radial-gradient(
      circle at 70% 60%,
      rgba(80,180,90,.18) 0%,
      transparent 65%
    );

  filter:blur(70px);

  opacity:.8;

  animation:heroGradientFlow 14s ease-in-out infinite alternate;

  pointer-events:none;
  z-index:0;
}

.hero::after{
  content:"";

  position:absolute;
  inset:0;

  background:
    linear-gradient(
      115deg,
      transparent 0%,
      rgba(178,244,103,.025) 45%,
      transparent 70%
    );

  transform:translateX(-100%);
  animation:heroSweep 7s ease-in-out 1.2s infinite;

  pointer-events:none;
}

@keyframes heroSweep{
  0%,45%{
    transform:translateX(-100%);
  }

  75%,100%{
    transform:translateX(100%);
  }
}

.hero-main{
  display:grid;

  grid-template-columns:1.3fr 1fr;

  gap:clamp(30px,5vw,60px);

  align-items:start;

  padding:0 0 56px;

  position:relative;
  z-index:1;
}

.hero-copy{
  padding-top:100px;
}

.hero-title{
  overflow:hidden;
}

.hero-line{
  display:block;
  overflow:hidden;
  line-height:.86;
}

.hero-word{
  display:block;

  font-family:var(--display);
  font-weight:900;

  font-size:clamp(3.4rem,8.6vw,7.4rem);

  line-height:.86;

  letter-spacing:-.02em;

  transform:translateY(110%);
  opacity:0;

  animation:heroTextIn 1.2s var(--ease) forwards;
}

.hero-line:nth-child(2) .hero-word{
  animation-delay:.13s;
}

@keyframes heroTextIn{
  to{
    transform:translateY(0);
    opacity:1;
  }
}

.hero-copy h1 .outline{
  color:transparent;
  -webkit-text-stroke:2px var(--lime);
}

@supports not (-webkit-text-stroke:1px black){
  .hero-copy h1 .outline{
    color:var(--lime);
  }
}

.hero-bottom{
  display:flex;
  flex-direction:column;
  align-items:flex-start;

  gap:28px;

  margin-top:36px;
}

.intro{
  max-width:440px;

  font-size:1.2rem;
  line-height:1.6;

  color:var(--fg);

  opacity:0;
  transform:translateY(25px);

  animation:
    fadeUp 1s var(--ease) .6s forwards;
}

@keyframes fadeUp{
  to{
    opacity:1;
    transform:translateY(0);
  }
}

.hero-cta{
  display:inline-flex;
  align-items:center;
  gap:24px;

  padding:18px 26px;

  background:var(--lime);
  border:2px solid var(--lime);

  color:var(--bg);

  font-family:var(--display);
  font-weight:700;

  font-size:.9rem;

  letter-spacing:.04em;
  text-transform:uppercase;

  opacity:0;
  transform:translateY(20px);

  animation:
    fadeUp 1s var(--ease) .78s forwards;

  transition:
    background .4s ease,
    color .4s ease,
    border-color .4s ease,
    transform .4s var(--ease);
}

.hero-cta span{
  font-size:1.2rem;

  transition:
    transform .5s var(--ease);
}

.hero-cta:hover{
  background:transparent;
  color:var(--lime);

  transform:translateY(-5px);
}

.hero-cta:hover span{
  transform:translate(7px,-7px) rotate(3deg);
}

.scroll{
  display:flex;
  align-items:center;
  gap:12px;

  position:absolute;

  bottom:20px;
  left:0;

  font-size:.78rem;
  letter-spacing:.06em;
  text-transform:uppercase;

  color:var(--muted);

  opacity:0;

  animation:
    fadeUp 1s var(--ease) 1.1s forwards;
}

.scroll-line{
  display:block;

  width:30px;
  height:1px;

  background:var(--lime);

  animation:scrollLine 1.8s ease-in-out infinite;
}

@keyframes scrollLine{
  0%,100%{
    transform:scaleX(.5);
    transform-origin:left;
  }

  50%{
    transform:scaleX(1);
    transform-origin:left;
  }
}

/* =========================================================
   HERO IMAGE
========================================================= */

.hero-image-wrap{
  margin-top:20px;

  position:relative;

  aspect-ratio:4.5/5;

  background:var(--surface);

  border:1px solid var(--line);

  overflow:hidden;

  transform:translateY(40px);
  opacity:0;

  animation:
    heroImageIn 1.4s var(--ease) .35s forwards;

  transition:
    border-color .5s ease;
}

@keyframes heroImageIn{
  from{
    opacity:0;
    transform:translateY(40px) scale(.96);
  }

  to{
    opacity:1;
    transform:translateY(0) scale(1);
  }
}

.hero-image-wrap:hover{
  border-color:rgba(178,244,103,.55);
}

.hero-image-inner{
  position:absolute;
  inset:0;

  overflow:hidden;

  clip-path:inset(100% 0 0 0);

  animation:heroImageReveal 1.5s var(--ease) .65s forwards;
}

@keyframes heroImageReveal{
  to{
    clip-path:inset(0 0 0 0);
  }
}

.hero-image{
  width:100%;
  height:100%;

  object-fit:cover;

  transform:scale(1.12);

  animation:heroImageScale 2s var(--ease) 1s forwards;

  transition:
    transform 1s var(--ease),
    filter 1s ease;
}

@keyframes heroImageScale{
  to{
    transform:scale(1);
  }
}

.hero-image-wrap:hover .hero-image{
  transform:scale(1.045);
}

.hero-image-label{
  position:absolute;

  top:14px;
  left:14px;

  z-index:3;

  font-size:.7rem;
  letter-spacing:.08em;
  text-transform:uppercase;

  background:var(--bg);

  padding:5px 9px;

  border:1px solid var(--line);

  opacity:0;
  transform:translateY(-10px);

  animation:
    labelIn .7s var(--ease) 1.4s forwards;
}

.hero-image-label-bottom{
  position:absolute;

  right:14px;
  top:14px;

  z-index:3;

  font-size:.65rem;
  letter-spacing:.1em;

  color:var(--lime);

  opacity:0;

  animation:
    labelIn .7s var(--ease) 1.5s forwards;
}

@keyframes labelIn{
  to{
    opacity:1;
    transform:translateY(0);
  }
}

.hero-image-caption{
  position:absolute;

  bottom:0;
  left:0;
  right:0;

  z-index:3;

  font-family:var(--display);
  font-weight:700;

  font-size:.85rem;

  letter-spacing:.02em;
  text-transform:uppercase;

  background:rgba(10,10,10,.85);

  padding:12px 14px;

  line-height:1.3;

  transform:translateY(100%);

  transition:
    transform .6s var(--ease);
}

.hero-image-wrap:hover .hero-image-caption{
  transform:translateY(0);
}

.hero-orbit{
  position:absolute;

  border:1px solid rgba(178,244,103,.12);

  border-radius:50%;

  pointer-events:none;

  z-index:0;
}

.orbit-one{
  width:600px;
  height:600px;

  right:-300px;
  top:80px;

  animation:orbit 20s linear infinite;
}

.orbit-two{
  width:350px;
  height:350px;

  right:-120px;
  top:210px;

  animation:orbitReverse 15s linear infinite;
}

@keyframes orbit{
  to{
    transform:rotate(360deg);
  }
}

@keyframes orbitReverse{
  to{
    transform:rotate(-360deg);
  }
}

@keyframes heroGradientFlow{
  0%{
    transform:translate3d(-80px,-30px,0) scale(1);
  }

  50%{
    transform:translate3d(120px,80px,0) scale(1.15);
  }

  100%{
    transform:translate3d(-20px,140px,0) scale(1.05);
  }
}

@media(max-width:900px){

  .hero-main{
    grid-template-columns:1fr;
  }

  .hero-image-wrap{
    aspect-ratio:16/10;
    order:-1;
  }

  .scroll{
    position:relative;
    bottom:auto;
    margin-top:30px;
  }

  .hero-orbit{
    display:none;
  }
}

/* =========================================================
   MARQUEE
========================================================= */

.marquee{
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);

  overflow:hidden;
  white-space:nowrap;

  padding:16px 0;

  position:relative;
}

.marquee::before,
.marquee::after{
  content:"";

  position:absolute;
  top:0;
  bottom:0;

  width:100px;

  z-index:2;

  pointer-events:none;
}

.marquee::before{
  left:0;
  background:linear-gradient(to right,var(--bg),transparent);
}

.marquee::after{
  right:0;
  background:linear-gradient(to left,var(--bg),transparent);
}

.marquee-track{
  display:inline-flex;

  animation:scroll-left 28s linear infinite;

  will-change:transform;
}

.marquee-track span{
  font-family:var(--display);
  font-weight:700;

  font-size:1.15rem;

  letter-spacing:.02em;
  text-transform:uppercase;

  padding-right:2.4em;

  color:var(--fg);
}

.marquee-track span i{
  font-style:normal;
  color:var(--lime);

  margin-left:.3em;

  display:inline-block;

  animation:spinStar 3s linear infinite;
}

@keyframes spinStar{
  to{
    transform:rotate(360deg);
  }
}

@keyframes scroll-left{
  from{
    transform:translateX(0);
  }

  to{
    transform:translateX(-50%);
  }
}

/* =========================================================
   SECTIONS
========================================================= */

.section{
  padding:clamp(64px,9vw,110px) clamp(20px,5vw,56px);

  max-width:1400px;

  margin:0 auto;

  position:relative;
}

.section-head{
  display:flex;
  justify-content:space-between;
  align-items:flex-end;

  gap:24px;

  margin-bottom:clamp(36px,5vw,60px);

  flex-wrap:wrap;
}

.section-head h2{
  font-family:var(--display);
  font-weight:900;

  font-size:clamp(2.4rem,6vw,4.2rem);

  line-height:.95;

  letter-spacing:-.01em;

  overflow:hidden;
}

.section-head h2 span{
  display:inline-block;

  transform:translateY(110%);

  transition:
    transform 1s var(--ease);
}

.section-head.in-view h2 span{
  transform:translateY(0);
}

.section-head.in-view h2 span:nth-child(2){
  transition-delay:.12s;
}

/* =========================================================
   GENERAL SCROLL REVEAL
========================================================= */

.reveal{
  opacity:0;

  transform:translateY(50px);

  transition:
    opacity .9s var(--ease),
    transform .9s var(--ease);
}

.reveal.in-view{
  opacity:1;
  transform:translateY(0);
}

/* =========================================================
   WORK
========================================================= */

.work{
  display:grid;

  grid-template-columns:1fr 1fr;

  gap:28px;
}

/* =========================================================
   PROJECT CARD SCROLL REVEAL
========================================================= */

/*
   Cards now slide upward into view instead of simply appearing.
   The stagger makes each card enter slightly after the previous one.
*/

.project.reveal{
  opacity:0;

  transform:translateY(80px);

  transition:
    opacity 1s var(--ease),
    transform 1s var(--ease),
    background .5s ease,
    border-color .5s ease,
    box-shadow .5s ease;
}

.project.reveal.in-view{
  opacity:1;

  transform:translateY(0);
}

.project:nth-child(2){
  transition-delay:.12s;
}

.project:nth-child(3){
  transition-delay:.24s;
}

.project:nth-child(4){
  transition-delay:.36s;
}

.project:nth-child(5){
  transition-delay:.48s;
}

.project:nth-child(6){
  transition-delay:.60s;
}

.project{
  background:var(--bg);

  padding:26px;

  display:flex;
  flex-direction:column;

  min-height:300px;

  border:1px solid var(--line);

  position:relative;

  transform-style:preserve-3d;
}

.project:hover{
  background:var(--surface);

  border-color:rgba(178,244,103,.4);

  box-shadow:
    0 30px 80px rgba(0,0,0,.25);
}

.project .corner{
  opacity:0;

  transition:
    opacity .4s ease,
    width .4s var(--ease),
    height .4s var(--ease);
}

.project:hover .corner{
  opacity:1;

  width:22px;
  height:22px;
}

.project-visual{
  flex:1;

  display:flex;
  align-items:center;
  justify-content:center;

  margin:2px 0;

  min-height:220px;

  overflow:hidden;
}

.project-image-wrap{
  width:100%;
  height:100%;

  overflow:hidden;

  position:relative;
}

.project-image-wrap::after{
  content:"";

  position:absolute;
  inset:0;

  background:linear-gradient(
    120deg,
    transparent 20%,
    rgba(178,244,103,.12),
    transparent 70%
  );

  transform:translateX(-120%);

  transition:transform .8s var(--ease);
}

.project:hover .project-image-wrap::after{
  transform:translateX(120%);
}

.project-visual img{
  width:100%;
  height:100%;

  object-fit:cover;

  transition:
    transform 1s var(--ease),
    filter .6s ease;
}

.project:hover .project-visual img{
  transform:scale(1.06);

  filter:saturate(1.05);
}

.project-row{
  display:flex;

  justify-content:space-between;
  align-items:center;

  border-top:1px solid var(--line);

  padding-top:16px;

  margin-top:18px;
}

.project-meta{
  font-size:.72rem;

  letter-spacing:.06em;
  text-transform:uppercase;

  color:var(--muted);

  margin-bottom:4px;

  transition:
    color .4s ease;
}

.project:hover .project-meta{
  color:var(--lime);
}

.project-title{
  font-family:var(--display);
  font-weight:700;

  font-size:1.3rem;

  transition:
    transform .4s var(--ease);
}

.project:hover .project-title{
  transform:translateX(6px);
}

.project-arrow{
  font-size:1.3rem;

  color:var(--lime);

  transition:
    transform .5s var(--ease);
}

.project:hover .project-arrow{
  transform:translate(7px,-7px) rotate(3deg);
}

@media(max-width:760px){
  .work{
    grid-template-columns:1fr;
    gap:28px;
  }

  .project:nth-child(n){
    transition-delay:0s;
  }
}

.work-more{
  display:flex;
  justify-content:center;

  margin-top:40px;
}

.see-more{
  display:inline-flex;

  align-items:center;

  gap:20px;

  padding:16px 34px;

  background:var(--lime);

  border:2px solid var(--lime);

  color:var(--bg);

  font-family:var(--display);

  font-weight:700;

  font-size:.93rem;

  letter-spacing:.05em;
  text-transform:uppercase;

  transition:
    background .4s ease,
    color .4s ease,
    transform .5s var(--ease),
    box-shadow .5s ease;
}

.see-more span{
  font-size:1.1rem;

  transition:
    transform .5s var(--ease);
}

.see-more:hover{
  background:var(--bg);

  color:var(--lime);

  transform:translateY(-5px);

  box-shadow:0 15px 40px rgba(178,244,103,.08);
}

.see-more:hover span{
  transform:translate(6px,-6px);
}

/* =========================================================
   VIDEO CARDS
========================================================= */

.video-project{
  overflow:hidden;
}

.video-visual{
  position:relative;

  width:100%;

  aspect-ratio:16/9;

  margin:2px 0 24px;

  overflow:hidden;

  background:#0d0d0d;

  border:1px solid var(--line);
}

.video-thumbnail{
  width:100%;
  height:100%;

  display:block;

  object-fit:cover;

  transition:
    transform 1s var(--ease),
    filter .7s ease;
}

.video-project:hover .video-thumbnail{
  transform:scale(1.05);

  filter:saturate(1.08);
}

.video-play{
  position:absolute;

  left:50%;
  top:50%;

  transform:translate(-50%,-50%);

  width:54px;
  height:54px;

  border:1px solid var(--lime);

  border-radius:50%;

  display:flex;
  align-items:center;
  justify-content:center;

  color:var(--lime);

  background:rgba(10,10,10,.7);

  backdrop-filter:blur(8px);

  font-size:14px;

  padding-left:2px;

  transition:
    all .5s var(--ease);
}

.video-project:hover .video-play{
  background:var(--lime);

  color:var(--bg);

  transform:translate(-50%,-50%) scale(1.15) rotate(8deg);

  box-shadow:
    0 0 0 12px rgba(178,244,103,.08),
    0 0 40px rgba(178,244,103,.18);
}

.video-duration{
  position:absolute;

  right:12px;
  bottom:12px;

  padding:5px 8px;

  background:rgba(10,10,10,.85);

  border:1px solid var(--line);

  color:var(--fg);

  font-size:.7rem;

  letter-spacing:.04em;
}

.video-author{
  display:flex;

  align-items:center;

  gap:10px;

  margin-bottom:18px;
}

.video-avatar{
  width:36px;
  height:36px;

  border-radius:50%;

  overflow:hidden;

  flex-shrink:0;

  border:1px solid var(--line);

  transition:
    transform .5s var(--ease),
    border-color .4s ease;
}

.video-project:hover .video-avatar{
  transform:rotate(-8deg) scale(1.08);

  border-color:var(--lime);
}

.video-avatar img{
  width:100%;
  height:100%;

  object-fit:cover;
}

.video-name{
  font-family:var(--display);

  font-weight:700;

  font-size:.9rem;
}

.video-handle{
  color:var(--muted);

  font-size:.7rem;

  margin-top:2px;
}

.verified{
  display:inline-flex;

  align-items:center;
  justify-content:center;

  width:14px;
  height:14px;

  border-radius:50%;

  background:#1d9bf0;

  color:white;

  font-size:9px;

  margin-left:3px;
}

.x-badge{
  margin-left:auto;

  font-size:1.25rem;

  color:var(--muted);

  transition:
    color .4s ease,
    transform .5s var(--ease);
}

.video-project:hover .x-badge{
  color:var(--fg);

  transform:rotate(-12deg) scale(1.1);
}

.video-description{
  font-family:var(--display);

  font-size:1.15rem;

  font-weight:500;

  line-height:1.4;

  max-width:90%;

  margin-bottom:20px;
}

.video-meta{
  display:flex;

  justify-content:space-between;

  gap:20px;

  border-top:1px solid var(--line);

  padding-top:14px;

  margin-bottom:14px;

  font-size:.68rem;

  letter-spacing:.07em;

  text-transform:uppercase;

  color:var(--muted);
}

.video-stats{
  display:flex;

  align-items:center;

  gap:clamp(18px,3vw,32px);

  border-top:1px solid var(--line);

  padding:14px 0;

  color:var(--fg);

  font-size:.75rem;
}

.video-stats > span{
  display:flex;

  align-items:center;

  gap:7px;

  transition:
    transform .4s var(--ease);
}

.video-stats > span:hover{
  transform:translateY(-3px);
}

.video-stats .stat-icon{
  color:var(--lime);

  font-size:1.05rem;

  line-height:1;

  transition:
    transform .35s var(--ease);
}

.video-stats > span:hover .stat-icon{
  transform:scale(1.25) rotate(-8deg);
}

.video-link{
  display:flex;

  justify-content:space-between;
  align-items:center;

  border-top:1px solid var(--line);

  padding-top:14px;

  font-family:var(--display);

  font-weight:700;

  font-size:.72rem;

  letter-spacing:.06em;

  color:var(--fg);

  transition:
    color .4s ease;
}

.video-link span{
  color:var(--lime);

  font-size:1rem;

  transition:
    transform .5s var(--ease);
}

.video-link:hover{
  color:var(--lime);
}

.video-link:hover span{
  transform:translate(6px,-6px);
}

/* =========================================================
   ABOUT
========================================================= */

.about-wrap{
  display:grid;

  grid-template-columns:1fr 1fr;

  gap:clamp(30px,6vw,80px);
}

.about-label{
  font-size:.8rem;

  letter-spacing:.06em;

  text-transform:uppercase;

  color:var(--lime);

  margin-bottom:20px;
}

.about-copy{
  font-family:var(--display);

  font-weight:500;

  font-size:clamp(1.4rem,2.6vw,2rem);

  line-height:1.35;
}

.about-copy em{
  font-style:italic;
  color:var(--muted);
}

.about-copy strong{
  font-weight:700;
  color:var(--lime);
}

.services{
  border-top:1px solid var(--line);
}

.service{
  display:flex;

  align-items:center;

  gap:20px;

  padding:20px 4px;

  border-bottom:1px solid var(--line);

  position:relative;

  overflow:hidden;

  transition:
    padding-left .5s var(--ease),
    background .5s ease;
}

.service::before{
  content:"";

  position:absolute;

  left:0;
  top:0;
  bottom:0;

  width:2px;

  background:var(--lime);

  transform:scaleY(0);

  transform-origin:bottom;

  transition:
    transform .5s var(--ease);
}

.service:hover{
  background:var(--surface);

  padding-left:18px;
}

.service:hover::before{
  transform:scaleY(1);

  transform-origin:top;
}

.service-num{
  font-size:.78rem;

  color:var(--muted);

  min-width:24px;

  transition:
    color .4s ease;
}

.service:hover .service-num{
  color:var(--lime);
}

.service-name{
  flex:1;

  font-family:var(--display);

  font-weight:700;

  font-size:clamp(1.1rem,2vw,1.4rem);

  transition:
    transform .5s var(--ease);
}

.service:hover .service-name{
  transform:translateX(4px);
}

.service-arrow{
  color:var(--lime);

  font-size:1.2rem;

  opacity:0;

  transform:translate(-8px,8px);

  transition:
    opacity .4s ease,
    transform .5s var(--ease);
}

.service:hover .service-arrow{
  opacity:1;

  transform:translate(0,0);
}

@media(max-width:820px){
  .about-wrap{
    grid-template-columns:1fr;
  }
}

/* =========================================================
   CONTACT
========================================================= */

.contact{
  text-align:center;

  min-height:70vh;

  display:flex;

  flex-direction:column;

  justify-content:center;
}

.contact-label{
  font-size:.8rem;

  letter-spacing:.06em;

  text-transform:uppercase;

  color:var(--lime);

  margin-bottom:20px;
}

.contact h2{
  font-family:var(--display);

  font-weight:900;

  font-size:clamp(2.6rem,8vw,5.6rem);

  line-height:.95;

  overflow:hidden;
}

.contact-title > span{
  display:inline-block;

  transform:translateY(100%);

  transition:
    transform 1s var(--ease);
}

.contact-title.in-view > span{
  transform:translateY(0);
}

.contact-title.in-view .lime-text{
  transition-delay:.12s;
}

.lime-text{
  color:var(--lime);
}

.contact-row{
  margin-top:44px;

  display:flex;

  justify-content:space-between;

  align-items:center;

  border-top:1px solid var(--line);

  padding-top:24px;

  flex-wrap:wrap;

  gap:14px;
}

.contact-link{
  font-family:var(--display);

  font-weight:700;

  font-size:clamp(1.1rem,2.4vw,1.6rem);

  position:relative;

  transition:
    color .4s ease,
    transform .5s var(--ease);
}

.contact-link:hover{
  color:var(--lime);
}

.contact-link::after{
  content:"";

  position:absolute;

  left:0;
  bottom:-3px;

  width:100%;
  height:1.5px;

  background:var(--lime);

  transform:scaleX(0);

  transform-origin:right;

  transition:
    transform .5s var(--ease);
}

.contact-link:hover::after{
  transform:scaleX(1);

  transform-origin:left;
}

/* =========================================================
   SOCIAL ICONS
========================================================= */

.social-links{
  display:flex;

  align-items:center;

  justify-content:flex-end;

  gap:12px;
}

.social-links a{
  width:38px;
  height:38px;

  display:flex;

  align-items:center;
  justify-content:center;

  border:1px solid var(--line);

  color:var(--muted);

  transition:
    color .35s ease,
    border-color .35s ease,
    background .35s ease,
    transform .5s var(--ease);
}

.social-links svg{
  width:17px;
  height:17px;

  fill:currentColor;

  display:block;

  transition:
    transform .5s var(--ease);
}

.social-links a:hover{
  color:var(--lime);

  border-color:var(--lime);

  background:rgba(178,244,103,.06);

  transform:translateY(-7px) rotate(-4deg);
}

.social-links a:hover svg{
  transform:scale(1.12);
}

@media(max-width:640px){

  .contact-row{
    flex-direction:column;
    align-items:flex-start;
  }

  .social-links{
    width:100%;
    justify-content:flex-start;
  }

  .social-links a{
    width:36px;
    height:36px;
  }
}

/* =========================================================
   FRAME
========================================================= */

.frame{
  position:relative;
}

.corner{
  position:absolute;

  width:16px;
  height:16px;

  pointer-events:none;

  z-index:5;
}

.corner-tl{
  top:-1px;
  left:-1px;

  border-top:2px solid var(--lime);
  border-left:2px solid var(--lime);
}

.corner-tr{
  top:-1px;
  right:-1px;

  border-top:2px solid var(--lime);
  border-right:2px solid var(--lime);
}

.corner-bl{
  bottom:-1px;
  left:-1px;

  border-bottom:2px solid var(--lime);
  border-left:2px solid var(--lime);
}

.corner-br{
  bottom:-1px;
  right:-1px;

  border-bottom:2px solid var(--lime);
  border-right:2px solid var(--lime);
}

/* =========================================================
   REDUCED MOTION
========================================================= */

@media(prefers-reduced-motion:reduce){

  html{
    scroll-behavior:auto;
  }

  *,
  *::before,
  *::after{
    animation-duration:.01ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.01ms !important;
  }

  .cursor-dot,
  .cursor-label{
    display:none;
  }

  .reveal{
    opacity:1;
    transform:none;
  }

  .hero-word,
  .contact-title > span,
  .section-head h2 span{
    transform:none;
    opacity:1;
  }
}

@media (max-width: 768px) {
  .contact-row {
    flex-direction: column;
    align-items: center;
    text-align: center;
  }

  .contact-link {
    text-align: center;
    width: 100%;
  }

  .social-links {
    justify-content: center;
    width: 100%;
  }
}