/* ===============================
   NexTA - Contact Section (Abstract Premium v6)
   White Marble Shine Fill + Gradient Mesh
   Performance Optimized
=============================== */

.contact-section {
  padding: clamp(60px, 10vw, 120px) 20px;
  text-align: center;
  position: relative;
  overflow: hidden;
  z-index: 1;

  /* Base white polished marble texture */
  background: #ffffff;
  background-image:
    url("https://www.transparenttextures.com/patterns/marble.png"),
    linear-gradient(180deg, rgba(255,255,255,0.9), rgba(255,255,255,1));
  background-blend-mode: overlay;
  background-size: cover;
}

/* Abstract colorful mesh background */
.contact-section::before {
  content: "";
  position: absolute;
  inset: -20%;
  background: radial-gradient(circle at 15% 25%, rgba(106,78,230,0.25) 0%, transparent 70%),
              radial-gradient(circle at 85% 35%, rgba(175,44,238,0.2) 0%, transparent 70%),
              radial-gradient(circle at 50% 85%, rgba(3,187,124,0.22) 0%, transparent 60%);
  filter: blur(80px); /* ✅ heavy but looks smooth on desktop */
  opacity: 0.9;
  z-index: 0;
}

/* Subtle dot grid overlay */
.contact-section::after {
  content: "";
  position: absolute;
  inset: 0;
  background-image: radial-gradient(rgba(0,0,0,0.05) 1px, transparent 1px);
  background-size: 32px 32px;
  opacity: 0.08;
  z-index: 0;
  mix-blend-mode: multiply;
}

/* Section Header */
.contact-header {
  position: relative;
  z-index: 2;
}
.contact-header h2 {
  font-size: clamp(28px, 3vw, 42px);
  font-weight: 800;
  margin-bottom: 15px;
  background: linear-gradient(90deg, #6a4ee6, #af2cee, #03bb7c);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  filter: drop-shadow(0 2px 6px rgba(0,0,0,0.1));
}
.contact-header p {
  font-size: 18px;
  color: #444;
  margin-bottom: 50px;
  line-height: 1.6;
}

/* Contact Form */
.contact-form {
  max-width: 900px;
  margin: 0 auto;
  display: grid;
  gap: 28px;
  position: relative;
  z-index: 2;
}
.form-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 28px;
}
.form-group {
  position: relative;
  display: flex;
  flex-direction: column;
}
.form-group.full {
  grid-column: 1 / -1;
}
.form-group input,
.form-group textarea {
  width: 100%;
  padding: 18px 20px;
  border-radius: 14px;
  border: 2px solid rgba(224,228,240,0.8);

  /* Shiny marble-like input background */
  background: rgba(255,255,255,0.92);
  background-image:
    url("https://www.transparenttextures.com/patterns/marble.png"),
    linear-gradient(180deg, rgba(255,255,255,0.95), rgba(255,255,255,1));
  background-blend-mode: overlay;
  backdrop-filter: blur(10px); /* ⚠️ expensive on mobile, will disable below */

  font-size: 16px;
  transition: all 0.35s ease;
}
.form-group textarea {
  resize: none;
  min-height: 160px;
}

