/* =============================================================================
   rhq_marketing.css — scoped visual system for the PUBLIC marketing page
   -----------------------------------------------------------------------------
   Loaded ONLY for logged-out users (guarded by {% if not role %} in
   home/index.html). Everything is scoped under the `.mk` root wrapper so it
   cannot touch the logged-in dashboard or any other page.

   Builds on rhq_tokens.css (loaded globally in shared/_layout.html) and reuses
   the existing global Metropolis @font-face (weights 100-800, declared in
   styles.css) via var(--rhq-font) — no font is re-declared here.

   Design language: "operations dark". Full spec:
   docs/superpowers/specs/2026-06-24-landing-page-design.md

   SCOPE OF THIS FILE: foundation only — tokens + base components. Section
   layouts (hero composite, pillars, showcases, mobile band, role cards, FAQ,
   etc.) are added by their own build tasks (Phase 2+), each prefixed `mk-`.
   ============================================================================= */

:root {
  /* ---- marketing tokens (spec §3) — declared at :root, not .mk, so the
     page-scoped layout overrides below (page-header / footer, which live
     OUTSIDE .mk) can also consume them. Safe: this sheet loads only for
     logged-out visitors, so :root here cannot affect the dashboard. ---- */
  --mk-ground:        #0b1220;
  --mk-ground-deep:   #070b14;
  --mk-surface:       #121d33;
  --mk-surface-raised:#16223d;
  --mk-line:          #22304f;
  --mk-line-strong:   #33456b;                      /* ghost-button hover border */
  --mk-primary:       var(--rhq-color-primary, #0061f2);
  --mk-primary-700:   var(--rhq-color-primary-700, #004dbf);
  --mk-primary-glow:  rgba(0, 97, 242, 0.35);
  --mk-primary-tint:  rgba(0, 97, 242, 0.12);       /* pillar icon background */
  --mk-panel-rim:     rgba(0, 97, 242, 0.10);       /* lit-panel hairline rim */
  --mk-signal:        #ffc400;                       /* LIVE only */
  --mk-ok:            var(--rhq-status-ok, #00ac69);
  --mk-alert:         var(--rhq-status-critical, #e81500);
  --mk-warn:          var(--rhq-status-warning, #f4a100);
  --mk-text:          #e8edf6;
  --mk-text-muted:    #9aa7bd;
  --mk-text-faint:    #6b7894;                       /* large/decorative only */
  --mk-lede-ink:      #c7d0e0;

  --mk-mono:          ui-monospace, "SF Mono", "JetBrains Mono", Menlo, Consolas, monospace;
  --mk-container:     var(--rhq-container-max, 1240px);
  --mk-gutter:        1.75rem;
  --mk-radius:        14px;
  --mk-section-y:     clamp(3.5rem, 7vw, 6.5rem);
  --mk-section-y-tight: clamp(2rem, 4vw, 3rem);
  --mk-ground-radial: radial-gradient(120% 90% at 70% -10%,
                      #11203a 0%, var(--mk-ground) 45%, var(--mk-ground-deep) 100%);
}

.mk {
  /* Marketing wrapper. The operations-dark ground is painted on the page shell
     (.rhq-page-header) in the layout-integration section below, so the hero and
     every later section share one seamless ground. */
  font-family: var(--rhq-font);
  color: var(--mk-text);
  text-align: left;
  -webkit-font-smoothing: antialiased;
}
.mk * { box-sizing: border-box; }

/* ---- layout primitives -------------------------------------------------- */
.mk .mk-wrap        { max-width: var(--mk-container); margin-inline: auto; padding-inline: var(--mk-gutter); }
.mk .mk-section     { padding-block: var(--mk-section-y); }
.mk .mk-section-tight { padding-block: var(--mk-section-y-tight); }
.mk .mk-section--deep { background: var(--mk-ground-deep); }

/* ---- eyebrow readout (the signature) ----------------------------------- */
.mk .mk-eyebrow {
  display: inline-flex; align-items: center; gap: .6rem; margin: 0 0 1.4rem;
  font-family: var(--mk-mono); font-size: .72rem; font-weight: 500;
  letter-spacing: .14em; text-transform: uppercase; color: var(--mk-text-muted);
}
.mk .mk-eyebrow__dot { width: 8px; height: 8px; border-radius: 50%; background: var(--mk-ok); flex: 0 0 auto; }
.mk .mk-eyebrow__ctx { color: var(--mk-text-faint); }
.mk .mk-eyebrow--live .mk-eyebrow__dot {
  background: var(--mk-signal);
  box-shadow: 0 0 0 0 rgba(255, 196, 0, .6);
  animation: mk-pulse 2s ease-out infinite;
}

/* ---- type --------------------------------------------------------------- */
.mk .mk-headline {
  margin: 0 0 1.3rem; font-weight: 800; line-height: 1.05; letter-spacing: -.02em;
  font-size: clamp(1.95rem, 5vw, 3.6rem); overflow-wrap: break-word; text-wrap: balance;
  color: var(--mk-text);   /* override the global h1{color:#323f52} ink rule (styles.css) */
}
.mk .mk-h2 {
  margin: 0 0 1rem; font-weight: 700; line-height: 1.1; letter-spacing: -.015em;
  font-size: clamp(1.7rem, 3.5vw, 2.6rem); text-wrap: balance;
  color: var(--mk-text);   /* override the global h2{color:#323f52} ink rule (styles.css) */
}
.mk .mk-lede {
  margin: 0 0 2rem; font-weight: 400; line-height: 1.55; color: var(--mk-lede-ink);
  font-size: clamp(1.05rem, 1.5vw, 1.28rem);
}

/* ---- buttons ------------------------------------------------------------ */
.mk .mk-btn {
  display: inline-flex; align-items: center; gap: .5rem; border: 0; border-radius: 999px;
  padding: .82rem 1.55rem; font-weight: 600; font-size: .98rem; text-decoration: none;
  cursor: pointer; transition: transform .15s ease, background .15s ease, box-shadow .15s ease;
}
.mk .mk-btn:focus-visible { outline: 3px solid var(--mk-signal); outline-offset: 2px; }
.mk .mk-btn-primary { background: var(--mk-primary); color: #fff; box-shadow: 0 8px 24px -8px var(--mk-primary-glow); }
.mk .mk-btn-primary:hover { background: var(--mk-primary-700); transform: translateY(-1px); }
.mk .mk-btn-ghost { background: transparent; color: var(--mk-text); border: 1px solid var(--mk-line); padding: .78rem 1.4rem; }
.mk .mk-btn-ghost:hover { border-color: var(--mk-line-strong); background: var(--mk-surface); }
.mk .mk-btn-sm { padding: .55rem 1.1rem; font-size: .9rem; }

/* ---- chip (mono data pill) --------------------------------------------- */
.mk .mk-chip {
  display: inline-flex; align-items: center; gap: .45rem; font-family: var(--mk-mono);
  font-size: .72rem; letter-spacing: .08em; text-transform: uppercase; color: var(--mk-text-muted);
  border: 1px solid var(--mk-line); border-radius: 999px; padding: .3rem .7rem;
}

/* ---- card (surface primitive; pillars/roles/faq build on this) ---------- */
.mk .mk-card {
  background: var(--mk-surface); border: 1px solid var(--mk-line);
  border-radius: var(--mk-radius); padding: clamp(1.5rem, 2.5vw, 2rem);
}

/* ---- panel (lit screenshot frame) -------------------------------------- */
.mk .mk-panel {
  display: block; width: 100%; height: auto; border-radius: var(--mk-radius);
  border: 1px solid var(--mk-line);
  box-shadow: 0 28px 70px -24px rgba(0, 0, 0, .8),
              0 0 0 1px var(--mk-panel-rim),
              0 18px 60px -30px var(--mk-primary-glow);
}

/* ---- motion ------------------------------------------------------------- */
@keyframes mk-pulse {
  0%   { box-shadow: 0 0 0 0   rgba(255, 196, 0, .55); }
  70%  { box-shadow: 0 0 0 9px rgba(255, 196, 0, 0); }
  100% { box-shadow: 0 0 0 0   rgba(255, 196, 0, 0); }
}
@media (prefers-reduced-motion: reduce) {
  .mk * { animation: none !important; transition: none !important; }
  .mk [data-aos] { opacity: 1 !important; transform: none !important; }
}

/* ===========================================================================
   PAGE-SCOPED LAYOUT INTEGRATION — overrides shared layout chrome.
   OUTSIDE .mk by necessity (these elements wrap/sit beside .mk). SAFE: this
   sheet loads ONLY for logged-out visitors on home/index (role-guarded in the
   template), so it cannot reach the dashboard or any other page.
   =========================================================================== */

/* Neutralise the page-header's brand-blue gradient → operations-dark ground.
   .mk renders inside this header, so the whole hero shares one ground and the
   transparent fixed navbar floats over it. */
/* The extra .page-header qualifier keeps specificity above the app-wide
   rhq_dark_chrome.css rule (.rhq-page-header, flat navy) which loads AFTER this
   sheet — so the landing keeps its richer radial ground instead of going flat. */
.rhq-page-header.page-header { background: var(--mk-ground-radial) !important; }

/* Keep the navbar in its default transparent load state while scrolling. The
   shared theme (scripts.js) adds .navbar-scrolled once you leave the top, which
   fills the bar solid (#1f2d41); on this landing page we want it to keep
   floating over the hero ground. Desktop only — below 992px the shared sheet
   intentionally keeps the bar solid for the hamburger menu, so leave that be.
   The extra .navbar/.bg-transparent qualifiers raise specificity above the
   shared styles.css rule (same 3-class selector, also !important) which loads
   AFTER this sheet and would otherwise win the tie on source order. */
@media (min-width: 992px) {
  .navbar.navbar-marketing.bg-transparent.navbar-dark.navbar-scrolled { background-color: transparent !important; }
}

/* Marketing footer → dark + cohesive (shared default is bg-white footer-light). */
#layoutDefault_footer .footer-light {
  background: var(--mk-ground-deep) !important;
  border-top: 1px solid var(--mk-line);
}
#layoutDefault_footer .footer-light,
#layoutDefault_footer .footer-light a,
#layoutDefault_footer .footer-light .text-blue { color: var(--mk-text-muted) !important; }
#layoutDefault_footer .footer-light a:hover { color: var(--mk-text) !important; }

/* ===========================================================================
   HERO (Task 4)
   =========================================================================== */
.mk .mk-hero { padding-block: clamp(0.5rem, 2vw, 1.5rem) clamp(3.5rem, 7vw, 6rem); }
.mk .mk-hero-grid {
  display: grid; grid-template-columns: 1fr 1fr;
  gap: clamp(2rem, 4vw, 4rem); align-items: center;
}
.mk .mk-hero-cta { display: flex; align-items: center; gap: 1rem; flex-wrap: wrap; margin-bottom: 2.2rem; }
.mk .mk-hero-tour {
  display: inline-flex; align-items: center; gap: .4rem;
  color: var(--mk-text-muted); text-decoration: none; font-weight: 500; font-size: .98rem;
}
.mk .mk-hero-tour:hover { color: var(--mk-text); }
.mk .mk-hero-tour:focus-visible { outline: 3px solid var(--mk-signal); outline-offset: 2px; border-radius: 4px; }

.mk .mk-sectors {
  list-style: none; display: flex; flex-wrap: wrap; gap: .5rem .9rem; padding: 0; margin: 0;
  font-family: var(--mk-mono); font-size: .72rem; letter-spacing: .08em;
  text-transform: uppercase; color: var(--mk-text-muted);
}
.mk .mk-sectors li { display: flex; align-items: center; }
.mk .mk-sectors li:not(:last-child)::after { content: "·"; color: var(--mk-line-strong); margin-left: .9rem; }

.mk .mk-hero-composite { position: relative; max-width: min(640px, 100%); }
.mk .mk-hero-screen { width: 100%; }            /* .mk-panel supplies the frame + glow */
.mk .mk-hero-phone {
  position: absolute; right: -.5rem; bottom: -1.25rem; width: 32%; max-width: 200px; height: auto;
  border-radius: 18px; filter: drop-shadow(0 24px 40px rgba(0, 0, 0, .6));
}

@media (max-width: 860px) {
  .mk .mk-hero-grid { grid-template-columns: 1fr; gap: 2.5rem; }
  .mk .mk-hero-composite { margin-inline: auto; }
  .mk .mk-hero-phone { width: 34%; max-width: 150px; right: 0; bottom: -1rem; }
}

/* ===== SECTION: Trust strip (Task 5) ===== */

.mk .mk-trust {
  text-align: center;
  border-top: 1px solid var(--mk-line);
}

.mk .mk-trust-line {
  max-width: 46ch;
  margin-inline: auto;
  margin-bottom: 0;
  color: var(--mk-lede-ink);
  font-size: clamp(1.2rem, 1.9vw, 1.5rem);
  line-height: 1.4;
  font-weight: 500;
  letter-spacing: -.01em;
  text-wrap: balance;
}

.mk .mk-logos {
  display: flex;
  justify-content: center;
  align-items: center;
  flex-wrap: wrap;
  gap: 2.75rem;
  margin-top: 2rem;
}

.mk .mk-logos:empty {
  display: none;
}

.mk .mk-logo {
  max-height: 40px;
  width: auto;
  opacity: .6;
  filter: grayscale(1);
  transition: opacity .2s ease, filter .2s ease;
}

.mk .mk-logo:hover {
  opacity: 1;
  filter: none;
}

/* ===== SECTION: Three pillars (Task 6) ===== */

.mk .mk-pillars {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.5rem;
  margin-top: 2rem;
}

@media (max-width: 860px) {
  .mk .mk-pillars {
    grid-template-columns: 1fr;
  }
}

.mk .mk-pillar {
  padding: 1.9rem;
}

/* Tactile lift on the informational feature/role cards (calm, no bounce). */
.mk .mk-pillar,
.mk .mk-role {
  transition: border-color .18s ease, background-color .18s ease, transform .18s ease;
}
.mk .mk-pillar:hover,
.mk .mk-role:hover {
  border-color: var(--mk-line-strong);
  background: var(--mk-surface-raised);
  transform: translateY(-3px);
}

.mk .mk-pillar-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 54px;
  height: 54px;
  border-radius: 13px;
  background: var(--mk-primary-tint);
  color: var(--mk-primary);
  font-size: 1.4rem;
  margin-bottom: 1.4rem;
  box-shadow: inset 0 0 0 1px var(--mk-panel-rim), 0 10px 26px -12px var(--mk-primary-glow);
}

.mk .mk-pillar-title {
  font-size: 1.3rem;
  font-weight: 700;
  color: var(--mk-text);
  line-height: 1.3;
  margin: 0 0 .75rem;
}

.mk .mk-pillar-body {
  font-size: 1rem;
  color: var(--mk-text-muted);
  line-height: 1.55;
  margin: 0;
}

/* ===== SECTION: Showcase system + A (Task 7) ===== */

/*
 * .mk-showcase-grid — two-column alternating image+copy layout.
 * Column split: 5fr / 7fr (image narrower than copy at desktop) — chosen because
 * the portrait phone asset is narrow; giving copy more breathing room looks
 * intentional rather than awkward. A future wide map asset will fill the 5fr
 * column comfortably (the img then has no max-width cap and fills the cell).
 *
 * Reverse (.mk-showcase--reverse): achieved via `order` on the grid children.
 * The source order always stays media-first so mobile stacks image-then-copy
 * consistently across A, B and C (no order flip at mobile breakpoint needed).
 *
 * Mobile (≤860px): collapses to a single column, gap 2.5rem.
 * Stack order: image first, copy below — same across normal and reversed variants.
 */

.mk .mk-showcase-grid {
  display: grid;
  grid-template-columns: 7fr 6fr;   /* media-favoured — product screenshots are hero assets */
  gap: clamp(2rem, 5vw, 4.5rem);
  align-items: center;
}

/* Reversed variant: push media column to the right */
.mk .mk-showcase--reverse .mk-showcase-grid .mk-showcase-media {
  order: 2;
}
.mk .mk-showcase--reverse .mk-showcase-grid .mk-showcase-copy {
  order: 1;
}
/* Keep the image (media) the wider column in the reversed variant too */
.mk .mk-showcase--reverse .mk-showcase-grid {
  grid-template-columns: 6fr 7fr;
}

@media (max-width: 860px) {
  .mk .mk-showcase-grid,
  .mk .mk-showcase--reverse .mk-showcase-grid {
    grid-template-columns: 1fr;
    gap: 2.5rem;
  }

  /* At mobile, source order (media first) is always preserved regardless of --reverse */
  .mk .mk-showcase--reverse .mk-showcase-grid .mk-showcase-media,
  .mk .mk-showcase--reverse .mk-showcase-grid .mk-showcase-copy {
    order: unset;
  }
}

/* Media column — centres its img (important for portrait phone in a wider column) */
.mk .mk-showcase-media {
  display: flex;
  align-items: center;
  justify-content: center;
}

/*
 * Showcase image — wide images fill their column by default.
 * Only the portrait phone variant (Showcase A) gets a max-width cap via
 * .mk-showcase--portrait, applied to that section's <section> element.
 */
.mk .mk-showcase-img {
  width: 100%;
  max-width: 100%;
  height: auto;
  display: block;
}

/* Portrait modifier — caps and centres the phone image in Showcase A */
.mk .mk-showcase--portrait .mk-showcase-img {
  max-width: 400px;
  margin-inline: auto;
}

/* Hug the media column to the portrait phone so it doesn't float in a wide
   cell (the 7fr media column is sized for the future wide desktop map). */
.mk .mk-showcase--portrait .mk-showcase-grid {
  grid-template-columns: minmax(0, 420px) 1fr;
}
@media (max-width: 860px) {
  .mk .mk-showcase--portrait .mk-showcase-grid { grid-template-columns: 1fr; }
}

/* Feature bullet list */
.mk .mk-feature-list {
  list-style: none;
  padding: 0;
  margin: 1.5rem 0 0;
  display: grid;
  gap: .7rem;
}

.mk .mk-feature-list li {
  display: flex;
  gap: .6rem;
  align-items: flex-start;
  color: var(--mk-text);
  font-size: 1rem;
  line-height: 1.45;
}

.mk .mk-feature-list li i {
  color: var(--mk-ok);
  font-size: .95rem;
  flex-shrink: 0;
  margin-top: .2rem; /* align icon baseline with first text line */
}

.mk .mk-feature-list li span {
  color: var(--mk-text-muted);
}

/* ===== SECTION: Showcase B (Task 8) ===== */

/*
 * Showcase B uses the reversed variant (.mk-showcase--reverse) — copy left,
 * image right at desktop. The asset is a wide landscape grid (roster-grid.webp,
 * ~3712×1690). Since the base .mk-showcase-img rule now defaults to max-width:100%,
 * no override is needed here. The --reverse class controls column ORDER only
 * (see layout rules above).
 *
 * Column split note: the 5fr/7fr split from Showcase A is preserved unchanged
 * for --reverse. With copy on the left (5fr) and the wide landscape image on
 * the right (7fr), the image column is actually larger, giving the grid room
 * to breathe — this reads as intentional, not arbitrary.
 */

/* ===== SECTION: Showcase C (Task 9) ===== */

/*
 * Showcase C is the NON-reversed variant (image left, copy right — same side as A)
 * but carries a wide landscape table image (roster-table.webp, ~3342×1730).
 * Since the base .mk-showcase-img rule now defaults to max-width:100%, the
 * former .mk-showcase--wide override is no longer needed. The --wide class has
 * been removed from the <section> in index.html.
 */

/* ===== SECTION: Mobile & telemetry band (Task 10) ===== */

/*
 * Deep-ground punctuation band — one of only two sections that use
 * --mk-ground-deep (the other is the final CTA). The centred header +
 * phone trio + badges + provider line form a self-contained "field" beat.
 *
 * Phone trio: three portrait screenshots in a flex row, centred and aligned
 * to the bottom so the raised centre phone reads as a deliberate compositional
 * choice. Max-width per phone is capped at 190px so they read as phones rather
 * than stretched panels. Shadow is a plain drop-shadow (no blue rim glow — that
 * treatment is for landscape display panels only). Border-radius 22px matches
 * a realistic phone corner.
 *
 * Provider line (.mk-providers): same mono/uppercase/tracked style as
 * .mk-sectors, but rendered as a <p> (not a list) since the content is a
 * simple joined string.
 */

.mk .mk-mobile {
  text-align: center;
}

.mk .mk-mobile-header {
  max-width: 680px;
  margin-inline: auto;
  margin-bottom: clamp(2.5rem, 5vw, 4rem);
}

.mk .mk-mobile-header .mk-eyebrow {
  justify-content: center;
}

.mk .mk-mobile-header .mk-h2 {
  margin-top: .75rem;
  margin-bottom: 1rem;
}

.mk .mk-phone-trio {
  display: flex;
  justify-content: center;
  align-items: flex-end;
  gap: clamp(1rem, 3vw, 2rem);
  margin-bottom: clamp(2rem, 4vw, 3rem);
}

.mk .mk-phone {
  width: 100%;
  max-width: 230px;
  height: auto;
  border-radius: 22px;
  display: block;
  filter: drop-shadow(0 20px 36px rgba(0, 0, 0, .55));
  min-width: 0;
}

/* Centre phone sits slightly higher for a real compositional beat */
.mk .mk-phone--raised {
  transform: translateY(-1.5rem);
}

.mk .mk-store-badges {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 1rem;
  margin-bottom: 1.25rem;
}

.mk .mk-store-badges img {
  height: 44px;
  width: auto;
  display: block;
}

.mk .mk-providers {
  font-family: var(--mk-mono);
  font-size: .72rem;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--mk-text-muted);
  margin: 0;
}

@media (max-width: 860px) {
  .mk .mk-phone-trio {
    gap: .75rem;
  }

  .mk .mk-phone {
    max-width: 28vw;
  }

  .mk .mk-phone--raised {
    transform: translateY(-1rem);
  }
}

@media (max-width: 480px) {
  /* At narrow widths, show a centred single phone + partial neighbours */
  .mk .mk-phone-trio {
    gap: .5rem;
  }

  .mk .mk-phone {
    max-width: 38vw;
  }

  .mk .mk-phone--raised {
    transform: translateY(-.75rem);
  }
}

/* ===== SECTION: Role cards (Task 11) ===== */

.mk .mk-roles {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.5rem;
  align-items: stretch;
  margin-top: 2rem;
}

.mk .mk-role {
  /* builds on .mk-card; content is top-aligned, natural uneven height is correct */
  display: flex;
  flex-direction: column;
  align-items: flex-start;
}

.mk .mk-role-title {
  font-weight: 700;
  font-size: 1.05rem;
  text-transform: uppercase;
  letter-spacing: .08em;
  color: var(--mk-text);
  margin: 0 0 1.1rem;
  padding-bottom: .85rem;
  width: 100%;
  border-bottom: 1px solid var(--mk-line);
}

.mk .mk-role-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  gap: .55rem;
}

.mk .mk-role-list li {
  color: var(--mk-text-muted);
  font-size: .9rem;
  line-height: 1.45;
  padding-left: 1.1em;
  position: relative;
}

.mk .mk-role-list li::before {
  content: "–";
  position: absolute;
  left: 0;
  color: var(--mk-text-muted);
  font-weight: 400;
}

.mk .mk-roles-note {
  margin-top: 1.5rem;
  font-size: .875rem;
  color: var(--mk-text-muted);
  max-width: 56ch;
}

@media (max-width: 860px) {
  .mk .mk-roles {
    grid-template-columns: 1fr;
  }
}

/* ===== SECTION: Social proof (Task 12) ===== */

.mk .mk-quote {
  max-width: 64ch;
  margin-inline: auto;
  background: var(--mk-surface);
  border: 1px solid var(--mk-line);
  border-radius: var(--mk-radius);
  padding: clamp(2rem, 4vw, 3rem);
  position: relative;
}

.mk .mk-quote::before {
  content: "\201C";
  position: absolute;
  top: .75rem;
  left: 1.5rem;
  font-size: 5rem;
  line-height: 1;
  color: var(--mk-line-strong);
  font-family: Georgia, serif;
  pointer-events: none;
  user-select: none;
}

.mk .mk-quote-text {
  font-size: clamp(1.1rem, 2.5vw, 1.35rem);
  font-weight: 500;
  line-height: 1.55;
  color: var(--mk-text);
  margin: 1.5rem 0 0;
  padding: 0;
}

.mk .mk-quote-cite {
  display: flex;
  align-items: center;
  gap: .7rem;
  margin-top: 1.5rem;
  font-size: .875rem;
  font-family: var(--mk-mono);
  font-style: normal;
  color: var(--mk-text-muted);
  letter-spacing: .03em;
}

/* attribution rule (replaces the old em-dash, which is banned) */
.mk .mk-quote-cite::before {
  content: "";
  flex: 0 0 auto;
  width: 1.75rem;
  height: 1px;
  background: var(--mk-line-strong);
}

/* ===== SECTION: FAQ (Task 13) ===== */

.mk .mk-faq {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  column-gap: 2rem;
  row-gap: .75rem;
  margin-top: 2rem;
}

.mk .mk-faq-item {
  border-bottom: 1px solid var(--mk-line);
  padding: .85rem .65rem;
  margin-inline: -.65rem;   /* keeps text flush-aligned; hover surface bleeds outward */
  border-radius: 9px;
  transition: background-color .15s ease;
}

.mk .mk-faq-item:hover {
  background: var(--mk-surface);
}

.mk .mk-faq-item[open] {
  border-bottom-color: var(--mk-line-strong);
}

.mk .mk-faq-q {
  font-weight: 600;
  font-size: .975rem;
  color: var(--mk-text);
  cursor: pointer;
  list-style: none;
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: .75rem;
  line-height: 1.45;
}

.mk .mk-faq-q::-webkit-details-marker {
  display: none;
}

.mk .mk-faq-q::after {
  content: "›";
  display: inline-block;
  flex-shrink: 0;
  font-size: 1.1rem;
  color: var(--mk-text-muted);
  transform: rotate(90deg);
  transition: transform .2s ease, color .15s ease;
}

.mk .mk-faq-q:hover::after,
.mk .mk-faq-item[open] .mk-faq-q::after {
  color: var(--mk-primary);
}

.mk .mk-faq-item[open] .mk-faq-q::after {
  transform: rotate(270deg);
}

.mk .mk-faq-q:focus-visible {
  outline: 3px solid var(--mk-signal);
  outline-offset: 2px;
  border-radius: 2px;
}

.mk .mk-faq-a {
  font-size: .925rem;
  color: var(--mk-text-muted);
  line-height: 1.55;
  margin: .6rem 0 0;
  padding: 0;
}

@media (max-width: 860px) {
  .mk .mk-faq {
    grid-template-columns: 1fr;
  }
}

/* ===== SECTION: Final CTA (Task 14) ===== */

.mk .mk-final-inner {
  text-align: center;
  max-width: 58ch;
  margin-inline: auto;
}

.mk .mk-final-inner .mk-headline {
  margin-bottom: 1rem;
}

.mk .mk-final-inner .mk-lede {
  margin-bottom: 2rem;
}

/* ===== SECTION: Mission band (full-bleed field photo) ===== */
/*
 * A full-width photographic "this is who it's for" beat, sitting between the
 * field/telemetry band and the role cards. The <img> is a swap-in slot (a real
 * bush-fire crew photo, mission-field.webp; object-position keeps faces in frame).
 * A bottom-weighted scrim keeps the overlay headline legible over any photo.
 * Not a `mk-section--deep` band — it's a distinct full-bleed photo, so it
 * doesn't compete with the two deep punctuation bands.
 */
.mk .mk-mission {
  position: relative;
  isolation: isolate;
}
.mk .mk-mission-photo {
  display: block;
  width: 100%;
  height: clamp(360px, 52vh, 560px);
  object-fit: cover;
  /* Anchor to the top so the crew's heads stay in frame; cover crops from the
     bottom (the scrim sits there anyway), not through the faces. */
  object-position: center top;
}
.mk .mk-mission-overlay {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: flex-end;
  /* scrim: darken toward the bottom for headline legibility; faint top blend */
  background: linear-gradient(to top,
              rgba(7, 11, 20, .88) 0%,
              rgba(7, 11, 20, .50) 38%,
              rgba(7, 11, 20, .12) 72%,
              rgba(7, 11, 20, .34) 100%);
}
.mk .mk-mission-overlay .mk-wrap {
  width: 100%;
  padding-block: clamp(2rem, 4vw, 3.5rem);
}
.mk .mk-mission-title {
  margin: .4rem 0 .6rem;
  max-width: 16ch;
}
.mk .mk-mission-lede {
  margin: 0;
  max-width: 52ch;
  color: var(--mk-lede-ink);
  font-size: clamp(1.05rem, 1.5vw, 1.25rem);
  line-height: 1.5;
}

/* ===========================================================================
   REQUEST-A-DEMO — public conversion page (home/request_demo.html)
   Two-column split echoing the hero: pitch copy left, form card right.
   Reuses .mk-card / .mk-feature-list / .mk-btn-primary so the demo page is the
   cohesive destination of the landing-page funnel rather than a white card.
   =========================================================================== */
/* Centre the pitch+form in the viewport so the page reads as a composed beat
   rather than top-loaded content floating above a gap. (navbar is 92px fixed.) */
.mk .mk-demo {
  display: flex;
  flex-direction: column;
  justify-content: center;
  min-height: calc(100vh - 92px);
  padding-block: clamp(2rem, 5vw, 4rem);
}

.mk .mk-demo-grid {
  display: grid;
  grid-template-columns: 5fr 6fr;
  gap: clamp(2rem, 5vw, 4.5rem);
  align-items: start;
}
@media (max-width: 860px) {
  .mk .mk-demo-grid { grid-template-columns: 1fr; gap: 2.75rem; }
}

.mk .mk-demo-lede { max-width: 54ch; }
.mk .mk-demo-lede p {
  margin: 0 0 1.1rem;
  color: var(--mk-lede-ink);
  font-size: 1.06rem;
  line-height: 1.6;
}
.mk .mk-demo-lede strong { color: var(--mk-text); font-weight: 700; }
.mk .mk-demo-lede em { color: var(--mk-text); font-style: italic; }
.mk .mk-demo-copy .mk-feature-list { margin-top: 1.75rem; }

/* form card (builds on .mk-card) — lifted off the ground like a console panel:
   slightly raised surface + soft shadow + faint blue rim (cf. .mk-panel). */
.mk .mk-form-card {
  padding: clamp(1.5rem, 3vw, 2.25rem);
  background: var(--mk-surface-raised);
  box-shadow: 0 28px 64px -30px rgba(0, 0, 0, .85), 0 0 0 1px var(--mk-panel-rim);
}
.mk .mk-form { display: grid; gap: 1.1rem; }
.mk .mk-form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 1.1rem; }
@media (max-width: 520px) { .mk .mk-form-row { grid-template-columns: 1fr; } }

.mk .mk-field { display: grid; gap: .4rem; }
.mk .mk-label {
  font-size: .82rem; font-weight: 600; color: var(--mk-text); letter-spacing: .01em;
}
.mk .mk-req { color: var(--mk-alert); margin-left: .15em; }

.mk .mk-input,
.mk .mk-textarea {
  width: 100%; font: inherit; font-size: .95rem; color: var(--mk-text);
  background: var(--mk-ground-deep);
  border: 1px solid var(--mk-line);
  border-radius: 10px;
  padding: .72rem .85rem;
  transition: border-color .15s ease, box-shadow .15s ease;
}
.mk .mk-input::placeholder,
.mk .mk-textarea::placeholder { color: var(--mk-text-muted); }
.mk .mk-input:hover,
.mk .mk-textarea:hover { border-color: var(--mk-line-strong); }
.mk .mk-input:focus,
.mk .mk-textarea:focus {
  outline: none;
  border-color: var(--mk-primary);
  box-shadow: 0 0 0 3px var(--mk-primary-tint);
}
.mk .mk-input:focus-visible,
.mk .mk-textarea:focus-visible { outline: 2px solid var(--mk-primary); outline-offset: 1px; }
.mk .mk-textarea { resize: vertical; min-height: 116px; }

.mk .mk-form .mk-btn-primary { width: 100%; justify-content: center; margin-top: .3rem; }
.mk .mk-form-note { margin: .1rem 0 0; font-size: .85rem; color: var(--mk-text-muted); }
.mk .mk-form-note a { color: var(--mk-text); text-decoration: underline; }
.mk .mk-form-note a:hover { color: var(--mk-primary); }

/* ===========================================================================
   MOTION LAYER — live-operations (2026-06-25). See spec
   docs/superpowers/specs/2026-06-25-landing-motion-design.md
   =========================================================================== */

/* ---- ambient aurora drift (behind hero) -------------------------------- */
@keyframes mk-aurora {
  0%   { transform: translate(0, 0) scale(1); }
  100% { transform: translate(4%, 3%) scale(1.06); }
}
.mk .mk-hero { position: relative; isolation: isolate; }
.mk .mk-aurora {
  position: absolute; inset: -20% 0 auto 0; height: 80%; z-index: -1;
  pointer-events: none;
  background: radial-gradient(50% 60% at 60% 20%, rgba(0, 97, 242, .22), transparent 70%);
  filter: blur(8px);
  animation: mk-aurora 22s ease-in-out infinite alternate;
}

/* ---- scroll "settle" reveal (showcase media) --------------------------- */
.mk .mk-reveal--settle {
  opacity: 0; transform: translateY(12px) scale(.97);
  transition: opacity .6s ease, transform .6s cubic-bezier(.16, 1, .3, 1);
  will-change: opacity, transform;
}
.mk .mk-reveal--settle.is-in { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) {
  .mk .mk-reveal--settle { opacity: 1 !important; transform: none !important; }
}

/* ---- magnetic primary CTA press state ---------------------------------- */
.mk .mk-btn-primary:active { transform: scale(.98); }

/* ---- card rim-light on hover (layers over the existing lift) ------------ */
.mk .mk-tilt { transition: border-color .18s ease, background-color .18s ease,
                           box-shadow .18s ease, transform .18s ease; }
.mk .mk-tilt:hover {
  box-shadow: inset 0 0 0 1px var(--mk-panel-rim),
              0 18px 40px -22px var(--mk-primary-glow);
}

/* ---- showcase image sheen on hover ------------------------------------- */
@keyframes mk-sheen {
  0%   { transform: translateX(-120%) skewX(-18deg); }
  100% { transform: translateX(220%)  skewX(-18deg); }
}
.mk .mk-showcase-media {
  position: relative; overflow: hidden; border-radius: var(--mk-radius);
  /* float-glow moved here from the inner .mk-panel: an element's own box-shadow
     survives its own overflow:hidden, so the sheen clips but the glow stays. */
  box-shadow: 0 28px 70px -24px rgba(0, 0, 0, .8),
              0 0 0 1px var(--mk-panel-rim),
              0 18px 60px -30px var(--mk-primary-glow);
}
.mk .mk-showcase-media::after {
  content: ""; position: absolute; inset: 0; pointer-events: none; z-index: 2;
  background: linear-gradient(100deg, transparent 30%, rgba(255, 255, 255, .10) 50%, transparent 70%);
  transform: translateX(-120%) skewX(-18deg); opacity: 0;
}
.mk .mk-showcase-media:hover::after { opacity: 1; animation: mk-sheen .8s ease-out; }

/* ---- portrait phone showcase (transparent device PNG) ------------------
   Showcase A's image is a transparent device mockup, so it gets a phone-shaped
   drop-shadow instead of the rectangular panel frame / wrapper glow / sheen
   used for the landscape screenshot panels. */
.mk .mk-showcase--portrait .mk-showcase-media {
  overflow: visible; box-shadow: none; border-radius: 0;
}
.mk .mk-showcase--portrait .mk-showcase-media::after { display: none; }
.mk .mk-showcase--portrait .mk-panel.mk-showcase-img {
  border: 0; box-shadow: none; border-radius: 0;
  filter: drop-shadow(0 26px 48px rgba(0, 0, 0, .55));
}
