:root{
  --void:#07070D;
  --surface:#10101A;
  --line:rgba(255,255,255,.08);
  --electric:#4361FF;
  --pulse:#F03DBB;
  --text:#EDEDF2;
  --muted:#9A9AAE;
  --grad:linear-gradient(90deg,var(--electric),var(--pulse));
}

/*======================================
// --//-->  BASE
=====================================*/

*{
  -webkit-tap-highlight-color:transparent;
}

body{
  background-color:var(--void);
  color:var(--muted);
  font-family:'Schibsted Grotesk',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
  font-size:1.05rem;
  line-height:1.65;
  overflow-x:hidden;
}

h1,h2,h3,h4,h5,h6{
  color:var(--text);
  font-family:'Space Grotesk','Schibsted Grotesk',sans-serif;
}

a{
  color:var(--text);
  transition:color .3s ease;
}

a:hover{
  color:var(--pulse);
  text-decoration:none;
}

:focus-visible{
  outline:2px solid var(--electric);
  outline-offset:3px;
  border-radius:2px;
}

::selection{
  background:var(--pulse);
  color:#fff;
}

.section{
  padding:6.5rem 0;
  position:relative;
}

.section-head{
  margin-bottom:3.5rem;
}

.section-title{
  font-size:clamp(2.2rem,5vw,3.1rem);
  font-weight:700;
  letter-spacing:-.02em;
  line-height:1.05;
  margin-bottom:0;
}

.section-title::after{
  content:"";
  display:block;
  width:52px;
  height:4px;
  background:var(--grad);
  margin-top:1.1rem;
  border-radius:2px;
}

.section-sub{
  color:var(--muted);
  font-size:1.15rem;
  margin-top:1.25rem;
  margin-bottom:0;
  max-width:55ch;
}

/*======================================
// --//-->  NAVBAR
=====================================*/

.navbar{
  padding:1.4rem 0;
  transition:background .4s ease,box-shadow .4s ease,padding .4s ease;
}

.navbar .nav-link{
  color:var(--muted);
  font-weight:500;
  font-size:.98rem;
  padding:.35rem 0 !important;
  margin-left:1.75rem;
  position:relative;
}

.navbar .nav-link::before{
  content:"";
  position:absolute;
  width:0;
  bottom:-4px;
  left:0;
  height:2px;
  background:var(--grad);
  transition:width .35s ease;
}

.navbar .nav-link:hover,
.navbar .nav-link:focus{
  color:#fff;
}

.navbar .nav-link:hover::before,
.navbar .nav-link:focus::before{
  width:100%;
}

.navbar.navbar-reduce{
  background:rgba(7,7,13,.88);
  backdrop-filter:blur(14px);
  -webkit-backdrop-filter:blur(14px);
  box-shadow:0 1px 0 var(--line);
  padding:.85rem 0;
}

.navbar .navbar-toggler{
  border:none;
  padding:.25rem .4rem;
  margin-left:auto;
}

.navbar .navbar-toggler:focus,
.navbar .navbar-toggler:active{
  outline:0;
}

.navbar .navbar-toggler span{
  display:block;
  background-color:#fff;
  height:2px;
  width:24px;
  margin:5px 0;
  transform:rotate(0deg);
  left:0;
  opacity:1;
  transition:transform .35s ease,opacity .35s ease,height .35s ease;
}

.navbar .navbar-toggler span:nth-child(1),
.navbar .navbar-toggler span:nth-child(3){
  transition:transform .35s ease;
}

.navbar .navbar-toggler:not(.collapsed) span:nth-child(1){
  position:absolute;
  left:6px;
  top:9px;
  transform:rotate(135deg);
}

.navbar .navbar-toggler:not(.collapsed) span:nth-child(2){
  height:0;
  opacity:0;
}

.navbar .navbar-toggler:not(.collapsed) span:nth-child(3){
  position:absolute;
  left:6px;
  top:9px;
  transform:rotate(-135deg);
}

/* Mobile menu panel */
@media (max-width:767.98px){
  .navbar .navbar-collapse{
    background:rgba(7,7,13,.97);
    border:1px solid var(--line);
    border-radius:.75rem;
    margin-top:.9rem;
    padding:1rem 1.25rem;
    box-shadow:0 20px 50px rgba(0,0,0,.5);
  }
  .navbar .navbar-nav{
    align-items:flex-start;
  }
  .navbar .nav-link{
    margin-left:0;
    padding:.6rem 0 !important;
    font-size:1.05rem;
  }
}

