/* exam-intro page styles — V7 (migrated from the view inline <style> block).
   Loaded for BOTH themes; Nova themes it via the token shim + pages.css. */

/* View-scoped (exam-intro): sticky mobile CTA + action-card pulse.
     (worklog Task 6: these two helpers ship view-scoped on purpose.) */
  .mx-sticky-cta {
    position: fixed; inset-inline: 10px; bottom: calc(var(--dock-h) + 8px); z-index: 60;
    display: flex; align-items: center; justify-content: space-between; gap: 10px;
    padding: 9px 12px; border-radius: var(--r-md);
    background: var(--glass); border: 1px solid var(--line-strong);
    -webkit-backdrop-filter: blur(14px) saturate(1.4); backdrop-filter: blur(14px) saturate(1.4);
    box-shadow: var(--e3);
  }
  @media (min-width: 1024px) { .mx-sticky-cta { inset-inline: auto; width: min(30rem, calc(100vw - 2rem)); } }
  .mx-sticky-inner { display: grid; min-width: 0; }
  .mx-sticky-title { font-size: .78rem; font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .mx-sticky-price { font-size: .8rem; font-weight: 800; color: var(--gold-ink); font-variant-numeric: tabular-nums; }
  @keyframes mx-cta-pulse {
    0%, 100% { box-shadow: var(--e1); }
    50% { box-shadow: 0 0 0 6px var(--gold-soft), var(--e3); }
  }
  .mx-cta-pulse { animation: mx-cta-pulse .9s var(--e-out) 2; }

/* ---- V7 320px contract: post-purchase steps must shrink, never overflow ---- */
.mx-steps { flex-wrap: wrap; row-gap: 8px; }
.mx-step { flex: 1 1 auto; min-width: 0; }
.mx-step-label { white-space: nowrap; }
.mx-step-line { flex: 1 1 12px; min-width: 12px; }