/* Hover effects for inputs */
.form-group input:hover,
.form-group textarea:hover {
  background: #fff;
  border-color: transparent;
  background-image: linear-gradient(#fff, #fff),
                    linear-gradient(135deg, rgba(106,78,230,0.25), rgba(175,44,238,0.2), rgba(3,187,124,0.25));
  background-origin: border-box;
  background-clip: padding-box, border-box;
  box-shadow: 0 4px 14px rgba(106,78,230,0.12),
              0 6px 20px rgba(175,44,238,0.1),
              0 8px 24px rgba(3,187,124,0.08);
}

/* Floating label */
.form-group label {
  position: absolute;
  top: 50%;
  left: 20px;
  transform: translateY(-50%);
  color: #888;
  font-size: 15px;
  pointer-events: none;
  transition: all 0.3s ease;
  padding: 0 4px;
}
.form-group input:focus + label,
.form-group input:not(:placeholder-shown) + label,
.form-group textarea:focus + label,
.form-group textarea:not(:placeholder-shown) + label {
  top: -10px;
  left: 16px;
  font-size: 12px;
  font-weight: 600;
  color: #6a4ee6;
  background: #fff;
  border-radius: 4px;
}

/* Focus effect */
.form-group input:focus,
.form-group textarea:focus {
  border-color: transparent;
  outline: none;
  background-image: linear-gradient(#fff, #fff),
                    linear-gradient(135deg, #03bb7c, #6a4ee6, #af2cee);
  background-origin: border-box;
  background-clip: padding-box, border-box;
  box-shadow: 0 6px 18px rgba(106,78,230,0.12);
}

/* ===============================
   Unified CTA Buttons
=============================== */
.btn-submit,
.careers-button,
.view-more-button {
  display: inline-block;
  padding: 16px 44px;
  border-radius: 50px;
  font-size: 15px;
  font-weight: 600;
  color: #fff;
  background: linear-gradient(135deg, #03bb7c, #6a4ee6, #af2cee);
  background-size: 200% 200%;
  border: none;
  cursor: pointer;
  box-shadow: 0 10px 24px rgba(0,0,0,0.18);
  letter-spacing: 0.6px;
  transition: all 0.4s ease;
  position: relative;
  overflow: hidden;
  text-decoration: none;
  border: 1px solid rgba(255,255,255,0.6);
}

/* Shine streak */
.btn-submit::before,
.careers-button::before,
.view-more-button::before {
  content: "";
  position: absolute;
  top: -50%;
  left: -30%;
  width: 60px;
  height: 200%;
  background: rgba(255,255,255,0.75);
  transform: rotate(25deg);
  opacity: 0;
  transition: all 0.6s ease;
}
.btn-submit:hover::before,
.careers-button:hover::before,
.view-more-button:hover::before {
  left: 130%;
  opacity: 1;
}

/* Glow pulse */
.btn-submit::after,
.careers-button::after,
.view-more-button::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
  background: radial-gradient(circle, rgba(255,255,255,0.25), transparent 70%);
  opacity: 0;
  transition: opacity 0.5s ease;
}
.btn-submit:hover::after,
.careers-button:hover::after,
.view-more-button:hover::after {
  opacity: 1;
  animation: pulseGlow 1.2s ease-out forwards;
}
@keyframes pulseGlow {
  0% { transform: scale(0.9); opacity: 0.6; }
  100% { transform: scale(1.3); opacity: 0; }
}

.btn-submit:hover,
.careers-button:hover,
.view-more-button:hover {
  transform: translateY(-3px);
  box-shadow: 0 14px 32px rgba(0,0,0,0.25);
  background: linear-gradient(135deg, #af2cee, #6a4ee6, #03bb7c);
}

/* ===============================
   Responsive (Performance Tweaks)
=============================== */
@media (max-width: 768px) {
  .form-row {
    grid-template-columns: 1fr;
    gap: 20px;
  }
  .btn-submit,
  .careers-button,
  .view-more-button {
    font-size: 14px;
    padding: 12px 28px;
  }

  /* 🚀 Performance boost: disable heavy effects on mobile */
  .contact-section::before {
    filter: none; /* remove big blur */
    opacity: 0.6; /* softer background glow */
  }
  .form-group input,
  .form-group textarea {
    backdrop-filter: none; /* no GPU blur */
    background: #fff; /* clean white fallback */
  }
}

/* --------------------------------
   NexTA — Contact (Visual polish)
   - Layout unchanged
   - Unified brand band across page
   - Premium hero depth (title)
   - No divider lines around heading
---------------------------------- */

:root{
  --ink:#0b1220; --ink-sub:#4f5b6d; --ink-soft:#6b7280;

  /* Brand anchors */
  --g1:#6a4ee6; --g2:#af2cee; --g3:#03bb7c;

  --panel:#ffffff; --border:rgba(12,18,32,.10);
  --ring: rgba(106,78,230,.25);
  --shadow: 0 18px 44px rgba(12,18,32,.08);

  /* Section band */
  --band-top:#F3EEFF;
  --band-btm:#FFFFFF;
  --hairline: color-mix(in oklab, var(--g1) 35%, transparent);

  /* Consistent container width for hero + grid */
  --contact-max: 1200px;
  --page-gutter: 20px;
}

/* Global safety */
html, body { overflow-x: hidden; height: 100%; }
body{ display:flex; flex-direction:column; background:#fff; }
#nxHeader{ flex:0 0 auto; }
#nxContentWrapper{ flex:1 0 auto; }
#nxFooter{ flex:0 0 auto; }

/* Remove stray greys just in case */
#nx-contact, .nx-fullbleed { background-color: transparent !important; }

/* ---------------- Hero (same spacing; refined) ---------------- */
.nx-contact-hero{
  padding: clamp(16px, 3.2vw, 36px) 20px 0;
  position: relative;
  isolation: isolate;
}

/* soft on-brand glow behind the hero area */
.nx-contact-hero::before{
  content:"";
  position:absolute; inset:0 0 auto;
  height: clamp(220px, 36vw, 360px);
  pointer-events:none; z-index:-1;
  background:
    radial-gradient(900px 360px at 50% -140px, rgba(132,105,255,0.22), transparent 65%),
    radial-gradient(600px 260px at 15% 40%, rgba(132,105,255,0.10), transparent 70%),
    radial-gradient(620px 240px at 85% 42%, rgba(0,221,168,0.10), transparent 70%);
  filter: saturate(108%);
  opacity:.9;
}

/* REMOVE hairline under hero (prevents divider feel) */
.nx-contact-hero::after{ display:none !important; }

.nx-contact-hero__inner{
  max-width: var(--contact-max);
  padding: 0 var(--page-gutter);
  margin: 0 auto;
  text-align: center;
}

/* Glassy eyebrow pill (clean; no dot) */
.nx-contact-hero .nx-eyebrow{
  display:inline-block;
  margin:0 0 10px; padding:6px 10px;
  font-weight:900; letter-spacing:.18em; font-size:12px; text-transform:uppercase;
  color: color-mix(in oklab, var(--g1) 70%, var(--ink));
  background: linear-gradient(180deg, rgba(255,255,255,.55) 0%, rgba(255,255,255,.35) 100%);
  border:1px solid color-mix(in oklab, var(--g1) 25%, rgba(12,18,32,.10));
  border-radius:999px; backdrop-filter: blur(4px);
}
.nx-contact-hero .nx-eyebrow::before{ display:none !important; } /* ensure no dot */

/* Hero Title — gradient + subtle sheen + DEPTH */
.nx-contact-hero .nx-title{
  position:relative; display:inline-block; margin:0;
  font-weight:900; font-size: clamp(38px, 6vw, 64px);
  line-height:1.05; letter-spacing:-.5px;

  /* brand gradient + narrow specular bar */
  background:
    linear-gradient(90deg,var(--g1),var(--g2),var(--g3)),
    linear-gradient(120deg, rgba(255,255,255,0) 46%, rgba(255,255,255,.65) 50%, rgba(255,255,255,0) 54%);
  background-size: 200% 100%, 240% 100%;
  background-position: 0% 0%, -180% 0%;
  -webkit-background-clip:text; background-clip:text;
  -webkit-text-fill-color:transparent;

  /* micro-stroke + LAYERED shadow for depth (requested) */
  -webkit-text-stroke: 0.8px rgba(22,16,60,.06);
  text-shadow:
    0 1px 0 rgba(255,255,255,.40),     /* crisp top edge */
    0 6px 14px rgba(106,78,230,.18),   /* brand lift */
    0 18px 42px rgba(12,18,32,.18);    /* ambient depth */

  filter: saturate(108%);
}

/* gentle occasional sheen */
@keyframes nxSheen {
  0%, 12%   { background-position: 0% 0%, -180% 0%; }
  22%, 24%  { background-position: 0% 0%, 150% 0%; }
  100%      { background-position: 0% 0%, 150% 0%; }
}
.nx-contact-hero .nx-title{ animation: nxSheen 8s ease-in-out infinite; }

/* REMOVE glossy strip under title (prevents divider) */
.nx-contact-hero .nx-title::after{ display:none !important; }

.nx-contact-hero .nx-lead{
  margin:14px auto 0; color:var(--ink-sub);
  font-size: clamp(15px,1.2vw,18px); max-width:70ch;
  text-wrap: balance;
  text-shadow: 0 1px 0 rgba(255,255,255,.45);
}

/* ---------------- Section (layout same; page-wide painter lives on wrapper) ---------------- */
#nx-contact{
  padding: clamp(24px, 4vw, 40px) 20px clamp(22px, 4vw, 40px);
  position: relative; z-index: 1;
}
#nx-contact .nx-contact__grid{
  display:grid; grid-template-columns: 1.1fr .9fr; gap: clamp(14px, 2.4vw, 24px);
  max-width: var(--contact-max); margin: 0 auto; padding: 0 var(--page-gutter);
}

/* Cards */
#nx-contact .nxc-form,
#nx-contact .nxc-card{
  background: var(--panel);
  border:1px solid var(--border);
  border-radius: 20px;
  box-shadow: var(--shadow);
}

/* ---------------- Form (unchanged) ---------------- */
#nx-contact .nxc-form{ padding: clamp(14px,2vw,20px); }
#nx-contact .nxc-row{ display:grid; grid-template-columns:1fr 1fr; gap: 14px; }
#nx-contact .nxc-field{ position:relative; }
#nx-contact .nxc-full{ grid-column:1/-1; }
#nx-contact .nxc-field input,
#nx-contact .nxc-field textarea{
  width:100%; padding:16px 16px; border-radius:12px;
  border:1px solid var(--border);
  background:#fff; font:inherit; color:var(--ink);
  transition: box-shadow .2s ease, border-color .2s ease, background .2s ease;
}
#nx-contact .nxc-field textarea{ min-height:160px; resize:none; }
#nx-contact .nxc-field label{
  position:absolute; left:16px; top:50%; transform: translateY(-50%);
  color:#8a93a3; font-size:14px; pointer-events:none; transition:.2s ease; background:#fff; padding:0 6px;
}
#nx-contact .nxc-field input:focus + label,
#nx-contact .nxc-field input:not(:placeholder-shown) + label,
#nx-contact .nxc-field textarea:focus + label,
#nx-contact .nxc-field textarea:not(:placeholder-shown) + label{
  top:-10px; font-size:12px; font-weight:700; color:var(--g1); border-radius:4px;
}
#nx-contact .nxc-field input:focus,
#nx-contact .nxc-field textarea:focus{
  outline:none; border-color: color-mix(in oklab, var(--g1) 50%, transparent);
  box-shadow: 0 0 0 3px var(--ring);
}
#nx-contact .nxc-actions{
  margin-top: 4px; display:flex; align-items:center; gap: 10px; flex-wrap:wrap;
}
#nx-contact .nx-btn{
  --padx:26px; --pady:12px;
  display:inline-flex; align-items:center; justify-content:center; gap:10px;
  padding: var(--pady) var(--padx); border-radius:999px; font-weight:900;
  color:#fff; background-image: linear-gradient(90deg,var(--g1),var(--g2),var(--g3)); background-size:220% 100%;
  border:1px solid color-mix(in oklab,var(--g1) 20%, transparent);
  box-shadow: 0 12px 34px rgba(106,78,230,.18);
  transition: transform .15s ease, background-position .35s ease, box-shadow .2s ease;
  text-decoration:none; filter: drop-shadow(0 10px 18px rgba(106,78,230,.12));
}
#nx-contact .nx-btn:hover{
  transform: translateY(-2px); background-position: 100% 50%;
  box-shadow: 0 18px 44px rgba(106,78,230,.26);
  filter: drop-shadow(0 16px 26px rgba(106,78,230,.20));
}
#nx-contact .nx-btn--lite{ background:#fff; color: var(--g1); border:1px solid var(--border); box-shadow:none; }
#nx-contact .nx-btn--lite:hover{ transform:translateY(-1px); }
#nx-contact .nx-btn--brand{ background-image: linear-gradient(90deg,var(--g1),var(--g2),var(--g3)); color:#fff; border:none; box-shadow:0 12px 34px rgba(106,78,230,.18); }
#nx-contact .nx-btn--brand:hover{ transform:translateY(-2px); background-position:100% 50%; box-shadow:0 18px 44px rgba(106,78,230,.28); }

