/* =========================================================
   BOLI · For-Physicians · journey prototypes + reassurance encart
   ========================================================= */

/* ─── Board game journey prototype ─── */
.phys-board {
  background:
    radial-gradient(760px 420px at 10% 8%, rgba(231, 239, 233, .9) 0%, transparent 65%),
    radial-gradient(700px 500px at 92% 72%, rgba(240, 200, 121, .20) 0%, transparent 62%),
    var(--paper);
  padding: var(--sp-section) 0;
  border-top: 1px solid var(--rule-soft);
  border-bottom: 1px solid var(--rule-soft);
  overflow: visible;
}
.phys-board .section-head {
  text-align: center;
  position: relative;
  z-index: 8;
  margin: 0 auto;
  padding: var(--sp-7) var(--sp-6) 0;
}
.phys-board h2 {
  font-family: var(--font-head);
  font-size: var(--fs-title);
  line-height: var(--lh-snug);
  letter-spacing: var(--tr-snug);
  color: var(--ink);
  margin: 0 0 var(--sp-4);
  font-weight: 500;
}
.phys-board h2 em {
  font-style: italic;
  color: var(--green);
}
.phys-board .lede {
  font-family: var(--font-body);
  font-size: var(--fs-lede);
  line-height: var(--lh-base);
  color: var(--ink-soft);
  max-width: 68ch;
  margin: 0 auto;
}

