/* shared.css — base tokens, palette, type, header, footer, cursor, starry backdrop.
   Used by every page outside the homepage; the homepage keeps its own inline
   styles for now to avoid risk of regression. Keep this file additive-only. */

:root {
  --bg:#020a14;
  --bg-2:#173358;
  --ink:#172663;
  --muted:#bacad9;
  --accent:#557ac1;
  --blue:#22419e;
  --blue-2:#142380;
  --blue-3:#3358b0;
}

html { background: var(--bg); }

/* Custom cursor: small octagon with a white centre dot. */
html, body, a, button {
  cursor: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='11' height='11' viewBox='0 0 28 28'%3E%3Cpolygon points='24.2,18.2 18.2,24.2 9.8,24.2 3.8,18.2 3.8,9.8 9.8,3.8 18.2,3.8 24.2,9.8' fill='none' stroke='%233358b0' stroke-width='2.8'/%3E%3Ccircle cx='14' cy='14' r='3.4' fill='white'/%3E%3C/svg%3E") 5 5, auto;
}

body {
  color: #fff;
  font-family: 'Neue Haas Grotesk Text Pro', 'Neue Haas Grotesk Text', 'Neue Haas Grotesk',
               'Helvetica Neue', 'Inter', Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  background-color: var(--bg);
  position: relative;
}

/* Starry backdrop with right-side bluish fade. */
body::before {
  content: ''; position: fixed; inset: 0; pointer-events: none; z-index: 0;
  background-color: var(--bg);
  background-image:
    radial-gradient(ellipse 70% 100% at 105% 50%, rgba(51,88,176,0.55) 0%, rgba(34,65,158,0.32) 25%, rgba(20,35,128,0.12) 55%, rgba(2,10,20,0) 80%),
    radial-gradient(ellipse 50% 70% at 95% 30%, rgba(85,122,193,0.28), rgba(85,122,193,0) 60%),
    radial-gradient(1.6px 1.6px at 7% 38%, rgba(255,255,255,0.9), transparent 60%),
    radial-gradient(1.2px 1.2px at 22% 46%, rgba(255,255,255,0.8), transparent 60%),
    radial-gradient(1px 1px at 14% 80%, rgba(255,255,255,0.65), transparent 60%),
    radial-gradient(1.3px 1.3px at 31% 18%, rgba(255,255,255,0.85), transparent 60%),
    radial-gradient(0.8px 0.8px at 36% 54%, rgba(255,255,255,0.5), transparent 60%),
    radial-gradient(1.6px 1.6px at 39% 86%, rgba(255,255,255,0.9), transparent 60%),
    radial-gradient(1px 1px at 44% 12%, rgba(255,255,255,0.6), transparent 60%),
    radial-gradient(1.2px 1.2px at 47% 33%, rgba(255,255,255,0.75), transparent 60%),
    radial-gradient(1.4px 1.4px at 54% 24%, rgba(255,255,255,0.8), transparent 60%),
    radial-gradient(1px 1px at 58% 78%, rgba(255,255,255,0.55), transparent 60%),
    radial-gradient(1.1px 1.1px at 62% 42%, rgba(255,255,255,0.7), transparent 60%),
    radial-gradient(0.8px 0.8px at 66% 6%, rgba(255,255,255,0.5), transparent 60%),
    radial-gradient(1.3px 1.3px at 70% 56%, rgba(255,255,255,0.7), transparent 60%),
    radial-gradient(1px 1px at 73% 90%, rgba(255,255,255,0.5), transparent 60%),
    radial-gradient(1.2px 1.2px at 77% 28%, rgba(255,255,255,0.55), transparent 60%),
    radial-gradient(0.9px 0.9px at 81% 62%, rgba(255,255,255,0.4), transparent 60%),
    radial-gradient(1px 1px at 85% 16%, rgba(255,255,255,0.45), transparent 60%),
    radial-gradient(1px 1px at 92% 74%, rgba(255,255,255,0.4), transparent 60%),
    radial-gradient(1.2px 1.2px at 96% 36%, rgba(255,255,255,0.45), transparent 60%),
    radial-gradient(1px 1px at 2% 18%, rgba(255,255,255,0.7), transparent 60%),
    radial-gradient(1.4px 1.4px at 10% 70%, rgba(255,255,255,0.85), transparent 60%),
    radial-gradient(0.9px 0.9px at 15% 4%, rgba(255,255,255,0.6), transparent 60%),
    radial-gradient(1.1px 1.1px at 17% 56%, rgba(255,255,255,0.7), transparent 60%),
    radial-gradient(1.3px 1.3px at 23% 28%, rgba(255,255,255,0.8), transparent 60%),
    radial-gradient(1.5px 1.5px at 35% 38%, rgba(255,255,255,0.9), transparent 60%),
    radial-gradient(1px 1px at 49% 50%, rgba(255,255,255,0.6), transparent 60%),
    radial-gradient(1.4px 1.4px at 52% 92%, rgba(255,255,255,0.75), transparent 60%),
    radial-gradient(1.1px 1.1px at 60% 70%, rgba(255,255,255,0.65), transparent 60%),
    radial-gradient(1.2px 1.2px at 68% 84%, rgba(255,255,255,0.6), transparent 60%),
    radial-gradient(1px 1px at 86% 28%, rgba(255,255,255,0.4), transparent 60%);
  background-repeat: no-repeat;
}