#nx-contact .nxc-hint a{
  color: color-mix(in oklab, var(--g1) 60%, var(--g2) 40%);
  font-weight:700; text-decoration:none; border-bottom:1px dashed currentColor;
  padding-bottom:2px; text-underline-offset:3px; transition: color .25s ease, border-color .25s ease;
}
#nx-contact .nxc-hint a:hover{ color: color-mix(in oklab, var(--g3) 45%, var(--g2) 55%); border-color:currentColor; }

/* ---------------- Offices (unchanged layout) ---------------- */
#nx-contact .nxc-card{ padding: clamp(12px,1.8vw,18px); }
#nx-contact .nxc-card h3{ margin:0 0 10px; font-size:16px; font-weight:900; color:var(--ink); }
#nx-contact .nxc-offices{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
#nx-contact .nxc-office{
  position:relative; padding:12px; border-radius:14px; border:1px dashed var(--border); background:#fff;
  transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
  transform-origin:50% 100%; transform-style:preserve-3d; perspective:800px;
}
#nx-contact .nxc-office:hover{ transform: rotateX(2deg) rotateY(-2deg) translateY(-3px); box-shadow:0 12px 34px rgba(12,18,32,.08); border-color: color-mix(in oklab, var(--g1) 28%, var(--border)); }
#nx-contact .nxc-office:active { transform: translateY(0) scale(.995); }
#nx-contact .nxc-office h4{ margin:0 0 6px; font-size:15px; font-weight:900; color:var(--ink); }
#nx-contact .nxc-list{ list-style:none; padding:0; margin:0; display:grid; gap:5px; color:var(--ink-soft); font-size:13.5px; line-height:1.55; }
#nx-contact .nxc-list a{ color: color-mix(in oklab, var(--g1) 55%, var(--g3) 25%); text-decoration:none; border-bottom:1px dashed currentColor; }
#nx-contact .nxc-office::after{
  content:""; position:absolute; inset:0;
  background: linear-gradient(135deg, rgba(255,255,255,.26) 0%, rgba(255,255,255,0) 60%);
  opacity:0; border-radius:inherit; pointer-events:none; z-index:2; transition: opacity .3s ease;
}
#nx-contact .nxc-office:hover::after{ opacity:.3; }

