/* SafeKernels brand override.
   Loaded AFTER style.css to override Stackly's defaults.
   Token reference is docs/DESIGN.md / docs/DESIGN.json. */

:root {
  --sk-bg: #0A0B0F;
  --sk-bg-alt: #0F1115;
  --sk-bg-card: #14171C;
  /* Foreground tinted off pure white, matches the cool-cast neutrals on
     bg/bg-alt/bg-card. Still 19.6:1 on canvas, well past WCAG AAA. */
  --sk-fg: #FAFBFC;
  --sk-fg-muted: #B6BCC4;
  --sk-fg-dim: #8E96A1;            /* WCAG AA on bg-card (6.01:1) and bg (6.58:1). */
  --sk-border: #1F232A;
  --sk-cyan: #00D4FF;
  --sk-red: #EE5560;               /* AA on canvas (5.72:1), was #E63946 (4.72:1). */
  --sk-amber: #F59E0B;
  --sk-stroke-1: #5C6F84;          /* Diagram strokes, primary line work. */
  --sk-stroke-2: #3A4452;          /* Diagram strokes, secondary / dashed. */
  --sk-stroke-3: #2A3340;          /* Diagram strokes, grid / tick. */
  --sk-bg-frame: #0B0E13;          /* In-frame chrome under log/KG/HMI panels. Slightly darker than canvas. */
  --sk-mono-key: #8FA3B8;          /* Log/path key text. Between fg-dim and stroke-1. */
  --sk-stroke-soft: #1A2230;       /* KG grid fill, soft mid-tone strokes. */
  --sk-ease: cubic-bezier(0.25, 1, 0.5, 1);  /* ease-out-quart */

  /* Tinted-neutral channels, derived from the canvas/foreground tokens.
     Used in rgba() recipes so shadows and faint surface tints inherit the
     cool cast instead of leaning toward pure black or pure white. */
  --sk-bg-rgb: 10, 11, 15;        /* var(--sk-bg) channels */
  --sk-fg-rgb: 250, 251, 252;     /* var(--sk-fg) channels */
  --sk-cyan-rgb: 0, 212, 255;     /* var(--sk-cyan) channels */

  /* Override Stackly's --black/--white legacy tokens so any inherited
     pruned-template rule paints with the cool-tinted neutrals, not pure
     #000 / #FFF. Loaded after style.pruned.css; takes effect on cascade. */
  --black: #0A0B0F;
  --white: #FAFBFC;
}

/* Fonts loaded via <link rel="preload"> in HTML <head>. No @import (render-blocking). */

/* ============================================================
   Icon system: minimal inline-SVG mask, replaces FontAwesome Pro.
   The 24MB FA bundle was loaded for nine glyphs; this set replaces it
   at ~3KB of CSS. Each icon renders via mask-image so it inherits the
   element's color via background-color: currentColor. SVG strokes are
   black (the mask source); the visible color is currentColor.
   ============================================================ */
i.fa-times, i.fa-xmark,
i.fa-location-dot, i.fa-map-marker-alt,
i.fa-envelope,
i.fa-fingerprint,
i.fa-key,
i.fa-shield, i.fa-shield-halved,
i.fa-list-check, i.fa-tasks,
i.fa-briefcase,
i.fa-newspaper {
  display: inline-block;
  width: 1em;
  height: 1em;
  vertical-align: -0.125em;
  background-color: currentColor;
  -webkit-mask-position: center;
  mask-position: center;
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-size: contain;
  mask-size: contain;
  font-style: normal;
  line-height: 1;
  /* Hide any text fallback that may have been set by FA before removal. */
  font-size: inherit;
  text-rendering: auto;
}
i.fa-times, i.fa-xmark {
  -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round'><path d='M6 6l12 12M18 6 6 18'/></svg>");
  mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round'><path d='M6 6l12 12M18 6 6 18'/></svg>");
}
i.fa-location-dot, i.fa-map-marker-alt {
  -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'><path d='M12 22s7-7.5 7-13a7 7 0 1 0-14 0c0 5.5 7 13 7 13z'/><circle cx='12' cy='9' r='2.5'/></svg>");
  mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'><path d='M12 22s7-7.5 7-13a7 7 0 1 0-14 0c0 5.5 7 13 7 13z'/><circle cx='12' cy='9' r='2.5'/></svg>");
}
i.fa-envelope {
  -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'><rect x='3' y='6' width='18' height='12' rx='1.5'/><path d='M3.5 7l8.5 6 8.5-6'/></svg>");
  mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'><rect x='3' y='6' width='18' height='12' rx='1.5'/><path d='M3.5 7l8.5 6 8.5-6'/></svg>");
}
i.fa-fingerprint {
  -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'><path d='M3.5 11a8.5 8.5 0 0 1 17 0'/><path d='M6.5 11a5.5 5.5 0 0 1 11 0v2.5'/><path d='M9.5 13.5a2.5 2.5 0 0 1 5 0c0 2-1 3.5-1.8 5'/><path d='M12 11.5v3.5'/></svg>");
  mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'><path d='M3.5 11a8.5 8.5 0 0 1 17 0'/><path d='M6.5 11a5.5 5.5 0 0 1 11 0v2.5'/><path d='M9.5 13.5a2.5 2.5 0 0 1 5 0c0 2-1 3.5-1.8 5'/><path d='M12 11.5v3.5'/></svg>");
}
i.fa-key {
  -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'><circle cx='7' cy='15' r='3.5'/><path d='M10.5 13L20 4'/><path d='M16 6l3 3'/></svg>");
  mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'><circle cx='7' cy='15' r='3.5'/><path d='M10.5 13L20 4'/><path d='M16 6l3 3'/></svg>");
}
i.fa-shield, i.fa-shield-halved {
  -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'><path d='M12 2.5l8 3v6c0 4.6-3.4 8.6-8 10-4.6-1.4-8-5.4-8-10v-6l8-3z'/></svg>");
  mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'><path d='M12 2.5l8 3v6c0 4.6-3.4 8.6-8 10-4.6-1.4-8-5.4-8-10v-6l8-3z'/></svg>");
}
i.fa-list-check, i.fa-tasks {
  -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'><path d='M11 6h10M11 12h10M11 18h10'/><path d='M3 6l2 2 3-3'/><path d='M3 12l2 2 3-3'/><path d='M3 18l2 2 3-3'/></svg>");
  mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'><path d='M11 6h10M11 12h10M11 18h10'/><path d='M3 6l2 2 3-3'/><path d='M3 12l2 2 3-3'/><path d='M3 18l2 2 3-3'/></svg>");
}
i.fa-briefcase {
  -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'><rect x='3' y='7' width='18' height='13' rx='1.5'/><path d='M9 7V5.5A1.5 1.5 0 0 1 10.5 4h3A1.5 1.5 0 0 1 15 5.5V7'/><path d='M3 13h18'/></svg>");
  mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'><rect x='3' y='7' width='18' height='13' rx='1.5'/><path d='M9 7V5.5A1.5 1.5 0 0 1 10.5 4h3A1.5 1.5 0 0 1 15 5.5V7'/><path d='M3 13h18'/></svg>");
}
i.fa-newspaper {
  -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'><rect x='3' y='5' width='14' height='15' rx='1'/><path d='M7 9h6M7 13h6M7 17h4'/><path d='M17 9h4v9a2 2 0 0 1-2 2'/></svg>");
  mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'><rect x='3' y='5' width='14' height='15' rx='1'/><path d='M7 9h6M7 13h6M7 17h4'/><path d='M17 9h4v9a2 2 0 0 1-2 2'/></svg>");
}

/* === Global focus ring (WCAG 2.4.7) === */
:focus-visible {
  outline: 2px solid var(--sk-cyan);
  outline-offset: 2px;
  border-radius: 2px;
}
/* On very narrow viewports the 2px offset can clip when controls hug the edge. */
@media (max-width: 360px) {
  :focus-visible { outline-offset: 1px; }
}
/* Suppress legacy focus where focus-visible takes over to avoid double rings. */
:focus:not(:focus-visible) { outline: none; }

/* === Skip-to-main link (WCAG 2.4.1) === */
.sk-skip-link {
  position: absolute;
  left: -10000px;
  top: auto;
  width: 1px;
  height: 1px;
  overflow: hidden;
}
.sk-skip-link:focus {
  position: fixed;
  left: 16px;
  top: clamp(12px, 2vh, 24px);
  width: auto;
  height: auto;
  padding: 12px 18px;
  background: var(--sk-cyan);
  color: var(--sk-bg);
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 0.75rem;
  font-weight: 500;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  border-radius: 4px;
  /* Above the sticky header (which sits at z-index ~999 in Stackly base). */
  z-index: 100000;
}

/* === Typography === */
body, p, span, a, li, button, input, textarea, select, label,
.rr-btn, .menu-item-has-children > a, nav a {
  font-family: 'Inter', system-ui, -apple-system, sans-serif !important;
}

/* Lexend on display + headings. Lexend was developed off the readability
   research literature and reads less "default SaaS" than Inter. Body still
   uses Inter for word-density reasons. .sub-title is mono and stays mono. */
h1, h2, h3, h4, h5, h6,
.title, .hero-5__title, .hero-4__title,
.special-features-4__title, .brand-5__title {
  font-family: 'Lexend', 'Inter', system-ui, sans-serif !important;
  letter-spacing: -0.02em;
  font-weight: 600;
}

/* JetBrains Mono on stat numbers, code-like content */
.odometer, .counter-num, .stat-num, .rr-mono,
.fact-content .number, [class*="number"] .odometer {
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-weight: 500;
  letter-spacing: -0.04em;
}

/* === Dark background pass === */
html, body {
  background: var(--sk-bg) !important;
  color: var(--sk-fg) !important;
}
main { overflow: visible !important; }
.rr-ov-hidden.hero-5,
.hero-5.rr-ov-hidden { overflow: visible !important; }

/* === Tablet / phone breakpoints (768/480) ===
   Stackly's defaults skip these; the site otherwise jumps straight from
   ≤640 to desktop. Add explicit refinements where density requires it. */
@media (max-width: 768px) {
  /* Trim the hero CTA cluster gap so two CTAs don't break onto three lines. */
  .sk-hero-cta { gap: 14px 22px; }
  /* Comparison table compresses on tablet — reduce padding. */
  .sk-compare-table th,
  .sk-compare-table td { padding: 10px 12px; font-size: 0.86rem; }
  /* Pillar lead reduces card padding on tablet. */
  .sk-pillar-lead { padding: 24px; }
  .sk-pillar-lead__title { font-size: 1.4rem; }
  /* Footer top stacks on tablet (already does <860). */
}
@media (max-width: 480px) {
  .sk-pillar-lead { padding: 20px; }
  .sk-pillar-lead__title { font-size: 1.25rem; }
  .sk-pillar-lead__facts { grid-template-columns: 1fr; gap: 10px; }
  .sk-readout__lead { padding: 22px; }
  .sk-readout__lead-num { font-size: clamp(2.6rem, 12vw, 3.6rem); }
  .sk-vendor-wall__row { gap: 8px 16px; }
  .sk-vendor-wall__row li { font-size: 0.78rem; }
}
/* Touch-target floor on coarse pointers (WCAG 2.5.5 AAA / mobile
   accuracy). On fine pointers (mouse), buttons stay compact — instrument
   keys, not chunky CTAs. Section-nav / section-cta keep their own floor. */
@media (pointer: coarse) {
  .rr-btn, .rr-btn-2, .rr-btn-3, .rr-btn-4, .rr-btn-5,
  .btn, button.primary, .theme-btn {
    min-height: 44px !important;
  }
}
.sk-section-nav a, .sk-section-cta {
  min-height: 40px;
}

/* === Problem ledger (replaces "01/02/03" 3-up card grid on home) ===
   Three numbered rows with hairline separators, no card backgrounds. The
   number is the cyan signal; the body sits in default fg/muted.
   ============================================================ */
.sk-problems {
  margin: 0;
  padding: 0;
  list-style: none;
  display: flex;
  flex-direction: column;
}
.sk-problems__row {
  display: grid;
  grid-template-columns: 9rem minmax(0, 1fr);
  column-gap: 32px;
  padding: 28px 0;
  border-top: 1px solid var(--sk-border);
}
.sk-problems__row:last-child { border-bottom: 1px solid var(--sk-border); }
.sk-problems__tag {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 0.78rem;
  color: var(--sk-cyan);
  letter-spacing: 0.18em;
  text-transform: uppercase;
  align-self: flex-start;
  padding-top: 6px;
}
.sk-problems__body { margin: 0; }
.sk-problems__title {
  margin: 0 0 8px;
  font-size: 1.2rem;
  line-height: 1.3;
  font-weight: 600;
  letter-spacing: -0.01em;
  color: var(--sk-fg) !important;
}
.sk-problems__desc {
  margin: 0;
  color: var(--sk-fg-muted);
  line-height: 1.55;
  max-width: 60ch;
}
@media (max-width: 640px) {
  .sk-problems__row { grid-template-columns: 1fr; row-gap: 6px; padding: 22px 0; }
}

/* === Reasons strip (replaces 3-up reason cards on home) ===
   Three columns of plain dt/dd with vertical hairlines between them,
   no fills. Reads as typographic argumentation, not a card grid.
   ============================================================ */
.sk-reasons {
  margin: 48px 0 0;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0;
  border-top: 1px solid var(--sk-border);
}
.sk-reasons__col {
  padding: 26px 28px 0;
  border-right: 1px solid var(--sk-border);
}
.sk-reasons__col:last-child { border-right: none; }
.sk-reasons__col:first-child { padding-left: 0; }
.sk-reasons__name {
  margin: 0 0 8px;
  font-size: 1.05rem;
  font-weight: 600;
  color: var(--sk-fg) !important;
  letter-spacing: -0.01em;
}
.sk-reasons__desc {
  margin: 0;
  color: var(--sk-fg-muted);
  line-height: 1.55;
}
@media (max-width: 720px) {
  .sk-reasons { grid-template-columns: 1fr; }
  .sk-reasons__col {
    padding: 22px 0;
    border-right: none;
    border-bottom: 1px solid var(--sk-border);
  }
  .sk-reasons__col:last-child { border-bottom: none; }
}

/* === Status ledger (replaces 4-up "What ships today" card grid) ===
   Two paired groups (Shipping / Roadmap), each a labelled dl. Reads as a
   procurement readout, not a feature billboard.
   ============================================================ */
.sk-ledger {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 0;
  border-top: 1px solid var(--sk-border);
  border-bottom: 1px solid var(--sk-border);
}
.sk-ledger__group {
  padding: 32px 36px;
  background: transparent !important;
}
.sk-ledger__group--shipping { border-right: 1px solid var(--sk-border); }
.sk-ledger__heading {
  margin: 0 0 18px !important;
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 0.78rem !important;
  letter-spacing: 0.18em !important;
  text-transform: uppercase !important;
  font-weight: 500 !important;
  color: var(--sk-fg-dim) !important;
}
.sk-ledger__group--shipping .sk-ledger__heading { color: var(--sk-cyan) !important; }
.sk-ledger__list { margin: 0; padding: 0; }
.sk-ledger__row {
  padding: 18px 0;
  border-top: 1px solid var(--sk-border);
}
.sk-ledger__row:first-child { border-top: none; padding-top: 0; }
.sk-ledger__name {
  margin: 0 0 6px;
  font-size: 1.05rem;
  font-weight: 600;
  color: var(--sk-fg) !important;
  letter-spacing: -0.01em;
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: 8px;
}
.sk-ledger__qual {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 0.66rem;
  color: var(--sk-fg-dim);
  letter-spacing: 0.16em;
  text-transform: uppercase;
  font-weight: 500;
  border: 1px solid var(--sk-border);
  padding: 1px 6px;
  border-radius: 2px;
}
.sk-ledger__desc {
  margin: 0;
  color: var(--sk-fg-muted);
  font-size: 0.94rem;
  line-height: 1.55;
}
.sk-ledger__desc code {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  background: var(--sk-bg-card);
  padding: 1px 6px;
  border-radius: 3px;
  font-size: 0.92em;
  color: var(--sk-fg);
}
@media (max-width: 720px) {
  .sk-ledger { grid-template-columns: 1fr; }
  .sk-ledger__group--shipping {
    border-right: none;
    border-bottom: 1px solid var(--sk-border);
  }
  .sk-ledger__group { padding: 24px 0; }
}
/* Single-column ledger: same hairline rhythm as the paired version,
   used when there is only one group (e.g. roadmap-only on security). */
.sk-ledger--single { grid-template-columns: minmax(0, 1fr); }
.sk-ledger--single .sk-ledger__group--shipping { border-right: none; }

/* Inline pill for sk-pillar-row titles: status indicator inside the
   row title, not a card chrome. Sized down so it reads as a tag, not a
   second focal element. */
.sk-pillar-row__pill {
  vertical-align: 0.10em;
  margin-left: 6px;
  font-size: 0.62rem;
  letter-spacing: 0.16em;
}

/* === Procurement bridge panel (replaces .feature-item.sk-bridge-card)
   Single tonal-step panel on the section band. Distinct from cards
   because it has a left mono eyebrow row (not an icon-and-text card).
   Lives inside sections with default bg, NOT inside cards: never
   nested. */
