/* ============================================================
   QUANTUM CYBERVISION TECHNOLOGIES — design system
   Palette sampled from brand logo: deep navy + vivid azure + steel.
   Type: Space Grotesk (display) / IBM Plex Sans (body) / IBM Plex Mono (data, labels)
   ============================================================ */

/* Fonts are self-hosted (assets/fonts/) rather than loaded from Google's
   CDN, so no visitor IP is sent to Google just to render the page. */
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 500 700;
  font-display: swap;
  src: url('../fonts/space-grotesk-variable.woff2') format('woff2');
}
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url('../fonts/ibm-plex-sans-variable.woff2') format('woff2');
}
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('../fonts/ibm-plex-mono-400.woff2') format('woff2');
}
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('../fonts/ibm-plex-mono-500.woff2') format('woff2');
}
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('../fonts/ibm-plex-mono-600.woff2') format('woff2');
}

:root {
  /* brand */
  --navy-950: #050b1a;
  --navy-900: #0a1b3d;
  --navy-800: #0f2547;
  --navy-700: #17355f;
  --blue-600: #0060c0;
  --blue-500: #1476e0;
  --blue-400: #4fa3ff;
  --blue-100: #e5f1ff;
  --steel-400: #97a4b8;
  --steel-300: #c2cbd9;
  --steel-100: #eef1f6;

  /* surfaces */
  --paper: #f6f8fb;
  --white: #ffffff;
  --ink: #0e1420;
  --ink-soft: #4b5568;
  --ink-faint: #5f6b80;
  --border: #e2e7f0;
  --border-dark: rgba(255, 255, 255, 0.14);

  /* type */
  --font-display: 'Space Grotesk', 'Segoe UI', sans-serif;
  --font-body: 'IBM Plex Sans', 'Segoe UI', sans-serif;
  --font-mono: 'IBM Plex Mono', 'Consolas', monospace;

  /* scale */
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 16px;
  --space-4: 24px;
  --space-5: 32px;
  --space-6: 48px;
  --space-7: 64px;
  --space-8: 96px;
  --space-9: 128px;

  --radius-sm: 6px;
  --radius-md: 12px;
  --radius-lg: 20px;
  --container: 1280px;

  --shadow-card: 0 1px 2px rgba(10, 27, 61, 0.06), 0 12px 32px -16px rgba(10, 27, 61, 0.18);
  --shadow-lift: 0 24px 60px -20px rgba(5, 11, 26, 0.35);

  --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
}

/* ---------- reset ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: 0.001ms !important; animation-iteration-count: 1 !important; transition-duration: 0.001ms !important; scroll-behavior: auto !important; }
}
body, h1, h2, h3, h4, p, figure, blockquote { margin: 0; }
ul, ol { margin: 0; padding: 0; list-style: none; }
img { max-width: 100%; display: block; }
a { color: inherit; text-decoration: none; }
button { font: inherit; color: inherit; background: none; border: none; cursor: pointer; }
input, textarea, select { font: inherit; color: inherit; }
svg { display: block; }

body {
  font-family: var(--font-body);
  color: var(--ink);
  background: var(--white);
  font-size: 16px;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}

h1, h2, h3, h4 {
  font-family: var(--font-display);
  font-weight: 600;
  line-height: 1.12;
  letter-spacing: -0.01em;
  color: var(--navy-900);
}

h1 { font-size: clamp(2.4rem, 4.4vw, 4.2rem); font-weight: 700; }
h2 { font-size: clamp(1.9rem, 3vw, 2.75rem); }
h3 { font-size: clamp(1.25rem, 1.6vw, 1.5rem); }
p { color: var(--ink-soft); }

.lede { font-size: clamp(1.05rem, 1.4vw, 1.25rem); color: var(--ink-soft); max-width: 60ch; }

/* focus visibility */
a:focus-visible, button:focus-visible, input:focus-visible, textarea:focus-visible, select:focus-visible, summary:focus-visible {
  outline: 2px solid var(--blue-500);
  outline-offset: 3px;
  border-radius: 4px;
}

/* ---------- layout helpers ---------- */
.container { max-width: var(--container); margin-inline: auto; padding-inline: var(--space-4); }
@media (min-width: 900px) { .container { padding-inline: var(--space-6); } }

