/* ==========================================================================
   Anurag Anant Mishra — Enterprise Technology Design System
   Midnight navy · deep blue · electric cyan · controlled violet
   Fonts are loaded via <link> in each page <head> (Orbitron 500/700,
   Poppins 300/400/500/600).
   ========================================================================== */

/* ---------------- Design tokens ---------------- */
:root {
  /* Surfaces — midnight navy scale */
  --bg-void:      #04060e;  /* footer, deepest recess          */
  --bg-sunken:    #06090f;  /* alternating recessed bands      */
  --bg-base:      #0a0f1e;  /* page                            */
  --bg-surface:   #101830;  /* cards, panels                   */
  --bg-raised:    #16203c;  /* card hover                      */
  --bg-input:     rgba(4, 7, 16, 0.55);

  /* Text — cool neutrals */
  --text:         #eaf0fb;
  --text-body:    #b6c2d9;
  --text-muted:   #7f8daa;

  /* Lines — blue/slate translucent */
  --border:       rgba(125, 165, 255, 0.11);
  --border-str:   rgba(125, 170, 255, 0.24);
  --border-lum:   rgba(56, 189, 248, 0.42);

  /* Accents */
  --accent:        #38bdf8;  /* primary — technology blue      */
  --accent-strong: #0ea5e9;
  --accent-cyan:   #22d3ee;  /* electric cyan — small marks    */
  --accent-blue:   #2560e0;
  --accent-violet: #8b5cf6;  /* decorative only (contrast 4.5) */
  --accent-indigo: #6366f1;
  --accent-wash:   rgba(56, 189, 248, 0.10);
  --accent-line:   rgba(56, 189, 248, 0.34);

  /* Signature gradients */
  --grad-brand:  linear-gradient(90deg, var(--accent-cyan), var(--accent), var(--accent-indigo));
  --grad-cta:    linear-gradient(135deg, #2560e0 0%, #4c3fd6 100%);
  --grad-cta-hi: linear-gradient(135deg, #2a68ea 0%, #5546e0 100%);

  /* Radii */
  --r-xs: 8px;
  --r-sm: 11px;
  --r-md: 16px;
  --r-lg: 20px;
  --r-full: 999px;

  /* Depth — neutral shadows plus one blue ambient */
  --shadow-1: 0 1px 2px rgba(2, 5, 12, 0.5);
  --shadow-2: 0 6px 18px rgba(2, 5, 12, 0.45), 0 1px 2px rgba(2, 5, 12, 0.55);
  --shadow-3: 0 18px 44px rgba(2, 5, 12, 0.55), 0 3px 8px rgba(2, 5, 12, 0.45);
  --glow-blue: 0 18px 42px -14px rgba(37, 96, 224, 0.5);
  --glow-ring: 0 0 0 1px rgba(56, 189, 248, 0.22);

  /* Layout */
  --w-content: 1200px;
  --w-prose:   70ch;
  --w-article: 860px;
  --header-h:  70px;
  --gutter:    clamp(20px, 5vw, 40px);
  --section-y: clamp(66px, 8.5vw, 120px);
  --band-y:    clamp(58px, 7.5vw, 100px);

  /* Motion */
  --t-fast: 150ms;
  --t-base: 240ms;
  --ease:   cubic-bezier(0.2, 0.7, 0.25, 1);
}

/* ---------------- Reset & base ---------------- */
* { box-sizing: border-box; margin: 0; padding: 0; }

html { -webkit-text-size-adjust: 100%; }

body {
  background-color: var(--bg-base);
  color: var(--text-body);
  font-family: 'Poppins', system-ui, -apple-system, 'Segoe UI', sans-serif;
  font-size: 1rem;
  line-height: 1.7;
  overflow-x: hidden;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

main { display: block; }

img { max-width: 100%; }

::selection { background: rgba(56, 189, 248, 0.22); color: var(--text); }

:focus-visible {
  outline: 2px solid var(--accent-cyan);
  outline-offset: 3px;
  border-radius: 5px;
}

/* ---------------- Typography scale ---------------- */
h1 {
  font-family: 'Orbitron', system-ui, sans-serif;
  font-weight: 700;
  color: var(--text);
  letter-spacing: -0.02em;
  line-height: 1.13;
  text-wrap: balance;
}

h2, h3, h4, h5, h6 {
  font-family: 'Poppins', system-ui, sans-serif;
  color: var(--text);
  text-wrap: balance;
}

h2 {
  font-size: clamp(1.45rem, 1.1rem + 1.3vw, 2rem);
  font-weight: 600;
  line-height: 1.24;
  letter-spacing: -0.018em;
}

h3 {
  font-size: clamp(1.0625rem, 1.01rem + 0.25vw, 1.175rem);
  font-weight: 600;
  line-height: 1.4;
  letter-spacing: -0.008em;
}

h4 {
  font-size: 0.76rem;
  font-weight: 600;
  line-height: 1.4;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--accent);
}

p { text-wrap: pretty; }

strong { color: var(--text); font-weight: 600; }

/* ---------------- Layout primitives ---------------- */
.container {
  width: 100%;
  max-width: var(--w-content);
  margin-inline: auto;
  padding-inline: var(--gutter);
}

.section { position: relative; padding-block: var(--section-y); }

.content { position: relative; padding-block: var(--band-y); }

/* Section heading accent rule — cyan → violet */
.section > .container > h2::before {
  content: "";
  display: block;
  width: 42px;
  height: 3px;
  border-radius: 3px;
  background: linear-gradient(90deg, var(--accent-cyan), var(--accent-indigo));
  margin-bottom: 20px;
}

.section > .container > h2 { margin-bottom: 18px; }

.section > .container > p {
  max-width: var(--w-prose);
  color: var(--text-body);
  font-size: 1.0625rem;
}

/* ---------------- Header / Navigation ---------------- */
header {
  position: sticky;
  top: 0;
  z-index: 1000;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  height: var(--header-h);
  padding-inline: var(--gutter);
  background: rgba(8, 12, 26, 0.74);
  -webkit-backdrop-filter: blur(16px) saturate(170%);
  backdrop-filter: blur(16px) saturate(170%);
  border-bottom: 1px solid var(--border);
}

@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
  header { background: #080c1a; }
}

/* Luminous hairline under the header */
header::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: -1px;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(56, 189, 248, 0.34), rgba(99, 102, 241, 0.24), transparent);
  pointer-events: none;
}

