/* ============================================================================
   PharmaFacts — Formations catalogue v2
   Marketing acts appended below the course list. Built on studio-v6 tokens;
   reuses the public [data-reveal] scroll-motion system (app.js). Loaded only on
   the catalogue via head_extra.
   ============================================================================ */

.cat-eyebrow { display: inline-flex; align-items: center; gap: 10px; color: var(--pf-green-dark); font-size: .78rem; font-weight: 700; letter-spacing: .04em; }
.cat-eyebrow::before { content: ""; width: 24px; height: 2px; background: var(--pf-green); }
.cat-sec__head { max-width: 640px; margin-bottom: clamp(32px, 4vw, 56px); }
.cat-sec__head h2 { margin: 16px 0 0; font-size: clamp(2rem, 3.6vw, 3rem); letter-spacing: -.03em; line-height: 1.06; }
.cat-sec__head p { margin: 18px 0 0; color: var(--pf-ink-2); font-size: 1.05rem; line-height: 1.6; }

/* ---- How it works (3-step) -------------------------------------------------- */
.cat-how { padding-block: var(--s-9); background: var(--pf-paper); }
.cat-steps { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(3, 1fr); gap: clamp(16px, 2vw, 24px); }
.cat-step { padding: clamp(24px, 2.6vw, 34px); border-radius: var(--r-4); background: #fff; border: 1px solid var(--pf-line); box-shadow: 0 1px 2px rgba(16,35,63,.04), 0 16px 34px -26px rgba(16,35,63,.2); }
.cat-step__n { display: grid; place-items: center; width: 46px; height: 46px; border-radius: 13px; background: var(--pf-blue-soft); color: var(--pf-blue); font-family: var(--font-brand); font-weight: 650; font-size: 1.25rem; }
.cat-step h3 { margin: 20px 0 8px; font-size: 1.25rem; letter-spacing: -.02em; }
.cat-step p { margin: 0; color: var(--pf-muted); font-size: .95rem; line-height: 1.55; }

/* ---- What's included (editorial spec, not card grid) ------------------------ */
.cat-includes { padding-block: var(--s-9); background: #fff; }
.cat-includes__grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: clamp(24px, 2.6vw, 40px); }
.cat-inc { padding-top: 22px; border-top: 2px solid var(--pf-ink); }
.cat-inc__ic { display: inline-flex; color: var(--pf-green); }
.cat-inc__ic svg { width: 24px; height: 24px; }
.cat-inc h3 { margin: 14px 0 8px; font-size: 1.15rem; letter-spacing: -.02em; }
.cat-inc p { margin: 0; color: var(--pf-muted); font-size: .92rem; line-height: 1.55; }

/* Owned formations switch from commerce to continuation. */
.catalog-owned {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: var(--pf-green-soft) !important;
  color: var(--pf-green-dark) !important;
}
.catalog-owned .icon { width: 14px; height: 14px; }
.catalog-owned-label {
  color: var(--pf-green-dark) !important;
  font-size: .8rem !important;
  font-weight: 700;
}

/* ---- Video catalogue -------------------------------------------------------
   Familiar YouTube browsing grammar: 16:9 moving thumbnails, compact metadata,
   and no boxed card surface. The course remains the destination; the preview is
   a muted glimpse of its public introduction or first free lesson. */
.catalog-video-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: clamp(34px, 4vw, 52px) clamp(16px, 2vw, 24px);
}
.catalog-video-card { min-width: 0; }
.catalog-video-card__media {
  position: relative;
  isolation: isolate;
  display: block;
  aspect-ratio: 16 / 9;
  overflow: hidden;
  border-radius: 12px;
  background: #071b38;
  color: #fff;
  text-decoration: none;
}
.catalog-video-card__media > img,
.catalog-video-card__media > video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.catalog-video-card__media > img {
  z-index: 1;
  transition: transform .45s cubic-bezier(.25, 1, .5, 1), opacity .18s linear;
}
.catalog-video-card__media > video {
  z-index: 2;
  pointer-events: none;
  opacity: 0;
  transition: opacity .18s linear;
}
.catalog-video-card:hover .catalog-video-card__media > img,
.catalog-video-card:focus-within .catalog-video-card__media > img { transform: scale(1.025); }
.catalog-video-card.is-preview-playing .catalog-video-card__media > img { opacity: 0; }
.catalog-video-card.is-preview-playing .catalog-video-card__media > video { opacity: 1; }
.catalog-video-card__media:focus-visible {
  outline: 3px solid var(--pf-green);
  outline-offset: 3px;
}