.section { padding-block: var(--space-6); }
.section--tight { padding-block: var(--space-6); }
.section--dark { background: var(--navy-950); color: var(--steel-300); }
.section--dark h2, .section--dark h3 { color: var(--white); }
.section--dark p { color: var(--steel-300); }
.section--paper { background: var(--paper); }

.eyebrow {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  font-family: var(--font-mono);
  font-size: 0.78rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--blue-600);
  font-weight: 500;
  margin-bottom: var(--space-3);
}
.section--dark .eyebrow { color: var(--blue-400); }
.eyebrow::before { content: '//'; color: var(--steel-400); }

.section-head { max-width: 62ch; margin-bottom: var(--space-6); }
.section-head--split { display: flex; justify-content: space-between; align-items: flex-end; gap: var(--space-5); flex-wrap: wrap; }

/* labeled sub-groups within a dense grid section */
.subgroup + .subgroup { margin-top: var(--space-6); }
.subgroup__label {
  font-family: var(--font-mono);
  font-size: 0.78rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--ink-faint);
  font-weight: 500;
  margin-bottom: var(--space-4);
  padding-bottom: var(--space-2);
  border-bottom: 1px solid var(--border);
}
.section--dark .subgroup__label { color: var(--steel-400); border-bottom-color: var(--border-dark); }

/* ---------- buttons ---------- */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-2);
  padding: 13px 26px;
  border-radius: var(--radius-sm);
  font-family: var(--font-body);
  font-weight: 600;
  font-size: 0.95rem;
  min-height: 44px;
  transition: transform 0.2s var(--ease-out), background 0.2s var(--ease-out), box-shadow 0.2s var(--ease-out), border-color 0.2s var(--ease-out);
  white-space: nowrap;
}
.btn-primary { background: var(--blue-600); color: var(--white); box-shadow: 0 8px 20px -8px rgba(0, 96, 192, 0.55); }
.btn-primary:hover { background: var(--blue-500); transform: translateY(-1px); }
.btn-ghost { background: transparent; color: var(--navy-900); border: 1.5px solid var(--border); }
.btn-ghost:hover { border-color: var(--blue-500); color: var(--blue-600); }
.section--dark .btn-ghost, .hero .btn-ghost, .page-hero .btn-ghost, .cta-band .btn-ghost, .case-card .btn-ghost {
  color: var(--white);
  border-color: var(--border-dark);
}
.section--dark .btn-ghost:hover, .hero .btn-ghost:hover, .page-hero .btn-ghost:hover, .cta-band .btn-ghost:hover, .case-card .btn-ghost:hover {
  border-color: var(--blue-400);
  color: var(--blue-400);
}
.btn svg { width: 16px; height: 16px; }

/* ---------- header ---------- */
.site-header {
  position: sticky;
  top: 0;
  z-index: 100;
  background: rgba(5, 11, 26, 0.86);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  border-bottom: 1px solid var(--border-dark);
}
.site-header__inner { display: flex; align-items: center; justify-content: space-between; gap: var(--space-5); padding-block: 14px; }
.brand { display: flex; align-items: center; gap: 12px; }
.brand__mark { width: 40px; height: 40px; border-radius: 10px; overflow: hidden; background: var(--white); padding: 3px; flex-shrink: 0; }
.brand__mark img { width: 100%; height: 100%; object-fit: contain; }
.brand__text { display: flex; flex-direction: column; line-height: 1.15; }
.brand__name { font-family: var(--font-display); font-weight: 700; font-size: 1rem; color: var(--white); letter-spacing: 0.01em; white-space: nowrap; }
.brand__suffix { font-family: var(--font-mono); font-size: 0.65rem; letter-spacing: 0.12em; color: var(--steel-400); text-transform: uppercase; white-space: nowrap; }