.phys-board-grid {
  display: block;
}
.phys-board-card {
  position: relative;
  --journey-card-header: clamp(166px, 17vw, 208px);
  background: #fffefa;
  border: 1px solid var(--rule);
  border-radius: var(--radius-xl);
  box-shadow: var(--shadow);
  overflow: visible;
}
.phys-board-card::after {
  content: "";
  position: absolute;
  z-index: 6;
  top: calc(var(--journey-card-header) + var(--sp-7) + 54px);
  right: 0;
  bottom: calc(var(--sp-5) + 74px);
  width: clamp(54px, 9vw, 118px);
  border-radius: 0 var(--radius-xl) var(--radius-xl) 0;
  background: linear-gradient(90deg, rgba(255, 254, 250, 0), #fffefa 74%);
  pointer-events: none;
}
.phys-board-card::before {
  content: "";
  position: absolute;
  z-index: 6;
  top: calc(var(--journey-card-header) + var(--sp-7) + 54px);
  left: 0;
  bottom: calc(var(--sp-5) + 74px);
  width: clamp(54px, 9vw, 118px);
  border-radius: var(--radius-xl) 0 0 var(--radius-xl);
  background: linear-gradient(90deg, #fffefa 26%, rgba(255, 254, 250, 0));
  pointer-events: none;
}
.phys-board-card-head {
  padding: var(--sp-5) var(--sp-6) 0;
}
.phys-board-kicker {
  display: inline-block;
  font-family: var(--font-body);
  font-size: var(--fs-eyebrow);
  letter-spacing: var(--tr-eyebrow);
  text-transform: uppercase;
  color: var(--gold);
  font-weight: 600;
  margin-bottom: var(--sp-2);
}
.phys-board-card h3 {
  font-family: var(--font-head);
  font-size: clamp(1.35rem, 1.85vw, 1.72rem);
  line-height: var(--lh-snug);
  letter-spacing: var(--tr-snug);
  color: var(--ink);
  font-weight: 500;
  margin: 0;
}
.journey-boli-gate {
  position: absolute;
  z-index: 5;
  /* The JS carousel sets these vars from the active card's bounds so the sas
     wraps the card at any viewport. Fallbacks keep the static layout sane. */
  top: var(--journey-gate-top, calc(var(--journey-card-header) + var(--sp-4)));
  bottom: var(--journey-gate-bottom, calc(var(--sp-5) + 54px));
  left: 50%;
  transform: translateX(-50%);
  display: inline-flex;
  align-items: flex-start;
  justify-content: center;
  width: var(--journey-gate-width, clamp(190px, 19vw, 220px));
  padding: var(--sp-3) var(--sp-3) 0;
  border-radius: 30px;
  background:
    linear-gradient(180deg, rgba(231, 239, 233, .32), rgba(255, 254, 250, .08) 36%, rgba(231, 239, 233, .30)),
    linear-gradient(90deg, rgba(13, 91, 63, .08), rgba(255, 254, 250, .06) 22%, rgba(255, 254, 250, .06) 78%, rgba(13, 91, 63, .08));
  border: 1px solid rgba(13, 91, 63, .18);
  border-left-color: rgba(13, 91, 63, .36);
  border-right-color: rgba(13, 91, 63, .36);
  box-shadow:
    inset 0 0 0 1px rgba(255, 254, 250, .58),
    0 22px 46px -38px rgba(13, 91, 63, .72);
  color: var(--green);
  font-family: var(--font-body);
  font-size: .73rem;
  font-weight: 700;
  letter-spacing: .16em;
  text-transform: uppercase;
  pointer-events: none;
}
.journey-boli-gate span {
  position: relative;
  z-index: 2;
  display: inline-flex;
  align-items: center;
  min-height: 34px;
  padding: 0 var(--sp-4);
  border-radius: 999px;
  background: rgba(255, 254, 250, .88);
  border: 1px solid #b8d0c1;
  box-shadow: 0 0 0 8px rgba(13, 91, 63, .055);
}
.journey-boli-gate::before,
.journey-boli-gate::after {
  content: "";
  position: absolute;
  top: 58px;
  bottom: 20px;
  width: 1px;
  height: auto;
  background: linear-gradient(180deg, rgba(13, 91, 63, .28), rgba(13, 91, 63, .06));
}
.journey-boli-gate::before {
  left: 18px;
}
.journey-boli-gate::after {
  right: 18px;
}
.phys-board-svg-wrap {
  padding: var(--sp-4) var(--sp-5) var(--sp-6);
  overflow: hidden;
}
.phys-journey-rail {
  position: relative;
  --journey-edge-pad: clamp(var(--sp-6), calc(50% - 106px), 18rem);
  display: flex;
  gap: var(--sp-5);
  padding-top: calc(var(--sp-7) + 76px);
  padding-right: var(--journey-edge-pad);
  padding-bottom: var(--sp-7);
  padding-left: var(--journey-edge-pad);
  overflow-x: auto;
  overflow-y: visible;
  scroll-snap-type: x proximity;
  scroll-padding-inline: 0;
  -webkit-overflow-scrolling: touch;
  scrollbar-color: rgba(13, 91, 63, .32) transparent;
}
.phys-journey-line {
  position: absolute;
  z-index: 2;
  top: calc(var(--sp-7) + 44px);
  left: var(--journey-line-left, var(--journey-edge-pad, clamp(var(--sp-6), calc(50% - 106px), 18rem)));
  right: var(--journey-line-right, var(--journey-edge-pad, clamp(var(--sp-6), calc(50% - 106px), 18rem)));
  height: 18px;
  border-radius: 999px;
  background:
    linear-gradient(90deg, rgba(209, 143, 35, .32), rgba(13, 91, 63, .38) 18%, rgba(13, 91, 63, .42) 82%, rgba(209, 143, 35, .32)) center / 100% 2px no-repeat,
    linear-gradient(90deg, transparent, rgba(13, 91, 63, .06), transparent) center / 100% 18px no-repeat;
  box-shadow: none;
}
.journey-step {
  position: relative;
  z-index: 3;
  flex: 0 0 clamp(184px, 17.5vw, 212px);
  min-height: 232px;
  margin: 0;
  padding: var(--sp-3);
  background:
    linear-gradient(180deg, rgba(255, 254, 250, .98), rgba(251, 250, 246, .96)),
    var(--paper);
  border: 1px solid var(--rule);
  border-radius: var(--radius-lg);
  box-shadow:
    inset 2px 0 0 rgba(13, 91, 63, .22),
    0 14px 34px -30px rgba(17, 29, 23, .5);
  overflow: visible;
  scroll-snap-align: center;
  display: flex;
  flex-direction: column;
  transition:
    background .24s ease,
    border-color .24s ease,
    box-shadow .24s ease,
    color .24s ease,
    transform .24s ease;
}
.journey-step::before {
  display: none;
}
.journey-step::after {
  content: attr(data-icon);
  position: absolute;
  left: 50%;
  top: -58px;
  width: 34px;
  height: 34px;
  transform: translateX(-50%);
  border-radius: 999px;
  background: #fffefa;
  border: 1px solid #b8d0c1;
  box-shadow:
    0 0 0 7px rgba(13, 91, 63, .06),
    var(--shadow-sm);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--green);
  font-family: var(--font-body);
  font-size: .62rem;
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: uppercase;
}
.journey-step-left {
  max-width: none;
}
.journey-step-right {
  max-width: none;
  margin-left: 0;
}
.journey-step .journey-num {
  display: block;
  font-family: var(--font-head);
  font-size: clamp(2.35rem, 3.25vw, 3.05rem);
  line-height: .82;
  letter-spacing: var(--tr-tight);
  color: var(--gold);
  font-weight: 400;
  margin-bottom: var(--sp-2);
}
.journey-pill {
  display: inline-flex;
  align-items: center;
  min-height: 28px;
  padding: 0 12px;
  border-radius: 999px;
  background: var(--green-50);
  border: 1px solid #c9d9cf;
  color: var(--green);
  font-family: var(--font-body);
  font-size: var(--fs-eyebrow);
  font-weight: 600;
  letter-spacing: var(--tr-eyebrow);
  text-transform: uppercase;
  margin-bottom: var(--sp-3);
}
.journey-owner {
  position: absolute;
  top: 11px;
  right: 11px;
  display: inline-flex;
  align-items: center;
  height: 22px;
  padding: 0 8px;
  border-radius: 999px;
  background: rgba(13, 91, 63, .08);
  color: var(--green);
  font-family: var(--font-body);
  font-size: .66rem;
  font-weight: 700;
  letter-spacing: .12em;
  text-transform: uppercase;
}
.journey-owner::before {
  content: "";
  width: 5px;
  height: 5px;
  margin-right: 5px;
  border-radius: 999px;
  background: var(--brand-green);
}
.journey-step h4 {
  margin: 0 0 var(--sp-2);
  font-family: var(--font-head);
  font-size: clamp(1.05rem, 1.35vw, 1.2rem);
  line-height: var(--lh-snug);
  letter-spacing: var(--tr-snug);
  color: var(--ink);
  font-weight: 500;
}
.journey-step p {
  margin: 0;
  font-family: var(--font-body);
  font-size: .81rem;
  line-height: var(--lh-base);
  color: var(--ink-soft);
}
.journey-audience {
  display: block;
  margin-top: auto;
  padding-top: var(--sp-4);
  color: var(--ink-muted);
  font-family: var(--font-body);
  font-size: .66rem;
  font-weight: 700;
  letter-spacing: .13em;
  line-height: 1.2;
  text-transform: uppercase;
}
.journey-step.is-active {
  z-index: 4;
  transform: translateY(-3px);
  background:
    radial-gradient(360px 220px at 70% 0%, rgba(255, 254, 250, .08), transparent 66%),
    linear-gradient(180deg, #123f2d 0%, #0d3226 100%);
  border-color: rgba(209, 143, 35, .42);
  box-shadow:
    inset 2px 0 0 var(--gold),
    0 22px 42px -34px rgba(13, 26, 20, .72),
    inset 0 0 0 1px rgba(255, 254, 250, .08);
}
.journey-step.is-active::after {
  background: var(--gold);
  border-color: #fffefa;
  color: #fffefa;
  box-shadow: 0 0 0 7px rgba(209, 143, 35, .16);
}
.journey-step.is-active .journey-num {
  color: var(--gold);
}
.journey-step.is-active .journey-pill {
  background: rgba(255, 254, 250, .09);
  border-color: rgba(255, 254, 250, .22);
  color: rgba(255, 254, 250, .82);
}
.journey-step.is-active .journey-owner {
  background: rgba(255, 254, 250, .10);
  color: rgba(255, 254, 250, .86);
}
.journey-step.is-active .journey-owner::before {
  background: var(--gold);
}
.journey-step.is-active h4 {
  color: #fffefa;
}
.journey-step.is-active p {
  color: rgba(255, 254, 250, .78);
}
.journey-step.is-active .journey-audience {
  color: rgba(255, 254, 250, .58);
}
.journey-step-visit {
  z-index: 2;
  background:
    linear-gradient(180deg, rgba(245, 241, 230, .72), rgba(255, 254, 250, .96)),
    var(--paper-2);
}
.journey-step-visit::before {
  background: var(--gold);
}
.journey-step-visit::after {
  border-color: rgba(209, 143, 35, .55);
  box-shadow:
    0 0 0 7px rgba(209, 143, 35, .08),
    var(--shadow-sm);
  color: var(--gold);
}
.journey-step-plateau .journey-pill {
  background: var(--coral-50);
  border-color: var(--coral-100);
  color: var(--coral-deep);
}
.journey-step-plateau::before {
  background: var(--coral);
}
.journey-step-plateau::after {
  border-color: var(--gold);
}
.journey-step-good .journey-pill,
.journey-step-boli .journey-pill {
  background: var(--green-50);
  border-color: #b8d0c1;
  color: var(--green);
}
.journey-options {
  flex: 0 0 198px;
  display: flex;
  flex-wrap: wrap;
  align-content: flex-start;
  gap: var(--sp-2);
  align-self: end;
  min-height: 144px;
  margin: 0;
  padding: var(--sp-3);
  border: 1px dashed #c9d9cf;
  border-radius: var(--radius-lg);
  background: rgba(255, 254, 250, .62);
  scroll-snap-align: start;
}
.journey-options-label {
  flex-basis: 100%;
  font-family: var(--font-body);
  font-size: var(--fs-eyebrow);
  font-weight: 600;
  letter-spacing: var(--tr-eyebrow);
  text-transform: uppercase;
  color: var(--ink-muted);
}
.journey-options span:not(.journey-options-label) {
  display: inline-flex;
  padding: 6px 9px;
  border-radius: 999px;
  background: #fffefa;
  border: 1px solid var(--rule);
  font-family: var(--font-body);
  font-size: .78rem;
  color: var(--ink-soft);
}
.journey-carousel-controls {
  display: flex;
  justify-content: center;
  gap: var(--sp-4);
  padding: 0 0 var(--sp-5);
}
.journey-nav-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 38px;
  padding: 0 var(--sp-4);
  border-radius: 999px;
  border: 1px solid #c9d9cf;
  background: #fffefa;
  color: var(--green);
  font-family: var(--font-body);
  font-size: var(--fs-eyebrow);
  font-weight: 700;
  letter-spacing: var(--tr-eyebrow);
  text-transform: uppercase;
  cursor: pointer;
  transition: transform .18s ease, border-color .18s ease, background .18s ease;
}
.journey-nav-btn:hover {
  transform: translateY(-1px);
  border-color: #abc9b8;
  background: var(--green-50);
}
.journey-nav-btn:focus-visible {
  outline: 3px solid rgba(13, 91, 63, .22);
  outline-offset: 2px;
}
.phys-board-svg {
  display: block;
  width: 100%;
  height: auto;
  font-family: var(--font-body);
}
.board-thread-glow {
  fill: none;
  stroke: #dfe9df;
  stroke-width: 30;
  stroke-linecap: round;
  opacity: .9;
}
.board-thread {
  fill: none;
  stroke: url(#boardThread);
  stroke-width: 8;
  stroke-linecap: round;
  opacity: .9;
}
.board-tile {
  fill: var(--cream);
  stroke: #d8c9a6;
  stroke-width: 1.1;
}
.board-tile-start,
.board-tile-end {
  fill: var(--gold);
  stroke: #bc7d20;
}
.board-tile-good,
.board-tile-boli {
  fill: var(--green-50);
  stroke: #abc9b8;
}
.board-tile-warn {
  fill: #f4e3c2;
  stroke: #ddb767;
}
.board-tile-plateau {
  fill: var(--coral-100);
  stroke: var(--coral-deep);
}
.board-tile-label {
  font-family: var(--font-body);
  font-size: 17px;
  font-weight: 500;
  fill: var(--ink);
}
.board-tile-group-start .board-tile-label,
.board-tile-group-end .board-tile-label {
  fill: #fffefa;
}
.board-tile-number {
  font-family: var(--font-body);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: .08em;
  fill: var(--ink-muted);
  opacity: .7;
}
.board-tile-kicker {
  font-family: var(--font-body);
  font-size: 10px;
  font-weight: 600;
  letter-spacing: .16em;
  text-transform: uppercase;
  fill: var(--ink-muted);
  opacity: .72;
}
.board-tile-group-start .board-tile-kicker,
.board-tile-group-end .board-tile-kicker {
  fill: #fffefa;
  opacity: .82;
}
.board-tile-group-start .board-tile-number,
.board-tile-group-end .board-tile-number {
  fill: #fffefa;
  opacity: .8;
}
.board-tile-sub {
  font-family: var(--font-body);
  font-size: 13px;
  font-weight: 500;
  font-style: italic;
  fill: var(--ink-muted);
}
.board-tile-plateau ~ .board-tile-sub {
  fill: var(--coral-deep);
}
.board-aside-title {
  font-family: var(--font-body);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .18em;
  text-transform: uppercase;
  fill: var(--ink-muted);
}
.board-option-card {
  fill: #f8f5eb;
  stroke: #cbd9ce;
  stroke-width: 1.5;
}
.board-option-text {
  font-family: var(--font-body);
  font-size: 15px;
  font-weight: 500;
  fill: var(--ink-soft);
}
.board-caption-text {
  font-family: var(--font-body);
  font-size: 16px;
  font-weight: 600;
  font-style: italic;
  fill: var(--ink-muted);
}
.board-boli-pill-text {
  font-family: var(--font-body);
  font-size: 15px;
  font-weight: 700;
  fill: var(--green);
}

@media (max-width: 980px) {
  .phys-board .section-head {
    padding: var(--sp-6) var(--sp-5) 0;
  }
  .phys-board-card {
    --journey-card-header: clamp(158px, 34vw, 202px);
  }
  .phys-board-card-head {
    padding: var(--sp-5) var(--sp-5) 0;
  }
  .phys-journey-rail {
    gap: var(--sp-4);
    --journey-edge-pad: clamp(var(--sp-5), calc(50% - 124px), 10rem);
    padding-top: calc(var(--sp-7) + 68px);
    padding-right: var(--journey-edge-pad);
    padding-bottom: var(--sp-6);
    padding-left: var(--journey-edge-pad);
    scroll-padding-inline: 0;
  }
  .phys-journey-line {
    top: calc(var(--sp-7) + 38px);
    left: var(--journey-edge-pad, clamp(var(--sp-5), calc(50% - 124px), 10rem));
    right: var(--journey-edge-pad, clamp(var(--sp-5), calc(50% - 124px), 10rem));
  }
  /* On tablet/mobile the sas dimensions are driven entirely by the JS-set
     CSS vars (see .journey-boli-gate above) so it keeps tracking the wider
     active card. We don't repeat the fixed fallbacks here. */
  .journey-step,
  .journey-step-right {
    flex-basis: 248px;
    margin: 0;
    min-height: auto;
    max-width: none;
  }
  .journey-options {
    margin: 0;
  }
}

.phys-reassure {
  margin-top: var(--sp-7);
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr);
  gap: 0;
  align-items: stretch;
  background: var(--paper-2);
  border: 1px solid var(--rule);
  border-radius: var(--radius-lg);
  overflow: hidden;
  box-shadow: var(--shadow-sm);
}

/* ─── Photo half ─── */
.phys-reassure-photo {
  position: relative;
  min-height: 380px;
  background: var(--cream);
  overflow: hidden;
}
.phys-reassure-photo::after {
  /* subtle warm wash so the photo blends with the paper-2 bg */
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, transparent 0%, transparent 70%, rgba(245, 241, 230, .35) 100%);
  pointer-events: none;
}
.phys-reassure-photo img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center 55%;   /* keep face in upper third, hands + prescription pad visible below */
}