.sk-bridge {
  margin: 0 0 32px;
  padding: 22px 28px;
  background: var(--sk-bg-card);
  border: 1px solid var(--sk-border);
  border-radius: 8px;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  column-gap: 28px;
  row-gap: 8px;
}
.sk-bridge__heading {
  margin: 0;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 0.78rem;
  font-weight: 500;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--sk-cyan);
  grid-column: 1 / -1;
}
.sk-bridge__body {
  margin: 0;
  color: var(--sk-fg-muted);
  line-height: 1.55;
  max-width: 60ch;
  grid-column: 1;
}
.sk-bridge .sk-section-cta {
  grid-column: 2;
  margin: 0;
  white-space: nowrap;
  align-self: center;
}
@media (max-width: 720px) {
  .sk-bridge {
    grid-template-columns: 1fr;
    padding: 20px 22px;
  }
  .sk-bridge__body { grid-column: 1; }
  .sk-bridge .sk-section-cta { grid-column: 1; }
}

/* === Asymmetric platform pillars (replaces 4-up identical card grid) === */
.sk-pillars__head { max-width: 760px; margin-bottom: 56px; }
.sk-pillars__eyebrow {
  display: inline-block;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 0.78rem;
  font-weight: 500;
  color: var(--sk-fg-dim);
  letter-spacing: 0.18em;
  text-transform: uppercase;
}
.sk-pillars__title {
  margin-top: 14px;
  font-size: clamp(1.875rem, 3.6vw, 2.6rem);
  line-height: 1.15;
  letter-spacing: -0.02em;
  font-weight: 600;
  color: var(--sk-fg);
}
.sk-pillars__grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 32px;
}
@media (min-width: 768px) {
  .sk-pillars__grid {
    grid-template-columns: minmax(0, 7fr) minmax(0, 5fr);
    gap: 40px;
    align-items: stretch;
  }
}
@media (min-width: 992px) {
  .sk-pillars__grid {
    gap: 56px;
  }
}

/* Lead pillar: a panel with a fact ledger inside. */
.sk-pillar-lead {
  display: flex;
  flex-direction: column;
  gap: 18px;
  padding: 36px;
  background: var(--sk-bg-card);
  border: 1px solid var(--sk-border);
  border-radius: 8px;
  text-decoration: none;
  color: inherit;
  transition: box-shadow 200ms var(--sk-ease);
}
.sk-pillar-lead:hover {
  box-shadow: inset 0 0 0 1px rgba(0, 212, 255, 0.10);
}
.sk-pillar-lead__index {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 0.75rem;
  font-weight: 500;
  color: var(--sk-cyan);
  letter-spacing: 0.18em;
  text-transform: uppercase;
}
.sk-pillar-lead__title {
  margin: 0;
  font-size: 1.6rem;
  line-height: 1.2;
  letter-spacing: -0.015em;
  font-weight: 600;
  color: var(--sk-fg);
}
.sk-pillar-lead__desc {
  margin: 0;
  color: var(--sk-fg-muted);
  line-height: 1.6;
  max-width: 56ch;
}
.sk-pillar-lead__desc code {
  font-size: 0.92em;
  color: var(--sk-fg);
  background: var(--sk-bg-alt);
  padding: 1px 6px;
  border-radius: 3px;
}
.sk-pillar-lead__facts {
  list-style: none;
  margin: 8px 0 0;
  padding: 16px 0 0;
  border-top: 1px solid var(--sk-border);
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px 24px;
}
@media (max-width: 540px) { .sk-pillar-lead__facts { grid-template-columns: 1fr; } }
.sk-pillar-lead__facts li { display: flex; flex-direction: column; gap: 4px; }
.sk-pillar-lead__k {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 0.7rem;
  font-weight: 500;
  color: var(--sk-fg-dim);
  letter-spacing: 0.16em;
  text-transform: uppercase;
}
.sk-pillar-lead__v {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 0.92rem;
  color: var(--sk-fg);
}
.sk-pillar-lead__more {
  margin-top: auto;
  padding-top: 6px;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 0.78rem;
  font-weight: 500;
  color: var(--sk-cyan);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  border-bottom: 1px solid transparent;
  align-self: flex-start;
  transition: border-color 200ms ease, gap 200ms ease;
}
.sk-pillar-lead:hover .sk-pillar-lead__more {
  border-bottom-color: var(--sk-cyan);
  gap: 12px;
}

/* Supporting pillars: tight stacked rows, no icons, no cards. */
.sk-pillar-list {
  margin: 0;
  padding: 0;
  list-style: none;
  display: flex;
  flex-direction: column;
}
.sk-pillar-row {
  display: grid;
  grid-template-columns: minmax(9rem, 10rem) minmax(0, 1fr);
  column-gap: 32px;
  padding: 28px 0;
  border-top: 1px solid var(--sk-border);
  transition: color 200ms var(--sk-ease);
  /* Anchor for the stretched ::before below — the whole row is the click
     target, but the anchor itself only wraps the title text for a11y. */
  position: relative;
}
.sk-pillar-row:last-child { border-bottom: 1px solid var(--sk-border); }
@media (max-width: 575.98px) {
  .sk-pillar-row {
    grid-template-columns: 1fr;
    row-gap: 10px;
    padding: 24px 0;
  }
}
.sk-pillar-row:hover .sk-pillar-row__title { color: var(--sk-cyan); }
/* Stretched-link pattern: <a class="sk-pillar-row__link"> wraps the title
   inline, but its ::before fills the entire .sk-pillar-row, so the row is
   clickable and the anchor text remains the accessible name. */
.sk-pillar-row__link {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  color: inherit;
  text-decoration: none;
}
.sk-pillar-row__link::before {
  content: '';
  position: absolute;
  inset: 0;
  z-index: 1;
}
.sk-pillar-row__link:focus-visible {
  outline: none;
}
.sk-pillar-row__link:focus-visible::before {
  outline: 2px solid var(--sk-cyan);
  outline-offset: -2px;
  border-radius: 2px;
}
.sk-pillar-row__index {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 1.5rem;
  font-weight: 500;
  color: var(--sk-fg-dim);
  line-height: 1.1;
  letter-spacing: -0.02em;
}
.sk-pillar-row__body { margin: 0; }
.sk-pillar-row__title {
  margin: 0;
  font-size: 1.15rem;
  line-height: 1.3;
  letter-spacing: -0.01em;
  font-weight: 600;
  color: var(--sk-fg);
  transition: color 200ms var(--sk-ease);
}
.sk-pillar-row__desc {
  margin: 6px 0 0;
  font-size: 0.95rem;
  line-height: 1.55;
  color: var(--sk-fg-muted);
}
.sk-pillar-row__desc code {
  font-size: 0.92em;
  color: var(--sk-fg);
  background: var(--sk-bg-alt);
  padding: 1px 5px;
  border-radius: 3px;
}

/* === Reading-the-kernel hierarchical readout (replaces hero-metric grid) === */
.sk-readout-section {
  border-top: 1px solid var(--sk-border);
  border-bottom: 1px solid var(--sk-border);
}
.sk-readout {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  grid-template-areas:
    "head"
    "lead"
    "list";
  gap: 40px;
  align-items: start;
}
@media (min-width: 992px) {
  .sk-readout {
    grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
    grid-template-areas:
      "head list"
      "lead list";
    column-gap: 80px;
    row-gap: 32px;
  }
}
.sk-readout__head { grid-area: head; max-width: 560px; }
.sk-readout__lead { grid-area: lead; }
.sk-readout__list { grid-area: list; }
.sk-readout__eyebrow {
  display: inline-block;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 0.78rem;
  font-weight: 500;
  color: var(--sk-fg-dim);
  letter-spacing: 0.18em;
  text-transform: uppercase;
}
.sk-readout__title {
  margin-top: 14px;
  font-size: clamp(1.875rem, 3.6vw, 2.6rem);
  line-height: 1.15;
  letter-spacing: -0.02em;
  font-weight: 600;
  color: var(--sk-fg);
}
.sk-readout__lede {
  margin-top: 16px;
  max-width: 540px;
  color: var(--sk-fg-muted);
  line-height: 1.6;
}
.sk-readout__lede code {
  font-size: 0.95em;
  color: var(--sk-fg);
  background: var(--sk-bg-card);
  padding: 1px 6px;
  border-radius: 3px;
}

/* The lead number: cyan, large, the only saturated number on the page. */
.sk-readout__lead {
  display: flex;
  flex-direction: column;
  gap: 18px;
  padding: 32px;
  background: var(--sk-bg-card);
  border: 1px solid var(--sk-border);
  border-radius: 8px;
}
.sk-readout__lead-num {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: clamp(3.5rem, 7vw, 5rem);
  line-height: 1;
  letter-spacing: -0.04em;
  font-weight: 500;
  color: var(--sk-cyan);
}
.sk-readout__unit {
  font-size: 0.5em;
  color: var(--sk-fg-muted);
  margin-left: 2px;
}
.sk-readout__lead-desc {
  margin: 0;
  font-size: 1rem;
  line-height: 1.55;
  color: var(--sk-fg);
}
.sk-readout__cite {
  margin: 6px 0 0;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 0.72rem;
  color: var(--sk-fg-dim);
  letter-spacing: 0.04em;
}

/* The supporting list: dt holds the number in fg, dd holds the description and citation. */
.sk-readout__list {
  margin: 0;
  display: flex;
  flex-direction: column;
}
.sk-readout__row {
  display: grid;
  grid-template-columns: 8.5rem minmax(0, 1fr);
  column-gap: 24px;
  row-gap: 4px;
  padding: 20px 0;
  border-top: 1px solid var(--sk-border);
}
.sk-readout__row:last-child { border-bottom: 1px solid var(--sk-border); }
.sk-readout__num {
  grid-column: 1;
  grid-row: 1 / span 2;
  align-self: center;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 1.5rem;
  font-weight: 500;
  line-height: 1.05;
  letter-spacing: -0.02em;
  color: var(--sk-fg);
}
.sk-readout__desc {
  grid-column: 2;
  grid-row: 1;
  margin: 0;
  font-size: 0.98rem;
  line-height: 1.55;
  color: var(--sk-fg);
}
.sk-readout__desc code {
  font-size: 0.92em;
  color: var(--sk-fg);
  background: var(--sk-bg-card);
  padding: 1px 5px;
  border-radius: 3px;
}
.sk-readout__row .sk-readout__cite {
  grid-column: 2;
  grid-row: 2;
  margin: 0;
}
@media (max-width: 640px) {
  .sk-readout__row {
    grid-template-columns: 1fr;
    row-gap: 8px;
  }
  .sk-readout__num { grid-column: 1; grid-row: auto; }
  .sk-readout__desc { grid-column: 1; grid-row: auto; }
  .sk-readout__row .sk-readout__cite { grid-column: 1; grid-row: auto; }
}

/* === Utility classes (extracted from repeated inline styles) === */
.sk-card-pad      { padding: 32px; height: 100%; }
.sk-lead          { font-size: 1.15rem; margin-bottom: 12px; }
.sk-h2            { font-size: clamp(1.75rem, 3.5vw, 2.6rem); line-height: 1.15; margin-top: 12px; }
/* CTA-zone heading: smaller than .sk-h2, sits in closing-section banners. */
.sk-h-cta         { font-size: clamp(1.75rem, 3vw, 2.25rem); line-height: 1.15; }
.sk-h3            { font-size: clamp(1.5rem, 2.6vw, 2.1rem); line-height: 1.18; margin-top: 12px; }
.sk-eyebrow {
  font-size: 0.78rem;
  color: var(--sk-fg-dim);             /* eyebrows are quiet, cyan is reserved for state */
  text-transform: uppercase;
  letter-spacing: 0.18em;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
}
.sk-mt-14         { margin-top: 14px; }
.sk-mt-16         { margin-top: 16px; }
.sk-mt-32         { margin-top: 32px; }
.sk-mb-40         { margin-bottom: 40px; }
.sk-row-gap-24    { row-gap: 24px; }
.sk-row-gap-32    { row-gap: 32px; }
.sk-c-cyan        { color: var(--sk-cyan); }
.sk-c-dim-mono {
  color: var(--sk-fg-dim);
  font-size: 0.75rem;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
}

/* Stackly's white wrappers & sectional surfaces, force dark */
.body-wrapper, .theme-bg-white, .section-bg, .section-bg-2,
#smooth-wrapper, #smooth-content, main, .has-smooth {
  background-color: var(--sk-bg) !important;
}

/* Re-tint Stackly's hero / analytices glow blobs to the cyan signal.
   Footer bg-shape divs were removed from the markup; no rule needed. */
.hero-5__bg-shape, .hero-5__bg-shape_2,
.analytices-fast-5__bg-shape, .analytices-fast-5__bg-shape_2 {
  background: radial-gradient(circle, rgba(0,212,255,0.16) 0%, rgba(0,212,255,0) 70%) !important;
  /* Capped at 10px: anything larger forces large-area GPU repaints on scroll. */
  filter: blur(10px) !important;
  opacity: 1 !important;
}

/* Hero floating photos, give them dark frames, not white */
.hero-5__thumb > img,
.hero-5__thumb .image_1 img,
.hero-5__thumb .image_2 img {
  border: 1px solid var(--sk-border) !important;
  box-shadow: 0 20px 60px -10px rgba(0,212,255,0.15);
}

/* Brand-5 border lines, force to dark border, cyan dot */
.brand-5__border-shape { background-color: var(--sk-border) !important; }
.brand-5__border-shape .left, .brand-5__border-shape .right {
  background-color: var(--sk-cyan) !important;
}

/* Side panel uses var(--white), force dark */
.side-info { background: var(--sk-bg-alt) !important; }
.sk-mobile-nav {
  display: grid;
  gap: 2px;
  margin-top: 32px;
  padding-top: 24px;
  border-top: 1px solid var(--sk-border);
}
.sk-mobile-nav a {
  display: flex;
  align-items: center;
  min-height: 44px;
  padding: 0 2px;
  color: var(--sk-fg-muted);
  font-family: 'JetBrains Mono', ui-monospace, Menlo, monospace;
  font-size: 0.84rem;
  letter-spacing: 0.12em;
  line-height: 1.2;
  text-transform: uppercase;
  text-decoration: none;
}
.sk-mobile-nav a:hover,
.sk-mobile-nav a:focus-visible,
.sk-mobile-nav a.is-active,
.sk-mobile-nav a[aria-current="page"] {
  color: var(--sk-cyan);
}
.sk-mobile-nav a.is-active::before,
.sk-mobile-nav a[aria-current="page"]::before {
  content: "";
  width: 6px;
  height: 6px;
  margin-right: 10px;
  background: var(--sk-cyan);
  box-shadow: 0 0 10px rgba(0, 212, 255, 0.85);
}

/* Section-spacing utility classes from Stackly default to white sections; force dark */
section, .section { background-color: transparent !important; }
section[class*="-5"]:not([style*="background"]) { background-color: var(--sk-bg) !important; }

/* === Specific Stackly sections that ship with white bg === */
.features-5, .features-5__wrapper,
.brand-5, .brand-5__top,
.abour-5, .why-choose-us-5, .why-choose-us-5__wrap,
.testimonial-5, .testimonial-5__inner,
.analytices-fast-5, .analytices-fast-5__inner, .analytices-fast-5__wrapper,
.marketplace, .marketplace__wrapper,
.cta-area, .funfact-area,
.footer-5__area, .copyright-5__area, .copyright-5__wrap,
.hero-5, .hero-5__inner, .hero-5__wrapper {
  background-color: var(--sk-bg) !important;
}

/* Hero h1 accent span (Stackly defaults to its primary purple) */
.hero-5__title span, h1.title span, .hero-4__title span,
.title.rr-title-anim-1 span, .title.rr-title-anim-2 span {
  color: var(--sk-cyan) !important;
  -webkit-text-fill-color: var(--sk-cyan) !important;
  background: none !important;
}

/* === Hero placeholder photos, original Stackly markup is hidden.
   We use .sk-hero-arms instead (real robot renders). === */
.hero-5__thumb { display: none !important; }
.hero-5__wrapper { padding-bottom: 80px !important; }

/* === Hero vendor wall: a coverage statement.
   Names-as-type, no logos (avoids implied endorsement before partnerships exist). === */
.sk-vendor-wall {
  position: relative;
  z-index: 2;
  max-width: 1080px;
  margin: 72px auto 0;
  padding: 36px 24px 0;
  text-align: center;
  border-top: 1px solid var(--sk-border);
}
.sk-vendor-wall__lede {
  font-family: 'JetBrains Mono', monospace;
  font-size: 0.78rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--sk-fg-dim);
  margin: 0 0 28px;
}
/* Centered HMI strips, one per row. Same vocabulary as the trust-strip
   and standards-strip stacked above the KG schematic — keeps the section
   inside an established visual pattern instead of introducing a grid /
   labeled-row layout that would clash with the sk-problems and sk-pillars
   labeled-rows immediately below.
     - Each row is a flex-wrap strip of mono items, gap-separated, centered.
     - The leading <li class="sk-vendor-wall__tag"> is the row's label —
       smaller, uppercase, mono — and signals row kind via colour only.
     - Verified row: cyan dot + cyan tag. Offer row: muted tag, no dot.
     - Vendor names within a row stay uniform weight; no vendor outranks
       another within its tier. */