.logo {
  height: 38px;
  width: auto;
  object-fit: contain;
  display: block;
  transition: opacity var(--t-fast) var(--ease);
}
.logo:hover { opacity: 0.85; }

nav ul {
  display: flex;
  align-items: center;
  gap: 2px;
  list-style: none;
}

nav a {
  position: relative;
  display: block;
  padding: 11px 15px;
  border-radius: var(--r-xs);
  color: var(--text-muted);
  font-size: 0.9375rem;
  font-weight: 500;
  text-decoration: none;
  white-space: nowrap;
  transition: color var(--t-fast) var(--ease), background-color var(--t-fast) var(--ease);
}

nav a:hover {
  color: var(--text);
  background: rgba(56, 189, 248, 0.09);
}

nav a.active { color: var(--text); }

nav a.active::after {
  content: "";
  position: absolute;
  left: 15px;
  right: 15px;
  bottom: 3px;
  height: 2px;
  border-radius: 2px;
  background: linear-gradient(90deg, var(--accent-cyan), var(--accent));
  box-shadow: 0 0 10px rgba(56, 189, 248, 0.5);
}

.menu-toggle {
  display: none;
  width: 44px;
  height: 44px;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  font-size: 1.2rem;
  line-height: 1;
  color: var(--text);
  background: rgba(56, 189, 248, 0.06);
  border: 1px solid var(--border-str);
  border-radius: var(--r-xs);
  cursor: pointer;
  transition: background-color var(--t-fast) var(--ease), border-color var(--t-fast) var(--ease);
}
.menu-toggle:hover {
  background: rgba(56, 189, 248, 0.14);
  border-color: var(--border-lum);
}