/* ---------------- Map band (transparent; inherits page painter) ---------------- */
.nx-fullbleed{ position:relative; width:100%; left:0; margin-left:0; overflow:visible !important; }
.nx-mapband{
  --map-safe: 48px;
  position: relative;
  width: 100%;
  padding-left: var(--map-safe);
  padding-right: var(--map-safe);
  background: transparent !important;
  border: 0;
  overflow: visible !important;
  box-sizing: border-box;
}
.nx-mapband::before{ display:none !important; }
.nx-mapband iframe{
  position: relative !important;
  left: auto !important; right: auto !important;
  width: 100% !important;
  height: clamp(360px, 46vw, 560px) !important;
  margin: 0 !important; display: block; border: 0; transform: none !important;
}
@media (max-width:720px){ .nx-mapband{ --map-safe: 28px; } }

/* ---------------- Responsive grid (unchanged) ---------------- */
@media (max-width:1040px){ #nx-contact .nx-contact__grid{ grid-template-columns:1fr; } }
@media (max-width:720px){
  #nx-contact .nxc-row{ grid-template-columns:1fr; }
  #nx-contact .nxc-offices{ grid-template-columns:1fr; }
  #nx-contact .nx-btn{ --padx:22px; --pady:11px; }
}

/* A11y / motion */
*, *::before, *::after { box-sizing: border-box; }
#nx-contact, #nxContentWrapper { overflow-x: hidden; }
@media (prefers-reduced-motion: reduce){
  .nx-contact-hero .nx-title{ animation: none !important; }
  #nx-contact .nxc-office:hover { transform:none !important; }
}

/* --- Remove boxed background on inner grid if any --- */
#nx-contact .nx-contact__grid,
#nx-contact .nx-contact__grid::before,
#nx-contact .nx-contact__grid::after{
  background: transparent !important;
  box-shadow: none !important;
  border: 0 !important;
  backdrop-filter: none !important;
  border-radius: 0 !important;
}

/* ===== CONTACT PAGE: single painter for the whole page content ===== */
body.page-id-12 #nxContentWrapper{
  position: relative;
  background: transparent !important;
  isolation: isolate;
}
body.page-id-12 #nxContentWrapper::before{
  content:"";
  position:absolute; inset:0; left:50%; transform:translateX(-50%);
  width:100vw; height:100%; z-index:-1; pointer-events:none;

  /* Premium depth: vertical + soft glows
     TOP softened to pure white so there's NO divider with header */
  background:
    radial-gradient(600px 120px at 30% 180px, rgba(132,105,255,0.20), transparent 70%),
    radial-gradient(500px 100px at 74% 440px, rgba(0,221,168,0.18), transparent 70%),
    linear-gradient(180deg,
      #ffffff 0%,   /* top white to blend with header */
      #f5f0ff 10%,
      #ffffff 48%,
      #faf8ff 100%
    );
  background-blend-mode: soft-light;
  opacity: 1; filter: saturate(108%);
}

/* Slightly stronger lift under cards on this page */
body.page-id-12 #nx-contact .nxc-form,
body.page-id-12 #nx-contact .nxc-card{
  box-shadow: 0 10px 34px rgba(106,78,230,0.06);
}
/* Force eyebrow chip to stack above the title */
.nx-contact-hero__inner {
  display: flex;
  flex-direction: column;
  align-items: center;
}

.nx-contact-hero .nx-eyebrow {
  order: -1;               /* move it above title */
  margin-bottom: 8px;
}

/* =========================================================
   Office Cards — Luxury Shine Hover
   NexTA Contact Page
========================================================= */

#nx-contact .nxc-office {
  position: relative;
  padding: 14px;
  border-radius: 14px;
  border: 1px solid var(--border);
  background: #fff;
  transition:
    transform .25s ease,
    box-shadow .25s ease,
    border-color .25s ease,
    background .25s ease;
}

/* Soft glass + depth */
#nx-contact .nxc-office {
  background:
    linear-gradient(180deg, rgba(255,255,255,.65), rgba(255,255,255,.45)),
    #fff;
  backdrop-filter: blur(4px);
}


/* ==== Hover lift + deeper shadow ==== */
#nx-contact .nxc-office:hover {
  transform: translateY(-4px) scale(1.01);
  box-shadow:
    0 10px 26px rgba(12,18,32,.10),
    0 4px 16px rgba(106,78,230,.14);
  border-color: color-mix(in oklab, var(--g1) 35%, var(--border));
}


/* ==== Premium chroma highlight swipe ==== */
#nx-contact .nxc-office::before {
  content:"";
  position:absolute;
  inset:0;
  border-radius:inherit;
  pointer-events:none;
  background:
    linear-gradient(
      120deg,
      rgba(255,255,255,0) 35%,
      rgba(255,255,255,.45) 48%,
      rgba(255,255,255,0) 65%
    );
  opacity:0;
  transition:opacity .25s ease, transform .35s ease;
}