.sk-vendor-wall__row {
  list-style: none;
  margin: 0 auto 10px;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: baseline;
  gap: 10px 24px;
  max-width: 880px;
}
.sk-vendor-wall__row + .sk-vendor-wall__note { margin-top: 22px; }
.sk-vendor-wall__row li:not(.sk-vendor-wall__tag) {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 0.95rem;
  font-weight: 500;
  letter-spacing: 0.02em;
  color: var(--sk-fg);
  opacity: 0.92;
}
.sk-vendor-wall__tag {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 0.7rem;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--sk-fg-dim);
  white-space: nowrap;
}
.sk-vendor-wall__tag--verified { color: var(--sk-cyan); }
/* Amber tag + amber dot mirrors the cyan-tag/cyan-dot symmetry of the
   verified row. Amber is the codebase's "honest forward-looking" colour
   (also used on .sk-standards-strip__qual "not certified today"), so the
   second row reads as the offer bucket without the word "Roadmap". */
.sk-vendor-wall__tag--contract { color: var(--sk-amber); }
.sk-vendor-wall__dot {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--sk-cyan);
  box-shadow: 0 0 6px rgba(0, 212, 255, 0.55);
  flex-shrink: 0;
}
.sk-vendor-wall__dot--contract {
  background: var(--sk-amber);
  box-shadow: 0 0 6px rgba(245, 158, 11, 0.45);
}
.sk-vendor-wall__note {
  max-width: 760px;
  margin: 22px auto 0;
  font-size: 0.85rem;
  line-height: 1.55;
  color: var(--sk-fg-muted);
}

@media (max-width: 640px) {
  .sk-vendor-wall { margin-top: 56px; padding-top: 28px; }
  .sk-vendor-wall__row { gap: 8px 18px; }
  .sk-vendor-wall__row li:not(.sk-vendor-wall__tag) { font-size: 0.85rem; }
  .sk-vendor-wall__tag { font-size: 0.66rem; letter-spacing: 0.12em; }
}

/* Hero wrapper: standard padding, no longer needs absolute-anchor min-height */
.hero-5__wrapper { padding-bottom: 80px !important; overflow: visible !important; }
.hero-5__content { position: relative; z-index: 2; }

/* Hero content sits directly on the section. No card, no backdrop , 
   the decorative arcs/dots float around it as ambient orbital motif. */
.hero-5__content {
  box-sizing: border-box;
  width: min(100%, 1100px);
  max-width: 1100px;
  margin: 0 auto;
  position: relative;
  padding: 40px 24px 60px !important;
  background: transparent !important;
  z-index: 2;
}

/* Stackly check-bullets: paint cyan and add a subtle dot */
.abour-5__list ul li,
.analytices-fast-5__list ul li,
.why-choose-us-5__content li {
  color: var(--sk-fg-muted) !important;
  position: relative;
  padding-left: 30px !important;
  list-style: none !important;
  margin-bottom: 12px;
}
.abour-5__list ul li i,
.analytices-fast-5__list ul li i,
.why-choose-us-5__content li i,
.fa-check, .fa-regular.fa-check {
  color: var(--sk-cyan) !important;
  background: transparent !important;
  font-size: 0.9rem !important;
}
.abour-5__list ul li::before,
.analytices-fast-5__list ul li::before {
  content: "▸";
  position: absolute;
  left: 0;
  top: 0;
  color: var(--sk-cyan);
  font-size: 1rem;
  font-weight: 600;
}
.abour-5__list ul li i,
.analytices-fast-5__list ul li i { display: none !important; }

/* Rectilinear feature icon container. No circles. No halos. */
.features-5__icon {
  width: 48px !important;
  height: 48px !important;
  border-radius: 4px !important;
  background: var(--sk-bg-alt) !important;
  border: 1px solid var(--sk-border) !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  margin-bottom: 20px !important;
  transition: border-color 200ms var(--sk-ease), color 200ms var(--sk-ease);
}
.features-5__icon:hover {
  border-color: var(--sk-cyan) !important;
}
.features-5__icon img {
  width: 22px !important;
  height: 22px !important;
  filter: brightness(0) invert(1) !important;
  opacity: 0.85;
}

/* === Footer, kill the light bg blob === */
.footer-5__area, .footer-5__inner {
  background-color: var(--sk-bg-alt) !important;
  background-image: none !important;
  border-top: 1px solid var(--sk-border) !important;
}
.footer-5__area::before, .footer-5__area::after { display: none !important; }

/* Stackly ships a white gradient on .copyright-5__wrap, kill it. */
.copyright-5__area, .copyright-5__wrap {
  background: var(--sk-bg-alt) !important;
  background-image: none !important;
  border-top: 1px solid var(--sk-border) !important;
}
.copyright-5__wrap { padding: 18px 0 !important; }
.footer-5__area, .footer-5__area p, .footer-5__area li, .footer-5__area span,
.copyright-4__text, .copyright-4__text p, .copyright-5__area {
  color: var(--sk-fg-muted) !important;
  background-color: transparent !important;
}
.footer-5__area .footer-4__title,
.footer-5__area h1, .footer-5__area h2, .footer-5__area h3, .footer-5__area h4 {
  color: var(--sk-fg) !important;
  font-size: 0.78rem !important;
  text-transform: uppercase !important;
  letter-spacing: 0.12em !important;
  margin-bottom: 18px !important;
}
.footer-5__area a { color: var(--sk-fg-muted) !important; }
.footer-5__area a:hover { color: var(--sk-cyan) !important; }
.footer-5__widget ul { list-style: none !important; padding-left: 0 !important; margin: 0 !important; }
.footer-5__widget ul li { padding-left: 0 !important; margin-bottom: 10px !important; }
.footer-5__widget ul li::before, .footer-5__widget ul li::marker { content: none !important; display: none !important; }
.footer-4__social ul li a {
  color: var(--sk-fg-muted) !important;
  width: 36px;
  height: 36px;
  border: 1px solid var(--sk-border) !important;
  background: transparent !important;
  border-radius: 3px !important;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.footer-4__social ul li a:hover {
  border-color: var(--sk-cyan) !important;
  color: var(--sk-cyan) !important;
}

/* === KILL all decorative shape PNGs that paint light blobs onto the page.
   Stackly uses ~30 of these, they all show as light-purple gradients that
   bleed through dark backgrounds. Keep only the hero glow (already replaced). === */
.features-5__shape, .features-5__shape_2,
.testimonial-5__shape, .testimonial-5__bg-shape,
.marketplace__shape, .marketplace__bg-shape,
.about-shape, .service-shape, .blog-shape,
section [class*="__shape"]:not(.brand-5__border-shape):not(.hero-5__bg-shape):not(.hero-5__bg-shape_2) {
  display: none !important;
}

/* Sections that ship with light shape PNGs as section background, force dark */
.testimonial-5, .testimonial-5__inner, .testimonial-5__top,
.analytices-fast-5, .analytices-fast-5__wrapper,
.features-5, .features-5__wrapper,
.marketplace, .marketplace__wrapper {
  background: var(--sk-bg) !important;
  background-image: none !important;
}

/* The "How it works" placeholder JPG (1320×493 stock placeholder), kill it.
   Replace with a clean code-style summary block. */
.analytices-fast-5__thumb { display: none !important; }
.analytices-fast-5__list ul {
  display: grid !important;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)) !important;
  gap: 12px !important;
  list-style: none !important;
  padding: 0 !important;
}
.analytices-fast-5__list ul li {
  background: var(--sk-bg-card) !important;
  border: 1px solid var(--sk-border) !important;
  padding: 16px 20px !important;
  border-radius: 3px !important;
  font-size: 0.92rem !important;
  margin-bottom: 0 !important;
}

/* Header, fix the empty-rectangle area on the right of the nav (the side toggle) */
.header-area, .header-main { background-color: var(--sk-bg) !important; }

/* Sub-title eyebrow color, explicit cyan */
.sub-title { color: var(--sk-fg-dim) !important; }

/* Brand-5 ("Design partners and research collaborators") title */
.brand-5__title { color: var(--sk-fg-muted) !important; font-size: 0.85rem !important; letter-spacing: 0.18em !important; text-transform: uppercase !important; font-weight: 500 !important; }

/* Back-to-top: dark themed disc with cyan progress ring + cyan arrow */
.progress-wrap,
.progress-wrap.active-progress {
  background: var(--sk-bg-card) !important;
  background-color: var(--sk-bg-card) !important;
  border: 1px solid var(--sk-border) !important;
  box-shadow: 0 8px 24px rgba(var(--sk-bg-rgb), 0.5) !important;
}
.progress-wrap::after {
  color: var(--sk-cyan) !important;
}
.progress-wrap svg path,
.progress-wrap svg.progress-circle path {
  fill: transparent !important;
  stroke: var(--sk-cyan) !important;
  stroke-width: 4 !important;
}
.progress-wrap:hover { border-color: var(--sk-cyan) !important; }

/* Backgrounds */
.bg-light, .bg-white, .bg-2, .bg-3, .bg-4,
section[class*="bg-"], .section-bg, .section-bg-2,
.about-area, .feature-area, .service-area, .pricing-area,
.testimonial-area, .cta-area, .blog-area, .faq-area,
.team-area, .work-area, .contact-area, .hero-area, .hero-5,
.brand-area, .footer-area, .breadcrumb-area, .funfact-area {
  background-color: var(--sk-bg) !important;
  color: var(--sk-fg) !important;
}

/* Lighter alternating section.
   Position-based banding (`section:nth-of-type(even)`) was dropped — adding
   or moving a section would shift every band downstream. Authors opt-in
   per-section via inline `style="background-color:var(--sk-bg-alt)"`. */
.about-5, .service-5, .pricing-area-5, .feature-5 {
  background-color: var(--sk-bg-alt) !important;
}

/* Cards / boxes */
.feature-item, .service-item, .pricing-item, .blog-item,
.team-item, .testimonial-item, .work-item, .about-item,
.features-5__item, .why-choose-us-5__info, .testimonial-5__wrap,
.testimonial-5__item, .marketplace__item,
.special-features-4__item,
.fact-item, .counter-item, .pricing-card, .price-item {
  background-color: var(--sk-bg-card) !important;
  border: 1px solid var(--sk-border) !important;
  color: var(--sk-fg) !important;
  box-shadow: none !important;
  border-radius: 4px !important;
}
.features-5__item, .why-choose-us-5__info,
.feature-item, .service-item {
  transition: border-color 0.25s var(--sk-ease), transform 0.25s var(--sk-ease);
}
.features-5__item:hover, .why-choose-us-5__info:hover,
.feature-item:hover, .service-item:hover {
  border-color: var(--sk-cyan) !important;
  transform: translateY(-2px);
}
.features-5__item { padding: 32px 24px !important; }
.features-5__icon { margin-bottom: 16px; }
.features-5__icon img { width: 40px; height: 40px; }
.features-5__title { font-size: 1.05rem !important; margin-bottom: 10px; }

/* === Text colors === */
p, .desc, .description, .dec, .hero-5__dec, .hero-4__dec,
li, dd, blockquote, .text, small, label {
  color: var(--sk-fg-muted) !important;
}

h1, h2, h3, h4, h5, h6, .title, .sub-title,
strong, b, dt, .heading {
  color: var(--sk-fg) !important;
}

.sub-title, .eyebrow {
  /* Eyebrows are quiet — fg-dim, not cyan. Cyan is reserved for state
     (live, approval, rejection, hover). DESIGN.md "One Signal Rule". */
  color: var(--sk-fg-dim) !important;
  text-transform: uppercase;
  font-size: 0.78rem !important;
  letter-spacing: 0.18em !important;
  font-weight: 500 !important;
  overflow-wrap: anywhere;
}

/* Anchor default — neutral inheritance. Specific contexts (nav, footer,
   buttons, CTAs) win on specificity; in-prose links are styled below. */
a { color: inherit; text-decoration: none; }
a:hover { color: var(--sk-cyan); }

/* Prose links: any classless <a> inside a paragraph in main content
   gets a visible underline + focus colour. CTAs, buttons, nav anchors
   carry their own classes and skip this rule. */
main p a:not([class]) {
  color: var(--sk-fg);
  border-bottom: 1px dotted var(--sk-fg-dim);
  transition: color 200ms var(--sk-ease), border-color 200ms var(--sk-ease);
}
main p a:not([class]):hover {
  color: var(--sk-cyan);
  border-bottom-color: var(--sk-cyan);
}

/* === Buttons — typographic, not blocky.
   Every CTA is a hairline-bordered mono label with a chevron suffix,
   matching the eyebrow / status-chip / rule-ID register the rest of the
   page already speaks. Cyan never fills a button; it can outline the
   primary one and lights up the chevron on hover. */
.rr-btn, .rr-btn-2, .rr-btn-3, .rr-btn-4, .rr-btn-5,
.rr-btn-border, .rr-btn-button, .rr-btn-button2, .rr-btn-button3, .rr-btn-button4,
.btn, button.primary, .theme-btn {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 10px !important;
  background-color: transparent !important;
  color: var(--sk-fg) !important;
  border: 1px solid var(--sk-border) !important;
  border-radius: 3px !important;
  padding: 8px 14px !important;
  font-family: 'JetBrains Mono', ui-monospace, Menlo, monospace !important;
  font-weight: 500 !important;
  font-size: 0.78rem !important;
  letter-spacing: 0.14em !important;
  text-transform: uppercase !important;
  transition: border-color 200ms var(--sk-ease), color 200ms var(--sk-ease) !important;
  text-decoration: none !important;
  line-height: 1 !important;
  min-height: 34px !important;
  overflow: visible !important;
  position: relative !important;
}
.rr-btn::before, .rr-btn-2::before, .rr-btn-3::before, .rr-btn-4::before, .rr-btn-5::before {
  display: none !important;
}
/* Chevron suffix — drawn in CSS so it inherits color and translates on hover. */
.rr-btn::after, .rr-btn-2::after, .rr-btn-3::after, .rr-btn-4::after, .rr-btn-5::after,
.btn::after, button.primary::after, .theme-btn::after {
  content: "→";
  display: inline-block;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 0.95em;
  color: var(--sk-fg-dim);
  transition: transform 200ms var(--sk-ease), color 200ms var(--sk-ease);
}
.rr-btn:hover, .rr-btn-2:hover, .rr-btn-3:hover, .rr-btn-4:hover, .rr-btn-5:hover,
.btn:hover, button.primary:hover, .theme-btn:hover {
  border-color: var(--sk-cyan) !important;
  color: var(--sk-fg) !important;
}
.rr-btn:hover::after, .rr-btn-2:hover::after, .rr-btn-3:hover::after,
.rr-btn-4:hover::after, .rr-btn-5:hover::after,
.btn:hover::after, button.primary:hover::after, .theme-btn:hover::after {
  color: var(--sk-cyan);
  transform: translateX(4px);
}
.rr-btn:focus-visible, .rr-btn-2:focus-visible, .rr-btn-3:focus-visible,
.rr-btn-4:focus-visible, .rr-btn-5:focus-visible,
.btn:focus-visible, button.primary:focus-visible, .theme-btn:focus-visible {
  outline: 2px solid var(--sk-cyan) !important;
  outline-offset: 3px !important;
}

/* Primary variant — promoted by hero/section context, not by class.
   Border lifts to cyan; chevron starts cyan; text stays white for legibility.
   Visual weight comes from the colored hairline, not a filled block. */
.sk-hero-cta .rr-btn,
.sk-hero-cta .rr-btn-5,
.hero-5__btn .rr-btn,
.hero-5__btn .rr-btn-5,
.rr-btn[data-cta="primary"] {
  border-color: var(--sk-cyan) !important;
  padding: 10px 18px !important;
  min-height: 40px !important;
  font-size: 0.82rem !important;
}
.sk-hero-cta .rr-btn::after,
.sk-hero-cta .rr-btn-5::after,
.hero-5__btn .rr-btn::after,
.hero-5__btn .rr-btn-5::after,
.rr-btn[data-cta="primary"]::after {
  color: var(--sk-cyan);
}

/* Header CTA — quietest variant. The page CTA is the cyan-bordered hero
   button; the header link is just a way back to /contact, not the action. */
.header-btn .rr-btn, .header-btn .rr-btn-5,
.offset-button .rr-btn {
  padding: 6px 12px !important;
  min-height: 30px !important;
  font-size: 0.72rem !important;
  letter-spacing: 0.16em !important;
  border-color: var(--sk-stroke-2) !important;
  color: var(--sk-fg-muted) !important;
}
.header-btn .rr-btn::after, .header-btn .rr-btn-5::after,
.offset-button .rr-btn::after {
  font-size: 0.9em;
  color: var(--sk-fg-dim);
}
.header-btn .rr-btn:hover, .header-btn .rr-btn-5:hover,
.offset-button .rr-btn:hover {
  border-color: var(--sk-cyan) !important;
  color: var(--sk-fg) !important;
}

