/* ============ DESIGN TOKENS ============ */
:root{
  --re-navy:#21396A;
  --re-slate:#3B424F;
  --re-yellow:#D6AE01;
  --re-white:#FFFFFF;
  --re-black:#080B12;
  --re-navy-dark:#0A1224;
  --re-blue:#2F5EBB;
  --re-glow:rgba(214,174,1,.35);
  --re-white-soft:rgba(255,255,255,.72);

  --font-head:'Space Grotesk', sans-serif;
  --font-body:'Inter', sans-serif;
  --font-mono:'JetBrains Mono', monospace;

  --ease: cubic-bezier(.16,.84,.44,1);
}

*{box-sizing:border-box; margin:0; padding:0;}
html{scroll-behavior:auto;}
body{
  background:var(--re-black);
  color:var(--re-white);
  font-family:var(--font-body);
  overflow-x:hidden;
  line-height:1.6;
}
h1,h2,h3,h4{font-family:var(--font-head); font-weight:600; letter-spacing:-0.02em;}
a{color:inherit; text-decoration:none;}
ul{list-style:none;}
img,svg{display:block; max-width:100%;}
button{font-family:inherit; cursor:pointer; background:none; border:none; color:inherit;}
input,select,textarea{font-family:inherit;}

.container{max-width:1200px; margin:0 auto; padding:0 24px;}

.eyebrow{
  font-family:var(--font-mono);
  color:var(--re-yellow);
  font-size:.75rem;
  letter-spacing:.2em;
  text-transform:uppercase;
  margin-bottom:16px;
}
.section-title{
  font-size:clamp(1.8rem,4vw,2.8rem);
  margin-bottom:28px;
  max-width:720px;
}
.lead{color:var(--re-white-soft); max-width:560px; margin-bottom:24px;}
.lead.soft{font-style:italic;}
.lead.center{max-width:600px; margin-left:auto; margin-right:auto; text-align:center;}