/* On hover, let the gloss slide */
#nx-contact .nxc-office:hover::before {
  opacity:.65;
  transform:translateX(8px);
}


/* ==== Subtle gradient border glow when hovering ==== */
#nx-contact .nxc-office::after {
  content:"";
  position:absolute;
  inset:-1px;
  border-radius:inherit;
  pointer-events:none;
  background:linear-gradient(135deg, var(--g1), var(--g2), var(--g3));
  opacity:0;
  transition:opacity .35s ease;
  mask:
    linear-gradient(#fff 0 0) content-box,
    linear-gradient(#fff 0 0);
  -webkit-mask-composite: xor;
          mask-composite: exclude;
  padding:1px;
}

#nx-contact .nxc-office:hover::after {
  opacity:.35;
}
#nx-contact .nxc-office:hover::before {
  animation: nxOfficeShine 0.8s ease;
}

@keyframes nxOfficeShine {
  0%   { transform:translateX(-20px); opacity:0; }
  50%  { opacity:.7; }
  100% { transform:translateX(20px); opacity:0; }
}
/* Prevent LinkedIn button from merging visually */
#nx-contact .nxc-badges {
  margin-top: 18px;
  padding-top: 6px;
}
/* Slight interactive tilt based on cursor */
#nx-contact .nxc-card:hover .nxc-office {
  transform: perspective(900px) rotateX(2.5deg) rotateY(-2.5deg) translateY(-4px) scale(1.01);
}
#nx-contact .nxc-office:hover {
  animation: nxPulse 0.9s ease forwards;
}

@keyframes nxPulse {
  0%   { filter: brightness(1); }
  40%  { filter: brightness(1.08) saturate(1.06); }
  100% { filter: brightness(1.02); }
}
#nx-contact .nxc-office::before {
  content:"";
  position:absolute;
  inset:0;
  border-radius:inherit;
  pointer-events:none;
  background:
    linear-gradient(
      to bottom,
      rgba(255,255,255,0.6) 0%,
      rgba(255,255,255,0) 20%,
      rgba(255,255,255,0) 80%,
      rgba(255,255,255,0.45) 100%
    );
  opacity:0;
  transition:opacity .25s ease, transform .35s ease;
}

#nx-contact .nxc-office:hover::before {
  opacity:.55;
}
#nx-contact .nxc-office::after {
  content:"";
  position:absolute;
  inset:0;
  border-radius:inherit;
  pointer-events:none;
  background:
    radial-gradient(250px 80px at 80% -10%, rgba(255,255,255,.6), transparent 70%),
    radial-gradient(250px 80px at 20% 110%, rgba(255,255,255,.45), transparent 70%);
  opacity:0;
  transition:opacity .25s ease;
}

#nx-contact .nxc-office:hover::after {
  opacity:.35;
}
#nx-contact .nxc-list li {
  line-height: 1.55;
  padding-bottom: 1px;
}

/* Move unified painter behind ENTIRE page (header included) */
body.page-id-12 {
  position: relative;
  background: transparent !important;
  isolation: isolate;
}

body.page-id-12::before{
  content:"";
  position: fixed;            /* key change */
  inset: 0;
  z-index: -1;
  pointer-events: none;
  width: 100vw;
  height: 100vh;


  background:
    radial-gradient(600px 120px at 30% 180px, rgba(132,105,255,0.20), transparent 70%),
    radial-gradient(500px 100px at 74% 440px, rgba(0,221,168,0.18), transparent 70%),
    linear-gradient(180deg,
      #ffffff 0%,
      #f5f0ff 10%,
      #ffffff 48%,
      #faf8ff 100%
    );

  background-blend-mode: soft-light;
  opacity: 1;
  filter: saturate(108%);
}
body.page-id-12 #nxContentWrapper::before{
  display: none !important;
}
/* Parallax target */
body.page-id-12::before {
  will-change: transform;
  transition: transform .25s ease-out;
transform:
  translateY(calc(var(--nxParallaxY, 0) * -1))
  translateX(calc(var(--nxParallaxX, 0)))
  rotateX(calc(var(--nxParallaxTilt, 0) / 50))
  scale(calc(1 + var(--nxBloom, 0) * .04))
  brightness(calc(1 + var(--nxBloom, 0) * .6));

}
/* ===========================
   Office Slider — Full Fixed CSS
   Drop into your nx-contact.css (end of file)
   =========================== */

/* ---- Container: keep all cards identical size ---- */
.nxc-office--slider {
  position: relative;
  overflow: hidden;
  display: flex;
  flex-direction: column; /* title (h4) on top, slider fills remaining area */
}

/* slider fills available card space */
.nxc-slider {
  flex: 1 1 auto;
  width: 100%;
  height: 100%;
}

/* viewport: horizontal row of slides */
.nxc-slider__viewport {
  display: flex;
  height: 100%;
  transition: transform 0.45s cubic-bezier(.2,.9,.25,1);
  will-change: transform;
}

/* each slide consumes entire viewport area */
.nxc-slide {
  border: 0;
  background: transparent;
  padding: 0;
  margin: 0;
  width: 100%;
  flex: 0 0 100%;
  height: 100%;
  position: relative;
  cursor: pointer;
  overflow: hidden;
  border-radius: inherit;
  -webkit-tap-highlight-color: transparent;
}

/* image: cover and center crop */
.nxc-slide img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  display: block;
  transition: transform 0.45s ease;
  backface-visibility: hidden;
  position: relative;
  z-index: 1; /* ensure image sits below arrows */
}

