/* /assets/home-fonts.css */
/* Official Google Fonts Latin subsets; licence notices are stored alongside them. */
@font-face {
  font-family:'Antonio'; font-style:normal; font-weight:400 600;
  font-display:swap; src:url("/assets/antonio-latin.woff2") format('woff2');
}
@font-face {
  font-family:'Chivo'; font-style:normal; font-weight:400 600;
  font-display:swap; src:url("/assets/chivo-latin.woff2") format('woff2');
}
@font-face {
  font-family:'Fragment Mono'; font-style:normal; font-weight:400;
  font-display:swap; src:url("/assets/fragment-mono-latin.woff2") format('woff2');
}

/* /design-tokens.css */
/* Cloudfusion shell tokens. Client artwork never inherits a colour treatment. */
:root {
  --cf-night: #080b12;
  --cf-ink: #edf3fa;
  --cf-surface: #111722;
  --cf-surface-raised: #101622;
  --cf-surface-deep: #0d121c;
  --cf-muted: #a8b6c9;
  --cf-label: #91a8c6;
  --cf-line: #29364a;
  --cf-blue: #019edb;
  --cf-light: var(--cf-service-build, #67ddff);
  --cf-violet: var(--cf-service-improve, #a7abff);
  --cf-frost: #e2ebf1;
  --cf-emphasis: #9fb4d2;
  --cf-display: 'Antonio', 'Arial Narrow', sans-serif;
  --cf-body: 'Chivo', sans-serif;
  --cf-mono: 'Fragment Mono', monospace;
  --cf-rail-home: 1800px;
  --cf-rail-story: 1740px;
  --cf-rail-reading: 1560px;
  --cf-rail-media: 2300px;
  --cf-gutter: clamp(20px, 4vw, 110px);
  --cf-section-space: clamp(56px, 5vw, 100px);
  --cf-radius-media: 8px;
  --cf-radius-panel: 12px;
  --cf-radius-story: 18px;
  --cf-radius-pill: 999px;
  --cf-ease: cubic-bezier(.22, 1, .36, 1);
}
/* Lenis moves the real document. Never combine it with CSS smooth scroll. */
html.lenis, html.lenis body {height: auto}
html.lenis {scroll-behavior: auto !important}
.lenis-stopped {overflow: hidden}
.lenis-smooth iframe {pointer-events: none}

/* The reversed official symbol already contains white + brand blue. */
.site-header .brand-symbol,.gallery-header .gallery-brand .brand-symbol {filter:none}

/* Shared accessible status text, including pages without the legacy base CSS. */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* /cinematic-direction.css */
/* The same manufactured world, optical light and editorial motion on home + every case. */
.kinetic-mask{display:inline-block;overflow:clip;vertical-align:bottom;padding-bottom:.12em;margin-bottom:-.12em}
.kinetic-mask>span{display:inline-block;--word-progress:clamp(0,calc(var(--kinetic-progress,1)*1.65 - var(--kinetic-i)*.045),1);transform:translate3d(calc((1 - var(--word-progress))*-.16em),calc((1 - var(--word-progress))*110%),0) rotate(calc((1 - var(--word-progress))*3deg));opacity:var(--word-progress)}
body[data-page=home] .cf-hero-heading{translate:var(--hero-slide,0px) 0;opacity:calc(1 - var(--hero-depart,0)*.75)}
body[data-page=home] .cf-hero-art>.cinematic-portal{inset:-12% -17%;z-index:0;transform:perspective(1600px) rotateX(calc((1 - var(--cinema-enter,1))*8deg)) scale(calc(.96 + var(--cinema-enter,1)*.04));opacity:calc(.75 - var(--hero-depart,0)*.22)}
body[data-page=home] .chapter-bar:before{width:calc(58px + var(--seam-progress,1)*20%)}
body[data-page=home] .cf-story-card{background:radial-gradient(ellipse at 85% 15%,#15354c80,transparent 60%),linear-gradient(135deg,#151e2c,#090e18 70%);box-shadow:inset 0 1px 0 #a9c8ed45,inset 0 -2px 0 color-mix(in srgb, var(--cf-blue) 20.0%, transparent),0 35px 65px -30px #02050dcc}
/* The card is one reflective surface. No lighting rectangle around the model. */
body[data-page=home] .cf-story-art:before,body[data-page=home] .cf-story-art:after{content:none}
body[data-page=home] .cf-story-card-content{position:relative;z-index:1}
body[data-page=home] .cf-story-card:after{z-index:0;background:none;pointer-events:none}
body[data-page=home] .cf-card-light{position:absolute;inset:0;border-radius:inherit;overflow:hidden;z-index:0;pointer-events:none}
body[data-page=home] .cf-card-sheen{position:absolute;inset:-30% -55%;pointer-events:none;
 background:radial-gradient(ellipse at 65% 35%,#67ddff10,transparent 65%),linear-gradient(112deg,transparent 25%,#67ddff18 45%,#bfe9ff10 49%,#8276ff08 55%,transparent 75%);
 transform:translate3d(var(--optic-shift-x,0%),var(--optic-shift-y,0%),0);
 opacity:max(var(--optic-hover,0),var(--optic-scroll-light,0),var(--assembly-light,0));}
html:not([data-story-pointer=on]) body[data-page=home] .cf-card-sheen{display:none}
/* Separate pane layers preserve the authored SVG assembly transforms. */
body[data-page=home] .cf-story-art [data-story-parallax=dark]{transform:translate(calc(var(--story-pointer-art-x,0px)*.32),calc(var(--story-pointer-art-y,0px)*.32))}
body[data-page=home] .cf-story-art [data-story-parallax=light]{transform:translate(var(--story-pointer-art-x,0px),var(--story-pointer-art-y,0px))}
html:not([data-story-pointer=on]) .cf-story-card,
.cf-story-frame.is-story-focused .cf-story-card{--story-pointer-rx:0deg!important;--story-pointer-ry:0deg!important;--story-pointer-art-x:0px!important;--story-pointer-art-y:0px!important}
@media (prefers-reduced-motion:reduce),(hover:none),(pointer:coarse),(forced-colors:active){
 body[data-page=home] .cf-card-sheen{display:none}
 .cf-story-card{--story-pointer-rx:0deg!important;--story-pointer-ry:0deg!important;--story-pointer-art-x:0px!important;--story-pointer-art-y:0px!important}
}
body[data-page=home] .cf-story-art-label{background:#080e18db;color:#c7d9ee;border:1px solid #54728a40;border-bottom-color:color-mix(in srgb, var(--cf-blue) 50.2%, transparent);border-radius:2px;padding:5px 7px;font-size:clamp(8px,.65vw,11px)}
body[data-page=home] .brand{min-height:44px;display:inline-flex;align-items:center}
body[data-page=home] .site-header .talk-link{min-height:44px}

body[data-experience=cinematic]{--night:var(--cf-night);--case-gutter:max(var(--cf-gutter),var(--safe-left,0px),var(--safe-right,0px));--case-width:var(--cf-rail-reading);--case-media-width:var(--cf-rail-media);--case-space:var(--cf-section-space);background:var(--cf-night);color:var(--cf-ink);color-scheme:dark;font-family:var(--cf-body)}
html:has(body[data-experience=cinematic]){background:var(--cf-night);color-scheme:dark}
body[data-experience=cinematic] :is(h1,h2,h3,.cinema-title strong){font-family:var(--cf-body);font-weight:500}
body[data-experience=cinematic] em{font-family:inherit;font-style:normal;color:var(--cf-emphasis)}
body[data-experience=cinematic] :is(.eyebrow,.cinema-title>span,.cinema-note,.scene-caption,.reveal-index,.browser-bar){font-family:var(--cf-mono)}
body[data-experience=cinematic] .gallery-header{background:color-mix(in srgb, var(--cf-night) 90.98%, transparent);border-color:var(--cf-line)}
body[data-experience=cinematic] .gallery-brand{min-height:44px;align-items:center}
body[data-experience=cinematic] .case-cinema{padding-top:140px;position:relative;padding-bottom:40px;overflow:clip;margin-bottom:15px}
body[data-experience=cinematic] .cinema-stage{perspective:1800px;max-width:1500px;padding-top:25px;isolation:isolate}
body[data-experience=cinematic] .cinema-screen{width:min(88%,calc((100svh - 400px)*var(--cinema-ratio,1.77778)));margin:auto;position:relative;border-radius:var(--cf-radius-media);transform:rotateX(calc(var(--cinema-tilt,0)*1deg)) rotateY(calc(var(--cinema-tilt,0)*-.6deg)) scale(var(--cinema-scale,1))!important;transform-origin:center;box-shadow:0 45px 70px -20px #000b,0 0 0 1px color-mix(in srgb, var(--cf-light) 20.78%, transparent),0 0 70px color-mix(in srgb, var(--cf-blue) 4.71%, transparent);opacity:1!important}
body[data-experience=cinematic] .cinema-title{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;margin:24px 6% 0;gap:12px 20px;transform:translateX(calc(var(--cinema-x,0)*1px))!important;opacity:var(--cinema-opacity,1)!important}
body[data-experience=cinematic] .cinema-title>span{grid-column:1/-1}
body[data-experience=cinematic] .cinema-title strong{font-size:clamp(52px,7.2vw,110px);line-height:1.02;color:var(--cf-ink)}
body[data-experience=cinematic] .cinema-title a{align-self:center;font-size:11px}
body[data-experience=cinematic] .cinema-title>span,body[data-experience=cinematic] .cinema-note{color:#8fb4da}
body[data-experience=cinematic] .cinema-title a{color:var(--cf-light);min-height:44px;display:inline-flex;align-items:center}
body[data-experience=cinematic] .cinema-note{margin-left:6%;font-size:9px}
.cinematic-portal{position:absolute;inset:-14% -5% 10%;z-index:-1;pointer-events:none;transform:translateZ(calc((1 - var(--cinema-enter,1))*-180px)) rotateX(calc((1 - var(--cinema-enter,1))*10deg));opacity:.85}
.cinematic-portal svg{width:100%;height:100%;overflow:visible}
.cinematic-portal path{vector-effect:non-scaling-stroke;stroke-width:1}
.portal-back{stroke:#5b83a54d}
.cinematic-portal .portal-energy{vector-effect:none;stroke:var(--cf-blue);stroke-width:2;stroke-dasharray:1;stroke-dashoffset:calc(1 - var(--cinema-enter,1));filter:drop-shadow(0 0 4px var(--cf-light)) drop-shadow(0 0 14px var(--cf-blue))}
.portal-violet{stroke:var(--cf-violet);filter:drop-shadow(0 0 7px var(--cf-violet))}
body[data-experience=cinematic] .case-opening{padding-top:65px;min-height:0;padding-bottom:45px}
body[data-experience=cinematic] .opening-copy h1{font-size:clamp(44px,4.7vw,88px);line-height:1.05}
body[data-experience=cinematic] :is(.opening-bottom p,.section-heading>p,.flow-step p,.delivery-scope p){color:var(--cf-muted)}
body[data-experience=cinematic] .case-brief{background:radial-gradient(ellipse at 100% 0,color-mix(in srgb, var(--cf-blue) 6.27%, transparent),transparent 65%),#101722;color:var(--cf-ink);border:1px solid var(--cf-line)}
body[data-experience=cinematic] .case-delivery{background:linear-gradient(130deg,#141e2c,#0c111b);border-color:var(--cf-line)}
body[data-experience=cinematic] :is(.case-brief em,.brief-scope,.case-brief .eyebrow,.delivery-tech dt,.delivery-tech small,.flow-note,.flow-step small){color:var(--cf-label)}
body[data-experience=cinematic] :is(.case-brief,.case-delivery,.flow-runway):before{content:'';position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,var(--cf-light),var(--cf-violet),transparent);transform:scaleX(var(--seam-progress,1));transform-origin:left;pointer-events:none}
body[data-experience=cinematic] .flow-runway{position:relative;border-color:var(--cf-line)}
body[data-experience=cinematic] .flow-step:before{box-shadow:0 0 0 5px var(--cf-night),0 0 18px color-mix(in srgb, var(--cf-blue) 25.1%, transparent)}
body[data-experience=cinematic] .cinematic-surface:after{content:'';position:absolute;inset:0;pointer-events:none;z-index:4;background:radial-gradient(ellipse at var(--optic-x,50%) var(--optic-y,50%),color-mix(in srgb, var(--cf-light) 12.55%, transparent),transparent 55%);opacity:var(--optic-hover,0);mix-blend-mode:screen}
body[data-experience=cinematic] .browser-bar{background:linear-gradient(#222d3b,#111923);color:#9bb2cf}
body[data-experience=cinematic] .case-next{background:#111925;color:var(--cf-ink);border-top:1px solid var(--cf-line)}
body[data-experience=cinematic] .case-next .eyebrow{color:var(--cf-label)}
body[data-experience=cinematic] .case-tools>button{background:#0e1522ec;color:var(--cf-muted);border-color:var(--cf-line)}
body[data-experience=cinematic] .screen-dialog{background:var(--cf-night);border-color:var(--cf-line)}

/* The same shell extends to proof captions, PWA devices and local enquiries. */
body[data-experience=cinematic] :is(.case-brief,.case-delivery){border-radius:var(--cf-radius-panel)}
body[data-experience=cinematic] :is(.gallery-header .back,.project-launch,.screen-dialog form button,.enquiry-actions button[type=submit]){background:var(--cf-ink);color:var(--cf-night);border-color:var(--cf-ink);border-radius:var(--cf-radius-pill)}
body[data-experience=cinematic] .project-launch:hover{background:var(--cf-light);border-color:var(--cf-light)}
body[data-experience=cinematic] :is(.eyebrow,.scene-caption,.flow-note,.flow-step small,.app-showcase-note,.app-showcase-phone figcaption span,.reveal-index){color:var(--cf-label)}
body[data-experience=cinematic] :is(.reveal-heading p,.proof-focus p,.app-showcase-copy p,.app-showcase-features p,.enquiry-context,.enquiry-help){color:var(--cf-muted)}
body[data-experience=cinematic] :is(.proof-focus strong,.app-showcase-features strong,.app-showcase-phone figcaption strong,.enquiry-context strong,.enquiry-form label){color:var(--cf-ink)}
body[data-experience=cinematic] :is(.delivery-tech,.brief-columns>div+div,.delivery-scope>div+div,.delivery-tech dl>div,.flow-step,.case-close,.enquiry-dialog,.enquiry-actions button){border-color:var(--cf-line)}
body[data-experience=cinematic] :is(.chapter-compass,.enquiry-dialog){background:var(--cf-surface);border-color:var(--cf-line)}
body[data-experience=cinematic] .case-tools .chapter-compass a{color:var(--cf-muted)}
body[data-experience=cinematic] .case-tools .chapter-compass a[aria-current]{color:var(--cf-light)}
body[data-experience=cinematic] :is(.enquiry-form textarea,.enquiry-form select,.enquiry-copy){background:var(--cf-night);border-color:var(--cf-line);color:var(--cf-ink)}
body[data-experience=cinematic] :is(.enquiry-close,.enquiry-form textarea::placeholder,.enquiry-form label span){color:var(--cf-label)}
body[data-experience=cinematic] .enquiry-status{color:var(--cf-light)}
body[data-experience=cinematic] .case-handoff{background:var(--cf-surface);color:var(--cf-ink);font-family:var(--cf-display);letter-spacing:-.012em;text-transform:uppercase}
body[data-experience=cinematic] .case-next-meter{background:var(--cf-line)}
body[data-experience=cinematic] :focus-visible{outline-color:var(--cf-light)}

@media(max-width:950px),(max-height:600px){
 body[data-experience=cinematic] .case-cinema{padding-top:130px;padding-bottom:20px}
 body[data-experience=cinematic] .cinema-stage{padding-top:12px}
 body[data-experience=cinematic] .cinema-screen{width:100%;transform:none!important}
 body[data-experience=cinematic] .cinema-title{margin:30px 0 0;grid-template-columns:1fr}
 body[data-experience=cinematic] .cinema-note{margin-left:0}
 .cinematic-portal{inset:-15% -15% 20%;opacity:.5}
 body[data-experience=cinematic] .case-opening{padding-top:30px;padding-bottom:0}
}
@media(max-width:600px){
 body[data-experience=cinematic] .cinema-title strong{font-size:clamp(42px,11vw,66px)}
 body[data-experience=cinematic] .cinema-title>span{font-size:8px;line-height:1.6}
 body[data-experience=cinematic] .case-opening h1{font-size:clamp(38px,10vw,58px)}
 body[data-page=home] .cf-story-art-label{font-size:8px;padding:3px 4px}
}
@media(max-height:600px) and (min-width:700px){
 body[data-experience=cinematic] .case-cinema{padding-top:125px}
 body[data-experience=cinematic] .cinema-stage{display:grid;grid-template-columns:minmax(0,1fr) minmax(200px,.6fr);gap:18px 5%;align-items:center;padding-top:0}
 body[data-experience=cinematic] .cinema-title{grid-column:2;grid-row:1;grid-template-columns:1fr;margin:0}
 body[data-experience=cinematic] .cinema-title strong{font-size:clamp(38px,4.5vw,72px)}
 body[data-experience=cinematic] .cinema-note{grid-column:2;margin:0}
 .cinematic-portal{inset:-10% -5% 0;opacity:.35}
}
html[data-cinematic-mode=off] .kinetic-mask>span{transform:none;opacity:1}
html[data-cinematic-mode=off] body[data-page=home] .cf-hero-heading{translate:none;opacity:1}
html[data-cinematic-mode=off] .cinematic-portal{transform:none}
html[data-cinematic-mode=off] .cinematic-surface:after{display:none}
html[data-cinematic-mode=off] body[data-page=home] .cf-story-card:after{display:block;background:none}
@media(prefers-reduced-motion:reduce){.kinetic-mask>span{transform:none!important;opacity:1!important}.cinematic-portal{transform:none!important}body[data-page=home] .cf-hero-heading{translate:none!important;opacity:1!important}}

/* Quiet fallbacks keep the artwork and copy fully visible. */
html:is([data-cinematic-mode=quiet],[data-cinematic-mode=off]) body[data-page=home] .cf-hero-art>.cinematic-portal{transform:none;opacity:.4}
html[data-visual-quality=balanced] body[data-page=home] .portal-energy{filter:none}
html[data-visual-quality=lite] body[data-page=home] .portal-energy{filter:none}

/* /services/service-page.css */
/* Service pages: the common Cloudfusion materials, with one authored focal scene. */
.service-investment-detail>h3{font:500 clamp(30px,3.2vw,48px)/1.2 var(--cf-display);text-transform:uppercase;margin:24px 0;color:#13283e}
*{box-sizing:border-box}html{background:var(--cf-night);color:var(--cf-ink);color-scheme:dark;scroll-padding-top:120px}body{margin:0;padding-top:96px;font:400 16px/1.65 var(--cf-body);font-synthesis:none}a{color:inherit;text-decoration:none}button,summary{font:inherit;cursor:pointer}button{color:inherit}h1,h2,h3,p,figure,blockquote,dd{margin:0}img{display:block;max-width:100%}em{font-style:normal}[hidden]{display:none!important}a:focus-visible,button:focus-visible,summary:focus-visible{outline:2px solid var(--service-accent,var(--cf-light));outline-offset:6px}main{overflow:clip}main:focus{outline:none}
.service-rail{width:min(var(--cf-rail-home),calc(100% - var(--cf-gutter)*2));margin-inline:auto}
.service-eyebrow{font:400 11px/1.6 var(--cf-mono);letter-spacing:.065em;color:var(--service-accent)}
.service-breadcrumb{display:flex;align-items:center;flex-wrap:wrap;gap:14px;font:11px/1.6 var(--cf-mono);color:var(--cf-muted);padding:24px 0}.service-breadcrumb a{padding-block:12px}.service-breadcrumb a:hover{color:var(--service-accent)}
.service-hero{position:relative}.service-hero:before{content:'';position:absolute;z-index:-1;width:80%;height:90%;right:-20%;top:0;background:radial-gradient(ellipse,color-mix(in srgb,var(--service-accent) 10%,transparent),transparent 66%);pointer-events:none}
/* A quiet opening with client links and one finite workflow illustration. */
.service-hero-grid{display:grid;grid-template-columns:.94fr 1.06fr;gap:5%;align-items:center;padding:20px 0 45px}
.service-hero-copy{position:relative;z-index:1;min-width:0}.service-offer{display:block;margin-bottom:24px;font-size:13px}.service-display{display:block;font:500 clamp(72px,7.4vw,136px)/1.06 var(--cf-display);letter-spacing:-.02em;text-transform:uppercase}.service-display em{color:var(--service-accent)}
.service-lead{max-width:510px;font-size:clamp(16px,1.25vw,19px);line-height:1.65;color:var(--cf-muted);margin-top:28px}
.service-primary{display:inline-flex;align-items:center;justify-content:space-between;gap:40px;background:var(--cf-frost);color:var(--cf-night);padding:17px 25px;min-height:56px;border:1px solid transparent;border-radius:var(--cf-radius-pill);font-size:15px;font-weight:500;margin-top:26px;transition:background .2s}.service-primary span{font-size:25px;line-height:1}.service-primary:hover{background:var(--service-accent)}
.service-proof-link{display:block;width:fit-content;padding:12px 0;margin-top:8px;color:var(--cf-muted);font-size:13px}.service-proof-link span{color:var(--service-accent);margin-left:20px}.service-proof-link:hover{color:var(--cf-ink)}
.service-client-proof{display:flex;gap:9px 18px;flex-wrap:wrap;margin-top:22px;padding-top:22px;border-top:1px solid var(--cf-line);max-width:490px}.service-client-proof>span{width:100%;font:10px/1.6 var(--cf-mono);color:var(--cf-muted)}.service-client-proof>a{display:inline-flex;align-items:center;min-height:44px;font-size:13px}.service-client-proof>a:hover{color:var(--service-accent)}
.service-explorer{min-width:0;position:relative}
.software-art{position:relative;aspect-ratio:1.13;container-type:inline-size;isolation:isolate;--software-depth:0;margin-block:18px 10px}.software-orbit{position:absolute;inset:0;width:100%;height:100%;stroke:var(--service-accent);stroke-width:1;opacity:.45;pointer-events:none}.software-orbit>path:nth-child(2){opacity:.25}.software-orbit-light{stroke-width:2;stroke-dasharray:1;stroke-dashoffset:calc(.8 - var(--software-depth)*.75);filter:drop-shadow(0 0 5px var(--service-accent));opacity:.7}
.software-assembly{position:absolute;inset:9% 0 8% 0;transform-style:preserve-3d;transform:perspective(1200px) rotateX(8deg) rotateY(-12deg) rotateZ(-4deg)}
.software-plane{position:absolute;width:78%;left:3%;border:1px solid color-mix(in srgb,var(--service-accent) 45%,var(--cf-line));border-radius:4px 20px 4px 20px;background:linear-gradient(135deg,#172937,#0d1723 80%);box-shadow:inset 0 0 0 4px #0b182180,0 24px 40px #0006;backface-visibility:hidden;transition:border-color .3s,box-shadow .3s}.software-plane:after{content:'';position:absolute;inset:6px;border:1px solid color-mix(in srgb,var(--service-accent) 15%,transparent);border-radius:1px 15px 1px 15px;pointer-events:none}
.software-workflow{height:50%;top:39%;left:16%;padding:4%;transform:translateZ(-15px) translateY(calc(var(--software-depth)*-6px))}.software-steps{position:absolute;bottom:17%;left:6%;right:6%;display:flex;align-items:center;justify-content:space-between;font:500 clamp(12px,2.5cqw,21px)/1.4 var(--cf-body)}.software-steps b{font-weight:400;color:var(--service-accent)}.software-steps>span{opacity:.5;transition:opacity .2s,color .2s}.software-steps>span.is-complete{opacity:1;color:var(--service-accent)}.software-connection{position:absolute;bottom:11%;left:6%;right:6%;height:1px;background:var(--cf-line);display:flex;justify-content:space-between}.software-connection:after{content:'';position:absolute;inset:0 auto 0 0;width:0;background:var(--service-accent);box-shadow:0 0 12px var(--service-accent);transition:width .6s var(--cf-ease)}.software-connection i{width:5px;height:5px;transform:translateY(-2px);background:var(--service-accent);border-radius:50%;z-index:1}
.software-interface{height:70%;top:0;color:#13283e;background:linear-gradient(130deg,#f1f6f9,var(--cf-frost) 70%,#bacfdd);border-color:#9cbdcf;transform:translateZ(55px) translateY(calc(var(--software-depth)*-20px));box-shadow:inset 0 0 0 4px #f3f8fb80,0 3px 0 #64879e,0 30px 50px #0007}.software-interface:after{border-color:#8daabf99}.software-app-top{padding:3% 7%;border-bottom:1px solid #6383964d;display:flex;align-items:center;justify-content:space-between;font:400 clamp(10px,1.7cqw,14px)/1.4 var(--cf-mono);color:var(--service-ink)}.software-app-content{padding:3% 7%;line-height:1.4}
.software-request-icon{display:grid;place-items:center;background:#13283e;color:var(--service-accent);width:8cqw;height:8cqw;margin-top:3%;font-size:4.5cqw;border-radius:3px 12px 3px 12px}.software-result{margin-top:5%}.software-result>strong{display:block;font:500 clamp(21px,4.4cqw,38px)/1.15 var(--cf-body);letter-spacing:-.025em}.software-result>p{font-size:clamp(11px,2cqw,16px);line-height:1.5;margin-top:3%;color:#466579;max-width:94%}
.software-pane-cut{position:absolute;bottom:5px;left:22px;width:22%;height:3px;background:var(--service-accent)}
[data-stage="0"] .software-interface,[data-stage="1"] .software-workflow{border-color:var(--service-accent);box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--service-accent) 18%,transparent),0 0 24px color-mix(in srgb,var(--service-accent) 15%,transparent),0 24px 40px #0006}
[data-stage="0"] .software-connection:after{width:10%}[data-stage="1"] .software-connection:after{width:50%}[data-stage="2"] .software-connection:after{width:100%}
.is-running .software-orbit-light{animation:software-trace 2s ease-out 1}.is-running .software-pane-cut{animation:software-transfer 2s var(--cf-ease) 1}.is-running .software-request-icon{animation:software-send .6s var(--cf-ease) 1}
@keyframes software-trace{0%{stroke-dashoffset:1;opacity:0}20%{opacity:1}100%{stroke-dashoffset:0;opacity:.5}}@keyframes software-transfer{0%{width:22%}45%{width:80%}100%{width:22%}}@keyframes software-send{50%{transform:translate(5px,-5px)}}
.software-caption{padding:4px 0 0 6%;color:var(--cf-muted)}.software-caption>span{font:9px/1.6 var(--cf-mono);color:var(--service-accent)}.software-caption>p{font-size:13px;margin-top:6px}
.service-section{padding-block:clamp(75px,9vw,150px)}.service-section-head{display:grid;grid-template-columns:1.3fr 1fr;gap:25px 8%;align-items:end;margin-bottom:60px}.service-section-head>.service-eyebrow{grid-column:1/-1}.service-section h2{font:500 clamp(42px,5.2vw,90px)/1.13 var(--cf-display);text-transform:uppercase;letter-spacing:-.015em}.service-section h2 em{color:var(--cf-muted)}.service-section-head>p{max-width:470px;color:var(--cf-muted);font-size:clamp(15px,1.2vw,18px);padding-bottom:3px}
.service-capability-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:5%}.service-capability{border-top:1px solid var(--cf-line);padding-top:25px}.service-capability-number{font:32px var(--cf-display);color:var(--service-accent);display:block;margin-bottom:35px}.service-capability h3{font-size:clamp(21px,1.7vw,28px);line-height:1.35;font-weight:500;max-width:330px}.service-capability p{color:var(--cf-muted);font-size:15px;margin-top:18px}.service-capability small{display:block;margin-top:28px;font:9px/1.6 var(--cf-mono);color:var(--service-accent);letter-spacing:.04em}
.service-related-route{border-top:1px solid var(--cf-line);margin-top:55px;padding-top:25px;display:flex;justify-content:space-between;gap:20px;font-size:14px}.service-related-route p{color:var(--cf-muted)}.service-related-route a{color:var(--service-accent);text-decoration:underline;text-underline-offset:7px}
/* Vertical gaps must contribute to auto-height grids; percentages can overflow the final row. */
.service-proof{background:var(--cf-surface-deep)}.service-proof-feature{display:grid;grid-template-columns:.65fr 1.35fr;align-items:center;gap:36px 6%;margin-bottom:70px}.service-proof-story>span{font:11px var(--cf-mono);color:var(--service-accent)}.service-proof-story>h3{font-size:clamp(23px,2.3vw,37px);line-height:1.35;font-weight:500;margin:24px 0}.service-proof-story>p{color:var(--cf-muted);font-size:15px}.service-proof-story>a{display:inline-block;padding:14px 0;margin-top:18px;border-bottom:1px solid var(--cf-line);font-size:14px}.service-proof-story>a span{color:var(--service-accent);margin-left:20px}.service-proof-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(48px,5vw,90px) 7%}.service-proof-note{margin-top:25px;font-size:14px;color:var(--cf-muted);max-width:560px}.service-proof-note strong{display:block;color:var(--cf-ink);font-size:18px;font-weight:500;margin-bottom:12px}.service-proof .cf-project{min-width:0}.service-proof .project-card-title{font-size:clamp(36px,4vw,65px)}
.service-testimonial{margin-block:clamp(70px,8vw,135px);padding:clamp(30px,5vw,90px);background:var(--cf-frost);color:#13283e;border-radius:2px 32px 2px 32px;position:relative;display:grid;grid-template-columns:1.5fr .5fr;gap:50px;align-items:end}.service-testimonial:after{position:absolute;content:'';bottom:0;left:5%;width:22%;height:3px;background:var(--service-accent)}.service-testimonial .service-eyebrow{color:var(--service-ink)}.service-testimonial blockquote{font-size:clamp(24px,3vw,49px);line-height:1.35;letter-spacing:-.025em;margin-top:30px;max-width:900px}.service-testimonial cite{font-style:normal;font-size:16px;font-weight:500}.service-testimonial .service-review-role{font-size:13px;margin-top:8px;color:#466579}.service-testimonial a{display:inline-block;font-size:12px;text-decoration:underline;text-underline-offset:5px;padding-block:15px}.service-review-source{font:10px/1.5 var(--cf-mono);margin-bottom:15px;color:var(--service-ink)}
.service-process{padding-top:0}.service-process-list{list-style:none;padding:0;margin:0;counter-reset:steps}.service-process-list li{counter-increment:steps;display:grid;grid-template-columns:65px 1fr 1.3fr;gap:5%;padding:35px 0;border-top:1px solid var(--cf-line);align-items:start}.service-process-list li:before{content:'0'counter(steps);font:36px var(--cf-display);color:var(--service-accent)}.service-process-list h3{font-weight:500;font-size:24px;line-height:1.35;max-width:320px}.service-process-list p{font-size:15px;color:var(--cf-muted)}.service-process-list small{display:block;font:10px/1.7 var(--cf-mono);margin-top:18px;color:var(--service-accent)}
.service-technology{border-top:1px solid var(--cf-line);padding-top:85px}.service-tech-list{margin:0}.service-tech-list>div{display:grid;grid-template-columns:1fr 1.5fr;gap:10%;padding:30px 0;border-top:1px solid var(--cf-line)}.service-tech-list dt{font-size:16px;color:var(--cf-muted)}.service-tech-list strong{font-weight:500;font-size:clamp(18px,1.7vw,28px)}.service-tech-list p{font-size:14px;color:var(--cf-muted);margin:12px 0}.service-tech-list a{font-size:12px;color:var(--service-accent);display:inline-block;padding-block:5px;text-decoration:underline;text-underline-offset:5px}
.service-investment{background:var(--cf-frost);color:#13283e;display:grid;grid-template-columns:1fr 1fr;padding:clamp(30px,5vw,90px);gap:9%;border-radius:2px 32px 2px 32px}.service-investment .service-eyebrow{color:var(--service-ink)}.service-investment h2{font:500 clamp(36px,4.1vw,70px)/1.15 var(--cf-display);text-transform:uppercase;margin:28px 0}.service-investment p{font-size:15px;color:#466579}.service-investment .service-price{font:500 clamp(56px,6vw,96px)/1.2 var(--cf-display);color:#13283e;margin:25px 0 16px}.service-price>span{color:var(--service-ink);font-size:.6em;vertical-align:top}.service-investment-detail ul{font-size:13px;color:#466579;padding-left:18px;margin:25px 0}.service-investment-detail li{margin-bottom:10px}.service-investment-detail a{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:16px 0;border-block:1px solid #63839670;font-weight:500}.service-investment-detail a span{font-size:26px}body[data-page="service"] .service-investment a:focus-visible,body[data-page="service"] .service-testimonial a:focus-visible{outline-color:var(--service-ink)}
.service-faq{display:grid;grid-template-columns:.9fr 1.1fr;gap:8%}.service-faq h2{margin-top:25px}.service-faq-list{border-top:1px solid var(--cf-line)}.service-faq details{border-bottom:1px solid var(--cf-line)}.service-faq summary{list-style:none;position:relative;padding:23px 35px 23px 0;font-weight:500;font-size:17px}.service-faq summary::-webkit-details-marker{display:none}.service-faq summary:after{content:'+';position:absolute;right:3px;top:18px;font-size:26px;color:var(--service-accent);font-weight:400}.service-faq details[open] summary:after{content:'−'}.service-faq details p{font-size:15px;color:var(--cf-muted);padding:0 28px 25px 0}
.service-catalogue-note{padding:25px 0;border-block:1px solid var(--cf-line);display:flex;align-items:center;gap:20px 4%;flex-wrap:wrap}.service-catalogue-note p{font-size:14px;color:var(--cf-muted);flex:1;min-width:210px}.service-catalogue-note a{color:var(--service-accent);font-size:13px;padding:10px 0;text-decoration:underline;text-underline-offset:5px}
.service-closing{display:grid;grid-template-columns:1.3fr 1fr;gap:25px 8%;align-items:end}.service-closing>.service-eyebrow{grid-column:1/-1}.service-closing h2{font-size:clamp(70px,9vw,164px)}.service-closing h2 em{color:var(--service-accent)}.service-closing>div>p{max-width:390px;color:var(--cf-muted);font-size:18px}.service-closing .service-primary{margin-bottom:10px}
@media(min-width:1800px){.software-art{max-height:650px}.service-hero-grid{padding-block:35px}}
@media(max-width:1100px){.service-hero-grid{gap:4%;grid-template-columns:1fr 1fr}.service-display{font-size:clamp(65px,7.5vw,95px)}.service-proof-feature{grid-template-columns:.8fr 1.2fr;column-gap:5%}}
.technology-capability-grid:has(>:nth-child(4):last-child){grid-template-columns:repeat(2,minmax(0,1fr));gap:40px 5%}
@media(max-width:800px){body{padding-top:80px}.service-hero-grid{grid-template-columns:1fr;padding-top:10px;gap:22px}.service-display{font-size:clamp(66px,12vw,104px)}.service-hero-copy .service-lead{max-width:570px}.service-explorer{max-width:650px;width:100%;margin-inline:auto}.service-section-head{grid-template-columns:1fr;gap:25px;margin-bottom:40px}.service-section-head>p{max-width:570px}.service-capability-grid{grid-template-columns:1fr;gap:35px}.service-capability{display:grid;grid-template-columns:40px 1fr;gap:0 20px}.service-capability-number{grid-row:1/4}.service-capability h3{max-width:none}.service-capability p{margin-top:12px}.service-capability small{margin-top:17px;grid-column:2}.service-related-route{flex-direction:column;gap:8px}.service-proof-feature{grid-template-columns:1fr}.service-proof-story{max-width:570px}.service-proof-story>h3{margin:18px 0}.service-proof-feature .cf-project{order:-1;margin-top:0;margin-bottom:25px}.service-proof-grid{column-gap:5%}.service-testimonial{grid-template-columns:1fr;gap:30px}.service-process-list li{grid-template-columns:40px 1fr;gap:18px 25px}.service-process-list li>div{grid-column:2}.service-process-list h3{max-width:none}.service-tech-list>div{grid-template-columns:1fr;gap:15px}.service-investment{grid-template-columns:1fr;gap:35px}.service-investment-detail{border-top:1px solid #63839670;padding-top:30px}.service-faq{grid-template-columns:1fr;gap:40px}.service-closing{grid-template-columns:1fr;gap:30px}}
@media(max-width:520px){html{scroll-padding-top:96px}.service-breadcrumb{padding:8px 0;font-size:10px}.service-offer{margin-bottom:20px;font-size:13px}.service-display{font-size:clamp(50px,15.5vw,82px)}.service-lead{font-size:16px;margin-top:25px}.service-primary{margin-top:25px;min-height:54px;padding:14px 23px}.software-art{aspect-ratio:1.15;margin-block:0 12px}.software-caption{padding-left:0}.service-client-proof{margin-top:18px;padding-top:18px;gap:4px 18px}.service-hero-grid{gap:15px;padding-bottom:35px}.software-assembly{transform:perspective(900px) rotateX(5deg) rotateY(-8deg) rotateZ(-4deg)}.service-section h2{font-size:clamp(38px,10.3vw,55px)}.service-section{padding-block:65px}.service-eyebrow{font-size:10px}.service-proof-grid{grid-template-columns:1fr;gap:55px}.service-proof .project-card-title{font-size:44px}.service-proof-feature{margin-bottom:55px}.service-testimonial{padding:28px;margin-block:60px}.service-testimonial blockquote{font-size:26px;margin-top:22px}.service-process{padding-top:0}.service-process-list h3{font-size:21px}.service-process-list li{padding:27px 0}.service-investment{padding:28px}.service-investment h2{font-size:40px}.service-faq summary{font-size:16px}.service-closing h2{font-size:clamp(62px,17vw,90px)}.service-closing>div>p{font-size:16px}}
@media(prefers-reduced-motion:reduce){.software-assembly,.software-plane{transform:none!important}.software-orbit-light{stroke-dashoffset:0}.service-hero-grid *,main *{animation:none!important;transition:none!important}}
html[data-motion=off] .software-assembly,html[data-motion=off] .software-plane{transform:none!important}html[data-motion=off] main *{animation:none!important;transition:none!important}html[data-motion=off] .software-orbit-light{stroke-dashoffset:0}
@media(forced-colors:active){.software-plane{border:1px solid CanvasText;background:Canvas;color:CanvasText;box-shadow:none}.software-interface *{color:CanvasText!important}.service-primary,.software-workflow{border:2px solid ButtonText}.service-testimonial,.service-investment{border:1px solid CanvasText;background:Canvas;color:CanvasText}.service-testimonial *,.service-investment *{color:CanvasText!important}}

/* Published reading paths: a quiet editorial bridge from the offer to its topic. */
.service-reading{display:grid;grid-template-columns:.9fr 1.1fr;gap:8%;padding-block:65px;border-block:1px solid var(--cf-line)}
.service-reading-intro h2{font:500 clamp(27px,2.2vw,39px)/1.2 var(--cf-body);letter-spacing:-.025em;margin-top:18px;text-wrap:balance}
.service-reading-intro p{margin-top:18px;color:var(--cf-muted);font-size:16px}
.service-reading-intro>a{display:inline-flex;align-items:center;gap:20px;min-height:44px;margin-top:22px;color:var(--service-accent);font-size:14px;font-weight:500}
.service-reading-guides{list-style:none;padding:0;margin:0;min-width:0}
.service-reading-guides li+li{border-top:1px solid var(--cf-line)}
.service-reading-guides a{display:grid;grid-template-columns:24px minmax(0,1fr) 24px;gap:18px;padding:24px 8px;align-items:start}
.service-reading-guides a:focus-visible{outline-offset:-2px}
.service-reading-number{font:11px/1.6 var(--cf-mono);color:var(--service-accent);padding-top:3px}
.service-reading-guides .service-eyebrow{font-size:10px;color:var(--cf-muted)}
.service-reading-guides h3{font:500 clamp(19px,1.5vw,25px)/1.35 var(--cf-body);letter-spacing:-.02em;margin-block:10px;overflow-wrap:anywhere;text-wrap:pretty}
.service-reading-time{font:11px/1.6 var(--cf-mono);color:var(--cf-muted)}
.service-reading-arrow{font-size:25px;line-height:1;color:var(--service-accent)}
.service-reading-guides a:hover h3{text-decoration:underline;text-decoration-color:var(--service-accent);text-underline-offset:5px}
@media(max-width:800px){.service-reading{grid-template-columns:1fr;gap:22px;padding-block:45px}.service-reading-intro>a{margin-top:14px}}
@media(max-width:520px){.service-reading-guides a{gap:12px;padding-inline:4px}.service-reading-intro h2{font-size:29px}}

@media(max-width:800px){.technology-capability-grid:has(>:nth-child(4):last-child){grid-template-columns:1fr;gap:35px}}

/* 370: a quiet route to the detail, with native mobile disclosures. */
body[data-page=service] .service-page-nav{position:sticky;top:var(--shell-height,96px);z-index:4;margin-bottom:20px;background:#0b1420;border-block:1px solid var(--cf-line)}
.service-page-index>summary{display:none;list-style:none;min-height:48px;padding:10px 12px;align-items:center;justify-content:space-between;font:500 14px/1.6 var(--cf-body)}
/* A compact choice remains usable after rotating/resizing to a wider view. */
.service-page-index:not([open])>summary{display:flex}
.service-page-index>summary::-webkit-details-marker,.service-more-proof>summary::-webkit-details-marker{display:none}
.service-page-index ul{display:flex;flex-wrap:wrap;gap:0 28px;list-style:none;padding:0 12px;margin:0}
.service-page-index a{display:flex;gap:16px;align-items:center;min-height:52px;font:400 13px/1.5 var(--cf-body);color:var(--cf-muted)}
.service-page-index a span{color:var(--service-accent)}
.service-page-index a:hover{color:var(--cf-ink)}
.service-page-index :is(a,summary):focus-visible{outline-offset:-3px}
body[data-page=service] :is(h2[id],section[id]){scroll-margin-top:12px}
html:has(.service-page-nav){scroll-padding-top:calc(var(--shell-height,96px) + 68px)}
.service-budget-preview{max-width:48ch;margin-top:22px;border-left:2px solid var(--service-accent);padding-left:16px}
.service-budget-preview p{font:400 13px/1.7 var(--cf-body);color:var(--cf-muted)}
.service-budget-preview strong{display:block;font-weight:500;color:var(--cf-ink);margin-bottom:3px}
.service-budget-preview a{display:inline-flex;align-items:center;gap:16px;min-height:44px;color:var(--service-accent);font:500 13px/1.5 var(--cf-body);text-decoration:underline;text-underline-offset:5px}
.service-more-proof{border-top:1px solid var(--cf-line);margin-top:30px}
.service-more-proof>summary{display:flex;align-items:center;gap:20px;list-style:none;min-height:60px;padding:12px 8px;font:500 17px/1.5 var(--cf-body)}
.service-more-proof>summary small{font:11px/1.6 var(--cf-mono);color:var(--cf-muted);margin-left:auto}
.service-more-proof>summary b{font:400 26px/1 var(--cf-body);color:var(--service-accent)}
.service-more-proof[open]>summary b{font-size:0}
.service-more-proof[open]>summary b:after{content:'−';font-size:26px}
.service-more-proof>summary:focus-visible{outline-offset:-3px}
.service-more-proof-content{padding-top:35px}
@media(max-width:800px),(max-height:700px){body[data-page=service] .service-page-nav{position:relative;top:auto}}
@media(max-width:800px){
 html:has(.service-page-nav){scroll-padding-top:calc(var(--shell-height,80px) + 12px)}
 .service-page-index>summary{display:flex}
 .service-page-index[open]>summary>span{font-size:0}
 .service-page-index[open]>summary>span:after{content:'−';font-size:20px}
 .service-page-index ul{display:grid;grid-template-columns:1fr 1fr;gap:0 16px;padding-bottom:8px}
 .service-page-index a{min-height:48px;justify-content:space-between;border-top:1px solid var(--cf-line)}
 .service-more-proof>summary{gap:12px;font-size:15px}
 .service-more-proof>summary small{max-width:8ch;font-size:10px;text-align:right}
 .service-budget-preview{margin-top:18px}
 .service-proof-feature:has(+.service-more-proof){margin-bottom:24px}
}
@media(forced-colors:active){.service-page-nav,.service-more-proof,.service-budget-preview{background:Canvas;border-color:CanvasText}.service-page-index a span{color:LinkText}}

/* 441: secondary actions are part of the service journey, not tiny captions. */
.service-page-index a,.service-budget-preview a,.service-proof-link,.service-client-proof>a,.service-testimonial a,.service-tech-list a,.service-catalogue-note a,body[data-page=service] .commerce-text-link,body[data-page=service] .existing-review-heading>a{font-size:14px}
.service-tech-list a{min-height:44px;padding-block:10px}
.service-breadcrumb{font-size:12px}
.service-breadcrumb a{min-height:44px;display:inline-flex;align-items:center}

/* Contextual technology references remain ordinary, visible reading links. */
.service-section .technology-inline-link{color:inherit;text-decoration:underline;text-decoration-color:var(--service-accent);text-underline-offset:.22em;text-decoration-thickness:1px}
.service-section .technology-inline-link:is(:hover,:focus-visible){color:var(--service-accent)}
.service-section .technology-inline-link:focus-visible{outline:2px solid var(--service-accent);outline-offset:4px}

.service-reading-date{display:block;margin-top:5px;color:var(--cf-muted);font:400 12px/1.6 var(--cf-body);}
