/* ==========================================================================
   CyberVayu — Premium Enhancement Layer
   Loaded after main-design.css. Overrides/extends the base design system
   with agency-grade motion, lighting and hierarchy refinements.
   Nothing here duplicates a rule from main-design.css — every block either
   extends an existing selector with new properties or introduces a new
   component (glow dividers, cursor spotlight, magnetic buttons, etc).
   ========================================================================== */

:root{
  --glow-soft:0 0 40px rgba(229,9,20,.18);
  --glow-strong:0 0 60px rgba(255,59,71,.35);
  --shadow-lift:0 30px 70px -30px rgba(0,0,0,.65);
  --duration-fast:.25s;
  --duration-med:.45s;
  --duration-slow:.8s;
  --ease-premium:cubic-bezier(.16,1,.3,1);
}

/* ---------- Typographic refinement ---------- */
h1{line-height:1.06;}
h2{line-height:1.12;}
.lead{font-weight:400;letter-spacing:-.005em;}
.eyebrow{font-weight:600;}

/* ---------- Focus states (accessibility, styled to match brand) ---------- */
a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{
  outline:2px solid var(--red-bright);
  outline-offset:3px;
  border-radius:4px;
}

/* ---------- Cursor spotlight (desktop only, ambient mouse lighting) ---------- */
.cv-spotlight{
  position:fixed;top:0;left:0;width:520px;height:520px;
  border-radius:50%;pointer-events:none;z-index:2;
  background:radial-gradient(circle, rgba(229,9,20,.10) 0%, rgba(229,9,20,.04) 40%, transparent 72%);
  transform:translate(-50%,-50%);
  will-change:transform;
  mix-blend-mode:screen;
}
@media (max-width:900px),(hover:none){.cv-spotlight{display:none;}}

/* ---------- Premium buttons: shine sweep + magnetic-ready transform ---------- */
.btn{
  position:relative;overflow:hidden;isolation:isolate;
  transition:transform var(--duration-fast) var(--ease-premium),
             box-shadow var(--duration-med) var(--ease-premium),
             background var(--duration-fast) var(--ease-premium),
             border-color var(--duration-fast) var(--ease-premium);
}
.btn::before{
  content:"";position:absolute;inset:0;z-index:-1;
  background:linear-gradient(115deg,transparent 30%,rgba(255,255,255,.22) 50%,transparent 70%);
  transform:translateX(-120%);
  transition:transform .7s var(--ease-premium);
}
.btn:hover::before{transform:translateX(120%);}
.btn-primary{box-shadow:0 14px 34px -14px rgba(229,9,20,.55);}
.btn-primary:hover{box-shadow:0 0 0 1px var(--red-bright),0 20px 46px -12px rgba(229,9,20,.6),var(--glow-strong);}
.btn-ghost:hover{box-shadow:0 0 0 1px rgba(255,59,71,.4),var(--glow-soft);background:rgba(255,59,71,.04);}
.btn[data-magnetic]{will-change:transform;}

/* ---------- Premium cards: animated gradient edge + glass depth ---------- */
.facet{
  background:linear-gradient(155deg,rgba(255,255,255,.02),transparent 40%),var(--surface);
  transition:border-color var(--duration-med) var(--ease-premium),
             transform var(--duration-med) var(--ease-premium),
             box-shadow var(--duration-med) var(--ease-premium);
}
.facet::after{
  content:"";position:absolute;inset:0;border-radius:inherit;padding:1px;
  background:conic-gradient(from 180deg at 50% 50%, transparent, rgba(255,59,71,0), transparent);
  -webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);
  -webkit-mask-composite:xor;mask-composite:exclude;
  opacity:0;transition:opacity var(--duration-med) var(--ease-premium);
  pointer-events:none;
}
.facet:hover{
  transform:translateY(-5px);
  box-shadow:var(--shadow-lift),0 0 50px -18px rgba(229,9,20,.4);
}
.facet:hover::after{
  opacity:1;
  background:conic-gradient(from 180deg at 50% 50%, transparent 0%, rgba(255,59,71,.9) 8%, transparent 22%);
  animation:cvEdgeSpin 2.6s linear infinite;
}
@keyframes cvEdgeSpin{to{background:conic-gradient(from 540deg at 50% 50%, transparent 0%, rgba(255,59,71,.9) 8%, transparent 22%);}}

