/*
  FOURSTEK MARKETING SITE — Visual System
  ----------------------------------------
  Modern cybersec SaaS aesthetic. Tokens are split between dark (default) and
  light, both keyed off [data-theme] on <html>. Brand colours come from
  brand_identity.css; this file ONLY defines marketing-specific surfaces and
  motion. No hard-coded hex values outside this file.
*/

/* ── DARK (default) ─────────────────────────────────────────────────────── */
[data-theme="dark"] {
  /* Page surfaces */
  --m-bg:           #060716;
  --m-bg-elev:      #0a0c1f;
  --m-card:         rgba(255, 255, 255, 0.03);
  --m-card-strong:  rgba(255, 255, 255, 0.05);
  --m-border:       rgba(255, 255, 255, 0.08);
  --m-border-strong:rgba(151, 125, 255, 0.18);
  --m-divider:      rgba(255, 255, 255, 0.06);

  /* Text */
  --m-text:         #e3e5ff;
  --m-text-mute:    rgba(227, 229, 255, 0.62);
  --m-text-soft:    rgba(227, 229, 255, 0.42);

  /* Accents (re-use brand tokens) */
  --m-accent:       #5469ff;
  --m-accent-soft:  rgba(84, 105, 255, 0.18);
  --m-accent-glow:  rgba(151, 125, 255, 0.28);

  /* Mesh / gradient backgrounds */
  --m-mesh-1: radial-gradient(60rem 30rem at 8% -10%, rgba(84, 105, 255, 0.25), transparent 60%),
              radial-gradient(50rem 30rem at 100% 10%, rgba(151, 125, 255, 0.18), transparent 55%),
              radial-gradient(70rem 40rem at 50% 100%, rgba(0, 51, 255, 0.10), transparent 70%);
  --m-grid-color: rgba(151, 125, 255, 0.06);

  /* Header */
  --m-header-bg:    rgba(6, 7, 22, 0.55);
  --m-header-bg-scrolled: rgba(6, 7, 22, 0.85);

  /* Code / terminal */
  --m-term-bg:      #0a0c1f;
  --m-term-prompt:  #5cdb95;
  --m-term-text:    rgba(227, 229, 255, 0.85);

  color-scheme: dark;
}

/* ── LIGHT ──────────────────────────────────────────────────────────────── */
[data-theme="light"] {
  --m-bg:           #fafbff;
  --m-bg-elev:      #ffffff;
  --m-card:         #ffffff;
  --m-card-strong:  #ffffff;
  --m-border:       rgba(0, 3, 61, 0.08);
  --m-border-strong:rgba(0, 51, 255, 0.18);
  --m-divider:      rgba(0, 3, 61, 0.06);

  --m-text:         #00033D;
  --m-text-mute:    rgba(0, 3, 61, 0.62);
  --m-text-soft:    rgba(0, 3, 61, 0.42);

  --m-accent:       #0033FF;
  --m-accent-soft:  rgba(0, 51, 255, 0.10);
  --m-accent-glow:  rgba(151, 125, 255, 0.18);

  --m-mesh-1: radial-gradient(60rem 30rem at 8% -10%, rgba(151, 125, 255, 0.18), transparent 60%),
              radial-gradient(50rem 30rem at 100% 10%, rgba(0, 51, 255, 0.10), transparent 55%),
              radial-gradient(70rem 40rem at 50% 100%, rgba(151, 125, 255, 0.08), transparent 70%);
  --m-grid-color: rgba(0, 51, 255, 0.05);

  --m-header-bg:    rgba(255, 255, 255, 0.7);
  --m-header-bg-scrolled: rgba(255, 255, 255, 0.92);

  --m-term-bg:      #00033D;
  --m-term-prompt:  #5cdb95;
  --m-term-text:    rgba(255, 255, 255, 0.88);

  color-scheme: light;
}

/* ── BASE ───────────────────────────────────────────────────────────────── */
.m-shell {
  background: var(--m-bg);
  color: var(--m-text);
  min-height: 100vh;
  font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  overflow-x: hidden;
}

.m-shell a { color: inherit; }