/* Stacked text trick: hide text-two, show text-one only. */
.rr-btn .btn-wrap, .btn-wrap {
  display: inline-flex !important;
  align-items: center !important;
  position: relative !important;
  height: auto !important;
  overflow: visible !important;
}
.rr-btn .text-one, .btn-wrap .text-one {
  display: inline-block !important;
  position: static !important;
  transform: none !important;
  color: inherit !important;
  opacity: 1 !important;
}
.rr-btn .text-two, .btn-wrap .text-two {
  display: none !important;
}

/* Outline class — already the default treatment now, but keep for parity. */
.rr-btn.outline, .rr-btn-5.outline, .btn-outline, .btn-secondary {
  border-color: var(--sk-border) !important;
  color: var(--sk-fg) !important;
}

/* === Header === */
.header-area, .header-main {
  background-color: var(--sk-bg) !important;
  border-bottom: 1px solid var(--sk-border) !important;
}
.header-area {
  left: 0 !important;
  right: 0 !important;
  top: 0 !important;
}
.main-menu ul li > a { color: var(--sk-fg) !important; font-weight: 500 !important; }
.main-menu ul li > a:hover { color: var(--sk-cyan) !important; }

/* === Footer === */
.footer-area {
  background-color: var(--sk-bg-alt) !important;
  border-top: 1px solid var(--sk-border) !important;
}
.footer-area, .footer-area * { color: var(--sk-fg-muted) !important; }
.footer-area h2, .footer-area h3, .footer-area h4, .footer-area .title { color: var(--sk-fg) !important; }
.footer-area a:hover { color: var(--sk-cyan) !important; }

/* === Borders === */
hr, .divider, .border-bottom, .border-top {
  border-color: var(--sk-border) !important;
}

/* === Forms === */
input, textarea, select {
  background-color: var(--sk-bg-card) !important;
  border: 1px solid var(--sk-border) !important;
  color: var(--sk-fg) !important;
  border-radius: 2px !important;
}
input:focus, textarea:focus, select:focus {
  border-color: var(--sk-cyan) !important;
}
::placeholder { color: var(--sk-fg-dim) !important; }

/* === Status pills (used in copy: ROADMAP / IN PROGRESS / SHIPPING) === */
.sk-pill {
  display: inline-block;
  padding: 2px 8px;
  font-family: 'JetBrains Mono', monospace;
  font-size: 0.7rem;
  font-weight: 500;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  border-radius: 2px;
  border: 1px solid var(--sk-border);
  color: var(--sk-fg-muted);
}
.sk-pill--shipping { color: var(--sk-cyan); border-color: var(--sk-cyan); }
.sk-pill--roadmap  { color: var(--sk-amber); border-color: var(--sk-amber); }
.sk-pill--alert    { color: var(--sk-red); border-color: var(--sk-red); }
/* Pill-row containers (sk-mt-* div directly wrapping multiple .sk-pill
   inline-blocks) wrap with collapsed line-spacing by default — at narrow
   column widths the second wrap-line of pills (e.g. Siemens · Roadmap,
   ROS 2 · Roadmap on platform.html#adapters) presses up against the
   paragraph above. Convert any such container to flex with explicit gap
   so wraps lay out cleanly. */
.sk-mt-20:has(> .sk-pill),
.sk-mt-16:has(> .sk-pill + .sk-pill) {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 8px;
  align-items: center;
}

/* === Mono numerals (proof tiles) === */
.sk-stat {
  font-family: 'JetBrains Mono', monospace !important;
  font-size: 3rem;
  font-weight: 500;
  letter-spacing: -0.04em;
  color: var(--sk-cyan);
  line-height: 1;
}
.sk-stat-label {
  font-size: 0.85rem;
  color: var(--sk-fg-muted);
  margin-top: 0.5rem;
  line-height: 1.4;
}

/* === Code block === */
pre, code, .code {
  font-family: 'JetBrains Mono', monospace !important;
  background-color: var(--sk-bg-card) !important;
  color: var(--sk-cyan) !important;
  border: 1px solid var(--sk-border);
  border-radius: 2px;
  padding: 0.15em 0.4em;
}
pre { padding: 1rem; overflow-x: auto; }

/* Loader removed; back-to-top retains its own bg rule above. */

/* === Hero polish === */
.hero-area, .hero-5, [class*="hero"] { background-color: var(--sk-bg) !important; }

/* Hero stays clean, circuit texture lives only inside spec cards. */
.hero-5__title, .hero-4__title, h1.title {
  font-size: 4.5rem !important;
  line-height: 1.05 !important;
  letter-spacing: -0.03em !important;
  font-weight: 600 !important;
  max-width: 100%;
  overflow-wrap: break-word;
  text-wrap: balance;
}
@media (max-width: 1199px) {
  .hero-5__title, .hero-4__title, h1.title {
    font-size: 3.4rem !important;
  }
}
@media (max-width: 720px) {
  .hero-5__content {
    padding: 32px 18px 44px !important;
  }
  .hero-5__title, .hero-4__title, h1.title {
    font-size: 2.45rem !important;
    line-height: 1.12 !important;
    letter-spacing: 0 !important;
  }
  .sub-title, .eyebrow {
    font-size: 0.72rem !important;
    letter-spacing: 0.1em !important;
  }
}
@media (max-width: 480px) {
  .hero-5__content {
    padding-inline: 16px !important;
  }
  .hero-5__title, .hero-4__title, h1.title {
    font-size: 2.15rem !important;
  }
}
@media (max-width: 360px) {
  .hero-5__title, .hero-4__title, h1.title {
    font-size: 1.95rem !important;
  }
}

/* === Image treatment for stock photos (until replaced) === */
.hero-5__thumb img, .abour-5__thumb img, .why-choose-us-5__thumb img,
.analytices-fast-5__thumb img, .testimonial-5__media img,
.team-img img, .blog-img img {
  filter: grayscale(0.45) contrast(1.08) brightness(0.78) hue-rotate(190deg);
  border-radius: 4px;
}
.testimonial-5__thumb img, .testimonial-5__author img { filter: none; }

/* Tint Stackly's decorative gradient blobs toward cyan, keep them visible */
.hero-5__bg-shape, .hero-5__bg-shape_2,
.features-5__shape, .features-5__shape_2,
.analytices-fast-5__bg-shape, .analytices-fast-5__bg-shape_2,
.footer-5__bg-shape, .footer-5__bg-shape_2,
.marketplace__shape {
  opacity: 0.55 !important;
  filter: hue-rotate(170deg) saturate(0.6) brightness(0.7) !important;
}
/* Hero border-shape PNGs ship with hard white backgrounds (not transparent).
   Drop the white via mix-blend-mode and tint cyan. */
.hero-5__image-shape, .hero-5__image-shape_2,
.hero-5__border-shape, .hero-5__border-shape_2 {
  mix-blend-mode: screen;
}
.hero-5__image-shape img, .hero-5__image-shape_2 img,
.hero-5__border-shape img, .hero-5__border-shape_2 img {
  opacity: 0.6 !important;
  filter: invert(1) hue-rotate(170deg) saturate(2) brightness(0.8) !important;
  mix-blend-mode: screen;
}

/* Override Stackly icon tints to cyan */
.features-5__icon img { filter: brightness(0) invert(0.85) sepia(1) saturate(8) hue-rotate(155deg) brightness(1.1); }

/* === Tables (standards mapping, feature matrix) === */
table { width: 100%; border-collapse: collapse; }
th, td {
  padding: 0.85rem 1rem;
  border-bottom: 1px solid var(--sk-border);
  text-align: left;
  color: var(--sk-fg-muted);
}
th {
  color: var(--sk-fg);
  font-weight: 600;
  font-size: 0.85rem;
  text-transform: uppercase;
  letter-spacing: 0.06em;
}

/* === Nav pill / wordmark === */
.sk-wordmark {
  font-family: 'Inter', sans-serif;
  font-weight: 600;
  font-size: 1.25rem;
  letter-spacing: -0.02em;
  color: var(--sk-fg);
  text-decoration: none;
  white-space: nowrap;
}
/* Logo mark: outer boundary + inner core. A "kernel" inside its protective
   shell, the brand's literal proposition. Inline SVG via data URI so it
   works everywhere .sk-wordmark is used (header, footer, mobile sidebar)
   without HTML changes. */
.sk-wordmark::before {
  content: "";
  display: inline-block;
  width: 1.05em;
  height: 1.05em;
  margin-right: 0.45em;
  vertical-align: -0.18em;
  background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M2 2 L17 2 L22 7 L22 22 L2 22 Z' fill='none' stroke='%2300D4FF' stroke-width='1.85' stroke-linejoin='miter' stroke-miterlimit='4'/><rect x='9' y='9' width='6' height='6' fill='%2300D4FF'/></svg>") no-repeat center / contain;
}

/* Header layout: logo-left, nav-center, CTA/hamburger-right.
   Overrides Stackly's header_5 which embedded the logo inside .header__nav. */
.header-area__inner {
  display: flex !important;
  align-items: center;
  justify-content: space-between;
  gap: 32px;
}
.header-area__inner .header__logo { flex: 0 0 auto; }
.header-area__inner .header__nav  { flex: 1 1 auto; justify-content: center; }
.header-area__inner .header-right { flex: 0 0 auto; }

/* === Kernel decisions log artifact === */
.sk-log {
  max-width: min(720px, 100%);
  margin: 0 auto;
  background: var(--sk-bg-frame);
  border: 1px solid var(--sk-border);
  border-radius: 8px;
  overflow: hidden;
  box-shadow: 0 24px 60px rgba(var(--sk-bg-rgb), 0.45), 0 0 0 1px rgba(var(--sk-cyan-rgb), 0.04);
}
.sk-log__chrome {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 16px;
  background: var(--sk-bg-card);
  border-bottom: 1px solid var(--sk-border);
  font-family: 'JetBrains Mono', monospace;
  font-size: 0.72rem;
  color: var(--sk-fg-dim);
  letter-spacing: 0.04em;
}
.sk-log__led {
  width: 6px; height: 6px;
  border-radius: 50%;     /* dot indicator, pills are reserved for status chips and dots */
  background: var(--sk-cyan);
  flex-shrink: 0;
}
@media (prefers-reduced-motion: no-preference) {
  .sk-log__led {
    animation: sk-led-pulse 2.4s var(--sk-ease) infinite;
  }
}
@keyframes sk-led-pulse {
  0%, 100% { opacity: 1; }
  50%      { opacity: 0.45; }
}
.sk-log__host {
  color: var(--sk-cyan);
  font-weight: 500;
}
.sk-log__sep {
  color: var(--sk-fg-dim);
  margin: 0 2px;
}
.sk-log__path {
  color: var(--sk-mono-key);
}
.sk-log__tail {
  margin-left: auto;
  color: var(--sk-fg-dim);
  font-style: normal;
}
.sk-log__body {
  margin: 0;
  padding: 22px 24px;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 0.82rem;
  line-height: 1.7;
  color: var(--sk-fg-muted);
  white-space: pre;
  overflow-x: auto;
}
.sk-log__body .l-dim { color: var(--sk-fg-dim); }
.sk-log__body .l-key { color: var(--sk-mono-key); }
.sk-log__body .l-ok  { color: var(--sk-cyan); font-weight: 600; }
.sk-log__body .l-bad { color: var(--sk-red); font-weight: 600; }

@media (max-width: 640px) {
  .sk-log__body { font-size: 0.78rem; padding: 16px; line-height: 1.6; }
  .sk-log__path, .sk-log__sep, .sk-log__tail { display: none; }
}

/* === Knowledge Graph schematic SVG (platform.html) === */
.sk-kg {
  width: 100%;
  height: auto;
  max-width: 540px;
  display: block;
  margin: 0 auto;
  background:
    radial-gradient(ellipse at 50% 40%, rgba(0,212,255,0.06) 0%, transparent 60%),
    var(--sk-bg-frame);
}
.sk-kg .kg-grid { fill: var(--sk-stroke-soft); }
.sk-kg .kg-tick { stroke: var(--sk-stroke-3); stroke-width: 1; fill: none; }
.sk-kg .kg-edge {
  stroke: var(--sk-stroke-2);
  stroke-width: 1.2;
  fill: none;
}
.sk-kg .kg-edge--active {
  stroke: var(--sk-cyan);
  stroke-width: 1.6;
  animation: kg-edge-fade 3.6s ease-in-out infinite;
}
@keyframes kg-edge-fade {
  0%, 100% { opacity: 0.4; }
  45%, 55% { opacity: 1; }
}
.sk-kg .kg-packet {
  fill: var(--sk-cyan);
}
.sk-kg .kg-edge-label {
  font: 500 9.5px 'JetBrains Mono', ui-monospace, monospace;
  fill: var(--sk-fg-dim);
  letter-spacing: 0.06em;
}
.sk-kg .kg-edge-label--active { fill: var(--sk-cyan); }

.sk-kg .kg-node rect {
  fill: var(--sk-bg-card);
  stroke: var(--sk-stroke-3);
  stroke-width: 1;
}
.sk-kg .kg-node--active rect {
  stroke: rgba(0,212,255,0.55);
  filter: drop-shadow(0 0 6px rgba(0,212,255,0.35));
}
.sk-kg .kg-node--active .kg-pulse {
  fill: none;
  stroke: var(--sk-cyan);
  stroke-width: 1;
  animation: kg-node-pulse 2.4s ease-out infinite;
  transform-origin: center;
  transform-box: fill-box;
}
@keyframes kg-node-pulse {
  0%   { opacity: 0.8; transform: scale(1); }
  100% { opacity: 0;   transform: scale(1.08); }
}
.sk-kg .kg-node:hover rect { stroke: var(--sk-cyan); }
.sk-kg .kg-dot { fill: var(--sk-cyan); }
.sk-kg .kg-dot--active {
  fill: var(--sk-cyan);
  animation: kg-dot-blink 1.6s ease-in-out infinite;
}
@keyframes kg-dot-blink {
  0%, 100% { opacity: 1; }
  50%      { opacity: 0.45; }
}
.sk-kg .kg-type {
  font: 500 8.5px 'JetBrains Mono', ui-monospace, monospace;
  fill: var(--sk-fg-dim);
  letter-spacing: 0.14em;
}
.sk-kg .kg-name {
  font: 500 13px 'JetBrains Mono', ui-monospace, monospace;
  fill: var(--sk-fg);
  letter-spacing: -0.01em;
}
.sk-kg .kg-caption {
  font: 400 9.5px 'JetBrains Mono', ui-monospace, monospace;
  fill: var(--sk-fg-dim);
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
.sk-kg .kg-meta {
  font: 500 8px 'JetBrains Mono', ui-monospace, monospace;
  fill: var(--sk-fg-dim);
  letter-spacing: 0.18em;
  text-transform: uppercase;
}

/* === KG reject state ===
   .is-reject is added to the hero SVG by main.js for ~1.1s when the verdict
   cycle picks a rejected command. It re-tints the kernel red, dims/red-tints
   the downstream edges (kernel→token, token→HAL), swaps the edge labels for
   their rejected pair, and fades the still-flowing inbound packets so the eye
   tracks the verdict, not the ambient traffic.

   DESIGN INTENT — read before "improving" this:
   The reject hold deliberately reads as a quiet, deterministic verdict, not
   an alarm. SafeKernels' product story is "the kernel calmly refused an
   unsafe command, exactly as designed, and logged it" — not "alarm averted
   in the nick of time". An expanding red ring or a snap-on red flash
   performs *averted catastrophe*, which is the visual language of a smoke
   detector and the wrong narrative for a product whose value proposition is
   uneventful correctness.

   Concrete rules that follow from that:
     - 220ms eased transitions on stroke/fill/filter — no snap-on/snap-off.
     - The ambient kg-pulse ring and kg-edge-fade breathing are SUPPRESSED
       during is-reject; the red state must sit still.
     - The drop-shadow glow is intentionally modest (0.40 alpha, 6px blur).
     - The hold lasts ~1.1s, long enough to read; do not shorten to a flash.
   If you find yourself adding a pulse, a flash, or a louder glow to make
   this "pop", you are translating the wrong story. Make it quieter, not
   louder. */
.sk-kg .hd-label--reject { display: none; fill: var(--sk-red); }
.sk-kg.is-reject .hd-label--ok { display: none; }
.sk-kg.is-reject .hd-label--reject { display: inline; }

/* The reject hold should feel like a deterministic verdict, not an alarm:
   sustain the red, suppress the ambient pulse ring, ease the entry and
   exit so it reads as "decided, logged" rather than "danger". */
.sk-kg #hd-n-kernel rect:not(.kg-pulse) {
  transition: stroke 220ms ease, fill 220ms ease, filter 220ms ease;
}
.sk-kg.is-reject #hd-n-kernel rect:not(.kg-pulse) {
  stroke: var(--sk-red);
  fill: rgba(238, 85, 96, 0.10);
  filter: drop-shadow(0 0 6px rgba(238, 85, 96, 0.40));
}
.sk-kg.is-reject #hd-n-kernel .kg-pulse {
  animation: none;
  opacity: 0;
}
.sk-kg.is-reject #hd-n-kernel .kg-dot--active {
  fill: var(--sk-red);
  animation: none;
  opacity: 1;
}