.section{padding:120px 0; position:relative;}
.section-dark{background:linear-gradient(180deg, var(--re-navy-dark), #0d1527);}

/* ============ BUTTONS ============ */
.btn{
  display:inline-flex; align-items:center; gap:8px;
  padding:14px 28px; border-radius:40px;
  font-weight:600; font-size:.95rem;
  transition:transform .3s var(--ease), box-shadow .3s var(--ease), background .3s;
}
.btn-primary{
  background:var(--re-yellow); color:var(--re-black);
}
.btn-primary:hover{ transform:translateY(-2px); box-shadow:0 10px 30px var(--re-glow); }
.btn-ghost{
  border:1px solid rgba(255,255,255,.25); color:var(--re-white);
}
.btn-ghost:hover{ border-color:var(--re-yellow); color:var(--re-yellow); }

/* ============ LOADER ============ */
#loader{
  position:fixed; inset:0; z-index:9999;
  background:var(--re-navy-dark);
  display:flex; align-items:center; justify-content:center;
  transition:opacity .6s var(--ease), visibility .6s;
}
#loader.hidden{opacity:0; visibility:hidden; pointer-events:none;}
.loader-inner{text-align:center; font-family:var(--font-mono);}
.loader-logo{width:76px; height:76px; margin:0 auto 14px; object-fit:contain;}
.loader-mark{font-family:var(--font-head); font-size:2.5rem; color:var(--re-yellow); letter-spacing:.1em;}
.loader-sub{font-size:.7rem; letter-spacing:.3em; color:var(--re-white-soft); margin-bottom:24px;}
.loader-lines{display:flex; flex-direction:column; gap:6px; font-size:.75rem; color:var(--re-white-soft); min-width:260px;}
.loader-line{display:flex; justify-content:space-between; opacity:0; transform:translateY(6px);}
.loader-line .status{color:var(--re-yellow);}
.loader-bar{width:260px; height:2px; background:rgba(255,255,255,.1); margin:20px auto 8px; overflow:hidden;}
.loader-bar-fill{height:100%; width:0%; background:var(--re-yellow);}
.loader-percent{font-size:.75rem; color:var(--re-white-soft);}

/* ============ CURSOR ============ */
.cursor-ring, .cursor-dot{
  position:fixed; top:0; left:0; pointer-events:none; z-index:9998;
  border-radius:50%; transform:translate(-50%,-50%);
  display:none;
}
.cursor-ring{ width:36px; height:36px; border:1px solid var(--re-yellow); transition:width .25s, height .25s, border-color .25s;}
.cursor-dot{ width:6px; height:6px; background:var(--re-yellow); }
@media(hover:hover) and (pointer:fine){
  .cursor-ring, .cursor-dot{display:block;}
}
.cursor-ring.hovered{ width:70px; height:70px; background:rgba(214,174,1,.08); }

/* ============ NAV ============ */
.nav{
  position:fixed; top:0; left:0; right:0; z-index:500;
  transition:background .4s, backdrop-filter .4s, border-color .4s;
  border-bottom:1px solid transparent;
}
.nav.scrolled{
  background:rgba(8,11,18,.6);
  backdrop-filter:blur(20px);
  border-bottom:1px solid rgba(214,174,1,.2);
}
.nav-inner{
  max-width:1280px; margin:0 auto; padding:18px 24px;
  display:flex; align-items:center; justify-content:space-between; gap:24px;
}
.nav-logo{display:flex; align-items:center; gap:10px; font-family:var(--font-head); font-weight:700; letter-spacing:.05em;}
.brand-mark{width:34px; height:34px; object-fit:contain;}
.nav-links{display:flex; gap:28px; font-size:.9rem;}
.nav-links a{position:relative; color:var(--re-white-soft); transition:color .25s;}
.nav-links a:hover{color:var(--re-white);}
.nav-links a::after{content:'';position:absolute; left:0; bottom:-6px; width:0; height:1px; background:var(--re-yellow); transition:width .3s var(--ease);}
.nav-links a:hover::after{width:100%;}
.nav-cta{padding:10px 22px; font-size:.85rem;}
.menu-btn{display:none; width:32px; height:22px; position:relative;}
.menu-btn span{position:absolute; left:0; width:100%; height:2px; background:var(--re-white); transition:transform .3s, opacity .3s;}
.menu-btn span:first-child{top:0;}
.menu-btn span:last-child{bottom:0;}
.menu-btn.active span:first-child{transform:translateY(10px) rotate(45deg);}
.menu-btn.active span:last-child{transform:translateY(-10px) rotate(-45deg);}

/* ============ MOBILE MENU ============ */
.mobile-menu{
  position:fixed; inset:0; background:var(--re-navy-dark); z-index:400;
  display:flex; flex-direction:column; justify-content:center; padding:40px;
  transform:translateY(-100%); transition:transform .5s var(--ease);
}
.mobile-menu.active{transform:translateY(0);}
.mobile-menu nav{display:flex; flex-direction:column; gap:18px;}
.mobile-menu nav a{font-family:var(--font-head); font-size:2rem; color:var(--re-white-soft);}
.mobile-menu-footer{margin-top:40px; padding-top:20px; border-top:1px solid rgba(255,255,255,.15); color:var(--re-white-soft);}
.mobile-menu-footer a{color:var(--re-yellow); display:block; margin-top:6px;}

/* ============ HERO ============ */
.hero{
  position:relative; min-height:100vh; display:flex; align-items:center;
  overflow:hidden; padding-top:80px;
}
#heroCanvas{position:absolute; inset:0; width:100%; height:100%; z-index:0;}
.hero-grid-overlay{
  position:absolute; inset:0; z-index:1; pointer-events:none;
  background-image:linear-gradient(rgba(255,255,255,.03) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.03) 1px, transparent 1px);
  background-size:60px 60px;
  mask-image:radial-gradient(circle at 50% 40%, black, transparent 70%);
}
.hero-content{position:relative; z-index:2; max-width:900px; margin:0 auto; padding:0 24px; text-align:center;}
.hero-title{font-size:clamp(2.4rem,6.5vw,5rem); line-height:1.05; margin:20px 0 24px;}
.hero-title .line{display:block; overflow:hidden;}
.hero-title em{font-style:normal; color:var(--re-yellow);}
.hero-sub{color:var(--re-white-soft); max-width:560px; margin:0 auto 32px; font-size:1.05rem;}
.hero-cta{display:flex; gap:16px; justify-content:center; flex-wrap:wrap;}