.catalog-video-card__preview-kind,
.catalog-video-card__duration,
.catalog-video-card__owned {
  position: absolute;
  z-index: 4;
  display: inline-flex;
  align-items: center;
  min-height: 24px;
  padding: 4px 7px;
  border-radius: 5px;
  background: rgba(7, 20, 39, .88);
  color: #fff;
  font-size: .7rem;
  font-weight: 700;
  line-height: 1;
}
.catalog-video-card__preview-kind {
  inset-block-start: 10px;
  inset-inline-start: 10px;
}
.catalog-video-card__duration {
  inset-block-end: 8px;
  inset-inline-end: 8px;
  min-height: 22px;
  font-variant-numeric: tabular-nums;
}
.catalog-video-card__owned {
  inset-block-start: 10px;
  inset-inline-end: 10px;
  gap: 5px;
  background: var(--pf-green-dark);
}
.catalog-video-card__owned .icon { width: 13px; height: 13px; }
.catalog-video-card__play {
  position: absolute;
  inset: 50% auto auto 50%;
  z-index: 4;
  display: grid;
  place-items: center;
  width: 54px;
  height: 38px;
  border-radius: 10px;
  background: rgba(7, 12, 20, .8);
  color: #fff;
  transform: translate(-50%, -50%);
  transition: transform .25s cubic-bezier(.25, 1, .5, 1), opacity .18s linear;
}
.catalog-video-card__play .icon { width: 19px; height: 19px; margin-inline-start: 2px; }
.catalog-video-card:hover .catalog-video-card__play,
.catalog-video-card:focus-within .catalog-video-card__play { transform: translate(-50%, -50%) scale(1.06); }
.catalog-video-card.is-preview-loading .catalog-video-card__play .icon { opacity: 0; }
.catalog-video-card.is-preview-loading .catalog-video-card__play::after {
  content: "";
  width: 16px;
  height: 16px;
  border: 2px solid rgba(255, 255, 255, .38);
  border-top-color: #fff;
  border-radius: 50%;
  animation: catalogPreviewSpin .7s linear infinite;
}
.catalog-video-card.is-preview-playing .catalog-video-card__play,
.catalog-video-card.is-preview-playing .catalog-video-card__preview-kind { opacity: 0; }
@keyframes catalogPreviewSpin { to { transform: rotate(1turn); } }

.catalog-video-card__details {
  display: grid;
  grid-template-columns: 40px minmax(0, 1fr);
  gap: 12px;
  padding-top: 12px;
}
.catalog-video-card__avatar {
  display: grid;
  place-items: center;
  width: 40px;
  height: 40px;
  overflow: hidden;
  border-radius: 50%;
  background: var(--pf-blue);
  color: #fff;
  font-family: var(--font-brand);
  font-size: .95rem;
  font-weight: 700;
}
.catalog-video-card__avatar img { width: 100%; height: 100%; object-fit: cover; }
.catalog-video-card__copy { min-width: 0; }
.catalog-video-card h2 {
  display: -webkit-box;
  overflow: hidden;
  margin: 0;
  font-size: 1.02rem;
  line-height: 1.35;
  letter-spacing: -.018em;
  text-wrap: pretty;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}
.catalog-video-card h2 a { color: var(--pf-ink); text-decoration: none; }
.catalog-video-card__channel,
.catalog-video-card__meta { margin: 0; color: var(--pf-muted); font-size: .8rem; line-height: 1.45; }
.catalog-video-card__channel { margin-top: 7px; }
.catalog-video-card__meta { display: flex; flex-wrap: wrap; align-items: center; gap: 4px; }
.catalog-video-card__meta i { font-style: normal; }
.catalog-video-card__commerce {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 5px 9px;
  margin-top: 8px;
}
.catalog-video-card__commerce strong {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: var(--pf-ink);
  font-size: .88rem;
  font-variant-numeric: tabular-nums;
}
.catalog-video-card__commerce strong .icon { width: 14px; height: 14px; color: var(--pf-green-dark); }
.catalog-video-card__commerce strong small { color: var(--pf-muted); font-size: .64rem; }
.catalog-video-card__commerce > span { color: var(--pf-muted); font-size: .74rem; }

/* ---- Scroll reveal for the appended sections (uses html.js-reveal system) ---- */
html.js-reveal .cat-how [data-reveal],
html.js-reveal .cat-includes [data-reveal] { will-change: opacity, transform; }

/* ---- Responsive ------------------------------------------------------------- */
@media (max-width: 900px) {
  .catalog-video-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .cat-steps { grid-template-columns: 1fr; }
  .cat-includes__grid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 560px) {
  .catalog-video-grid { grid-template-columns: 1fr; gap-block: 34px; }
  .cat-includes__grid { grid-template-columns: 1fr; }
  .catalog-video-card__details { grid-template-columns: 36px minmax(0, 1fr); gap: 10px; }
  .catalog-video-card__avatar { width: 36px; height: 36px; }
}

@media (prefers-reduced-motion: reduce) {
  .catalog-video-card__media > img,
  .catalog-video-card__media > video,
  .catalog-video-card__play { transition: none; }
  .catalog-video-card__media > video { display: none; }
  .catalog-video-card.is-preview-loading .catalog-video-card__play::after { animation: none; }
}
