/* PRODUCT v54: the product page, designed from zero. This file: the hero's layered product object, the rules
   strip and the scroll story ("one ticket, end to end"). product2.css holds the sections below it.
   One orchestrated entrance in the hero; the story moves only when the reader scrolls. Nothing loops. */
.pv .band:not(.white) { background: #f6f9fc; }
.pv code { font-family: var(--mono); font-size: .86em; }

/* tags: plain status pills, no dots */
.tg { display: inline-flex; align-items: center; height: 24px; padding: 0 9px; border-radius: 999px; font-size: 12.5px; font-weight: 500; white-space: nowrap; }
.tg.t-ok { background: #e3f6e9; color: #0f6b34; } .tg.t-ask { background: #e8f0ff; color: #1f55e6; } .tg.t-eng { background: #eef1f5; color: #4a5875; }
.tg.t-lrn { background: #fff3dc; color: #8a5a00; } .tg.t-dp { background: #eef1f5; color: #5b6b8c; }

/* 1. Hero: the Trace ticket view laid over the SAP screen it read */
.pv-hero .ph-grid { grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); gap: 64px; }
.inner .subnav + .pv-hero { padding-top: 120px; }
.pv-hero .page-title { max-width: 11ch; }
.cx { position: relative; padding: 96px 0 34px 64px; }
.cx-sap { position: absolute; left: 0; top: 0; width: 330px; padding: 0 0 8px; border-radius: 8px; background: #eef2f8; box-shadow: 0 0 0 1px rgba(10, 37, 64, .1), 0 20px 40px -24px rgba(20, 45, 110, .45); font-size: 12px; color: var(--slate); }
.cs-t { padding: 9px 12px; border-bottom: 1px solid rgba(10, 37, 64, .08); background: #e3e9f3; border-radius: 8px 8px 0 0; } .cs-t b { font-family: var(--mono); color: var(--ink); margin-right: 6px; }
.cs-r { display: grid; grid-template-columns: 1.2fr 1fr 30px; gap: 8px; padding: 6px 12px; } .cs-r code { font-size: 11.5px; }
.cs-r.hit { background: #fff6dd; box-shadow: inset 0 0 0 1.5px #f2b53c; }
code.g { color: #0f6b34; font-weight: 600; } code.y { color: #a35f00; font-weight: 600; }
.cx-win { position: relative; border-radius: 12px; background: #fff; box-shadow: var(--shadow); overflow: hidden; }
.cx-bar { display: flex; align-items: center; gap: 6px; height: 36px; padding: 0 14px; background: #f6f8fb; border-bottom: 1px solid var(--line); }
.cx-bar i { width: 9px; height: 9px; border-radius: 50%; background: #dde3ec; }
.cx-bar span { margin: 0 auto; padding: 3px 12px; border-radius: 6px; background: #fff; font: 11.5px var(--mono); color: var(--muted); box-shadow: 0 0 0 1px var(--line); }
.cx-body { display: grid; grid-template-columns: 148px minmax(0, 1fr); }
.cx-side { list-style: none; margin: 0; padding: 16px 10px; background: #fafbfd; border-right: 1px solid var(--line); font-size: 13px; color: var(--slate); }
.cx-side li { display: flex; justify-content: space-between; padding: 7px 9px; border-radius: 6px; } .cx-side li.on { background: #eef3ff; color: #1f55e6; font-weight: 500; }
.cx-side em { font-style: normal; font-size: 12px; color: var(--muted); } .cx-side li.on em { color: var(--accent); }
.cx-main { padding: 20px 22px 22px; }
.cx-id { display: flex; align-items: center; justify-content: space-between; gap: 10px; } .cx-id code { font-size: 12.5px; color: var(--muted); }
.cx-main h4 { margin: 8px 0 0; font-size: 20px; font-weight: 600; letter-spacing: -.02em; color: var(--ink); }
.cx-q { margin-top: 10px; padding-left: 12px; border-left: 2px solid #d7e2fb; font-size: 14px; line-height: 1.5; color: var(--slate); }
.cx-ev { list-style: none; margin: 16px 0 0; padding: 0; }
.cx-ev li { display: grid; grid-template-columns: 52px 1fr 16px; align-items: center; gap: 10px; padding: 9px 0; border-top: 1px solid var(--line); font-size: 13.5px; color: var(--ink); }
.cx-ev code { justify-self: start; padding: 2px 6px; border-radius: 4px; background: #eef3ff; color: #1f55e6; font-size: 11.5px; font-weight: 500; }
.cx-ev li::after { content: ""; width: 10px; height: 5px; margin-top: -3px; border-left: 2px solid #12a97a; border-bottom: 2px solid #12a97a; transform: rotate(-45deg); }
.cx-act { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; margin-top: 16px; padding-top: 16px; border-top: 1px solid var(--line); }
.cx-btn { padding: 9px 14px; border-radius: 6px; background: var(--accent); color: #fff; font-size: 13.5px; font-weight: 500; box-shadow: 0 6px 14px -8px rgba(47, 107, 255, .8); }
.cx-done { font-size: 13.5px; font-weight: 500; color: #0f6b34; }
.cx-chip { position: absolute; right: -14px; bottom: 0; display: grid; gap: 2px; padding: 12px 16px; border-radius: 10px; background: #fff; box-shadow: var(--shadow-sm), 0 0 0 1px var(--line); font-size: 12.5px; color: var(--muted); }
.cx-chip b { font-size: 14px; color: var(--ink); font-weight: 600; }
/* the one entrance: the window lands, the evidence ticks in, the fix is checked */
@media (prefers-reduced-motion: no-preference) {
  .cx-sap { animation: cxUp .8s cubic-bezier(.2, .7, .2, 1) both; }
  .cx-win { animation: cxUp .9s .12s cubic-bezier(.2, .7, .2, 1) both; }
  .cx-ev li { animation: cxRow .5s cubic-bezier(.2, .7, .2, 1) both; } .cx-ev li:nth-child(1) { animation-delay: .7s; } .cx-ev li:nth-child(2) { animation-delay: 1s; } .cx-ev li:nth-child(3) { animation-delay: 1.3s; }
  .cx-ev li::after { animation: cxTick .3s ease both; } .cx-ev li:nth-child(1)::after { animation-delay: .95s; } .cx-ev li:nth-child(2)::after { animation-delay: 1.25s; } .cx-ev li:nth-child(3)::after { animation-delay: 1.55s; }
  .cx-done { animation: cxRow .5s 2s ease both; } .cx-chip { animation: cxUp .7s 2.3s cubic-bezier(.2, .7, .2, 1) both; }
}
@keyframes cxUp { from { opacity: 0; transform: translateY(18px); } }
@keyframes cxRow { from { opacity: 0; transform: translateX(-6px); } }
@keyframes cxTick { from { opacity: 0; transform: rotate(-45deg) scale(.4); } }

/* 2. The rules strip: four numbers that are rules, straddling the hero's edge */
.pv-rules { position: relative; z-index: 3; margin-top: -104px; }
.rules { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, 1fr); border-radius: 12px; background: #fff; box-shadow: 0 0 0 1px var(--line), 0 30px 60px -36px rgba(20, 45, 110, .4); }
.rules li { position: relative; padding: 28px 30px 30px; border-left: 1px solid var(--line); } .rules li:first-child { border-left: 0; }
.rules b { display: block; font-size: 44px; line-height: 1; font-weight: 500; letter-spacing: -.04em; color: var(--ink); }
.rules span { display: block; margin-top: 10px; font-size: 15px; line-height: 1.45; color: var(--slate); max-width: 22ch; }
.rules li::before { content: ""; position: absolute; left: 30px; right: 30px; top: -1px; height: 2px; background: linear-gradient(90deg, #22b8ff, #2f6bff 55%, #7b5cff); transform: scaleX(0); transform-origin: 0 50%; transition: transform 1s cubic-bezier(.3, .6, .2, 1); }
.rules li:nth-child(2)::before { transition-delay: .12s; } .rules li:nth-child(3)::before { transition-delay: .24s; } .rules li:nth-child(4)::before { transition-delay: .36s; }
.rules.in li::before { transform: scaleX(1); }

/* 3. The story: steps on the left, one sticky screen on the right that changes as the reader scrolls */
.hw { position: relative; padding: 128px 0 112px; background: #fff; }
.lede2, .hw-h { max-width: 880px; font-size: clamp(28px, 3.2vw, 42px); line-height: 1.16; letter-spacing: -.03em; font-weight: 500; color: var(--ink); text-wrap: balance; }
.lede2 span, .hw-h span { color: var(--slate); }
.hw-grid { position: relative; display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); column-gap: 64px; margin-top: 56px; }
.hw-step { display: contents; }
.hw-copy { position: relative; padding-left: 58px; }
.hw-n { position: relative; z-index: 1; margin: 0 0 -32px -58px; display: grid; place-items: center; width: 34px; height: 34px; border-radius: 50%; background: #fff; box-shadow: inset 0 0 0 1.5px #cfd9ec; font-size: 14px; font-weight: 600; color: var(--slate); transition: background .35s, color .35s, box-shadow .35s; }
.hw-step.on .hw-n { background: var(--accent); color: #fff; box-shadow: none; }
.hw-copy h3 { font-size: 26px; line-height: 1.2; font-weight: 600; letter-spacing: -.025em; color: var(--ink); max-width: 18ch; }
.hw-copy p { margin-top: 12px; font-size: 17px; line-height: 1.6; color: var(--slate); max-width: 38ch; }
.hw-rail { position: absolute; left: 16px; top: 0; bottom: 0; width: 2px; background: #e4eaf5; -webkit-mask-image: linear-gradient(180deg, transparent, #000 12%, #000 88%, transparent); mask-image: linear-gradient(180deg, transparent, #000 12%, #000 88%, transparent); }
.hw-rail b { position: absolute; left: 0; top: 0; width: 100%; height: var(--p, 0%); background: linear-gradient(180deg, #2ee6d6, #22b8ff, #2f6bff, #7b5cff); }
.hw-stage { position: relative; overflow: hidden; border-radius: 16px; background: linear-gradient(180deg, #f3f6fd, #e8eefb); box-shadow: inset 0 0 0 1px rgba(10, 37, 64, .06); isolation: isolate; }
.hw-stage canvas[data-chrome] { top: auto; height: 74%; z-index: -1; }
.hw-note { margin-top: 40px; font-size: 13px; color: var(--muted); }

/* the screens */
.scn { border-radius: 12px; background: #fff; box-shadow: 0 0 0 1px rgba(10, 37, 64, .06), 0 30px 60px -22px rgba(20, 35, 110, .38); overflow: hidden; color: var(--ink); }
.scn-h { padding: 14px 22px; border-bottom: 1px solid var(--line); background: #fafbfd; font-size: 13px; color: var(--muted); } .scn-h code { color: var(--ink); font-weight: 500; }
.scn > :not(.scn-h):not(.scn-f) { margin-left: 22px; margin-right: 22px; }
.scn-f { display: flex; justify-content: space-between; gap: 16px; margin-top: 18px; padding: 15px 22px; border-top: 1px solid var(--line); font-size: 14px; } .scn-f span { color: var(--muted); } .scn-f b { font-weight: 600; text-align: right; } .scn-f.ok b { color: #0f6b34; }
.rd { margin-top: 30px; font-size: 20px; line-height: 2.15; letter-spacing: -.01em; }
.rd mark { position: relative; padding: 2px 4px; border-radius: 4px; background: rgba(47, 107, 255, .1); color: var(--ink); box-shadow: inset 0 -2px 0 var(--accent); }
.rd mark::after { content: attr(data-k); position: absolute; left: 4px; top: -17px; font-size: 11px; line-height: 1; font-weight: 600; letter-spacing: 0; color: var(--accent); white-space: nowrap; }
.gt { margin-top: 18px; border-radius: 8px; box-shadow: 0 0 0 1px var(--line); overflow: hidden; }
.gt p { display: grid; grid-template-columns: 1.6fr 1fr .7fr .6fr; gap: 10px; padding: 10px 14px; border-top: 1px solid var(--line); font-size: 13px; } .gt p:first-child { border-top: 0; }
.gt .gh { background: #f6f8fb; font-size: 12px; color: var(--muted); font-weight: 500; }
.gt p.hit { background: #fff6dd; box-shadow: inset 0 0 0 1.5px #f2b53c; }
.ck { list-style: none; margin-top: 12px !important; padding: 0; }
.ck li { display: flex; justify-content: space-between; gap: 14px; padding: 13px 0 13px 28px; border-top: 1px solid var(--line); font-size: 15px; position: relative; } .ck li:first-child { border-top: 0; }
.ck li::before { content: ""; position: absolute; left: 3px; top: 18px; width: 11px; height: 5px; border-left: 2px solid #12a97a; border-bottom: 2px solid #12a97a; transform: rotate(-45deg); }
.ck b { font-weight: 600; text-align: right; }
.fx { display: flex; align-items: center; gap: 16px; margin-top: 22px; } .fx code { padding: 10px 12px; border-radius: 8px; background: #eef3ff; color: #1f55e6; font-size: 15px; font-weight: 600; }
.fx b { display: block; font-size: 17px; font-weight: 600; letter-spacing: -.01em; } .fx small { font-size: 13px; color: var(--muted); }
.fx-run { display: grid; gap: 8px; margin-top: 18px; font-size: 13px; color: var(--slate); } .fx-run i { height: 6px; border-radius: 3px; background: linear-gradient(90deg, #22b8ff, #2f6bff); }
.fx-alt { margin-top: 22px !important; padding-top: 16px; border-top: 1px dashed rgba(10, 37, 64, .16); font-size: 13px; color: var(--muted); }
.fx-btns { display: flex; gap: 8px; margin-top: 10px; margin-bottom: 22px; } .fx-btns span { padding: 9px 14px; border-radius: 6px; font-size: 13.5px; font-weight: 500; background: #f0f3f8; color: var(--slate); } .fx-btns .fx-yes { background: var(--accent); color: #fff; }
.vf { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; margin-top: 22px; } .vf code { font-size: 30px; letter-spacing: -.02em; }
.vf i { width: 46px; height: 2px; background: linear-gradient(90deg, #f2b53c, #12a97a); position: relative; } .vf i::after { content: ""; position: absolute; right: 0; top: -4px; width: 8px; height: 8px; border-top: 2px solid #12a97a; border-right: 2px solid #12a97a; transform: rotate(45deg); }
.vf span { flex-basis: 100%; font-size: 14px; color: var(--slate); }
.au { list-style: none; margin-top: 18px !important; margin-bottom: 18px !important; padding: 0; border-radius: 8px; box-shadow: 0 0 0 1px var(--line); }
.au li { display: grid; grid-template-columns: 74px 1fr auto; gap: 10px; padding: 10px 14px; border-top: 1px solid var(--line); font-size: 13.5px; } .au li:first-child { border-top: 0; }
.au time { font: 12px var(--mono); color: var(--muted); padding-top: 1px; } .au code { color: var(--accent); font-size: 12px; }

@media (min-width: 961px) {
  .hw-step:nth-of-type(1) .hw-copy { grid-row: 1; } .hw-step:nth-of-type(2) .hw-copy { grid-row: 2; } .hw-step:nth-of-type(3) .hw-copy { grid-row: 3; }
  .hw-step:nth-of-type(4) .hw-copy { grid-row: 4; } .hw-step:nth-of-type(5) .hw-copy { grid-row: 5; }
  .hw-copy { grid-column: 1; min-height: 64vh; display: flex; flex-direction: column; justify-content: center; opacity: .32; transition: opacity .45s; }
  .hw-step.on .hw-copy { opacity: 1; }
  .hw-stage, .hw-scr { grid-column: 2; grid-row: 1 / 6; position: sticky; align-self: start; }
  .hw-stage { top: max(140px, calc(50vh - 240px)); height: 572px; }
  .hw-scr { top: calc(max(140px, calc(50vh - 240px)) + 48px); margin: 0 52px; z-index: 1; opacity: 0; transform: translateY(16px) scale(.985); transition: opacity .45s ease, transform .55s cubic-bezier(.2, .7, .2, 1); pointer-events: none; }
  .hw-step.on .hw-scr { opacity: 1; transform: none; }
}
@media (max-width: 960px) {
  .pv-hero .ph-grid { grid-template-columns: 1fr; gap: 40px; }
  .pv-rules { margin-top: -64px; } .rules { grid-template-columns: 1fr 1fr; } .rules li:nth-child(3) { border-left: 0; } .rules li:nth-child(n+3) { border-top: 1px solid var(--line); }
  .hw { padding: 88px 0 72px; } .hw-grid { grid-template-columns: 1fr; } .hw-stage, .hw-rail { display: none; }
  .hw-copy { margin-top: 48px; padding-left: 50px; } .hw-n { margin-left: -50px; } .hw-copy h3 { font-size: 22px; }
  .hw-scr { margin-top: 20px; padding: 22px 16px; border-radius: 14px; background: linear-gradient(180deg, #f3f6fd, #e8eefb); }
}
@media (max-width: 560px) {
  .cx { padding: 44px 0 40px 14px; } .cx-sap { width: 250px; } .cx-body { grid-template-columns: 1fr; } .cx-side { display: none; } .cx-chip { right: 0; }
  .cx-bar span { display: none; } .rules b { font-size: 34px; } .rules li { padding: 22px 18px 24px; } .rules li::before { left: 18px; right: 18px; }
  .rd { font-size: 17px; line-height: 2.5; } .gt p { grid-template-columns: 1.7fr 1fr .5fr; } .gt p > :nth-child(3) { display: none; } .scn > :not(.scn-h):not(.scn-f) { margin-left: 16px; margin-right: 16px; }
  .ck li { flex-direction: column; gap: 2px; } .ck b { text-align: left; } .au li { grid-template-columns: 64px 1fr; } .au code { display: none; }
}