/* ---------------- Hero ---------------- */
.hero {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  padding: clamp(92px, 10.5vw, 156px) var(--gutter) clamp(84px, 9.5vw, 140px);
  background: linear-gradient(158deg, #0c1226 0%, #080d1b 55%, #0a0f1e 100%);
  border-bottom: 1px solid var(--border);
  text-align: left;
}

/* Layer 1 — the existing photograph, desaturated and pushed right so it
   reads as architectural texture rather than a gold illustration.        */
.hero::before {
  content: "";
  position: absolute;
  inset: 0;
  background: url("../images/hero-bg.jpg") center 28% / cover no-repeat;
  filter: grayscale(1) brightness(0.6) contrast(1.15);
  opacity: 0.3;
  -webkit-mask-image: linear-gradient(100deg, transparent 4%, rgba(0,0,0,0.55) 38%, #000 72%);
          mask-image: linear-gradient(100deg, transparent 4%, rgba(0,0,0,0.55) 38%, #000 72%);
}

/* Layer 2 — ambient blue / cyan / violet illumination */
.hero .overlay {
  position: absolute;
  inset: 0;
  background:
    radial-gradient(760px 520px at 12% 6%, rgba(56, 189, 248, 0.17), transparent 62%),
    radial-gradient(700px 480px at 90% 86%, rgba(124, 92, 246, 0.15), transparent 62%),
    radial-gradient(1150px 640px at 60% -8%, rgba(37, 96, 224, 0.14), transparent 66%),
    linear-gradient(180deg, rgba(10, 15, 30, 0.3) 0%, rgba(10, 15, 30, 0.72) 58%, var(--bg-base) 96%);
}

/* Layer 3 — technical architecture grid */
.hero::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background-image:
    linear-gradient(to right, rgba(125, 175, 255, 0.075) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(125, 175, 255, 0.075) 1px, transparent 1px);
  background-size: 64px 64px;
  -webkit-mask-image: radial-gradient(115% 100% at 16% 0%, #000 0%, transparent 72%);
          mask-image: radial-gradient(115% 100% at 16% 0%, #000 0%, transparent 72%);
}

.hero-content {
  position: relative;
  z-index: 1;
  width: 100%;
  max-width: var(--w-content);
  margin-inline: auto;
}

.hero h1 {
  font-size: clamp(1.75rem, 1.02rem + 2.8vw, 2.8rem);
  max-width: 920px;
  margin-bottom: 26px;
}

.hero p {
  position: relative;
  color: var(--text-body);
  font-size: clamp(1rem, 0.95rem + 0.26vw, 1.14rem);
  line-height: 1.7;
  max-width: 60ch;
  padding-left: 20px;
}

/* Luminous rule separating headline from supporting copy */
.hero p::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.35em;
  bottom: 0.35em;
  width: 2px;
  border-radius: 2px;
  background: linear-gradient(180deg, var(--accent-cyan), rgba(99, 102, 241, 0.15));
}

.hero-content .btn { margin-top: 38px; }

/* ---------------- Page banner (interior page header) ---------------- */
.banner {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  padding: clamp(70px, 8.5vw, 116px) var(--gutter) clamp(60px, 7.5vw, 96px);
  border-bottom: 1px solid var(--border);
  background:
    radial-gradient(720px 380px at 6% -10%, rgba(56, 189, 248, 0.15), transparent 64%),
    radial-gradient(620px 340px at 92% 118%, rgba(124, 92, 246, 0.13), transparent 62%),
    linear-gradient(170deg, #0c1226 0%, #0a0f1e 62%, var(--bg-base) 100%);
  color: var(--text);
  text-align: left;
}

.banner::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background-image:
    linear-gradient(to right, rgba(125, 175, 255, 0.06) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(125, 175, 255, 0.06) 1px, transparent 1px);
  background-size: 64px 64px;
  -webkit-mask-image: radial-gradient(100% 130% at 10% 0%, #000 0%, transparent 66%);
          mask-image: radial-gradient(100% 130% at 10% 0%, #000 0%, transparent 66%);
}

.banner-content {
  position: relative;
  z-index: 1;
  max-width: var(--w-content);
  margin-inline: auto;
}

.banner-content h1 {
  font-size: clamp(1.625rem, 1.05rem + 2.2vw, 2.45rem);
  max-width: 22ch;
}

.banner-content h1::before {
  content: "";
  display: block;
  width: 52px;
  height: 3px;
  border-radius: 3px;
  background: linear-gradient(90deg, var(--accent-cyan), var(--accent-indigo));
  box-shadow: 0 0 14px rgba(56, 189, 248, 0.34);
  margin-bottom: 24px;
}

.banner p {
  position: relative;
  z-index: 1;
  max-width: 62ch;
  margin: 20px 0 0;
  color: var(--text-body);
  text-align: left;
}

/* ---------------- Section band variants ---------------- */
.section.cards,
.section.expertise + .section.expertise,
.section.faq {
  background: var(--bg-sunken);
  border-block: 1px solid var(--border);
}

/* Luminous seam at the top of each recessed band */
.section.cards::before,
.section.expertise + .section.expertise::before,
.section.faq::before {
  content: "";
  position: absolute;
  top: -1px;
  left: 50%;
  transform: translateX(-50%);
  width: min(720px, 62%);
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(56, 189, 248, 0.5), rgba(99, 102, 241, 0.3), transparent);
  pointer-events: none;
}

.section.quote { padding-block: clamp(50px, 6vw, 88px); }

/* ---------------- Grid ---------------- */
.grid-3 {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: clamp(16px, 2vw, 26px);
  align-items: stretch;
}

.content .grid-3 { margin-top: clamp(34px, 4vw, 52px); }

@media (min-width: 1100px) {
  .grid-3 { grid-template-columns: repeat(3, 1fr); }
}

/* Case Studies — editorial 2-up / 3-up architecture layout */
@media (min-width: 900px) {
  .content .grid-3 { grid-template-columns: repeat(6, 1fr); }
  .content .grid-3 > .card { grid-column: span 2; }
  .content .grid-3 > .card:nth-child(1),
  .content .grid-3 > .card:nth-child(2) { grid-column: span 3; }
  .content .grid-3 > .card:nth-child(1) h3,
  .content .grid-3 > .card:nth-child(2) h3 { font-size: 1.3rem; }
  .content .grid-3 > .card:nth-child(1),
  .content .grid-3 > .card:nth-child(2) { padding: clamp(28px, 3vw, 38px); }
}

/* ---------------- Card system ---------------- */
.card {
  position: relative;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  gap: 12px;
  height: 100%;
  padding: clamp(24px, 2.6vw, 32px);
  background:
    linear-gradient(168deg, rgba(56, 189, 248, 0.05) 0%, transparent 42%),
    var(--bg-surface);
  border: 1px solid var(--border);
  border-radius: var(--r-md);
  text-align: left;
  box-shadow: var(--shadow-1);
  transition:
    border-color var(--t-base) var(--ease),
    background-color var(--t-base) var(--ease),
    box-shadow var(--t-base) var(--ease),
    transform var(--t-base) var(--ease);
}

/* Accent mark — hue rotates across the set for visual differentiation */
.card::before {
  content: "";
  display: block;
  width: 30px;
  height: 3px;
  border-radius: 3px;
  background: linear-gradient(90deg, var(--accent-cyan), var(--accent));
  margin-bottom: 4px;
  transition: width var(--t-base) var(--ease), box-shadow var(--t-base) var(--ease);
}

.card:nth-child(2)::before { background: linear-gradient(90deg, var(--accent), var(--accent-indigo)); }
.card:nth-child(3)::before { background: linear-gradient(90deg, var(--accent-indigo), var(--accent-violet)); }
.card:nth-child(4)::before { background: linear-gradient(90deg, var(--accent-violet), var(--accent-cyan)); }
.card:nth-child(5)::before { background: linear-gradient(90deg, var(--accent-strong), var(--accent-cyan)); }

.card:hover,
.card:focus-within {
  border-color: var(--border-lum);
  background:
    linear-gradient(168deg, rgba(56, 189, 248, 0.09) 0%, transparent 46%),
    var(--bg-raised);
  transform: translateY(-4px);
  box-shadow: var(--glow-ring), var(--glow-blue), var(--shadow-2);
}

.card:hover::before,
.card:focus-within::before {
  width: 48px;
  box-shadow: 0 0 12px rgba(56, 189, 248, 0.55);
}

.card h3 { color: var(--text); margin-bottom: 0; }

.card p {
  color: var(--text-body);
  font-size: 0.9375rem;
  line-height: 1.68;
  margin: 0;
}

/* ---------------- Bullet / spec lists ---------------- */
ul.bullets {
  list-style: none;
  max-width: var(--w-prose);
  margin: 28px 0 0;
  padding: 0;
  text-align: left;
}

ul.bullets li {
  position: relative;
  padding-left: 28px;
  color: var(--text-body);
}

ul.bullets li + li {
  margin-top: 14px;
  padding-top: 14px;
  border-top: 1px solid var(--border);
}

ul.bullets li::before {
  content: "";
  position: absolute;
  left: 2px;
  top: 0.68em;
  width: 7px;
  height: 7px;
  border-radius: 2px;
  background: linear-gradient(135deg, var(--accent-cyan), var(--accent-indigo));
  box-shadow: 0 0 8px rgba(56, 189, 248, 0.35);
  transform: rotate(45deg);
}

ul.bullets li + li::before { top: calc(0.68em + 14px); }

ul.bullets li strong { color: var(--text); font-weight: 600; }

/* ---------------- Link list → card rows (certifications, articles) ------- */
.cert-list {
  list-style: none;
  padding: 0;
  margin: 28px 0 0;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 14px;
}

.cert-list li { margin: 0; }

.cert-list a {
  position: relative;
  display: flex;
  align-items: center;
  gap: 14px;
  min-height: 64px;
  height: 100%;
  padding: 18px 48px 18px 22px;
  background: var(--bg-surface);
  border: 1px solid var(--border);
  border-radius: var(--r-sm);
  color: var(--text);
  font-size: 0.9375rem;
  font-weight: 500;
  line-height: 1.5;
  text-decoration: none;
  transition:
    border-color var(--t-base) var(--ease),
    background-color var(--t-base) var(--ease),
    box-shadow var(--t-base) var(--ease),
    transform var(--t-base) var(--ease);
}

/* CSS-drawn arrow affordance (no text content added) */
.cert-list a::after {
  content: "";
  position: absolute;
  right: 22px;
  top: 50%;
  width: 7px;
  height: 7px;
  border-top: 1.5px solid var(--text-muted);
  border-right: 1.5px solid var(--text-muted);
  transform: translateY(-50%) rotate(45deg);
  transition: border-color var(--t-base) var(--ease), transform var(--t-base) var(--ease);
}

.cert-list a:hover {
  border-color: var(--border-lum);
  background: var(--bg-raised);
  color: var(--text);
  transform: translateY(-2px);
  box-shadow: var(--glow-ring), var(--shadow-2);
  text-decoration: none;
}

.cert-list a:hover::after {
  border-color: var(--accent-cyan);
  transform: translateY(-50%) rotate(45deg) translate(2px, -2px);
}

/* ---------------- Quote ---------------- */
.quote { text-align: center; }

.quote blockquote {
  position: relative;
  max-width: 900px;
  margin: 0 auto;
  padding: clamp(30px, 3.4vw, 48px) clamp(26px, 3.4vw, 52px);
  background:
    radial-gradient(500px 260px at 0% 0%, rgba(56, 189, 248, 0.07), transparent 62%),
    var(--bg-surface);
  border: 1px solid var(--border);
  border-radius: var(--r-md);
  color: var(--text);
  font-family: 'Poppins', system-ui, sans-serif;
  font-style: normal;
  font-weight: 300;
  font-size: clamp(1.08rem, 0.95rem + 0.6vw, 1.45rem);
  line-height: 1.55;
  letter-spacing: -0.014em;
  text-align: left;
  box-shadow: var(--shadow-2);
  overflow: hidden;
}

.quote blockquote::before,
.about-quote::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: 3px;
  background: linear-gradient(180deg, var(--accent-cyan), var(--accent-indigo), var(--accent-violet));
}

/* ---------------- CTA band ---------------- */
.cta {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  background:
    radial-gradient(680px 330px at 18% -20%, rgba(56, 189, 248, 0.16), transparent 62%),
    radial-gradient(720px 340px at 84% 120%, rgba(124, 92, 246, 0.17), transparent 62%),
    linear-gradient(140deg, #0b1024 0%, #0c1430 46%, #100f34 100%);
  border-block: 1px solid var(--border);
  text-align: center;
}

.cta::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background-image:
    linear-gradient(to right, rgba(125, 175, 255, 0.05) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(125, 175, 255, 0.05) 1px, transparent 1px);
  background-size: 64px 64px;
  -webkit-mask-image: radial-gradient(80% 130% at 50% 50%, #000 0%, transparent 74%);
          mask-image: radial-gradient(80% 130% at 50% 50%, #000 0%, transparent 74%);
}

.cta > .container { position: relative; z-index: 1; max-width: 780px; }

.cta > .container > h2::before { margin-inline: auto; }

.cta > .container > p { margin-inline: auto; }

.cta .btn { margin-top: 34px; }

/* ---------------- FAQ ---------------- */
.faq-item {
  padding-block: clamp(22px, 2.5vw, 28px);
  border-top: 1px solid var(--border);
  text-align: left;
}

.faq-item:first-of-type { border-top: none; padding-top: 10px; }

.faq-item:last-of-type { border-bottom: 1px solid var(--border); }

.faq-item h3 {
  position: relative;
  padding-left: 26px;
  margin-bottom: 10px;
  color: var(--text);
}

.faq-item h3::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.5em;
  width: 12px;
  height: 3px;
  border-radius: 3px;
  background: linear-gradient(90deg, var(--accent-cyan), var(--accent));
}

.faq-item p {
  max-width: var(--w-prose);
  padding-left: 26px;
  margin: 0;
  color: var(--text-body);
  font-size: 0.9688rem;
}

/* ---------------- Buttons ---------------- */
.btn,
form button[type="submit"],
form button {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 50px;
  padding: 14px 30px;
  background: var(--grad-cta);
  color: #ffffff;
  border: 1px solid rgba(140, 190, 255, 0.34);
  border-radius: var(--r-sm);
  font-family: inherit;
  font-size: 0.9375rem;
  font-weight: 600;
  letter-spacing: 0.012em;
  text-decoration: none;
  cursor: pointer;
  box-shadow: var(--glow-blue), inset 0 1px 0 rgba(255, 255, 255, 0.16);
  transition:
    background var(--t-fast) var(--ease),
    box-shadow var(--t-base) var(--ease),
    border-color var(--t-fast) var(--ease),
    transform var(--t-fast) var(--ease);
}

.btn:hover,
form button:hover {
  background: var(--grad-cta-hi);
  color: #ffffff;
  border-color: var(--border-lum);
  transform: translateY(-2px);
  box-shadow: 0 22px 50px -14px rgba(37, 96, 224, 0.62), var(--glow-ring), inset 0 1px 0 rgba(255, 255, 255, 0.2);
}

.btn:active,
form button:active {
  transform: translateY(0);
  box-shadow: var(--shadow-1), inset 0 1px 0 rgba(255, 255, 255, 0.12);
}

/* Secondary / ghost button */
.btn--ghost,
.error-links a {
  background: rgba(56, 189, 248, 0.05);
  color: var(--text);
  border: 1px solid var(--border-str);
  box-shadow: none;
}

/* ---------------- Contact ---------------- */
.contact-section { position: relative; padding-block: var(--band-y); }

.contact-section > .container { max-width: 760px; text-align: center; }

.contact-section > .container > p {
  max-width: 58ch;
  margin: 0 auto 40px;
  color: var(--text-body);
  font-size: 1.0625rem;
}

form {
  position: relative;
  max-width: 580px;
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  gap: 16px;
  padding: clamp(26px, 3.4vw, 42px);
  background:
    radial-gradient(600px 260px at 50% -10%, rgba(56, 189, 248, 0.09), transparent 66%),
    var(--bg-surface);
  border: 1px solid var(--border);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-3);
  text-align: left;
  overflow: hidden;
}

/* Luminous top edge on the contact panel */
form::before {
  content: "";
  position: absolute;
  top: 0;
  left: 12%;
  right: 12%;
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--accent-cyan), var(--accent-indigo), transparent);
}

input,
textarea {
  width: 100%;
  padding: 15px 17px;
  background: var(--bg-input);
  color: var(--text);
  border: 1px solid var(--border-str);
  border-radius: var(--r-sm);
  font-family: inherit;
  font-size: 0.9375rem;
  line-height: 1.5;
  transition:
    border-color var(--t-fast) var(--ease),
    background-color var(--t-fast) var(--ease),
    box-shadow var(--t-fast) var(--ease);
}

input::placeholder,
textarea::placeholder { color: var(--text-muted); }

input:hover,
textarea:hover { border-color: rgba(125, 175, 255, 0.36); }

input:focus,
textarea:focus {
  border-color: var(--accent);
  background: rgba(4, 7, 16, 0.7);
  box-shadow: 0 0 0 3px rgba(56, 189, 248, 0.16);
}

textarea { resize: vertical; min-height: 150px; }

#formStatus {
  margin-top: 4px;
  min-height: 1.5em;
  font-size: 0.9rem;
  font-weight: 500;
}