.sk-kg #hd-e1,
.sk-kg #hd-e2,
.sk-kg #hd-e3,
.sk-kg #hd-e4 {
  transition: stroke 220ms ease, opacity 220ms ease;
}
.sk-kg.is-reject #hd-e3,
.sk-kg.is-reject #hd-e4 {
  stroke: var(--sk-red);
  opacity: 0.55;
  /* Suppress the ambient kg-edge-fade breathing so the red hold sits still. */
  animation: none;
}
.sk-kg.is-reject #hd-e1,
.sk-kg.is-reject #hd-e2 { opacity: 0.35; }

/* Hide downstream packets during reject — the visual must match the story:
   if rejected, no command appears at the token or HAL. SMIL packets keep
   traversing in the background; we just fade them out. */
.sk-kg .hd-packet--downstream { transition: opacity 220ms ease; }
.sk-kg.is-reject .hd-packet--downstream { opacity: 0; }

/* Halt glyph: a small ⊘ that lands at the kernel→token edge during reject
   to mark the literal point of refusal. Eased in/out, no pulse, no flash —
   same restraint as the rest of the reject state. */
.sk-kg .hd-halt {
  opacity: 0;
  transform: scale(0.7);
  transform-box: fill-box;
  transform-origin: center;
  transition: opacity 220ms ease, transform 220ms ease;
  pointer-events: none;
}
.sk-kg .hd-halt__ring {
  fill: rgba(238, 85, 96, 0.10);
  stroke: var(--sk-red);
  stroke-width: 1.5;
}
.sk-kg .hd-halt__slash {
  stroke: var(--sk-red);
  stroke-width: 1.5;
  stroke-linecap: round;
}
.sk-kg.is-reject .hd-halt {
  opacity: 1;
  transform: scale(1);
}

/* === HMI verdict chip ===
   Live readout of the most recent commit. data-state flips between
   `approve` (cyan) and `reject` (red); main.js rewrites the text. */
.sk-hmi__verdict {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-variant-numeric: tabular-nums;
  color: var(--sk-cyan);
  transition: color 0.18s ease;
}
.sk-hmi__verdict-dot {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: currentColor;
  box-shadow: 0 0 6px currentColor;
  transition: background 0.18s ease;
}
.sk-hmi__verdict[data-state="reject"] {
  color: var(--sk-red);
}

/* === HMI frame: wraps SVG visuals so they read as control-room screens, not docs diagrams === */
.sk-hmi {
  background: var(--sk-bg-frame);
  border: 1px solid var(--sk-border);
  border-radius: 8px;
  overflow: hidden;
  box-shadow: 0 24px 60px rgba(var(--sk-bg-rgb), 0.45), 0 0 0 1px rgba(var(--sk-cyan-rgb), 0.04);
  /* Breathe a little wider on large displays without exploding the schematic. */
  max-width: min(720px, 100%);
  margin: 0 auto;
}
.sk-hmi__chrome {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 10px 16px;
  background: var(--sk-bg-card);
  border-bottom: 1px solid var(--sk-border);
  font-family: 'JetBrains Mono', monospace;
  font-size: 0.72rem;
  color: var(--sk-fg-dim);
  letter-spacing: 0.08em;
}
.sk-hmi__title { color: var(--sk-fg-muted); }
.sk-hmi__live {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  color: var(--sk-cyan);
  font-weight: 500;
}
.sk-hmi__pulse {
  width: 8px; height: 8px;
  border-radius: 50%;
  background: var(--sk-cyan);
  animation: sk-pulse 1.6s ease-out infinite;
}
.sk-hmi__foot {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 24px;
  padding: 10px 16px;
  border-top: 1px solid var(--sk-border);
  background: var(--sk-bg-frame);
  font-family: 'JetBrains Mono', monospace;
  font-size: 0.7rem;
  letter-spacing: 0.06em;
  color: var(--sk-fg-dim);
}
.sk-hmi .sk-kg { padding: 16px 8px 8px; }

/* === Architecture stack (technology.html) === */
.sk-stack {
  padding: 16px;
  display: flex;
  flex-direction: column;
  gap: 8px;
  background:
    repeating-linear-gradient(0deg, rgba(var(--sk-fg-rgb), 0.012) 0 1px, transparent 1px 24px),
    var(--sk-bg-frame);
}
.sk-stack__layer {
  display: flex;
  align-items: stretch;
  gap: 12px;
  padding: 14px 16px;
  background: var(--sk-bg-card);
  border: 1px solid var(--sk-stroke-soft);
  border-radius: 6px;
  transition: border-color 0.18s ease, transform 0.18s ease;
}
.sk-stack__layer:hover { border-color: rgba(0,212,255,0.35); transform: translateX(2px); }
.sk-stack__num {
  font: 600 0.72rem 'JetBrains Mono', ui-monospace, monospace;
  color: var(--sk-fg-dim);
  letter-spacing: 0.1em;
  align-self: flex-start;
  padding: 2px 8px;
  background: var(--sk-bg-frame);
  border: 1px solid var(--sk-stroke-3);
  border-radius: 3px;
  flex-shrink: 0;
}
.sk-stack__body { flex: 1; min-width: 0; }
.sk-stack__name {
  font: 600 0.92rem 'JetBrains Mono', ui-monospace, monospace;
  color: var(--sk-fg);
  letter-spacing: -0.01em;
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
}
.sk-stack__tag {
  font: 500 0.66rem 'JetBrains Mono', ui-monospace, monospace;
  color: var(--sk-cyan);
  letter-spacing: 0.06em;
  padding: 2px 8px;
  border: 1px solid rgba(0,212,255,0.35);
  border-radius: 3px;
}
.sk-stack__meta {
  font: 400 0.78rem 'JetBrains Mono', ui-monospace, monospace;
  color: var(--sk-fg-dim);
  margin-top: 4px;
  line-height: 1.5;
}
.sk-stack__meta code {
  background: transparent; padding: 0; color: var(--sk-fg-muted); font-size: inherit;
}
.sk-stack__layer--accent {
  background: var(--sk-bg-card);
  border-color: rgba(0, 212, 255, 0.4);
}
.sk-stack__layer--accent .sk-stack__num { color: var(--sk-cyan); border-color: rgba(0,212,255,0.45); }
.sk-stack__layer--hw {
  background: var(--sk-bg-frame);
  border-style: dashed;
  border-color: var(--sk-stroke-3);
}
.sk-stack__boundary {
  position: relative;
  margin: 4px 6px;
  padding: 6px 12px;
  font: 500 0.66rem 'JetBrains Mono', ui-monospace, monospace;
  color: var(--sk-fg-dim);
  letter-spacing: 0.1em;
  text-transform: uppercase;
  text-align: center;
  border-top: 1px dashed rgba(0,212,255,0.45);
  border-bottom: 1px dashed rgba(0,212,255,0.45);
}
.sk-stack__boundary code {
  background: transparent; padding: 0; color: var(--sk-cyan); font-size: inherit; text-transform: none;
}

/* === Path cards (verification pipeline) === */
.sk-pathcard { padding: 22px 24px; }
.sk-pathcard p { font-size: 0.92rem; line-height: 1.65; }
.sk-pathcard__when {
  margin-top: 16px;
  padding-top: 14px;
  border-top: 1px solid var(--sk-border);
  font: 500 0.78rem 'JetBrains Mono', ui-monospace, monospace;
  color: var(--sk-fg-muted);
  letter-spacing: 0.02em;
}
.sk-pathcard__when span:first-child {
  color: var(--sk-fg-dim);
  text-transform: uppercase;
  letter-spacing: 0.1em;
  font-size: 0.7rem;
  margin-right: 8px;
}
.sk-metric {
  display: flex;
  align-items: baseline;
  gap: 16px;
  margin-bottom: 16px;
  padding-bottom: 14px;
  border-bottom: 1px solid var(--sk-border);
}
.sk-metric__big {
  font: 600 2.6rem 'JetBrains Mono', ui-monospace, monospace;
  color: var(--sk-cyan);
  line-height: 1;
  letter-spacing: -0.02em;
  text-shadow: 0 0 12px rgba(0,212,255,0.3);
}
.sk-metric__unit {
  font-size: 1rem;
  color: var(--sk-fg-muted);
  margin-left: 4px;
  letter-spacing: 0;
}
.sk-metric__label {
  font: 500 0.72rem 'JetBrains Mono', ui-monospace, monospace;
  color: var(--sk-fg-dim);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  flex: 1;
}

@media (max-width: 640px) {
  .sk-stack__layer { padding: 12px; gap: 8px; }
  .sk-stack__name { font-size: 0.82rem; }
  .sk-stack__meta { font-size: 0.7rem; }
  .sk-metric__big { font-size: 2rem; }
}

/* === Numbered principles list (company.html values) === */
.sk-principles {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 0;
}
.sk-principles li {
  display: flex;
  gap: 20px;
  align-items: flex-start;
  padding: 20px 4px;
  border-top: 1px solid var(--sk-border);
}
.sk-principles li:last-child { border-bottom: 1px solid var(--sk-border); }
.sk-principles__num {
  font: 600 1rem 'JetBrains Mono', ui-monospace, monospace;
  color: var(--sk-cyan);
  letter-spacing: 0.05em;
  flex-shrink: 0;
  padding-top: 2px;
}
.sk-principles__name {
  font-size: 1.05rem;
  font-weight: 600;
  color: var(--sk-fg);
  margin-bottom: 4px;
}
.sk-principles li p {
  margin: 0;
  font-size: 0.92rem;
  color: var(--sk-fg-muted);
  line-height: 1.6;
}

/* === Solution glyphs (solutions.html) === */
.sk-glyph {
  width: 40px;
  height: 40px;
  display: block;
  margin-bottom: 14px;
  stroke: var(--sk-stroke-1);
  stroke-width: 1.4;
  fill: none;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.sk-glyph .g-on { stroke: var(--sk-cyan); }
.sk-glyph .g-dim { stroke: var(--sk-stroke-2); }
.sk-glyph .g-dash { stroke-dasharray: 2 2; stroke: var(--sk-stroke-2); }
.sk-glyph .g-dot {
  fill: var(--sk-cyan);
  stroke: none;
  filter: drop-shadow(0 0 3px rgba(0,212,255,0.7));
}

/* === Home hero schematic (index.html) ===
   A horizontal flow diagram replacing the legacy stock blob art.
   Vendor robots → kernel (3-replica quorum) → signed token → HAL.
   Style discipline: monochrome line work in var(--sk-stroke-1), cyan accents only
   on the active path. Marching-ants flow lines, gentle pulse on the
   replica dots and the issued token. */
.sk-hero-schematic {
  display: block;
  width: 100%;
  max-width: 1180px;
  height: auto;
  margin: 8px auto 0;
  opacity: 0;
  transform: translateY(8px);
  transition: opacity 700ms ease-out, transform 700ms ease-out;
}
.sk-hero-schematic.is-in { opacity: 1; transform: none; }
/* Pull the diagram closer to the CTA, the legacy .hero-5__content
   reserves 80px below itself for the absolute-positioned blob art that
   we removed. With the schematic taking that role, the gap is dead space. */
.hero-5__content:has(+ .sk-hmi),
.hero-5__content:has(+ .sk-hero-schematic) { margin-bottom: 24px !important; }
.hero-5__wrapper:has(.sk-hmi),
.hero-5__wrapper:has(.sk-hero-schematic) { padding-bottom: 56px !important; }

/* === Hero HMI variant ===
   Same chrome and KG styling as the platform-page panel, but full-width
   so the diagram lives at the same scale as the CTA cluster above it. */
.sk-hmi--hero {
  max-width: 1180px;
  margin: 8px auto 0;
}
.sk-kg--hero {
  max-width: none;
  padding: 18px 12px 12px;
}
.sk-kg .kg-quorum {
  font: 500 12px 'JetBrains Mono', ui-monospace, monospace;
  fill: var(--sk-cyan);
  letter-spacing: 0.18em;
}
@media (max-width: 720px) {
  .sk-hmi--hero { margin-top: 24px; }
  .sk-hmi--hero .sk-hmi__chrome { font-size: 0.66rem; padding: 8px 12px; }
  .sk-hmi--hero .sk-hmi__foot { font-size: 0.62rem; gap: 4px 12px; padding: 8px 12px; }
}

/* === Hero CTA cluster ===
   Primary button + ghost-link "learn before talking" path side by side,
   with a one-line concrete demo promise underneath. Replaces a generic
   "Request a Demo" with a buyer-actionable promise. */
.sk-hero-cta {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 28px;
  flex-wrap: wrap;
}
.sk-link-cta {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-family: 'JetBrains Mono', ui-monospace, Menlo, monospace;
  font-size: 0.82rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--sk-fg-muted) !important;
  text-decoration: none;
  padding: 12px 4px;
  border-bottom: 1px solid transparent;
  transition: color 180ms ease, border-color 180ms ease, transform 180ms ease;
}
.sk-link-cta span { transition: transform 180ms ease; }
.sk-link-cta:hover {
  color: var(--sk-cyan) !important;
  border-bottom-color: var(--sk-cyan);
}
.sk-link-cta:hover span { transform: translateX(3px); }

.sk-cta-promise {
  margin: 18px auto 0;
  max-width: 620px;
  text-align: center;
  font-size: 0.88rem;
  color: var(--sk-fg-dim);
  font-style: italic;
}

/* === Trust strip ===
   Compact mono row of "what is real today". Lives between CTA and the
   schematic. The leading dot on the first item is the only colour cue
   so the eye lands on the shipping claim first. */
.sk-trust-strip {
  list-style: none;
  margin: 36px auto 0;
  padding: 14px 24px;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  gap: 10px 28px;
  max-width: 920px;
  border-top: 1px solid var(--sk-border);
  border-bottom: 1px solid var(--sk-border);
}
.sk-trust-strip li {
  font-family: 'JetBrains Mono', ui-monospace, Menlo, monospace;
  font-size: 0.78rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--sk-fg-muted);
  display: inline-flex;
  align-items: center;
  gap: 8px;
  white-space: nowrap;
}
.sk-trust-dot {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--sk-cyan);
  box-shadow: 0 0 8px rgba(0, 212, 255, 0.55);
  animation: sk-trust-blink 2.4s ease-in-out infinite;
}
@keyframes sk-trust-blink {
  0%, 100% { opacity: 0.55; }
  50%      { opacity: 1; }
}
@media (max-width: 720px) {
  .sk-hero-cta { flex-direction: column; gap: 12px; }
  .sk-link-cta {
    min-height: 44px;
    justify-content: center;
    padding: 12px 10px;
  }
  .sk-trust-strip {
    justify-content: flex-start;
    gap: 8px 16px;
    padding: 12px 16px;
  }
  .sk-trust-strip li {
    font-size: 0.7rem;
    letter-spacing: 0.06em;
    white-space: normal;
  }
  .sk-cta-promise { font-size: 0.82rem; }
}
@media (prefers-reduced-motion: reduce) {
  .sk-trust-dot { animation: none; }
  .sk-link-cta, .sk-link-cta span { transition: none; }
}

/* === Standards strip ===
   Sits directly under the trust strip. Same mono cadence, but no live dot
   and a steel/dim colour — these are specs the architecture maps to, not
   shipping claims. The "not certified today" qualifier is part of the
   strip itself so the hover-truth never escapes the buyer's eye. */
.sk-standards-strip {
  list-style: none;
  margin: 0 auto;
  padding: 12px 24px 0;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  gap: 8px 24px;
  max-width: 920px;
}
.sk-standards-strip li {
  font-family: 'JetBrains Mono', ui-monospace, Menlo, monospace;
  font-size: 0.74rem;
  letter-spacing: 0.10em;
  text-transform: uppercase;
  color: var(--sk-fg-dim);
  white-space: nowrap;
}
.sk-standards-strip__lead {
  color: var(--sk-fg-muted) !important;
  letter-spacing: 0.18em !important;
}
.sk-standards-strip__qual {
  color: var(--sk-amber) !important;
  letter-spacing: 0.12em !important;
  /* Keep the qualifier honest, not loud — same scale as the rest. */
  opacity: 0.92;
  position: relative;
  padding-left: 20px;
}
.sk-standards-strip__qual::before {
  content: '';
  position: absolute;
  left: 0;
  top: 50%;
  width: 1px;
  height: 0.85em;
  background: var(--sk-border);
  transform: translateY(-50%);
}
@media (max-width: 720px) {
  .sk-standards-strip {
    justify-content: flex-start;
    gap: 6px 14px;
    padding: 10px 16px 0;
  }
  .sk-standards-strip li {
    font-size: 0.68rem;
    letter-spacing: 0.06em;
    white-space: normal;
  }
}

/* === Attestation footer (replaces bare copyright) ===
   The footer copyright was a bland line; reformat as a build-identity
   stamp so the closing impression is "real engineering shipping" and
   not "marketing site". */
.sk-attest {
  display: inline-flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 6px 10px;
  margin: 0;
}
.sk-attest__seg { color: var(--sk-fg-muted); }
.sk-attest__seg--mono {
  font-family: 'JetBrains Mono', ui-monospace, Menlo, monospace;
  font-size: 0.84em;
  letter-spacing: 0.04em;
  color: var(--sk-fg-dim);
}

