/* Services: a concise introduction, a capability index, then delivery and evidence. */
body[data-layout="services"] { background:#091629; }
.services-skip { position:fixed; top:-80px; left:24px; z-index:100; background:#fff; color:#10233d; padding:12px 18px; }
.services-skip:focus { top:16px; }
:is(.services-hero,.services-explorer,.services-connection,.services-method,.services-engineering,.services-engagement) h1,
:is(.services-hero,.services-explorer,.services-connection,.services-method,.services-engineering,.services-engagement) h2 { font-family:var(--fd); font-weight:500; letter-spacing:-.045em; line-height:1.04; }
.services-hero { color:#f4f7fb; overflow:hidden; background:#061426; }
/* Like Products, the illustration fills an independent viewport-wide stage. */
.services-hero__stage { position:relative; isolation:isolate; display:flex; align-items:center; min-height:clamp(720px,95svh,1040px); background:#061426; }
.services-hero__layout { position:relative; z-index:2; width:100%; padding-block:150px 88px; pointer-events:none; }
.services-hero__copy { width:46%; min-width:0; pointer-events:auto; }
.services-hero h1 { font-size:clamp(45px,5.3vw,80px); max-width:14ch; line-height:1.04; margin:0; letter-spacing:-.06em; text-wrap:balance; }
.services-hero h1 span { display:block; clip-path:inset(0 0 100% 0); transform:translateY(32px); animation:services-heading-reveal .82s cubic-bezier(.22,1,.36,1) .12s forwards; }
.services-hero h1 span:nth-child(2) { animation-delay:.24s; }
.services-hero h1 em { color:#a9c9fa; }
.services-hero__copy>p { max-width:42ch; color:#bdcce0; font-size:clamp(16px,1.2vw,19px); line-height:1.7; margin-top:30px; }
.services-actions { display:flex; align-items:center; flex-wrap:wrap; gap:24px; margin-top:32px; }
.services-hero__copy>p,.services-actions { opacity:0; transform:translateY(24px); animation:services-content-reveal .68s cubic-bezier(.22,1,.36,1) .38s forwards; }
.services-actions { animation-delay:.5s; }
.services-actions .ghost { color:#d5e5fb; font-size:12px; }
.services-hero__facts { border-top:1px solid #7b9abc44; background:#091b2d; color:#b7cbe5; font-size:13px; }
.services-hero__facts>.wrap { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); }
.services-hero__facts span { padding:25px 24px; text-align:center; opacity:0; transform:translateY(14px); animation:services-content-reveal .55s cubic-bezier(.22,1,.36,1) .58s forwards; }
.services-hero__facts span:nth-child(2) { animation-delay:.66s; }
.services-hero__facts span:nth-child(3) { animation-delay:.74s; }
.services-hero__facts span+span { border-left:1px solid #7b9abc44; }
.services-hero__image { position:absolute; inset:0 clamp(-120px,-6vw,-56px) 0 auto; z-index:0; width:min(82vw,1680px); height:100%; margin:0; pointer-events:none; mix-blend-mode:lighten; mask-image:linear-gradient(90deg,transparent,#000 12%,#000 92%,transparent); clip-path:inset(100% 0 0 0); animation:services-image-reveal 1.12s cubic-bezier(.22,1,.36,1) .16s forwards; }
.services-hero__image img { display:block; width:100%; height:100%; object-fit:contain; object-position:right center; }
.services-hero__stage::after { content:""; position:absolute; inset:0; z-index:1; pointer-events:none; background:linear-gradient(90deg,#061426 0%,#061426f5 29%,#061426aa 43%,transparent 65%),linear-gradient(0deg,#061426,transparent 22%,transparent 83%,#061426); }
.services-hero__motion { position:absolute; z-index:3; right:clamp(24px,4.3vw,84px); bottom:25px; display:inline-flex; align-items:center; gap:12px; min-height:44px; padding:8px 15px; border:1px solid #a8c4e452; border-radius:999px; background:#061426d9; color:#d2e4fb; font:inherit; font-size:11px; cursor:pointer; }
.services-hero__motion[hidden] { display:none; }
.services-hero__motion:hover { background:#183654; border-color:#a8c4e4; }
.services-hero__motion:focus-visible { outline:2px solid #bfd9ff; outline-offset:5px; }
.services-hero__motion>span:first-child { width:13px; text-align:center; }
.services-hero__stage.motion-ready .services-hero__image img { animation:services-hero-drift 28s ease-in-out infinite alternate; transform-origin:65% 55%; }
.services-hero__stage.motion-paused .services-hero__image img { animation-play-state:paused; }
@keyframes services-hero-drift { from { transform:translate3d(0,0,0) scale(1); } to { transform:translate3d(-1%,1%,0) scale(1.045); } }
@keyframes services-heading-reveal { to { clip-path:inset(0); transform:translateY(0); } }
@keyframes services-content-reveal { to { opacity:1; transform:translateY(0); } }
@keyframes services-image-reveal { to { clip-path:inset(0); } }

.services-explorer { --discipline-ink:#10233d; --discipline-copy:#526b8a; --discipline-line:#9bafc759; --discipline-blue:#285ba5; --discipline-surface:#f1f4f8; --discipline-node:#f8fbff; padding:94px 0 72px; background:var(--discipline-surface); color:var(--discipline-ink); }
.services-explorer__layout { display:block; }
.services-explorer__intro { position:static; display:grid; grid-template-columns:minmax(290px,.72fr) minmax(520px,1.28fr); align-items:center; gap:clamp(48px,8vw,128px); padding-bottom:58px; }
.services-explorer__heading { align-self:stretch; display:flex; flex-direction:column; align-items:flex-start; justify-content:space-between; gap:34px; padding-block:12px; }
.services-explorer h2,.services-engagement h2 { font-size:clamp(36px,3.7vw,60px); }
.services-explorer h2 em,.services-engagement h2 em { color:#4774b4; }
.services-text-link { display:inline-flex; align-items:center; justify-content:space-between; gap:24px; min-height:44px; color:#2258a7; font-size:13px; border-bottom:1px solid #6c8db955; }
.services-text-link>span { font-size:20px; }
.services-text-link:hover { color:#10233d; border-color:currentColor; }
.services-explorer__heading>.services-text-link { flex:0 0 auto; }
.discipline-map { position:relative; width:100%; min-height:292px; color:var(--discipline-ink); }
.discipline-map__lines { position:absolute; inset:16px 0; width:100%; height:260px; overflow:visible; }
.discipline-map__lines path,.discipline-map__lines circle { fill:none; stroke:var(--discipline-line); stroke-width:1; vector-effect:non-scaling-stroke; transition:stroke .3s ease,opacity .3s ease; }
.discipline-map__hub { fill:var(--discipline-blue); stroke:none; animation:disc-hub 2.8s ease-in-out infinite; transform-box:fill-box; transform-origin:center; }
.discipline-map__spoke { stroke-dasharray:260; stroke-dashoffset:260; animation:disc-draw 1.2s cubic-bezier(.32,.72,.28,1) forwards; }
#spoke-2 { animation-delay:.12s; }
#spoke-3 { animation-delay:.24s; }
#spoke-4 { animation-delay:.36s; }
#spoke-5 { animation-delay:.48s; }
.discipline-map__ring--spin { stroke-dasharray:3 9; opacity:.7; transform-box:fill-box; transform-origin:center; animation:disc-spin 34s linear infinite; }
.discipline-map__ring--spin-alt { stroke-dasharray:1 14; opacity:.5; animation-duration:52s; animation-direction:reverse; }
.discipline-map__pulse { stroke:var(--discipline-blue); opacity:0; transform-box:fill-box; transform-origin:center; animation:disc-pulse 4.2s ease-out infinite; }
.discipline-map__pulse--late { animation-delay:2.1s; }
.discipline-map__lines .discipline-map__travellers circle { fill:var(--discipline-blue); stroke:none; opacity:.9; filter:drop-shadow(0 0 5px color-mix(in srgb,var(--discipline-blue) 55%,transparent)); }
.discipline-map__lines .discipline-map__satellites circle { fill:var(--discipline-blue); stroke:none; opacity:.55; }
.discipline-map__lines .discipline-map__flow { stroke:var(--discipline-blue); stroke-width:1.4; stroke-linecap:round; stroke-dasharray:16 210; opacity:.55; animation:disc-flow 3.4s linear infinite; }
.discipline-map__flow--modernization { animation-delay:.5s; }
.discipline-map__flow--cloud { animation-delay:1s; }
.discipline-map__flow--security { animation-delay:1.5s; }
.discipline-map__flow--intelligence { animation-delay:2s; }
.discipline-map__sweep { transform-box:fill-box; transform-origin:310px 130px; animation:disc-spin 11s linear infinite; }
.discipline-map__lines .discipline-map__sweep path { fill:none; stroke:url(#disc-sweep); stroke-linecap:round; }
@keyframes disc-flow { from { stroke-dashoffset:226; } to { stroke-dashoffset:0; } }
@keyframes disc-draw { to { stroke-dashoffset:0; } }
@keyframes disc-hub { 0%,100% { transform:scale(1); } 50% { transform:scale(1.5); } }
@keyframes disc-spin { to { transform:rotate(360deg); } }
@keyframes disc-pulse { 0% { transform:scale(.72); opacity:.55; } 70%,100% { transform:scale(1.18); opacity:0; } }
.discipline-map:has(.discipline-map__node--application:is(:hover,:focus-visible,.is-active)) .discipline-map__flow--application,
.discipline-map:has(.discipline-map__node--modernization:is(:hover,:focus-visible,.is-active)) .discipline-map__flow--modernization,
.discipline-map:has(.discipline-map__node--cloud:is(:hover,:focus-visible,.is-active)) .discipline-map__flow--cloud,
.discipline-map:has(.discipline-map__node--security:is(:hover,:focus-visible,.is-active)) .discipline-map__flow--security,
.discipline-map:has(.discipline-map__node--intelligence:is(:hover,:focus-visible,.is-active)) .discipline-map__flow--intelligence { opacity:1; stroke-width:2; animation-duration:1.4s; filter:drop-shadow(0 0 6px color-mix(in srgb,var(--discipline-blue) 45%,transparent)); }

.discipline-map__node { animation:disc-node-in .7s ease both; }
.discipline-map__node--application { animation-delay:.5s; }
.discipline-map__node--modernization { animation-delay:.6s; }
.discipline-map__node--cloud { animation-delay:.7s; }
.discipline-map__node--security { animation-delay:.8s; }
.discipline-map__node--intelligence { animation-delay:.9s; }
@keyframes disc-node-in { from { opacity:0; } to { opacity:1; } }
.discipline-map__node::before { animation:disc-dot 3.2s ease-in-out infinite; }
@keyframes disc-dot { 0%,100% { box-shadow:0 0 0 0 color-mix(in srgb,var(--discipline-blue) 22%,transparent); } 50% { box-shadow:0 0 0 5px color-mix(in srgb,var(--discipline-blue) 0%,transparent); } }
.discipline-map__core { animation:disc-core-in .8s .3s cubic-bezier(.32,.72,.28,1) both; }
@keyframes disc-core-in { from { opacity:0; transform:translate(-50%,-50%) scale(.9); } to { opacity:1; transform:translate(-50%,-50%) scale(1); } }
@media (prefers-reduced-motion:reduce) {
  .discipline-map *,.discipline-map *::before { animation:none !important; }
  .discipline-map__spoke { stroke-dashoffset:0; }
}
.discipline-map__node { position:absolute; z-index:2; display:grid; grid-template-columns:22px auto; gap:8px; align-items:start; color:var(--discipline-copy); text-decoration:none; transition:color .25s ease,transform .25s ease; }
.discipline-map__node::before { content:""; position:absolute; left:-11px; top:-8px; width:7px; height:7px; background:var(--discipline-surface); border:1px solid var(--discipline-blue); transition:background .25s ease,box-shadow .25s ease; }
.discipline-map__node span { padding-top:2px; color:#687f9d; font-family:"Geist Mono",monospace; font-size:9px; }
.discipline-map__node strong { font-size:12px; font-weight:500; line-height:1.35; }
.discipline-map__node--application { left:1%; top:13px; }
.discipline-map__node--modernization { left:43%; top:0; }
.discipline-map__node--cloud { right:0; top:13px; }
.discipline-map__node--security { right:4%; bottom:1px; }
.discipline-map__node--intelligence { left:8%; bottom:1px; }
.discipline-map__node:is(:hover,:focus-visible,.is-active) { color:var(--discipline-blue); transform:translateY(-2px); }
.discipline-map__node:is(:hover,:focus-visible,.is-active)::before { background:var(--discipline-blue); box-shadow:0 0 0 5px color-mix(in srgb,var(--discipline-blue) 12%,transparent); }
.discipline-map__core { position:absolute; z-index:2; left:50%; top:50%; display:grid; place-content:center; width:118px; height:118px; border:1px solid var(--discipline-blue); background:var(--discipline-node); text-align:center; transform:translate(-50%,-50%); box-shadow:0 14px 34px color-mix(in srgb,var(--discipline-blue) 10%,transparent); }
.discipline-map__core span { color:var(--discipline-blue); font-family:"Geist Mono",monospace; font-size:9px; letter-spacing:.12em; }
.discipline-map__core strong { margin-top:8px; font-size:18px; font-weight:500; line-height:1.05; }
.services-explorer__list { min-width:0; border-bottom:1px solid #9bafc740; }
.service-detail { border-top:1px solid #9bafc759; }
.service-detail summary { display:grid; grid-template-columns:40px 1fr 24px; align-items:center; gap:22px; padding:34px 0; list-style:none; cursor:pointer; }
.service-detail summary::-webkit-details-marker { display:none; }
.service-detail summary::marker { content:""; }
.service-detail summary h3 { font-size:clamp(27px,2.5vw,40px); font-weight:400; letter-spacing:-.035em; line-height:1.15; max-width:none; }
.service-detail__number { color:#687f9d; font-family:"Geist Mono",monospace; font-size:11px; }
.service-detail__toggle { width:24px; height:24px; position:relative; }
.service-detail__toggle::before,.service-detail__toggle::after { content:""; position:absolute; background:#5376a5; width:12px; height:1.5px; left:6px; top:11px; }
.service-detail__toggle::after { transform:rotate(90deg); transition:transform .2s; }
.service-detail[open] .service-detail__toggle::after { transform:rotate(0); }
.service-detail[open] summary h3,.service-detail summary:hover h3 { color:#285ba5; }
.service-detail summary:focus-visible { outline-offset:-3px; }
.service-detail__body { display:grid; grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr); gap:clamp(36px,7vw,110px); padding:0 48px 38px 62px; }
.service-detail__body>p { color:#526b8a; font-size:16px; line-height:1.75; max-width:58ch; }
.service-detail__body ul { display:grid; grid-template-columns:1fr 1fr; gap:0 24px; align-content:start; list-style:none; margin-top:0; }
.service-detail__body li { padding:10px 0; border-top:1px solid #819bb62a; font-size:12px; line-height:1.6; color:#2b4c77; }
.service-detail__body>.services-text-link { margin-top:20px; }
.service-detail:target { border-top-color:#477aca; }

.services-connection { position:relative; overflow:hidden; padding:clamp(90px,10vw,150px) 0; color:#10233d; background:linear-gradient(135deg,#f8fbff 0%,#e8f1fb 55%,#dbe9f8 100%); border-block:1px solid #6f8ead38; }
.services-connection::before { content:""; position:absolute; inset:-55% auto auto -14%; width:60%; aspect-ratio:1; border-radius:50%; background:radial-gradient(circle,#2869e622 0%,#2869e60d 36%,transparent 68%); pointer-events:none; }
.services-connection::after { content:""; position:absolute; right:-8%; bottom:-190px; width:55%; height:260px; background:#2869e60b; transform:rotate(-8deg); transform-origin:center; pointer-events:none; }
.services-connection__layout { position:relative; z-index:1; display:grid; grid-template-columns:minmax(250px,.72fr) minmax(0,1.65fr); gap:clamp(48px,7vw,112px); align-items:center; }
.services-connection__copy h2 { max-width:9ch; font-size:clamp(43px,5vw,78px); line-height:.98; }
.services-connection__copy h2,.services-engagement { scroll-margin-top:112px; }
.services-connection__copy h2 em { color:#2869e6; font:inherit; font-style:normal; letter-spacing:inherit; }
.services-connection__copy p { max-width:35ch; margin-top:32px; color:#526b87; font-size:clamp(16px,1.25vw,20px); line-height:1.68; }
.services-pipeline { position:relative; width:100%; aspect-ratio:1.62; min-height:390px; margin:0; padding:0; overflow:hidden; color:#173b67; background:linear-gradient(145deg,#fafdff,#edf5fd); border:1px solid #6f8ead52; border-radius:0; box-shadow:0 28px 76px #294f7617,inset 0 1px #fff; isolation:isolate; }
.services-pipeline::before { content:""; position:absolute; inset:0; z-index:0; background:linear-gradient(112deg,transparent 0 63%,#2869e608 63% 76%,transparent 76%); pointer-events:none; }
.services-pipeline__grid { position:absolute; inset:0; z-index:0; opacity:.66; background-image:linear-gradient(#5c7da41a 1px,transparent 1px),linear-gradient(90deg,#5c7da41a 1px,transparent 1px); background-size:clamp(44px,5vw,76px) clamp(44px,5vw,76px); }
.services-pipeline__node { position:absolute; z-index:3; display:grid; place-items:center; width:18%; min-width:72px; height:46px; border:1px solid #7894b4a6; border-radius:0; color:#294b70; background:#fafdfff0; box-shadow:0 8px 22px #274f7a10; font-family:var(--fm); font-size:10px; letter-spacing:.04em; text-transform:uppercase; opacity:0; transition:color .25s,border-color .25s,background .25s,box-shadow .25s; }
.services-pipeline__node::before { content:""; position:absolute; left:10px; width:4px; height:4px; border-radius:50%; background:#7e98b6; box-shadow:0 0 0 3px #6283a515; }
.services-pipeline__node--in-1 { left:7%; top:15%; }
.services-pipeline__node--in-2 { left:7%; top:37%; }
.services-pipeline__node--in-3 { left:7%; top:59%; }
.services-pipeline__node--in-4 { left:7%; top:81%; }
.services-pipeline__node--out-1 { right:6%; top:22%; }
.services-pipeline__node--out-2 { right:6%; top:48%; color:#fff; border-color:#2869e6; background:#2869e6; box-shadow:0 12px 30px #2869e638; }
.services-pipeline__node--out-2::before { background:#fff; box-shadow:0 0 0 3px #ffffff32; }
.services-pipeline__node--out-2::after { content:""; position:absolute; inset:-1px; border:1px solid #2869e6; opacity:0; }
.services-pipeline.is-live .services-pipeline__node--out-2::after { animation:services-alert-pulse 3.6s ease-out 1.4s infinite; }
.services-pipeline__node--out-3 { right:6%; top:74%; }
.services-pipeline__core { position:absolute; left:46%; top:50%; z-index:4; display:grid; place-content:center; width:25%; min-width:132px; height:94px; border:1px solid #173b67; border-radius:0; color:#f6f9fd; background:linear-gradient(145deg,#173b67,#102b4d); box-shadow:0 16px 38px #173b6735,inset 0 0 0 1px #ffffff12; text-align:center; opacity:0; transform:translate(-50%,-50%) scale(.9); transition:opacity .5s .5s,transform .65s cubic-bezier(.22,1,.36,1) .5s; }
.services-pipeline__core::before { content:""; position:absolute; inset:-9px; border:1px solid #2869e638; opacity:0; transform:scale(.92); }
.services-pipeline.is-live .services-pipeline__core::before { animation:services-core-breath 3.8s ease-in-out 1.1s infinite; }
.services-pipeline__core::after { content:""; position:absolute; left:10%; right:10%; top:51%; height:1px; background:#d4e4f52e; }
.services-pipeline__core strong { font-family:var(--fm); font-size:12px; font-weight:500; letter-spacing:.04em; text-transform:uppercase; }
.services-pipeline__core span { margin-top:21px; color:#9fc3ff; font-family:var(--fm); font-size:9px; letter-spacing:.04em; text-transform:lowercase; }
.services-pipeline__connectors { position:absolute; inset:0; z-index:1; pointer-events:none; }
.services-pipeline__connector { --connector-angle:0deg; --flow-delay:0s; position:absolute; height:1px; overflow:hidden; background:linear-gradient(90deg,#6886a15c,#6886a1b5); transform:rotate(var(--connector-angle)) scaleX(0); transform-origin:left center; transition:transform .9s cubic-bezier(.22,1,.36,1); }
.services-pipeline__connector::after { content:""; position:absolute; inset:-1px auto -1px 0; width:26%; background:linear-gradient(90deg,transparent,#2869e6 55%,transparent); opacity:0; transform:translateX(-120%); }
.services-pipeline.is-live .services-pipeline__connector::after { animation:services-connector-flow 3.6s ease-in-out var(--flow-delay) infinite; }
.services-pipeline__connector--in-1 { left:25%; top:21%; width:23%; --connector-angle:31deg; --flow-delay:-.4s; transition-delay:.12s; }
.services-pipeline__connector--in-2 { left:25%; top:43%; width:21%; --connector-angle:12deg; --flow-delay:-1.25s; transition-delay:.2s; }
.services-pipeline__connector--in-3 { left:25%; top:65%; width:21%; --connector-angle:-12deg; --flow-delay:-2.1s; transition-delay:.28s; }
.services-pipeline__connector--in-4 { left:25%; top:87%; width:23%; --connector-angle:-31deg; --flow-delay:-2.95s; transition-delay:.36s; }
.services-pipeline__connector--out-1 { left:58%; top:50%; width:24%; --connector-angle:-28deg; --flow-delay:-.9s; transition-delay:.66s; }
.services-pipeline__connector--out-2 { left:58%; top:50%; width:20%; --connector-angle:0deg; --flow-delay:-1.8s; background:#2869e6; transition-delay:.74s; }
.services-pipeline__connector--out-3 { left:58%; top:50%; width:24%; --connector-angle:28deg; --flow-delay:-2.7s; transition-delay:.82s; }
.services-pipeline__signal { position:absolute; left:58%; top:50%; z-index:2; width:7px; height:7px; border-radius:50%; background:#4f88ff; box-shadow:0 0 0 5px #2869e61f,0 0 20px #2869e6; opacity:0; transform:translate(-50%,-50%); }
.services-pipeline.in .services-pipeline__node { animation:services-pipeline-node .55s cubic-bezier(.22,1,.36,1) forwards; }
.services-pipeline.in .services-pipeline__node--in-2 { animation-delay:.08s; }
.services-pipeline.in .services-pipeline__node--in-3 { animation-delay:.16s; }
.services-pipeline.in .services-pipeline__node--in-4 { animation-delay:.24s; }
.services-pipeline.in .services-pipeline__node--out-1 { animation-delay:.72s; }
.services-pipeline.in .services-pipeline__node--out-2 { animation-delay:.8s; }
.services-pipeline.in .services-pipeline__node--out-3 { animation-delay:.88s; }
.services-pipeline.in .services-pipeline__core { opacity:1; transform:translate(-50%,-50%) scale(1); }
.services-pipeline.in .services-pipeline__connector { transform:rotate(var(--connector-angle)) scaleX(1); }
.services-pipeline.in.is-live .services-pipeline__signal { animation:services-pipeline-signal 3.6s ease-in-out 1.1s infinite; }
@keyframes services-pipeline-node { from { opacity:0; transform:translateY(14px) scale(.97); } to { opacity:1; transform:translateY(0) scale(1); } }
@keyframes services-connector-flow { 0%,18% { opacity:0; transform:translateX(-120%); } 32%,70% { opacity:1; } 88%,100% { opacity:0; transform:translateX(430%); } }
@keyframes services-core-breath { 0%,100% { opacity:.2; transform:scale(.96); } 50% { opacity:.85; transform:scale(1.035); } }
@keyframes services-alert-pulse { 0%,38%,100% { opacity:0; transform:scale(1); } 48% { opacity:.65; } 72% { opacity:0; transform:scale(1.14,1.32); } }
@keyframes services-pipeline-signal { 0%,18% { left:58%; opacity:0; } 30%,72% { opacity:1; } 90%,100% { left:78%; opacity:0; } }

.services-method { padding:0 0 90px; color:#112641; background:#f1f4f8; }
.services-method>.wrap { padding-top:54px; }
.services-method h2 { font-size:clamp(32px,3vw,46px); }
.services-method__steps { list-style:none; display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:30px; margin-top:36px; }
.services-method__steps li { display:grid; grid-template-columns:28px 1fr; gap:18px 12px; align-content:start; border-top:1px solid #8da9ca65; padding-top:25px; }
.services-method__number { font-family:"Geist Mono",monospace; font-size:12px; color:#5080bb; padding-top:4px; }
.services-method h3 { font-size:21px; line-height:1.22; font-weight:400; letter-spacing:-.03em; }
.services-method p { grid-column:2; font-size:13px; line-height:1.75; color:#5a6f8b; }

.services-engineering { padding:clamp(76px,9vw,132px) 0 96px; background:#e1ebf6; color:#10233d; }
.services-engineering__media { min-width:0; margin:0; }
.services-media-reveal { overflow:hidden; }
.services-media-reveal img { clip-path:inset(100% 0 0 0); transform:scale(1.04); transition:clip-path 1.05s cubic-bezier(.22,1,.36,1),transform 1.05s cubic-bezier(.22,1,.36,1); }
.services-media-reveal.in img { clip-path:inset(0); transform:scale(1); }
.services-engineering__media img { display:block; width:100%; aspect-ratio:21/8; object-fit:cover; object-position:center 48%; border:1px solid #809bb958; }
.services-engineering__media figcaption { display:flex; justify-content:space-between; flex-wrap:wrap; gap:12px; margin-top:15px; color:#435f7d; font-size:11px; }
.services-stack { margin-top:64px; padding-top:38px; border-top:1px solid #7894b560; }
.services-stack>h2 { font-size:clamp(36px,4vw,58px); letter-spacing:-.05em; }
.services-stack__grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:30px 44px; margin-top:32px; }
.services-stack h3 { font-size:14px; font-weight:500; line-height:1.5; margin-bottom:11px; color:#e3edfc; }
.services-stack ul { list-style:none; display:flex; flex-wrap:wrap; align-content:start; gap:7px 15px; }
.services-stack li { font-size:12px; line-height:1.7; color:#96b0d0; }

.services-engagement { position:relative; overflow:hidden; padding:clamp(86px,10vw,150px) 0 0; color:#10233d; background:linear-gradient(155deg,#f8fbff 0%,#edf4fc 48%,#dce9f7 100%); }
.services-engagement::before { content:""; position:absolute; width:520px; height:520px; right:-250px; top:-260px; border:1px solid #2869e620; border-radius:50%; box-shadow:0 0 0 80px #2869e608,0 0 0 160px #2869e605; pointer-events:none; }
.services-engagement__layout { display:grid; grid-template-columns:minmax(260px,.78fr) minmax(0,1.45fr); gap:clamp(56px,8vw,130px); align-items:start; }
.services-engagement__intro { position:sticky; top:130px; }
.services-engagement h2 { font-size:clamp(48px,5.6vw,86px); line-height:.95; }
.services-engagement h2 em { color:#2869e6; font:inherit; font-style:normal; letter-spacing:inherit; }
.services-engagement__intro>p { color:#526b87; line-height:1.72; font-size:clamp(16px,1.15vw,19px); margin-top:34px; max-width:39ch; }
.services-engagement__commitments { display:grid; grid-template-columns:1fr 1fr; gap:12px; padding:12px; background:#ccdaea7a; border:1px solid #7894b438; }
.services-engagement__commitments article { position:relative; min-height:270px; overflow:hidden; padding:62px 42px 40px; background:#f9fcffcc; border:1px solid #fff; box-shadow:0 10px 30px #254b7210; filter:blur(5px); transform:translateY(28px) scale(.975); transition:opacity .72s var(--ease),transform .72s var(--ease),filter .72s var(--ease),background .3s,border-color .3s,box-shadow .3s; }
.services-engagement__commitments article.in { filter:blur(0); }
.services-engagement__commitments article::before { position:absolute; top:27px; left:42px; color:#2869e6; font-family:var(--fm); font-size:11px; font-weight:500; letter-spacing:.08em; }
.services-engagement__commitments article::after { content:""; position:absolute; left:0; right:0; bottom:0; height:3px; background:#2869e6; transform:scaleX(0); transform-origin:left; transition:transform .45s var(--ease); }
.services-engagement__commitments article:nth-child(1)::before { content:"01"; }
.services-engagement__commitments article:nth-child(2)::before { content:"02"; }
.services-engagement__commitments article:nth-child(3)::before { content:"03"; }
.services-engagement__commitments article:nth-child(4)::before { content:"04"; }
.services-engagement__commitments article:hover { background:#fff; border-color:#95b3d5; box-shadow:0 20px 45px #254b721a; transform:translateY(-4px); }
.services-engagement__commitments article:hover::after { transform:scaleX(1); }
.services-engagement__commitments h3 { max-width:15ch; color:#173b67; font-size:clamp(26px,2.4vw,39px); font-weight:500; letter-spacing:-.045em; line-height:1.08; }
.services-engagement__commitments p { max-width:33ch; color:#526b87; font-size:16px; line-height:1.72; margin-top:22px; }
.services-contact { position:relative; margin-top:86px; border:0; padding:56px clamp(28px,4vw,64px) 66px; display:flex; align-items:center; justify-content:space-between; gap:30px; color:#fff; background:linear-gradient(115deg,#102f55,#173b67 64%,#2459a4); box-shadow:0 24px 55px #173b6723; }
.services-contact::after { content:""; position:absolute; inset:0; background:linear-gradient(90deg,transparent 0 64%,#ffffff0b 64% 65%,transparent 65%); pointer-events:none; }
.services-contact h2 { font-size:clamp(35px,4vw,64px); }
.services-contact h2 em { color:#aacbff; }
.services-contact .btn { flex-shrink:0; background:#2869e6; border-color:#2869e6; color:#fff; }
.services-contact .btn:hover { background:#4a85f1; border-color:#4a85f1; color:#fff; }
body[data-layout="services"] .closeband { padding-top:60px; }
body[data-layout="services"] .closeband .tagband { flex-direction:row; flex-wrap:wrap; gap:10px; align-items:center; }
body[data-layout="services"] .closeband .tagband span { font-family:inherit; font-size:15px; text-transform:none; letter-spacing:0; }

@media(max-width:1100px) {
  .services-hero__layout { padding-top:135px; }
  .services-connection__layout { grid-template-columns:minmax(230px,.75fr) minmax(0,1.4fr); gap:48px; }
  .services-method__steps { grid-template-columns:repeat(2,minmax(0,1fr)); gap:32px; }
  .services-engagement__layout { gap:6%; }
}
@media(max-width:900px) {
  .services-hero__stage { display:block; min-height:0; }
  .services-hero__stage::after { display:none; }
  .services-hero__layout { padding-block:125px 12px; }
  .services-hero__copy { width:100%; }
  .services-hero h1 { max-width:17ch; }
  .services-hero__image { position:relative; inset:auto; width:100%; height:auto; mask-image:linear-gradient(0deg,transparent,#000 12%,#000 84%,transparent); }
  .services-hero__image img { height:auto; object-position:center; }
  .services-hero__motion { bottom:16px; }
  .services-explorer__intro { grid-template-columns:1fr; gap:36px; }
  .services-explorer__heading { display:flex; flex-direction:row; align-items:flex-end; }
  .discipline-map { max-width:700px; margin-inline:auto; }
  .services-connection__layout { grid-template-columns:1fr; }
  .services-connection__copy { display:grid; grid-template-columns:minmax(230px,.8fr) 1fr; gap:36px; align-items:end; }
  .services-connection__copy p { margin-top:0; }
  .services-pipeline { min-height:360px; }
  .services-engagement__layout { grid-template-columns:1fr; }
  .services-engagement__intro { position:static; display:grid; grid-template-columns:minmax(250px,.9fr) 1fr; gap:36px; align-items:end; }
  .services-engagement__intro>p { margin-top:0; }
}
@media(max-width:760px) {
  .services-hero h1 { font-size:clamp(43px,8.4vw,63px); max-width:17ch; }
  .services-hero__copy>p { max-width:47ch; font-size:16px; margin-top:24px; }
  .services-hero__facts { font-size:11px; }
  .services-hero__facts span { padding:19px 10px; }
  .services-explorer { padding:55px 0 40px; }
  .services-explorer__intro { display:block; padding-bottom:34px; }
  .services-explorer__heading { display:block; padding:0; }
  .services-explorer__heading>.services-text-link { margin-top:18px; }
  .discipline-map { min-height:270px; margin-top:42px; }
  .discipline-map__lines { inset:6px 0; height:245px; }
  .discipline-map__node { grid-template-columns:18px auto; gap:5px; }
  .discipline-map__node strong { font-size:10px; }
  .discipline-map__node--modernization { left:39%; }
  .discipline-map__core { width:96px; height:96px; }
  .discipline-map__core strong { font-size:16px; }
  .services-explorer h2,.services-engagement h2 { font-size:40px; }
  .service-detail summary { padding:23px 0; gap:12px; grid-template-columns:25px 1fr 24px; }
  .service-detail summary h3 { font-size:25px; }
  .service-detail__body { display:block; padding:0 0 27px 37px; }
  .service-detail__body>p { font-size:16px; }
  .service-detail__body ul { margin-top:22px; }
  .services-connection { padding:68px 0; }
  .services-connection__copy { display:block; }
  .services-connection__copy h2 { font-size:54px; }
  .services-connection__copy p { margin-top:24px; }
  .services-pipeline { min-height:330px; aspect-ratio:1.38; }
  .services-method { padding-bottom:55px; }.services-method>.wrap { padding-top:20px; }
  .services-method__steps { gap:28px; }
  .services-method h3 { font-size:20px; }
  .services-engineering { padding:55px 0; }
  .services-engineering__media img { aspect-ratio:16/9; }
  .services-stack { margin-top:40px; padding-top:30px; }
  .services-stack>h2 { font-size:30px; }
  .services-stack__grid { grid-template-columns:1fr 1fr; gap:26px 28px; }
  .services-engagement { padding-top:55px; }
  .services-engagement__layout { grid-template-columns:1fr; gap:34px; }
  .services-engagement__intro { display:block; }
  .services-engagement__intro>p { max-width:52ch; }
  .services-engagement__commitments article { min-height:220px; padding:52px 28px 30px; }
  .services-engagement__commitments article::before { top:25px; left:28px; }
  .services-contact { margin-top:45px; padding:35px 0 45px; align-items:flex-start; flex-direction:column; gap:25px; }
}
@media(max-width:460px) {
  .services-hero h1 { font-size:clamp(34px,9vw,42px); }
  .services-actions { gap:20px; }
  .services-explorer h2,.services-engagement h2 { font-size:35px; }
  .discipline-map { min-height:248px; margin-top:36px; }
  .discipline-map__lines { height:220px; }
  .discipline-map__node--application { left:3%; }
  .discipline-map__node--cloud { right:1%; }
  .discipline-map__node--security { right:1%; }
  .discipline-map__node--intelligence { left:3%; }
  .discipline-map__node strong { font-size:9px; }
  .discipline-map__core { width:82px; height:82px; }
  .service-detail summary h3 { font-size:22px; }
  .service-detail__body ul { grid-template-columns:1fr; gap:0; margin-top:20px; }
  .services-connection__copy h2 { font-size:42px; }
  .services-pipeline { min-height:285px; }
  .services-pipeline__node { min-width:54px; height:36px; font-size:7px; }
  .services-pipeline__core { min-width:96px; height:76px; }
  .services-pipeline__core strong { font-size:9px; }
  .services-pipeline__core span { margin-top:18px; font-size:7px; }
  .services-method__steps { grid-template-columns:1fr; gap:22px; }
  .services-method__steps li { gap:12px; }
  .services-engagement__commitments { grid-template-columns:1fr; }
  .services-contact h2 { font-size:35px; }
}
@media(prefers-reduced-motion:reduce) {
  .services-hero__stage.motion-ready .services-hero__image img { animation:none; transform:none; }
  .services-hero h1 span,.services-hero__copy>p,.services-actions,.services-hero__image,.services-hero__facts span { opacity:1; clip-path:none; transform:none; animation:none; }
  .services-media-reveal img { clip-path:none; transform:none; transition:none; }
  .services-engagement__commitments article { filter:none; }
  .services-pipeline__node,.services-pipeline__core { opacity:1; transform:none; animation:none !important; transition:none; }
  .services-pipeline__core { transform:translate(-50%,-50%); }
  .services-pipeline__connector { transform:rotate(var(--connector-angle)) scaleX(1); transition:none; }
  .services-pipeline__signal { display:none; }
}
@media print {
  .services-skip,.services-actions,.services-text-link,.services-hero__motion { display:none !important; }
  .services-hero h1 span,.services-hero__copy>p,.services-hero__image,.services-hero__facts span { opacity:1 !important; clip-path:none !important; transform:none !important; animation:none !important; }
  .services-hero__stage { display:block; min-height:0; }
  .services-hero__stage::after { display:none; }
  .services-hero__layout { padding-block:35px; }
  .services-hero__copy { width:100%; }
  .services-hero__image { position:relative; inset:auto; width:100%; height:auto; mask-image:none; }
  .services-hero__image img { height:auto; animation:none !important; transform:none !important; }
  .services-explorer__intro { position:static; }
  .services-media-reveal img { clip-path:none; transform:none; transition:none; }
  .services-pipeline__node,.services-pipeline__core { opacity:1 !important; animation:none !important; }
  .services-pipeline__core { transform:translate(-50%,-50%) !important; }
  .services-pipeline__connector { transform:rotate(var(--connector-angle)) scaleX(1) !important; }
  .services-pipeline__signal { display:none; }
  .services-engagement__intro { position:static; }
  .service-detail::details-content { display:block; content-visibility:visible; }
}

/* Dark edition tokens for the five-discipline map. */
:root[data-theme="dark"] .services-explorer { --discipline-ink:#edf3fc; --discipline-copy:#b0c2d9; --discipline-line:#548fe855; --discipline-blue:#95beff; --discipline-surface:#0b1422; --discipline-node:#101d2d; }
:root[data-theme="dark"] .discipline-map__node span { color:#8ba1bd; }
:root[data-theme="dark"] .discipline-map__core { box-shadow:0 14px 34px #00000059; }
:root[data-theme="dark"] .discipline-map__sweep path { stroke:url(#disc-sweep); opacity:.85; }
#disc-sweep stop { stop-color:var(--discipline-blue); }