/* ---------- Caption: centered, wraps, readable ---------- */
.nxc-slide__caption {
  position: absolute;
  left: 12px;                 /* inset from left */
  right: 12px;                /* inset from right */
  bottom: 12px;
  transform: none;            /* allow natural flow between left/right */
  padding: 6px 10px;
  border-radius: 10px;
  background: rgba(10,8,20,0.56);
  color: #fff;
  font-size: 0.76rem;
  font-weight: 700;
  line-height: 1.12;
  letter-spacing: 0.15px;
  max-width: none;
  text-align: center;
  white-space: normal;
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  box-shadow: 0 8px 22px rgba(123,58,240,0.12);
  pointer-events: none; /* allow clicks through to slide */
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3; /* allow up to 3 lines; change to 2 if you prefer */
  max-height: calc(1.12em * 3); /* correspond to line clamp */
}

/* If you prefer exactly 2 lines, use:
   -webkit-line-clamp: 2;
   max-height: calc(1.12em * 2);
*/

/* ---------- Arrows inside the card (perfect circles) ---------- */
.nxc-slider__btn {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  z-index: 999 !important; /* ensure arrows appear above images */
  pointer-events: auto;
  border: none;
  width: 34px;
  height: 34px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 16px;
  color: #fff;
  background: linear-gradient(135deg, #7B3AF0 0%, #C84BFF 100%);
  box-shadow: 0 10px 28px rgba(123,58,240,0.24);
  cursor: pointer;
  transition: transform .18s ease, box-shadow .18s ease, opacity .18s ease;
  opacity: 1 !important;
  line-height: 1;
}

/* nudge from edges */
.nxc-slider__btn--prev { left: 10px; }
.nxc-slider__btn--next { right: 10px; }

/* SVG inside arrow — ensure stroke is white and visible on all backgrounds */
.nxc-slider__btn svg { display: block; width: 14px; height: 14px; }
.nxc-slider__btn svg [stroke], .nxc-slider__btn svg path, .nxc-slider__btn svg polyline {
  stroke: #ffffff;
  stroke-width: 2.6;
}

/* hover/focus */
.nxc-slider__btn:hover,
.nxc-slider__btn:focus {
  transform: translateY(-50%) scale(1.08);
  box-shadow: 0 14px 36px rgba(200,75,255,0.30);
  outline: none;
  opacity: 1;
}

/* hide internal arrows on smaller screens (touch swipe) */
@media (max-width: 700px) {
  .nxc-slider__btn { display: none; }
  .nxc-slide__caption { -webkit-line-clamp: 2; max-height: calc(1.12em * 2); } /* slightly tighter on small screens */
}

/* keep the slider & images using same rounding as parent card */
.nxc-office--slider,
.nxc-slider__viewport,
.nxc-slide,
.nxc-slide img {
  border-radius: inherit;
}

/* accessibility focus style for slide buttons */
.nxc-slide:focus {
  outline: 3px solid rgba(123,58,240,0.10);
  outline-offset: 6px;
}

/* ===========================
   Lightbox (fullscreen modal)
   =========================== */
.nxc-lightbox {
  position: fixed;
  inset: 0;
  display: none;
  align-items: center;
  justify-content: center;
  background: linear-gradient(180deg, rgba(10,10,16,0.72), rgba(10,10,16,0.86));
  z-index: 999999 !important; /* very high to override other UI */
  padding: 24px;
  -webkit-backdrop-filter: blur(6px);
  backdrop-filter: blur(6px);
  pointer-events: none; /* non-interactive until opened */
}

/* show when active */
.nxc-lightbox.is-open {
  display: flex;
  pointer-events: auto;
}

/* wrapper for image + caption */
.nxc-lightbox__imgwrap {
  max-width: 92vw;
  max-height: 86vh;
  width: auto;
  height: auto;
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-direction: column;
  gap: 12px;
}

/* displayed image */
.nxc-lightbox__img {
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
  border-radius: 12px;
  box-shadow: 0 24px 64px rgba(3,3,10,0.6);
  background: #000;
  transition: opacity 220ms ease, transform 220ms ease;
}

/* caption below the lightbox image */
.nxc-lightbox__caption {
  color: rgba(255,255,255,0.95);
  font-weight: 700;
  font-size: 1rem;
  text-align: center;
  max-width: 92%;
  line-height: 1.15;
  -webkit-font-smoothing: antialiased;
  margin: 0;
  padding: 0 6px;
}

/* ---------- Lightbox nav buttons (big circular) ---------- */
.nxc-lightbox__nav {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 46px;
  height: 46px;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: #fff;
  border: none;
  background: linear-gradient(135deg, #7B3AF0 0%, #C84BFF 100%);
  box-shadow: 0 12px 36px rgba(123,58,240,0.24);
  cursor: pointer;
  transition: transform .18s ease, box-shadow .18s ease;
  z-index: 1000000;
  line-height: 1;
  font-size: 22px;
}

/* positions */
.nxc-lightbox__nav--prev { left: 28px; }
.nxc-lightbox__nav--next { right: 28px; }

/* hover */
.nxc-lightbox__nav:hover,
.nxc-lightbox__nav:focus {
  transform: translateY(-50%) scale(1.08);
  box-shadow: 0 16px 46px rgba(200,75,255,0.36);
  outline: none;
}

/* ---------- Lightbox close button: glassy gradient circular ---------- */
.nxc-lightbox__close {
  position: absolute;
  top: 20px;
  right: 20px;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  border: none;
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  background: linear-gradient(135deg, rgba(123,58,240,0.92), rgba(200,75,255,0.92));
  color: #fff;
  font-size: 20px;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  box-shadow: 0 6px 22px rgba(123, 58, 240, 0.32);
  transition: transform .18s ease, box-shadow .18s ease;
  z-index: 1000001;
  line-height: 1;
}

/* close hover */
.nxc-lightbox__close:hover,
.nxc-lightbox__close:focus {
  transform: scale(1.06);
  box-shadow: 0 10px 30px rgba(200,75,255,0.42);
  outline: none;
}

/* small screens: move nav/close slightly inward */
@media (max-width: 900px) {
  .nxc-lightbox__nav--prev { left: 12px; }
  .nxc-lightbox__nav--next { right: 12px; }
  .nxc-lightbox__close { top: 12px; right: 12px; width: 40px; height: 40px; }
}

/* ensure the modal always sits on top and text rendering is smooth */
.nxc-lightbox,
.nxc-lightbox * {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

/* helper: prevent page scroll while lightbox open (JS toggles this class) */
html.nxc-lightbox-open { overflow: hidden !important; }
/* =========================
  Force arrows + captions visible override
  Paste at the END of your nx-contact.css
   ========================= */

/* Ensure slide images don't create new stacking context over controls */
.nxc-slide img {
  position: relative;  /* already set but re-affirm */
  z-index: 1 !important; /* keep image low */
  mix-blend-mode: normal;
}

/* Put arrows way on top — override any other z-index */
.nxc-slider__btn {
  z-index: 999999 !important;       /* extremely high to beat other UI */
  pointer-events: auto !important;  /* ensure clickable */
  opacity: 1 !important;
  box-shadow: 0 14px 40px rgba(123,58,240,0.28) !important;
  width: 36px !important;
  height: 36px !important;
}

/* Make sure SVG inside arrows is visible */
.nxc-slider__btn svg { display: block; width: 16px; height: 16px; }
.nxc-slider__btn svg [stroke], .nxc-slider__btn svg path, .nxc-slider__btn svg polyline {
  stroke: #fff !important;
  stroke-width: 2.8 !important;
}

/* Caption: bring above image and use stronger backdrop + readable weight */
.nxc-slide__caption {
  z-index: 999998 !important;            /* below arrows but above image */
  pointer-events: none;
  background: linear-gradient(180deg, rgba(6,6,10,0.72), rgba(10,10,20,0.56)) !important;
  color: #fff !important;
  font-size: 0.78rem !important;
  -webkit-line-clamp: 3;
  max-height: calc(1.12em * 3);
  left: 10px !important;
  right: 10px !important;
  bottom: 10px !important;
  transform: none !important;
  display: -webkit-box !important;
  -webkit-box-orient: vertical !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  box-shadow: 0 10px 34px rgba(0,0,0,0.35) !important;
}

/* If something else has transform or z-index on a parent, this helps */
.nxc-office--slider, .nxc-slider, .nxc-slider__viewport, .nxc-slide {
  transform-style: preserve-3d !important;
  -webkit-transform-style: preserve-3d !important;
  will-change: transform !important;
  z-index: 1; /* keep slide containers lower than the explicit controls above */
}

/* Make sure the lightbox is still the top-most overlay */
.nxc-lightbox {
  z-index: 2147483646 !important; /* near max — ensures modal sits above everything */
}

/* small-screen tweaks keep buttons visible */
@media (max-width: 700px) {
  .nxc-slider__btn { display: none; } /* keep hidden on small touch devices */
  .nxc-slide__caption { -webkit-line-clamp: 2; max-height: calc(1.12em * 2); }
}

/* Debug helper: add temporary outline to see stacking (remove after testing)
.nxc-slider__btn { outline: 2px solid rgba(255,255,255,0.06) !important; }
.nxc-slide__caption { outline: 1px dashed rgba(255,255,255,0.04) !important; }
*/
(function quickNormalizeSlider(){
  const slider = document.querySelector('.nxc-slider');
  if (!slider) { console.error('nxc: no slider'); return; }
  const viewport = slider.querySelector('.nxc-slider__viewport');
  const slides = Array.from(slider.querySelectorAll('.nxc-slide'));
  if (!viewport || !slides.length) { console.error('nxc: viewport/slides missing'); return; }

  // 1) compute visible index by bounding rects (best)
  const pRect = viewport.getBoundingClientRect();
  let bestIdx = 0;
  let bestDiff = Infinity;
  slides.forEach((s, i) => {
    const r = s.getBoundingClientRect();
    const diff = Math.abs(r.left - pRect.left);
    if (diff < bestDiff) { bestDiff = diff; bestIdx = i; }
  });

  // 2) fallback: find aria-hidden="false"
  if (bestDiff > 12) { // if not close, try aria-hidden
    const ariaIndex = slides.findIndex(s => s.getAttribute('aria-hidden') === 'false');
    if (ariaIndex >= 0) bestIdx = ariaIndex;
  }

  // 3) apply normalized transform using percent
  const applyIndex = (i) => {
    const idx = (i + slides.length) % slides.length;
    viewport.style.transition = 'transform 320ms ease';
    viewport.style.transform = `translateX(${ -idx * 100 }%)`;
    slides.forEach((s, j) => s.setAttribute('aria-hidden', j === idx ? 'false' : 'true'));
    console.log('nxc: normalised to index', idx);
    return idx;
  };

  const normalized = applyIndex(bestIdx);

  // 4) start autoplay using public API if available otherwise fallback manual interval
  const api = window.__nxcOfficeSlider || slider.__nxcAPI;
  if (api && typeof api.next === 'function') {
    if (api.startAutoplay && typeof api.startAutoplay === 'function') {
      api.startAutoplay();
      console.log('nxc: called api.startAutoplay()');
    } else {
      // create a safe interval that calls api.next()
      if (!slider.__nxc_autoplay) {
        slider.__nxc_autoplay = setInterval(() => { try { api.next(); } catch(e){ console.warn(e);} }, 3000);
        console.log('nxc: fallback autoplay started via api.next() every 3s');
      }
    }
  } else {
    // fallback - update transform periodically
    if (!slider.__nxc_manualInterval) {
      let i = normalized;
      slider.__nxc_manualInterval = setInterval(()=> {
        i = (i + 1) % slides.length;
        viewport.style.transform = `translateX(${ -i * 100 }%)`;
        slides.forEach((s, j) => s.setAttribute('aria-hidden', j === i ? 'false' : 'true'));
      }, 3000);
      console.log('nxc: manual fallback autoplay running');
    }
  }

  // 5) make overlay arrows visible (if present)
  const wrap = slider.querySelector('.nxc-slider__fallback-arrows');
  if (wrap) { wrap.style.visibility = 'visible'; wrap.style.opacity = '1'; }

  console.log('nxc: normalization complete');
})();
/* ====== REVERT: keep slides clipped, but force arrows above images ====== */

/* Keep slides contained (no leaking) */
.nxc-office--slider,
.nxc-slider {
  overflow: hidden !important;   /* keep images from leaking outside card */
  position: relative !important; /* ensure absolute children are positioned correctly */
}

/* Ensure slides/images remain below controls */
.nxc-slide,
.nxc-slider__viewport,
.nxc-slide img {
  z-index: 0 !important;
  position: relative !important;
}

/* Caption sits above image but below arrows */
.nxc-slide__caption {
  z-index: 2 !important;
  pointer-events: none;
}

/* Arrows: high z-index, visible, and positioned inside the card */
.nxc-slider__btn {
  position: absolute !important;
  z-index: 99999 !important;       /* high, but not page-max so modals/lightbox still win */
  pointer-events: auto !important;
  opacity: 1 !important;
  visibility: visible !important;
  width: 36px !important;
  height: 36px !important;
  top: 50% !important;
  transform: translateY(-50%) !important;
}

/* safe insets so arrows don't hug the card edge too tightly */
.nxc-slider__btn--prev { left: 12px !important; }
.nxc-slider__btn--next { right: 12px !important; }

/* SVG stroke guarantee */
.nxc-slider__btn svg [stroke],
.nxc-slider__btn svg path,
.nxc-slider__btn svg polyline {
  stroke: #fff !important;
  stroke-width: 2.8 !important;
}

/* small visual boost so they remain visible against any photo */
.nxc-slider__btn {
  box-shadow: 0 12px 36px rgba(12,12,18,0.36) !important;
  background: linear-gradient(135deg, rgba(123,58,240,0.95), rgba(200,75,255,0.95)) !important;
  backdrop-filter: blur(6px);
}

/* keep them hidden on small touch screens (optional) */
@media (max-width:700px) {
  .nxc-slider__btn { display: none !important; }
}
/* CONTACT ONLY: slider arrows/caption stacking */
body.page-id-12 #nx-contact .nxc-office--slider,
body.page-id-12 #nx-contact .nxc-slider{
  overflow: hidden !important;
  position: relative !important;
}

body.page-id-12 #nx-contact .nxc-slider__viewport,
body.page-id-12 #nx-contact .nxc-slide,
body.page-id-12 #nx-contact .nxc-slide img{
  position: relative !important;
  z-index: 0 !important;
}

body.page-id-12 #nx-contact .nxc-slide__caption{
  position: absolute;
  z-index: 2 !important;
  pointer-events: none;
}