.sk-hero-schematic .hd-grid       { fill: var(--sk-bg-card); }
.sk-hero-schematic .hd-line       { stroke: var(--sk-stroke-1); stroke-width: 1.4; fill: none; stroke-linecap: round; stroke-linejoin: round; }
.sk-hero-schematic .hd-fill       { fill: var(--sk-bg); }
.sk-hero-schematic .hd-tip        { fill: var(--sk-cyan); }
.sk-hero-schematic .hd-label      { font-family: 'JetBrains Mono', ui-monospace, Menlo, monospace; font-size: 10px; fill: var(--sk-fg-muted); letter-spacing: 1.4px; }
.sk-hero-schematic .hd-sub        { font-family: 'JetBrains Mono', ui-monospace, Menlo, monospace; font-size: 8px; fill: var(--sk-fg-dim); letter-spacing: 1.6px; }
.sk-hero-schematic .hd-mono       { font-family: 'JetBrains Mono', ui-monospace, Menlo, monospace; }
.sk-hero-schematic .hd-kernel     { fill: var(--sk-bg-card); stroke: var(--sk-cyan); stroke-width: 1.6; }
.sk-hero-schematic .hd-kernel-inner { fill: none; stroke: var(--sk-border); stroke-width: 1; stroke-dasharray: 2 3; }
.sk-hero-schematic .hd-token-box  { fill: var(--sk-bg-card); stroke: var(--sk-cyan); stroke-width: 1.4; }
.sk-hero-schematic .hd-token-key  { fill: none; stroke: var(--sk-cyan); stroke-width: 1.2; }

.sk-hero-schematic .hd-flow {
  fill: none;
  stroke: var(--sk-cyan);
  stroke-width: 1.4;
  stroke-dasharray: 5 5;
  stroke-linecap: round;
}
.sk-hero-schematic.is-in .hd-flow { animation: sk-hd-march 1.6s linear infinite; }
@keyframes sk-hd-march { to { stroke-dashoffset: -20; } }

.sk-hero-schematic .hd-replica { fill: var(--sk-cyan); }
.sk-hero-schematic.is-in .hd-replica { animation: sk-hd-pulse 1.8s ease-in-out infinite; transform-box: fill-box; transform-origin: center; }
.sk-hero-schematic.is-in .hd-replica.r2 { animation-delay: 0.18s; }
.sk-hero-schematic.is-in .hd-replica.r3 { animation-delay: 0.36s; }
@keyframes sk-hd-pulse { 0%, 100% { opacity: 0.55; } 50% { opacity: 1; } }

.sk-hero-schematic .hd-tip-out { fill: var(--sk-cyan); }
.sk-hero-schematic.is-in .hd-token { animation: sk-hd-glow 2.4s ease-in-out infinite; }
@keyframes sk-hd-glow {
  0%, 100% { filter: none; }
  50%      { filter: drop-shadow(0 0 6px rgba(0, 212, 255, 0.45)); }
}

@media (max-width: 720px) {
  .sk-hero-schematic { margin-top: 40px; }
}
@media (prefers-reduced-motion: reduce) {
  .sk-hero-schematic { transition: none; opacity: 1; transform: none; }
  .sk-hero-schematic.is-in .hd-flow,
  .sk-hero-schematic.is-in .hd-replica,
  .sk-hero-schematic.is-in .hd-token { animation: none; }
}

/* === Pricing page (pricing.html) ===
   Pre-GA: list prices are not published. The page sells the design-partner
   stance. Numeric price lockups are replaced with framing tokens
   ("Co-scoped", "Founding customer", "Custom") rendered in JetBrains Mono
   so the visual weight matches the rest of the site without faking precision. */
.sk-pricing-notice {
  display: flex;
  align-items: flex-start;
  gap: 18px;
  padding: 22px 26px;
  border: 1px solid var(--sk-border);
  background: var(--sk-bg-card);
  border-radius: 4px;
  max-width: 920px;
}
.sk-pricing-notice__tag {
  flex: 0 0 auto;
  font-family: 'JetBrains Mono', ui-monospace, Menlo, monospace;
  font-size: 0.72rem;
  letter-spacing: 0.16em;
  color: var(--sk-cyan);
  border: 1px solid var(--sk-cyan);
  padding: 4px 9px;
  border-radius: 3px;
  margin-top: 2px;
  white-space: nowrap;
}
.sk-pricing-notice p {
  margin: 0;
  color: var(--sk-fg-muted);
  font-size: 0.95rem;
  line-height: 1.6;
}
.sk-pricing-notice em {
  font-style: normal;
  color: var(--sk-fg);
  border-bottom: 1px dotted var(--sk-fg-dim);
}

.sk-tier-tag {
  display: inline-block;
  font-family: 'JetBrains Mono', ui-monospace, Menlo, monospace;
  font-size: 0.7rem;
  letter-spacing: 0.16em;
  color: var(--sk-fg-dim);
  border: 1px solid var(--sk-border);
  padding: 4px 9px;
  border-radius: 2px;
}
.sk-tier-tag--accent {
  color: var(--sk-cyan);
  border-color: var(--sk-cyan);
}
.sk-tier-price {
  margin-top: 24px;
  padding-bottom: 18px;
  border-bottom: 1px solid var(--sk-border);
  font-family: 'JetBrains Mono', ui-monospace, Menlo, monospace;
  font-size: 1.85rem;
  line-height: 1;
  color: var(--sk-cyan);
  letter-spacing: -0.01em;
}
.sk-tier-price__sub {
  display: block;
  margin-top: 8px;
  font-family: 'JetBrains Mono', ui-monospace, Menlo, monospace;
  font-size: 0.74rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--sk-fg-dim);
}

@media (max-width: 720px) {
  .sk-pricing-notice { flex-direction: column; gap: 12px; padding: 18px; }
  .sk-tier-price { font-size: 1.55rem; }
}

/* Comparison table, column highlight, row hover, sticky first col */
.sk-compare-table { width: 100%; border-collapse: collapse; }
.sk-compare-table th,
.sk-compare-table td {
  padding: 14px 18px;
  border-bottom: 1px solid var(--sk-border);
  text-align: left;
  vertical-align: middle;
}
.sk-compare-table thead th {
  text-transform: uppercase;
  letter-spacing: 0.08em;
  font-size: 0.78rem;
  color: var(--sk-fg-dim);
  border-bottom: 1px solid var(--sk-cyan);
}
.sk-compare-table .sk-compare-hl {
  background: rgba(0, 212, 255, 0.06);
}
/* SafeKernels column header: cyan + slightly heavier weight, anchoring the column. */
.sk-compare-table thead th.sk-compare-hl {
  color: var(--sk-cyan);
  font-weight: 600;
}
/* "Missing feature" mark in body rows. Replaces inline `style="opacity:.5"`. */
.sk-compare-table .sk-feature-missing { opacity: 0.5; }
.sk-compare-table tbody tr:hover td { background: rgba(var(--sk-fg-rgb), 0.02); }
.sk-compare-table tbody tr:hover .sk-compare-hl { background: rgba(0, 212, 255, 0.10); }

/* Mobile-scroll wrapper for wide tables. Wraps a <table> in a horizontal
   scroll context so the page itself doesn't scroll on narrow viewports.
   Hairline edge fades cue scrollability without painting a scrollbar. */
.sk-table-scroll {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  /* Hairline edge fades cue scrollability without a scrollbar */
  background:
    linear-gradient(to right, var(--sk-bg) 0%, transparent 8px),
    linear-gradient(to left,  var(--sk-bg) 0%, transparent 8px);
  background-attachment: local, local;
  background-repeat: no-repeat;
}
.sk-table-scroll table { min-width: 720px; }

/* Mobile (<480px): convert the wide comparison table into a stack of cards.
   Each <tr> becomes a card; <td>s become labelled key/value rows so users
   never need to scroll horizontally on a phone. */
@media (max-width: 480px) {
  .sk-table-scroll {
    overflow-x: visible;
    background: none;
  }
  .sk-table-scroll table { min-width: 0; }
  .sk-compare-table,
  .sk-compare-table tbody,
  .sk-compare-table tr,
  .sk-compare-table th,
  .sk-compare-table td {
    display: block;
    width: 100%;
  }
  .sk-compare-table thead { display: none; }
  .sk-compare-table tr {
    border: 1px solid var(--sk-border);
    border-radius: 6px;
    background: var(--sk-bg-card);
    margin-bottom: 12px;
    padding: 14px 16px;
  }
  .sk-compare-table tbody tr:hover td,
  .sk-compare-table tbody tr:hover .sk-compare-hl { background: transparent; }
  .sk-compare-table th[scope="row"].sk-compare-rowhead {
    border: none;
    padding: 0 0 10px;
    margin: 0 0 10px;
    border-bottom: 1px solid var(--sk-border);
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 0.78rem;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--sk-fg-dim);
  }
  .sk-compare-table td {
    border: none;
    padding: 5px 0;
    display: grid;
    grid-template-columns: 7.25rem minmax(0, 1fr);
    column-gap: 12px;
    align-items: baseline;
    background: transparent;
  }
  .sk-compare-table td.sk-compare-hl { background: transparent; }
  .sk-compare-table td::before {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 0.7rem;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--sk-fg-dim);
  }
  .sk-compare-table td:nth-of-type(1)::before { content: 'SafeKernels'; color: var(--sk-cyan); }
  .sk-compare-table td:nth-of-type(2)::before { content: 'LLM guards'; }
  .sk-compare-table td:nth-of-type(3)::before { content: 'Vendor PLCs'; }
  .sk-compare-table td:nth-of-type(4)::before { content: 'In-house'; }
}

/* ============================================================
   Section spacing, tighten the marketing-template defaults.
   Base style.css uses 120/100/90/60 at descending breakpoints which
   reads as huge dead air on dense content pages. Override globally.
   ============================================================ */
.section-spacing-top-120    { padding-top: 80px; }
.section-spacing-bottom-120 { padding-bottom: 80px; }
.section-spacing-120        { padding-top: 80px; padding-bottom: 80px; }
/* Continuous transition: selectively halve the top gap when a section
   reads as a continuation of the previous one rather than a fresh chapter. */
.section-spacing-120.sk-section--continuous { padding-top: 40px; }
.section-spacing-top-100    { padding-top: 72px; }
.section-spacing-bottom-100 { padding-bottom: 72px; }
@media (max-width: 1199px) {
  .section-spacing-top-120, .section-spacing-bottom-120,
  .section-spacing-top-100, .section-spacing-bottom-100 { padding-top: 60px; padding-bottom: 60px; }
  .section-spacing-top-120, .section-spacing-top-100       { padding-bottom: 0; }
  .section-spacing-bottom-120, .section-spacing-bottom-100 { padding-top: 0; }
  .section-spacing-120 { padding-top: 60px; padding-bottom: 60px; }
}
@media (max-width: 720px) {
  .section-spacing-top-120, .section-spacing-top-100 { padding-top: 48px; }
  .section-spacing-bottom-120, .section-spacing-bottom-100 { padding-bottom: 48px; }
  .section-spacing-120 { padding-top: 48px; padding-bottom: 48px; }
}

/* ============================================================
   Active nav state, current page link in main nav
   ============================================================ */
/* Nav tab indicator. Color shift + glow underline only — no leading pip. */
.main-menu ul li a {
  position: relative;
  transition: color 0.2s ease, letter-spacing 0.2s ease;
}
/* Tighter tab link box. style.pruned.css ships `padding: 38px 26px` (default)
   and `36px 12px` at ≤1919px on the same selector — the 36–38px vertical
   leaves the header divider stranded ~28px below the active underline glow,
   and the 12px sides leave labels cramped. Tighten vertical to 22px so the
   divider rides just under the underline, and bump horizontal to 22px for
   breathing room between labels. Match the selector exactly so cascade order
   (brand-override loads after style.pruned.css) lets these values win. */
.header-area .main-menu li a {
  padding: 22px 22px;
}
/* Glow underline. The line is a horizontal beam — gradient that fades to
   transparent at both ends — so it reads as light bleeding under the label,
   not a flat highlighter mark. Animated via transform: scaleX
   (compositor-only) instead of width (triggers layout). Anchored ~8px below
   the text baseline (not the link's outer bottom) so it reads as an
   underline, not a glow on the header divider. */
.main-menu ul li a::after {
  content: "";
  position: absolute;
  left: 50%;
  bottom: 14px;
  width: 70%;
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--sk-cyan), transparent);
  transform: translateX(-50%) scaleX(0);
  transform-origin: left;
  transition: transform 200ms var(--sk-ease), opacity 0.2s ease;
  opacity: 0;
}
.main-menu ul li a:hover { color: var(--sk-cyan); }
.main-menu ul li a:hover::after { transform: translateX(-50%) scaleX(1); opacity: 0.55; }
.main-menu ul li a.is-active {
  color: var(--sk-cyan) !important;
  letter-spacing: 0.04em;
}
.main-menu ul li a.is-active::after {
  /* Active: 100% wide (vs 70% on hover). Re-anchor left:0 + drop translate so
     scaleX(1) stretches edge-to-edge under the label. */
  left: 0;
  width: 100%;
  transform: scaleX(1);
  opacity: 1;
  height: 1px;
  box-shadow: 0 0 10px rgba(0, 212, 255, 0.55);
}

/* Mobile menu trigger and close affordances. Stackly's original hamburger
   drew only the two 26x2px bars, which left a tiny touch target. */
.header__navicon .bar-icon {
  width: 44px !important;
  height: 44px !important;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  flex-direction: column;
  padding: 0;
  border: 1px solid transparent;
  border-radius: 4px;
  background: transparent;
  cursor: pointer;
}
.header-area .header-right .side-toggle .bar-icon span,
.header__navicon .bar-icon span {
  flex: 0 0 2px;
  width: 26px;
  height: 2px;
  background: var(--sk-fg) !important;
}
.header__navicon .bar-icon:hover,
.header__navicon .bar-icon:focus-visible {
  border-color: var(--sk-border);
}
.side-info-close {
  width: 44px !important;
  height: 44px !important;
  border-radius: 4px !important;
  border-color: var(--sk-border) !important;
  color: var(--sk-fg) !important;
}
body.sk-panel-open {
  overflow: hidden;
}

/* ============================================================
   Sticky "Schedule a call" CTA, desktop right-rail
   ============================================================ */
.sk-sticky-cta {
  position: fixed;
  right: 22px;
  bottom: 22px;
  z-index: 998;
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 12px 18px;
  min-height: 44px;
  background: var(--sk-cyan);
  color: var(--sk-bg);
  font-family: 'JetBrains Mono', ui-monospace, Menlo, monospace;
  font-size: 0.78rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  text-decoration: none;
  border-radius: 4px;
  box-shadow: 0 8px 24px rgba(var(--sk-cyan-rgb), 0.28), 0 2px 8px rgba(var(--sk-bg-rgb), 0.4);
  transition: transform 0.18s ease, box-shadow 0.18s ease, background 0.18s ease;
}
.sk-sticky-cta:hover {
  transform: translateY(-2px);
  box-shadow: 0 12px 32px rgba(var(--sk-cyan-rgb), 0.4), 0 4px 12px rgba(var(--sk-bg-rgb), 0.5);
  color: var(--sk-bg);
  background: var(--sk-fg);
}
.sk-sticky-cta__dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--sk-bg);
  box-shadow: 0 0 0 0 rgba(10, 11, 15, 0.6);
}
@media (prefers-reduced-motion: no-preference) {
  .sk-sticky-cta__dot { animation: sk-sticky-pulse 2.4s infinite; }
}
@keyframes sk-sticky-pulse {
  0%   { box-shadow: 0 0 0 0 rgba(10, 11, 15, 0.55); }
  70%  { box-shadow: 0 0 0 10px rgba(10, 11, 15, 0); }
  100% { box-shadow: 0 0 0 0 rgba(10, 11, 15, 0); }
}
@media (max-width: 720px) {
  /* Avoid covering first-fold proof strips, form submit, and footer mailto. */
  .sk-sticky-cta { display: none; }
}
.sk-sticky-cta { display: none !important; }

/* ============================================================
   Footer top row, wordmark + email capture inline
   ============================================================ */
.sk-footer-top {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 32px;
  padding-bottom: 36px;
  border-bottom: 1px solid var(--sk-border);
  margin-bottom: 36px;
  flex-wrap: wrap;
}
.sk-footer-top .footer-5__logo { flex: 0 0 auto; margin: 0; padding-top: 4px; }

/* Footer brand stack: wordmark + one-line descriptor.
   Balances visual weight on the left so the capture block on the
   right doesn't feel orphaned in 800px of empty middle. */
.sk-footer-brand {
  display: flex !important;
  flex-direction: column;
  gap: 12px;
  flex: 0 1 380px !important;
}
.sk-footer-brand__tag {
  margin: 0;
  font-size: 0.92rem;
  color: var(--sk-fg-muted);
  line-height: 1.5;
  max-width: 340px;
}
@media (max-width: 720px) {
  .sk-footer-brand__tag { max-width: none; }
}

/* Footer "Field notes" capture: vertical stack on the right.
   Eyebrow > copy > button. Right-aligned to the column edge. */