/* ── BACKGROUND ATMOSPHERE ─────────────────────────────────────────────── */
.m-mesh {
  position: relative;
  isolation: isolate;
}
.m-mesh::before {
  content: "";
  position: absolute;
  inset: 0;
  background: var(--m-mesh-1);
  z-index: -2;
  pointer-events: none;
}
.m-mesh::after {
  content: "";
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(var(--m-grid-color) 1px, transparent 1px),
    linear-gradient(90deg, var(--m-grid-color) 1px, transparent 1px);
  background-size: 64px 64px;
  background-position: 0 0;
  mask-image: radial-gradient(ellipse 80% 60% at 50% 0%, black 30%, transparent 80%);
  -webkit-mask-image: radial-gradient(ellipse 80% 60% at 50% 0%, black 30%, transparent 80%);
  z-index: -1;
  pointer-events: none;
}

/* Section dividers (subtle gradient line) */
.m-divider {
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--m-border), transparent);
}

/* ── CARDS / GLASS ─────────────────────────────────────────────────────── */
.m-card {
  background: var(--m-card);
  border: 1px solid var(--m-border);
  border-radius: 18px;
  transition: transform 240ms cubic-bezier(.22,.61,.36,1),
              border-color 240ms ease,
              box-shadow 240ms ease,
              background 240ms ease;
}
.m-card:hover {
  border-color: var(--m-border-strong);
  background: var(--m-card-strong);
  transform: translateY(-3px);
  box-shadow: 0 20px 50px -25px var(--m-accent-glow);
}
.m-card-quiet { background: var(--m-card); border: 1px solid var(--m-border); border-radius: 18px; }

[data-theme="dark"] .m-glass {
  backdrop-filter: blur(18px) saturate(140%);
  -webkit-backdrop-filter: blur(18px) saturate(140%);
}

/* ── TYPOGRAPHY HELPERS ────────────────────────────────────────────────── */
.m-display {
  font-weight: 900;
  letter-spacing: -0.04em;
  line-height: 1.02;
}
.m-mono {
  font-family: 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, monospace;
  font-feature-settings: "ss01", "cv11";
}
.m-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.35rem 0.75rem;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--m-text-mute);
  background: var(--m-accent-soft);
  border: 1px solid var(--m-border);
}
.m-eyebrow::before {
  content: "";
  width: 6px;
  height: 6px;
  border-radius: 999px;
  background: var(--m-accent);
  box-shadow: 0 0 0 3px var(--m-accent-soft);
}

.m-grad-text {
  background: linear-gradient(120deg, var(--m-accent) 0%, #977DFF 50%, var(--m-accent) 100%);
  background-size: 200% 100%;
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  animation: m-grad-shift 8s linear infinite;
}
@keyframes m-grad-shift {
  0%   { background-position: 0% 50%; }
  100% { background-position: 200% 50%; }
}

/* ── BUTTONS ───────────────────────────────────────────────────────────── */
.m-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  padding: 0.7rem 1.25rem;
  font-size: 14px;
  font-weight: 700;
  letter-spacing: -0.01em;
  border-radius: 12px;
  border: 1px solid transparent;
  transition: transform 180ms ease, background 180ms ease,
              border-color 180ms ease, box-shadow 180ms ease, color 180ms ease;
  cursor: pointer;
  text-decoration: none;
  white-space: nowrap;
}
.m-btn:active { transform: translateY(1px) scale(0.99); }
.m-btn:focus-visible {
  outline: 2px solid var(--m-accent);
  outline-offset: 2px;
}