.hero-status{
  position:absolute; bottom:32px; left:50%; transform:translateX(-50%);
  z-index:2; font-family:var(--font-mono); font-size:.72rem; color:var(--re-white-soft);
  text-align:center; letter-spacing:.05em; white-space:nowrap; overflow-x:auto; max-width:92vw;
}
.hero-status-title{letter-spacing:.3em; color:var(--re-yellow); margin-bottom:8px; font-size:.65rem;}
.hero-status-row{display:flex; gap:8px; align-items:center; justify-content:center;}
.status-dot{width:7px; height:7px; border-radius:50%; background:#4ade80; display:inline-block; animation:pulse 2s infinite;}
.status-sep{opacity:.3;}
@keyframes pulse{0%,100%{opacity:1;box-shadow:0 0 0 0 rgba(74,222,128,.5);}50%{opacity:.6;box-shadow:0 0 0 6px rgba(74,222,128,0);}}

.scroll-cue{position:absolute; bottom:90px; right:40px; z-index:2;}
.scroll-cue span{display:block; width:1px; height:50px; background:linear-gradient(var(--re-yellow), transparent); animation:scrollCue 2s infinite;}
@keyframes scrollCue{0%{transform:scaleY(0); transform-origin:top;}50%{transform:scaleY(1); transform-origin:top;}51%{transform-origin:bottom;}100%{transform:scaleY(0); transform-origin:bottom;}}

/* ============ WHAT WE BUILD ============ */
.build-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:24px;}
.build-card{
  background:rgba(255,255,255,.03); border:1px solid rgba(255,255,255,.08);
  border-radius:16px; padding:32px; transition:border-color .3s, transform .3s;
}
.build-card:hover{border-color:var(--re-yellow); transform:translateY(-6px);}
.build-index{font-family:var(--font-mono); color:var(--re-yellow); font-size:.8rem;}
.build-card h3{margin:12px 0 16px; font-size:1.3rem;}
.build-card li{color:var(--re-white-soft); padding:4px 0; font-size:.92rem; border-top:1px solid rgba(255,255,255,.06);}
.build-card li:first-child{border-top:none;}

