/* ═══════════════════════════════════════════════════════════
   Magazine — premium editorial template for OracleBizz pillar articles.
   Uses the global tokens (--gold, --ember, --navy, --text, etc.) and
   pushes Sora's weight range hard to achieve a house-editorial feel
   without a second font load. The visual grammar is:
     1. cinematic hero with soft grain + sub-visible scroll cue
     2. sticky left-rail TOC on desktop, hidden on mobile
     3. 720px reading column, 1.78 line-height, drop cap on opener
     4. alternating dark/gold/navy section tints for rhythm
     5. pull quotes as oversized navy-gold callouts
     6. named proprietary frameworks in dedicated "mag-fx" boxes
     7. embedded diagnostic as interactive multi-step card
     8. related-reading rail as 3-column magazine grid
   All sizing scales down predictably at 960/720/480 breakpoints.
   ═══════════════════════════════════════════════════════════ */


/* ── top-level ─────────────────────────────────────────────── */
.mag { display: block; color: var(--text); background: var(--bg); position: relative; }
.mag * { box-sizing: border-box; }


/* ── hero ──────────────────────────────────────────────────── */
.mag-hero {
  position: relative;
  min-height: 88vh;
  display: flex;
  align-items: flex-end;
  padding: 96px 24px 72px;
  background-size: cover;
  background-position: center;
  background-color: #050811;
  /* Layered cinematic atmosphere used when no heroImage is supplied.
     Two soft radial gradients sit on top of a deep navy gradient to
     give depth and warmth without needing a photo. */
  background-image:
    radial-gradient(ellipse 70% 50% at 75% 15%, rgba(232, 119, 26, .12), transparent 60%),
    radial-gradient(ellipse 60% 60% at 20% 85%, rgba(22, 42, 82, .55), transparent 65%),
    linear-gradient(175deg, #020408 0%, #060d1f 40%, #0e1b3d 80%, #152647 100%);
  overflow: hidden;
}
.mag-hero-grain {
  position: absolute; inset: 0;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0  0 0 0 0 0  0 0 0 0 0  0 0 0 .35 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");
  mix-blend-mode: overlay;
  opacity: .28;
  pointer-events: none;
}
/* Subtle floating orbs that add depth. Pure decoration, no content. */
.mag-hero::before,
.mag-hero::after {
  content: "";
  position: absolute;
  border-radius: 50%;
  pointer-events: none;
  z-index: 0;
}
.mag-hero::before {
  top: -160px;
  right: -160px;
  width: 540px;
  height: 540px;
  background: radial-gradient(circle, rgba(232, 119, 26, .14), transparent 65%);
  filter: blur(40px);
}
.mag-hero::after {
  bottom: -200px;
  left: -120px;
  width: 480px;
  height: 480px;
  background: radial-gradient(circle, rgba(26, 48, 96, .6), transparent 65%);
  filter: blur(50px);
}
.mag-hero-inner {
  position: relative;
  z-index: 2;
  max-width: 1040px;
  margin: 0 auto;
  width: 100%;
}
.mag-hero-eyebrow {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: .68rem;
  font-weight: 700;
  letter-spacing: .24em;
  text-transform: uppercase;
  color: rgba(245, 240, 232, .7);
  margin-bottom: 28px;
}
.mag-hero-cat {
  color: var(--gold);
  padding: 5px 14px;
  border: 1px solid rgba(232, 119, 26, .45);
  border-radius: 999px;
  background: rgba(232, 119, 26, .08);
}
.mag-hero-dot { opacity: .4; }
.mag-hero-pub { color: rgba(245, 240, 232, .75); }

.mag-hero-title {
  font-size: clamp(2rem, 5.6vw, 4.4rem);
  line-height: 1.05;
  letter-spacing: -0.025em;
  font-weight: 700;
  color: var(--heading);
  margin: 0 0 24px;
  max-width: 22ch;
  text-wrap: balance;
  text-shadow: 0 2px 40px rgba(0, 0, 0, .5);
}
.mag-hero-sub {
  font-size: clamp(1.05rem, 1.8vw, 1.35rem);
  line-height: 1.5;
  color: rgba(245, 240, 232, .85);
  max-width: 60ch;
  font-weight: 300;
  margin: 0 0 36px;
}
.mag-hero-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  font-size: .72rem;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: rgba(245, 240, 232, .55);
  font-weight: 600;
}
.mag-hero-scroll {
  position: absolute;
  bottom: 32px;
  right: 36px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  font-size: .58rem;
  letter-spacing: .3em;
  text-transform: uppercase;
  color: rgba(245, 240, 232, .28);
  font-weight: 700;
}
@media (max-width: 720px) { .mag-hero-scroll { display: none; } }
.mag-hero-scroll-line {
  width: 1px;
  height: 42px;
  background: linear-gradient(to bottom, rgba(245, 240, 232, .4), transparent);
  animation: magScroll 2.4s ease-in-out infinite;
}
@keyframes magScroll {
  0%, 100% { transform: scaleY(1); transform-origin: top; opacity: .4; }
  50% { transform: scaleY(.3); transform-origin: top; opacity: 1; }
}


/* ── progress bar ──────────────────────────────────────────── */
.mag-progress {
  position: fixed;
  top: 0;
  left: 0;
  height: 2px;
  width: 0%;
  background: linear-gradient(90deg, var(--ember), var(--gold));
  z-index: 999;
  transition: width .1s linear;
  box-shadow: 0 0 12px rgba(232, 119, 26, .5);
}


/* ── shell / grid ──────────────────────────────────────────── */
.mag-shell {
  display: grid;
  grid-template-columns: 220px minmax(0, 1fr);
  gap: 64px;
  max-width: 1180px;
  margin: 0 auto;
  padding: 0 32px;
  position: relative;
}
@media (max-width: 960px) {
  .mag-shell { grid-template-columns: 1fr; gap: 0; padding: 0 20px; }
}


/* ── table of contents (desktop sticky rail) ───────────────── */
.mag-toc {
  padding-top: 96px;
}
.mag-toc-inner {
  position: sticky;
  top: 120px;
}
.mag-toc-eyebrow {
  font-size: .58rem;
  letter-spacing: .32em;
  text-transform: uppercase;
  color: var(--gold);
  font-weight: 700;
  margin-bottom: 22px;
  display: flex;
  align-items: center;
  gap: 10px;
}
.mag-toc-eyebrow::after {
  content: "";
  flex: 1;
  height: 1px;
  background: linear-gradient(to right, rgba(232, 119, 26, .35), transparent);
}
.mag-toc-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 2px;
  position: relative;
}
/* Vertical track behind the items */
.mag-toc-list::before {
  content: "";
  position: absolute;
  left: 12px;
  top: 8px;
  bottom: 8px;
  width: 1px;
  background: rgba(255, 255, 255, .06);
}
.mag-toc-list li {
  position: relative;
}
.mag-toc-list a {
  display: flex;
  align-items: flex-start;
  gap: 14px;
  padding: 10px 0 10px 28px;
  color: var(--text2);
  text-decoration: none;
  font-size: .84rem;
  line-height: 1.45;
  font-weight: 500;
  letter-spacing: -0.005em;
  border: none;
  transition: color .25s ease, transform .25s ease;
  position: relative;
}
/* Dot on the vertical track for each item */
.mag-toc-list a::before {
  content: "";
  position: absolute;
  left: 8px;
  top: 19px;
  width: 9px;
  height: 9px;
  border-radius: 50%;
  background: #0a1224;
  border: 1px solid rgba(255, 255, 255, .18);
  transition: all .25s ease;
}
.mag-toc-list a:hover {
  color: var(--text);
}
.mag-toc-list a:hover::before {
  border-color: rgba(232, 119, 26, .5);
}
.mag-toc-list a.is-active {
  color: var(--gold);
  font-weight: 600;
  transform: translateX(2px);
}
.mag-toc-list a.is-active::before {
  background: var(--gold);
  border-color: var(--gold);
  box-shadow: 0 0 0 3px rgba(232, 119, 26, .18);
}
@media (max-width: 960px) {
  .mag-toc { display: none; }
}