.nav-desktop { display: none; }
@media (min-width: 640px) {
  .nav-desktop { display: flex; align-items: center; gap: 2px; flex-wrap: wrap; }
  .nav-desktop a {
    padding: 8px 8px;
    font-size: 0.8rem;
    font-weight: 500;
    color: var(--steel-300);
    border-radius: var(--radius-sm);
    transition: color 0.2s, background 0.2s;
    white-space: nowrap;
  }
  .nav-desktop a:hover, .nav-desktop a[aria-current="page"] { color: var(--white); background: rgba(255, 255, 255, 0.08); }
}
/* above this width the single row has enough room for everything on one
   line — pin the nav at its natural width so flex-shrink doesn't force
   an unnecessary internal wrap before the row actually runs out of space */
@media (min-width: 1140px) { .nav-desktop { flex-shrink: 0; } }

/* below the width a single-row header can fit everything, let the nav
   drop to its own full-width row instead of being hidden behind a
   hamburger — the space is tight, but every link stays reachable */
@media (min-width: 640px) and (max-width: 1139.98px) {
  .site-header__inner { flex-wrap: wrap; row-gap: var(--space-3); }
  .nav-desktop { order: 3; flex-basis: 100%; justify-content: center; }
  .header-actions { order: 2; }
}

.header-actions { display: flex; align-items: center; gap: var(--space-3); }

.nav-toggle {
  display: grid;
  place-items: center;
  width: 44px;
  height: 44px;
  border-radius: var(--radius-sm);
  color: var(--white);
}
.nav-toggle svg { width: 22px; height: 22px; }
@media (min-width: 640px) { .nav-toggle { display: none; } }

.nav-mobile {
  display: none;
  flex-direction: column;
  padding: var(--space-3) var(--space-4) var(--space-5);
  gap: 2px;
  border-top: 1px solid var(--border-dark);
  background: var(--navy-950);
}
.nav-mobile.is-open { display: flex; }
.nav-mobile a { padding: 13px 8px; font-size: 1rem; font-weight: 500; color: var(--steel-300); border-bottom: 1px solid rgba(255,255,255,0.06); }
.nav-mobile a[aria-current="page"] { color: var(--blue-400); }
.nav-mobile .btn-primary { margin-top: var(--space-3); align-self: flex-start; }
@media (min-width: 640px) { .nav-mobile { display: none !important; } }

/* ---------- hero ---------- */
.hero {
  position: relative;
  background: radial-gradient(120% 140% at 82% -10%, #123467 0%, var(--navy-950) 58%);
  color: var(--white);
  overflow: hidden;
}
.hero__grid {
  display: grid;
  gap: var(--space-6);
  padding-block: var(--space-6) var(--space-6);
  align-items: start;
}
@media (min-width: 980px) { .hero__grid { grid-template-columns: 1.05fr 0.95fr; } }
.hero__eyebrow { color: var(--blue-400); }
.hero h1 { color: var(--white); }
.hero h1 em { color: var(--blue-400); font-style: normal; }
.hero__tagline { font-family: var(--font-display); font-weight: 600; font-size: clamp(1.05rem, 1.6vw, 1.3rem); color: var(--blue-400); margin-top: var(--space-3); }
.hero__lede { color: var(--steel-300); margin-block: var(--space-4) var(--space-5); max-width: 52ch; }
.hero__ctas { display: flex; gap: var(--space-3); flex-wrap: wrap; }

.hero__visual { position: relative; border-radius: var(--radius-lg); overflow: hidden; aspect-ratio: 4/5; box-shadow: var(--shadow-lift); }
.hero__visual img { width: 100%; height: 100%; object-fit: cover; }
.hero__visual::after { content: ''; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(5,11,26,0) 40%, rgba(5,11,26,0.55) 100%); }
.hero__visual canvas { position: absolute; inset: 0; width: 100%; height: 100%; mix-blend-mode: screen; opacity: 0.9; }

