/* One visual language for partnership, service and editorial process paths. */
.pm-journey {
  --route-progress: 1;
  --drawing-paper: var(--surface);
  --drawing-shadow: var(--surface-2);
  --drawing-wash: var(--accent-soft);
  position: relative;
  isolation: isolate;
  min-width: 0;
}
.pm-stage-visual {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  height: 172px;
  min-width: 0;
  color: var(--ink);
  background: radial-gradient(ellipse at 50% 52%, var(--drawing-wash), transparent 70%);
}
.pm-stage-visual::before {
  content: '';
  position: absolute;
  width: 112px;
  height: 112px;
  border: 1px solid var(--line);
  border-radius: 50%;
  opacity: .65;
}
.pm-stage-drawing {
  display: block;
  position: relative;
  width: 148px;
  height: 130px;
  overflow: visible;
  transform: translateY(0);
  transition: transform .7s cubic-bezier(.2,.7,.2,1);
}
.pm-drawing-paper { fill: var(--drawing-paper); }
.pm-drawing-shadow { fill: var(--drawing-shadow); stroke: var(--line); }
.pm-drawing-accent { fill: var(--drawing-wash); stroke: var(--accent); }
.pm-drawing-cursor { fill: var(--accent); stroke: var(--drawing-paper); stroke-width: 2.5px; }
.pm-drawing-ground { fill: var(--drawing-shadow); opacity: .65; }
.pm-drawing-dot { fill: var(--accent); stroke: none; }
.pm-drawing-float {
  transform: translateY(0);
  transition: transform .8s cubic-bezier(.2,.7,.2,1);
}
.pm-stage-index {
  position: absolute;
  inset: 13px auto auto 0;
  color: var(--accent);
  font-size: 12px;
  font-weight: 700;
  line-height: 1;
  letter-spacing: .07em;
  font-variant-numeric: tabular-nums;
}
.pm-stage-pin {
  position: absolute;
  bottom: -4px;
  left: 50%;
  width: 9px;
  height: 9px;
  border-radius: 50%;
  background: var(--accent);
  box-shadow: 0 0 0 6px var(--paper);
}
.pm-journey-stop { min-width: 0; }
/* Four stages stay together on wide screens; two balanced rows at intermediate widths. */
.partner-process-v5.pm-journey {
  grid-template-columns: repeat(4,minmax(0,1fr));
  gap: clamp(24px,3vw,46px);
  margin-block: 46px 72px !important;
  counter-reset: none;
}
.partner-process-v5.pm-journey[data-pm-stages="3"] { grid-template-columns: repeat(3,minmax(0,1fr)); }
.partner-step-v5.pm-journey-stop {
  padding: 0;
  border: 0;
  counter-increment: none;
  position: relative;
}
.partner-step-v5.pm-journey-stop::before { content: none; }
.partner-step-v5.pm-journey-stop::after {
  content: '';
  position: absolute;
  top: 172px;
  left: 0;
  right: calc(-1 * clamp(24px,3vw,46px));
  height: 1px;
  background: var(--line);
  z-index: -1;
}
.partner-step-v5.pm-journey-stop:last-child::after { right: 0; }
.partner-step-v5.pm-journey-stop h3 {
  font-size: clamp(20px,1.9vw,26px);
  line-height: 1.35;
  letter-spacing: -.035em;
  margin: 37px 0 18px !important;
}
.partner-step-v5.pm-journey-stop > p {
  font-size: 14px;
  line-height: 1.95;
  margin: 0;
  max-width: 36em;
}
/* Full narrative path: illustration on the rail, useful detail alongside it. */
.flow-section:has(.pm-journey--editorial) {
  grid-template-columns: .75fr 1.25fr;
  gap: clamp(38px,6vw,94px);
}
.flow-steps.pm-journey {
  gap: 0;
  padding: 0;
}
.flow-steps.pm-journey::before,
.flow-steps.pm-journey::after {
  content: '';
  position: absolute;
  top: 80px;
  bottom: 120px;
  left: 75px;
  width: 1px;
  background: var(--line);
  z-index: -1;
  pointer-events: none;
}
.flow-steps.pm-journey::after {
  background: var(--accent);
  transform: scaleY(var(--route-progress));
  transform-origin: top;
  opacity: .65;
}
.flow-step.pm-journey-stop {
  grid-template-columns: 150px minmax(0,1fr);
  align-items: start;
  gap: clamp(23px,3vw,44px);
  margin: 0 !important;
  padding: 0 0 42px !important;
  border: 0;
}
.flow-step.pm-journey-stop:last-child { padding-bottom: 0 !important; }
.flow-step .pm-stage-visual {
  height: 166px;
  background-color: var(--paper);
  border-radius: 50%;
}
.flow-step .pm-stage-index { top: 6px; left: 8px; }
.flow-step .pm-stage-pin { bottom: 0; left: calc(50% - 4px); }
.flow-step.pm-journey-stop .flow-step-copy {
  min-width: 0;
  padding: 13px 0 34px;
  border-bottom: 1px solid var(--line);
}
.flow-step.pm-journey-stop:last-child .flow-step-copy { border: 0; padding-bottom: 0; }
.flow-step.pm-journey-stop h3 { font-size: clamp(23px,2.25vw,31px); line-height: 1.3; }
.flow-step.pm-journey-stop .flow-step-label { font-size: 11px !important; margin-bottom: 12px !important; }
.flow-step.pm-journey-stop .flow-outcome { border: 0; padding-left: 21px; position: relative; }
.flow-step.pm-journey-stop .flow-outcome::before {
  content: '';
  position: absolute;
  left: 0;
  top: .55em;
  width: 9px;
  height: 6px;
  border-left: 1.5px solid var(--accent);
  border-bottom: 1.5px solid var(--accent);
  transform: rotate(-45deg);
}
/* Short service paths get a horizontal, illustrated sequence rather than a plain list. */
.service-section--process:has(.pm-journey--service) {
  display: block;
  padding: clamp(26px,4vw,54px);
  margin-block: 70px !important;
  border: 1px solid var(--line);
  border-radius: 28px;
  background: var(--surface);
}
.service-section--process:has(.pm-journey--service) > h2 {
  position: static;
  font-size: clamp(27px,3vw,39px);
  max-width: none;
  margin-bottom: 34px !important;
}
.service-section--process:has(.pm-journey--service) > h2::before { content: none; }
.pm-service-stages.pm-journey {
  --drawing-paper: var(--paper);
  display: grid;
  grid-template-columns: repeat(auto-fit,minmax(140px,1fr));
  gap: 22px;
  list-style: none;
  margin: 0 0 34px !important;
  padding: 0 !important;
}
.pm-service-stages.pm-journey > li {
  display: block;
  position: relative;
  padding: 0;
  border: 0;
  min-width: 0;
  counter-increment: none;
  font-size: 14px;
  line-height: 1.65;
  font-weight: 600;
}
.pm-service-stages.pm-journey > li::before { content: none; }
.pm-service-stages.pm-journey > li::after {
  content: '';
  position: absolute;
  top: 146px;
  left: 0;
  right: -22px;
  height: 1px;
  background: var(--line);
  z-index: -1;
}
.pm-service-stages.pm-journey > li:last-child::after { right: 0; }
.pm-service-stages .pm-stage-visual { height: 146px; }
.pm-service-stages .pm-stage-drawing { width: 132px; height: 116px; }
.pm-service-stages .pm-stage-visual::before { width: 98px; height: 98px; }
.pm-service-stages .pm-stage-pin { box-shadow: 0 0 0 6px var(--surface); }
.pm-service-stages .pm-stage-index { font-size: 10px; }
.pm-service-stages .pm-stage-title { padding: 27px 0 0; }
.pm-service-stages .pm-stage-title::first-letter { text-transform: uppercase; }
.service-section--process .service-detail-copy > p { max-width: 760px; font-size: 15px; }
.service-section--process .service-detail-copy > p:last-child { margin-bottom: 0; }
@media (hover:hover) and (pointer:fine) {
  .pm-journey-stop:hover .pm-stage-drawing,
  .pm-service-stages > li:hover .pm-stage-drawing { transform: translateY(-3px); }
  .pm-journey-stop:hover .pm-drawing-float,
  .pm-service-stages > li:hover .pm-drawing-float { transform: translateY(-5px); }
}
@media (max-width:1150px) {
  .partner-process-v5.pm-journey { grid-template-columns: repeat(2,minmax(0,1fr)); gap: 45px 38px; }
  .partner-step-v5.pm-journey-stop:nth-child(2n)::after { right: 0; }
  .partner-step-v5.pm-journey-stop::after { right: -38px; }
  .partner-step-v5.pm-journey-stop h3 { font-size: 24px; }
  .pm-service-stages.pm-journey { grid-template-columns: repeat(3,minmax(0,1fr)); row-gap: 38px; }
  .pm-service-stages.pm-journey > li:nth-child(3n)::after { right: 0; }
}
@media (max-width:900px) {
  .flow-section:has(.pm-journey--editorial) { grid-template-columns: 1fr; gap: 40px; }
  .flow-section:has(.pm-journey--editorial) .flow-intro { position: static; max-width: 650px; }
  .flow-section:has(.pm-journey--editorial) .flow-intro > p { max-width: 540px; }
  .flow-step.pm-journey-stop { grid-template-columns: 150px minmax(0,1fr); gap: 35px; }
}
@media (max-width:580px) {
  .partner-process-v5.pm-journey { grid-template-columns: 1fr; gap: 0; margin-block: 30px 46px !important; }
  .partner-process-v5.pm-journey[data-pm-stages="3"] { grid-template-columns: 1fr; }
  .partner-step-v5.pm-journey-stop { display: grid; grid-template-columns: 84px minmax(0,1fr); gap: 0 20px; padding: 0 0 32px; }
  .partner-step-v5.pm-journey-stop:last-child { padding-bottom: 0; }
  .partner-step-v5.pm-journey-stop::after { top: 83px; bottom: 0; left: 42px; width: 1px; height: auto; right: auto; }
  .partner-step-v5.pm-journey-stop:last-child::after { content: none; }
  .partner-step-v5 .pm-stage-visual { grid-column: 1; grid-row: 1 / 3; align-self: start; height: 105px; background-color: var(--paper); }
  .partner-step-v5 .pm-stage-index { top: 0; left: 0; }
  .partner-step-v5 .pm-stage-visual::before { width: 68px; height: 68px; }
  .partner-step-v5 .pm-stage-drawing { width: 88px; height: 83px; }
  .partner-step-v5 .pm-stage-pin { bottom: 2px; left: 38px; width: 7px; height: 7px; }
  .partner-step-v5.pm-journey-stop h3 { grid-column: 2; margin: 10px 0 13px !important; font-size: 21px; }
  .partner-step-v5.pm-journey-stop > p { grid-column: 2; font-size: 13px; line-height: 1.9; }
  .flow-step.pm-journey-stop { grid-template-columns: 78px minmax(0,1fr); gap: 22px; padding-bottom: 28px !important; }
  .flow-step .pm-stage-visual { height: 110px; }
  .flow-step .pm-stage-drawing { width: 84px; height: 78px; }
  .flow-step .pm-stage-visual::before { width: 65px; height: 65px; }
  .flow-step .pm-stage-index { top: 3px; left: 0; font-size: 10px; }
  .flow-step .pm-stage-pin { width: 7px; height: 7px; bottom: 3px; left: calc(50% - 3px); }
  .flow-steps.pm-journey::before,.flow-steps.pm-journey::after { left: 39px; top: 85px; bottom: 140px; }
  .flow-step.pm-journey-stop .flow-step-copy { padding: 8px 0 27px; }
  .flow-step.pm-journey-stop h3 { font-size: 22px; }
  .flow-step.pm-journey-stop .flow-step-copy > p { font-size: 14px; }
  .flow-step.pm-journey-stop .flow-step-copy .flow-outcome { font-size: 12px; }
  .service-section--process:has(.pm-journey--service) { padding: 27px 21px; margin-block: 42px !important; border-radius: 22px; }
  .service-section--process:has(.pm-journey--service) > h2 { font-size: 28px; margin-bottom: 26px !important; }
  .pm-service-stages.pm-journey { grid-template-columns: 1fr; gap: 0; }
  .pm-service-stages.pm-journey > li { display: grid; grid-template-columns: 74px minmax(0,1fr); align-items: center; gap: 21px; padding-bottom: 23px; font-size: 14px; }
  .pm-service-stages.pm-journey > li:last-child { padding-bottom: 0; }
  .pm-service-stages.pm-journey > li::after { top: 73px; bottom: 0; left: 37px; width: 1px; height: auto; }
  .pm-service-stages.pm-journey > li:last-child::after { content: none; }
  .pm-service-stages .pm-stage-visual { height: 90px; background-color: var(--surface); }
  .pm-service-stages .pm-stage-drawing { width: 78px; height: 70px; }
  .pm-service-stages .pm-stage-visual::before { width: 58px; height: 58px; }
  .pm-service-stages .pm-stage-index { inset: 0 auto auto 0; }
  .pm-service-stages .pm-stage-pin { bottom: 1px; left: 34px; width: 7px; height: 7px; }
  .pm-service-stages .pm-stage-title { padding: 4px 0 0; }
}
@media (prefers-reduced-motion:reduce) {
  .pm-stage-drawing,.pm-drawing-float { transition: none; transform: none !important; }
  .flow-steps.pm-journey::after { transform: none; }
}
/* Narrow phones keep long explanations at full width instead of a cramped side column. */
@media (max-width:380px) {
  .flow-steps.pm-journey::before,.flow-steps.pm-journey::after { content: none; }
  .flow-step.pm-journey-stop {
    display: flow-root;
    padding: 0 0 30px !important;
    margin-bottom: 30px !important;
    border-bottom: 1px solid var(--line);
  }
  .flow-step.pm-journey-stop:last-child { margin-bottom: 0 !important; border: 0; }
  .flow-step .pm-stage-visual { width: 80px; height: 108px; float: left; margin: 0 20px 10px 0; }
  .flow-step.pm-journey-stop .flow-step-copy { border: 0; padding: 12px 0 0; }
  .flow-step.pm-journey-stop .flow-step-copy > p:not(.flow-step-label):not(.flow-outcome) { clear: both; padding-top: 12px; }
  .flow-step.pm-journey-stop h3 { font-size: 21px; }
  .flow-step.pm-journey-stop .flow-step-label { padding-top: 2px; }
  .partner-step-v5.pm-journey-stop { padding-bottom: 28px; margin-bottom: 28px !important; border-bottom: 1px solid var(--line); }
  .partner-step-v5.pm-journey-stop:last-child { border: 0; margin-bottom: 0 !important; }
  .partner-step-v5.pm-journey-stop::after { content: none; }
  .partner-step-v5 .pm-stage-visual { grid-row: 1; }
  .partner-step-v5.pm-journey-stop h3 { align-self: center; }
  .partner-step-v5.pm-journey-stop > p { grid-column: 1 / -1; margin-top: 19px; font-size: 14px; }
}
@media print {
  .pm-journey { break-inside: auto; }
  .pm-journey-stop,.pm-service-stages > li { break-inside: avoid; }
  .pm-stage-drawing,.pm-drawing-float { transform: none !important; }
  .flow-steps.pm-journey::after { transform: none; }
}
