/* SERVACT Capabilities page. Builds on servact.css and platform.css. */

.cap-hero{padding-bottom:clamp(56px,7vw,96px)}
.cap-hero .pf-hero-solo{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:40px;align-items:end}

/* Modules */
.mod{margin-top:40px;border:1px solid var(--line-light);border-radius:20px;background:var(--white);overflow:hidden;scroll-margin-top:calc(var(--header) + 16px)}
.mod + .mod{margin-top:24px}
.mod-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:14px 24px;padding:26px 28px;border-bottom:1px solid var(--line-light);background:linear-gradient(180deg,#F7FAFD,#fff)}
.mod-area{font:600 .875rem var(--body);color:var(--orange-deep);margin-bottom:6px}
.mod-head h3{font-size:clamp(1.375rem,2.2vw,1.75rem);font-weight:800}
.mod-sum{margin-top:8px;max-width:40em}
.mod-body{display:grid;grid-template-columns:1fr;gap:28px;padding:28px}
.mod-tasks{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px 28px}
.task h4{font:700 .9375rem var(--head);color:var(--ink);letter-spacing:-.005em;padding-bottom:8px;margin-bottom:10px;border-bottom:2px solid #8DBDF0}
.task ul{display:grid;gap:8px}
.task li{position:relative;padding-left:16px;font-size:.9375rem;line-height:1.5}
.task li::before{content:"";position:absolute;left:0;top:.6em;width:6px;height:6px;border-radius:50%;background:var(--orange)}
.mod-foot{grid-column:1/-1;font-size:.9375rem;color:var(--slate);border-top:1px solid var(--line-light);padding-top:16px}
.mod-foot a{color:var(--navy);font-weight:600}

@media (max-width:1024px){
  .cap-hero .pf-hero-solo{grid-template-columns:1fr;align-items:start}
    .mod-tasks{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:640px){
  .mod-head,.mod-body{padding:20px}
  .mod-tasks{grid-template-columns:1fr}
}

/* Small orange labels on white use a darker orange for AA contrast */
.mod-area{color:#A84B05}

/* Module demonstration: native player (no autoplay, nothing loads until play) with the steps beside it */
.demo{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(0,1fr);gap:32px;align-items:start;padding-bottom:28px;border-bottom:1px solid var(--line-light)}
.demo-player{border-radius:14px;overflow:hidden;border:1px solid var(--line-light);background:var(--midnight)}
.demo-player video{display:block;width:100%;height:auto;background:var(--midnight)}
.demo-label{display:inline-block;font:600 .8125rem var(--body);color:var(--navy);background:#E8F0F9;border-radius:999px;padding:6px 12px;margin-bottom:14px}
.demo-copy h4{font:800 clamp(1.25rem,1.9vw,1.5rem)/1.2 var(--head);color:var(--ink);letter-spacing:-.01em}
.demo-copy > p:not(.demo-label){margin-top:10px;font-size:1rem;line-height:1.55}
.demo-steps{display:grid;margin-top:20px}
.demo-steps li{position:relative;display:grid;grid-template-columns:32px minmax(0,1fr);gap:12px;padding:0 0 18px;font-size:.9375rem;line-height:1.5}
.demo-steps li:last-child{padding-bottom:0}
.demo-steps li:not(:last-child)::after{content:"";position:absolute;left:15px;top:34px;bottom:4px;width:2px;background:#8DBDF0}
.demo-steps strong{display:block;font:700 .9375rem var(--head);color:#A84B05;margin-bottom:2px}
.demo-n{width:32px;height:32px;border-radius:50%;background:var(--midnight);color:var(--white);font:700 .875rem var(--head);display:inline-flex;align-items:center;justify-content:center}
@media (max-width:1024px){.demo{grid-template-columns:1fr;gap:22px}}

/* Demonstration steps that follow their video (site.js adds .is-synced once it plays):
   upcoming steps rest in slate, the current one turns orange with a progress line, finished ones stay readable. */
.demo-steps.is-synced li{transition:color .35s ease}
.demo-steps.is-synced .demo-n{transition:background-color .35s ease,color .35s ease,box-shadow .35s ease}
.demo-steps.is-synced li:not(.is-on):not(.is-done) > span:last-child,.demo-steps.is-synced li:not(.is-on):not(.is-done) strong{color:var(--slate)}
.demo-steps.is-synced li:not(.is-on):not(.is-done) .demo-n{background:#DCE2EA;color:var(--slate)}
.demo-steps.is-synced li.is-on .demo-n{background:var(--orange);color:var(--midnight);box-shadow:0 0 0 5px rgba(252,129,2,.18)}
.demo-steps.is-synced li.is-on > span:last-child{color:var(--ink)}
.demo-steps.is-synced li:not(:last-child)::after{background:linear-gradient(var(--orange) calc(var(--p,0) * 100%),#DCE2EA 0)}
@media (prefers-reduced-motion:reduce){.demo-steps.is-synced li,.demo-steps.is-synced .demo-n{transition:none}}

/* A module with more than one demonstration (Master Data: request, then processing) */
.demo + .demo{padding-top:28px}

/* Section bar (14 Nov 2026): sticks under the header for the whole page; the link of the section in view is highlighted
   (site.js sets aria-current). Swipeable row on small screens; no blur effects (cheap to scroll). */
.cap-bar{position:sticky;top:calc(var(--header) + env(safe-area-inset-top,0px));z-index:40;background:#fff;border-bottom:1px solid var(--line-light);box-shadow:0 8px 24px -18px rgba(1,23,46,.35)}
.cap-bar .wrap{max-width:none}
.cap-bar-inner{display:flex;gap:2px;overflow-x:auto;scrollbar-width:none;padding-top:9px;padding-bottom:9px;-webkit-overflow-scrolling:touch}
.cap-bar-inner::-webkit-scrollbar{display:none}
.cap-bar a{flex:none;display:inline-flex;align-items:center;gap:7px;padding:8px 11px;border-radius:999px;font:600 .875rem/1 var(--body);color:var(--ink-body);text-decoration:none;white-space:nowrap;transition:background-color .2s,color .2s}
.cap-bar a::before{content:"";width:6px;height:6px;border-radius:50%;border:1.5px solid var(--orange);transition:background-color .2s}
.cap-bar a:hover{background:var(--mist);color:var(--ink)}
.cap-bar a[aria-current="true"]{background:var(--midnight);color:var(--white)}
.cap-bar a[aria-current="true"]::before{background:var(--orange);border-color:var(--orange)}
/* centred when the links fit, scrollable from the first link when they don't (auto margins never clip the start) */
.cap-bar-inner > :first-child{margin-left:auto}
.cap-bar-inner > :last-child{margin-right:auto}
/* a soft fade on the side that has more links (site.js sets the classes) */
.cap-bar-inner.more-right{-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 40px),transparent);mask-image:linear-gradient(90deg,#000 calc(100% - 40px),transparent)}
.cap-bar-inner.more-left{-webkit-mask-image:linear-gradient(90deg,transparent,#000 40px);mask-image:linear-gradient(90deg,transparent,#000 40px)}
.cap-bar-inner.more-left.more-right{-webkit-mask-image:linear-gradient(90deg,transparent,#000 40px,#000 calc(100% - 40px),transparent);mask-image:linear-gradient(90deg,transparent,#000 40px,#000 calc(100% - 40px),transparent)}
/* Targets land just below the bar (html's scroll-padding-top already allows for the header) */
#areas,#across,.cap-mods .mod{scroll-margin-top:66px}
