/* =========================================================================
   NEXER — Home Design System
   Palette derived from the NEXER mark: near-black navy background,
   purple → cyan gradient accent, glassmorphism surfaces.
   ========================================================================= */

:root{
  --bg:#05060d;
  --surface:#0a0d1c;
  --surface-2:#10142a;
  --primary:#6e3aff;
  --secondary:#00c2ff;
  --accent:#9b5cff;
  --text:#f5f7ff;
  --muted:#8892b0;
  --border:rgba(255,255,255,0.08);

  --gradient-brand: linear-gradient(135deg, var(--primary) 0%, var(--accent) 45%, var(--secondary) 100%);
  --gradient-glow: radial-gradient(circle, rgba(110,58,255,0.35) 0%, rgba(0,194,255,0) 70%);

  --radius-sm: 10px;
  --radius-md: 18px;
  --radius-lg: 28px;

  --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
  --font-display: 'Outfit', sans-serif;
}

/* =========================================================================
   Reset / base
   ========================================================================= */
*, *::before, *::after{ box-sizing:border-box; }

/* overflow-x:hidden on body alone doesn't reliably stop horizontal
   scroll on mobile Safari/Chrome — the visual viewport can still drag
   sideways if `html` itself allows it, so both need it plus a hard
   width cap in case any child (an orb, a card, a negative-offset
   notification, etc.) is ever wider than the viewport. */
html{
  scroll-behavior:auto;
  overflow-x:hidden;
  width:100%;
  max-width:100%;
}

body{
  margin:0;
  background:var(--bg);
  color:var(--text);
  font-family:var(--font-display);
  font-size:1.05rem;
  line-height:1.6;
  overflow-x:hidden;
  width:100%;
  max-width:100%;
  position:relative;
  -webkit-font-smoothing:antialiased;
}

body::before{
  content:"";
  position:fixed;
  inset:0;
  pointer-events:none;
  z-index:2;
  opacity:0.035;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%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");
}

img{ max-width:100%; display:block; }
a{ color:inherit; text-decoration:none; }
ul{ list-style:none; margin:0; padding:0; }
/* `button[type]` (specificity 0,1,1) is needed, not just `button` (0,0,1):
   the Hello Elementor parent theme's reset.css targets
   `[type="button"], [type="submit"], button` (0,1,0 for the attribute
   branches), which otherwise wins over a plain `button` selector on any
   <button type="..."> regardless of stylesheet order, leaking its pink
   validation-style border/color onto FAQ, submit and arrow buttons. The
   same stylesheet also sets a `#c36` background-color on
   `[type=button]:hover/:focus` (0,2,0) — button[type]:hover (0,2,1) is
   needed to beat that too, or the FAQ's open/focused question flashes
   solid pink instead of its gradient-ring treatment. */
button, button[type]{ font-family:inherit; cursor:pointer; background:none; border:none; color:inherit; }
button:hover, button:focus, button[type]:hover, button[type]:focus{ background-color:transparent; color:inherit; }
input, textarea{ font-family:inherit; }

.screen-reader-text{
  position:absolute !important;
  width:1px; height:1px;
  overflow:hidden;
  clip:rect(1px,1px,1px,1px);
}

.nexer-main{ position:relative; z-index:1; }

h1,h2,h3,h4{
  font-family:var(--font-display);
  letter-spacing:-0.02em;
  margin:0;
}

.nexer-gradient-text{
  background:var(--gradient-brand);
  -webkit-background-clip:text;
  background-clip:text;
  color:transparent;
}

.nexer-eyebrow{
  display:inline-flex;
  align-items:center;
  gap:8px;
  font-size:0.8rem;
  font-weight:600;
  letter-spacing:0.14em;
  text-transform:uppercase;
  color:var(--secondary);
  margin:0 0 18px;
}
.nexer-eyebrow::before{
  content:"";
  width:18px; height:2px;
  background:var(--gradient-brand);
  border-radius:2px;
}

.nexer-section-title{
  font-size:clamp(2rem, 5vw, 4rem);
  font-weight:700;
  line-height:1.1;
}

/* Focus visibility (accessibility floor) */
a:focus-visible, button:focus-visible, input:focus-visible, textarea:focus-visible{
  outline:2px solid var(--secondary);
  outline-offset:3px;
}

/* =========================================================================
   Progress bar + cursor glow
   ========================================================================= */
.nexer-progress-bar{
  position:fixed;
  top:0; left:0;
  height:3px;
  width:100%;
  transform:scaleX(0);
  transform-origin:left;
  background:var(--gradient-brand);
  z-index:9999;
  will-change:transform;
}

.nexer-cursor-glow{
  position:fixed;
  top:0; left:0;
  width:420px; height:420px;
  margin-left:-210px;
  margin-top:-210px;
  background:var(--gradient-glow);
  filter:blur(10px);
  pointer-events:none;
  z-index:0;
  opacity:0;
  transition:opacity 0.4s ease;
  will-change:transform;
}
@media (hover:hover){ .nexer-cursor-glow.is-active{ opacity:1; } }
@media (max-width:900px){ .nexer-cursor-glow{ display:none; } }

/* =========================================================================
   Buttons
   ========================================================================= */
.nexer-btn{
  position:relative;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  padding:14px 28px;
  border-radius:999px;
  font-weight:600;
  font-size:0.95rem;
  isolation:isolate;
  white-space:nowrap;
}

.nexer-btn--primary{
  background:var(--gradient-brand);
  color:#fff;
  box-shadow:0 8px 30px rgba(110,58,255,0.35);
}
.nexer-btn--primary:hover{ box-shadow:0 10px 40px rgba(0,194,255,0.4); }

.nexer-btn--ghost{
  background:rgba(255,255,255,0.04);
  color:var(--text);
  border:1px solid var(--border);
  backdrop-filter:blur(10px);
}
.nexer-btn--ghost:hover{ border-color:rgba(255,255,255,0.2); }

.nexer-btn--outline{
  background:transparent;
  color:var(--text);
  border:1px solid var(--border);
}
.nexer-btn--outline:hover{ border-color:var(--secondary); color:var(--secondary); }

/* =========================================================================
   Header
   ========================================================================= */
.nexer-header{
  position:fixed;
  top:0; left:0; right:0;
  z-index:1000;
  padding:26px 0;
  transition:padding 0.35s var(--ease-out), background 0.35s var(--ease-out), border 0.35s var(--ease-out);
}

.nexer-header.is-scrolled{
  padding:14px 0;
  background:rgba(5,6,13,0.72);
  backdrop-filter:blur(16px);
  border-bottom:1px solid var(--border);
}

.nexer-header__inner{
  max-width:1320px;
  margin:0 auto;
  padding:0 32px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:24px;
}

.nexer-logo{
  display:inline-flex;
  align-items:center;
  gap:10px;
}
.nexer-logo__text{
  font-weight:800;
  font-size:1.2rem;
  letter-spacing:0.02em;
}

.nexer-nav__list{
  display:flex;
  align-items:center;
  gap:36px;
}
.nexer-nav__list a{
  position:relative;
  font-size:0.95rem;
  font-weight:500;
  color:var(--muted);
  padding-bottom:4px;
}
.nexer-nav__list a::after{
  content:"";
  position:absolute;
  left:0; bottom:0;
  width:100%; height:1.5px;
  background:var(--gradient-brand);
  transform:scaleX(0);
  transform-origin:left;
  transition:transform 0.35s var(--ease-out);
}
.nexer-nav__list a:hover{ color:var(--text); }
.nexer-nav__list a:hover::after{ transform:scaleX(1); }

.nexer-nav__list li{ position:relative; }