.page-hero { position: relative; background: linear-gradient(160deg, var(--navy-900) 0%, var(--navy-950) 70%); color: var(--white); overflow: hidden; }
.page-hero__inner { padding-block: var(--space-6) var(--space-6); max-width: 74ch; }
.page-hero h1 { color: var(--white); margin-block: var(--space-3) var(--space-4); }
.page-hero p:not(.eyebrow) { color: var(--steel-300); }
.page-hero .eyebrow { color: var(--blue-400); }
.page-hero__photo { position: absolute; inset: 0; z-index: 0; }
.page-hero__photo img { width: 100%; height: 100%; object-fit: cover; opacity: 0.28; }
.page-hero__photo::after { content: ''; position: absolute; inset: 0; background: linear-gradient(100deg, var(--navy-950) 20%, rgba(5,11,26,0.55) 65%, rgba(5,11,26,0.2) 100%); }
.page-hero__inner { position: relative; z-index: 1; }
.breadcrumb { font-family: var(--font-mono); font-size: 0.78rem; color: var(--steel-400); text-transform: uppercase; letter-spacing: 0.06em; }
.breadcrumb a:hover { color: var(--blue-400); }

/* ---------- trust / capability strip ---------- */
.trust-strip { background: var(--navy-900); border-top: 1px solid var(--border-dark); border-bottom: 1px solid var(--border-dark); }
.trust-strip__row { display: flex; flex-wrap: wrap; gap: var(--space-3) var(--space-6); justify-content: space-between; align-items: center; padding-block: var(--space-4); }
.trust-strip__item { display: flex; align-items: center; gap: 10px; color: var(--steel-300); font-family: var(--font-mono); font-size: 0.82rem; letter-spacing: 0.03em; }
.trust-strip__item svg { width: 18px; height: 18px; color: var(--blue-400); flex-shrink: 0; }

.stat-row { display: grid; grid-template-columns: repeat(2, 1fr); gap: var(--space-5); }
@media (min-width: 720px) { .stat-row { grid-template-columns: repeat(4, 1fr); } }
.stat { border-left: 2px solid var(--blue-500); padding-left: var(--space-3); }
.stat__num { font-family: var(--font-display); font-size: clamp(1.8rem, 3vw, 2.5rem); font-weight: 700; color: var(--navy-900); }
.section--dark .stat__num { color: var(--white); }
.stat__label { font-family: var(--font-mono); font-size: 0.78rem; color: var(--ink-faint); text-transform: uppercase; letter-spacing: 0.05em; }
.section--dark .stat__label { color: var(--steel-400); }