/* ── body wrap / byline / share ────────────────────────────── */
.mag-body-wrap {
  padding-top: 96px;
  padding-bottom: 80px;
}
.mag-byline {
  display: flex;
  align-items: center;
  gap: 16px;
  padding-bottom: 32px;
  margin-bottom: 48px;
  border-bottom: 1px solid rgba(255, 255, 255, .06);
  color: var(--text3);
}
.mag-byline-avatar {
  width: 48px;
  height: 48px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  border: 1px solid rgba(232, 119, 26, .3);
  color: var(--gold);
  background: rgba(232, 119, 26, .05);
}
.mag-byline-name {
  font-weight: 700;
  color: var(--heading);
  font-size: .88rem;
  margin-bottom: 2px;
}
.mag-byline-role {
  font-size: .72rem;
  color: var(--text3);
  letter-spacing: .04em;
}
.mag-share {
  margin-top: 72px;
  padding-top: 32px;
  border-top: 1px solid rgba(255, 255, 255, .06);
  display: flex;
  align-items: center;
  gap: 14px;
}
.mag-share-label {
  font-size: .66rem;
  font-weight: 700;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--text3);
}
.mag-share-btn {
  padding: 9px 18px;
  font-family: inherit;
  font-size: .78rem;
  font-weight: 600;
  border-radius: 999px;
  background: rgba(255, 255, 255, .04);
  border: 1px solid rgba(255, 255, 255, .1);
  color: var(--text);
  cursor: pointer;
  transition: all .25s ease;
}
.mag-share-btn:hover {
  border-color: rgba(232, 119, 26, .4);
  color: var(--gold);
}


/* ── body typography ───────────────────────────────────────── */
.mag-body {
  max-width: 720px;
  font-size: 1.12rem;
  line-height: 1.78;
  color: var(--text);
  font-weight: 400;
}
.mag-body > p {
  margin: 0 0 1.4em;
}
/* drop cap on the first paragraph of the article */
.mag-body > p.mag-open::first-letter,
.mag-body > .mag-section:first-of-type > p:first-child::first-letter {
  float: left;
  font-size: 4.2em;
  line-height: .9;
  padding: .06em .12em 0 0;
  font-weight: 700;
  color: var(--gold);
  font-style: normal;
}
.mag-body a {
  color: var(--gold);
  text-decoration: none;
  border-bottom: 1px solid rgba(232, 119, 26, .35);
  transition: all .2s ease;
}
.mag-body a:hover {
  border-bottom-color: var(--gold);
  color: var(--gold-hot);
}
.mag-body strong {
  color: var(--heading);
  font-weight: 700;
}
.mag-body em { color: var(--text); font-style: italic; }

.mag-body h2 {
  font-size: clamp(1.5rem, 2.8vw, 2rem);
  line-height: 1.2;
  letter-spacing: -0.02em;
  font-weight: 700;
  color: var(--heading);
  margin: 72px 0 24px;
  max-width: 24ch;
  text-wrap: balance;
  position: relative;
  padding-left: 22px;
}
.mag-body h2::before {
  content: "";
  position: absolute;
  left: 0;
  top: .35em;
  width: 4px;
  height: .9em;
  background: linear-gradient(to bottom, var(--gold), var(--ember));
  border-radius: 2px;
}
.mag-body h3 {
  font-size: 1.2rem;
  line-height: 1.35;
  font-weight: 700;
  color: var(--heading);
  margin: 48px 0 16px;
  letter-spacing: -0.01em;
}

.mag-body ul, .mag-body ol {
  margin: 0 0 1.6em;
  padding-left: 1.4em;
}
.mag-body li {
  margin-bottom: .6em;
  line-height: 1.7;
}
.mag-body ul li::marker { color: var(--gold); }


/* ── pull quote ────────────────────────────────────────────── */
.mag-pullquote {
  margin: 64px -8px;
  padding: 48px 44px 44px;
  position: relative;
  background: linear-gradient(135deg, rgba(14, 27, 61, .6), rgba(22, 42, 82, .55));
  border: 1px solid rgba(232, 119, 26, .18);
  border-radius: 18px;
  font-size: clamp(1.25rem, 2.2vw, 1.55rem);
  line-height: 1.45;
  font-weight: 500;
  color: var(--heading);
  letter-spacing: -0.015em;
  text-wrap: balance;
  overflow: hidden;
}
.mag-pullquote::before {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(circle at 20% 0%, rgba(232, 119, 26, .12), transparent 55%);
  pointer-events: none;
}
.mag-pullquote::after {
  content: "\201C";
  position: absolute;
  top: -12px;
  left: 32px;
  font-size: 6rem;
  line-height: 1;
  color: var(--gold);
  opacity: .2;
  font-family: Georgia, serif;
  font-weight: 700;
}
.mag-pullquote cite {
  display: block;
  margin-top: 18px;
  font-size: .72rem;
  font-style: normal;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--gold);
  font-weight: 700;
}


/* ── framework visual container ─────────────────────────────── */
.mag-fx {
  margin: 72px -8px;
  padding: 56px 44px;
  background: linear-gradient(180deg, rgba(10, 16, 36, .7), rgba(6, 11, 24, .9));
  border-radius: 22px;
  border: 1px solid rgba(255, 255, 255, .04);
  text-align: center;
  position: relative;
  overflow: hidden;
}
.mag-fx::before {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(ellipse at 50% 0%, rgba(232, 119, 26, .1), transparent 60%);
  pointer-events: none;
}
.mag-fx-eyebrow {
  position: relative;
  font-size: .62rem;
  letter-spacing: .28em;
  text-transform: uppercase;
  color: var(--gold);
  font-weight: 700;
  margin-bottom: 8px;
}
.mag-fx-title {
  position: relative;
  font-size: clamp(1.35rem, 2.6vw, 1.8rem);
  font-weight: 700;
  color: var(--heading);
  margin: 0 0 28px;
  letter-spacing: -0.02em;
}
.mag-fx-visual {
  position: relative;
  display: flex;
  justify-content: center;
  margin: 20px 0 28px;
}
.mag-fx-caption {
  position: relative;
  font-size: .9rem;
  color: var(--text2);
  line-height: 1.6;
  max-width: 50ch;
  margin: 0 auto;
  font-style: italic;
}