body.page-id-12 #nx-contact .nxc-slider__btn{
  position: absolute !important;
  z-index: 50 !important; /* high enough inside card, but below lightbox */
  pointer-events: auto !important;
  opacity: 1 !important;
  visibility: visible !important;
  top: 50% !important;
  transform: translateY(-50%) !important;
  width: 36px !important;
  height: 36px !important;
  border-radius: 999px;
  box-shadow: 0 12px 36px rgba(12,12,18,0.36) !important;
  background: linear-gradient(135deg, rgba(123,58,240,0.95), rgba(200,75,255,0.95)) !important;
  backdrop-filter: blur(6px);
}

body.page-id-12 #nx-contact .nxc-slider__btn--prev{ left: 12px !important; }
body.page-id-12 #nx-contact .nxc-slider__btn--next{ right: 12px !important; }

body.page-id-12 #nx-contact .nxc-slider__btn svg [stroke],
body.page-id-12 #nx-contact .nxc-slider__btn svg path,
body.page-id-12 #nx-contact .nxc-slider__btn svg polyline{
  stroke: #fff !important;
  stroke-width: 2.8 !important;
}

@media (max-width:700px){
  body.page-id-12 #nx-contact .nxc-slider__btn{ display:none !important; }
}
/* ===============================
   Contact Status Message
   Bigger, clearer, premium
   Scoped to contact section only
=============================== */