/* ─── Body half ─── */
.phys-reassure-body {
  padding: var(--sp-7) var(--sp-7);
  display: flex;
  flex-direction: column;
  justify-content: center;
}
.phys-reassure-eyebrow {
  display: inline-block;
  font-family: var(--font-body);
  font-size: var(--fs-eyebrow);
  letter-spacing: var(--tr-eyebrow);
  text-transform: uppercase;
  color: var(--gold);
  font-weight: 600;
  margin-bottom: var(--sp-3);
}
.phys-reassure h3 {
  font-family: var(--font-head);
  font-size: clamp(1.7rem, 2.6vw, 2.3rem);
  line-height: var(--lh-snug);
  letter-spacing: var(--tr-snug);
  color: var(--ink);
  margin: 0 0 var(--sp-4);
  font-weight: 500;
}
.phys-reassure h3 em {
  font-style: italic;
  color: var(--green);
}
.phys-reassure p {
  font-family: var(--font-body);
  font-size: var(--fs-lede);
  line-height: var(--lh-base);
  color: var(--ink-soft);
  margin: 0;
  max-width: 52ch;
}
.phys-reassure p strong {
  color: var(--ink);
  font-weight: 600;
}

/* ─── Mobile fallback (< 880px): stack photo above body ─── */
@media (max-width: 880px) {
  .phys-reassure {
    grid-template-columns: 1fr;
  }
  .phys-reassure-photo {
    min-height: 320px;
  }
  .phys-reassure-body {
    padding: var(--sp-6);
  }
}