/* ---------- grids & cards ---------- */
.grid { display: grid; gap: var(--space-4); }
.grid-3 { grid-template-columns: 1fr; }
.grid-4, .grid-5 { grid-template-columns: 1fr; }
@media (min-width: 640px) { .grid-4, .grid-5 { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 900px) { .grid-3 { grid-template-columns: repeat(3, 1fr); } .grid-4 { grid-template-columns: repeat(4, 1fr); } }
@media (min-width: 1100px) { .grid-5 { grid-template-columns: repeat(5, 1fr); } }

.card {
  display: block;
  background: var(--white);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  padding: var(--space-5);
  box-shadow: var(--shadow-card);
  transition: transform 0.25s var(--ease-out), box-shadow 0.25s var(--ease-out), border-color 0.25s var(--ease-out);
  height: 100%;
}
.card:hover { transform: translateY(-4px); box-shadow: var(--shadow-lift); border-color: var(--blue-400); }
.card__icon { width: 48px; height: 48px; border-radius: 10px; background: var(--blue-100); color: var(--blue-600); display: grid; place-items: center; margin-bottom: var(--space-4); }
.card__icon svg { width: 24px; height: 24px; }
.card h3 { margin-bottom: var(--space-2); }
.card p { font-size: 0.95rem; }
.card__link { display: inline-flex; align-items: center; gap: 6px; margin-top: var(--space-4); font-weight: 600; font-size: 0.9rem; color: var(--blue-600); }
.card__link svg { width: 14px; height: 14px; transition: transform 0.2s var(--ease-out); }
.card:hover .card__link svg { transform: translateX(3px); }

.pillar-list { display: grid; gap: var(--space-3); }
.pillar-list li { display: flex; gap: 10px; align-items: flex-start; font-size: 0.94rem; color: var(--ink-soft); }
.pillar-list svg { width: 18px; height: 18px; color: var(--blue-600); flex-shrink: 0; margin-top: 2px; }
.section--dark .pillar-list li { color: var(--steel-300); }

/* feature split (image + copy) */
.split { display: grid; gap: var(--space-5); align-items: center; }
@media (min-width: 900px) { .split { grid-template-columns: 1fr 1fr; gap: var(--space-7); } }
.split--reverse .split__media { order: -1; }
@media (min-width: 900px) { .split--reverse .split__media { order: 2; } }

/* Contact page: show the location/map card before the form on narrow
   screens, so visitors don't have to scroll past the whole form to
   reach it -- side by side on desktop, this has no effect. */
@media (max-width: 899px) { .contact-sidebar { order: -1; } }
.split__media { border-radius: var(--radius-lg); overflow: hidden; aspect-ratio: 5/4; box-shadow: var(--shadow-card); position: relative; }
.split__media img { width: 100%; height: 100%; object-fit: cover; }

/* industries grid */
.industry-tile {
  display: flex; align-items: center; gap: var(--space-3);
  padding: var(--space-4);
  border: 1px solid var(--border-dark);
  border-radius: var(--radius-md);
  background: rgba(255,255,255,0.03);
  transition: background 0.2s, border-color 0.2s;
}
.industry-tile:hover { background: rgba(255,255,255,0.07); border-color: var(--blue-400); }
.industry-tile__icon { width: 40px; height: 40px; border-radius: 8px; background: rgba(79,163,255,0.14); color: var(--blue-400); display: grid; place-items: center; flex-shrink: 0; }
.industry-tile__icon svg { width: 20px; height: 20px; }
.industry-tile span { color: var(--white); font-weight: 500; font-size: 0.95rem; }

/* case studies */
.case-card { border-radius: var(--radius-lg); overflow: hidden; background: var(--navy-900); color: var(--white); position: relative; box-shadow: var(--shadow-card); }
.case-card__media { aspect-ratio: 16/10; position: relative; }
.case-card__media img { width: 100%; height: 100%; object-fit: cover; }
.case-card__media::after { content: ''; position: absolute; inset: 0; background: linear-gradient(180deg, transparent 40%, rgba(5,11,26,0.9) 100%); }
.case-card__tag { position: absolute; top: var(--space-3); left: var(--space-3); font-family: var(--font-mono); font-size: 0.72rem; text-transform: uppercase; letter-spacing: 0.06em; background: rgba(5,11,26,0.7); backdrop-filter: blur(6px); color: var(--blue-400); padding: 6px 10px; border-radius: 999px; border: 1px solid var(--border-dark); }
.case-card__body { padding: var(--space-5); }
.case-card__result { font-family: var(--font-mono); color: var(--blue-400); font-size: 0.85rem; margin-top: var(--space-3); }

/* insights */
.insight-card__media { aspect-ratio: 16/10; border-radius: var(--radius-md); overflow: hidden; margin-bottom: var(--space-4); }
.insight-card__media img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.5s var(--ease-out); }
.insight-card:hover .insight-card__media img { transform: scale(1.06); }
.insight-card__meta { font-family: var(--font-mono); font-size: 0.75rem; color: var(--blue-600); text-transform: uppercase; letter-spacing: 0.05em; margin-bottom: var(--space-2); }

/* founder avatar (About page leadership card) */
.quote-card__avatar { width: 42px; height: 42px; border-radius: 50%; background: var(--blue-100); color: var(--blue-600); display: grid; place-items: center; font-family: var(--font-display); font-weight: 700; font-size: 0.9rem; }

/* faq */
.faq-item { border-bottom: 1px solid var(--border); }
.faq-item summary { display: flex; justify-content: space-between; align-items: center; gap: var(--space-3); padding: var(--space-4) 0; font-weight: 600; color: var(--navy-900); font-size: 1rem; cursor: pointer; list-style: none; }
.faq-item summary::-webkit-details-marker { display: none; }
.faq-item summary svg { width: 18px; height: 18px; color: var(--blue-600); flex-shrink: 0; transition: transform 0.25s var(--ease-out); }
.faq-item[open] summary svg { transform: rotate(45deg); }
.faq-item p { padding-bottom: var(--space-4); font-size: 0.95rem; max-width: 68ch; }