/* ── diagnostic (embedded 3-question quiz) ─────────────────── */
/* Premium navy surface, not orange-tinted. Gold appears only as
   accents (eyebrow, active button, progress) so the dominant feel
   is deep-editorial, not glowy-marketing. */
.mag-diag {
  margin: 72px -8px;
  padding: 52px 48px 44px;
  background:
    radial-gradient(ellipse at 15% 0%, rgba(232, 119, 26, .08), transparent 55%),
    linear-gradient(180deg, #0d1632 0%, #0a1024 100%);
  border: 1px solid rgba(255, 255, 255, .06);
  border-radius: 24px;
  position: relative;
  box-shadow:
    0 24px 80px rgba(0, 0, 0, .35),
    inset 0 1px 0 rgba(255, 255, 255, .05);
  overflow: hidden;
}
/* Subtle top edge highlight + gold rail on the left */
.mag-diag::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  width: 3px;
  background: linear-gradient(180deg, var(--gold), transparent 70%);
  pointer-events: none;
}
.mag-diag-eyebrow {
  font-size: .62rem;
  letter-spacing: .32em;
  text-transform: uppercase;
  color: var(--gold);
  font-weight: 700;
  margin-bottom: 14px;
  display: inline-flex;
  align-items: center;
  gap: 10px;
}
.mag-diag-eyebrow::before {
  content: "";
  width: 24px;
  height: 1px;
  background: var(--gold);
}
.mag-diag-title {
  font-size: clamp(1.35rem, 2.4vw, 1.7rem);
  font-weight: 700;
  color: var(--heading);
  margin: 0 0 12px;
  letter-spacing: -0.02em;
  line-height: 1.22;
  text-wrap: balance;
  max-width: 30ch;
}
.mag-diag-sub {
  color: var(--text2);
  font-size: .96rem;
  line-height: 1.6;
  margin: 0 0 32px;
  max-width: 54ch;
}
.mag-diag-step { display: none; }
.mag-diag-step.is-active { display: block; animation: magDiagFade .4s ease; }
@keyframes magDiagFade { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: translateY(0); } }
.mag-diag-q {
  font-size: 1.1rem;
  color: var(--heading);
  font-weight: 600;
  line-height: 1.4;
  margin: 0 0 22px;
  letter-spacing: -0.01em;
}
.mag-diag-opts {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.mag-diag-opt {
  text-align: left;
  padding: 18px 22px;
  font-family: inherit;
  font-size: .98rem;
  line-height: 1.5;
  color: var(--text);
  background: rgba(255, 255, 255, .025);
  border: 1px solid rgba(255, 255, 255, .08);
  border-radius: 14px;
  cursor: pointer;
  transition: all .2s ease;
  position: relative;
}
.mag-diag-opt::after {
  content: "→";
  position: absolute;
  right: 22px;
  top: 50%;
  transform: translateY(-50%) translateX(-6px);
  opacity: 0;
  color: var(--gold);
  transition: all .25s ease;
  font-weight: 700;
}
.mag-diag-opt:hover {
  border-color: rgba(232, 119, 26, .45);
  background: rgba(232, 119, 26, .04);
  color: var(--heading);
  transform: translateX(2px);
}
.mag-diag-opt:hover::after {
  opacity: 1;
  transform: translateY(-50%) translateX(0);
}
.mag-diag-progress {
  margin-top: 28px;
  font-size: .66rem;
  letter-spacing: .24em;
  text-transform: uppercase;
  color: var(--text3);
  font-weight: 700;
}
.mag-diag-result { padding-top: 4px; }
.mag-diag-result-eyebrow {
  font-size: .62rem;
  letter-spacing: .32em;
  text-transform: uppercase;
  color: var(--gold);
  font-weight: 700;
  margin-bottom: 14px;
  display: inline-flex;
  align-items: center;
  gap: 10px;
}
.mag-diag-result-eyebrow::before {
  content: "";
  width: 24px;
  height: 1px;
  background: var(--gold);
}
/* Archetype name and tagline reveal */
.mag-diag-archetype {
  font-size: clamp(1.8rem, 3.4vw, 2.4rem);
  font-weight: 800;
  color: var(--heading);
  margin: 0 0 10px;
  letter-spacing: -0.025em;
  line-height: 1.1;
  text-wrap: balance;
}
.mag-diag-tagline {
  font-size: 1.05rem;
  color: var(--text);
  font-style: italic;
  margin: 0 0 28px;
  max-width: 52ch;
  line-height: 1.45;
}
/* Score panel: ring + copy side by side */
.mag-diag-score-panel {
  display: grid;
  grid-template-columns: 160px 1fr;
  gap: 32px;
  align-items: center;
  padding: 28px 0;
  margin: 0 0 28px;
  border-top: 1px solid rgba(255, 255, 255, .06);
  border-bottom: 1px solid rgba(255, 255, 255, .06);
}
.mag-diag-fog-ring {
  position: relative;
  width: 140px;
  height: 140px;
}
.mag-diag-fog-ring svg {
  width: 100%;
  height: 100%;
  overflow: visible;
}
.mag-diag-fog-readout {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 2px;
  pointer-events: none;
}
.mag-diag-fog-num {
  font-size: 1.8rem;
  font-weight: 800;
  color: var(--gold);
  letter-spacing: -0.03em;
  line-height: 1;
}
.mag-diag-fog-label {
  font-size: .56rem;
  letter-spacing: .3em;
  text-transform: uppercase;
  color: var(--text3);
  font-weight: 700;
}
.mag-diag-score-copy {
  font-size: .96rem;
  line-height: 1.6;
  color: var(--text);
}
.mag-diag-score-tag {
  font-size: .58rem;
  letter-spacing: .3em;
  text-transform: uppercase;
  color: var(--gold);
  font-weight: 700;
  margin-bottom: 12px;
}
.mag-diag-score-copy p {
  margin: 0;
  max-width: 50ch;
}
@media (max-width: 640px) {
  .mag-diag-score-panel {
    grid-template-columns: 1fr;
    gap: 22px;
    padding: 24px 0;
    text-align: left;
  }
  .mag-diag-fog-ring {
    margin: 0 auto;
  }
}
/* Legacy classes kept so the showcase still renders the old result card */
.mag-diag-result-title {
  font-size: clamp(1.45rem, 2.6vw, 1.85rem);
  font-weight: 700;
  color: var(--heading);
  margin: 0 0 16px;
  letter-spacing: -0.02em;
  line-height: 1.25;
  text-wrap: balance;
}
.mag-diag-result-body {
  color: var(--text);
  font-size: 1rem;
  line-height: 1.7;
  margin: 0 0 28px;
  max-width: 58ch;
}
.mag-diag-cta {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 16px 32px;
  background: var(--gold);
  color: #fff;
  border-radius: 999px;
  text-decoration: none;
  font-weight: 700;
  font-size: .94rem;
  letter-spacing: .01em;
  transition: all .25s ease;
  box-shadow: 0 8px 28px rgba(232, 119, 26, .28);
}
.mag-diag-cta:hover {
  background: var(--gold-hot);
  transform: translateY(-2px);
  box-shadow: 0 12px 36px rgba(232, 119, 26, .38);
}
.mag-diag-restart {
  margin-left: 18px;
  background: none;
  border: none;
  color: var(--text3);
  font-family: inherit;
  font-size: .8rem;
  cursor: pointer;
  text-decoration: underline;
  text-underline-offset: 3px;
  transition: color .25s ease;
}
.mag-diag-restart:hover { color: var(--text); }


/* ── product tile (gp-featured pattern, adapted for article body) ──
   Horizontal card on desktop: text on left, background image on right
   with a left-to-right gradient fade. Stacks vertically on mobile.
   Mirrors the design language used across /go-pro/ so a reader who
   lands from this article sees the same visual grammar as the
   product catalog. */
.mag-product-tile {
  display: flex;
  align-items: stretch;
  position: relative;
  margin: 80px -40px 0;
  min-height: 340px;
  border-radius: 20px;
  overflow: hidden;
  text-decoration: none;
  color: inherit;
  transition: transform .35s var(--ease, cubic-bezier(.16,1,.3,1)),
              box-shadow .35s var(--ease, cubic-bezier(.16,1,.3,1));
  background-color: #080812;
  /* isolate + GPU compositing eliminates the sub-pixel bleed along the
     curved edges that was showing as a thin offset line at the bottom */
  isolation: isolate;
  transform: translateZ(0);
  will-change: transform;
}
.mag-product-tile::after {
  /* Soft dark fade at the bottom of the image side, so the warmest
     parts of any product photo do not spill as a visible line at
     the rounded corner. */
  content: "";
  position: absolute;
  left: 0; right: 0; bottom: 0;
  height: 60px;
  background: linear-gradient(to top, rgba(8, 8, 18, .7), transparent);
  pointer-events: none;
  z-index: 1;
}
.mag-product-tile:hover {
  transform: translateY(-4px) translateZ(0);
  box-shadow: 0 28px 70px rgba(0, 0, 0, .45), 0 0 0 1px rgba(232, 119, 26, .3);
}
.mag-product-tile-bg {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: 70% center;
}
.mag-product-tile-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg,
    rgba(8, 8, 18, .96) 0%,
    rgba(8, 8, 18, .92) 30%,
    rgba(8, 8, 18, .55) 58%,
    rgba(8, 8, 18, .1) 85%,
    transparent 100%
  );
}
.mag-product-tile-content {
  position: relative;
  z-index: 2;
  padding: 44px 48px;
  max-width: 62%;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 18px;
}
.mag-product-tile-badge {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  align-self: flex-start;
  padding: 6px 14px;
  font-size: .62rem;
  font-weight: 700;
  letter-spacing: .26em;
  text-transform: uppercase;
  color: var(--gold);
  background: rgba(232, 119, 26, .08);
  border: 1px solid rgba(232, 119, 26, .3);
  border-radius: 999px;
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
}
.mag-product-tile-badge-icon { color: var(--gold); }
.mag-product-tile-title {
  font-size: clamp(1.5rem, 2.8vw, 2.2rem);
  font-weight: 800;
  line-height: 1.1;
  letter-spacing: -0.025em;
  color: #fff;
  margin: 0;
  max-width: 20ch;
  text-wrap: balance;
}
.mag-product-tile-title span {
  color: var(--gold);
}
.mag-product-tile-bite {
  color: rgba(255, 255, 255, .78);
  font-size: clamp(.96rem, 1.3vw, 1.06rem);
  line-height: 1.55;
  margin: 0;
  max-width: 50ch;
  font-weight: 400;
}
.mag-product-tile-oracles {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
.mag-product-tile-chip {
  font-size: .66rem;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, .68);
  padding: 6px 12px;
  background: rgba(255, 255, 255, .04);
  border: 1px solid rgba(255, 255, 255, .1);
  border-radius: 999px;
  font-weight: 600;
}
.mag-product-tile-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 18px;
  margin-top: 8px;
}
.mag-product-tile-price {
  color: rgba(255, 255, 255, .85);
  font-size: .88rem;
  font-weight: 500;
}
.mag-product-tile-price strong {
  color: #fff;
  font-size: 1.2rem;
  font-weight: 800;
  letter-spacing: -0.01em;
  margin-left: 4px;
}
.mag-product-tile-price-small {
  color: rgba(255, 255, 255, .45);
  font-size: .7rem;
  letter-spacing: .06em;
  margin-left: 6px;
  font-weight: 500;
}
.mag-product-tile-cta {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 14px 28px;
  background: var(--gold);
  color: #fff;
  border-radius: 999px;
  font-weight: 700;
  font-size: .86rem;
  letter-spacing: .02em;
  transition: all .3s ease;
  box-shadow: 0 6px 20px rgba(232, 119, 26, .28);
}
.mag-product-tile:hover .mag-product-tile-cta {
  background: var(--gold-hot);
  transform: translateX(2px);
  box-shadow: 0 10px 30px rgba(232, 119, 26, .4);
}