.nexer-nav__list .sub-menu{
  position:absolute;
  top:100%;
  left:0;
  min-width:200px;
  margin-top:14px;
  padding:10px;
  display:flex;
  flex-direction:column;
  gap:2px;
  background:rgba(10,13,28,0.98);
  border:1px solid var(--border);
  border-radius:12px;
  backdrop-filter:blur(20px);
  box-shadow:0 20px 50px rgba(0,0,0,0.4);
  opacity:0;
  visibility:hidden;
  transform:translateY(8px);
  transition:opacity 0.25s var(--ease-out), transform 0.25s var(--ease-out), visibility 0.25s;
  z-index:1200;
}
.nexer-nav__list li:hover > .sub-menu,
.nexer-nav__list li:focus-within > .sub-menu{
  opacity:1;
  visibility:visible;
  transform:translateY(0);
}
.nexer-nav__list .sub-menu a{
  padding:8px 12px;
  white-space:nowrap;
  border-radius:8px;
}
.nexer-nav__list .sub-menu a::after{ display:none; }
.nexer-nav__list .sub-menu a:hover{ background:rgba(255,255,255,0.06); }

.nexer-header__cta{ padding:11px 22px; font-size:0.9rem; }

.nexer-burger{
  display:none;
  flex-direction:column;
  gap:5px;
  padding:8px;
}
.nexer-burger span{
  width:22px; height:2px;
  background:var(--text);
  border-radius:2px;
  transition:transform 0.3s var(--ease-out), opacity 0.3s var(--ease-out);
}

.nexer-mobile-menu{
  position:fixed;
  top:0; right:0;
  height:100%;
  width:min(78vw, 360px);
  background:rgba(10,13,28,0.98);
  backdrop-filter:blur(20px);
  border-left:1px solid var(--border);
  z-index:1100;
  display:flex;
  flex-direction:column;
  justify-content:center;
  gap:40px;
  padding:40px;
  transform:translateX(100%);
  transition:transform 0.45s var(--ease-out);
}
.nexer-mobile-menu.is-open{ transform:translateX(0); }
.nexer-mobile-menu__list{ display:flex; flex-direction:column; gap:26px; overflow-y:auto; max-height:70vh; }
.nexer-mobile-menu__list a{ font-size:1.6rem; font-weight:600; }
.nexer-mobile-menu__list .sub-menu{ display:flex; flex-direction:column; gap:16px; margin-top:16px; padding-left:20px; }
.nexer-mobile-menu__list .sub-menu a{ font-size:1.1rem; font-weight:500; color:var(--muted); }
.nexer-mobile-menu__cta{ align-self:flex-start; }

@media (max-width: 900px){
  .nexer-nav{ display:none; }
  .nexer-header__cta{ display:none; }
  .nexer-burger{ display:flex; }
}

/* =========================================================================
   Hero
   ========================================================================= */
.nexer-hero{
  position:relative;
  min-height:100vh;
  display:flex;
  flex-direction:column;
  justify-content:center;
  padding-top:120px;
  overflow:hidden;
}

.nexer-hero__bg{ position:absolute; inset:0; z-index:0; }

.nexer-hero__grid{
  position:absolute; inset:0;
  background-image:
    linear-gradient(rgba(255,255,255,0.035) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,0.035) 1px, transparent 1px);
  background-size:56px 56px;
  mask-image:radial-gradient(ellipse at center, black 0%, transparent 75%);
}

.nexer-hero__orb{
  position:absolute;
  border-radius:50%;
  filter:blur(90px);
  opacity:0.55;
  will-change:transform;
}
.nexer-hero__orb--1{ width:520px; height:520px; top:-120px; left:-100px; background:var(--primary); }
.nexer-hero__orb--2{ width:420px; height:420px; bottom:-140px; right:-80px; background:var(--secondary); }
.nexer-hero__orb--3{ width:300px; height:300px; top:40%; left:50%; background:var(--accent); opacity:0.35; }

.nexer-hero__inner{
  position:relative;
  z-index:2;
  max-width:1320px;
  margin:0 auto;
  padding:0 32px;
  display:grid;
  grid-template-columns:1.1fr 0.9fr;
  align-items:center;
  gap:60px;
  width:100%;
}

.nexer-hero__title{
  font-size:clamp(3.5rem, 8vw, 6.4rem);
  font-weight:800;
  line-height:1.02;
}
/* overflow-wrap on the word itself (not just the heading) — each word is
   display:inline-block for the reveal animation, which stops a plain
   overflow-wrap on an ancestor from being able to break inside it, so a
   single long word (e.g. "GoHighLevel") at the large clamp() size could
   push past the viewport edge on narrow phones instead of wrapping. */
.nexer-hero__title .word{ display:inline-block; max-width:100%; overflow-wrap:break-word; will-change:transform, opacity; }

.nexer-hero__subtitle{
  margin-top:26px;
  max-width:520px;
  font-size:1.15rem;
  color:var(--muted);
}

.nexer-hero__actions{
  margin-top:38px;
  display:flex;
  gap:18px;
  flex-wrap:wrap;
}

/* Floating dashboard mockup */
.nexer-hero__visual{ position:relative; }

.nexer-dashboard-card{
  position:relative;
  background:rgba(16,20,42,0.6);
  border:1px solid var(--border);
  border-radius:var(--radius-lg);
  backdrop-filter:blur(18px);
  padding:22px;
  box-shadow:0 30px 80px rgba(0,0,0,0.45);
  transform-origin:center;
}

.nexer-dashboard-card__glow-ring{
  position:absolute;
  inset:-2px;
  border-radius:inherit;
  padding:2px;
  background:conic-gradient(from 0deg, var(--primary), var(--secondary), var(--accent), var(--primary));
  -webkit-mask:linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite:xor;
  mask-composite:exclude;
  opacity:0.6;
  will-change:transform;
  z-index:-1;
}