/* process steps (genuinely sequential content only) */
.process { display: grid; gap: var(--space-5); counter-reset: step; }
@media (min-width: 640px) { .process { grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); } }
.process__step { position: relative; padding-top: var(--space-5); border-top: 2px solid var(--border-dark); }
.process__step::before { counter-increment: step; content: counter(step, decimal-leading-zero); font-family: var(--font-mono); font-size: 0.85rem; color: var(--blue-400); position: absolute; top: -14px; left: 0; background: var(--navy-950); padding-right: 8px; }
.section--paper .process__step { border-top-color: var(--border); }
.section--paper .process__step::before { background: var(--paper); color: var(--blue-600); }

/* CTA band */
.cta-band { position: relative; background: linear-gradient(120deg, var(--navy-950) 0%, var(--navy-800) 100%); color: var(--white); overflow: hidden; }
.cta-band__inner { text-align: center; padding-block: var(--space-8); max-width: 60ch; margin-inline: auto; position: relative; z-index: 1; }
.cta-band h2 { color: var(--white); }
.cta-band p:not(.eyebrow) { color: var(--steel-300); margin-block: var(--space-3) var(--space-5); }
.cta-band .eyebrow { color: var(--blue-400); }
.cta-band__ctas { display: flex; gap: var(--space-3); justify-content: center; flex-wrap: wrap; }
.cta-band__glow { position: absolute; inset: 0; background: radial-gradient(60% 100% at 50% 100%, rgba(0,96,192,0.35), transparent); pointer-events: none; }