/*======================================
// --//-->  HERO
=====================================*/

.hero{
  position:relative;
  min-height:100vh;
  min-height:100svh;
  display:flex;
  align-items:center;
  padding:8rem 0 6rem;
  overflow:hidden;
  background:var(--void);
}

.hero .container{
  position:relative;
  z-index:2;
}

.hero-grid{
  position:absolute;
  inset:0;
  background-image:
    linear-gradient(var(--line) 1px,transparent 1px),
    linear-gradient(90deg,var(--line) 1px,transparent 1px);
  background-size:64px 64px;
  -webkit-mask-image:radial-gradient(ellipse at 30% 40%,#000 25%,transparent 75%);
  mask-image:radial-gradient(ellipse at 30% 40%,#000 25%,transparent 75%);
  pointer-events:none;
}

.hero-glow{
  position:absolute;
  width:55vmax;
  height:55vmax;
  border-radius:50%;
  filter:blur(90px);
  opacity:.3;
  pointer-events:none;
}

.hero-glow-a{
  background:var(--electric);
  top:-20%;
  left:-12%;
  animation:drift-a 16s ease-in-out infinite alternate;
}

.hero-glow-b{
  background:var(--pulse);
  bottom:-25%;
  right:-12%;
  animation:drift-b 20s ease-in-out infinite alternate;
}

@keyframes drift-a{
  to{transform:translate(6%,8%) scale(1.08);}
}

@keyframes drift-b{
  to{transform:translate(-6%,-6%) scale(1.1);}
}

.hero-title{
  color:#fff;
  font-weight:700;
  font-size:clamp(3.4rem,11vw,7.5rem);
  line-height:.95;
  letter-spacing:-.03em;
  margin-bottom:1.75rem;
}

.hero-sub{
  font-size:clamp(1.15rem,2.6vw,1.7rem);
  font-weight:500;
  color:var(--muted);
  min-height:2.6em;
  margin-bottom:2.5rem;
}

.hero-sub .text-slider{
  background:var(--grad);
  -webkit-background-clip:text;
  background-clip:text;
  color:transparent;
  font-weight:600;
}

.hero-sub .typed-cursor{
  color:var(--pulse);
}

.text-slider-items{
  display:none;
}

.hero-actions{
  display:flex;
  flex-wrap:wrap;
  gap:1rem;
}

.btn-prim,
.btn-ghost{
  display:inline-block;
  padding:.95rem 1.9rem;
  font-size:1.02rem;
  font-weight:600;
  border-radius:.55rem;
  text-align:center;
  transition:transform .3s ease,box-shadow .3s ease,background .3s ease,border-color .3s ease;
}

.btn-prim{
  background:var(--grad);
  color:#fff;
  box-shadow:0 12px 35px rgba(240,61,187,.28);
}

.btn-prim:hover{
  color:#fff;
  transform:translateY(-2px);
  box-shadow:0 16px 40px rgba(240,61,187,.4);
}

.btn-ghost{
  border:1px solid var(--line);
  color:var(--text);
  background:rgba(255,255,255,.03);
}

.btn-ghost:hover{
  color:#fff;
  border-color:rgba(67,97,255,.6);
  background:rgba(67,97,255,.1);
  transform:translateY(-2px);
}

/*======================================
// --//-->  ABOUT
=====================================*/

.about{
  background:var(--void);
}

.about-grid{
  display:grid;
  grid-template-columns:minmax(280px,380px) 1fr;
  gap:3.5rem;
  align-items:start;
}

.photo-frame{
  margin:0;
  position:relative;
  border-radius:.85rem;
  overflow:hidden;
  border:1px solid var(--line);
  box-shadow:0 0 60px rgba(67,97,255,.22);
}

.photo-frame img{
  display:block;
  width:100%;
  height:auto;
}

.spec{
  display:grid;
  grid-template-columns:auto 1fr;
  gap:.7rem 1.5rem;
  margin:1.75rem 0 0;
  padding-top:1.5rem;
  border-top:1px solid var(--line);
}

.spec dt{
  color:var(--muted);
  font-weight:400;
  font-size:.95rem;
}

.spec dd{
  margin:0;
  color:var(--text);
  font-size:.98rem;
}

.spec a{
  color:var(--text);
  border-bottom:1px solid rgba(255,255,255,.2);
}

.spec a:hover{
  color:var(--pulse);
  border-color:var(--pulse);
}

.about-body .lead{
  color:var(--muted);
  font-size:1.1rem;
  line-height:1.75;
  margin-bottom:1.4rem;
  max-width:65ch;
}

.about-body .lead:first-child{
  color:var(--text);
}

.stack{
  margin-top:2.75rem;
  display:grid;
  gap:1.75rem;
}

.stack-label{
  font-size:.95rem;
  font-weight:600;
  color:var(--muted);
  margin-bottom:.85rem;
}

.chips{
  list-style:none;
  padding:0;
  margin:0;
  display:flex;
  flex-wrap:wrap;
  gap:.55rem;
}

.chips li{
  border:1px solid var(--line);
  background:rgba(255,255,255,.03);
  color:var(--text);
  font-size:.92rem;
  padding:.4rem .95rem;
  border-radius:999px;
  transition:border-color .3s ease,background .3s ease;
}

.chips li:hover{
  border-color:rgba(240,61,187,.5);
  background:rgba(240,61,187,.08);
}

/*======================================
// --//-->  SERVICES
=====================================*/

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

.service-list{
  list-style:none;
  padding:0;
  margin:0;
  border-bottom:1px solid var(--line);
}

.service-row{
  display:grid;
  grid-template-columns:4.5rem minmax(200px,17rem) 1fr;
  gap:2rem;
  align-items:center;
  padding:2rem 1rem;
  border-top:1px solid var(--line);
  position:relative;
  transition:background .35s ease,padding-left .35s ease;
}

.service-row::before{
  content:"";
  position:absolute;
  left:0;
  top:0;
  bottom:0;
  width:3px;
  background:var(--grad);
  transform:scaleY(0);
  transform-origin:center;
  transition:transform .35s ease;
}

.service-row:hover{
  background:linear-gradient(90deg,rgba(67,97,255,.1),transparent 60%);
  padding-left:1.6rem;
}

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

.service-ico{
  font-size:2rem;
  color:var(--electric);
  line-height:1;
  transition:color .35s ease,text-shadow .35s ease;
}

.service-row:hover .service-ico{
  color:var(--pulse);
  text-shadow:0 0 25px rgba(240,61,187,.65);
}

.service-name{
  font-size:1.55rem;
  font-weight:700;
  letter-spacing:-.01em;
  margin:0;
}

.service-desc{
  color:var(--muted);
  margin:0;
  max-width:58ch;
}

/*======================================
// --//-->  TECH STRIP
=====================================*/

.tech-strip{
  background:var(--void);
  border-bottom:1px solid var(--line);
  padding:1.4rem 0;
  overflow:hidden;
}

.marquee{
  overflow:hidden;
  width:100%;
}

.marquee-track{
  display:flex;
  width:max-content;
  animation:marquee 32s linear infinite;
}

.marquee:hover .marquee-track{
  animation-play-state:paused;
}

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

.tech-item{
  font-family:'JetBrains Mono',monospace;
  font-size:1rem;
  font-weight:500;
  color:var(--muted);
  padding:0 2.75rem;
  position:relative;
  white-space:nowrap;
}

.tech-item::after{
  content:"·";
  position:absolute;
  right:0;
  color:var(--pulse);
  opacity:.55;
}

/*======================================
// --//-->  PROCESS
=====================================*/

.process{
  background:var(--void);
}

.process-grid{
  list-style:none;
  padding:0;
  margin:0;
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:2.5rem;
  counter-reset:step;
}

.process-step{
  border-top:2px solid var(--line);
  padding-top:1.6rem;
  position:relative;
}

.process-step::before{
  content:"";
  position:absolute;
  top:-2px;
  left:0;
  width:3rem;
  height:2px;
  background:var(--grad);
}

.step-num{
  display:block;
  font-family:'Space Grotesk',sans-serif;
  font-weight:700;
  font-size:2.4rem;
  letter-spacing:-.02em;
  line-height:1;
  margin-bottom:1rem;
  background:var(--grad);
  -webkit-background-clip:text;
  background-clip:text;
  color:transparent;
}

.process-step h3{
  font-size:1.25rem;
  font-weight:700;
  margin-bottom:.6rem;
}

.process-step p{
  color:var(--muted);
  font-size:.98rem;
  margin:0;
  line-height:1.6;
}

/*======================================
// --//-->  FOOTER
=====================================*/

.site-footer{
  background:var(--surface);
  border-top:1px solid var(--line);
  padding:4.5rem 0 3.5rem;
}

.footer-grid{
  display:grid;
  grid-template-columns:1.4fr 1fr 1fr;
  gap:3rem;
}

.footer-name{
  font-family:'Space Grotesk',sans-serif;
  font-weight:700;
  font-size:1.5rem;
  color:var(--text);
  letter-spacing:-.01em;
  margin-bottom:.6rem;
}

.footer-tag{
  color:var(--muted);
  font-size:.98rem;
  max-width:34ch;
  margin-bottom:1.5rem;
}

.footer-heading{
  font-size:.98rem;
  font-weight:600;
  color:var(--text);
  margin-bottom:1.1rem;
}

.footer-links{
  list-style:none;
  padding:0;
  margin:0;
  display:grid;
  gap:.6rem;
}

.footer-links a,
.footer-links li{
  color:var(--muted);
  font-size:.98rem;
}

.footer-links a:hover{
  color:var(--pulse);
}

.socials ul{
  list-style:none;
  padding:0;
  margin:0;
  display:flex;
  gap:.75rem;
}

.socials .ico-circle{
  display:flex;
  align-items:center;
  justify-content:center;
  height:42px;
  width:42px;
  font-size:1.25rem;
  border-radius:50%;
  border:1px solid var(--line);
  color:var(--muted);
  background:rgba(255,255,255,.03);
  transition:border-color .3s ease,color .3s ease,background .3s ease,box-shadow .3s ease;
}

.socials a:hover .ico-circle{
  color:#fff;
  border-color:rgba(240,61,187,.6);
  background:rgba(240,61,187,.12);
  box-shadow:0 0 20px rgba(240,61,187,.25);
}

/*======================================
// --//-->  FLOATING BUTTON
=====================================*/

.btn-whatsapp{
  position:fixed;
  right:20px;
  bottom:20px;
  display:flex;
  align-items:center;
  justify-content:center;
  width:56px;
  height:56px;
  border-radius:50%;
  background:#25D366;
  color:#fff;
  z-index:15;
  box-shadow:0 10px 30px rgba(37,211,102,.4),0 4px 12px rgba(0,0,0,.25);
  transition:transform .3s ease,box-shadow .3s ease,background .3s ease;
}

.btn-whatsapp i{
  color:#fff;
  font-size:30px;
  line-height:1;
}

.btn-whatsapp:hover{
  color:#fff;
  background:#1EBE5A;
  transform:translateY(-3px) scale(1.05);
  box-shadow:0 16px 38px rgba(37,211,102,.5),0 6px 16px rgba(0,0,0,.3);
}

@media (min-width:768px){
  .btn-whatsapp{
    width:60px;
    height:60px;
  }
  .btn-whatsapp i{
    font-size:32px;
  }
}

/*======================================
// --//-->  PRELOADER
=====================================*/

#preloader{
  position:fixed;
  inset:0;
  z-index:9999;
  overflow:hidden;
  background:var(--void);
}

#preloader:before{
  content:"";
  position:fixed;
  top:calc(50% - 30px);
  left:calc(50% - 30px);
  border:4px solid rgba(255,255,255,.08);
  border-top:4px solid var(--pulse);
  border-radius:50%;
  width:60px;
  height:60px;
  animation:animate-preloader 1s linear infinite;
}

@keyframes animate-preloader{
  0%{transform:rotate(0deg);}
  100%{transform:rotate(360deg);}
}

/*======================================
// --//-->  REDUCED MOTION
=====================================*/

@media (prefers-reduced-motion:reduce){
  .hero-glow-a,
  .hero-glow-b{
    animation:none;
  }
  .marquee-track{
    animation:none;
    flex-wrap:wrap;
    width:100%;
    justify-content:center;
  }
  .marquee-track .tech-item[aria-hidden="true"]{
    display:none;
  }
  #preloader:before{
    animation:none;
  }
  .btn-prim:hover,
  .btn-ghost:hover,
  .btn-whatsapp:hover{
    transform:none;
  }
}
