@font-face{font-family:Kanit;src:url(assets/Kanit-Medium.ttf) format("truetype");font-weight:500;font-display:swap}
@font-face{font-family:Kanit;src:url(assets/Kanit-SemiBold.ttf) format("truetype");font-weight:600;font-display:swap}
@font-face{font-family:Kanit;src:url(assets/Kanit-Bold.ttf) format("truetype");font-weight:700;font-display:swap}
:root{--ink:#102338;--muted:#485c6d;--navy:#0a1b2b;--navy-deep:#071320;--blue:#0873a1;--sky:#69d7ff;--amber:#69d7ff;--line:#d8e4ed;--paper:#eef5f9;--white:#fff;--ease:cubic-bezier(.22,.75,.2,1)}
*,*::before,*::after{box-sizing:border-box}body{margin:0;background:var(--white);color:var(--ink);font:500 16px/1.65 Kanit,system-ui,sans-serif}
html{scroll-behavior:smooth;scroll-padding-top:90px}img{max-width:100%;display:block}figure{margin:0}button,input,summary{font:inherit}button{color:inherit;cursor:pointer}a{color:inherit;text-decoration:none}
h1,h2,h3,p{margin:0}h1,h2{font-weight:600;line-height:1.16}h3{font-weight:700;line-height:1.32}h2{font-size:clamp(1.92rem,4.1vw,3.42rem);letter-spacing:-.025em}h3{font-size:clamp(1.2rem,2vw,1.54rem)}[hidden]{display:none!important}
:focus-visible{outline:3px solid #167caf;outline-offset:4px}.hero :focus-visible,.contact :focus-visible{outline-color:var(--sky)}
.container{width:min(100% - 72px,1260px);margin-inline:auto}.section{padding-block:clamp(68px,8vw,120px)}.mono{font:600 .72rem/1.4 ui-monospace,monospace;letter-spacing:.09em;text-transform:uppercase}
.skip{position:fixed;left:12px;top:9px;z-index:30;padding:10px 16px;background:white;transform:translateY(-180%)}.skip:focus{transform:none}
.site-head{position:sticky;top:0;z-index:8;background:#fff;border-bottom:1px solid #e4ebf0}.top{display:flex;align-items:center;justify-content:space-between;min-height:74px;gap:24px}
.brand{flex-shrink:0}.brand img{width:155px;height:51px;object-fit:contain;object-position:left center}.top nav{display:flex;align-items:center;gap:clamp(15px,2.3vw,37px)}
.top nav>a:not(.button){font-weight:600;position:relative;white-space:nowrap;padding-block:23px}.top nav>a:not(.button)::after{content:"";position:absolute;inset:auto 0 16px;height:2px;background:var(--blue);transform:scaleX(0);transform-origin:left;transition:transform .25s}
.top nav>a:hover::after,.top nav>a[aria-current]::after{transform:scaleX(1)}.menu-toggle{display:none}.button{display:inline-flex;align-items:center;justify-content:center;gap:16px;border:1px solid transparent;padding:11px 19px;border-radius:6px;min-height:46px;font-weight:700;line-height:1.3;transition:background .25s,transform .25s,color .25s}
.button:hover{transform:translateY(-2px)}.primary{background:var(--sky);color:#07253a}.primary:hover{background:#a3e8ff}.nav-cta{background:var(--navy);color:white}.nav-cta:hover{color:#07253a}.outline{border-color:#67869e;color:#f5fbff}.outline:hover{background:#ffffff14}
.hero{background:radial-gradient(ellipse at 79% 45%,#143b55 0%,transparent 53%),linear-gradient(115deg,#0a2033,var(--navy-deep));color:#f5faff;position:relative;isolation:isolate;overflow:hidden}
.hero::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background-image:linear-gradient(#9ccbf113 1px,transparent 1px),linear-gradient(90deg,#9ccbf113 1px,transparent 1px);background-size:48px 48px;mask-image:linear-gradient(90deg,transparent 5%,#000 66%)}
.hero-layout{display:grid;grid-template-columns:1.05fr 1fr;align-items:center;gap:clamp(20px,5vw,85px);padding-block:clamp(65px,8vw,121px) clamp(55px,6.5vw,96px)}
.eyebrow{display:flex;gap:10px;align-items:center;color:var(--blue);font:600 .77rem/1.4 ui-monospace,monospace;letter-spacing:.12em}.eyebrow span{width:19px;height:2px;background:currentColor}
.hero .eyebrow,.contact .eyebrow,.process .eyebrow{color:var(--sky)}.hero h1{font-size:clamp(2.5rem,5.05vw,5.12rem);line-height:1.08;letter-spacing:-.03em;margin:17px 0 18px}
.hero h1 em{color:var(--sky);font-style:normal}.hero-lead{max-width:405px;color:#c7dce9;font-size:clamp(1.02rem,1.3vw,1.2rem)}
.actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:28px}
.blueprint{position:relative;min-width:0;border:1px solid #6bbde67a;background:#071c2e8f;box-shadow:0 30px 72px #0004;color:#9fe3ff}
.blueprint::before,.blueprint::after{content:"+";position:absolute;color:#a0e4ff;font:600 18px/1 monospace;z-index:1}.blueprint::before{left:-6px;top:-9px}.blueprint::after{right:-6px;bottom:-9px}
.blueprint svg{display:block;width:100%;height:auto;padding:0 11px 9px;background-image:linear-gradient(#76bde716 1px,transparent 1px),linear-gradient(90deg,#76bde716 1px,transparent 1px);background-size:19px 19px}
.sheet-top,.blueprint figcaption{display:flex;gap:10px;align-items:center;justify-content:space-between;padding:10px 14px;color:#d0eaff;background:#0c2338;font-size:.82rem}.sheet-top{border-bottom:1px solid #6bbde64d}.blueprint figcaption{border-top:1px solid #6bbde64d}
.fact-row{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid #89c3e146}.fact-row>div{display:grid;gap:1px;padding:20px 22px;border-right:1px solid #89c3e146}.fact-row>div:first-child{padding-left:0}.fact-row>div:last-child{border:0}.fact-row strong{font-size:clamp(1.15rem,2.2vw,1.76rem);line-height:1.25}.fact-row span{color:#bbd1de;font-size:.91rem}
.section-head{max-width:760px;margin-bottom:clamp(26px,4vw,52px)}.section-head h2{margin-top:11px}.lead{margin-top:10px;font-size:1.06rem;color:var(--muted)}
.service-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.service,.project,.article{border:1px solid var(--line);overflow:hidden;border-radius:8px;background:white}
.service>img{width:100%;height:auto;aspect-ratio:1.65;object-fit:cover}.service-info{padding:19px;display:flex;flex-direction:column;flex:1}.service{display:flex;flex-direction:column}.service-info .mono{color:var(--blue);margin-bottom:5px}
.service ul{padding-left:17px;margin:10px 0 15px;color:var(--muted);font-size:.92rem}.service li+li{margin-top:3px}.service li::marker{color:var(--blue)}.service a,.text-button,.offices a{color:var(--blue);font-weight:700}.service a{margin-top:auto;align-self:flex-start}.service a:hover,.text-button:hover,.offices a:hover{text-decoration:underline}
.consult-grid{display:grid;grid-template-columns:1fr 1fr;gap:1px;margin-top:18px;background:var(--line);border:1px solid var(--line);border-radius:8px;overflow:hidden}.consult-grid>div{background:var(--paper);padding:22px 24px}.consult-grid p{color:var(--muted);margin-top:5px}
.drawings{margin-top:20px;border-bottom:1px solid var(--line)}.drawings summary{padding:11px 0 15px;font-weight:700;color:var(--blue);cursor:pointer}.draw-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;padding-bottom:16px}.draw-card{background:#fff;border:1px solid var(--line);padding:10px;text-align:left;border-radius:5px}.draw-card img{width:100%;aspect-ratio:1.5;object-fit:contain}.draw-card span{display:flex;justify-content:space-between;margin-top:5px;font-size:.88rem}
.process,.contact{color:#f3f9ff;background:radial-gradient(ellipse at top right,#163e57,transparent 60%),var(--navy)}.process .lead,.contact .lead{color:#c1d6e5}
.steps{list-style:none;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));padding:0;margin:0;gap:18px}.steps li{border-top:1px solid #547e96;padding:16px 8px 0 0}.step-index{display:inline-block;padding:6px 8px;border:1px solid #4e97b8;color:var(--sky);border-radius:3px;margin-bottom:12px}.steps p{color:#c1d6e5;margin-top:8px}
.filter-row{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:23px}.filters{display:flex;flex-wrap:wrap;gap:7px}.filters button{border:1px solid var(--line);background:#fff;border-radius:5px;padding:7px 13px;min-height:42px;font-weight:600;white-space:nowrap}.filters button:hover{border-color:#5e98b0}.filters button[aria-pressed="true"]{background:var(--navy);color:white;border-color:var(--navy)}
.project-grid,.article-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:17px}.project .project-link,.article button{width:100%;height:100%;background:none;border:0;padding:0;text-align:left;display:flex;flex-direction:column}.project .project-link:focus-visible,.article button:focus-visible{outline-offset:-4px}.project figure{overflow:hidden;width:100%;aspect-ratio:16/10;background:#dae6ef}.project img{width:100%;height:100%;object-fit:cover;transition:transform .55s var(--ease)}.project .project-link:hover img{transform:scale(1.055)}.project-info{padding:20px;display:flex;flex-direction:column;flex:1}.project-info>p:not(.category){color:var(--muted);margin:7px 0 11px;font-size:.94rem}.category{align-self:flex-start;background:#e4f5fd;color:#08618b;padding:3px 8px;border-radius:3px;font-size:.77rem;font-weight:700;margin-bottom:8px}.more{display:block;margin-top:auto;color:var(--blue);font-size:.93rem;font-weight:700}.project .project-link:hover .more,.article button:hover .more{text-decoration:underline}
.about{background:var(--paper)}.about-grid{display:grid;grid-template-columns:1.05fr 1fr;gap:clamp(25px,5vw,75px);align-items:center}.about-grid figure img{width:100%;aspect-ratio:1.4;object-fit:contain}.company p{color:var(--muted);margin:6px 0 15px}.company-data{display:grid;grid-template-columns:1fr 1fr;gap:12px}.company-data>div{background:white;border:1px solid var(--line);padding:12px;border-radius:6px;display:grid}.company-data span{font-size:.83rem;color:var(--muted)}.company-data strong{font-size:1.15rem}
.trust-grid{display:grid;grid-template-columns:1fr 1.5fr;gap:16px;margin-top:26px}.certificate,.clients{background:white;border:1px solid var(--line);border-radius:8px;padding:18px}.certificate{display:grid;grid-template-columns:minmax(76px,123px) 1fr;align-items:center;gap:15px}.certificate button:first-child{border:1px solid var(--line);padding:0;background:white}.certificate button img{width:100%}.certificate p{font-size:.9rem;color:var(--muted)}.text-button{background:none;border:0;padding:4px 0;text-align:left}.logo-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-top:10px}.logo-grid figure{border:1px solid var(--line);border-radius:4px;padding:6px;min-height:51px;display:grid;place-items:center}.logo-grid img{width:100%;height:40px;object-fit:contain}
.search{display:flex;align-items:center;gap:8px;font-weight:600;white-space:nowrap}.search input{width:clamp(150px,19vw,250px);border:1px solid var(--line);padding:7px 10px;min-height:42px;border-radius:5px}.article-count{color:var(--muted);font-size:.91rem;margin-bottom:10px}.article button{padding:17px 19px;min-height:137px}.article h3{font-size:1.18rem;margin-bottom:8px}.article:hover{border-color:#91b5c8}
.contact-layout{display:grid;grid-template-columns:1fr .72fr;gap:clamp(22px,5vw,72px);align-items:center}.contact .section-head{margin-bottom:0}.contact-links{display:flex;gap:16px;flex-wrap:wrap;margin-top:17px;color:#c8e4f4}.contact-links a:hover{text-decoration:underline}.offices{display:grid;gap:11px}.offices>div{background:#f8fcff;color:var(--ink);padding:16px 19px;border-radius:7px}.offices p{color:var(--muted);margin-top:3px}
footer{background:#fff}.bottom{display:flex;align-items:center;justify-content:space-between;gap:15px;padding-block:16px}.footer-brand{display:flex;align-items:center;gap:15px}.footer-brand img{width:125px}.footer-brand small{display:block;color:var(--muted)}.bottom>a{white-space:nowrap;font-weight:700;color:var(--blue)}
dialog{border:1px solid var(--line);border-radius:12px;width:min(calc(100vw - 26px),760px);max-height:85vh;max-height:85dvh;padding:0;color:var(--ink);overscroll-behavior:contain}dialog::backdrop{background:#071423c9}body:has(dialog[open]){overflow:hidden}.dialog-head{position:sticky;top:0;display:flex;justify-content:flex-end;padding:10px 13px 0;background:#fff}.close{background:var(--paper);border:0;border-radius:50%;height:40px;width:40px;font-size:1.6rem;line-height:1}.dialog-content{padding:5px 25px 24px}.dialog-content h2{font-size:clamp(1.7rem,4vw,2.4rem);margin-bottom:12px}.dialog-content img{width:100%;max-height:57vh;object-fit:contain;background:#eef5f9;border-radius:5px}.dialog-content p{margin-top:10px;color:var(--muted)}.dialog-content a{display:inline-block;margin-top:8px;color:var(--blue);font-weight:700}
.motion .reveal{opacity:0;transform:translateY(28px);transition:opacity .58s var(--ease),transform .72s var(--ease);transition-delay:var(--delay,0ms)}.motion .reveal.is-visible,.motion .reveal:focus-within{opacity:1;transform:none}
.motion .hero-copy>*{animation:rise .7s var(--ease) both}.motion .hero h1{animation-delay:.07s}.motion .hero-lead{animation-delay:.14s}.motion .hero .actions{animation-delay:.21s}.motion .blueprint{animation:rise .9s .11s var(--ease) both}
@keyframes rise{from{opacity:0;transform:translateY(19px)}to{opacity:1;transform:none}}
@media(max-width:1020px){.service-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.top nav{gap:15px}.hero-layout{gap:28px}.article-tools{flex-wrap:wrap}}
@media(max-width:800px){.container{width:calc(100% - 36px)}.top{min-height:64px}.brand img{width:132px;height:43px}.menu-toggle{display:block;background:var(--paper);border:1px solid var(--line);border-radius:5px;padding:6px 11px}.top nav{display:none;position:absolute;inset:100% 0 auto;background:white;padding:10px 18px 16px;border-bottom:1px solid var(--line);box-shadow:0 12px 20px #10233820;align-items:stretch;gap:0}.top nav.open{display:flex;flex-direction:column}.top nav>a:not(.button){padding:7px 4px}.top nav>a:not(.button)::after{display:none}.nav-cta{align-self:flex-start;margin-top:7px}.hero-layout{grid-template-columns:1fr;padding-block:47px 37px}.hero h1{font-size:clamp(2.34rem,8.05vw,4rem)}.blueprint{max-width:570px;width:100%;justify-self:center}.project-grid,.article-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.about-grid,.contact-layout{grid-template-columns:1fr}.trust-grid{grid-template-columns:1fr 1fr}.steps{grid-template-columns:repeat(2,minmax(0,1fr))}.motion .reveal{transform:translateY(17px)}.motion .reveal.is-visible,.motion .reveal:focus-within{transform:none}}
@media(max-width:490px){.container{width:calc(100% - 30px)}.section{padding-block:53px}.hero-layout{gap:29px}.fact-row{grid-template-columns:1fr 1fr}.fact-row>div,.fact-row>div:first-child{padding:13px 10px}.fact-row>div:nth-child(2){border-right:0}.fact-row>div:nth-child(-n+2){border-bottom:1px solid #89c3e146}.sheet-top,.blueprint figcaption{padding:7px 8px;font-size:.72rem}.sheet-top .mono,.blueprint .mono{font-size:.59rem}.service-grid,.consult-grid,.project-grid,.article-grid,.trust-grid{grid-template-columns:1fr}.service>img{aspect-ratio:2}.draw-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.steps{gap:17px 12px}.steps h3{font-size:1.15rem}.steps p{font-size:.9rem}.search{width:100%;white-space:normal}.search input{flex:1;min-width:0}.bottom{align-items:flex-start;flex-direction:column}.footer-brand img{width:70px}.footer-brand strong{font-size:.89rem}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}.motion .reveal{opacity:1;transform:none}}
.motion .blueprint::after{content:"";pointer-events:none;position:absolute;inset:43px 0 auto;height:115px;background:linear-gradient(0deg,transparent,#65d5ff0b 99%,#77d8ff44);animation:sheet-pass 6s 1.3s ease-in-out 2 both}
@keyframes sheet-pass{0%{opacity:0;transform:translateY(0)}15%,64%{opacity:1}80%,100%{opacity:0;transform:translateY(clamp(105px,14vw,220px))}}
.hero-halo{position:absolute;inset:6% 0 auto 40%;height:75%;z-index:-1;pointer-events:none;background:radial-gradient(ellipse at 65% 50%,#34baf629,transparent 62%);transform:translateX(-2%)}
.motion .hero-halo{animation:halo-drift 12s ease-in-out infinite alternate}
@keyframes halo-drift{to{transform:translate(-12%,9%);opacity:.52}}
.sheet-top>span:first-child{display:flex;align-items:center;gap:8px}
.sheet-signal{width:7px;height:7px;border-radius:50%;background:#7fe8ff;box-shadow:0 0 10px #5bdaff9c;display:inline-block;flex-shrink:0}
.motion .sheet-signal{animation:signal 3.8s ease-out infinite}
@keyframes signal{0%,100%{box-shadow:0 0 0 0 #63deff78,0 0 10px #5bdaff9c}45%,75%{box-shadow:0 0 0 5px #63deff00,0 0 10px #5bdaff9c}}
.trace-base{stroke:#66d5f9;stroke-width:1.5;opacity:.43}
.trace-pulse{display:none;stroke:#9fedff;stroke-width:2.5;stroke-linecap:round;stroke-dasharray:22 185;filter:drop-shadow(0 0 3px #2ad0ff)}
.motion .trace-pulse{display:block;animation:wire-flow 3.9s linear infinite}
.motion .trace-mechanical{animation-delay:-1.7s}
@keyframes wire-flow{from{stroke-dashoffset:207}to{stroke-dashoffset:0}}
.trace-node{fill:#b3efff;stroke:#5bcaf5;stroke-width:1.2;filter:drop-shadow(0 0 3px #2ac8ff)}
.motion .trace-node{animation:node-glow 3.9s ease-in-out infinite}
.motion .trace-node-mid{animation-delay:-1.3s}.motion .trace-node-end{animation-delay:-2.6s}
@keyframes node-glow{0%,100%{opacity:.55}35%,60%{opacity:1;filter:drop-shadow(0 0 6px #2ac8ff)}}
.steps li{position:relative}.steps li::before{content:"";position:absolute;top:-1px;left:0;width:100%;height:1px;background:linear-gradient(90deg,#70ddff,#81dfff29 78%,transparent);transform-origin:left}
.motion .steps li::before{transform:scaleX(0);transition:transform 1.1s var(--ease);transition-delay:calc(var(--delay,0ms) + 110ms)}
.motion .steps li.is-visible::before{transform:scaleX(1)}
.project,.service{transition:border-color .35s,box-shadow .35s}.project:hover,.service:hover{border-color:#79bad6;box-shadow:0 11px 28px #0b658720}
.motion .project.reveal,.motion .service.reveal{transition:opacity .58s var(--ease),transform .72s var(--ease),border-color .35s,box-shadow .35s;transition-delay:var(--delay,0ms),var(--delay,0ms),0ms,0ms}
@media(prefers-reduced-motion:reduce){.motion .trace-pulse,.motion .blueprint::after{display:none}.motion .steps li::before{transform:none}}

/* Brand colours from the client's reference. */
:root{
  --ink:#171b3d;
  --muted:#46576a;
  --navy:#1b2050;
  --navy-deep:#121638;
  --blue:#1c6a9e;
  --sky:#53a9db;
  --amber:#53a9db;
  --line:#d5dde4;
  --paper:#f4f6fa;
  --white:#fff;
}
.site-head{border-color:#e1e6f1}
.site-head .button{background:var(--navy);color:#fff}
.site-head .button:hover{background:#30376e}
.hero,.process,.contact,.inner-hero{
  background:radial-gradient(ellipse at 83% 27%,#344382 0%,transparent 56%),linear-gradient(118deg,#1b2050,#1b2050 53%,#232a62);
}
.hero .eyebrow,.process .eyebrow,.contact .eyebrow,.inner-hero .eyebrow{color:#a0dcff}
.hero-layout{grid-template-columns:minmax(0,1fr) minmax(0,.97fr);gap:clamp(28px,6vw,105px);padding-block:clamp(64px,7.4vw,104px) clamp(45px,5.8vw,82px)}
.hero-copy{min-width:0}
.hero h1{font-size:clamp(2.45rem,4.65vw,4.9rem);line-height:1.15;letter-spacing:-.04em;margin:15px 0 17px}
.hero h1 em{color:#80cdf4}
.hero h1>span{color:#eef3f7}
.hero-lead{max-width:440px;color:#dae3f5;line-height:1.72}
.hero .actions{margin-top:25px;gap:10px}
.hero .outline,.contact .outline{border-color:#a6b8ec87}
.hero .primary,.contact .primary{background:var(--sky);color:#101a38}
.hero .primary:hover,.contact .primary:hover{background:#a0dcff}
.blueprint{background:#171c44c9;border-color:#83bdf083;box-shadow:0 24px 62px #0c102770}
.sheet-top,.blueprint figcaption{background:#232a62}
.fact-row>div{padding-block:17px}
.fact-row span{color:#d1d9ee}
.inner-hero{color:#f5f8ff;padding:clamp(35px,5vw,65px) 0 clamp(54px,7vw,89px);position:relative;isolation:isolate}
.inner-hero::before{content:"";position:absolute;inset:0;z-index:-1;background-image:linear-gradient(#a9cff21c 1px,transparent 1px),linear-gradient(90deg,#a9cff21c 1px,transparent 1px);background-size:39px 39px;mask-image:linear-gradient(90deg,transparent 25%,#000)}
.breadcrumb{display:flex;gap:10px;font-size:.9rem;color:#d2dcf5;margin-bottom:23px}
.breadcrumb a:hover{text-decoration:underline}
.inner-hero h1{font-size:clamp(2.35rem,5.6vw,4.4rem);margin:10px 0 12px}
.inner-hero .hero-copy>p:last-child{max-width:630px;color:#dae3f5}
.inner-hero+section.section{padding-top:clamp(42px,6vw,86px)}
.service-grid{gap:clamp(13px,1.7vw,24px)}
.service.service-card{border:1px solid #e2e8f4;border-radius:16px;background:#fff;box-shadow:0 12px 28px #1b205012,0 3px 8px #1b20500b}
.service.service-card:hover,.service.service-card:focus-within{border-color:#8acbf0;box-shadow:0 15px 32px #1b205026,0 0 22px #53a9db36}
.service-card>img{aspect-ratio:1.58;object-fit:cover;object-position:center 48%;border-bottom:1px solid #e5edf7}
.service-parts>img{object-fit:contain;background:#fff;padding:7px}
.service-card .service-info{padding:20px 18px 21px}
.service-card .service-info>a{display:inline-flex;align-items:center;gap:6px;border-top:1px solid #e6edf5;width:100%;padding-top:11px;font-size:.92rem}
.process{position:relative;isolation:isolate;overflow:hidden}
.steps{gap:clamp(13px,2vw,28px)}
.steps li{border:1px solid #a3bdff4d;border-radius:14px;background:linear-gradient(148deg,#31396f,#212653);padding:18px;min-width:0;overflow:hidden;box-shadow:0 12px 30px #14184160}
.steps li::before{top:0;height:2px;background:linear-gradient(90deg,#8bd7ff 0%,#65c4ff6b 65%,transparent)}
.steps p{color:#dce4fa}
.step-symbol{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;margin:0 0 13px}
.step-symbol svg{width:61px;height:61px;padding:8px;background:#171d45;border:1px solid #719bdf6f;border-radius:11px;color:#9ddfff;filter:drop-shadow(0 0 9px #59bffd56)}
.step-symbol span{color:#b2d7f6;border-bottom:1px solid #88bbef70;padding:5px 0}
.steps li:hover .step-symbol svg,.steps li:focus-within .step-symbol svg{color:#d2f6ff;filter:drop-shadow(0 0 13px #6dd9ffa6)}
.motion .steps li.is-visible::after{content:"";position:absolute;inset:0 0 auto;height:2px;pointer-events:none;background:linear-gradient(90deg,transparent,#c0f1ff,#62b6ee,transparent);transform:translateX(-100%);animation:step-signal 2.4s var(--ease) 1 both;animation-delay:calc(var(--delay,0ms) + 360ms)}
@keyframes step-signal{to{transform:translateX(110%)}}
.particles{position:absolute;inset:0;z-index:-1;pointer-events:none;overflow:hidden}
.particles i{position:absolute;left:var(--x);top:var(--y);width:3px;height:3px;border-radius:50%;background:#addefe;opacity:.16;box-shadow:0 0 7px #a0d7fc55}
.motion .particles i{animation:particle-float var(--speed) var(--lag) ease-in-out infinite alternate}
@keyframes particle-float{0%{opacity:.09;transform:translate3d(0,0,0)}65%{opacity:.25}100%{opacity:.15;transform:translate3d(-25px,-23px,0)}}
.about-grid{grid-template-columns:minmax(0,1.04fr) minmax(0,1fr);gap:clamp(28px,5vw,80px);align-items:center}
.about-grid .about-visual{position:relative;isolation:isolate;border-radius:14px;box-shadow:0 18px 30px #1b205020;overflow:hidden}
.about-grid .about-visual img{width:100%;aspect-ratio:1.62;height:auto;object-fit:cover;object-position:center 53%}
.about-visual figcaption{position:absolute;inset:auto 0 0;color:#fff;padding:31px 17px 13px;background:linear-gradient(0deg,#161b42,transparent)}
.about .company-data{margin-top:14px}
.about .certificate{margin-top:23px;width:min(100%,470px)}
.partners{padding-block:clamp(47px,5vw,74px);overflow:hidden;background:#fff;border-bottom:1px solid #e8edf6}
.partners .section-head{margin:0 auto 16px;text-align:center}
.partners h2{font-size:clamp(1.85rem,3.2vw,2.6rem)}
.marquee{width:min(100%,1380px);overflow:hidden;margin-inline:auto;mask-image:linear-gradient(90deg,transparent,#000 5%,#000 95%,transparent)}
.marquee-track{width:max-content;display:flex;animation:clients-left 32s linear infinite}
.marquee-track ul{display:flex;align-items:center;list-style:none;margin:0;padding:0}
.marquee-track li{width:178px;height:76px;padding:10px 19px;display:grid;place-items:center}
.marquee-track img{width:130px;height:55px;object-fit:contain}
@keyframes clients-left{to{transform:translateX(-50%)}}
.motion .reveal{transform:translate3d(0,42px,0);transition-property:opacity,transform;transition-duration:.75s,.94s}
.motion .reveal-left{transform:translate3d(-22px,0,0)}
.motion .reveal.is-visible,.motion .reveal:focus-within{opacity:1;transform:none}
.motion .project.reveal,.motion .service.reveal{transition:opacity .72s var(--ease),transform .88s var(--ease),border-color .35s,box-shadow .35s;transition-delay:var(--delay,0ms),var(--delay,0ms),0ms,0ms}
@media(max-width:850px){
  .hero-layout{grid-template-columns:1fr;gap:28px;padding-block:47px 39px}
  .hero h1{font-size:clamp(2.27rem,7.8vw,4rem)}
  .blueprint{justify-self:start}
  .about-grid{grid-template-columns:1fr}
  .motion .reveal{transform:translate3d(0,25px,0)}
  .motion .reveal.is-visible,.motion .reveal:focus-within{transform:none}
}
@media(max-width:490px){
  .hero h1{font-size:clamp(1.86rem,8.25vw,2.88rem);line-height:1.16;margin-block:11px 13px}
  .hero-lead{font-size:1rem}
  .hero .actions{gap:8px;margin-top:18px}
  .hero .button{padding-inline:11px;gap:7px}
  .blueprint{max-width:100%}
  .steps li{padding:11px}
  .step-symbol svg{width:48px;height:48px;padding:6px}
  .service-card>img{aspect-ratio:1.85}
  .marquee-track li{width:152px;height:66px;padding:9px 17px}
  .marquee-track img{width:116px;height:46px}
  .particles i:nth-child(-n+4){display:none}
}
@media(prefers-reduced-motion:reduce){
  .motion .reveal,.motion .reveal-left{opacity:1;transform:none}
  .particles{display:none}
  .marquee{overflow:auto;mask-image:none}
  .marquee-track{animation:none}
  .marquee-track ul[aria-hidden]{display:none}
}
@media(min-width:851px){
  .steps{position:relative}
  .steps::before{content:"";position:absolute;inset:49px 12% auto;height:1px;background:linear-gradient(90deg,#59a9d726,#9adfff9e,#59a9d726)}
}

/* The client's dark palette, with white cards against the dark page. */
:root{
  --paper:#0a131b;
  --sheet:#101c27;
  --ink:#e4ebf1;
  --muted:#93a4b4;
  --line:#223241;
  --navy:#11153a;
  --steel-2:#1a1f4a;
  --on-steel:#eef3f7;
  --on-steel-muted:#9db1c2;
  --grid:rgba(157,177,194,.10);
  --sky:#6fbce6;
  --amber:#6fbce6;
  --blue:#86c8ee;
  --blue-soft:#13253a;
  --card:#fff;
  --card-ink:#171b3d;
  --card-muted:#566576;
  --card-link:#1c6a9e;
  --card-edge:#d5dde4;
  --card-wash:#e7f3fb;
}
body,.partners{background:var(--paper)}
.site-head,.top nav.open,.process,.about,.filters button,.search input,.menu-toggle{background:var(--sheet)}
.site-head,.partners,.process,.about{border-color:var(--line)}
.process,.about{box-shadow:inset 0 1px var(--line),inset 0 -1px var(--line)}
.brand img,.footer-brand img{background:var(--card);border-radius:4px}
.top nav>a:not(.button){color:var(--muted)}
.top nav>a[aria-current],.top nav>a:hover{color:var(--ink)}
.site-head .button,.hero .primary,.contact .primary{background:var(--sky);color:#0e1234}
.nav-cta,.contact .primary{border-radius:999px}
.site-head .button:hover,.hero .primary:hover,.contact .primary:hover{background:var(--sky);filter:brightness(1.08)}
.hero,.contact,.inner-hero{background:var(--navy);color:var(--on-steel)}
.hero::before,.contact::before,.inner-hero::before{background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);background-size:32px 32px}
.hero::before,.inner-hero::before{mask-image:none}
.contact{position:relative;isolation:isolate}
.contact::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none}
.hero .eyebrow,.hero h1 em,.contact .eyebrow,.inner-hero .eyebrow{color:var(--sky)}
.hero h1>span,.hero .outline,.contact .outline,.offices h3{color:var(--on-steel)}
.hero-lead,.fact-row span,.contact .lead,.contact-links,.offices p,.breadcrumb,.inner-hero .hero-copy>p:last-child{color:var(--on-steel-muted)}
.hero .outline,.contact .outline{border-color:#9db1c273}
.blueprint{background:rgba(7,21,32,.35);color:var(--on-steel);border-color:#9db1c259}
.sheet-top,.blueprint figcaption{background:transparent;color:var(--on-steel);border-color:#9db1c259}
.consult-grid>div,.category{background:var(--card-wash)}
.category{color:var(--card-link)}
.process,.process .lead{color:var(--ink)}
.process .lead{color:var(--muted)}
.process .eyebrow{color:var(--sky)}
.service.service-card,.project,.article,.certificate,.company-data>div,.steps li,.draw-card,dialog,.dialog-head{
  --ink:var(--card-ink);
  --muted:var(--card-muted);
  --blue:var(--card-link);
  --line:var(--card-edge);
  background:var(--card);color:var(--ink);border-color:var(--line);
}
.consult-grid>div{color:var(--card-ink)}
.consult-grid p{color:var(--card-muted)}
.service-card .service-info>a{border-color:var(--line)}
.service-card .service-info>a:focus-visible,.steps li :focus-visible,.draw-card:focus-visible{outline-color:var(--card-link)}
.steps li{box-shadow:0 12px 26px #050c1266}
.steps li::before{background:linear-gradient(90deg,var(--sky),var(--card-wash),transparent)}
.steps::before{background:var(--sky)}
.step-symbol svg{background:var(--card-wash);color:var(--blue);border-color:var(--line);filter:drop-shadow(0 0 6px #6fbce63d)}
.step-symbol span{color:var(--blue);border-color:var(--line)}
.steps li:hover .step-symbol svg,.steps li:focus-within .step-symbol svg{color:var(--blue);filter:drop-shadow(0 0 12px #6fbce675)}
.process .particles i{background:var(--sky)}
.marquee-track img{filter:drop-shadow(0 0 1.3px #eef3f7) drop-shadow(0 0 5px #9db1c24d)}
.search input{color:var(--ink)}
.search input::placeholder{color:var(--muted)}
.filters button[aria-pressed="true"]{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.filters button:hover,.article:hover,.search input:focus,.service.service-card:hover,.service.service-card:focus-within{border-color:var(--sky)}
.offices>div{background:var(--navy);box-shadow:inset 0 0 0 1px #9db1c24d}
.offices a,.bottom>a{color:var(--sky)}
footer{background:var(--navy);color:var(--on-steel-muted);box-shadow:inset 0 1px #9db1c22e}
.footer-brand strong{color:var(--on-steel)}
.footer-brand small{color:var(--on-steel-muted)}
.close{background:var(--card-wash)}
dialog::backdrop{background:rgba(5,12,18,.6)}

/* Hero facts and the company profile. */
.hero h1{font-size:clamp(2.4rem,4.55vw,4.72rem);letter-spacing:-.035em}
.fact-row .stat-value{color:inherit;font-size:inherit;font-variant-numeric:tabular-nums}
.fact-row strong{color:var(--on-steel)}
.fact-row.stat-started>div{animation:stat-signal .8s var(--ease) both;animation-delay:var(--stat-delay,0ms)}
@keyframes stat-signal{0%{box-shadow:inset 0 1px transparent}45%{box-shadow:inset 0 1px #91dcffb0}100%{box-shadow:inset 0 1px transparent}}
.steps li p{color:var(--card-ink);font-weight:500}
.about-grid{grid-template-columns:minmax(0,1.12fr) minmax(0,1fr);gap:clamp(20px,3vw,45px);align-items:stretch}
.about-grid .about-visual img{height:100%;min-height:290px;aspect-ratio:1.64;object-position:50% 57%}
.about-grid .company{border:1px solid #324355;border-radius:14px;background:var(--paper);padding:clamp(20px,3vw,40px);display:flex;flex-direction:column;justify-content:center}
.about-grid .company h3{color:var(--ink)}
.about-grid .company p{color:#b8c7d4}
.about-grid .company p:last-child{margin-bottom:0}
.about-facts{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,.85fr) minmax(0,1.55fr);gap:15px;margin-top:18px}
.about-stat,.about .certificate{margin:0;width:100%;border:1px solid var(--card-edge);border-radius:12px;background:var(--card);color:var(--card-ink)}
.about-stat{display:flex;flex-direction:column;justify-content:center;padding:18px;gap:4px}
.about-stat span{color:var(--card-muted);font-size:.92rem}
.about-stat strong{font-size:clamp(1.2rem,2.2vw,1.72rem);overflow-wrap:anywhere}
.about .certificate{grid-template-columns:58px minmax(0,1fr);gap:12px;padding:12px}
.about .certificate button img{height:75px;object-fit:contain}
.about .certificate p{font-size:.83rem;line-height:1.5}
.about .certificate h3{font-size:1.2rem}
.about .certificate .text-button{font-size:.9rem}
.service-actions{margin-top:auto;border-top:1px solid var(--card-edge);padding-top:10px;display:flex;gap:6px 12px;flex-wrap:wrap;align-items:center}
.service-actions button{border:0;border-radius:5px;color:var(--card-ink);background:var(--card-wash);padding:5px 9px;font-weight:700;font-size:.86rem}
.service-actions button:hover{background:#cbeaff}
.service-actions a{font-size:.88rem;margin-top:0}
#detail:has(.work-gallery){width:min(calc(100vw - 24px),930px)}
#detail .gallery-stage{background:#111a28;border-radius:8px;overflow:hidden;height:min(51vh,470px);display:grid;place-items:center}
#detail .gallery-stage img{width:100%;height:100%;max-height:none;object-fit:contain;background:#111a28}
.gallery-bar{display:flex;gap:10px;justify-content:space-between;align-items:center}
.gallery-bar .gallery-caption{margin:9px 0;color:var(--card-ink);font-size:.93rem}
.gallery-controls{display:flex;gap:8px;align-items:center;flex-shrink:0;padding-block:5px}
.gallery-controls button{border:1px solid var(--card-edge);border-radius:6px;background:var(--card-wash);width:34px;height:34px;font-size:1.55rem;line-height:1}
.gallery-index{font-variant-numeric:tabular-nums;color:var(--card-muted);font-size:.9rem;min-width:37px;text-align:center}
.gallery-thumbs{display:flex;gap:7px;overflow-x:auto;padding:3px 1px 6px}
.gallery-thumbs button{border:2px solid transparent;border-radius:6px;padding:1px;flex:0 0 77px;height:53px;background:var(--card-wash);overflow:hidden}
.gallery-thumbs button[aria-pressed="true"]{border-color:var(--card-link)}
#detail .gallery-thumbs img{width:100%;height:100%;object-fit:cover}
@media(max-width:850px){
  .hero h1{font-size:clamp(2.15rem,7.15vw,3.9rem)}
  .about-grid{grid-template-columns:1fr}
  .about-grid .about-visual img{min-height:0}
}
@media(max-width:520px){
  .hero h1{font-size:clamp(1.66rem,8.3vw,2.67rem)}
  .about-facts{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}
  .about .certificate{grid-column:1/-1}
  .about-stat{padding:13px 10px}
  #detail .gallery-stage{height:min(43vh,380px)}
  .gallery-bar .gallery-caption{font-size:.83rem}
}
.fact-row .stat-text{color:inherit;font-size:inherit}
.fact-row .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}

/* Standalone project pages. */
.project-page-head .breadcrumb{flex-wrap:wrap}
.project-page-head .breadcrumb span[aria-current]{color:var(--on-steel)}
.project-page-photos{padding-top:clamp(44px,6vw,78px)}
.project-photo-heading{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:18px}
.project-photo-heading h2{font-size:clamp(1.75rem,3.6vw,2.8rem)}
.project-photo-heading span{color:var(--muted);white-space:nowrap}
.project-photo-first,.project-photo-grid figure{border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--sheet)}
.project-photo-first a,.project-photo-grid a{display:block;background:#060d17}
.project-photo-first img{width:100%;height:clamp(250px,52vw,570px);object-fit:contain}
.project-photo-first figcaption,.project-photo-grid figcaption{padding:11px 16px;color:var(--ink)}
.project-photo-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-top:17px}
.project-photo-grid img{width:100%;aspect-ratio:3/4;object-fit:contain}
.project-page-links{display:flex;gap:11px;flex-wrap:wrap;margin-top:22px}
.project-page-links .button{background:var(--sheet);border-color:var(--line);color:var(--sky)}
.project-page-links .button:hover{border-color:var(--sky)}
@media(max-width:800px){.project-photo-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:420px){.project-photo-grid{gap:8px}.project-photo-grid figcaption{padding:8px;font-size:.88rem}}

/* Banner illustrations and office maps. */
.brand img,.footer-brand img{background:transparent;border-radius:0;object-fit:contain}
.brand img{object-position:left center}
.marquee-track img{width:148px;height:70px;filter:none}
.inner-hero .banner-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,.86fr);column-gap:clamp(28px,5vw,70px);row-gap:15px;align-items:center}
.banner-layout .breadcrumb{grid-column:1/-1;margin-bottom:0}
.banner-visual{position:relative;isolation:isolate;border:1px solid #89b8e178;border-radius:8px;overflow:hidden;background:#0a1726;box-shadow:0 18px 45px #02071b48;margin:0}
.banner-visual::after{content:"";position:absolute;inset:0 auto 0 -28%;width:24%;pointer-events:none;background:linear-gradient(90deg,transparent,#96d7ff20,transparent);transform:skewX(-18deg)}
.motion .banner-visual::after{animation:banner-scan 6s 1.1s ease-in-out 2}
@keyframes banner-scan{45%,100%{left:110%}}
.banner-visual img{width:100%;height:clamp(200px,24vw,320px);object-fit:cover;object-position:center}
.banner-visual a{display:block}
.banner-visual figcaption{display:block;padding:8px 12px;color:var(--on-steel);background:#111c31;font-size:.85rem;border-top:1px solid #9db1c24d}
.banner-drawing img{object-fit:contain;padding:10px;background:var(--card)}
.project-page-head .banner-visual img{object-fit:contain}
.office-location p{margin-bottom:3px}
.office-map{margin-top:9px;border-top:1px solid #9db1c24d}
.office-map summary{padding-top:7px;cursor:pointer;color:var(--on-steel);font-size:.88rem}
.office-map iframe{display:block;width:100%;height:clamp(180px,24vw,252px);border:0;border-radius:5px;background:var(--sheet);margin-top:7px}
@media(max-width:800px){
  .inner-hero .banner-layout{grid-template-columns:1fr}
  .banner-visual img{height:clamp(170px,49vw,280px)}
  .marquee-track img{width:129px;height:62px}
}
@media(prefers-reduced-motion:reduce){.banner-visual::after{display:none}}
.site-head .nav-cta:hover,.site-head .nav-cta:focus-visible{color:#0e1234}
@media(max-width:490px){
  .contact-layout{gap:25px}
  .office-location{overflow-wrap:anywhere}
  .office-map iframe{height:205px}
}