/* Tablet: shrink padding, image shows a bit less */
@media (max-width: 960px) {
  .mag-product-tile { margin: 72px -24px 0; min-height: 300px; }
  .mag-product-tile-content { padding: 36px 36px; max-width: 66%; }
  .mag-product-tile-overlay {
    background: linear-gradient(90deg,
      rgba(8, 8, 18, .97) 0%,
      rgba(8, 8, 18, .92) 45%,
      rgba(8, 8, 18, .55) 75%,
      transparent 100%
    );
  }
}

/* Mobile: stack vertically with image on top, content on bottom */
@media (max-width: 640px) {
  .mag-product-tile {
    flex-direction: column;
    margin: 60px 0 0;
    min-height: auto;
    border: 1px solid rgba(255, 255, 255, .08);
  }
  .mag-product-tile-bg {
    position: relative;
    inset: auto;
    height: 200px;
    background-position: 50% 30%;
  }
  .mag-product-tile-overlay { display: none; }
  .mag-product-tile-content {
    position: relative;
    max-width: 100%;
    padding: 28px 24px 32px;
    background: linear-gradient(180deg, rgba(8, 8, 18, .97), rgba(12, 12, 28, 1));
    gap: 14px;
  }
  .mag-product-tile-title { font-size: 1.45rem; }
  .mag-product-tile-foot { margin-top: 4px; }
}


/* ── related reading rail ──────────────────────────────────── */
.mag-related {
  padding: 80px 32px;
  background: linear-gradient(180deg, transparent, rgba(14, 27, 61, .4));
  border-top: 1px solid rgba(255, 255, 255, .04);
}
.mag-related-inner { max-width: 1180px; margin: 0 auto; }
.mag-related-eyebrow {
  font-size: .7rem;
  letter-spacing: .3em;
  text-transform: uppercase;
  color: var(--gold);
  font-weight: 700;
  margin-bottom: 32px;
}
/* auto-fit lets the rail gracefully scale from 1 to 3+ cards. Cards
   stretch when there are fewer, collapse to 1-col on mobile. */