main, header, footer { position: relative; z-index: 2; }

.max-frame { max-width: 2000px; margin: 0 auto; }

/* Header */
header { transition: background-color 0.35s ease, backdrop-filter 0.35s ease, border-color 0.35s ease, box-shadow 0.35s ease; border-bottom: 1px solid transparent; }
header.nav-glass {
  background-color: rgba(6, 14, 28, 0.55);
  -webkit-backdrop-filter: saturate(150%) blur(18px);
          backdrop-filter: saturate(150%) blur(18px);
  border-bottom-color: rgba(85,122,193,0.18);
  box-shadow: 0 6px 24px -12px rgba(0,0,0,0.55);
}

.menu-link { font-weight: 500; font-size: 0.6875rem; letter-spacing: 0.22em; text-transform: uppercase; color: #fff; opacity: 0.85; }
.menu-link:hover { opacity: 1; }

.legal-link { font-weight: 300; font-size: 0.625rem; color: rgba(255,255,255,0.5); letter-spacing: 0.05em; }
.footer-bg { background: transparent; border-top: 1px solid rgba(85,122,193,0.12); }

/* Divisions dropdown — used in the nav */
.dropdown { position: relative; display: inline-flex; align-items: center; }
/* Split-Divisions pattern: the word "Divisions" is a real link (jumps
   to the homepage's #divisions section), the caret is a separate
   button that toggles the dropdown open. On desktop hovering opens
   the menu; on mobile the caret tap opens it. */
.dropdown-caret {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: transparent;
  border: 0;
  color: inherit;
  cursor: pointer;
  padding: 0.5rem 0.55rem;
  margin-left: -0.25rem;
  opacity: 0.75;
  transition: opacity 0.2s ease, transform 0.3s ease;
}
.dropdown-caret:hover,
.dropdown[data-open="true"] .dropdown-caret { opacity: 1; }
.dropdown[data-open="true"] .dropdown-caret { transform: rotate(180deg); }
.dropdown-caret svg { display: block; }
.dropdown-panel {
  position: absolute; top: calc(100% + 6px); right: 0;
  min-width: 280px; padding: 0.5rem;
  background: rgba(6, 14, 28, 0.92);
  -webkit-backdrop-filter: saturate(150%) blur(18px);
          backdrop-filter: saturate(150%) blur(18px);
  border: 1px solid rgba(85, 122, 193, 0.22);
  border-radius: 0.75rem;
  box-shadow: 0 12px 32px -16px rgba(0, 0, 0, 0.65);
  opacity: 0; visibility: hidden; transform: translateY(-4px);
  transition: opacity 0.2s ease, transform 0.2s ease, visibility 0.2s ease;
}
.dropdown[data-open="true"] .dropdown-panel { opacity: 1; visibility: visible; transform: translateY(0); }
.dropdown-link {
  display: block; padding: 0.6rem 0.85rem; border-radius: 0.5rem;
  color: rgba(255, 255, 255, 0.85);
  font-weight: 500; font-size: 0.78rem; letter-spacing: 0.04em;
  transition: background-color 0.2s ease, color 0.2s ease;
}
.dropdown-link:hover { background: rgba(85, 122, 193, 0.18); color: #fff; }

/* Buttons in nav */
.nav-ghost-btn {
  display: inline-flex; align-items: center; justify-content: center;
  padding: 0.75rem 1rem; border-radius: 0.375rem;
  background: transparent; color: #fff;
  font-size: 0.78rem; font-weight: 600; letter-spacing: 0.15em; text-transform: uppercase;
  transition: background-color 0.2s ease;
}
.nav-ghost-btn:hover { background: rgba(255, 255, 255, 0.05); }

.nav-cta-btn {
  display: inline-flex; align-items: center; justify-content: center;
  padding: 0.75rem 1.25rem; border-radius: 0.375rem;
  background: linear-gradient(to right, #2a6db0 0%, #234d8a 35%, #173664 70%, #0e2a45 100%);
  color: #fff;
  font-size: 0.78rem; font-weight: 600; letter-spacing: 0.15em; text-transform: uppercase;
  transition: background 0.2s ease;
}
.nav-cta-btn:hover {
  background: linear-gradient(to right, #3681c8 0%, #2c5ea6 35%, #1d4783 70%, #133757 100%);
}

/* ============================================================
   A11y — prefers-reduced-motion.
   Honour the OS setting on the contact + division pages, which
   used to skip this entirely.
   ============================================================ */
@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;
  }
  /* Stop the ambient dendrite canvas from continuously redrawing. */
  #ambient-dendrite { display: none; }
}

/* ============================================================
   Unified division-page footer columns (F-17). Mirrors the
   homepage footer hierarchy: bold title with accent rule,
   uppercase links.
   ============================================================ */
.div-foot-col h3 {
  display: inline-block;
  font-size: 0.875rem;
  font-weight: 800;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: #fff;
  margin-bottom: 0.9rem;
  padding-bottom: 0.55rem;
  border-bottom: 1.5px solid rgba(143, 169, 226, 0.45);
}
.div-foot-col ul { list-style: none; padding: 0; margin: 0; }
.div-foot-col li { margin: 0 0 8px 0; }
.div-foot-col a {
  color: rgba(255, 255, 255, 0.78);
  text-decoration: none;
  font-size: 0.72rem;
  font-weight: 500;
  letter-spacing: 0.13em;
  text-transform: uppercase;
  transition: color 0.25s ease;
}
.div-foot-col a:hover { color: #8FA9E2; }

/* ============================================================
   Infrastructure trust strip (site-wide footer element).
   [HIPAA badge] | divider | eyebrow + SOC 2 / ISO 27001 chips |
   spacer (AWS clear space) | AWS logo (unmodified per AWS
   trademark guidelines).
   ============================================================ */
.site__trust{
  display:flex;
  align-items:center;
  gap:22px;
  border-top:1px solid rgba(143,169,226,.14);
  padding:24px 0 22px;
}
.site__trust .site__badges{ display:flex; align-items:center; }
.site__trust .site__badges img{ height:112px; width:auto; display:block; opacity:.9; }
.site__trust-divider{
  width:1px;
  height:44px;
  background:rgba(143,169,226,.20);
  flex:0 0 auto;
}
.site__trust-eyebrow{
  display:block;
  font-family:'DM Sans', 'Helvetica Neue', Arial, sans-serif;
  font-size:10px;
  font-weight:700;
  letter-spacing:2.2px;
  text-transform:uppercase;
  color:rgba(143,169,226,.72);
  margin-bottom:7px;
}
.site__trust-certs{ display:flex; flex-direction:column; align-items:center; text-align:center; }
.site__trust-chips{ display:inline-flex; gap:8px; justify-content:center; }
.site__trust-chip{
  display:inline-block;
  font-family:'DM Sans', 'Helvetica Neue', Arial, sans-serif;
  font-size:11px;
  font-weight:600;
  color:#A9BCDA;
  border:1px solid rgba(143,169,226,.28);
  border-radius:6px;
  padding:4px 11px;
  letter-spacing:.04em;
}
.site__trust-spacer{ flex:1 1 44px; min-width:44px; }
.site__trust-aws-group{ display:flex; align-items:center; gap:10px; margin-left:6px; }
.site__trust-powered{
  font-family:'DM Sans','Helvetica Neue',Arial,sans-serif;
  font-size:10px; font-weight:700; letter-spacing:2.2px;
  text-transform:uppercase; color:rgba(143,169,226,.72); white-space:nowrap;
}
.site__trust-aws{ display:block; }
.site__trust-aws img{ height:52px; width:auto; display:block; }
@media (max-width:640px){
  .site__trust{ flex-wrap:wrap; }
  .site__trust-spacer{ display:none; }
  .site__trust-aws{ flex-basis:100%; margin-top:6px; }
}

/* Inline trust strip variant — rides in the footer's first row to
   the right of the division logo instead of its own bordered row. */
.site__trust--inline{
  border-top:none;
  padding:0;
  flex:0 1 auto;
  gap:16px;
}
.site__trust--inline .site__badges img{ height:96px; }
.site__trust--inline .site__trust-aws-group{ margin-left:0; }