.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* ---------------- About ---------------- */
.about-container {
  max-width: 1000px;
  margin: 0 auto;
  padding: var(--band-y) var(--gutter);
  text-align: left;
}

.about-header {
  display: grid;
  grid-template-columns: auto 1fr;
  align-items: center;
  gap: clamp(22px, 3.2vw, 42px);
  padding-bottom: clamp(30px, 3.6vw, 46px);
  margin-bottom: clamp(34px, 4vw, 56px);
  border-bottom: 1px solid var(--border);
}

.about-headshot {
  width: 136px;
  height: 136px;
  border-radius: 20px;
  border: 1px solid var(--border-str);
  object-fit: cover;
  box-shadow: var(--glow-ring), var(--shadow-3);
}

.about-intro h2 {
  font-size: clamp(1.5rem, 1.15rem + 1.2vw, 2.05rem);
  color: var(--text);
  margin-bottom: 8px;
}

.about-intro h3 {
  color: var(--accent);
  font-size: 0.95rem;
  font-weight: 500;
  letter-spacing: 0.03em;
  margin-bottom: 16px;
}

.about-intro p {
  color: var(--text-body);
  max-width: 56ch;
  font-size: 1rem;
}

.about-body {
  text-align: left;
  max-width: 100%;
  margin: 0;
}

