:root{color-scheme:dark;--bg:#080f16;--fg:#ceeafb;--muted:#7dc2ef;--line:#92cdfb2c;--ice:#9fd8f9;font-family:Inter,Arial,sans-serif;background:var(--bg);color:var(--fg);font-synthesis:none}*{box-sizing:border-box}html{scroll-padding-top:120px}body{margin:0;background:radial-gradient(ellipse 75% 650px at 95% 0,#1f3e5055,transparent),var(--bg)}a{color:inherit;text-decoration:none}button,input,textarea{font:inherit}button,summary{cursor:pointer}a:focus-visible,summary:focus-visible,input:focus-visible,textarea:focus-visible,button:focus-visible{outline:2px solid #a7ddff;outline-offset:5px}::selection{background:#0f6296;color:white}.skip{position:fixed;top:-100px;left:20px;z-index:100;background:white;color:#08121a;padding:15px}.skip:focus{top:15px}.sub-header{position:relative;z-index:30;display:flex;align-items:center;gap:30px;min-height:106px;margin:0 6%;border-bottom:1px solid var(--line)}.sub-brand{display:inline-flex;width:145px;flex-shrink:0}.sub-brand svg{width:100%;height:auto}.desktop-nav{margin-left:auto;display:flex;gap:28px;font-size:12px;color:#a0d4f4}.desktop-nav a{padding:16px 0}.desktop-nav a:hover,.sub-footer a:hover{color:white}.site-menu{position:relative;margin-left:auto}.desktop-nav+.site-menu{margin-left:0}.site-menu>summary{display:flex;align-items:center;gap:22px;font-size:12px;min-height:44px;padding:10px 17px;border:1px solid var(--line);border-radius:30px;list-style:none}.site-menu>summary:after{display:none}.site-menu>summary::-webkit-details-marker{display:none}.site-menu[open]>summary{background:#96d4f912}.menu-panel{top:55px;right:0;width:300px;max-height:75vh;overflow-y:auto;background:#0c1923;padding:18px 24px;border-radius:14px;border:1px solid var(--line);box-shadow:0 20px 60px #0008}.menu-panel a{display:flex;justify-content:space-between;padding:11px 0;font-size:13px;border-bottom:1px solid #96d4f915}.menu-panel a:last-child{border:0}.menu-panel a span{color:#6ec1f1}.reading-top{display:flex;flex-wrap:wrap;gap:12px;margin:38px 8% 0;font:10px/1.7 'IBM Plex Mono',monospace;color:#6bbaed}.reading-top a{color:#b8e0f9}.detail-main{padding:24px 8% 80px;max-width:1600px;line-height:1.85;color:#8ecaf1}.detail-main h1,.detail-main h2,.detail-main h3{color:#ceeafb}.detail-main h1{font-size:clamp(44px,6.3vw,96px);letter-spacing:-.06em;line-height:1.02;margin:28px 0 38px;max-width:1050px}.detail-main h1 span{color:#9fd8f9}.detail-main h2{font-size:clamp(30px,3.5vw,52px);letter-spacing:-.045em;line-height:1.1}.detail-main h3{font-size:25px;line-height:1.2}.detail-main p{font-size:15px;line-height:1.85}.detail-main .lead{font-size:clamp(18px,1.8vw,24px);line-height:1.65;max-width:780px;color:#a3d5f4}.eyebrow{font:10px/1.6 'IBM Plex Mono',monospace!important;letter-spacing:.14em;text-transform:uppercase;color:#70c2f1!important}.detail-hero{padding:24px 0 80px}.detail-section{border-color:var(--line);padding:72px 0}.detail-section h2{max-width:850px}.detail-grid article{border-color:var(--line)}.detail-grid article h3{margin-top:0}.detail-section .detail-grid{gap:40px}.detail-link{color:#bce3fa;border-color:#5abaee66}.detail-cta{padding:65px 40px;margin-top:45px;border:1px solid var(--line);border-radius:3px;background:radial-gradient(ellipse at 95% 100%,#1382b32b,transparent 70%)}.detail-cta h2{font-size:clamp(38px,4.8vw,70px)}.detail-toc a{padding:8px 0}.detail-chips{gap:10px}.detail-chips li{border-color:var(--line);color:#a4d3f3}.detail-steps li{border-color:var(--line)}.detail-faq details,.legacy-section details{border-bottom:1px solid var(--line);padding:20px 0}.legacy-section summary{font-size:18px;color:#c7e7fa;line-height:1.5}.legacy-section h2~h2{margin-top:55px}.legacy-section h3{margin-top:35px}.legacy-list-item{display:inline-block;width:32%;padding-right:20px;vertical-align:top}.legacy-section p{max-width:830px}.page-contents{margin:24px 8% 0;max-width:650px;color:#7bc3f0;font-size:12px}.page-contents summary{padding:12px 0;min-height:44px}.page-contents nav{display:flex;flex-direction:column;gap:12px;padding:14px 0 24px}.page-contents nav a:hover{color:white}.directory-jumps{display:flex;gap:12px 26px;flex-wrap:wrap;font-size:12px;margin-bottom:50px}.directory-jumps a{border-bottom:1px solid var(--line);padding:12px 0}.library-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 40px}.library-card{position:relative;display:block;padding:27px 28px 30px 0;border-top:1px solid var(--line);min-width:0}.library-card>span{font:400 25px/1.2 'Space Grotesk',sans-serif;letter-spacing:-.03em;color:#cbe8fb}.library-card p{font-size:12px;margin:15px 0 0;color:#6bbbed}.library-card b{position:absolute;right:0;top:25px;font-size:20px;font-weight:400;color:#80ccf6}.library-card:hover>span{color:#9dd8fb}.sub-footer{padding:65px 8% 28px;border-top:1px solid var(--line);background:#060c12;display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:40px;color:#78bfee;font-size:12px}.footer-intro p{font:400 25px/1.3 'Space Grotesk',sans-serif;color:#add9f7;margin:30px 0}.sub-footer nav{display:flex;flex-direction:column;gap:15px}.sub-footer nav .eyebrow{margin:0 0 10px}.footer-bottom{grid-column:1/-1;display:flex;gap:24px;border-top:1px solid var(--line);padding-top:24px;margin-top:25px;font-size:10px}.footer-bottom span{margin-right:auto}.badge{max-width:220px!important}.monogram{display:grid;place-items:center;max-width:250px;aspect-ratio:1;background:linear-gradient(140deg,#25485d,#101c28);border:1px solid var(--line);font:60px 'Space Grotesk',sans-serif;color:#b2defa}.detail-main a:not(.library-card):hover{color:white}.table-wrap{max-width:100%}.field input,.field textarea{background:#0d1a24;color:#c7e8fb;border-color:#64b9ed4d}.field label{color:#94cef3}.radio-chips span{border-color:var(--line)}.radio-chips input:checked+span{background:#0f639766}.form-status{color:#98d3f6}.prose{max-width:850px}.detail-main li{overflow-wrap:anywhere}address{color:#a1d4f5}.detail-image{border-radius:3px}.answer{background:#9dd1f908;border-left-color:#9fd8f9}
@media(min-width:1700px){.detail-main{padding-left:100px;padding-right:100px}}
@media(max-width:1050px){.desktop-nav{gap:18px}.sub-header{gap:20px}.sub-brand{width:125px}.library-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:800px){.desktop-nav{display:none}.desktop-nav+.site-menu{margin-left:auto}.sub-header{min-height:86px;margin:0 7%}.sub-brand{width:116px}.reading-top{margin:25px 7% 0;font-size:9px}.detail-main{padding:22px 7% 50px}.detail-main h1{font-size:clamp(40px,10vw,64px);margin:24px 0 28px;overflow-wrap:break-word}.detail-hero{padding:20px 0 48px}.detail-main .lead{font-size:18px}.detail-main p{font-size:14px}.detail-section{padding:46px 0}.detail-cta{padding:30px 22px;margin-top:25px}.detail-cta h2{font-size:38px}.library-grid{grid-template-columns:1fr;gap:0}.library-card{padding:24px 30px 25px 0}.library-card>span{font-size:25px}.library-card p{font-size:12px}.page-contents{margin:20px 7% 0}.menu-panel{right:0;width:min(300px,86vw)}.legacy-list-item{width:49%}.sub-footer{grid-template-columns:1fr 1fr;gap:35px;padding:45px 7% 25px}.footer-intro{grid-column:1/-1}.footer-bottom{flex-wrap:wrap;gap:20px}.footer-bottom span{width:100%}.directory-jumps{gap:8px 20px;margin-bottom:30px}.detail-split,.detail-intro{gap:25px}.detail-main .detail-section h2{font-size:32px}.detail-main h3{font-size:23px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation:none!important;transition:none!important}}

/* Approved V3 wave lockup; unique masks for header and footer. */
.sub-header .sub-brand{width:220px;color:#fff;max-width:calc(100% - 125px)}
.sub-footer .sub-brand{width:180px;color:#fff}
.sub-brand svg{display:block;overflow:visible}
.sub-brand .brand-o-arc{stroke-dashoffset:200;animation:sub-o-loop 8.8s linear infinite;animation-delay:6s}
@keyframes sub-o-loop{0%{stroke-dashoffset:0;animation-timing-function:ease-in-out}15.909%{stroke-dashoffset:100;animation-timing-function:ease-in-out}31.818%{stroke-dashoffset:200;animation-timing-function:linear}100%{stroke-dashoffset:200}}
@media(max-width:1100px){.sub-header .sub-brand{width:180px}.desktop-nav{gap:16px}}
@media(max-width:900px){.desktop-nav{display:none}.desktop-nav+.site-menu{margin-left:auto}}
@media(prefers-reduced-motion:reduce){.sub-brand .brand-o-arc{animation:none}}

/* Legacy .btn markup: match the landing page's pill buttons instead of the old grey block. */
.detail-main .btn-row,.detail-main .btn-stack{display:flex;flex-wrap:wrap;align-items:center;gap:12px}
.detail-main .btn{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 22px;border-radius:999px;font:500 13px/1.2 Inter,Arial,sans-serif;text-decoration:none;transition:background 220ms,border-color 220ms,color 220ms}
.detail-main .btn-primary{background:#c2e8fc;color:#132633;border:0}
.detail-main .btn-primary:hover{background:#f1f9ff}
.detail-main .btn-ghost{background:none;color:#caeafc;border:1px solid #97d4f935}
.detail-main .btn-ghost:hover{border-color:#97d4f980;color:#fff}
.detail-main .btn:focus-visible{outline:2px solid #b2e0ff;outline-offset:3px}
@media(prefers-reduced-motion:reduce){.detail-main .btn{transition:none}}

/* Primary buttons: same as the landing page's primary (.primary.action-expand), an outlined pill with a
   light circle and arrow on the left that fills the pill on hover. Built with pseudo-elements so the
   page HTML stays as it is. */
.detail-main .btn-primary,[data-area] .svc-btn:not(.svc-btn-ghost){--fill:#c9f2ff;--ink:#101923;--arrow:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14M13 6l6 6-6 6'/%3E%3C/svg%3E");position:relative;isolation:isolate;overflow:hidden;display:inline-flex;align-items:center;justify-content:center;gap:0;box-sizing:border-box;min-width:240px;max-width:100%;min-height:56px;padding:8px 28px 8px 76px;border:0;border-radius:999px;background:transparent;color:#eef3f7!important;box-shadow:inset 0 0 0 1px #329fff38;font:500 13px/1.4 Inter,Arial,sans-serif;text-align:center;text-decoration:none;transform:none;transition:color .45s cubic-bezier(.65,0,.076,1),box-shadow .45s ease}
.detail-main .btn-primary::before,[data-area] .svc-btn:not(.svc-btn-ghost)::before{content:"";position:absolute;inset:6px auto 6px 6px;width:44px;border-radius:999px;background:var(--fill);z-index:-1;transition:width .45s cubic-bezier(.65,0,.076,1)}
.detail-main .btn-primary::after,[data-area] .svc-btn:not(.svc-btn-ghost)::after{content:"";position:absolute;left:17px;top:calc(50% - 11px);width:22px;height:22px;background:var(--ink);-webkit-mask:var(--arrow) center/contain no-repeat;mask:var(--arrow) center/contain no-repeat;transition:transform .45s cubic-bezier(.65,0,.076,1)}
.detail-main .btn-primary:is(:hover,:focus-visible),[data-area] .svc-btn:not(.svc-btn-ghost):is(:hover,:focus-visible){background:transparent;color:var(--ink)!important;box-shadow:0 0 28px #9cccf018;transform:none}
.detail-main .btn-primary:is(:hover,:focus-visible)::before,[data-area] .svc-btn:not(.svc-btn-ghost):is(:hover,:focus-visible)::before{width:calc(100% - 12px)}
.detail-main .btn-primary:is(:hover,:focus-visible)::after,[data-area] .svc-btn:not(.svc-btn-ghost):is(:hover,:focus-visible)::after{transform:translateX(3px)}
.detail-main .btn-primary:focus-visible,[data-area] .svc-btn:not(.svc-btn-ghost):focus-visible{outline:2px solid #9cccf0;outline-offset:5px}
.detail-main .btn-primary:active,[data-area] .svc-btn:not(.svc-btn-ghost):active{box-shadow:0 0 0 4px #9cccf022}
[data-area] .svc-btn:not(.svc-btn-ghost)>span[aria-hidden]{display:none}
/* Ghost buttons sit beside the primary at the same height. */
.detail-main .btn-ghost,[data-area] .svc-btn-ghost{min-height:56px}
@media(max-width:600px){.detail-main .btn-primary,[data-area] .svc-btn:not(.svc-btn-ghost){min-width:0;width:100%}}
@media(prefers-reduced-motion:reduce){.detail-main .btn-primary,.detail-main .btn-primary::before,.detail-main .btn-primary::after,[data-area] .svc-btn::before,[data-area] .svc-btn::after{transition:none}}

/* In-page jumps ("See what we do", "See the stages"): glide down, then the section's content rises in. */
.is-arriving>*,.is-arriving :is(.svc-items>li,.detail-grid>article,.library-grid>*){animation:tpl-arrive 900ms cubic-bezier(.22,1,.36,1) 120ms both}
.is-arriving>:nth-child(2){animation-delay:200ms}
.is-arriving>:nth-child(3){animation-delay:280ms}
.is-arriving>:nth-child(n+4){animation-delay:340ms}
.is-arriving :is(.svc-items,.detail-grid,.library-grid){animation:none}
.is-arriving :is(.svc-items>li,.detail-grid>article,.library-grid>*):nth-child(1){animation-delay:300ms}
.is-arriving :is(.svc-items>li,.detail-grid>article,.library-grid>*):nth-child(2){animation-delay:380ms}
.is-arriving :is(.svc-items>li,.detail-grid>article,.library-grid>*):nth-child(3){animation-delay:460ms}
.is-arriving :is(.svc-items>li,.detail-grid>article,.library-grid>*):nth-child(4){animation-delay:540ms}
.is-arriving :is(.svc-items>li,.detail-grid>article,.library-grid>*):nth-child(n+5){animation-delay:620ms}
@keyframes tpl-arrive{from{opacity:0;transform:translateY(26px)}to{opacity:1;transform:none}}