.mag-related-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 24px;
  max-width: 1100px;
  margin: 0 auto;
}
@media (max-width: 600px) { .mag-related-grid { grid-template-columns: 1fr; gap: 16px; } }
.mag-related-card {
  display: block;
  background: rgba(255, 255, 255, .02);
  border: 1px solid rgba(255, 255, 255, .06);
  border-radius: 18px;
  overflow: hidden;
  text-decoration: none;
  color: var(--text);
  transition: transform .35s ease, border-color .35s ease, box-shadow .35s ease;
  isolation: isolate;
  transform: translateZ(0);
}
.mag-related-card:hover {
  transform: translateY(-4px) translateZ(0);
  border-color: rgba(232, 119, 26, .35);
  box-shadow: 0 20px 50px rgba(0, 0, 0, .35);
}
.mag-related-img {
  position: relative;
  height: 200px;
  background-size: cover;
  background-position: center;
  background-color: #0a1224;
  transition: transform .5s ease;
}
.mag-related-img::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, transparent 40%, rgba(8, 8, 18, .45) 100%);
  pointer-events: none;
}
.mag-related-card:hover .mag-related-img { transform: scale(1.04); }
/* Placeholder gradient used when no image is supplied, keeps the card
   visually full instead of a flat navy rectangle. */
.mag-related-img.is-placeholder {
  background-image:
    radial-gradient(ellipse at 30% 30%, rgba(232, 119, 26, .22), transparent 55%),
    radial-gradient(ellipse at 75% 75%, rgba(26, 48, 96, .7), transparent 65%),
    linear-gradient(140deg, #0a1328 0%, #1a3060 100%);
}
.mag-related-body { padding: 24px 26px 28px; }
.mag-related-cat {
  font-size: .62rem;
  letter-spacing: .22em;
  text-transform: uppercase;
  color: var(--gold);
  font-weight: 700;
  margin-bottom: 10px;
}
.mag-related-title {
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--heading);
  margin: 0 0 10px;
  line-height: 1.3;
  letter-spacing: -0.01em;
}
.mag-related-desc {
  font-size: .9rem;
  color: var(--text2);
  line-height: 1.5;
  margin: 0;
}


/* ═══════════════════════════════════════════════════════════
   SCROLL REVEAL — blocks start hidden and slide up when they enter
   the viewport. Script at article end toggles .is-visible via an
   IntersectionObserver. Falls back to always-visible if IO is
   unsupported or if the user prefers reduced motion.
   ═══════════════════════════════════════════════════════════ */
.mag-stat,
.mag-step,
.mag-pullquote,
.mag-takeaway,
.mag-tldr,
.mag-compare,
.mag-signs,
.mag-fx,
.mag-diag,
.mag-product-tile {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity .85s ease, transform .95s cubic-bezier(.16,1,.3,1);
  will-change: opacity, transform;
}
.mag-stat.is-visible,
.mag-step.is-visible,
.mag-pullquote.is-visible,
.mag-takeaway.is-visible,
.mag-tldr.is-visible,
.mag-compare.is-visible,
.mag-signs.is-visible,
.mag-fx.is-visible,
.mag-diag.is-visible,
.mag-product-tile.is-visible {
  opacity: 1;
  transform: translateY(0);
}
/* Image scales from 1.08 to 1 as the step enters — subtle breath */
.mag-step .mag-step-img {
  transform: scale(1.08);
  transition: transform 1.8s cubic-bezier(.16,1,.3,1);
}
.mag-step.is-visible .mag-step-img {
  transform: scale(1);
}
@media (prefers-reduced-motion: reduce) {
  .mag-stat, .mag-step, .mag-pullquote, .mag-takeaway, .mag-tldr,
  .mag-compare, .mag-signs, .mag-fx, .mag-diag, .mag-product-tile {
    opacity: 1;
    transform: none;
    transition: none;
  }
  .mag-step .mag-step-img { transform: none; transition: none; }
}


/* ═══════════════════════════════════════════════════════════
   BLOG BLOCKS LIBRARY
   Reusable content blocks the engine (and you manually) can drop
   into any pillar article. Each block is a self-contained HTML
   pattern with its own CSS namespace. Showcase + copyable source
   at /admin/blog-blocks/.
   ═══════════════════════════════════════════════════════════ */


/* ── block: TL;DR / what you'll take ───────────────────────────
   Top-of-article overview. Sets expectations in 3 lines.
   HTML:
     <aside class="mag-tldr">
       <div class="mag-tldr-eyebrow">In three minutes</div>
       <h3 class="mag-tldr-title">What you'll take from this</h3>
       <ol class="mag-tldr-list"><li>…</li></ol>
     </aside>
*/
.mag-tldr {
  margin: 40px -8px 56px;
  padding: 32px 36px;
  background: linear-gradient(180deg, rgba(14, 27, 61, .4), rgba(14, 27, 61, .15));
  border: 1px solid rgba(255, 255, 255, .06);
  border-left: 3px solid var(--gold);
  border-radius: 14px;
}
.mag-tldr-eyebrow {
  font-size: .6rem;
  letter-spacing: .3em;
  text-transform: uppercase;
  color: var(--gold);
  font-weight: 700;
  margin-bottom: 10px;
}
.mag-tldr-title {
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--heading);
  margin: 0 0 18px;
  letter-spacing: -0.01em;
}
.mag-tldr-list {
  list-style: none;
  padding: 0;
  margin: 0;
  counter-reset: tldrCount;
}
.mag-tldr-list li {
  counter-increment: tldrCount;
  position: relative;
  padding: 10px 0 10px 42px;
  font-size: .98rem;
  line-height: 1.55;
  color: var(--text);
  border-top: 1px solid rgba(255, 255, 255, .05);
}
.mag-tldr-list li:first-child { border-top: none; padding-top: 4px; }
.mag-tldr-list li::before {
  content: counter(tldrCount, decimal-leading-zero);
  position: absolute;
  left: 0;
  top: 12px;
  font-size: .7rem;
  font-weight: 800;
  color: var(--gold);
  letter-spacing: .08em;
}


/* ── block: numbered steps with photos (the "1 to 5") ─────────
   Premium vertical list with big number + photo + heading + body.
   Each step alternates image position for visual rhythm.
   HTML:
     <section class="mag-steps">
       <div class="mag-steps-eyebrow">Five steps</div>
       <h2 class="mag-steps-title">How to read the retreat</h2>
       <ol class="mag-steps-list">
         <li class="mag-step">
           <div class="mag-step-visual">
             <div class="mag-step-img" style="background-image:url('…')"></div>
             <div class="mag-step-num">01</div>
           </div>
           <div class="mag-step-body">
             <h3 class="mag-step-title">Notice the timing</h3>
             <p>…</p>
           </div>
         </li>
       </ol>
     </section>
*/
/* Cinematic zigzag layout matching the product-reading page pattern.
   50/50 split between photo and text, alternating sides per step.
   The big block-number (01, 02, 03) lives next to the copy, not on
   the photo, so the image reads as atmosphere while the text carries
   the content. One .mag-steps block per article maximum, reserved
   for the article's visual centerpiece. */
/* .mag-steps breaks out of the 720px reading column using large
   negative margins. It stops short of the viewport edges so the TOC
   rail on the left stays clear. Result on desktop: ~960px wide with
   ~480px per column — cinematic but not full-bleed. */