/* form (contact) */
.form-grid { display: grid; gap: var(--space-4); }
@media (min-width: 640px) { .form-grid--2 { grid-template-columns: 1fr 1fr; } }
.field { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.field label { font-size: 0.85rem; font-weight: 600; color: var(--navy-900); }
.field .required { color: var(--blue-600); }
.field input, .field textarea, .field select {
  padding: 12px 14px;
  border: 1.5px solid var(--border);
  border-radius: var(--radius-sm);
  background: var(--white);
  font-size: 0.95rem;
  min-height: 44px;
  transition: border-color 0.2s;
}
.field textarea { min-height: 120px; resize: vertical; }
.field input:focus, .field textarea:focus, .field select:focus { border-color: var(--blue-500); outline: none; box-shadow: 0 0 0 3px rgba(20, 118, 224, 0.15); }
.field small { color: var(--ink-faint); font-size: 0.8rem; }

/* honeypot spam-trap field — off-screen rather than display:none, since
   some bots specifically detect and skip display:none/visibility:hidden
   fields to defeat this exact pattern */
.hp-field { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }

.contact-info { display: flex; flex-direction: column; gap: var(--space-4); }
.contact-info__item { display: flex; gap: 14px; align-items: flex-start; }
.contact-info__icon { width: 42px; height: 42px; border-radius: 10px; background: var(--blue-100); color: var(--blue-600); display: grid; place-items: center; flex-shrink: 0; }
.contact-info__icon svg { width: 20px; height: 20px; }
.contact-info h3 { font-size: 0.95rem; margin-bottom: 2px; }
.contact-info p { font-size: 0.9rem; }

.map-embed { position: relative; width: 100%; padding-top: 62%; border-radius: var(--radius-md); overflow: hidden; border: 1px solid var(--border); }
.map-embed iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.map-embed__placeholder {
  position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center;
  justify-content: center; gap: var(--space-3); text-align: center; padding: var(--space-5);
  background: var(--paper); color: var(--ink-faint);
}
.map-embed__placeholder svg { width: 32px; height: 32px; color: var(--blue-600); }
.map-embed__placeholder p { font-size: 0.85rem; max-width: 32ch; }

/* logos strip (technology ecosystem) */
.logo-strip { display: grid; grid-template-columns: repeat(2, 1fr); gap: var(--space-4); align-items: center; }
@media (min-width: 640px) { .logo-strip { grid-template-columns: repeat(3, 1fr); } }
@media (min-width: 980px) { .logo-strip { grid-template-columns: repeat(6, 1fr); } }
.logo-chip { display: flex; align-items: center; justify-content: center; padding: var(--space-4); border: 1px solid var(--border); border-radius: var(--radius-md); font-family: var(--font-mono); font-size: 0.82rem; color: var(--ink-faint); text-align: center; background: var(--white); }

/* footer */
.site-footer { background: var(--navy-950); color: var(--steel-400); border-top: 1px solid var(--border-dark); }
.footer-grid { display: grid; gap: var(--space-6); padding-block: var(--space-7); }
@media (min-width: 860px) { .footer-grid { grid-template-columns: 1.4fr 1fr 1fr 1fr; } }
.footer-brand p { color: var(--steel-400); font-size: 0.9rem; margin-block: var(--space-3); max-width: 32ch; }
.footer-col h4 { font-family: var(--font-mono); font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.06em; color: var(--white); margin-bottom: var(--space-3); font-weight: 500; }
.footer-col ul { display: flex; flex-direction: column; gap: 10px; }
.footer-col a { font-size: 0.9rem; color: var(--steel-400); transition: color 0.2s; }
.footer-col a:hover { color: var(--blue-400); }
.footer-bottom { border-top: 1px solid var(--border-dark); padding-block: var(--space-4); display: flex; flex-wrap: wrap; gap: var(--space-3); justify-content: space-between; align-items: center; font-size: 0.82rem; }
.footer-bottom nav { display: flex; gap: var(--space-4); }

/* floating CTA — replaces the header's "Talk to an expert" button so
   the desktop nav has room to sit alongside the logo on one line */
.floating-cta {
  position: fixed;
  right: var(--space-5);
  bottom: var(--space-5);
  z-index: 90;
  display: grid;
  place-items: center;
  width: 56px;
  height: 56px;
  border-radius: 50%;
  background: var(--blue-600);
  color: var(--white);
  box-shadow: 0 12px 28px -8px rgba(0, 96, 192, 0.55);
  transition: transform 0.2s, background 0.2s;
}
.floating-cta:hover { background: var(--blue-500); transform: translateY(-2px) scale(1.05); }
.floating-cta svg { width: 24px; height: 24px; }

/* quick-contact widget panel — injected by main.js on every page except
   contact.html, where the floating button just jumps to the real form.
   Docked flush to the bottom-right corner like a chat-bot window; the
   floating launcher button hides while it's open. */
.modal-overlay {
  display: none;
  position: fixed;
  right: var(--space-5);
  bottom: var(--space-5);
  z-index: 200;
  width: calc(100% - 2 * var(--space-5));
  max-width: 340px;
}
.modal-overlay.is-open { display: block; }
.modal-panel {
  position: relative;
  background: var(--white);
  border-radius: var(--radius-lg);
  padding: var(--space-4);
  box-shadow: var(--shadow-lift);
  /* the panel is sized to fit without scrolling on ordinary screens;
     this is only a safety net for unusually short viewports */
  max-height: calc(100vh - 48px);
  overflow-y: auto;
}
.modal-close {
  position: absolute;
  top: 10px;
  right: 10px;
  width: 30px;
  height: 30px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  background: var(--paper);
  color: var(--ink-soft);
  transition: background 0.2s, color 0.2s;
}
.modal-close:hover { background: var(--blue-100); color: var(--blue-600); }
.modal-close svg { width: 16px; height: 16px; }
.modal-2col { grid-template-columns: 1fr 1fr; gap: var(--space-3); }

/* reveal-on-scroll */
[data-reveal] { opacity: 0; transform: translateY(18px); transition: opacity 0.7s var(--ease-out), transform 0.7s var(--ease-out); }
[data-reveal].is-visible { opacity: 1; transform: translateY(0); }
@media (prefers-reduced-motion: reduce) { [data-reveal] { opacity: 1; transform: none; transition: none; } }

/* dot-lattice decorative background */
.lattice-bg { position: absolute; inset: 0; opacity: 0.5; pointer-events: none; background-image: radial-gradient(circle, rgba(79,163,255,0.35) 1px, transparent 1.5px); background-size: 28px 28px; mask-image: radial-gradient(60% 60% at 70% 30%, black, transparent); }

/* skip link */
.skip-link { position: absolute; left: -999px; top: 0; background: var(--blue-600); color: var(--white); padding: 12px 18px; z-index: 1000; border-radius: 0 0 8px 0; }
.skip-link:focus { left: 0; }

/* utility */
.text-center { text-align: center; }
.mx-auto { margin-inline: auto; }