.nexer-dashboard-card__header{ display:flex; align-items:center; gap:8px; margin-bottom:18px; }
.nexer-dot{ width:9px; height:9px; border-radius:50%; }
.nexer-dot--red{ background:#ff5f56; }
.nexer-dot--yellow{ background:#ffbd2e; }
.nexer-dot--green{ background:#27c93f; }
.nexer-dashboard-card__title{ margin-left:8px; font-size:0.8rem; color:var(--muted); }

.nexer-mini-chart{ height:110px; margin-bottom:18px; }
.nexer-mini-chart svg{ width:100%; height:100%; }
.nexer-mini-chart__line{
  fill:none;
  stroke:url(#nexerMarkGrad);
  stroke:var(--secondary);
  stroke-width:2.5;
  stroke-linecap:round;
  stroke-linejoin:round;
}

.nexer-dashboard-card__stats{ display:flex; gap:24px; }
.nexer-dashboard-card__stat{ display:flex; flex-direction:column; gap:4px; }
.nexer-dashboard-card__stat-label{ font-size:0.75rem; color:var(--muted); }
.nexer-dashboard-card__stat-value{ font-size:1.3rem; font-weight:700; }

/* Hero — pinned crossfading dashboard states */
.nexer-dashboard-card__states{ position:relative; height:210px; }
.nexer-hero-state{
  position:absolute;
  inset:0;
  display:flex;
  flex-direction:column;
  justify-content:center;
  gap:16px;
  opacity:0;
  will-change:transform, opacity;
}
.nexer-hero-state.is-active{ opacity:1; }

.nexer-flow-list{ display:flex; flex-direction:column; gap:10px; }
.nexer-flow-list li{ display:flex; align-items:center; gap:10px; font-size:0.85rem; color:var(--text); }
.nexer-flow-list__dot{ width:8px; height:8px; border-radius:50%; background:var(--gradient-brand); flex-shrink:0; }

.nexer-progress-track{ height:6px; border-radius:999px; background:rgba(255,255,255,0.08); overflow:hidden; }
.nexer-progress-track__fill{
  display:block;
  height:100%;
  width:100%;
  background:var(--gradient-brand);
  transform-origin:left;
  transform:scaleX(0.28);
  will-change:transform;
}

.nexer-mini-funnel{ display:flex; flex-direction:column; gap:10px; }
.nexer-mini-funnel__row{ display:grid; grid-template-columns:64px 1fr 50px; align-items:center; gap:10px; font-size:0.78rem; color:var(--muted); }
.nexer-mini-funnel__row i{ display:block; height:8px; border-radius:999px; background:var(--gradient-brand); width:var(--w); font-style:normal; }
.nexer-mini-funnel__row b{ color:var(--text); font-weight:700; text-align:right; }

.nexer-notification{
  position:absolute;
  padding:10px 16px;
  background:rgba(16,20,42,0.85);
  border:1px solid var(--border);
  border-radius:var(--radius-sm);
  backdrop-filter:blur(14px);
  font-size:0.82rem;
  box-shadow:0 12px 30px rgba(0,0,0,0.4);
  will-change:transform;
}
.nexer-notification--1{ top:-18px; right:-20px; }
.nexer-notification--2{ bottom:-16px; left:-24px; }

.nexer-scroll-indicator{
  position:absolute;
  bottom:36px; left:50%;
  transform:translateX(-50%);
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:10px;
  z-index:2;
  font-size:0.75rem;
  letter-spacing:0.12em;
  text-transform:uppercase;
  color:var(--muted);
}
.nexer-scroll-indicator__line{
  width:1px; height:36px;
  background:linear-gradient(var(--secondary), transparent);
}

@media (max-width:1000px){
  .nexer-hero__inner{ grid-template-columns:1fr; text-align:center; }
  .nexer-hero__subtitle{ margin-left:auto; margin-right:auto; }
  .nexer-hero__actions{ justify-content:center; }
  .nexer-hero__visual{ width:100%; max-width:440px; margin:0 auto; }

  /* .nexer-hero has overflow:hidden and, on desktop, the card sits
     vertically centered in a 2-column grid row with slack space above and
     below it, so the notification chips overhanging its edges (by design,
     see .nexer-notification--1/--2) never reach the hero's own bottom
     edge. Once the columns stack here, the visual becomes the last thing
     in the section with zero clearance below it, so the bottom chip's
     overhang was being clipped outright. Bottom padding on the section
     gives it somewhere to hang. */
  .nexer-hero{ padding-bottom:56px; }
}

/* Small phones — the floating notification chips sit outside the card's
   own edges by design (18-24px), which on a wide/tablet visual is well
   inside the hero's side padding, but on a narrow phone that padding is
   the only buffer before the hero's own overflow:hidden clips them, so
   pull them in and scale the title down instead of relying on the
   clamp() floor, which otherwise never shrinks below 3.5rem regardless
   of how narrow the screen actually is. */
@media (max-width:480px){
  .nexer-hero{ padding-top:100px; padding-bottom:48px; }
  .nexer-hero__title{ font-size:clamp(2.1rem, 10vw, 3.2rem); }
  .nexer-notification{ font-size:0.72rem; padding:8px 12px; max-width:calc(100vw - 64px); }
  .nexer-notification--1{ top:-10px; right:-6px; }
  .nexer-notification--2{ bottom:-10px; left:-6px; }
}

/* =========================================================================
   Sticky bottom CTA bar
   ========================================================================= */
.nexer-sticky-cta{
  position:fixed;
  left:0; right:0; bottom:0;
  z-index:900;
  background:rgba(10,13,28,0.85);
  backdrop-filter:blur(16px);
  border-top:1px solid var(--border);
  transform:translateY(120%);
  opacity:0;
  will-change:transform, opacity;
  pointer-events:none;
}
.nexer-sticky-cta.is-visible{ pointer-events:auto; }

.nexer-sticky-cta__inner{
  max-width:1320px;
  margin:0 auto;
  padding:14px 32px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:24px;
}

.nexer-sticky-cta__brand{ display:flex; align-items:center; gap:14px; min-width:0; }
.nexer-sticky-cta__mark{
  flex-shrink:0;
  width:34px; height:34px;
  border-radius:50%;
  display:flex; align-items:center; justify-content:center;
  font-weight:800;
  font-size:0.95rem;
  background:var(--gradient-brand);
  color:#fff;
}
.nexer-sticky-cta__hook{
  font-size:0.92rem;
  font-weight:500;
  color:var(--text);
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.nexer-sticky-cta__btn{ flex-shrink:0; padding:11px 22px; font-size:0.88rem; }

@media (max-width:700px){
  .nexer-sticky-cta__inner{ padding:12px 20px; gap:14px; }
  .nexer-sticky-cta__hook{ display:none; }
}

/* =========================================================================
   About
   ========================================================================= */
.nexer-about{ padding:160px 32px; position:relative; }
.nexer-about__inner{
  max-width:1320px;
  margin:0 auto;
  display:grid;
  grid-template-columns:0.8fr 1.2fr;
  gap:80px;
  align-items:center;
}

.nexer-about__image-frame{
  position:relative;
  aspect-ratio:4/5;
  border-radius:var(--radius-lg);
  overflow:hidden;
  border:1px solid var(--border);
  background:var(--surface-2);
}
.nexer-about__image-layer{ position:absolute; inset:0; }
.nexer-about__image-layer--1{ background:radial-gradient(circle at 30% 20%, rgba(110,58,255,0.5), transparent 60%); }
.nexer-about__image-layer--2{ background:radial-gradient(circle at 80% 90%, rgba(0,194,255,0.4), transparent 60%); }

.nexer-about__illustration{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  padding:6%;
}

.nexer-about__badge{
  position:absolute;
  left:20px; bottom:20px;
  display:inline-flex;
  align-items:center;
  gap:8px;
  padding:10px 16px;
  background:rgba(5,6,13,0.7);
  border:1px solid var(--border);
  border-radius:999px;
  backdrop-filter:blur(12px);
  font-size:0.8rem;
  font-weight:600;
}
.nexer-about__badge-dot{
  width:8px; height:8px; border-radius:50%;
  background:var(--gradient-brand);
}

.nexer-about__desc{ margin-top:20px; color:var(--muted); max-width:560px; }

.nexer-counters{
  margin-top:52px;
  display:grid;
  grid-template-columns:repeat(4, 1fr);
  gap:28px;
}
.nexer-counter{ display:flex; flex-direction:column; gap:6px; }
.nexer-counter__value{
  font-size:clamp(1.8rem, 3vw, 2.6rem);
  font-weight:800;
  background:var(--gradient-brand);
  -webkit-background-clip:text;
  background-clip:text;
  color:transparent;
}
.nexer-counter__label{ font-size:0.85rem; color:var(--muted); }

@media (max-width:1000px){
  .nexer-about{ padding:100px 24px; }
  .nexer-about__inner{ grid-template-columns:1fr; gap:50px; }
  .nexer-counters{ grid-template-columns:repeat(2, 1fr); }
}

/* =========================================================================
   Services — pinned horizontal scroll
   ========================================================================= */
.nexer-services{ position:relative; padding-top:100px; }
.nexer-services__intro{
  max-width:1320px;
  margin:0 auto;
  padding:0 32px 60px;
  text-align:center;
}
.nexer-services__intro .nexer-eyebrow{ justify-content:center; }
.nexer-services__intro::before{ content:none; }

.nexer-services__pin{
  position:relative;
  height:100vh;
  overflow:hidden;
}

.nexer-services__bg{ position:absolute; inset:0; z-index:0; }
.nexer-services__bg-layer{
  position:absolute;
  inset:0;
  opacity:0;
  will-change:opacity;
}

.nexer-services__progress{
  position:absolute;
  top:0; left:0;
  width:100%; height:3px;
  background:rgba(255,255,255,0.06);
  z-index:3;
}
.nexer-services__progress span{
  display:block;
  height:100%;
  width:0%;
  background:var(--gradient-brand);
}

/* Fixed vertical index (01–05) beside the pinned track — same glass
   background treatment as .nexer-header.is-scrolled so it reads as its
   own surface instead of floating bare over the panel text behind it. */
.nexer-services__index{
  position:fixed;
  right:32px;
  top:50%;
  transform:translateY(-50%);
  z-index:40;
  padding:22px 26px;
  background:rgba(5,6,13,0.72);
  backdrop-filter:blur(16px);
  border:1px solid var(--border);
  border-radius:var(--radius-lg);
  box-shadow:0 20px 50px rgba(0,0,0,0.35);
  opacity:0;
  pointer-events:none;
  will-change:opacity;
}
.nexer-services__index.is-visible{ opacity:1; }
.nexer-services__index ul{ display:flex; flex-direction:column; gap:18px; }
.nexer-services__index li{
  display:flex;
  align-items:center;
  gap:10px;
  color:var(--muted);
  opacity:0.5;
  transition:opacity 0.4s var(--ease-out), transform 0.4s var(--ease-out);
}
.nexer-services__index li.is-active{ opacity:1; transform:translateX(-4px); }
.nexer-services__index-num{ font-size:0.75rem; font-weight:700; font-variant-numeric:tabular-nums; }
.nexer-services__index-name{
  font-size:0.8rem;
  font-weight:600;
  white-space:nowrap;
  opacity:0;
  transform:translateX(-6px);
  transition:opacity 0.35s var(--ease-out), transform 0.35s var(--ease-out);
}
.nexer-services__index li.is-active .nexer-services__index-name{ opacity:1; transform:translateX(0); }
.nexer-services__index li.is-active .nexer-services__index-num{
  background:var(--gradient-brand);
  -webkit-background-clip:text;
  background-clip:text;
  color:transparent;
}

@media (max-width:1300px){
  .nexer-services__index{ display:none; }
}

.nexer-services__track{
  display:flex;
  height:100%;
  width:270vw; /* 5 panels @ 50vw (half the viewport) each, so 2 sit side by
    side at a time, plus a short 20vw trailing spacer that buys a little
    extra scroll past the last panel (HVAC) so it shifts further left before
    the pin releases, instead of the section ending the instant HVAC is
    still paired alongside Course Creators on the right. Keep this small —
    it's extra scroll distance on top of the whole section, not just a
    pause. */
  will-change:transform;
}

.nexer-service-panel{
  position:relative;
  width:50vw;
  flex:0 0 50vw;
  height:100%;
  display:flex;
  flex-direction:column;
  justify-content:center;
  padding:0 4vw;
  overflow:hidden;
  border-right:1px solid var(--border);
}
.nexer-service-panel:last-child{ border-right:none; }

/* Trailing spacer — see .nexer-services__track comment above. */
.nexer-services__track-spacer{ flex:0 0 20vw; width:20vw; height:100%; }
/* Background color comes solely from the crossfading, viewport-fixed
   .nexer-services__bg-layer stack (positioned on nexer-services__bg, a
   sibling that doesn't move with the horizontally-scrolling track). A
   per-panel glow used to live here too, but since it moved WITH the
   track, two adjacent panels partially visible mid-scrub each showed
   their own independently-positioned glow, meeting at the panel
   boundary as a hard brightness seam. */
.nexer-service-panel > *{ position:relative; z-index:1; }

.nexer-service-panel__number{
  font-size:clamp(3rem, 6vw, 5.5rem);
  font-weight:800;
  line-height:1;
  color:transparent;
  -webkit-text-stroke:1.5px rgba(255,255,255,0.16);
  margin-bottom:10px;
}

.nexer-service-panel__title{ font-size:clamp(1.6rem, 2.6vw, 2.4rem); font-weight:700; margin-bottom:16px; }
.nexer-service-panel__desc{ color:var(--muted); max-width:100%; margin-bottom:22px; }
.nexer-service-panel__features{ display:flex; flex-direction:column; gap:10px; margin-bottom:30px; }
.nexer-service-panel__features li{
  position:relative;
  padding-left:22px;
  color:var(--text);
  font-size:0.95rem;
}
.nexer-service-panel__features li::before{
  content:"";
  position:absolute; left:0; top:9px;
  width:10px; height:2px;
  background:var(--gradient-brand);
}

/* Mobile slider controls (arrows + dots) — hidden on desktop, where the
   pinned horizontal-scroll track above drives navigation instead.
   position:relative + z-index lifts it above .nexer-services__bg (an
   absolutely-positioned, z-index:0 glow layer that otherwise paints
   over any plain static sibling and swallows its taps — the same
   reason panel content itself needs `.nexer-service-panel > *{ z-index:1 }`). */
.nexer-services__mobile-nav{ display:none; position:relative; z-index:2; }

@media (max-width:900px){
  .nexer-services__pin{ height:auto; overflow:visible; }
  .nexer-services__progress{ display:none; }

  /* Swap the pinned/scrubbed track for a native horizontal scroll-snap
     carousel: one full-width panel per "slide", swipeable, and driven
     by the arrow/dot controls + autoslide timer in gsap-init.js. */
  .nexer-services__track{
    flex-direction:row;
    width:100%;
    height:auto;
    overflow-x:auto;
    scroll-snap-type:x mandatory;
    scroll-behavior:smooth;
    -webkit-overflow-scrolling:touch;
    scrollbar-width:none;
  }
  .nexer-services__track::-webkit-scrollbar{ display:none; }

  .nexer-service-panel{
    width:100%;
    flex:0 0 100%;
    height:auto;
    padding:64px 24px 32px;
    scroll-snap-align:center;
    border-right:none;
  }

  /* Desktop-only scroll buffer — the mobile carousel is exactly 5 real
     slides, no trailing blank one. */
  .nexer-services__track-spacer{ display:none; }

  .nexer-services__mobile-nav{
    display:flex;
    align-items:center;
    justify-content:center;
    gap:20px;
    margin:8px 0 0;
    padding:0 24px 60px;
  }
  .nexer-services__mobile-arrow{
    display:flex;
    align-items:center;
    justify-content:center;
    flex-shrink:0;
    width:44px;
    height:44px;
    border-radius:50%;
    border:1px solid var(--border);
    background:rgba(255,255,255,0.03);
    color:var(--text);
    cursor:pointer;
    transition:background 0.3s var(--ease-out), border-color 0.3s var(--ease-out);
  }
  .nexer-services__mobile-arrow:hover,
  .nexer-services__mobile-arrow:focus-visible{
    background:rgba(255,255,255,0.08);
    border-color:rgba(255,255,255,0.2);
  }
  .nexer-services__mobile-arrow svg{ display:block; }

  .nexer-services__mobile-dots{ display:flex; align-items:center; gap:8px; }
  .nexer-services__mobile-dots button{
    width:8px;
    height:8px;
    border-radius:50%;
    border:none;
    padding:0;
    background:rgba(255,255,255,0.2);
    cursor:pointer;
    transition:background 0.3s var(--ease-out), transform 0.3s var(--ease-out);
  }
  .nexer-services__mobile-dots button.is-active{
    background:var(--gradient-brand);
    transform:scale(1.3);
  }
}

/* =========================================================================
   Process
   ========================================================================= */
.nexer-process{ padding:160px 32px; max-width:1000px; margin:0 auto; }
.nexer-process__intro{ text-align:center; margin-bottom:80px; }
.nexer-process__intro .nexer-eyebrow{ justify-content:center; }
.nexer-process__intro::before{ content:none; }

.nexer-process__timeline{ position:relative; padding-left:60px; }

.nexer-process__line{
  position:absolute;
  left:19px; top:8px; bottom:8px;
  width:2px;
  background:rgba(255,255,255,0.08);
}
.nexer-process__line span{
  display:block;
  width:100%; height:0%;
  background:var(--gradient-brand);
}

.nexer-process__step{ position:relative; margin-bottom:56px; }
.nexer-process__step:last-child{ margin-bottom:0; }

.nexer-process__icon{
  position:absolute;
  left:-60px; top:0;
  width:40px; height:40px;
  border-radius:50%;
  background:var(--surface-2);
  border:1px solid var(--border);
  display:flex; align-items:center; justify-content:center;
  font-size:0.8rem; font-weight:700;
  color:var(--secondary);
  will-change:transform;
}

.nexer-process__card{
  background:rgba(255,255,255,0.03);
  border:1px solid var(--border);
  border-radius:var(--radius-md);
  padding:28px 32px;
  transition:transform 0.4s var(--ease-out), border-color 0.4s var(--ease-out);
}
.nexer-process__card:hover{ transform:translateY(-6px); border-color:rgba(255,255,255,0.18); }
.nexer-process__card h3{ font-size:1.3rem; margin-bottom:10px; }
.nexer-process__card p{ color:var(--muted); margin:0; }

@media (max-width:700px){
  .nexer-process{ padding:100px 20px; }
  .nexer-process__timeline{ padding-left:44px; }
  .nexer-process__icon{ left:-44px; width:32px; height:32px; font-size:0.7rem; }
}

/* =========================================================================
   Stat callout
   ========================================================================= */
.nexer-stat{
  position:relative;
  padding:120px 32px;
  overflow:hidden;
}
.nexer-stat::before{
  content:"";
  position:absolute;
  inset:0;
  background:radial-gradient(circle at 50% 50%, rgba(110,58,255,0.16) 0%, transparent 65%);
  z-index:0;
}
.nexer-stat__inner{
  position:relative;
  z-index:1;
  max-width:760px;
  margin:0 auto;
  text-align:center;
}
.nexer-stat__value{
  display:block;
  font-size:clamp(4rem, 12vw, 8rem);
  font-weight:800;
  line-height:1;
  margin:0 0 14px;
}
.nexer-stat__label{
  font-size:clamp(1.2rem, 2.4vw, 1.6rem);
  font-weight:600;
  margin:0 0 22px;
}
.nexer-stat__desc{ color:var(--muted); max-width:560px; margin:0 auto 26px; }
.nexer-stat__caption{
  font-size:0.78rem;
  letter-spacing:0.04em;
  text-transform:uppercase;
  color:var(--muted);
  opacity:0.7;
  margin:0;
}

@media (max-width:700px){
  .nexer-stat{ padding:90px 20px; }
}

/* =========================================================================
   Pricing
   ========================================================================= */
.nexer-pricing{ padding:160px 32px; }
.nexer-pricing__intro{ text-align:center; max-width:700px; margin:0 auto 70px; }
.nexer-pricing__intro .nexer-eyebrow{ justify-content:center; }
.nexer-pricing__intro::before{ content:none; }

.nexer-pricing__grid{
  max-width:1200px;
  margin:0 auto;
  display:grid;
  grid-template-columns:repeat(3, 1fr);
  gap:28px;
  align-items:center;
  perspective:1400px;
}

.nexer-price-card{
  position:relative;
  background:rgba(16,20,42,0.55);
  border:1px solid var(--border);
  border-radius:var(--radius-lg);
  padding:40px 32px;
  backdrop-filter:blur(16px);
  transform-style:preserve-3d;
  will-change:transform;
  transition:box-shadow 0.4s var(--ease-out);
}

.nexer-price-card--featured{
  transform:scale(1.06);
  border-color:rgba(155,92,255,0.4);
  box-shadow:0 20px 60px rgba(110,58,255,0.25);
}
.nexer-price-card--featured::before{
  content:"";
  position:absolute; inset:-1.5px;
  border-radius:inherit;
  padding:1.5px;
  background:var(--gradient-brand);
  -webkit-mask:linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite:xor;
  mask-composite:exclude;
  opacity:0.7;
  animation:nexerPulseGlow 3.2s ease-in-out infinite;
  z-index:-1;
}
@keyframes nexerPulseGlow{
  0%, 100%{ opacity:0.4; }
  50%{ opacity:0.9; }
}

.nexer-price-card__badge{
  position:absolute;
  top:-14px; left:50%;
  transform:translateX(-50%);
  background:var(--gradient-brand);
  color:#fff;
  font-size:0.75rem;
  font-weight:700;
  padding:6px 16px;
  border-radius:999px;
  letter-spacing:0.04em;
}

.nexer-price-card__name{ font-size:1.5rem; margin-bottom:8px; }
.nexer-price-card__desc{ color:var(--muted); font-size:0.92rem; min-height:44px; }
.nexer-price-card__price{ font-size:2.6rem; font-weight:800; margin:20px 0 26px; }
.nexer-price-card__price span{ background:var(--gradient-brand); -webkit-background-clip:text; background-clip:text; color:transparent; }
.nexer-price-card__price{ font-size:2.6rem; }

.nexer-price-card__features{ display:flex; flex-direction:column; gap:12px; margin-bottom:32px; }
.nexer-price-card__features li{
  position:relative;
  padding-left:24px;
  font-size:0.92rem;
  color:var(--text);
}
.nexer-price-card__features li::before{
  content:"✓";
  position:absolute; left:0; top:0;
  color:var(--secondary);
  font-weight:700;
}

.nexer-price-card__cta{ width:100%; }

@media (max-width:1000px){
  .nexer-pricing{ padding:100px 20px; }
  .nexer-pricing__grid{ grid-template-columns:1fr; max-width:440px; }
  .nexer-price-card--featured{ transform:none; order:-1; }
}

/* =========================================================================
   Testimonials — infinite marquee
   ========================================================================= */
.nexer-testimonials{ padding:140px 0; overflow:hidden; }
.nexer-testimonials__intro{ text-align:center; max-width:700px; margin:0 auto 60px; padding:0 32px; }
.nexer-testimonials__intro .nexer-eyebrow{ justify-content:center; }
.nexer-testimonials__intro::before{ content:none; }

.nexer-testimonial-featured{
  position:relative;
  max-width:820px;
  margin:0 auto 80px;
  padding:0 32px;
  text-align:center;
}
.nexer-testimonial-featured__track{ position:relative; min-height:220px; }
.nexer-testimonial-featured__slide{
  position:absolute;
  inset:0;
  margin:0;
  opacity:0;
  will-change:transform, opacity;
  pointer-events:none;
}
.nexer-testimonial-featured__slide.is-active{ position:relative; opacity:1; pointer-events:auto; }

.nexer-testimonial-featured__quote{
  font-size:clamp(1.3rem, 2.6vw, 1.9rem);
  font-weight:500;
  line-height:1.45;
  margin:0 0 32px;
}
.nexer-testimonial-featured__author{ display:flex; align-items:center; justify-content:center; gap:14px; }
.nexer-testimonial-featured__avatar{
  width:46px; height:46px;
  border-radius:50%;
  background:var(--gradient-brand);
  display:flex; align-items:center; justify-content:center;
  font-weight:700;
  flex-shrink:0;
}
.nexer-testimonial-featured__author div{ text-align:left; }
.nexer-testimonial-featured__name{ display:block; font-weight:600; font-size:0.95rem; font-style:normal; }
.nexer-testimonial-featured__biz{ display:block; font-size:0.82rem; color:var(--muted); }

.nexer-testimonial-featured__controls{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:22px;
  margin-top:36px;
}
.nexer-testimonial-featured__arrow{
  width:42px; height:42px;
  border-radius:50%;
  border:1px solid var(--border);
  display:flex; align-items:center; justify-content:center;
  color:var(--text);
  transition:border-color 0.3s ease, color 0.3s ease, transform 0.3s ease;
}
.nexer-testimonial-featured__arrow:hover{ border-color:var(--secondary); color:var(--secondary); }
.nexer-testimonial-featured__counter{
  font-size:0.85rem;
  font-weight:600;
  font-variant-numeric:tabular-nums;
  color:var(--muted);
  letter-spacing:0.04em;
}
.nexer-testimonial-featured__counter #nexerTestimonialCurrent{ color:var(--secondary); }

@media (max-width:700px){
  .nexer-testimonial-featured{ margin-bottom:56px; }
  .nexer-testimonial-featured__author div{ text-align:center; }
}

.nexer-marquee{
  overflow:hidden;
  margin-bottom:24px;
  mask-image:linear-gradient(90deg, transparent, black 8%, black 92%, transparent);
}
.nexer-marquee__track{
  display:flex;
  gap:22px;
  width:max-content;
  animation:nexerMarqueeLeft 42s linear infinite;
}
.nexer-marquee--reverse .nexer-marquee__track{ animation-name:nexerMarqueeRight; animation-duration:48s; }
.nexer-marquee:hover .nexer-marquee__track{ animation-play-state:paused; }

@keyframes nexerMarqueeLeft{ from{ transform:translateX(0); } to{ transform:translateX(-50%); } }
@keyframes nexerMarqueeRight{ from{ transform:translateX(-50%); } to{ transform:translateX(0); } }

.nexer-testimonial-card{
  flex:0 0 380px;
  background:rgba(255,255,255,0.03);
  border:1px solid var(--border);
  border-radius:var(--radius-md);
  padding:28px;
}
.nexer-testimonial-card__stars{ color:var(--secondary); font-size:0.85rem; margin-bottom:14px; letter-spacing:2px; }
.nexer-testimonial-card__quote{ font-size:1rem; margin:0 0 22px; }
.nexer-testimonial-card__author{ display:flex; align-items:center; gap:12px; }
.nexer-testimonial-card__avatar{
  width:40px; height:40px;
  border-radius:50%;
  background:var(--gradient-brand);
  display:flex; align-items:center; justify-content:center;
  font-weight:700;
  flex-shrink:0;
}
.nexer-testimonial-card__name{ display:block; font-weight:600; font-size:0.9rem; }
.nexer-testimonial-card__biz{ display:block; font-size:0.8rem; color:var(--muted); }

/* =========================================================================
   FAQ — animated accordion
   ========================================================================= */
.nexer-faq{ position:relative; padding:160px 32px; max-width:900px; margin:0 auto; }
.nexer-faq::before{
  content:"";
  position:absolute;
  top:10%; left:50%;
  width:900px; height:900px;
  max-width:120vw;
  transform:translate(-50%,-50%);
  background:radial-gradient(circle, rgba(110,58,255,0.14) 0%, transparent 68%);
  z-index:-1;
  pointer-events:none;
}
.nexer-faq__intro{ text-align:center; margin-bottom:60px; }
.nexer-faq__intro .nexer-eyebrow{ justify-content:center; }
.nexer-faq__intro::before{ content:none; }

.nexer-faq__list{ display:flex; flex-direction:column; gap:14px; }

.nexer-faq__item{
  position:relative;
  background:rgba(255,255,255,0.03);
  border:1px solid var(--border);
  border-radius:var(--radius-md);
  transition:border-color 0.4s var(--ease-out), transform 0.4s var(--ease-out), background 0.4s var(--ease-out);
}
.nexer-faq__item:hover{ border-color:rgba(255,255,255,0.2); transform:translateY(-3px); }

/* Gradient ring + wash for the open item — reuses the same masked-border
   technique as .nexer-price-card--featured, faded in via opacity only
   (never box-shadow) to stay compositor-friendly. */
.nexer-faq__item::after{
  content:"";
  position:absolute;
  inset:-1px;
  border-radius:inherit;
  padding:1px;
  background:var(--gradient-brand);
  -webkit-mask:linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite:xor;
  mask-composite:exclude;
  opacity:0;
  transition:opacity 0.4s var(--ease-out);
  pointer-events:none;
}
.nexer-faq__item.is-open{ background:rgba(255,255,255,0.05); border-color:transparent; }
.nexer-faq__item.is-open::after{ opacity:0.85; }

.nexer-faq__heading{ position:relative; z-index:1; margin:0; }

.nexer-faq__question{
  position:relative;
  z-index:1;
  width:100%;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:20px;
  padding:24px 26px;
  text-align:left;
  font-size:1.08rem;
  font-weight:600;
  color:var(--text);
}
.nexer-faq__question:hover{ color:var(--secondary); }
.nexer-faq__question[aria-expanded="true"] > span:first-child{
  background:var(--gradient-brand);
  -webkit-background-clip:text;
  background-clip:text;
  color:transparent;
}

.nexer-faq__icon{
  position:relative;
  flex-shrink:0;
  width:26px; height:26px;
  border-radius:50%;
  border:1px solid var(--border);
  transition:border-color 0.3s var(--ease-out), background 0.3s var(--ease-out);
  will-change:transform;
}
.nexer-faq__icon::before, .nexer-faq__icon::after{
  content:"";
  position:absolute;
  top:50%; left:50%;
  background:currentColor;
  transform:translate(-50%,-50%);
}
.nexer-faq__icon::before{ width:12px; height:2px; }
.nexer-faq__icon::after{ width:2px; height:12px; }
.nexer-faq__question[aria-expanded="true"] .nexer-faq__icon{
  color:#fff;
  background:var(--gradient-brand);
  border-color:transparent;
}

.nexer-faq__answer{
  position:relative;
  z-index:1;
  height:0;
  opacity:0;
  overflow:hidden;
}
.nexer-faq__answer-inner{
  color:var(--muted);
  max-width:640px;
  padding:0 26px 24px;
  margin:0;
}

@media (max-width:700px){
  .nexer-faq{ padding:100px 20px; }
  .nexer-faq__question{ padding:20px; font-size:1rem; }
  .nexer-faq__answer-inner{ padding:0 20px 20px; }
}

/* =========================================================================
   Newsletter
   ========================================================================= */
.nexer-newsletter{
  position:relative;
  margin:0 32px;
  border-radius:var(--radius-lg);
  padding:100px 32px;
  overflow:hidden;
  background:linear-gradient(120deg, #150b33, #061225 55%, #071b2b);
  background-size:200% 200%;
  animation:nexerGradientShift 12s ease infinite;
}
.nexer-newsletter__sweep{
  position:absolute;
  inset:0;
  z-index:0;
  background:linear-gradient(100deg, transparent 30%, rgba(255,255,255,0.10) 50%, transparent 70%);
  transform:translateX(-120%);
  pointer-events:none;
  will-change:transform;
}
@keyframes nexerGradientShift{
  0%,100%{ background-position:0% 50%; }
  50%{ background-position:100% 50%; }
}

.nexer-newsletter__particles{ position:absolute; inset:0; z-index:0; }
.nexer-newsletter__inner{ position:relative; z-index:1; max-width:640px; margin:0 auto; text-align:center; }

.nexer-newsletter__title{ font-size:clamp(2rem, 4.5vw, 3.2rem); font-weight:800; margin-bottom:16px; }
.nexer-newsletter__desc{ color:var(--muted); margin-bottom:36px; }

.nexer-newsletter__form{
  display:flex;
  gap:12px;
  background:rgba(255,255,255,0.05);
  border:1px solid var(--border);
  border-radius:999px;
  padding:6px;
  backdrop-filter:blur(14px);
}
.nexer-newsletter__form input{
  flex:1;
  background:transparent;
  border:none;
  color:var(--text);
  padding:12px 20px;
  font-size:0.95rem;
}
.nexer-newsletter__form input::placeholder{ color:var(--muted); }
.nexer-newsletter__form input:focus{ outline:none; }

.nexer-newsletter__submit{ position:relative; overflow:hidden; }
.nexer-newsletter__submit::after{
  content:"";
  position:absolute; top:0; left:-60%;
  width:40%; height:100%;
  background:linear-gradient(120deg, transparent, rgba(255,255,255,0.5), transparent);
  transform:skewX(-20deg);
  transition:left 0.6s ease;
}
.nexer-newsletter__submit:hover::after{ left:130%; }

.nexer-newsletter__status{ margin-top:16px; font-size:0.9rem; color:var(--secondary); min-height:1.4em; }

@media (max-width:700px){
  .nexer-newsletter{ margin:0 16px; padding:70px 22px; }
  .nexer-newsletter__form{ flex-direction:column; border-radius:var(--radius-md); }
}

/* =========================================================================
   Contact
   ========================================================================= */
.nexer-contact{ padding:160px 32px; }
.nexer-contact__inner{
  max-width:1200px;
  margin:0 auto;
  display:grid;
  grid-template-columns:0.9fr 1.1fr;
  gap:70px;
}

.nexer-contact__desc{ color:var(--muted); margin:20px 0 40px; max-width:440px; }

.nexer-contact__details{ display:flex; flex-direction:column; gap:20px; margin-bottom:36px; }
.nexer-contact__details li{ display:flex; flex-direction:column; gap:4px; }
.nexer-contact__label{ font-size:0.8rem; color:var(--muted); text-transform:uppercase; letter-spacing:0.08em; }
.nexer-contact__details a{ font-size:1.05rem; font-weight:600; }
.nexer-contact__details a:hover{ color:var(--secondary); }

.nexer-contact__social, .nexer-footer__social{ display:flex; gap:12px; }
.nexer-social-icon{
  width:38px; height:38px;
  border-radius:50%;
  border:1px solid var(--border);
  display:flex; align-items:center; justify-content:center;
  font-size:0.75rem;
  text-transform:uppercase;
  transition:border-color 0.3s ease, color 0.3s ease;
}
.nexer-social-icon:hover{ border-color:var(--secondary); color:var(--secondary); }

.nexer-contact__form{
  background:rgba(16,20,42,0.55);
  border:1px solid var(--border);
  border-radius:var(--radius-lg);
  padding:40px;
  backdrop-filter:blur(16px);
  display:flex;
  flex-direction:column;
  gap:26px;
}

.nexer-field{ position:relative; }
.nexer-field input, .nexer-field textarea{
  width:100%;
  background:rgba(255,255,255,0.03);
  border:1px solid var(--border);
  border-radius:var(--radius-sm);
  padding:18px 16px 10px;
  color:var(--text);
  font-size:0.98rem;
  transition:border-color 0.3s ease, transform 0.3s ease, box-shadow 0.3s ease;
}
.nexer-field textarea{ resize:vertical; min-height:110px; }
.nexer-field input:focus, .nexer-field textarea:focus{
  outline:none;
  border-color:var(--secondary);
  transform:scale(1.01);
  box-shadow:0 0 0 4px rgba(0,194,255,0.12);
}
.nexer-field label{
  position:absolute;
  left:16px; top:18px;
  color:var(--muted);
  font-size:0.98rem;
  pointer-events:none;
  transition:transform 0.25s var(--ease-out), font-size 0.25s var(--ease-out), color 0.25s var(--ease-out);
  transform-origin:left top;
}
.nexer-field input:focus + label,
.nexer-field input:not(:placeholder-shown) + label,
.nexer-field input.has-value + label,
.nexer-field textarea:focus + label,
.nexer-field textarea:not(:placeholder-shown) + label,
.nexer-field textarea.has-value + label{
  transform:translateY(-9px) scale(0.78);
  color:var(--secondary);
}

.nexer-contact__submit{ position:relative; margin-top:6px; }
.nexer-btn__loader{
  display:none;
  width:16px; height:16px;
  border-radius:50%;
  border:2px solid rgba(255,255,255,0.35);
  border-top-color:#fff;
  animation:nexerSpin 0.7s linear infinite;
}
.nexer-contact__submit.is-loading .nexer-btn__label{ opacity:0.6; }
.nexer-contact__submit.is-loading .nexer-btn__loader{ display:inline-block; }
@keyframes nexerSpin{ to{ transform:rotate(360deg); } }

.nexer-contact__form-status{ font-size:0.9rem; min-height:1.4em; }
.nexer-contact__form-status.is-success{ color:#3ddc84; }
.nexer-contact__form-status.is-error{ color:#ff6b6b; }

@media (max-width:900px){
  .nexer-contact{ padding:100px 20px; }
  .nexer-contact__inner{ grid-template-columns:1fr; gap:50px; }
  .nexer-contact__form{ padding:28px; }
}

/* =========================================================================
   Booking (Calendly)
   ========================================================================= */
.nexer-booking{ padding:160px 32px; position:relative; }
.nexer-booking__inner{ max-width:900px; margin:0 auto; }

.nexer-booking__intro{ text-align:center; max-width:640px; margin:0 auto 50px; }
.nexer-booking__intro .nexer-eyebrow::before{ display:none; }
.nexer-booking__desc{ margin-top:16px; color:var(--muted); }

.nexer-booking__card{
  position:relative;
  background:rgba(16,20,42,0.55);
  border:1px solid var(--border);
  border-radius:var(--radius-lg);
  padding:16px;
  backdrop-filter:blur(16px);
  box-shadow:0 30px 80px rgba(0,0,0,0.35);
  overflow:hidden;
}
.nexer-booking__card::before{
  content:"";
  position:absolute; inset:-1.5px;
  border-radius:inherit;
  padding:1.5px;
  background:var(--gradient-brand);
  opacity:0.35;
  -webkit-mask:linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite:xor;
  mask-composite:exclude;
  pointer-events:none;
}
.nexer-booking__card .calendly-inline-widget{
  width:100%;
  border-radius:var(--radius-md);
  overflow:hidden;
}

@media (max-width:900px){
  .nexer-booking{ padding:100px 20px; }
  .nexer-booking__card{ padding:10px; }
  .nexer-booking__card .calendly-inline-widget{ height:640px !important; }
}

/* =========================================================================
   Footer
   ========================================================================= */
.nexer-footer{ position:relative; padding-top:80px; margin-top:60px; }

.nexer-footer__glow-line{
  position:absolute;
  top:0; left:10%; right:10%;
  height:1px;
  background:var(--gradient-brand);
  background-size:200% 100%;
  animation:nexerGradientShift 6s linear infinite;
}

.nexer-footer__inner{
  max-width:1320px;
  margin:0 auto;
  padding:0 32px;
  display:grid;
  grid-template-columns:1.4fr 1fr 1fr 1fr;
  gap:48px;
}

.nexer-footer__desc{ color:var(--muted); font-size:0.92rem; margin:18px 0 22px; max-width:340px; }
.nexer-footer__heading{ font-size:0.95rem; margin-bottom:18px; }
.nexer-footer__links{ display:flex; flex-direction:column; gap:12px; }
.nexer-footer__links a{ color:var(--muted); font-size:0.92rem; }
.nexer-footer__links a:hover{ color:var(--secondary); }
.nexer-footer__links li{ color:var(--muted); font-size:0.92rem; }

.nexer-footer__bottom{
  max-width:1320px;
  margin:70px auto 0;
  padding:26px 32px;
  border-top:1px solid var(--border);
  display:flex;
  align-items:center;
  justify-content:space-between;
  flex-wrap:wrap;
  gap:12px;
  font-size:0.85rem;
  color:var(--muted);
}
.nexer-footer__legal{ display:flex; gap:20px; }
.nexer-footer__legal a:hover{ color:var(--secondary); }

@media (max-width:900px){
  .nexer-footer__inner{ grid-template-columns:1fr 1fr; }
}
@media (max-width:560px){
  .nexer-footer__inner{ grid-template-columns:1fr; }
}

/* =========================================================================
   Inner pages — banner + section shell (Services, About, Contact, single
   Service — <Niche> templates)
   ========================================================================= */
.nexer-page-hero{
  position:relative;
  padding:200px 32px 100px;
  overflow:hidden;
  text-align:center;
}
.nexer-page-hero__bg{ position:absolute; inset:0; z-index:0; }
.nexer-page-hero__bg::before{
  content:"";
  position:absolute;
  top:-160px; left:50%;
  width:640px; height:640px;
  transform:translateX(-50%);
  border-radius:50%;
  background:var(--gradient-glow);
  filter:blur(20px);
}
.nexer-page-hero__grid{
  position:absolute; inset:0;
  background-image:
    linear-gradient(rgba(255,255,255,0.035) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,0.035) 1px, transparent 1px);
  background-size:56px 56px;
  mask-image:radial-gradient(ellipse at center, black 0%, transparent 75%);
}
.nexer-page-hero__inner{
  position:relative;
  z-index:1;
  max-width:820px;
  margin:0 auto;
}
.nexer-page-hero__title{
  font-size:clamp(2.6rem, 6vw, 4.4rem);
  font-weight:800;
  line-height:1.05;
}
.nexer-page-hero__intro{
  margin-top:22px;
  color:var(--muted);
  font-size:1.1rem;
  max-width:640px;
  margin-left:auto;
  margin-right:auto;
}

.nexer-page-section{ padding:100px 32px; }
.nexer-page-section--alt{ background:var(--surface); }
.nexer-page-section__inner{ max-width:1320px; margin:0 auto; }
.nexer-page-section__inner--split{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:60px;
}
.nexer-page-block__body{ margin-top:16px; color:var(--muted); }

/* "What's Included" feature checklist — shared by every niche service page */
.nexer-page-features{
  margin-top:44px;
  display:grid;
  grid-template-columns:repeat(2, 1fr);
  gap:18px;
}
.nexer-page-features li{
  position:relative;
  display:flex;
  align-items:flex-start;
  gap:14px;
  padding:20px 22px;
  background:rgba(16,20,42,0.5);
  border:1px solid var(--border);
  border-radius:var(--radius-md);
  font-size:0.95rem;
  line-height:1.5;
  transition:transform 0.3s var(--ease-out), border-color 0.3s var(--ease-out);
}
.nexer-page-features li:hover{ transform:translateY(-3px); border-color:rgba(155,92,255,0.35); }
.nexer-page-features li::before{
  content:"\2713";
  flex-shrink:0;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:24px; height:24px;
  margin-top:1px;
  border-radius:50%;
  background:var(--gradient-brand);
  color:#fff;
  font-size:0.7rem;
  font-weight:800;
}

/* Testimonial quote card — shared by every niche service page */
.nexer-page-testimonial__card{
  position:relative;
  max-width:820px;
  margin:0 auto;
  padding:56px 48px;
  background:rgba(16,20,42,0.55);
  border:1px solid var(--border);
  border-radius:var(--radius-lg);
  backdrop-filter:blur(16px);
  text-align:center;
}
.nexer-quote-card__stars{
  color:#ffb400;
  letter-spacing:5px;
  font-size:1rem;
  margin-bottom:26px;
}
.nexer-quote-card__quote{
  font-size:clamp(1.15rem, 2.2vw, 1.5rem);
  font-weight:600;
  line-height:1.55;
  color:var(--text);
}
.nexer-quote-card__author{
  margin-top:32px;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:14px;
}
.nexer-quote-card__avatar{
  flex-shrink:0;
  width:48px; height:48px;
  border-radius:50%;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  background:var(--gradient-brand);
  color:#fff;
  font-weight:700;
  font-size:1.05rem;
}
.nexer-quote-card__author > div{ text-align:left; }
.nexer-quote-card__name{ display:block; font-weight:700; font-style:normal; }
.nexer-quote-card__role{ display:block; font-size:0.85rem; color:var(--muted); }

@media (max-width:700px){
  .nexer-page-features{ grid-template-columns:1fr; }
  .nexer-page-testimonial__card{ padding:40px 24px; }
}

/* Services grid — 2 cards per row, image + heading + text + CTA */
.nexer-services-grid{
  display:grid;
  grid-template-columns:repeat(2, 1fr);
  gap:40px;
}
.nexer-service-card{
  display:flex;
  flex-direction:column;
  background:rgba(16,20,42,0.5);
  border:1px solid var(--border);
  border-radius:var(--radius-lg);
  overflow:hidden;
  transition:transform 0.35s var(--ease-out), border-color 0.35s var(--ease-out);
}
.nexer-service-card:hover{ transform:translateY(-6px); border-color:rgba(255,255,255,0.18); }
.nexer-service-card:last-child:nth-child(odd){ grid-column:1 / -1; }
.nexer-service-card:last-child:nth-child(odd) .nexer-service-card__image{ aspect-ratio:21/9; }

.nexer-service-card__image{ aspect-ratio:4/3; overflow:hidden; }
.nexer-service-card__image img{ width:100%; height:100%; object-fit:cover; }

.nexer-service-card__body{ padding:32px; display:flex; flex-direction:column; flex:1; }
.nexer-service-card__title{ font-size:1.6rem; font-weight:700; margin-bottom:12px; }
.nexer-service-card__desc{ color:var(--muted); flex:1; margin-bottom:26px; }
.nexer-service-card__cta{ align-self:flex-start; }

/* Overview cards used prior to real images being uploaded (kept for reuse) */
.nexer-services-overview__grid{
  display:grid;
  grid-template-columns:repeat(2, 1fr);
  gap:40px;
}
.nexer-overview-card{
  background:rgba(16,20,42,0.5);
  border:1px solid var(--border);
  border-radius:var(--radius-lg);
  padding:32px;
}
.nexer-overview-card__image{ aspect-ratio:16/9; border-radius:var(--radius-md); margin-bottom:24px; }
.nexer-overview-card__title{ font-size:1.5rem; font-weight:700; margin-bottom:12px; }
.nexer-overview-card__desc{ color:var(--muted); margin-bottom:20px; }
.nexer-overview-card__link{ font-weight:600; color:var(--secondary); }

/* Bottom CTA band shared by every inner page */
.nexer-cta-band{
  position:relative;
  padding:90px 32px;
  text-align:center;
  overflow:hidden;
  background:var(--surface-2);
}
.nexer-cta-band__sweep{
  position:absolute; inset:0;
  background:var(--gradient-glow);
  opacity:0.5;
}
.nexer-cta-band__inner{ position:relative; z-index:1; max-width:680px; margin:0 auto; }
.nexer-cta-band__title{ font-size:clamp(1.8rem, 4vw, 2.6rem); font-weight:700; }
.nexer-cta-band__desc{ margin:18px 0 32px; color:var(--muted); }

@media (max-width:900px){
  .nexer-page-hero{ padding:160px 24px 80px; }
  .nexer-page-section{ padding:70px 24px; }
  .nexer-page-section__inner--split{ grid-template-columns:1fr; gap:40px; }
  .nexer-services-grid, .nexer-services-overview__grid{ grid-template-columns:1fr; }
  .nexer-service-card:last-child:nth-child(odd){ grid-column:auto; }
  .nexer-service-card:last-child:nth-child(odd) .nexer-service-card__image{ aspect-ratio:4/3; }
}

/* "Why Nexer" quad cards — About Us page */
.nexer-about-quad__grid{
  margin-top:56px;
  display:grid;
  grid-template-columns:repeat(2, 1fr);
  gap:32px;
}

.nexer-quad-card{
  position:relative;
  background:rgba(16,20,42,0.55);
  border:1px solid var(--border);
  border-radius:var(--radius-lg);
  padding:44px 40px;
  backdrop-filter:blur(16px);
  overflow:hidden;
  transition:transform 0.4s var(--ease-out), border-color 0.4s var(--ease-out), box-shadow 0.4s var(--ease-out);
}
.nexer-quad-card::before{
  content:"";
  position:absolute;
  top:-60px; right:-60px;
  width:180px; height:180px;
  border-radius:50%;
  background:var(--gradient-glow);
  opacity:0.5;
  pointer-events:none;
  transition:opacity 0.4s var(--ease-out);
}
.nexer-quad-card:hover{
  transform:translateY(-8px);
  border-color:rgba(155,92,255,0.35);
  box-shadow:0 24px 60px rgba(0,0,0,0.35);
}
.nexer-quad-card:hover::before{ opacity:0.9; }
.nexer-quad-card > *{ position:relative; z-index:1; }

.nexer-quad-card__num{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:52px;
  height:52px;
  padding:0 6px;
  margin-bottom:22px;
  border-radius:14px;
  font-size:1.1rem;
  font-weight:800;
  background:var(--gradient-brand);
  color:#fff;
  box-shadow:0 8px 24px rgba(110,58,255,0.35);
}

.nexer-quad-card__title{ font-size:1.4rem; font-weight:700; margin-bottom:14px; }
.nexer-quad-card__body{ color:var(--muted); margin-bottom:24px; }

.nexer-story-card__features{ display:flex; flex-direction:column; gap:12px; }
.nexer-story-card__features li{
  position:relative;
  padding-left:26px;
  font-size:0.92rem;
  color:var(--text);
}
.nexer-story-card__features li::before{
  content:"✓";
  position:absolute; left:0; top:0;
  color:var(--secondary);
  font-weight:700;
}

@media (max-width:900px){
  .nexer-about-quad__grid{ grid-template-columns:1fr; gap:24px; }
  .nexer-quad-card{ padding:36px 28px; }
}

/* =========================================================================
   Reduced motion
   ========================================================================= */
@media (prefers-reduced-motion: reduce){
  *, *::before, *::after{
    animation-duration:0.001ms !important;
    animation-iteration-count:1 !important;
    transition-duration:0.001ms !important;
    scroll-behavior:auto !important;
  }
}