.mag-steps {
  margin: 80px -120px;
}
.mag-steps-eyebrow {
  font-size: .62rem;
  letter-spacing: .32em;
  text-transform: uppercase;
  color: var(--gold);
  font-weight: 700;
  margin-bottom: 12px;
  padding: 0 40px;
}
.mag-steps-title {
  font-size: clamp(1.5rem, 2.6vw, 1.95rem);
  font-weight: 700;
  color: var(--heading);
  margin: 0 0 40px;
  letter-spacing: -0.02em;
  line-height: 1.18;
  text-wrap: balance;
  max-width: 28ch;
  padding: 0 40px;
}
.mag-steps-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
}
.mag-step {
  display: grid;
  grid-template-columns: 1fr 1fr;
  min-height: 320px;
  align-items: stretch;
  background: transparent;
  border: 0;
  padding: 0;
  overflow: hidden;
}
/* Override the generic hover tweak the older .mag-step had */
.mag-step:hover { transform: none; }
/* Alternating: every other step flips photo to the left side */
.mag-step:nth-child(even) .mag-step-visual { order: 2; }
.mag-step:nth-child(even) .mag-step-body { order: 1; }

.mag-step-visual {
  position: relative;
  min-height: 320px;
  overflow: hidden;
  background-color: #0a1224;
}
.mag-step-img {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center;
  background-image:
    radial-gradient(ellipse at 30% 30%, rgba(232, 119, 26, .18), transparent 55%),
    radial-gradient(ellipse at 75% 75%, rgba(26, 48, 96, .7), transparent 65%),
    linear-gradient(140deg, #0a1328 0%, #1a3060 100%);
}
/* Subtle bottom vignette so the image has more drama without fading
   into the text column. The images stay sharp edge-to-edge. */
.mag-step-img::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, transparent 65%, rgba(3, 6, 16, .35) 100%);
  pointer-events: none;
}
.mag-step-body {
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 32px 44px;
  gap: 10px;
}
.mag-step-num {
  position: static;
  font-size: clamp(2.6rem, 4.5vw, 3.6rem);
  font-weight: 800;
  color: var(--gold);
  letter-spacing: -0.04em;
  line-height: 1;
  text-shadow: none;
  margin: 0 0 6px;
}
/* Specificity override: the generic .mag-body h3 rule was injecting
   48px top margin on every h3, which was throwing the step titles far
   below the number. .mag-step scoping wins the specificity battle. */
.mag-step .mag-step-title {
  font-size: clamp(1.25rem, 2.2vw, 1.55rem);
  font-weight: 700;
  color: var(--heading);
  margin: 0;
  letter-spacing: -0.015em;
  line-height: 1.2;
  text-wrap: balance;
  max-width: 22ch;
}
.mag-step-body p {
  margin: 6px 0 0;
  color: var(--text);
  font-size: .98rem;
  line-height: 1.55;
  max-width: 40ch;
}
/* On mid-width screens, tone down the breakout so we don't overflow */
@media (max-width: 1200px) {
  .mag-steps { margin: 80px -60px; }
}
@media (max-width: 860px) {
  .mag-steps { margin: 60px 0; }
  .mag-steps-eyebrow, .mag-steps-title { padding: 0 20px; }
  .mag-step, .mag-step:nth-child(even) {
    grid-template-columns: 1fr;
    min-height: auto;
  }
  .mag-step:nth-child(even) .mag-step-visual { order: 1; }
  .mag-step:nth-child(even) .mag-step-body { order: 2; }
  .mag-step-visual { min-height: 240px; }
  .mag-step-body { padding: 28px 20px 40px; }
  .mag-step-num { font-size: 2.4rem; }
}