.about-body > p {
  max-width: var(--w-prose);
  color: var(--text-body);
  font-size: 1.0625rem;
  line-height: 1.82;
}

.about-body h4 {
  position: relative;
  margin-top: clamp(44px, 5.2vw, 64px);
  padding-top: clamp(24px, 2.8vw, 32px);
  border-top: 1px solid var(--border);
}

.about-body h4::before {
  content: "";
  position: absolute;
  top: -1px;
  left: 0;
  width: 64px;
  height: 1px;
  background: linear-gradient(90deg, var(--accent-cyan), transparent);
}

.about-quote {
  position: relative;
  overflow: hidden;
  margin-top: clamp(44px, 5.2vw, 64px);
  padding: clamp(26px, 3.2vw, 38px) clamp(24px, 3.2vw, 40px);
  background:
    radial-gradient(420px 220px at 0% 0%, rgba(56, 189, 248, 0.07), transparent 62%),
    var(--bg-surface);
  border: 1px solid var(--border);
  border-radius: var(--r-md);
  color: var(--text);
  font-style: normal;
  font-weight: 300;
  font-size: clamp(1.05rem, 0.95rem + 0.45vw, 1.3rem);
  line-height: 1.6;
  letter-spacing: -0.012em;
  box-shadow: var(--shadow-2);
}