#contact .contact-alert {
  max-width: 860px;
  margin: 0 auto 36px;
  padding: 20px 28px;
  border-radius: 18px;

  font-size: 17px;              /* ⬆ bigger text */
  font-weight: 600;
  line-height: 1.55;

  text-align: center;
  position: relative;

  background: #ffffff;
  border: 2px solid rgba(0,0,0,0.08);
  box-shadow: 0 10px 30px rgba(0,0,0,0.08);
}

#contact .contact-alert p {
  margin: 0;
}

/* ---------- Success ---------- */
#contact .contact-alert.contact-ok {
  border-color: rgba(3,187,124,0.45);
  background:
    linear-gradient(180deg, rgba(3,187,124,0.06), rgba(255,255,255,0.95));
  color: #046c4e;
}

/* ---------- Error ---------- */
#contact .contact-alert.contact-error {
  border-color: rgba(220,38,38,0.45);
  background:
    linear-gradient(180deg, rgba(220,38,38,0.06), rgba(255,255,255,0.95));
  color: #7f1d1d;
}

/* ---------- Fallback / Fail ---------- */
#contact .contact-alert:not(.contact-ok):not(.contact-error) {
  border-color: rgba(106,78,230,0.45);
  background:
    linear-gradient(180deg, rgba(106,78,230,0.06), rgba(255,255,255,0.95));
  color: #3c2fa3;
}

/* Subtle entry animation */
@keyframes contactStatusIn {
  from {
    opacity: 0;
    transform: translateY(-8px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

#contact .contact-alert {
  animation: contactStatusIn 0.35s ease-out both;
}

/* Mobile tuning */
@media (max-width: 768px) {
  #contact .contact-alert {
    font-size: 16px;
    padding: 18px 20px;
    margin-bottom: 28px;
  }
}