/* ---------- Glow divider (replaces harsh 1px borders between sections where used) ---------- */
.glow-divider{
  height:1px;border:none;margin:0;position:relative;
  background:linear-gradient(90deg,transparent,var(--border-strong) 20%,var(--border-strong) 80%,transparent);
}
.glow-divider::before{
  content:"";position:absolute;left:50%;top:50%;width:180px;height:2px;
  transform:translate(-50%,-50%);
  background:linear-gradient(90deg,transparent,var(--red-bright),transparent);
  filter:blur(3px);opacity:.8;
}

/* ---------- Enhanced reveal (blur-in, replaces flat fade in main.js base) ---------- */
.reveal{
  filter:blur(6px);
  transition:opacity var(--duration-slow) var(--ease-premium),
             transform var(--duration-slow) var(--ease-premium),
             filter var(--duration-slow) var(--ease-premium);
}
.reveal.in{filter:blur(0);}

/* When JS successfully attaches GSAP scroll-parallax to a .neon-coil element,
   it adds .gsap-driven so the CSS keyframe animation (which also animates
   transform) steps aside instead of fighting GSAP for the same property.
   Elements without JS/GSAP keep the CSS drift as a static-page fallback. */
.neon-coil.gsap-driven{animation:none;}

/* ---------- Hero refinements ---------- */
.hero-orb{animation:cvOrbBreathe 8s ease-in-out infinite;}
@keyframes cvOrbBreathe{
  0%,100%{opacity:1;transform:translate(-50%,-52%) scale(1);}
  50%{opacity:.85;transform:translate(-50%,-52%) scale(1.04);}
}
.eyebrow{position:relative;}
.stat-pill{transition:transform var(--duration-fast) var(--ease-premium),border-color var(--duration-fast) var(--ease-premium);}
.stat-pill:hover{transform:translateY(-2px);border-color:rgba(255,59,71,.4);}

/* ---------- Magnetic hover lift for mockup floats ---------- */
.mockup-float{transition:transform var(--duration-med) var(--ease-premium);}
.mockup-panel:hover .mockup-float.top-right{transform:translateY(-4px);}
.mockup-panel:hover .mockup-float.mid-left{transform:translateY(4px);}

/* ---------- Nav polish ---------- */
.site-header{transition:background var(--duration-med) var(--ease-premium),box-shadow var(--duration-med) var(--ease-premium);}
.site-header.scrolled{box-shadow:0 1px 0 rgba(255,59,71,.12),0 20px 40px -20px rgba(0,0,0,.6);}

/* ---------- Responsive refinement pass (fills gaps beyond the base 768/860/1150 breakpoints) ---------- */
@media (max-width:1440px){
  .container{max-width:1120px;}
}
@media (max-width:1200px){
  .hero .neon-coil{width:640px;height:440px;right:-140px;}
}
@media (max-width:992px){
  section{padding:84px 0;}
  .grid-4{grid-template-columns:repeat(2,1fr);}
  .spotlight{padding:38px;}
}
@media (max-width:600px){
  .container{padding:0 18px;}
  h1{letter-spacing:-.01em;}
  .btn{padding:14px 24px;font-size:.76rem;}
  .stat-pill-row{gap:10px;}
  .stat-pill{padding:8px 14px;}
  .facet:hover{transform:none;}
}
@media (max-width:400px){
  .hero-cta{flex-direction:column;align-items:stretch;}
  .hero-cta .btn{justify-content:center;}
}

/* ---------- Image slots ----------
   .outcome-media, .shot-media and .mockup-panel currently hold abstract
   gradient + icon placeholders standing in for real photography. Marked
   clearly here as "drop an image in" slots — a dashed frame + corner hint —
   so it's obvious where to add real photos (via the block editor, Elementor,
   or by replacing the placeholder markup with an <img> tag) without needing
   to touch every individual card in the templates. */