/* ---------------- Long-form prose pages ---------------- */
.content--prose > .container { max-width: var(--w-article); }

.content--prose p {
  max-width: 100%;
  color: var(--text-body);
  font-size: 1.0938rem;
  line-height: 1.82;
  margin-bottom: 1.2em;
}

.content--prose h2 {
  position: relative;
  margin-top: clamp(44px, 5.2vw, 70px);
  padding-top: clamp(26px, 3.2vw, 38px);
  margin-bottom: 18px;
  border-top: 1px solid var(--border);
}

.content--prose h2::before {
  content: "";
  position: absolute;
  top: -1px;
  left: 0;
  width: 76px;
  height: 1px;
  background: linear-gradient(90deg, var(--accent-cyan), var(--accent-indigo), transparent);
}

.content--prose ul.bullets { margin-block: 26px 32px; }

.content--prose p a {
  color: var(--accent);
  text-decoration: none;
  border-bottom: 1px solid var(--accent-line);
  transition: color var(--t-fast) var(--ease), border-color var(--t-fast) var(--ease);
}

.content--prose p a:hover { color: var(--accent-cyan); border-bottom-color: var(--accent-cyan); }

.content--prose em { color: var(--text); font-style: italic; }

/* Byline / "last updated" meta line: a paragraph containing only an <em> */
.content--prose > .container > p:first-child:has(> em:only-child) {
  position: relative;
  padding-left: 18px;
  color: var(--text-muted);
  font-size: 0.9375rem;
  margin-bottom: 0;
}