/* ============ SERVICES GRID ============ */
.services-grid{display:grid; grid-template-columns:repeat(2,1fr); gap:1px; background:rgba(255,255,255,.08); border:1px solid rgba(255,255,255,.08);}
.service-card{
  background:var(--re-navy-dark); padding:40px 32px; position:relative; min-height:220px;
  transition:background .4s, transform .3s;
}
.service-card:hover, .service-card:focus-visible{background:#101c33; transform:translateY(-4px);}
.service-index{font-family:var(--font-mono); color:var(--re-yellow); font-size:.8rem;}
.service-card i{width:28px;height:28px;color:var(--re-yellow); margin:16px 0;}
.service-card h3{font-size:1.25rem; margin-bottom:10px;}
.service-card p{color:var(--re-white-soft); font-size:.9rem;}

/* ============ CONSTELLATION ============ */
.constellation{position:relative; max-width:800px; margin:0 auto; aspect-ratio:8/5;}
.constellation-lines{position:absolute; inset:0; width:100%; height:100%;}
.constellation-lines line{stroke:rgba(214,174,1,.35); stroke-width:1; stroke-dasharray:6 6; animation:dash 6s linear infinite;}
@keyframes dash{to{stroke-dashoffset:-120;}}
.node{
  position:absolute; transform:translate(-50%,-50%);
  background:rgba(255,255,255,.04); border:1px solid rgba(255,255,255,.15);
  padding:10px 18px; border-radius:30px; font-size:.8rem; font-family:var(--font-mono);
  color:var(--re-white-soft); white-space:nowrap;
}
.node-center{
  left:50%; top:50%; background:var(--re-yellow); color:var(--re-black); font-weight:700;
  padding:16px 26px; border:none; box-shadow:0 0 40px var(--re-glow);
}

/* ============ WORK ============ */
.work-list{display:flex; flex-direction:column; gap:60px;}
.work-panel{display:grid; grid-template-columns:60px 1fr 1fr; gap:32px; align-items:center;}
.work-num{font-family:var(--font-mono); color:var(--re-yellow); font-size:1.2rem;}
.work-visual{
  aspect-ratio:4/3; border-radius:16px; display:flex; align-items:center; justify-content:center;
  background:linear-gradient(135deg, var(--re-navy), var(--re-slate));
}
.work-visual i{width:64px; height:64px; color:var(--re-yellow); opacity:.8;}
.wv-clockkit{background:linear-gradient(135deg,#21396A,#2F5EBB);}
.wv-rev{background:linear-gradient(135deg,#3B424F,#21396A);}
.wv-chatre{background:linear-gradient(135deg,#0A1224,#21396A);}
.wv-webstudio{background:linear-gradient(135deg,#21396A,#3B424F);}
.work-info h3{font-size:1.8rem; margin-bottom:4px;}
.work-cat{color:var(--re-yellow); font-family:var(--font-mono); font-size:.8rem; margin-bottom:14px;}
.work-info p{color:var(--re-white-soft); margin-bottom:16px;}
.work-tags{display:flex; gap:8px; flex-wrap:wrap; margin-bottom:16px;}
.work-tags span{font-family:var(--font-mono); font-size:.7rem; border:1px solid rgba(255,255,255,.2); padding:4px 10px; border-radius:20px; color:var(--re-white-soft);}
.work-link{color:var(--re-yellow); font-weight:600;}

/* ============ TIMELINE ============ */
.timeline{position:relative; padding-top:40px;}
.timeline-line{position:relative; height:3px; background:rgba(255,255,255,.1); margin-bottom:50px; border-radius:3px; overflow:hidden;}
.timeline-line-fill{height:100%; width:0%; background:var(--re-yellow); box-shadow:0 0 12px var(--re-glow);}
.timeline-steps{display:grid; grid-template-columns:repeat(7,1fr); gap:16px;}
.t-step{text-align:left;}
.t-num{font-family:var(--font-mono); color:var(--re-yellow); font-size:.9rem;}
.t-step h4{margin:10px 0 6px; font-size:1.05rem;}
.t-step p{color:var(--re-white-soft); font-size:.82rem;}

/* ============ ABOUT ============ */
.about-grid{display:grid; grid-template-columns:1.1fr .9fr; gap:60px; align-items:center;}
.flow-diagram{display:flex; flex-direction:column; align-items:center; gap:10px;}
.flow-step{
  width:100%; max-width:260px; text-align:center; padding:16px; border:1px solid rgba(255,255,255,.15);
  border-radius:10px; font-family:var(--font-mono); letter-spacing:.1em; color:var(--re-white-soft);
}
.flow-final{background:var(--re-yellow); color:var(--re-black); border:none; font-weight:700;}
.flow-arrow{color:var(--re-yellow);}

/* ============ AI GRID ============ */
.ai-grid{display:grid; grid-template-columns:repeat(4,1fr); gap:20px;}
.ai-item{
  display:flex; flex-direction:column; align-items:center; gap:12px; text-align:center;
  padding:28px 16px; border:1px solid rgba(255,255,255,.08); border-radius:14px;
  transition:border-color .3s, transform .3s;
}
.ai-item:hover{border-color:var(--re-yellow); transform:translateY(-4px);}
.ai-item i{width:30px; height:30px; color:var(--re-yellow);}
.ai-item span{font-size:.85rem; color:var(--re-white-soft);}

/* ============ WHY ============ */
.why-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:24px;}
.why-card{padding:28px; border-left:2px solid var(--re-yellow); background:rgba(255,255,255,.02);}
.why-card h3{margin-bottom:8px; font-size:1.1rem;}
.why-card p{color:var(--re-white-soft); font-size:.9rem;}

/* ============ PRICING ============ */
.pricing-grid{display:grid; grid-template-columns:1fr 1fr; gap:50px; align-items:center;}
.price-list{display:flex; flex-direction:column; gap:14px;}
.price-list li{display:flex; justify-content:space-between; padding:16px 20px; border:1px solid rgba(255,255,255,.1); border-radius:10px; font-family:var(--font-mono); font-size:.9rem;}
.price-list strong{color:var(--re-yellow);}

/* ============ CTA ============ */
.cta-section{padding:140px 0; text-align:center; background:radial-gradient(circle at 50% 20%, rgba(214,174,1,.08), transparent 60%);}
.cta-section h2{font-size:clamp(2rem,5vw,3.4rem); margin-bottom:16px;}
.cta-section p{color:var(--re-white-soft); margin-bottom:32px; font-size:1.1rem;}

/* ============ CONTACT ============ */
.contact-grid{display:grid; grid-template-columns:.9fr 1.1fr; gap:60px;}
.contact-meta{display:flex; flex-direction:column; gap:14px; margin-top:24px;}
.contact-meta a{display:flex; align-items:center; gap:10px; color:var(--re-white-soft);}
.contact-meta i{width:18px; height:18px; color:var(--re-yellow);}
.contact-form{display:flex; flex-direction:column; gap:18px;}
.contact-form .honeypot{position:absolute; left:-9999px;}
.form-row{display:grid; grid-template-columns:1fr 1fr; gap:18px;}
.contact-form label{display:flex; flex-direction:column; gap:6px; font-size:.82rem; color:var(--re-white-soft);}
.contact-form input, .contact-form select, .contact-form textarea{
  background:rgba(255,255,255,.04); border:1px solid rgba(255,255,255,.15); border-radius:8px;
  padding:12px 14px; color:var(--re-white); font-size:.92rem;
}
.contact-form input:focus, .contact-form select:focus, .contact-form textarea:focus{outline:none; border-color:var(--re-yellow);}
.contact-form button{align-self:flex-start; margin-top:6px;}
.form-note{font-size:.85rem; color:var(--re-yellow);}

/* ============ FOOTER ============ */
.footer{background:#05070d; padding:80px 0 0; position:relative; overflow:hidden;}
.footer-grid{display:grid; grid-template-columns:1.4fr 1fr 1fr 1fr; gap:40px; padding-bottom:60px;}
.footer-logo-wrap .footer-logo{width:136px; height:136px; border-radius:16px; margin-bottom:18px; box-shadow:0 12px 40px rgba(0,0,0,.45);}
.footer p{color:var(--re-white-soft); font-size:.9rem;}
.footer h4{font-size:.85rem; letter-spacing:.1em; color:var(--re-white-soft); margin-bottom:16px; font-family:var(--font-mono);}
.footer a{display:block; color:var(--re-white-soft); padding:6px 0; font-size:.9rem; transition:color .25s;}
.footer a:hover{color:var(--re-yellow);}
.footer-giant{
  font-family:var(--font-head); font-weight:700; text-align:center;
  font-size:clamp(4rem,18vw,14rem); line-height:1;
  background:linear-gradient(90deg, var(--re-yellow), #EEDF99, var(--re-yellow));
  background-size:200% auto;
  -webkit-background-clip:text; background-clip:text; color:transparent;
  animation:shine 6s linear infinite;
  letter-spacing:.02em; user-select:none;
}
@keyframes shine{to{background-position:200% center;}}
.footer-bottom{
  display:flex; justify-content:space-between; padding:24px; max-width:1200px; margin:0 auto;
  font-size:.75rem; color:var(--re-white-soft); font-family:var(--font-mono); border-top:1px solid rgba(255,255,255,.06);
}

/* ============ WHATSAPP FLOAT ============ */
.whatsapp-float{
  position:fixed; bottom:24px; right:24px; z-index:300;
  width:56px; height:56px; border-radius:50%; background:#25D366;
  display:flex; align-items:center; justify-content:center; color:#fff;
  box-shadow:0 10px 30px rgba(0,0,0,.4); transition:transform .3s;
}
.whatsapp-float:hover{transform:scale(1.08);}

/* ============ SCROLL REVEAL BASE ============ */
[data-reveal]{opacity:0; transform:translateY(30px);}

/* ============ RESPONSIVE ============ */
@media(max-width:1024px){
  .build-grid{grid-template-columns:1fr; }
  .services-grid{grid-template-columns:1fr;}
  .about-grid, .pricing-grid, .contact-grid{grid-template-columns:1fr;}
  .work-panel{grid-template-columns:1fr; text-align:left;}
  .timeline-steps{grid-template-columns:repeat(4,1fr); row-gap:30px;}
  .ai-grid{grid-template-columns:repeat(2,1fr);}
  .why-grid{grid-template-columns:1fr 1fr;}
  .footer-grid{grid-template-columns:1fr 1fr;}
}
@media(max-width:768px){
  .nav-links, .nav-cta{display:none;}
  .menu-btn{display:block;}
  .form-row{grid-template-columns:1fr;}
  .timeline-steps{grid-template-columns:repeat(2,1fr);}
  .why-grid{grid-template-columns:1fr;}
  .footer-grid{grid-template-columns:1fr;}
}

@media(prefers-reduced-motion: reduce){
  *{animation-duration:.001ms !important; animation-iteration-count:1 !important; transition-duration:.001ms !important; scroll-behavior:auto !important;}
}