.sk-footer-capture {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 12px;
  flex: 0 1 420px;
  min-width: 0;
  text-align: right;
}
.sk-footer-capture__eyebrow {
  font-family: 'JetBrains Mono', ui-monospace, Menlo, monospace;
  font-size: 0.72rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--sk-cyan);
}
.sk-footer-capture__copy {
  margin: 0;
  max-width: 380px;
  font-size: 0.94rem;
  color: var(--sk-fg-muted);
  line-height: 1.5;
}
@media (max-width: 720px) {
  .sk-footer-capture {
    align-items: flex-start;
    text-align: left;
    flex-basis: 100%;
  }
}
.sk-footer-capture__link {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 10px 16px;
  min-height: 44px;
  background: transparent;
  color: var(--sk-cyan) !important;
  border: 1px solid var(--sk-cyan);
  border-radius: 3px;
  font-family: 'JetBrains Mono', ui-monospace, Menlo, monospace;
  font-size: 0.74rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  text-decoration: none;
  white-space: nowrap;
  transition: background 0.15s ease, color 0.15s ease;
}
.sk-footer-capture__link:hover {
  background: var(--sk-cyan);
  color: var(--sk-bg) !important;
}
.sk-footer-capture__link span { transition: transform 0.18s ease; }
.sk-footer-capture__link:hover span { transform: translateX(3px); }
.sk-wordmark,
.footer-5__area a,
.sk-contact-card__list a,
main li a:not([class]) {
  min-height: 44px;
}
.sk-wordmark,
.footer-5__area a,
.sk-contact-card__list a,
main li a:not([class]) {
  display: inline-flex;
  align-items: center;
}
.footer-5__area ul a {
  padding-block: 3px;
}
@media (max-width: 860px) {
  .sk-footer-top { gap: 18px; }
  .sk-footer-capture { justify-content: flex-start; flex-basis: 100%; }
  .sk-footer-capture__copy { text-align: left; max-width: none; }
}

/* ============================================================
   Home: ICP "fit if" block
   ============================================================ */
.sk-fit {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 24px;
  margin-top: 32px;
}
.sk-fit__col {
  padding: 24px 26px;
  border: 1px solid var(--sk-border);
  border-radius: 6px;
  background: rgba(var(--sk-fg-rgb), 0.015);
}
.sk-fit__col--yes { border-color: rgba(0, 212, 255, 0.45); background: rgba(0, 212, 255, 0.04); }
.sk-fit__head {
  display: flex;
  align-items: center;
  gap: 10px;
  font-family: 'JetBrains Mono', ui-monospace, Menlo, monospace;
  font-size: 0.78rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  margin-bottom: 14px;
}
.sk-fit__col--yes .sk-fit__head { color: var(--sk-cyan); }
.sk-fit__col--no  .sk-fit__head { color: var(--sk-fg-dim); }
.sk-fit__list { list-style: none; padding: 0; margin: 0; }
.sk-fit__list li {
  padding: 8px 0 8px 26px;
  position: relative;
  font-size: 0.92rem;
  line-height: 1.45;
  border-bottom: 1px solid rgba(var(--sk-fg-rgb), 0.04);
}
.sk-fit__list li:last-child { border-bottom: none; }
.sk-fit__list li::before {
  position: absolute;
  left: 0;
  top: 8px;
  font-family: 'JetBrains Mono', ui-monospace, Menlo, monospace;
  font-size: 0.9rem;
}
.sk-fit__col--yes .sk-fit__list li::before { content: "✓"; color: var(--sk-cyan); }
.sk-fit__col--no  .sk-fit__list li::before { content: "✕"; color: var(--sk-fg-dim); }
@media (max-width: 720px) {
  .sk-fit { grid-template-columns: 1fr; gap: 14px; }
}

/* ============================================================
   Home: Design partners strip (anonymized)
   ============================================================ */
.sk-partners {
  margin-top: 32px;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
}
.sk-partner {
  padding: 22px 22px;
  border: 1px solid var(--sk-border);
  border-radius: 6px;
  background: rgba(var(--sk-fg-rgb), 0.015);
}
.sk-partner__badge {
  display: inline-block;
  padding: 4px 10px;
  font-family: 'JetBrains Mono', ui-monospace, Menlo, monospace;
  font-size: 0.68rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--sk-cyan);
  border: 1px solid rgba(0, 212, 255, 0.4);
  border-radius: 999px;
  margin-bottom: 12px;
}
.sk-partner__name { font-size: 0.95rem; margin: 0 0 6px; }
.sk-partner__line { font-size: 0.84rem; color: var(--sk-fg-muted); margin: 0; line-height: 1.45; }
.sk-partner__status {
  display: block;
  margin-top: 14px;
  font-family: 'JetBrains Mono', ui-monospace, Menlo, monospace;
  font-size: 0.7rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--sk-fg-dim);
}
@media (max-width: 720px) {
  .sk-partners { grid-template-columns: 1fr; }
}

/* ============================================================
   Contact form fields, labelled and labelled-for
   ============================================================ */
.sk-field { margin-bottom: 16px; }
.sk-field__label {
  display: block;
  margin-bottom: 6px;
  font-size: 0.85rem;
  color: var(--sk-fg-muted);
  text-transform: uppercase;
  letter-spacing: 0.08em;
}
.sk-field__input {
  width: 100%;
  box-sizing: border-box;
  min-height: 44px;
  padding: 12px 14px;
}
.sk-form-required-hint {
  margin: 0 0 14px;
  font-size: 0.78rem;
  color: var(--sk-fg-dim);
  font-family: 'JetBrains Mono', ui-monospace, Menlo, monospace;
  letter-spacing: 0.04em;
}
.sk-required-mark {
  color: var(--sk-cyan);
  margin-left: 2px;
  font-weight: 600;
}

/* Direct-contact card on the contact page. Replaces inline padding/font/list
   styling that previously bypassed the token system. */
.sk-contact-card {
  display: block;
  padding: 32px;
  background: var(--sk-bg-card);
  border: 1px solid var(--sk-border);
  border-radius: 8px;
}
.sk-contact-card__title { font-size: 1.05rem; margin: 0; }
.sk-contact-card__list {
  margin-top: 16px;
  padding: 0;
  list-style: none;
  line-height: 2.2;
}
.sk-contact-card__icon {
  color: var(--sk-cyan);
  margin-right: 10px;
}
.sk-contact-card__rule {
  margin: 24px 0;
  border: 0;
  border-top: 1px solid var(--sk-border);
}
.sk-contact-card__loc {
  font-size: 0.85rem;
  color: var(--sk-fg-muted);
  margin: 0;
}

/* Per-field inline error message. Empty by default; populated when
   aria-invalid="true". role="alert" announces on appearance. */
.sk-field__error {
  display: block;
  min-height: 0;
  margin-top: 8px;
  font-family: 'JetBrains Mono', ui-monospace, Menlo, monospace;
  font-size: 0.75rem;
  letter-spacing: 0.04em;
  color: var(--sk-red);
}
.sk-field__error:empty { display: none; }
/* Invalid-state border on inputs/selects/textareas. */
.sk-field__input[aria-invalid="true"] {
  border-color: var(--sk-red) !important;
}

/* ============================================================
   Contact form success state
   ============================================================ */
.sk-form-msg {
  margin-top: 16px;
  padding: 14px 16px;
  border-radius: 4px;
  font-size: 0.9rem;
  display: none;
}
.sk-form-msg--ok {
  background: rgba(0, 212, 255, 0.08);
  border: 1px solid rgba(0, 212, 255, 0.4);
  color: var(--sk-cyan);
}
.sk-form-msg.is-shown { display: block; }
.sk-mail-fallback {
  margin-top: 18px;
  padding: 18px;
  border: 1px solid var(--sk-border);
  border-radius: 6px;
  background: var(--sk-bg-card);
}
.sk-mail-fallback[hidden] { display: none; }
.sk-mail-fallback__copy {
  margin: 0 0 12px;
  color: var(--sk-fg-muted);
}
.sk-mail-fallback__summary {
  width: 100%;
  min-height: 190px;
  resize: vertical;
  font-family: 'JetBrains Mono', ui-monospace, Menlo, monospace !important;
  font-size: 0.78rem;
  line-height: 1.55;
}
.sk-mail-fallback__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: 12px;
}
.sk-form-privacy {
  margin-top: 14px;
  font-size: 0.8rem;
  color: var(--sk-fg-dim);
}
.sk-form-privacy a { color: var(--sk-fg-muted); border-bottom: 1px solid var(--sk-border); }

/* ============================================================
   Platform: jump-to section nav
   ============================================================ */
.sk-section-nav {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 28px;
  justify-content: center;
}
.sk-section-nav a {
  padding: 8px 14px;
  border: 1px solid var(--sk-border);
  border-radius: 4px;
  font-family: 'JetBrains Mono', ui-monospace, Menlo, monospace;
  font-size: 0.74rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--sk-fg-muted);
  text-decoration: none;
  transition: border-color 0.15s ease, color 0.15s ease, background 0.15s ease;
}
.sk-section-nav a:hover {
  border-color: var(--sk-cyan);
  color: var(--sk-cyan);
  background: rgba(0, 212, 255, 0.04);
}

/* Inline section CTA chip, quiet "Talk to engineering" link after a section */
.sk-section-cta {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin-top: 24px;
  padding: 10px 16px;
  border: 1px solid rgba(0, 212, 255, 0.35);
  border-radius: 4px;
  font-family: 'JetBrains Mono', ui-monospace, Menlo, monospace;
  font-size: 0.78rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--sk-cyan);
  text-decoration: none;
  transition: background 0.15s ease, border-color 0.15s ease;
}
.sk-section-cta:hover { background: rgba(0, 212, 255, 0.08); border-color: var(--sk-cyan); color: var(--sk-cyan); }
.sk-section-cta::after { content: "→"; font-size: 0.95rem; }

/* === Reduced motion: kill infinite animations ===
   Off-switch for any animation declared unconditionally above (not already
   gated on `prefers-reduced-motion: no-preference`). The KG schematic and HMI
   pulse loop forever — disable them for users who request reduced motion.
   Already-gated animations (sk-led-pulse, sk-trust-dot,
   .sk-hero-schematic.is-in .hd-*) do not need to be repeated here. */
@media (prefers-reduced-motion: reduce) {
  .sk-kg .kg-edge--active,
  .sk-kg .kg-node--active .kg-pulse,
  .sk-kg .kg-dot--active,
  .sk-hmi__pulse {
    animation: none !important;
  }
  /* SVG <animateMotion> isn't controllable via the `animation` shorthand;
     hiding the carrier removes the motion before JS has a chance to strip it. */
  .sk-kg .kg-packet { display: none !important; }
  /* The verdict cycle is gated in JS too, but if a user enables reduced
     motion mid-session the SVG could still carry .is-reject — clamp it. */
  .sk-kg.is-reject #hd-n-kernel rect:not(.kg-pulse),
  .sk-kg.is-reject #hd-e3,
  .sk-kg.is-reject #hd-e4 { stroke: var(--sk-cyan); fill: var(--sk-bg-card); opacity: 1; filter: none; }
  .sk-kg.is-reject .hd-label--ok { display: inline; }
  .sk-kg.is-reject .hd-label--reject { display: none; }
  .sk-kg .hd-halt,
  .sk-kg.is-reject .hd-halt { opacity: 0; transform: none; }
  .sk-kg.is-reject .hd-packet--downstream { opacity: 1; }
  .sk-hmi__verdict-dot { box-shadow: none; }
  html,
  * {
    scroll-behavior: auto !important;
  }
  .sk-footer-capture__link span {
    transition: none;
  }
}

/* === Native title reveal ===
   The audit exposed that screenshot/slow-device captures can catch headings
   mid-fade. For this technical brand, instant readable text is the stronger
   default; main.js may still add .is-revealed, but it no longer controls
   legibility. */
@media (scripting: enabled) {
  .rr-title-anim-1 {
    opacity: 1;
    transform: none;
    transition: none;
  }
  .rr-title-anim-1.is-revealed {
    opacity: 1;
    transform: none;
  }
}
@media (prefers-reduced-motion: reduce) {
  .rr-title-anim-1,
  .rr-title-anim-1.is-revealed {
    opacity: 1;
    transform: none;
    transition: none;
  }
}

/* === Native smooth scroll for in-page anchors (replaces common.js handler) ===
   Browsers automatically suppress this for prefers-reduced-motion: reduce. */
html { scroll-behavior: smooth; }

/* === Comparison-table row-head (promoted from inline styles on index.html) === */
.sk-compare-table .sk-compare-rowhead {
  position: sticky;
  left: 0;
  background: var(--sk-bg-alt);
  z-index: 1;
}
.sk-compare-table thead th.sk-compare-rowhead { background: var(--sk-bg-alt); }

/* ============================================================
   Layout primitives — replaces the 192 KB Bootstrap CSS bundle.
   Only the grid + visibility utilities the site actually uses.
   Class names mirror Bootstrap so existing markup keeps working.
   ============================================================ */
.container {
  width: 100%;
  padding-right: 16px;
  padding-left: 16px;
  margin-right: auto;
  margin-left: auto;
  box-sizing: border-box;
}
@media (min-width: 576px)  { .container { max-width: 540px; } }
@media (min-width: 768px)  { .container { max-width: 720px; } }
@media (min-width: 992px)  { .container { max-width: 960px; } }
@media (min-width: 1200px) { .container { max-width: 1140px; } }
@media (min-width: 1400px) { .container { max-width: 1320px; } }

.row {
  display: flex;
  flex-wrap: wrap;
  margin-right: -16px;
  margin-left: -16px;
}
.row > * {
  flex-shrink: 0;
  padding-right: 16px;
  padding-left: 16px;
  box-sizing: border-box;
  width: 100%;
}
[class*="col-"] { flex: 0 0 auto; box-sizing: border-box; }
.col-12 { width: 100%; }

@media (min-width: 768px) {
  .col-md-5 { width: 41.66666667%; }
  .col-md-6 { width: 50%; }
  .col-md-7 { width: 58.33333333%; }
}
@media (min-width: 992px) {
  .col-lg-3  { width: 25%; }
  .col-lg-4  { width: 33.33333333%; }
  .col-lg-5  { width: 41.66666667%; }
  .col-lg-7  { width: 58.33333333%; }
  .col-lg-8  { width: 66.66666667%; }
  .col-lg-9  { width: 75%; }
  .col-lg-10 { width: 83.33333333%; }
  .col-lg-12 { width: 100%; }
  .offset-lg-1 { margin-left: 8.33333333%; }
}

.align-items-center { align-items: center; }
.align-items-start  { align-items: flex-start; }
.mx-auto { margin-right: auto; margin-left: auto; }
.me-auto { margin-right: auto; }
.ms-auto { margin-left: auto; }

/* Visibility utilities. Stackly's `d-{none,flex}-{breakpoint}` shape. */
.d-none { display: none !important; }
.d-flex { display: flex !important; }
@media (min-width: 576px) {
  .d-sm-none { display: none !important; }
  .d-sm-flex { display: flex !important; }
}
@media (min-width: 768px) {
  .d-md-none { display: none !important; }
  .d-md-flex { display: flex !important; }
}
@media (min-width: 992px) {
  .d-lg-none { display: none !important; }
  .d-lg-flex { display: flex !important; }
}
@media (min-width: 1200px) {
  .d-xl-none { display: none !important; }
  .d-xl-flex { display: flex !important; }
}

/* Stackly's negative-margin compensation for footer column rows. */
.mb-minus-40 { margin-bottom: -40px; }

/* ============================================================
   Inline-style escape hatches, lifted into utility classes.
   Replaces the high-frequency `style="..."` attributes counted
   in the audit. Keep these tight — only patterns ≥3× across pages.
   ============================================================ */

/* Hero <p>: max-width 760, top margin 20, centered. */
.sk-hero-dec     { max-width: 760px; margin: 20px auto 0; }

/* CTA-banner subhead: tight grey paragraph next to a heading. */
.sk-cta-sub      { margin: 12px 0 0; max-width: 560px; color: var(--sk-fg-muted); }

/* CTA banner shell (final CTA, page-end punctuation).
   Glowing cyan accent at the top, deeper bg, bigger title in this context,
   secondary link next to the primary button. */
.sk-cta-banner   {
  position: relative;
  background-color: var(--sk-bg-alt) !important;
  border-top: none;
  border-bottom: 1px solid var(--sk-border);
  padding: 104px 0 96px;
}
.sk-cta-banner::before {
  content: "";
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 2px;
  background: linear-gradient(90deg,
    rgba(0, 212, 255, 0) 0%,
    rgba(0, 212, 255, 0.55) 22%,
    rgba(0, 212, 255, 0.95) 50%,
    rgba(0, 212, 255, 0.55) 78%,
    rgba(0, 212, 255, 0) 100%);
  box-shadow: 0 0 18px rgba(0, 212, 255, 0.4);
  pointer-events: none;
}
.sk-cta-banner .sk-h-cta {
  font-size: clamp(2rem, 3.4vw, 2.55rem);
  line-height: 1.18;
  letter-spacing: -0.005em;
}
@media (max-width: 720px) {
  .sk-cta-banner { padding: 80px 0 72px; }
}

/* Footnote rule under a card body. */
.sk-fineprint    {
  margin-top: 24px;
  padding-top: 16px;
  border-top: 1px solid var(--sk-border);
  font-size: 0.85rem;
  color: var(--sk-fg-dim);
}

