
/* ==== service pages: layout and motion ported from the static site; class names match it ==== */
@keyframes itv-rise{from{opacity:0;transform:translateY(26px)}to{opacity:1;transform:none}}
.itv-js .hero-in{animation:itv-rise .9s cubic-bezier(.2,.7,.2,1) both}
.hero-in-1{animation-delay:.05s}.hero-in-2{animation-delay:.15s}.hero-in-3{animation-delay:.28s}.hero-in-4{animation-delay:.4s}.hero-in-5{animation-delay:.52s}.hero-in-6{animation-delay:.7s}
.elementor-widget-text-editor p:last-child,.elementor-widget-text-editor ul:last-child{margin-bottom:0}
.elementor-widget-text-editor p{margin-top:0}
.crumbs a{color:inherit;text-decoration:none}.crumbs a:hover{color:#9DBDFF}.crumbs .sep{margin:0 10px}.crumbs .current{color:#9DBDFF}
.svc-scope{padding-left:18px;border-left:2px solid #3C61AD}
.svc-scope-label{display:block;margin-bottom:6px;font-family:"JetBrains Mono",ui-monospace,monospace;font-weight:500;font-size:.75rem;letter-spacing:.12em;text-transform:uppercase;color:#9DBDFF}
.e-con.glance{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr));gap:40px}

/* phase chart (the chart and controls are drawn by fx.js from the phase headings) */
.e-con.ps-intro{display:grid!important;grid-template-columns:minmax(0,4fr) minmax(0,8fr);gap:56px;align-items:start}
.e-con.ps{display:grid!important;grid-template-columns:minmax(0,4fr) minmax(0,8fr);gap:56px;align-items:stretch}
.e-con.ps-side{display:flex;flex-direction:column;justify-content:space-between;gap:40px}
.itv-js .e-con.ps-texts{display:grid!important}
.itv-js .ps-text{grid-area:1 / 1;opacity:0;transform:translateY(14px);visibility:hidden;transition:opacity .3s ease,transform .3s ease,visibility 0s linear .3s}
.itv-js .ps-text.on{opacity:1;transform:none;visibility:visible;transition:opacity .5s ease .15s,transform .6s cubic-bezier(.2,.7,.2,1) .15s,visibility 0s}
.e-con.ps-deliv{margin-top:8px;padding-top:16px;border-top:1px solid rgba(157,189,255,.16)}
.ps-controls{display:flex;align-items:center;gap:12px}
.ps-btn{flex:0 0 auto;aspect-ratio:1 / 1;width:52px;height:52px;padding:0!important;border-radius:50%!important;display:inline-flex;align-items:center;justify-content:center;border:1px solid rgba(157,189,255,.36)!important;background:rgba(157,189,255,.06)!important;color:#fff!important;font:inherit;cursor:pointer;box-shadow:none!important;transition:background-color .3s ease,border-color .3s ease}
.ps-btn:hover{background:rgba(157,189,255,.16)!important;border-color:#9DBDFF!important}
.ps-btn-solid{background-image:linear-gradient(135deg,#4F78C8 0%,#2A3975 100%)!important;border-color:rgba(255,255,255,.14)!important;box-shadow:0 8px 24px rgba(60,97,173,.35)!important}
.ps-btn:focus-visible,.ps-phase:focus-visible{outline:2px solid #9DBDFF;outline-offset:4px}
.ps-count{flex:1 1 auto;min-width:0;display:inline-flex;align-items:center;gap:12px;margin-left:12px;font-family:"JetBrains Mono",ui-monospace,monospace;font-size:.875rem;color:#93A4CE}
.ps-track{position:relative;flex:1 1 24px;min-width:24px;max-width:80px;height:2px;background:rgba(157,189,255,.2)}
.ps-track-fill{position:absolute;left:0;top:0;bottom:0;background:#9DBDFF;transition:width .5s cubic-bezier(.2,.7,.2,1)}
.ps-chart{position:relative}
.ps-axis{position:absolute;left:0;right:8px;top:30px;border-top:1.5px dotted rgba(157,189,255,.45)}
.ps-axis::after{content:"";position:absolute;right:-8px;top:-5.5px;border-left:8px solid rgba(157,189,255,.6);border-top:4.5px solid transparent;border-bottom:4.5px solid transparent}
.ps-axis-bottom{position:relative;top:auto;margin-top:22px}
.ps-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px}
.ps-phase{display:flex;flex-direction:column;align-items:stretch;text-align:left;margin:0;padding:0!important;border:0!important;border-radius:0!important;background:none!important;box-shadow:none!important;color:#93A4CE;font:inherit;cursor:pointer}
.ps-phase:nth-child(2){--i:1}.ps-phase:nth-child(3){--i:2}.ps-phase:nth-child(4){--i:3}.ps-phase:nth-child(5){--i:4}
.ps-num{height:18px;margin-bottom:28px;font-family:"JetBrains Mono",ui-monospace,monospace;font-size:.75rem;letter-spacing:.08em;transition:color .3s ease}
.ps-label{min-height:40px;margin-bottom:22px;font-family:"JetBrains Mono",ui-monospace,monospace;font-size:.75rem;line-height:1.5;letter-spacing:.08em;text-transform:uppercase;transition:color .3s ease}
.ps-phase:hover .ps-label,.ps-phase.on .ps-label{color:#fff}
.ps-phase.on .ps-num{color:#9DBDFF}
.ps-col{--y0:48px;--dy:64px;position:relative;display:block;height:380px;overflow:hidden;border-radius:6px;background:rgba(157,189,255,.05);border:1px solid rgba(157,189,255,.1);transition:background-color .4s ease,border-color .4s ease}
.ps-phase:hover .ps-col{border-color:rgba(157,189,255,.35)}
.ps-phase.done .ps-col{background:rgba(60,97,173,.16)}
.ps-fill{position:absolute;inset:0;background:linear-gradient(180deg,#4F78C8 0%,#2A3975 100%);transform:scaleY(0);transform-origin:bottom;transition:transform .6s cubic-bezier(.2,.7,.2,1)}
.ps-phase.on .ps-fill{transform:scaleY(1)}
.ps-arrow{position:absolute;left:12px;right:12px;top:calc(var(--y0) + var(--i, 0) * var(--dy));display:flex;align-items:center;color:rgba(157,189,255,.28)}
.ps-arrow-hi{color:#9DBDFF;clip-path:inset(0 100% 0 0);transition:clip-path .8s cubic-bezier(.2,.7,.2,1) .3s}
.ps-phase.on .ps-arrow-hi{color:#fff;clip-path:inset(0 0 0 0)}
.ps-phase.done .ps-arrow-hi{clip-path:inset(0 0 0 0);transition-delay:0s}
.itv-js .ps-chart:not(.in) .ps-fill{transform:scaleY(0)}
.itv-js .ps-chart:not(.in) .ps-arrow-hi{clip-path:inset(0 100% 0 0)}
.ps-ring{flex:0 0 auto;width:10px;height:10px;box-sizing:border-box;border:2px solid currentColor;border-radius:50%}
.ps-dots{flex:1;height:0;margin:0 4px;border-top:2px dotted currentColor}
.ps-tip{flex:0 0 auto;width:0;height:0;border-left:8px solid currentColor;border-top:5px solid transparent;border-bottom:5px solid transparent}

/* "How we work" band: image with a slow Ken Burns drift, scrim, faded top and bottom */
.e-con.band{position:relative;overflow:hidden;min-height:640px;justify-content:center}
.e-con.band-media{position:absolute!important;inset:0;z-index:0;overflow:hidden;padding:0!important;-webkit-mask-image:linear-gradient(180deg,transparent 0,#000 20%,#000 80%,transparent 100%);mask-image:linear-gradient(180deg,transparent 0,#000 20%,#000 80%,transparent 100%)}
.band-media .elementor-widget-image,.band-media .elementor-widget-image img{position:absolute;inset:0;width:100%!important;height:100%!important;max-width:none;object-fit:cover}
.e-con.band-media::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(7,12,28,.92) 0%,rgba(7,12,28,.72) 50%,rgba(7,12,28,.35) 100%)}
.e-con.band .band-copy{position:relative;z-index:1}
.e-con.band-points{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr));gap:40px;border-top:1px solid rgba(157,189,255,.2);padding-top:32px}
@keyframes itv-kb{from{transform:scale(1)}to{transform:scale(1.09) translate(-1.5%,-1%)}}
.kb{overflow:hidden}
.itv-js .kb img{animation:itv-kb 24s ease-in-out infinite alternate}

/* disciplines marquee */
.itv-marquee{overflow:hidden;border-top:1px solid rgba(157,189,255,.16);border-bottom:1px solid rgba(157,189,255,.16);padding:26px 0;-webkit-mask-image:linear-gradient(90deg,transparent 0,#000 12%,#000 88%,transparent 100%);mask-image:linear-gradient(90deg,transparent 0,#000 12%,#000 88%,transparent 100%)}
.itv-marquee-track{display:flex;align-items:center;gap:40px;width:max-content;font-family:Michroma,Inter,sans-serif;font-size:1.375rem;color:rgba(255,255,255,.6);white-space:nowrap}
.itv-marquee-track i{width:8px;height:8px;border-radius:50%;background:#3C61AD;box-shadow:0 0 12px rgba(107,146,222,.8)}
.itv-js .itv-marquee-track{animation:itv-marquee 40s linear infinite}

/* scope layouts */
.cnum{font-family:"JetBrains Mono",ui-monospace,monospace;font-weight:500;font-size:.75rem;line-height:1;letter-spacing:.12em;color:#9DBDFF}
.cico{flex-shrink:0;display:block;width:72px;height:72px;color:#fff;transition:transform .5s cubic-bezier(.2,.7,.2,1)}
.cico svg{display:block;width:72px;height:72px;fill:none;stroke:currentColor;stroke-width:1.25;stroke-linecap:round;stroke-linejoin:round}
.cico .a{fill:rgba(60,97,173,.55);stroke:#9DBDFF}.cico .d{stroke:#9DBDFF;stroke-dasharray:1.5 3}
.icard:hover .cico,.irow:hover .cico,.scope-row:hover .cico{transform:translateY(-3px)}
.e-con.scope-grid{display:grid!important;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:88px;align-items:start}
.e-con.mosaic{position:sticky;top:120px;display:grid!important;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px}
.mosaic .elementor-widget-image{overflow:hidden;border-radius:16px;border:1px solid rgba(157,189,255,.16);background:#050914}
.mosaic .elementor-widget-image:first-child{grid-column:1 / -1}
.mosaic img{width:100%;height:100%;display:block;object-fit:cover;transition:transform 1.2s cubic-bezier(.2,.7,.2,1)}
.mosaic .elementor-widget-image:hover img{transform:scale(1.04)}
.r-169 img{aspect-ratio:16 / 9}.r-1610 img{aspect-ratio:16 / 10}.r-11 img{aspect-ratio:1 / 1}.pos-top30 img{object-position:center 30%}
.e-con.scope-list{margin-top:16px;align-self:stretch}
.e-con.scope-row,.e-con.irow{display:grid!important;grid-template-columns:72px minmax(0,1fr);gap:22px;align-items:start}
.e-con.irow{padding:28px 0;border-top:1px solid rgba(157,189,255,.16)}
.e-con.split-head{display:grid!important;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:48px;align-items:end}
.banner{position:relative;overflow:hidden;border-radius:20px;border:1px solid rgba(157,189,255,.16);background:#050914}
.banner img{width:100%;aspect-ratio:21 / 8;display:block;object-fit:cover}
.e-con.igrid{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}
.e-con.icard{padding:28px;border:1px solid rgba(157,189,255,.16);border-radius:16px;background:linear-gradient(180deg,rgba(157,189,255,.07) 0%,rgba(157,189,255,.02) 100%);transition:opacity .8s cubic-bezier(.2,.7,.2,1),transform .6s cubic-bezier(.2,.7,.2,1),border-color .4s ease,box-shadow .4s ease}
.e-con.icard:hover{border-color:rgba(157,189,255,.55);box-shadow:0 18px 44px rgba(2,5,15,.5)}
.itv-js .e-con.icard.fx.in:hover{transform:translateY(-6px)}
.e-con.icard-top{justify-content:space-between;align-items:flex-start}
.e-con.ilist{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 64px}
.e-con.ilist-1{grid-template-columns:minmax(0,1fr)}
.e-con.bento{display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr));gap:20px}
.bento-img{grid-column:1 / span 2;grid-row:1 / span 2;overflow:hidden;border-radius:16px;border:1px solid rgba(157,189,255,.16);min-height:440px;background:#050914}
.bento-img img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.bento-img{position:relative}
.e-con.bento .wide{grid-column:span 2}
.e-con.sticky-split{display:grid!important;grid-template-columns:minmax(0,5fr) minmax(0,6fr);gap:88px;align-items:start}
.sticky-img{position:sticky!important;top:120px;overflow:hidden;border-radius:20px;border:1px solid rgba(157,189,255,.16);background:#050914}
.sticky-img img{width:100%;aspect-ratio:3 / 4;display:block;object-fit:cover}

/* featured project card */
.e-con.case{display:grid!important;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:56px;align-items:center;padding:24px 56px 24px 24px;border:1px solid rgba(157,189,255,.26);border-radius:22px;background:linear-gradient(180deg,rgba(157,189,255,.07) 0%,rgba(157,189,255,.02) 100%);box-shadow:0 30px 90px rgba(2,5,15,.6),0 0 0 1px rgba(60,97,173,.12)}
.case-media img{display:block;width:100%;aspect-ratio:4 / 3;object-fit:cover;border-radius:14px}

@media (max-width:1023px){
 .e-con.ps-intro,.e-con.ps{gap:32px}.e-con.scope-grid{gap:56px}.e-con.igrid,.e-con.bento{grid-template-columns:repeat(2,minmax(0,1fr))}.e-con.sticky-split{gap:56px}
 .e-con.case{grid-template-columns:minmax(0,1fr);padding:20px 20px 32px;gap:32px}
}
@media (max-width:767px){
 .e-con.glance,.e-con.scope-grid,.e-con.ps-intro,.e-con.ps,.e-con.split-head,.e-con.igrid,.e-con.ilist,.e-con.bento,.e-con.sticky-split,.e-con.band-points{grid-template-columns:minmax(0,1fr)}
 .ps-grid{gap:4px}.ps-num{margin-bottom:20px}.ps-axis{top:27px}.ps-label{font-size:.625rem;letter-spacing:.02em;text-transform:none;min-height:30px;margin-bottom:14px}
 .ps-col{--y0:26px;--dy:40px;height:236px}.ps-arrow{left:6px;right:6px}.ps-btn{width:48px;height:48px}
 .e-con.mosaic{position:static;gap:10px}.e-con.scope-row,.e-con.irow{grid-template-columns:56px minmax(0,1fr);gap:16px}.cico,.cico svg{width:56px;height:56px}
 .bento-img{grid-column:auto;grid-row:auto;min-height:0;aspect-ratio:4 / 3}.e-con.bento .wide{grid-column:auto}
 .sticky-img{position:static!important}.sticky-img img{aspect-ratio:4 / 3}.banner img{aspect-ratio:16 / 10}
 .e-con.band{min-height:0}.e-con.case{padding:14px 14px 24px;gap:24px}
}
@media (prefers-reduced-motion:reduce){.itv-js .hero-in,.itv-js .kb img,.itv-js .itv-marquee-track{animation:none}.ps-fill,.ps-arrow-hi,.itv-js .ps-text,.itv-js .ps-text.on,.ps-track-fill{transition:none}}