.content--prose > .container > p:first-child:has(> em:only-child)::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.4em;
  bottom: 0.4em;
  width: 2px;
  border-radius: 2px;
  background: linear-gradient(180deg, var(--accent-cyan), rgba(99, 102, 241, 0.2));
}

.content--prose > .container > p:first-child:has(> em:only-child) em {
  color: var(--text-muted);
  font-style: normal;
  letter-spacing: 0.03em;
}

/* Closing note block at the end of an article */
.content--prose > .container > p:last-child:has(> em:only-child) {
  position: relative;
  overflow: hidden;
  margin-top: clamp(46px, 5.4vw, 68px);
  padding: clamp(24px, 2.8vw, 34px);
  background:
    radial-gradient(400px 200px at 0% 0%, rgba(56, 189, 248, 0.07), transparent 62%),
    var(--bg-surface);
  border: 1px solid var(--border);
  border-radius: var(--r-md);
  font-size: 1rem;
  margin-bottom: 0;
}

.content--prose > .container > p:last-child:has(> em:only-child)::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: 3px;
  background: linear-gradient(180deg, var(--accent-cyan), var(--accent-indigo), var(--accent-violet));
}

/* Cookiebot cookie declaration (privacy page) — defensive styling only */
#CookieDeclaration,
.CookieDeclaration {
  display: block;
  margin-top: 30px;
  overflow-x: auto;
  color: var(--text-body);
  font-size: 0.9rem;
}

.CookieDeclaration table {
  width: 100%;
  border-collapse: collapse;
}

.CookieDeclaration table td,
.CookieDeclaration table th {
  border: 1px solid var(--border);
  padding: 9px 11px;
  text-align: left;
  vertical-align: top;
}

