/* ============================================================
   page-av.css — AV Solutions top-level single page (lists_av.htm)
   Prefix: .av_   Depends on global-new.css for .layout and the
   brand variables. No image assets: every "tech" surface here is
   CSS, so the page looks finished before any photography exists.
   ============================================================ */

.av_hero,
.av_chain,
.av_cta {
  --av-ink: #060c16;
  --av-ink-2: #0c1626;
  --av-line: rgba(120, 170, 220, 0.14);
  --av-dim: #8fa3ba;
}

/* ---------- shared section headers ---------- */
.av_sec_head { max-width: 720px; margin: 0 0 44px; }
.av_sec_tag {
  display: inline-block; font-size: 11px; font-weight: 800; letter-spacing: 0.18em;
  text-transform: uppercase; color: var(--primary-blue); margin-bottom: 12px;
  padding-left: 26px; position: relative;
}
.av_sec_tag::before {
  content: ''; position: absolute; left: 0; top: 50%; width: 18px; height: 2px;
  background: var(--primary-blue); border-radius: 1px;
}
.av_sec_head h2 {
  margin: 0; font-size: 34px; font-weight: 800; color: var(--text-dark);
  letter-spacing: -0.025em; line-height: 1.2;
}
.av_sec_head p { margin: 16px 0 0; font-size: 15.5px; line-height: 1.75; color: #6d7887; }
.av_sec_head_dark h2 { color: #fff; }
.av_sec_head_dark p { color: var(--av-dim); }

/* ---------- buttons ---------- */
.av_btn_primary, .av_btn_ghost {
  display: inline-flex; align-items: center; gap: 10px; text-decoration: none;
  padding: 15px 30px; border-radius: 50px; font-size: 14.5px; font-weight: 700;
  transition: transform 0.25s, box-shadow 0.25s, background 0.25s, border-color 0.25s;
}
.av_btn_primary {
  background: var(--primary-gradient); color: #fff !important;
  box-shadow: 0 10px 28px rgba(2, 160, 225, 0.32);
}
.av_btn_primary:hover { transform: translateY(-2px); box-shadow: 0 14px 34px rgba(2, 160, 225, 0.45); }
.av_btn_ghost {
  color: #fff !important; border: 1px solid rgba(255, 255, 255, 0.28); background: rgba(255, 255, 255, 0.04);
}
.av_btn_ghost:hover { background: rgba(255, 255, 255, 0.1); border-color: rgba(255, 255, 255, 0.5); transform: translateY(-2px); }

/* ============================================================
   1. HERO
   ============================================================ */
.av_hero {
  position: relative; overflow: hidden; isolation: isolate;
  background: linear-gradient(165deg, var(--av-ink) 0%, var(--av-ink-2) 55%, #0a1a2c 100%);
  padding: 86px 0 0;
}
/* engineering-drawing grid, fading out downward */
.av_hero_grid {
  position: absolute; inset: 0; z-index: -2; pointer-events: none;
  background-image:
    linear-gradient(to right, var(--av-line) 1px, transparent 1px),
    linear-gradient(to bottom, var(--av-line) 1px, transparent 1px);
  background-size: 64px 64px;
  -webkit-mask-image: radial-gradient(115% 85% at 72% 0%, #000 25%, transparent 78%);
          mask-image: radial-gradient(115% 85% at 72% 0%, #000 25%, transparent 78%);
}
.av_hero_glow {
  position: absolute; z-index: -1; pointer-events: none;
  right: -180px; top: -220px; width: 720px; height: 720px;
  background: radial-gradient(circle, rgba(2, 160, 225, 0.3), transparent 62%);
  filter: blur(10px);
}
.av_hero_inner {
  position: relative;
  display: grid; grid-template-columns: minmax(0, 1fr) 400px;
  column-gap: 40px; align-items: center;
}
.av_hero_copy { min-width: 0; }
.av_hero_kpis { grid-column: 1 / -1; }
.av_eyebrow {
  display: inline-flex; align-items: center; gap: 9px;
  font-size: 11.5px; font-weight: 700; letter-spacing: 0.16em; text-transform: uppercase;
  color: #6fd0ff; background: rgba(2, 160, 225, 0.12);
  border: 1px solid rgba(2, 160, 225, 0.3); border-radius: 50px; padding: 8px 18px;
}
.av_hero_title {
  margin: 24px 0 0; color: #fff; font-size: 58px; font-weight: 900;
  letter-spacing: -0.035em; line-height: 1.05; text-wrap: balance;
}
.av_hero_title::after {
  content: ''; display: block; width: 68px; height: 4px; border-radius: 2px;
  margin-top: 22px; background: var(--primary-gradient);
}
.av_hero_lead {
  margin: 24px 0 0; max-width: 660px;
  font-size: 16.5px; line-height: 1.8; color: #b3c2d3;
}
.av_hero_btns { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 34px; }

.av_hero_kpis {
  display: grid; grid-template-columns: repeat(4, 1fr);
  margin-top: 62px; border-top: 1px solid var(--av-line);
}
.av_kpi { padding: 26px 24px 30px; border-left: 1px solid var(--av-line); }
.av_kpi:first-child { border-left: 0; padding-left: 0; }
.av_kpi b {
  display: block; font-size: 34px; font-weight: 900; color: #fff;
  letter-spacing: -0.03em; line-height: 1; font-variant-numeric: tabular-nums;
}
.av_kpi b span { color: var(--primary-blue); }
.av_kpi_l {
  display: block; margin-top: 9px; font-size: 11px; font-weight: 600;
  letter-spacing: 0.12em; text-transform: uppercase; color: #71829a;
}

/* ---------- 3D signal cube (hero right) ---------- */
.av_stage {
  position: relative; height: 380px; display: flex;
  align-items: center; justify-content: center;
  perspective: 1100px; perspective-origin: 50% 45%;
}
.av_stage_ring {
  position: absolute; width: 330px; height: 330px; border-radius: 50%;
  border: 1px dashed rgba(120, 170, 220, 0.22);
  box-shadow: 0 0 60px rgba(2, 160, 225, 0.12) inset;
  animation: av_ring 26s linear infinite;
}
.av_stage_ring::after {
  content: ''; position: absolute; left: 50%; top: -4px; width: 7px; height: 7px;
  margin-left: -3px; border-radius: 50%; background: var(--primary-blue);
  box-shadow: 0 0 12px rgba(2, 160, 225, 0.9);
}
@keyframes av_ring { to { transform: rotate(360deg); } }

.av_cube {
  --av-aim: rotateX(0deg) rotateY(0deg);
  --av-park: 0deg;
  width: 180px; height: 180px; transform-style: preserve-3d;
  transform: var(--av-aim); transition: transform 0.5s cubic-bezier(0.2, 0.7, 0.2, 1);
}
.av_cube_in {
  position: absolute; inset: 0; transform-style: preserve-3d;
  animation: av_spin 22s linear infinite;
}
.av_cube_held .av_cube_in {
  animation: none;
  transform: rotateX(-12deg) rotateY(var(--av-park));
  transition: transform 0.7s cubic-bezier(0.2, 0.8, 0.2, 1);
}
@keyframes av_spin {
  from { transform: rotateX(-14deg) rotateY(0deg); }
  to   { transform: rotateX(-14deg) rotateY(360deg); }
}
.av_face {
  position: absolute; inset: 0; display: flex; flex-direction: column;
  align-items: center; justify-content: center; gap: 10px; cursor: pointer;
  background: linear-gradient(150deg, rgba(12, 28, 48, 0.92), rgba(6, 14, 26, 0.92));
  border: 1px solid rgba(2, 160, 225, 0.35);
  box-shadow: 0 0 24px rgba(2, 160, 225, 0.12) inset;
  backface-visibility: visible;
}
.av_face i { font-size: 30px; color: var(--primary-blue); }
.av_face b {
  font-size: 11px; font-weight: 800; letter-spacing: 0.16em;
  text-transform: uppercase; color: #cfe2f3;
}
.av_face:hover { border-color: rgba(2, 160, 225, 0.8); }
.av_face_fr { transform: translateZ(90px); }
.av_face_bk { transform: rotateY(180deg) translateZ(90px); }
.av_face_rt { transform: rotateY(90deg) translateZ(90px); }
.av_face_lf { transform: rotateY(-90deg) translateZ(90px); }
.av_face_tp { transform: rotateX(90deg) translateZ(90px); }
.av_face_bt { transform: rotateX(-90deg) translateZ(90px); }
.av_stage_hint {
  position: absolute; bottom: 6px; left: 50%; transform: translateX(-50%);
  font-size: 10.5px; letter-spacing: 0.14em; text-transform: uppercase;
  color: #5c7186; white-space: nowrap;
}

/* ---------- scroll reveal + pointer tilt ---------- */
.av_anim .av_cap, .av_anim .av_app, .av_anim .av_step,
.av_anim .av_node, .av_anim .av_sec_head {
  opacity: 0; transform: translateY(22px);
  transition: opacity 0.6s ease, transform 0.6s cubic-bezier(0.2, 0.7, 0.2, 1);
}
.av_anim .av_in { opacity: 1; transform: none; }
[data-av-tilt] { transform-style: preserve-3d; will-change: transform; }
/* the pointer writes --av-mx/--av-my, so the sheen tracks the cursor */
[data-av-tilt]::before { transition: opacity 0.3s; }
.av_cap, .av_app { position: relative; }

/* ---------- sub-category page (lists_avsub.htm) ---------- */
.av_hero_sub { padding: 70px 0 0; }
.av_hero_sub .av_hero_inner { grid-template-columns: 1fr; }
.av_hero_sub .av_hero_copy { padding-bottom: 66px; }
.av_hero_sub .av_hero_title { font-size: 46px; }
.av_hero_sub .av_hero_lead { max-width: 720px; font-size: 16px; }
.av_sub_body { padding-top: 56px; }
/* the card for the page you are already on: marked, still clickable */
.av_cap.av_cap_now { border-color: rgba(2, 160, 225, 0.55); background: var(--primary-blue-light); }
.av_cap.av_cap_now::after { width: 100%; }

/* ============================================================
   2. CMS COPY
   ============================================================ */
.av_intro { padding: 70px 0 0; }
.av_intro_card {
  background: #fff; border: 1px solid #e9edf3; border-radius: 18px;
  padding: 44px 48px; box-shadow: var(--shadow-card);
  font-size: 15.5px; line-height: 1.85; color: #4a5464;
}
.av_intro_card h2, .av_intro_card h3 { color: var(--text-dark); font-weight: 800; margin: 26px 0 12px; }
.av_intro_card h2:first-child, .av_intro_card h3:first-child { margin-top: 0; }
.av_intro_card img { border-radius: 10px; }

/* ============================================================
   3. CAPABILITIES  (the CMS sub-categories)
   ============================================================ */
.av_caps { padding: 84px 0; }
.av_cap_grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 22px; }
.av_cap {
  position: relative; display: block; text-decoration: none; overflow: hidden;
  background: #fff; border: 1px solid #e7ebf1; border-radius: 16px;
  padding: 32px 28px 28px;
  transition: transform 0.3s, box-shadow 0.3s, border-color 0.3s;
}
/* corner bracket — the one ornament that says "instrument", not "brochure" */
.av_cap::before {
  content: ''; position: absolute; right: 18px; top: 18px; width: 16px; height: 16px;
  border-top: 2px solid var(--primary-blue); border-right: 2px solid var(--primary-blue);
  opacity: 0.25; transition: opacity 0.3s, transform 0.3s;
}
.av_cap::after {
  content: ''; position: absolute; left: 0; top: 0; height: 3px; width: 0;
  background: var(--primary-gradient); transition: width 0.4s ease;
}
.av_cap:hover { transform: translateY(-6px); box-shadow: var(--shadow-card-hover); border-color: rgba(2, 160, 225, 0.3); }
.av_cap:hover::before { opacity: 1; transform: translate(2px, -2px); }
.av_cap:hover::after { width: 100%; }
.av_cap_no {
  position: absolute; right: 24px; bottom: 18px;
  font-size: 44px; font-weight: 900; line-height: 1; color: #f1f4f8;
  font-variant-numeric: tabular-nums; letter-spacing: -0.04em; pointer-events: none;
}
.av_cap_ico {
  width: 54px; height: 54px; border-radius: 14px; margin-bottom: 20px;
  display: flex; align-items: center; justify-content: center;
  font-size: 22px; color: var(--primary-blue); background: rgba(2, 160, 225, 0.1);
  transition: background 0.3s, color 0.3s;
}
.av_cap:hover .av_cap_ico { background: var(--primary-blue); color: #fff; }
.av_cap h3 { margin: 0 0 9px; font-size: 17.5px; font-weight: 800; color: var(--text-dark); }
.av_cap p { margin: 0; font-size: 13.5px; line-height: 1.7; color: #7d8795; position: relative; }
.av_cap_go {
  display: inline-flex; align-items: center; gap: 7px; margin-top: 18px;
  font-size: 11.5px; font-weight: 800; letter-spacing: 0.1em; text-transform: uppercase;
  color: var(--primary-blue); position: relative;
}
.av_cap_go i { transition: transform 0.25s; }
.av_cap:hover .av_cap_go i { transform: translateX(5px); }

/* ============================================================
   4. SIGNAL CHAIN
   ============================================================ */
.av_chain {
  position: relative; overflow: hidden; isolation: isolate;
  background: linear-gradient(180deg, #071019 0%, #0b1a2a 100%);
  padding: 84px 0 90px;
}
.av_chain_grid {
  position: absolute; inset: 0; z-index: -1; pointer-events: none;
  background-image:
    linear-gradient(to right, var(--av-line) 1px, transparent 1px),
    linear-gradient(to bottom, var(--av-line) 1px, transparent 1px);
  background-size: 48px 48px;
  -webkit-mask-image: radial-gradient(100% 70% at 50% 40%, #000 20%, transparent 80%);
          mask-image: radial-gradient(100% 70% at 50% 40%, #000 20%, transparent 80%);
}

.av_chain_flow {
  list-style: none; margin: 0; padding: 0;
  display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 16px;
}
.av_node {
  position: relative; padding: 28px 20px 24px;
  background: rgba(255, 255, 255, 0.035);
  border: 1px solid rgba(255, 255, 255, 0.09); border-radius: 14px;
  transition: background 0.3s, border-color 0.3s, transform 0.3s;
}
/* the link between stages — a hairline with a travelling pulse */
.av_node:not(:last-child)::after {
  content: ''; position: absolute; right: -17px; top: 50%; width: 18px; height: 1px;
  background: rgba(2, 160, 225, 0.45);
}
.av_node:not(:last-child)::before {
  content: ''; position: absolute; right: -17px; top: calc(50% - 2px);
  width: 5px; height: 5px; border-radius: 50%; background: var(--primary-blue);
  box-shadow: 0 0 8px rgba(2, 160, 225, 0.9);
  animation: av_pulse 2.6s linear infinite;
}
.av_node:nth-child(2)::before { animation-delay: 0.35s; }
.av_node:nth-child(3)::before { animation-delay: 0.7s; }
.av_node:nth-child(4)::before { animation-delay: 1.05s; }
@keyframes av_pulse {
  0%   { transform: translateX(0);    opacity: 0; }
  18%  { opacity: 1; }
  82%  { opacity: 1; }
  100% { transform: translateX(14px); opacity: 0; }
}
.av_node:hover { background: rgba(2, 160, 225, 0.08); border-color: rgba(2, 160, 225, 0.4); transform: translateY(-4px); }
.av_node_step {
  display: block; font-size: 10.5px; font-weight: 800; letter-spacing: 0.16em;
  color: #5c7d99; margin-bottom: 16px;
}
.av_node > i {
  display: block; font-size: 24px; color: var(--primary-blue); margin-bottom: 14px;
}
.av_node h4 { margin: 0 0 8px; font-size: 15.5px; font-weight: 800; color: #fff; }
.av_node p { margin: 0; font-size: 12.5px; line-height: 1.65; color: #8fa3ba; }
.av_node_key { background: rgba(2, 160, 225, 0.1); border-color: rgba(2, 160, 225, 0.36); }

/* ============================================================
   5. APPLICATIONS
   ============================================================ */
.av_apps { padding: 84px 0; background: #f4f6f9; }
.av_app_grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; }
.av_app {
  background: #fff; border: 1px solid #e7ebf1; border-radius: 14px; padding: 28px 26px;
  transition: box-shadow 0.3s, transform 0.3s;
}
.av_app:hover { transform: translateY(-4px); box-shadow: var(--shadow-card); }
.av_app i { font-size: 20px; color: var(--primary-blue); }
.av_app h4 { margin: 14px 0 8px; font-size: 16px; font-weight: 800; color: var(--text-dark); }
.av_app p { margin: 0; font-size: 13.5px; line-height: 1.7; color: #7d8795; }

/* ============================================================
   6. DELIVERY
   ============================================================ */
.av_deliver { padding: 84px 0; }
.av_steps { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 26px; }
.av_step { position: relative; padding-top: 26px; border-top: 2px solid #e7ebf1; transition: border-color 0.3s; }
.av_step:hover { border-top-color: var(--primary-blue); }
.av_step span {
  display: block; font-size: 12px; font-weight: 900; letter-spacing: 0.12em;
  color: var(--primary-blue); margin-bottom: 10px; font-variant-numeric: tabular-nums;
}
.av_step h4 { margin: 0 0 9px; font-size: 17px; font-weight: 800; color: var(--text-dark); }
.av_step p { margin: 0; font-size: 13.5px; line-height: 1.72; color: #7d8795; }

/* ============================================================
   7. CTA
   ============================================================ */
.av_cta {
  position: relative; overflow: hidden; isolation: isolate;
  background: linear-gradient(135deg, #071019 0%, #10243a 100%);
  padding: 76px 0 80px; text-align: center;
}
.av_cta_glow {
  position: absolute; z-index: -1; pointer-events: none;
  left: 50%; top: -260px; width: 760px; height: 560px; transform: translateX(-50%);
  background: radial-gradient(circle, rgba(2, 160, 225, 0.28), transparent 65%);
}
.av_cta_inner h2 {
  margin: 0; color: #fff; font-size: 32px; font-weight: 800;
  letter-spacing: -0.02em; line-height: 1.25; text-wrap: balance;
}
.av_cta_inner p {
  margin: 16px auto 0; max-width: 680px;
  font-size: 15.5px; line-height: 1.8; color: #a9bacd;
}
.av_cta_btns { display: flex; flex-wrap: wrap; gap: 14px; justify-content: center; margin-top: 32px; }

/* ============================================================
   RESPONSIVE
   ============================================================ */
@media (max-width: 1100px) {
  .av_hero_inner { grid-template-columns: 1fr; row-gap: 10px; }
  .av_stage { order: 2; height: 320px; }
  .av_hero_kpis { order: 3; }
  .av_cap_grid, .av_app_grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .av_steps { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .av_chain_flow { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  /* connectors only make sense in an unbroken row */
  .av_node::before, .av_node::after { display: none; }
}

@media (max-width: 768px) {
  .av_hero { padding-top: 56px; }
  .av_hero_title { font-size: 36px; }
  .av_hero_lead { font-size: 15px; }
  .av_hero_kpis { grid-template-columns: repeat(2, 1fr); margin-top: 44px; }
  .av_kpi { padding: 20px 14px; }
  .av_kpi:nth-child(odd) { border-left: 0; padding-left: 0; }
  .av_kpi:nth-child(n + 3) { border-top: 1px solid var(--av-line); }
  .av_kpi b { font-size: 27px; }

  .av_sec_head { margin-bottom: 32px; }
  .av_sec_head h2 { font-size: 26px; }
  .av_sec_head p { font-size: 14.5px; }

  .av_intro { padding-top: 48px; }
  .av_intro_card { padding: 28px 22px; }

  .av_caps, .av_apps, .av_deliver { padding: 56px 0; }
  .av_chain { padding: 56px 0 60px; }
  .av_cta { padding: 56px 0 60px; }

  .av_cap_grid, .av_app_grid, .av_steps, .av_chain_flow { grid-template-columns: 1fr; }
  .av_stage { height: 260px; }
  .av_cube { width: 130px; height: 130px; }
  .av_face_fr, .av_face_bk, .av_face_rt, .av_face_lf, .av_face_tp, .av_face_bt { --z: 65px; }
  .av_face_fr { transform: translateZ(65px); }
  .av_face_bk { transform: rotateY(180deg) translateZ(65px); }
  .av_face_rt { transform: rotateY(90deg) translateZ(65px); }
  .av_face_lf { transform: rotateY(-90deg) translateZ(65px); }
  .av_face_tp { transform: rotateX(90deg) translateZ(65px); }
  .av_face_bt { transform: rotateX(-90deg) translateZ(65px); }
  .av_stage_ring { width: 220px; height: 220px; }
  .av_cta_inner h2 { font-size: 24px; }
  .av_btn_primary, .av_btn_ghost { width: 100%; justify-content: center; }
}

@media (prefers-reduced-motion: reduce) {
  .av_cube_in, .av_stage_ring { animation: none; }
  .av_anim .av_cap, .av_anim .av_app, .av_anim .av_step,
  .av_anim .av_node, .av_anim .av_sec_head { opacity: 1; transform: none; }
  .av_node::before { animation: none; opacity: 1; }
  .av_cap:hover, .av_app:hover, .av_node:hover,
  .av_btn_primary:hover, .av_btn_ghost:hover { transform: none; }
}