.outcome-media,.shot-media,.mockup-panel{
  border:1px dashed var(--border-strong);
  position:relative;
}
.outcome-media::after,.shot-media::after,.mockup-panel::after{
  content:"+ Add Image";
  position:absolute;bottom:12px;right:14px;z-index:2;
  font-family:var(--font-mono);font-size:.62rem;letter-spacing:.08em;text-transform:uppercase;
  color:var(--grey-dim);background:rgba(11,11,11,.55);padding:5px 10px;border-radius:999px;
  border:1px solid var(--border);pointer-events:none;
  opacity:0;transition:opacity var(--duration-fast) var(--ease-premium);
}
.outcome-card:hover .outcome-media::after,
.shot-card:hover .shot-media::after,
.mockup-panel:hover::after{opacity:1;}
.founder-card{
  display:grid;grid-template-columns:260px 1fr;gap:44px;align-items:center;
  padding:44px;max-width:900px;margin:0 auto;
}
.founder-photo{
  width:100%;aspect-ratio:1/1;border-radius:18px;overflow:hidden;
  border:1px solid var(--border-strong);
  box-shadow:0 20px 50px -20px rgba(0,0,0,.6);
}
.founder-photo img{width:100%;height:100%;object-fit:cover;display:block;}
.founder-name{font-family:var(--font-display);font-weight:700;font-size:1.4rem;color:var(--white);margin-bottom:4px;}
.founder-title{font-family:var(--font-mono);font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--red-bright);margin-bottom:16px;}
@media (max-width:700px){
  .founder-card{grid-template-columns:1fr;text-align:center;padding:32px 26px;}
  .founder-photo{max-width:220px;margin:0 auto;}
}
@media (min-width:1151px){
  .nav-links{position:relative;gap:6px;}
  .nav-links a{
    padding:9px 16px;border-radius:999px;font-size:.74rem;font-weight:600;
    color:var(--grey);z-index:1;
    transition:color var(--duration-fast) var(--ease-premium);
  }
  .nav-links a::after{display:none;}
  .nav-links a::before{
    content:"";position:absolute;inset:0;border-radius:999px;z-index:-1;
    background:linear-gradient(135deg,rgba(229,9,20,.9),rgba(255,59,71,.65));
    opacity:0;transform:scale(.85);
    transition:opacity var(--duration-fast) var(--ease-premium),transform var(--duration-fast) var(--ease-premium);
  }
  .nav-links a:hover{color:#fff;}
  .nav-links a:hover::before{opacity:1;transform:scale(1);}
  .nav-links a:hover{text-shadow:0 0 18px rgba(255,59,71,.5);}
  .nav-links a.active{color:#fff;}
  .nav-links a.active::before{
    opacity:1;transform:scale(1);
    box-shadow:0 0 22px rgba(229,9,20,.5),0 0 0 1px rgba(255,59,71,.4);
  }
}

/* ---------- Mobile nav panel ---------- */
@media (max-width:1150px){
  .nav-links{
    background-color:#0B0B0B !important;
    background-image:
      radial-gradient(70% 45% at 100% 0%, rgba(229,9,20,.10), transparent 60%);
    -webkit-backdrop-filter:none;backdrop-filter:none;
    z-index:150;
    box-shadow:0 30px 60px -20px rgba(0,0,0,.7);
  }
  .nav-links.open{display:flex;}
  .nav-links a{
    width:100%;padding:14px 4px;border-bottom:1px solid var(--border);
    display:flex;align-items:center;justify-content:space-between;
  }
  .nav-links a:last-child{border-bottom:none;}
  .nav-links a::after{display:none;}
  .nav-links a:hover,.nav-links a.active{padding-left:10px;}
}
.wa-float{
  position:fixed;right:26px;bottom:26px;z-index:90;
  width:58px;height:58px;border-radius:50%;
  background:linear-gradient(155deg,var(--surface-2),var(--black));
  border:1px solid var(--border-strong);
  display:flex;align-items:center;justify-content:center;
  color:var(--white);box-shadow:0 16px 40px -12px rgba(0,0,0,.6);
  transition:transform var(--duration-fast) var(--ease-premium),
             box-shadow var(--duration-med) var(--ease-premium),
             border-color var(--duration-fast) var(--ease-premium);
}
.wa-float svg{width:26px;height:26px;color:var(--red-bright);}
.wa-float::before{
  content:"";position:absolute;inset:-6px;border-radius:50%;
  border:1px solid rgba(255,59,71,.4);
  animation:cvWaPulse 2.6s ease-out infinite;
}
@keyframes cvWaPulse{
  0%{transform:scale(1);opacity:.7;}
  100%{transform:scale(1.35);opacity:0;}
}
.wa-float:hover{
  transform:translateY(-3px) scale(1.05);
  border-color:var(--red-bright);
  box-shadow:0 20px 50px -14px rgba(0,0,0,.65),0 0 30px rgba(229,9,20,.4);
}
@media (max-width:600px){
  .wa-float{right:16px;bottom:16px;width:52px;height:52px;}
  .wa-float svg{width:23px;height:23px;}
}
@media (prefers-reduced-motion: reduce){
  .wa-float::before{animation:none;}
}
@media (hover:none){
  .facet:hover{transform:none;box-shadow:none;}
  .facet:hover::after{display:none;}
  .btn::before{display:none;}
}