.CookieDeclarationType {
  border: 1px solid var(--border) !important;
  border-radius: var(--r-sm);
  padding: 18px !important;
  margin-bottom: 18px;
  background: var(--bg-surface);
}

/* ---------------- 404 link grid ---------------- */
.error-links {
  list-style: none;
  padding: 0;
  margin: clamp(30px, 3.6vw, 44px) 0 0;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(212px, 1fr));
  gap: 14px;
  max-width: 800px;
}

.error-links a {
  display: flex;
  align-items: center;
  min-width: 0;
  min-height: 58px;
  padding: 16px 22px;
  border-radius: var(--r-sm);
  font-size: 0.9375rem;
  font-weight: 500;
  text-decoration: none;
  text-align: left;
  transition:
    border-color var(--t-base) var(--ease),
    background-color var(--t-base) var(--ease),
    box-shadow var(--t-base) var(--ease),
    transform var(--t-base) var(--ease);
}

.error-links a:hover {
  background: rgba(56, 189, 248, 0.11);
  border-color: var(--border-lum);
  color: var(--text);
  transform: translateY(-2px);
  box-shadow: var(--glow-ring);
}

/* ---------------- Footer ---------------- */
footer {
  position: relative;
  background: var(--bg-void);
  border-top: 1px solid var(--border);
  color: var(--text-muted);
  text-align: center;
  padding: clamp(30px, 4vw, 48px) var(--gutter);
  font-size: 0.875rem;
}

footer::before {
  content: "";
  position: absolute;
  top: -1px;
  left: 50%;
  transform: translateX(-50%);
  width: min(560px, 56%);
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(56, 189, 248, 0.42), rgba(99, 102, 241, 0.26), transparent);
}

footer a {
  color: var(--accent);
  text-decoration: none;
  border-bottom: 1px solid var(--accent-line);
  transition: color var(--t-fast) var(--ease), border-color var(--t-fast) var(--ease);
}

footer a:hover { color: var(--accent-cyan); border-bottom-color: var(--accent-cyan); }

/* ---------------- Reveal (behaviour unchanged: visible immediately) ------ */
.fade {
  opacity: 0;
  transform: translateY(25px);
  transition: opacity 0.8s ease, transform 0.8s ease;
}
.fade.visible {
  opacity: 1;
  transform: translateY(0);
}

/* ==========================================================================
   Responsive
   ========================================================================== */

@media (max-width: 1100px) {
  nav a { padding-inline: 12px; }
}

/* Tablet / mobile navigation */
@media (max-width: 960px) {
  :root { --header-h: 64px; }

  .menu-toggle { display: inline-flex; }

  nav ul { display: none; }

  nav ul.open {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    gap: 0;
    padding: 6px 0 10px;
    background: #080c1a;
    border-bottom: 1px solid var(--border);
    box-shadow: var(--shadow-3);
  }

  nav ul.open li + li { border-top: 1px solid var(--border); }

  nav ul.open a {
    padding: 16px var(--gutter);
    border-radius: 0;
    font-size: 1rem;
  }

  nav ul.open a.active::after {
    left: var(--gutter);
    right: auto;
    width: 20px;
    bottom: 11px;
  }
}

@media (max-width: 900px) {
  .hero h1 { max-width: 22ch; }
}

@media (max-width: 720px) {
  .about-header {
    grid-template-columns: 1fr;
    justify-items: start;
    gap: 24px;
  }
  .about-headshot { width: 116px; height: 116px; }
  .about-intro p { max-width: 100%; }
}

@media (max-width: 520px) {
  .hero { padding-top: clamp(66px, 16vw, 92px); padding-bottom: clamp(62px, 14vw, 84px); }
  .hero p { padding-left: 16px; }
  .hero-content .btn,
  .cta .btn { width: 100%; }
  .cert-list { grid-template-columns: 1fr; }
  .error-links { grid-template-columns: 1fr; }
  .faq-item h3,
  .faq-item p { padding-left: 20px; }
  form { padding: 24px 20px; border-radius: var(--r-md); }
  .about-headshot { width: 100px; height: 100px; border-radius: 16px; }
}

@media (max-width: 400px) {
  :root { --gutter: 18px; }
  .card { padding: 22px 18px; }
}

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

  .fade {
    opacity: 1;
    transform: none;
  }

  .card:hover,
  .card:focus-within,
  .cert-list a:hover,
  .error-links a:hover,
  .btn:hover,
  form button:hover {
    transform: none;
  }
}