.m-btn-primary {
  background: linear-gradient(135deg, var(--m-accent), #977DFF);
  color: #ffffff;
  box-shadow: 0 10px 30px -12px var(--m-accent-glow), inset 0 1px 0 rgba(255,255,255,0.2);
}
.m-btn-primary:hover {
  transform: translateY(-2px);
  box-shadow: 0 18px 38px -10px var(--m-accent-glow), inset 0 1px 0 rgba(255,255,255,0.25);
}

.m-btn-ghost {
  background: var(--m-card);
  border-color: var(--m-border);
  color: var(--m-text);
}
.m-btn-ghost:hover {
  background: var(--m-card-strong);
  border-color: var(--m-border-strong);
  transform: translateY(-2px);
}

.m-btn-link {
  color: var(--m-accent);
  font-weight: 700;
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  font-size: 14px;
}
.m-btn-link:hover { text-decoration: underline; }

/* ── BADGE / PILL ──────────────────────────────────────────────────────── */
.m-pill {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  padding: 0.25rem 0.65rem;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.06em;
  background: var(--m-accent-soft);
  color: var(--m-accent);
  border: 1px solid var(--m-border);
}
.m-pill-dot::before {
  content: "";
  width: 6px;
  height: 6px;
  border-radius: 999px;
  background: currentColor;
  box-shadow: 0 0 0 4px var(--m-accent-soft);
  animation: m-pulse 2.4s ease-in-out infinite;
}
@keyframes m-pulse {
  0%, 100% { transform: scale(1);   opacity: 1; }
  50%      { transform: scale(1.4); opacity: 0.6; }
}

/* ── TERMINAL CARD (hero artwork) ──────────────────────────────────────── */
.m-term {
  background: var(--m-term-bg);
  border: 1px solid var(--m-border);
  border-radius: 16px;
  font-family: 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 13px;
  line-height: 1.7;
  color: var(--m-term-text);
  overflow: hidden;
  box-shadow: 0 40px 80px -30px rgba(0, 0, 0, 0.55);
}
.m-term-head {
  display: flex;
  align-items: center;
  gap: 0.4rem;
  padding: 0.65rem 1rem;
  border-bottom: 1px solid rgba(255, 255, 255, 0.06);
  background: rgba(255, 255, 255, 0.02);
  font-size: 11px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.55);
}
.m-term-dot {
  width: 10px;
  height: 10px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.18);
}
.m-term-dot.r { background: #ff5f56; }
.m-term-dot.y { background: #ffbd2e; }
.m-term-dot.g { background: #28c840; }
.m-term-body { padding: 1.25rem 1.25rem 1.5rem; white-space: pre-wrap; }
.m-term-prompt { color: var(--m-term-prompt); }

/* ── REVEAL ANIMATIONS (progressive enhancement) ───────────────────────────
   Default: visible. If JS controller fails to wire up (asset 404, JS error,
   no IntersectionObserver), content stays visible — graceful degradation.
   When the Stimulus controller connects it adds `.is-pending` to fade out;
   then swaps to `.is-visible` once the element scrolls into view. */
.m-reveal {
  opacity: 1;
  transform: none;
  transition: opacity 700ms cubic-bezier(.22,.61,.36,1),
              transform 700ms cubic-bezier(.22,.61,.36,1);
  will-change: opacity, transform;
}
.m-reveal.is-pending {
  opacity: 0;
  transform: translateY(24px);
}
.m-reveal.is-visible {
  opacity: 1;
  transform: translateY(0);
}
.m-reveal[data-delay="1"] { transition-delay: 80ms;  }
.m-reveal[data-delay="2"] { transition-delay: 160ms; }
.m-reveal[data-delay="3"] { transition-delay: 240ms; }
.m-reveal[data-delay="4"] { transition-delay: 320ms; }
.m-reveal[data-delay="5"] { transition-delay: 400ms; }

/* Honour reduced-motion preferences */
@media (prefers-reduced-motion: reduce) {
  .m-reveal,
  .m-grad-text,
  .m-pill-dot::before { animation: none !important; transition: none !important; }
  .m-reveal,
  .m-reveal.is-pending { opacity: 1; transform: none; }
}

/* ── HEADER ────────────────────────────────────────────────────────────── */
.m-header {
  position: sticky;
  top: 0;
  z-index: 50;
  background: var(--m-header-bg);
  backdrop-filter: blur(14px) saturate(140%);
  -webkit-backdrop-filter: blur(14px) saturate(140%);
  border-bottom: 1px solid transparent;
  transition: background 240ms ease, border-color 240ms ease;
}
.m-header[data-scrolled="true"] {
  background: var(--m-header-bg-scrolled);
  border-bottom-color: var(--m-border);
}
.m-nav-link {
  display: inline-flex;
  align-items: center;
  padding: 0.45rem 0.85rem;
  border-radius: 10px;
  font-size: 14px;
  font-weight: 600;
  color: var(--m-text-mute);
  transition: color 160ms ease, background 160ms ease;
}
.m-nav-link:hover { color: var(--m-text); background: var(--m-card); }
.m-nav-link.is-active { color: var(--m-text); background: var(--m-accent-soft); }

.m-icon-btn {
  width: 38px;
  height: 38px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 10px;
  border: 1px solid var(--m-border);
  background: var(--m-card);
  color: var(--m-text-mute);
  transition: color 160ms ease, background 160ms ease, border-color 160ms ease, transform 160ms ease;
  cursor: pointer;
}
.m-icon-btn:hover {
  color: var(--m-text);
  background: var(--m-card-strong);
  border-color: var(--m-border-strong);
  transform: translateY(-1px);
}

/* Theme icon swap (sun visible in dark, moon visible in light) */
[data-theme="dark"]  .m-icon-sun  { display: block; }
[data-theme="dark"]  .m-icon-moon { display: none;  }
[data-theme="light"] .m-icon-sun  { display: none;  }
[data-theme="light"] .m-icon-moon { display: block; }

/* Locale chip */
.m-locale {
  display: inline-flex;
  align-items: center;
  gap: 2px;
  padding: 4px;
  border-radius: 999px;
  background: var(--m-card);
  border: 1px solid var(--m-border);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.08em;
}
.m-locale a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 32px;
  height: 24px;
  padding: 0 0.5rem;
  border-radius: 999px;
  color: var(--m-text-mute);
  text-decoration: none;
  transition: color 160ms ease, background 160ms ease;
}
.m-locale a:hover { color: var(--m-text); }
.m-locale a.is-current {
  background: linear-gradient(135deg, var(--m-accent), #977DFF);
  color: #ffffff;
}

/* Mobile menu (off-canvas) */
.m-mobile-menu {
  display: none;
  position: fixed;
  inset: 64px 0 0 0;
  background: var(--m-bg);
  border-top: 1px solid var(--m-border);
  z-index: 49;
  padding: 1rem 1.25rem 2rem;
}
.m-mobile-menu[data-open="true"] {
  display: block;
  animation: m-fade-in 220ms ease both;
}
/* Force-hide the off-canvas menu on desktop even if data-open lingered */
@media (min-width: 768px) {
  .m-mobile-menu,
  .m-mobile-menu[data-open="true"] { display: none !important; }
}
@keyframes m-fade-in {
  from { opacity: 0; transform: translateY(-6px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* Burger menu — only render below md. Tailwind's md:hidden does not override
   .m-icon-btn's inline-flex due to source order, so we own the visibility. */
.m-burger { display: none; }
@media (max-width: 767.98px) {
  .m-burger { display: inline-flex; }
}

/* Stable header layout — auth cluster never shrinks/wraps, locale chip has
   a min-width so toggling TR↔EN does not cause neighbouring elements to jump. */
.m-header-cluster { flex-shrink: 0; }
.m-locale { flex-shrink: 0; }
.m-nav-link { white-space: nowrap; }

/* ── FOOTER ────────────────────────────────────────────────────────────── */
.m-footer {
  border-top: 1px solid var(--m-border);
  background: var(--m-bg);
}
.m-footer-link {
  display: inline-block;
  font-size: 14px;
  color: var(--m-text-mute);
  text-decoration: none;
  padding: 4px 0;
  transition: color 160ms ease;
}
.m-footer-link:hover { color: var(--m-text); }

/* ── PRICING TABLE ─────────────────────────────────────────────────────── */
.m-plan {
  position: relative;
  display: flex;
  flex-direction: column;
  padding: 2rem 1.5rem;
  border-radius: 22px;
  background: var(--m-card);
  border: 1px solid var(--m-border);
  transition: transform 240ms ease, border-color 240ms ease, box-shadow 240ms ease;
}
.m-plan:hover {
  transform: translateY(-4px);
  border-color: var(--m-border-strong);
  box-shadow: 0 30px 60px -30px var(--m-accent-glow);
}
.m-plan.is-popular {
  border-color: var(--m-accent);
  box-shadow: 0 30px 60px -30px var(--m-accent-glow), inset 0 0 0 1px var(--m-accent);
  /* Subtle scale + glow so the recommended tier reads first. */
  transform: scale(1.015);
}
.m-plan.is-popular:hover { transform: translateY(-4px) scale(1.015); }
.m-plan-badge {
  position: absolute;
  top: -12px;
  left: 50%;
  transform: translateX(-50%);
  padding: 4px 12px;
  border-radius: 999px;
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: #ffffff;
  background: linear-gradient(135deg, var(--m-accent), #977DFF);
  box-shadow: 0 8px 20px -10px var(--m-accent-glow);
  white-space: nowrap;
}

/* Segmented billing toggle (pricing hero). Visual-only at v1. */
.m-segmented {
  display: inline-flex;
  align-items: center;
  padding: 4px;
  border-radius: 999px;
  background: var(--m-card);
  border: 1px solid var(--m-border);
  position: relative;
}
.m-segmented button {
  position: relative;
  z-index: 1;
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.55rem 1.25rem;
  border-radius: 999px;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.01em;
  color: var(--m-text-mute);
  background: transparent;
  border: 0;
  cursor: pointer;
  transition: color 200ms ease;
}
.m-segmented button[aria-pressed="true"] {
  color: #ffffff;
  background: linear-gradient(135deg, var(--m-accent), #977DFF);
  box-shadow: 0 10px 24px -10px var(--m-accent-glow);
}
.m-segmented .m-pill-savings {
  display: inline-flex;
  align-items: center;
  padding: 2px 8px;
  border-radius: 999px;
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.06em;
  background: var(--m-accent-soft);
  color: var(--m-accent);
}
.m-segmented button[aria-pressed="true"] .m-pill-savings {
  background: rgba(255, 255, 255, 0.18);
  color: #ffffff;
}

/* Comparison table polish — sticky first column on small screens, zebra rows */
.m-compare {
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
  font-size: 14px;
}
.m-compare thead th {
  position: sticky;
  top: 0;
  background: var(--m-card);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  z-index: 1;
}
.m-compare th,
.m-compare td {
  padding: 0.9rem 0.85rem;
  border-bottom: 1px solid var(--m-border);
  vertical-align: middle;
}
.m-compare tbody tr:last-child th,
.m-compare tbody tr:last-child td { border-bottom: 0; }
.m-compare th:first-child,
.m-compare td:first-child {
  text-align: left;
  padding-left: 1.25rem;
  color: var(--m-text-mute);
  width: 38%;
}
.m-compare th { font-weight: 800; letter-spacing: -0.01em; color: var(--m-text); }
.m-compare td { text-align: center; }
.m-compare tbody tr:hover td,
.m-compare tbody tr:hover th { background: var(--m-card-strong); }
.m-compare .is-pro-col {
  background: linear-gradient(180deg, var(--m-accent-soft) 0%, transparent 100%);
}
.m-compare .is-pro-col-cell { background: var(--m-accent-soft); }

/* ── FAQ ───────────────────────────────────────────────────────────────── */
.m-faq {
  border: 1px solid var(--m-border);
  border-radius: 14px;
  background: var(--m-card);
  overflow: hidden;
}
.m-faq summary {
  cursor: pointer;
  list-style: none;
  padding: 1.1rem 1.25rem;
  font-weight: 700;
  font-size: 15px;
  color: var(--m-text);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
}
.m-faq summary::-webkit-details-marker { display: none; }
.m-faq summary::after {
  content: "+";
  font-size: 20px;
  font-weight: 400;
  color: var(--m-text-mute);
  transition: transform 200ms ease;
}
.m-faq[open] summary::after { transform: rotate(45deg); }
.m-faq-body { padding: 0 1.25rem 1.25rem; color: var(--m-text-mute); font-size: 14px; line-height: 1.6; }

/* ── ANCHOR SIDEBAR (legal pages) ──────────────────────────────────────── */
.m-anchors {
  position: sticky;
  top: 100px;
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
}
.m-anchors a {
  font-size: 13px;
  color: var(--m-text-mute);
  padding: 6px 10px;
  border-left: 2px solid transparent;
  text-decoration: none;
  transition: color 160ms ease, border-color 160ms ease;
}
.m-anchors a:hover { color: var(--m-text); }
.m-anchors a.is-current {
  color: var(--m-accent);
  border-left-color: var(--m-accent);
}

/* ── PROSE (legal) ─────────────────────────────────────────────────────── */
.m-prose > * + * { margin-top: 1rem; }
.m-prose h2 {
  font-size: 22px;
  font-weight: 800;
  margin-top: 3rem;
  margin-bottom: 0.85rem;
  letter-spacing: -0.012em;
  color: var(--m-text);
  scroll-margin-top: 96px;
}
.m-prose h2:first-child { margin-top: 0; }
.m-prose h2 + p { margin-top: 0; }
.m-prose p {
  color: var(--m-text-mute);
  font-size: 15px;
  line-height: 1.75;
  margin-bottom: 0;
}
.m-prose a { color: var(--m-accent); text-decoration: underline; text-underline-offset: 3px; }
.m-prose ul { padding-left: 1.25rem; color: var(--m-text-mute); font-size: 15px; line-height: 1.75; }
.m-prose ul li { list-style: disc; margin-bottom: 0.35rem; }

/* ── FEATURE DEEP-DIVE (alternating rows) ──────────────────────────────── */
.m-feature-row {
  display: grid;
  grid-template-columns: 1fr;
  gap: 2.5rem;
  align-items: center;
}
@media (min-width: 1024px) {
  .m-feature-row { grid-template-columns: 1fr 1fr; gap: 5rem; }
  .m-feature-row.is-reverse > .m-feature-copy   { order: 2; }
  .m-feature-row.is-reverse > .m-feature-visual { order: 1; }
}
.m-feature-visual {
  position: relative;
  border-radius: 22px;
  border: 1px solid var(--m-border);
  background:
    radial-gradient(60% 80% at 50% 0%, var(--m-accent-soft), transparent 70%),
    var(--m-card);
  padding: 2.5rem;
  min-height: 280px;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}
.m-feature-visual::after {
  content: "";
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(var(--m-grid-color) 1px, transparent 1px),
    linear-gradient(90deg, var(--m-grid-color) 1px, transparent 1px);
  background-size: 28px 28px;
  mask-image: radial-gradient(ellipse 80% 60% at 50% 50%, black 30%, transparent 80%);
  -webkit-mask-image: radial-gradient(ellipse 80% 60% at 50% 50%, black 30%, transparent 80%);
  pointer-events: none;
}
.m-feature-visual > * { position: relative; z-index: 1; }
.m-feature-icon-xl {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 96px;
  height: 96px;
  border-radius: 24px;
  background: linear-gradient(135deg, var(--m-accent), #977DFF);
  color: #ffffff;
  box-shadow: 0 30px 60px -25px var(--m-accent-glow);
}
.m-feature-icon-xl svg { width: 44px; height: 44px; }

/* ── ABOUT — TIMELINE / MILESTONES ─────────────────────────────────────── */
.m-timeline { position: relative; padding-left: 1.5rem; }
.m-timeline::before {
  content: "";
  position: absolute;
  left: 0.45rem;
  top: 0.4rem;
  bottom: 0.4rem;
  width: 1px;
  background: linear-gradient(180deg, var(--m-accent), transparent);
}
.m-timeline > li { position: relative; padding-bottom: 1.75rem; }
.m-timeline > li:last-child { padding-bottom: 0; }
.m-timeline > li::before {
  content: "";
  position: absolute;
  left: -1.5rem;
  top: 0.4rem;
  width: 11px;
  height: 11px;
  border-radius: 999px;
  background: var(--m-accent);
  box-shadow: 0 0 0 4px var(--m-accent-soft);
}

/* ── CONTACT — INTENT GRID ICON ────────────────────────────────────────── */
.m-icon-tile {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 48px;
  height: 48px;
  border-radius: 14px;
  background: var(--m-accent-soft);
  color: var(--m-accent);
}
.m-icon-tile-lg {
  width: 56px;
  height: 56px;
  border-radius: 16px;
}

/* ── DISCLAIMER CALLOUT (legal pages) ──────────────────────────────────── */
.m-callout {
  display: flex;
  align-items: flex-start;
  gap: 0.75rem;
  padding: 1rem 1.15rem;
  border-radius: 14px;
  border: 1px solid var(--m-border);
  background: var(--m-card);
  font-size: 14px;
  line-height: 1.6;
  color: var(--m-text-mute);
}
.m-callout-warn {
  border-color: rgba(245, 158, 11, 0.32);
  background: linear-gradient(180deg, rgba(245, 158, 11, 0.10), rgba(245, 158, 11, 0.04));
  color: var(--m-text);
}
.m-callout-warn .m-callout-icon { color: #d97706; }
.m-callout-icon { flex-shrink: 0; margin-top: 2px; }

/* ── UTILITIES ─────────────────────────────────────────────────────────── */
.m-text-mute { color: var(--m-text-mute); }
.m-text-soft { color: var(--m-text-soft); }
.m-border    { border-color: var(--m-border); }

/* Override admin/global body bg from brand_identity inside marketing layout */
body.m-body {
  background: var(--m-bg) !important;
  color: var(--m-text) !important;
  font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif !important;
}

/* Smooth scroll when jumping to in-page anchors */
html { scroll-behavior: smooth; scroll-padding-top: 84px; }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
}

/* Turbo page transitions */
html.m-turbo-leave .m-shell { opacity: 0.6; transition: opacity 120ms ease; }