/* Bulleted feature list spacing inside cards. */
.sk-feature-list { margin-top: 12px; padding-left: 20px; line-height: 1.9; }

/* Section-level alt band (paired-row backgrounds). */
.sk-section-alt  { background-color: var(--sk-bg-alt) !important; }

/* Visually-hidden, screen-reader-only. Replaces 4× inline clip-rect. */
.sk-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;
}

/* Per-card mini-eyebrow (inside a card, smaller than .sub-title).
   fg-dim by default; only opt into .sk-c-cyan when the label is
   actually state-bearing (e.g. SHIPPING, LIVE). */
.sk-mini-eyebrow {
  display: block;
  margin-bottom: 6px;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 0.72rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--sk-fg-dim);
}

/* === Layout utilities ===
   Promoted from inline styles in _build_pages.py and the static pages so
   the breakpoint system, dark-token palette, and motion vocabulary stay in
   one place. Add new utilities here rather than re-introducing inline
   `style=""` blocks. */

/* Phrase grouping for display headings: wrap parallel clauses
   ("One X. One Y. One Z.") in <span class="sk-nobr"> so the browser
   can wrap *between* clauses but never *within* one. Avoids ugly
   mid-clause splits like "One shared / graph". */
.sk-nobr { white-space: nowrap; }

/* Spacing — margin-top */
.sk-mt-8  { margin-top: 8px; }
.sk-mt-10 { margin-top: 10px; }
.sk-mt-12 { margin-top: 12px; }
.sk-mt-14 { margin-top: 14px; }
.sk-mt-16 { margin-top: 16px; }
.sk-mt-20 { margin-top: 20px; }
.sk-mt-24 { margin-top: 24px; }
.sk-mt-32 { margin-top: 32px; }
.sk-mt-40 { margin-top: 40px; }
/* margin-top, but rendered as a block so it can be applied to inline-by-default
   anchor CTAs without losing the gap. */
.sk-mt-20-block { display: inline-block; margin-top: 20px; }

/* Spacing — margin-bottom */
.sk-mb-16 { margin-bottom: 16px; }
.sk-mb-20 { margin-bottom: 20px; }
.sk-mb-24 { margin-bottom: 24px; }
.sk-mb-40 { margin-bottom: 40px; }
/* Row utility used directly on .row containers */
.sk-row-mb-8  { margin-bottom: 8px; }
.sk-row-mb-40 { margin-bottom: 40px; }

/* Row gap */
.sk-row-gap-20 { row-gap: 20px; }
.sk-row-gap-24 { row-gap: 24px; }
.sk-row-gap-32 { row-gap: 32px; }

/* Width and prose */
.sk-mw-560 { max-width: 560px; }
.sk-mw-640 { max-width: 640px; }
.sk-mw-680 { max-width: 680px; }
.sk-mw-760 { max-width: 760px; }
.sk-prose-center { max-width: 680px; margin-left: auto; margin-right: auto; }
.sk-text-right { text-align: right; }

/* Color */
.sk-fg-muted { color: var(--sk-fg-muted); }
.sk-fg-dim   { color: var(--sk-fg-dim); }
.sk-c-dim    { color: var(--sk-fg-dim); }

/* Typography size helpers */
.sk-text-xs { font-size: 0.85rem; }
.sk-text-sm { font-size: 0.92rem; }

/* Section background variant — replaces inline
   style="background-color: var(--sk-bg-alt) !important;" on <section>. */
.sk-bg-alt { background-color: var(--sk-bg-alt); }

/* Hero lede (the paragraph under the H1).
   Centered, capped to 760ch on the brand layout. */
.sk-hero-lede { max-width: 760px; margin: 20px auto 0; }

/* Lead paragraph in long-form prose (company "Mission", etc.) */
.sk-prose-lead { font-size: 1.05rem; line-height: 1.7; }

/* Section H2 size variants. The numbers come from the historical
   inline styles; codified here so every section reaches for the same scale. */
.sk-h-section    { font-size: clamp(1.75rem, 3.5vw, 2.6rem); line-height: 1.15; margin-top: 12px; }
.sk-h-section-sm { font-size: clamp(1.75rem, 3vw, 2.4rem);   line-height: 1.15; margin-top: 12px; }
.sk-h-section-md { font-size: clamp(1.5rem, 2.6vw, 2.1rem);  line-height: 1.18; margin-top: 12px; }
.sk-h-section-xs { font-size: clamp(1.4rem, 2.4vw, 1.9rem);  line-height: 1.2;  margin-top: 12px; }
.sk-h-cta        { font-size: clamp(1.75rem, 3vw, 2.25rem);  line-height: 1.15; }

/* CTA band — replaces a 200-char inline-style block on every <section class="cta-area">. */
.sk-cta-band {
  background-color: var(--sk-bg-alt);
  border-top: 1px solid var(--sk-border);
  border-bottom: 1px solid var(--sk-border);
  padding: 72px 0;
}
.sk-cta-band__sub {
  margin: 12px 0 0;
  max-width: 560px;
  color: var(--sk-fg-muted);
}

/* Inline link inside body copy (not a primary CTA).
   Replaces an inline `style="color:var(--sk-cyan);border-bottom:1px solid"` pattern. */
.sk-inline-link {
  color: var(--sk-cyan);
  border-bottom: 1px solid var(--sk-cyan);
  text-decoration: none;
}
.sk-inline-link:hover { color: var(--sk-fg); border-bottom-color: var(--sk-fg); }

/* Plain cyan link (no underline) — used in inline list items. */
.sk-link-cyan { color: var(--sk-cyan); }

/* card_grid() helpers */
.sk-card-pad    { padding: 24px; }
.sk-card-pad-lg { padding: 32px; height: 100%; }
.sk-card__num   {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  color: var(--sk-cyan);
  font-size: 0.85rem;
  margin-bottom: 12px;
}
.sk-card__title { font-size: 1.15rem; margin-bottom: 12px; }
.sk-card__pill  { margin-top: 14px; }

/* Mono eyebrow used as a section sub-heading inside a card or column.
   Two variants: an h3-shaped one (slightly larger) and an inline span
   used as a "Standards" line label. */
.sk-mono-eyebrow-h3 {
  font-size: 0.78rem;
  color: var(--sk-cyan);
  text-transform: uppercase;
  letter-spacing: 0.1em;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
}
.sk-mono-eyebrow {
  display: block;
  margin-bottom: 6px;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 0.72rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--sk-cyan);
}

/* Standards footer line under a solution_block headline */
.sk-standards-line {
  margin-top: 24px;
  font-size: 0.85rem;
  color: var(--sk-fg-dim);
  border-top: 1px solid var(--sk-border);
  padding-top: 16px;
}

/* Use-case list inside solution_block */
.sk-use-list {
  margin-top: 12px;
  padding-left: 20px;
  line-height: 1.9;
}

/* Document list on Trust Center "Documents on Request" section.
   Replaces inline style="line-height:2;" plus inline color styles. */
.sk-doc-list { line-height: 2; }

/* Trust-Center procurement-bridge feature card.
   Replaces ~180 chars of inline styling that hard-coded color tokens. */
.sk-bridge-card {
  padding: 20px 22px;
  margin-bottom: 24px;
  border-color: rgba(0, 212, 255, 0.35);
  background: var(--sk-bg-card);
}

/* Note line that follows a table or list (security page).
   Replaces inline `style="margin-top:24px;font-size:0.9rem;color:var(--sk-fg-dim);"`. */
.sk-note-after-table {
  margin-top: 24px;
  font-size: 0.9rem;
  color: var(--sk-fg-dim);
}

/* Horizontal-scroll wrapper for wide tables. */
.sk-overflow-x { overflow-x: auto; }

/* Pricing card pieces */
.sk-pricing-card { padding: 32px; height: 100%; }
.sk-pricing-card--featured { border-color: var(--sk-cyan); }
.sk-pricing-card__name {
  font-size: 1.1rem;
  font-weight: 600;
}
.sk-pricing-card__lede {
  margin-top: 8px;
  font-size: 0.9rem;
}
.sk-pricing-card__price {
  margin-top: 24px;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 2.25rem;
  color: var(--sk-cyan);
}
.sk-pricing-card__suffix {
  font-size: 0.9rem;
  color: var(--sk-fg-muted);
}
.sk-pricing-card__terms {
  margin-top: 10px;
  font-size: 0.78rem;
  line-height: 1.5;
  color: var(--sk-fg-dim);
}
.sk-pricing-card__list {
  margin-top: 24px;
  padding-left: 20px;
  line-height: 2;
}
.sk-pricing-disclaimer {
  font-size: 0.78rem;
  color: var(--sk-fg-dim);
}

/* FAQ accordion item on pricing.html */
.sk-faq-item {
  padding: 24px;
  margin-bottom: 16px;
}

/* FAQ card heading on pricing.html.
   Bumped above body copy so the question reads as a heading, not a paragraph. */
.sk-faq-question {
  font-size: 1.1rem;
  font-weight: 600;
  line-height: 1.4;
}

/* Hero secondary CTA spacing — replaces inline margin-left:12px on outline buttons. */
.sk-btn-side { margin-left: 12px; }

/* 404 page — centered hero treatment without inline styles. */
.sk-404-section {
  min-height: 60vh;
  display: flex;
  align-items: center;
}
.sk-404-numeric {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 8rem;
  color: var(--sk-cyan);
  line-height: 1;
}
.sk-404-prose {
  max-width: 560px;
  margin: 16px auto 0;
}

/* Footer wordmark size, replaces inline `style="font-size:1.5rem"`. */
.sk-wordmark--lg { font-size: 1.5rem; }

/* Reset on inline <pre> inside HMI panel — replaces inline margin:0. */
.sk-log__body--flush { margin: 0; }

/* === Index hero / section heads ===
   Display-scale H2s used on the home page. Three variants for three rhythms;
   numbers come from the historical inline styles. */
.sk-h-display       { font-size: clamp(2rem, 4vw, 2.75rem); line-height: 1.15; margin-top: 12px; }
.sk-h-display-tight { font-size: clamp(2rem, 4vw, 2.75rem); line-height: 1.1;  margin-top: 12px; }
.sk-h-display-sm    { font-size: clamp(1.85rem, 3.4vw, 2.5rem); line-height: 1.15; margin-top: 12px; }
.sk-h-display-flat  { font-size: clamp(2rem, 4vw, 2.75rem); }

/* Centered prose under a section head. */
.sk-section-lede {
  margin: 20px auto 0;
  max-width: 680px;
  color: var(--sk-fg-muted);
}
/* Left-aligned secondary lede in a wider column (mw 680). */
.sk-section-lede--left {
  margin-top: 14px;
  max-width: 680px;
  color: var(--sk-fg-muted);
}
.sk-section-lede--left-narrow {
  margin-top: 14px;
  max-width: 640px;
  color: var(--sk-fg-muted);
  font-size: 0.95rem;
}

/* Larger row margin-bottom variants used on home-page section heads. */
.sk-row-mb-48 { margin-bottom: 48px; }
.sk-row-mb-56 { margin-bottom: 56px; }
/* Center-action margin-top — replaces inline `style="margin-top:48px;"`. */
.sk-mt-48 { margin-top: 48px; }

/* Hero HMI footer trailing-status pill — replaces inline
   `style="margin-left:auto;color:var(--sk-cyan);"`. */
.sk-hmi__foot-trail {
  margin-left: auto;
  color: var(--sk-cyan);
}

/* SVG kg-edge animation-delay choreography for the platform.html schematic.
   Three active edges fire 1.2s apart so packets stagger across the graph. */
#kg-e1 { animation-delay: 0s; }
#kg-e2 { animation-delay: 1.2s; }
#kg-e3 { animation-delay: 2.4s; }
/* Hero schematic on index.html. */
#hd-e1 { animation-delay: 0s; }
#hd-e2 { animation-delay: 0.6s; }
#hd-e3 { animation-delay: 1.2s; }
#hd-e4 { animation-delay: 1.8s; }

/* ============================================================
   Home: On-ramp card sequence (above THE PROBLEM)
   Three cards as planner -> kernel -> motors flow. Kernel card is
   visually dominant: HMI corner ticks, slight cyan-tinted bg, live
   indicator. Animated dashed connectors between cards reuse the
   visual vocabulary of the hero KG schematic.
   ============================================================ */
.sk-onramp {
  display: grid;
  grid-template-columns: 1fr auto 1.18fr auto 1fr;
  align-items: stretch;
  gap: 18px;
  margin-top: 44px;
}
.sk-onramp__card {
  position: relative;
  padding: 32px 28px 28px;
  border: 1px solid var(--sk-border);
  border-radius: 8px;
  background: rgba(var(--sk-fg-rgb), 0.015);
  display: flex;
  flex-direction: column;
  gap: 14px;
  transition: border-color 0.25s ease, background 0.25s ease, transform 0.25s ease;
}
.sk-onramp__card:hover {
  border-color: rgba(0, 212, 255, 0.45);
  transform: translateY(-2px);
}

/* Kernel card: visually dominant, HMI-styled, live indicator */
.sk-onramp__card--kernel {
  background: rgba(0, 212, 255, 0.028);
  border-color: rgba(0, 212, 255, 0.32);
  padding: 36px 32px 32px;
}
.sk-onramp__card--kernel:hover {
  background: rgba(0, 212, 255, 0.05);
  border-color: rgba(0, 212, 255, 0.55);
}

/* HMI corner ticks on the kernel card (mirrors the hero SVG) */
.sk-onramp__hmi-tick {
  position: absolute;
  width: 12px;
  height: 12px;
  border: 1.5px solid rgba(0, 212, 255, 0.65);
  pointer-events: none;
}
.sk-onramp__hmi-tick--tl { top: 10px; left: 10px;  border-right: none;  border-bottom: none; }
.sk-onramp__hmi-tick--tr { top: 10px; right: 10px; border-left: none;   border-bottom: none; }
.sk-onramp__hmi-tick--bl { bottom: 10px; left: 10px;  border-right: none; border-top: none; }
.sk-onramp__hmi-tick--br { bottom: 10px; right: 10px; border-left: none;  border-top: none; }

/* Connector arrows between cards: verb label above a static arrow.
   Muted neutral on purpose - the kernel card owns the cyan;
   connectors recede so the focal point stays where it should. */
.sk-onramp__arrow {
  align-self: center;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  color: rgba(var(--sk-fg-rgb), 0.38);
}
.sk-onramp__verb {
  font-family: 'JetBrains Mono', ui-monospace, Menlo, monospace;
  font-size: 0.72rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: rgba(var(--sk-fg-rgb), 0.6);
  white-space: nowrap;
}

/* Card head: num pill + (optional) live indicator on the right */
.sk-onramp__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}
.sk-onramp__num {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-family: 'JetBrains Mono', ui-monospace, Menlo, monospace;
  font-size: 0.74rem;
  letter-spacing: 0.16em;
  color: var(--sk-fg-muted);
  text-transform: uppercase;
}
.sk-onramp__num-digit {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 28px;
  height: 24px;
  padding: 0 8px;
  border: 1px solid rgba(var(--sk-fg-rgb), 0.18);
  border-radius: 4px;
  font-size: 0.7rem;
  letter-spacing: 0.08em;
  color: var(--sk-fg-muted);
  background: rgba(var(--sk-fg-rgb), 0.02);
}
/* Kernel card recolours num pill to cyan */
.sk-onramp__card--kernel .sk-onramp__num,
.sk-onramp__card--kernel .sk-onramp__num-digit {
  color: var(--sk-cyan);
  border-color: rgba(0, 212, 255, 0.4);
  background: rgba(0, 212, 255, 0.06);
}

/* Live indicator (kernel card only) */
.sk-onramp__live {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-family: 'JetBrains Mono', ui-monospace, Menlo, monospace;
  font-size: 0.68rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: rgba(0, 212, 255, 0.8);
}
.sk-onramp__pulse {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--sk-cyan);
  box-shadow: 0 0 0 0 rgba(0, 212, 255, 0.55);
  animation: skOnrampPulse 1.8s ease-out infinite;
}
@keyframes skOnrampPulse {
  0%   { box-shadow: 0 0 0 0 rgba(0, 212, 255, 0.55); }
  70%  { box-shadow: 0 0 0 8px rgba(0, 212, 255, 0); }
  100% { box-shadow: 0 0 0 0 rgba(0, 212, 255, 0); }
}

.sk-onramp__title {
  font-size: 1.3rem;
  line-height: 1.25;
  margin: 0;
  font-weight: 600;
  letter-spacing: -0.005em;
}
.sk-onramp__card--kernel .sk-onramp__title {
  font-size: 1.42rem;
}
.sk-onramp__desc {
  font-size: 0.95rem;
  line-height: 1.55;
  color: var(--sk-fg-muted);
  margin: 0;
}

@media (max-width: 960px) {
  .sk-onramp {
    grid-template-columns: 1fr;
    gap: 16px;
  }
  .sk-onramp__arrow {
    flex-direction: row;
    gap: 10px;
    height: 28px;
  }
  .sk-onramp__arrow svg {
    transform: rotate(90deg);
  }
}