/* ── block: comparison 2-column (myth vs truth / before-after) ─
   HTML:
     <div class="mag-compare">
       <div class="mag-compare-col is-myth">
         <div class="mag-compare-label">What most advice says</div>
         <div class="mag-compare-body">…</div>
       </div>
       <div class="mag-compare-vs">vs</div>
       <div class="mag-compare-col is-truth">
         <div class="mag-compare-label">What is actually happening</div>
         <div class="mag-compare-body">…</div>
       </div>
     </div>
*/
.mag-compare {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: stretch;
  gap: 16px;
  margin: 56px -8px;
}
.mag-compare-col {
  padding: 28px 28px 30px;
  border-radius: 16px;
  background: rgba(255, 255, 255, .02);
  border: 1px solid rgba(255, 255, 255, .06);
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.mag-compare-col.is-myth {
  opacity: 0.88;
}
.mag-compare-col.is-truth {
  border-color: rgba(232, 119, 26, .28);
  background: linear-gradient(160deg, rgba(232, 119, 26, .06), rgba(14, 27, 61, .2));
  box-shadow: 0 12px 40px rgba(0, 0, 0, .15);
}
.mag-compare-label {
  font-size: .6rem;
  letter-spacing: .26em;
  text-transform: uppercase;
  font-weight: 700;
  color: var(--text3);
}
.mag-compare-col.is-truth .mag-compare-label { color: var(--gold); }
.mag-compare-body {
  font-size: 1.05rem;
  line-height: 1.55;
  color: var(--text);
  font-weight: 500;
  text-wrap: balance;
}
.mag-compare-col.is-truth .mag-compare-body {
  color: var(--heading);
  font-weight: 600;
}
.mag-compare-vs {
  align-self: center;
  font-size: .72rem;
  letter-spacing: .3em;
  text-transform: uppercase;
  font-weight: 700;
  color: var(--text3);
  padding: 12px 2px;
}
@media (max-width: 720px) {
  .mag-compare {
    grid-template-columns: 1fr;
    gap: 10px;
  }
  .mag-compare-vs {
    padding: 4px 0;
  }
}


/* ── block: big stat / data callout ─────────────────────────────
   Premium dimensional card with glowing number, soft orange corner
   halo, gradient border rail, and a scroll-reveal entrance. Use
   sparingly — one per article is plenty.
   HTML:
     <div class="mag-stat">
       <div class="mag-stat-num">24–72</div>
       <div class="mag-stat-body">Short context for the number.</div>
     </div>
*/
.mag-stat {
  position: relative;
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 44px;
  align-items: center;
  margin: 64px -16px;
  padding: 44px 48px;
  background:
    radial-gradient(ellipse 80% 80% at 0% 50%, rgba(232, 119, 26, .14), transparent 55%),
    radial-gradient(ellipse at 100% 100%, rgba(26, 48, 96, .4), transparent 55%),
    linear-gradient(160deg, rgba(14, 27, 61, .45) 0%, rgba(8, 10, 22, .3) 100%);
  border: 1px solid rgba(232, 119, 26, .16);
  border-radius: 20px;
  overflow: hidden;
  box-shadow:
    0 20px 60px rgba(0, 0, 0, .3),
    inset 0 1px 0 rgba(255, 255, 255, .04);
}
/* Gold rail along the left edge */
.mag-stat::before {
  content: "";
  position: absolute;
  left: 0; top: 0; bottom: 0;
  width: 3px;
  background: linear-gradient(180deg, var(--gold), transparent 85%);
  pointer-events: none;
}
/* Soft glow blob behind the number */
.mag-stat::after {
  content: "";
  position: absolute;
  top: -60px; left: -40px;
  width: 260px;
  height: 260px;
  background: radial-gradient(circle, rgba(232, 119, 26, .2), transparent 65%);
  filter: blur(36px);
  pointer-events: none;
  z-index: 0;
}
.mag-stat-num {
  position: relative;
  z-index: 1;
  font-size: clamp(3.2rem, 6.5vw, 5rem);
  font-weight: 800;
  color: var(--gold);
  line-height: 1;
  letter-spacing: -0.045em;
  white-space: nowrap;
  text-shadow: 0 4px 32px rgba(232, 119, 26, .35);
}
.mag-stat-body {
  position: relative;
  z-index: 1;
  font-size: 1.04rem;
  line-height: 1.6;
  color: var(--text);
  max-width: 44ch;
}
@media (max-width: 720px) {
  .mag-stat {
    grid-template-columns: 1fr;
    gap: 12px;
    padding: 32px 28px 34px;
    margin: 48px 0;
  }
  .mag-stat-num { font-size: 2.8rem; }
}


/* ── block: card draw (Major Arcana funnel) ───────────────────
   The brand-native conversion mechanism. Nine face-down cards in a
   fan, drawn from a shuffled Major Arcana pool. User picks one, 3D
   flip reveals the card + a topic-specific interpretation, bridge
   and product CTA follow. One per article. Article supplies the
   22 interpretations via window.__blogDraw — everything else is
   template.
*/
.mag-draw {
  margin: 80px -40px;
  padding: 56px 40px 48px;
  background:
    radial-gradient(ellipse at 50% 0%, rgba(232, 119, 26, .1), transparent 55%),
    linear-gradient(180deg, #0c1430 0%, #060b1e 100%);
  border: 1px solid rgba(255, 255, 255, .05);
  border-radius: 24px;
  text-align: center;
  position: relative;
  overflow: hidden;
  box-shadow: 0 28px 80px rgba(0, 0, 0, .4), inset 0 1px 0 rgba(255, 255, 255, .04);
}
.mag-draw::before {
  content: "";
  position: absolute;
  top: -80px; left: 50%; transform: translateX(-50%);
  width: 400px; height: 400px;
  background: radial-gradient(circle, rgba(232, 119, 26, .08), transparent 60%);
  filter: blur(60px);
  pointer-events: none;
}
.mag-draw-eyebrow {
  position: relative;
  font-size: .62rem;
  letter-spacing: .34em;
  text-transform: uppercase;
  color: var(--gold);
  font-weight: 700;
  margin-bottom: 12px;
}
.mag-draw-title {
  position: relative;
  font-size: clamp(1.4rem, 2.6vw, 1.85rem);
  font-weight: 700;
  color: var(--heading);
  margin: 0 0 10px;
  letter-spacing: -0.02em;
  line-height: 1.22;
  max-width: 24ch;
  margin-left: auto;
  margin-right: auto;
  text-wrap: balance;
}
.mag-draw-sub {
  position: relative;
  color: var(--text2);
  font-size: 1rem;
  line-height: 1.55;
  margin: 0 auto 40px;
  max-width: 48ch;
  font-style: italic;
}
.mag-draw-stage {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 32px;
}

/* ── single card that flips ──────────────────────────────────
   One card, face-down. Click the button, card rotates 180° on Y
   revealing the randomly drawn Major. Stays in place. The button
   fades out, the interpretation fades in below. */
.mag-draw-flipper {
  position: relative;
  width: 200px;
  height: 340px;
  perspective: 1600px;
}
.mag-draw-flipper-inner {
  position: absolute;
  inset: 0;
  transform-style: preserve-3d;
  -webkit-transform-style: preserve-3d;
  transform: rotateY(0deg);
  transition: transform 1.2s cubic-bezier(.4, 0, .2, 1);
  will-change: transform;
}
.mag-draw.is-drawn .mag-draw-flipper-inner {
  transform: rotateY(180deg);
}
/* NOTE: we deliberately do NOT animate the .mag-draw-flipper parent
   with a transform (e.g. scale). Adding a 2D transform to the parent
   flattens the 3D context and the child rotateY collapses to 2D
   identity, killing the flip. Keep the parent transform-free. */
.mag-draw-face {
  position: absolute;
  inset: 0;
  backface-visibility: hidden;
  -webkit-backface-visibility: hidden;
  border-radius: 10px;
  overflow: hidden;
  background-color: #0a0a12;
  box-shadow:
    0 24px 60px rgba(0, 0, 0, .6),
    0 0 0 1px rgba(232, 119, 26, .3),
    0 0 60px rgba(232, 119, 26, .14);
}
.mag-draw-face-back {
  background-image: url('/images-tarot-luxury/Back-Image.png');
  background-size: cover;
  background-position: center;
}
.mag-draw-face-front {
  transform: rotateY(180deg);
}
.mag-draw-face-front img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.mag-draw-button {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  padding: 18px 40px;
  font-family: inherit;
  font-size: 1rem;
  font-weight: 700;
  letter-spacing: .02em;
  color: #fff;
  background: var(--gold);
  border: none;
  border-radius: 999px;
  cursor: pointer;
  box-shadow: 0 12px 40px rgba(232, 119, 26, .35);
  transition: background .25s ease, transform .25s ease, box-shadow .25s ease, opacity .4s ease;
  position: relative;
  overflow: hidden;
}
.mag-draw-button::before {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(120deg, transparent 30%, rgba(255, 255, 255, .2), transparent 70%);
  transform: translateX(-100%);
  transition: transform .6s ease;
}
.mag-draw-button:hover {
  background: var(--gold-hot);
  transform: translateY(-2px);
  box-shadow: 0 18px 52px rgba(232, 119, 26, .48);
}
.mag-draw-button:hover::before { transform: translateX(100%); }
.mag-draw-button-icon {
  display: inline-block;
  font-size: 1.1rem;
  line-height: 1;
}
.mag-draw.is-drawn .mag-draw-button {
  opacity: 0;
  pointer-events: none;
  transform: translateY(-6px);
  position: absolute;
  visibility: hidden;
}

/* ── reveal state — text that appears below the flipped card ── */
.mag-draw-reveal {
  display: flex;
  flex-direction: column;
  align-items: center;
  width: 100%;
  max-width: 56ch;
  opacity: 0;
  transform: translateY(12px);
  pointer-events: none;
  transition: opacity .6s ease .6s, transform .6s ease .6s;
}
.mag-draw.is-drawn .mag-draw-reveal {
  opacity: 1;
  transform: translateY(0);
  pointer-events: auto;
}
/* Upgraded result title: small gold eyebrow, then a display-weight
   card name, italic tagline, gold divider, and the reading body.
   Gives the reveal a proper editorial title hierarchy instead of
   a caption-sized label under the image. */
.mag-draw-result-eyebrow {
  font-size: .62rem;
  letter-spacing: .34em;
  text-transform: uppercase;
  color: var(--gold);
  font-weight: 700;
  margin: 36px 0 14px;
}
.mag-draw-card-name {
  font-size: clamp(1.9rem, 3.4vw, 2.5rem);
  font-weight: 800;
  color: var(--heading);
  letter-spacing: -0.025em;
  line-height: 1.08;
  margin: 0 0 10px;
  text-wrap: balance;
}
.mag-draw-card-tagline {
  font-size: 1.02rem;
  font-style: italic;
  color: var(--text);
  line-height: 1.45;
  margin: 0 0 20px;
  max-width: 36ch;
  text-wrap: balance;
}
.mag-draw-card-divider {
  width: 48px;
  height: 2px;
  background: linear-gradient(to right, var(--gold), var(--ember));
  border-radius: 2px;
  margin: 0 0 22px;
}
.mag-draw-card-body {
  font-size: 1.04rem;
  line-height: 1.65;
  color: var(--heading);
  margin: 0;
  text-wrap: balance;
  font-weight: 400;
  max-width: 54ch;
}
.mag-draw-bridge {
  margin: 32px auto 24px;
  max-width: 52ch;
  font-size: .92rem;
  line-height: 1.6;
  color: var(--text2);
  font-style: italic;
}
.mag-draw-cta {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 16px 32px;
  background: var(--gold);
  color: #fff;
  border-radius: 999px;
  text-decoration: none;
  font-weight: 700;
  font-size: .95rem;
  letter-spacing: .01em;
  box-shadow: 0 10px 36px rgba(232, 119, 26, .3);
  transition: background .25s ease, transform .25s ease, box-shadow .25s ease;
}
.mag-draw-cta:hover {
  background: var(--gold-hot);
  transform: translateY(-2px);
  box-shadow: 0 16px 44px rgba(232, 119, 26, .4);
}
.mag-draw-reshuffle {
  display: block;
  margin: 18px auto 0;
  background: none;
  border: none;
  color: var(--text3);
  font-family: inherit;
  font-size: .78rem;
  cursor: pointer;
  text-decoration: underline;
  text-underline-offset: 3px;
  transition: color .25s ease;
}
.mag-draw-reshuffle:hover { color: var(--text); }

@media (max-width: 720px) {
  .mag-draw { margin: 60px 0; padding: 40px 20px 36px; }
  .mag-draw-flipper { width: 160px; height: 272px; }
  .mag-draw-button { padding: 16px 32px; font-size: .94rem; }
}


/* ── block: takeaway / key insight box (end-of-article) ────────
   HTML:
     <aside class="mag-takeaway">
       <div class="mag-takeaway-eyebrow">The takeaway</div>
       <p class="mag-takeaway-quote">…</p>
     </aside>
*/
.mag-takeaway {
  margin: 56px -8px 40px;
  padding: 40px 44px 42px;
  background:
    radial-gradient(ellipse at 100% 0%, rgba(232, 119, 26, .1), transparent 55%),
    linear-gradient(160deg, rgba(22, 42, 82, .5), rgba(14, 27, 61, .35));
  border-radius: 18px;
  border: 1px solid rgba(255, 255, 255, .06);
  position: relative;
  overflow: hidden;
}
.mag-takeaway::before {
  content: "";
  position: absolute;
  left: 0; top: 0; bottom: 0;
  width: 3px;
  background: linear-gradient(180deg, var(--gold), transparent 80%);
}
.mag-takeaway-eyebrow {
  font-size: .6rem;
  letter-spacing: .3em;
  text-transform: uppercase;
  color: var(--gold);
  font-weight: 700;
  margin-bottom: 14px;
}
.mag-takeaway-quote {
  font-size: clamp(1.12rem, 1.8vw, 1.3rem);
  line-height: 1.5;
  color: var(--heading);
  font-weight: 500;
  font-style: italic;
  margin: 0;
  letter-spacing: -0.005em;
  text-wrap: balance;
  max-width: 48ch;
}


/* ── block: signs checklist (3 signs of X) ─────────────────────
   Visual scannable list. Use instead of text H3 list for the "3
   signs" sections.
   HTML:
     <section class="mag-signs">
       <div class="mag-signs-eyebrow">Three fingerprints</div>
       <h3 class="mag-signs-title">How to tell it's fear, not indifference</h3>
       <div class="mag-signs-grid">
         <div class="mag-sign">
           <div class="mag-sign-num">01</div>
           <div class="mag-sign-name">The tenderness leak</div>
           <p>…</p>
         </div>
       </div>
     </section>
*/
.mag-signs {
  margin: 56px -8px;
}
.mag-signs-eyebrow {
  font-size: .62rem;
  letter-spacing: .32em;
  text-transform: uppercase;
  color: var(--gold);
  font-weight: 700;
  margin-bottom: 10px;
}
.mag-signs-title {
  font-size: clamp(1.35rem, 2.4vw, 1.75rem);
  font-weight: 700;
  color: var(--heading);
  margin: 0 0 28px;
  letter-spacing: -0.02em;
  line-height: 1.22;
  text-wrap: balance;
  max-width: 26ch;
}
.mag-signs-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 14px;
}
.mag-sign {
  padding: 24px 22px 26px;
  border-radius: 14px;
  background: linear-gradient(180deg, rgba(255, 255, 255, .025), rgba(255, 255, 255, .01));
  border: 1px solid rgba(255, 255, 255, .06);
  border-top: 2px solid rgba(232, 119, 26, .4);
  display: flex;
  flex-direction: column;
  gap: 10px;
  transition: border-color .25s ease, transform .25s ease;
}
.mag-sign:hover {
  border-color: rgba(232, 119, 26, .35);
  border-top-color: var(--gold);
  transform: translateY(-2px);
}
.mag-sign-num {
  font-size: .72rem;
  letter-spacing: .22em;
  text-transform: uppercase;
  font-weight: 800;
  color: var(--gold);
}
.mag-sign-name {
  font-size: 1.08rem;
  font-weight: 700;
  color: var(--heading);
  letter-spacing: -0.01em;
  line-height: 1.3;
  margin-bottom: 4px;
}
.mag-sign p {
  margin: 0;
  font-size: .92rem;
  line-height: 1.55;
  color: var(--text2);
}
@media (max-width: 720px) {
  .mag-signs-grid {
    grid-template-columns: 1fr;
    gap: 10px;
  }
}


/* ── back link ─────────────────────────────────────────────── */
.mag-back {
  text-align: center;
  padding: 40px 24px 80px;
}
.mag-back a {
  color: var(--text3);
  text-decoration: none;
  font-size: .82rem;
  font-weight: 600;
  letter-spacing: .04em;
  border-bottom: 1px solid transparent;
  transition: all .25s ease;
}
.mag-back a:hover { color: var(--gold); border-bottom-color: var(--gold); }


/* ── responsive tuning ──────────────────────────────────────── */
@media (max-width: 720px) {
  .mag-hero { padding: 80px 20px 60px; min-height: 76vh; }
  .mag-body-wrap { padding-top: 60px; padding-bottom: 60px; }
  .mag-body { font-size: 1.04rem; line-height: 1.75; }
  .mag-body h2 { margin: 56px 0 20px; }
  .mag-pullquote { margin: 48px 0; padding: 36px 28px 32px; }
  .mag-fx { margin: 56px 0; padding: 40px 24px; }
  .mag-diag { margin: 56px 0; padding: 32px 24px; }
  .mag-close-cta { margin: 60px 0 0; padding: 48px 28px; }
  .mag-related { padding: 60px 20px; }
}
