@import url('./tokens.css');
@layer reset, base, layout, components, utilities;
@layer reset { *, *::before, *::after {box-sizing:border-box} body,h1,h2,h3,p,figure,blockquote{margin:0} img,svg{display:block;max-width:100%} button,input,select,textarea{font:inherit} button,a,input,select,textarea{-webkit-tap-highlight-color:transparent} }
@layer base {
 html{scroll-behavior:smooth} body{background:var(--color-paper);color:var(--color-ink);font:var(--text-base)/1.6 var(--font-body)}
 h1,h2,h3,.display{font-family:var(--font-display);font-weight:400;line-height:1.08} h1{font-size:var(--text-hero)} h2{font-size:var(--text-h2)} h3{font-size:var(--text-h3)} p{max-width:65ch} a{color:inherit;text-underline-offset:.35em} button{cursor:pointer} button:disabled{cursor:not-allowed;opacity:.4} :focus-visible{outline:.1875rem solid var(--color-teal);outline-offset:.3rem} .dark :focus-visible{outline-color:var(--color-cyan)} [hidden]{display:none!important} section{scroll-margin-top:2rem} ::selection{background:var(--color-cyan);color:var(--color-night)}
}
@layer layout {
 .container{width:100%;padding-inline:var(--gutter)} .section{padding-block:var(--section-space)} .stack{display:grid;gap:var(--space-6)} .row{display:flex;flex-wrap:wrap;gap:var(--space-4);align-items:center} .grid{display:grid;gap:var(--grid-gap)} .grid>*{min-width:0} .split{display:grid;gap:var(--grid-gap)}
 @media(min-width:48rem){.split{grid-template-columns:1.2fr 1fr;align-items:center}.grid--3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid--4{grid-template-columns:repeat(4,minmax(0,1fr))}}
}
@layer components {
 .dark{background:var(--color-night);color:var(--color-paper);--color-muted:#c2cdd2;--color-line:#34505c;--color-teal:var(--color-cyan)} .dark--soft{background:var(--color-night-soft)} .accent{color:var(--color-teal)} .eyebrow{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.09em;line-height:1.5} .section-label{color:var(--color-teal);border-bottom:var(--border) solid currentColor;padding-bottom:var(--space-4);margin-bottom:var(--space-8)} .lead{font-size:var(--text-lead);line-height:1.5} .muted{color:var(--color-muted)} .rule::before{content:'';display:block;width:3.5rem;height:var(--border);background:var(--color-teal);margin-block:var(--space-6)}
 .button{display:inline-flex;justify-content:center;align-items:center;gap:var(--space-6);min-height:var(--control-size);padding:.85rem 1.5rem;border:var(--border) solid var(--color-teal);color:var(--color-teal);background:transparent;text-transform:uppercase;text-decoration:none;font-size:var(--text-xs);letter-spacing:.04em;transition:background var(--duration) var(--ease),color var(--duration) var(--ease)} .button:hover:not(:disabled){background:var(--color-teal);color:var(--color-paper)} .dark .button:hover:not(:disabled){color:var(--color-night)} .button--filled{background:var(--color-teal);color:var(--color-paper)} .button--icon{padding:.5rem;width:var(--control-size);border-radius:50%;font-size:1.3rem;line-height: 1.3rem;} .text-link{display:inline-flex;align-items:center;gap:2rem;min-height:var(--control-size);color:var(--color-teal);font-size:var(--text-sm);text-transform:uppercase;text-decoration:underline} .icon{width:2.5rem;height:2.5rem;fill:none;stroke:currentColor;stroke-width:1.4;flex-shrink:0;color:var(--color-teal)}
 .brand{display:inline-flex;align-items:center;gap:.6rem;text-decoration:none;line-height:.9;font-size:1.2rem;font-weight:700}.brand small{color:var(--color-cyan)} .header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-6);padding-block:var(--space-6);position:relative;z-index:2}.nav{display:none;gap:1.5rem;align-items:center}.nav a{font-size:var(--text-xs);text-decoration:none;text-transform:uppercase}.nav.is-open{display:flex;position:absolute;inset:100% 0 auto;background:var(--color-night);padding:var(--space-6);flex-direction:column}.header-actions{display:flex;align-items:center;gap:var(--space-6);margin-left:auto}.header-contact{display:none}
 .hero{position:relative;isolation:isolate;min-height:100svh;display:flex;flex-direction:column;justify-content:space-between}.hero-body{padding-block:clamp(3rem,9vw,10rem);display:grid;gap:var(--grid-gap)}.hero-copy{max-width:12ch}.hero-aside{border-left:var(--border) solid var(--color-line);padding-left:var(--space-6);max-width:28rem}.hero .media-bg{opacity:.45}.media-bg{position:absolute;inset:0;width:100%;height:100%;z-index:-1}.photo{width:100%;aspect-ratio:2.1;object-fit:cover;background:var(--color-night-soft)} .media-bg svg{width:100%;height:100%}.service-head{margin-bottom:var(--space-8)} .quote{border-left:var(--border) solid var(--color-line);padding-left:var(--space-6);font:var(--text-h3)/1.2 var(--font-display)} .feature{border-top:var(--border) solid var(--color-line);padding-top:var(--space-6)} .number{font:var(--text-h3)/1 var(--font-display);color:var(--color-teal)} .counter{font:clamp(4rem,10vw,10rem)/1 var(--font-display)} .counter small{font-size:.3em;color:var(--color-muted)} .slider-controls{display:flex;align-items:center;gap:var(--space-3);margin-top:var(--space-8)} .progress{height:.125rem;background:var(--color-line);flex:1}.progress span{display:block;width:25%;height:100%;background:var(--color-teal)} .project{position:relative;isolation:isolate;min-height:36rem;display:flex;align-items:center}.project .media-bg{opacity:.55}.project-copy{max-width:50rem}.dots{display:flex;gap:.25rem;justify-content:center}.dot{width:var(--control-size);height:var(--control-size);padding:.8rem;border:0;background:transparent}.dot::after{content:'';display:block;border:var(--border) solid currentColor;border-radius:50%;width:100%;height:100%}.dot[aria-current=true]::after{background:var(--color-teal);border-color:var(--color-teal)} .stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-8);padding-block:var(--space-8);text-align:center}.stat strong{display:block;font:var(--text-h3)/1.2 var(--font-display)} .stat span{font-size:var(--text-sm)} .card{border:var(--border) solid var(--color-line);border-radius:var(--radius);padding:clamp(1.25rem,3vw,3rem)} .callout{border:var(--border) solid var(--color-teal);padding:var(--space-6)} .association{background:var(--color-night-soft);border:var(--border) solid var(--color-line);padding:var(--space-8)} .footer-grid{display:grid;gap:var(--space-8)} .footer-grid nav{display:grid;align-content:start;gap:.75rem}.footer-grid a{text-decoration:none}.footer-bottom{border-top:var(--border) solid var(--color-line);padding-block:var(--space-6);margin-top:var(--space-8);font-size:var(--text-xs)} address{font-style:normal;overflow-wrap:anywhere} .field{display:grid;gap:var(--space-2)} .field input,.field select,.field textarea{width:100%;min-height:var(--control-size);padding:.75rem;border:var(--border) solid var(--color-line);border-radius:0;background:var(--color-paper);color:var(--color-ink)} .field input[aria-invalid=true]{border-color:var(--color-error)} .error{color:var(--color-error);font-size:var(--text-sm)} .success{color:var(--color-success)} .check{display:flex;gap:.75rem;align-items:flex-start}.check input{width:1.25rem;height:1.25rem;accent-color:var(--color-teal)} dialog{width:min(92vw,36rem);max-height:90svh;overflow:auto;border:0;padding:var(--space-8);background:var(--color-paper);color:var(--color-ink)} dialog::backdrop{background:#001524c9} .dialog-top{display:flex;justify-content:space-between;gap:1rem;align-items:start;margin-bottom:var(--space-6)} .skip{position:fixed;top:-10rem;left:1rem;z-index:20;padding:1rem;background:white;color:black}.skip:focus{top:1rem}
 @media(min-width:48rem){.stats{grid-template-columns:repeat(4,minmax(0,1fr))}.stat+.stat{border-left:var(--border) solid var(--color-line)}.footer-grid{grid-template-columns:1.1fr .8fr 1fr 1.4fr}.hero-body{grid-template-columns:1fr .4fr;align-items:end}}
 @media(min-width:80rem){.nav{display:flex}.menu-toggle{display:none}.header-contact{display:block}}
}
@layer utilities {.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.mb{margin-bottom:var(--space-8)}.mt{margin-top:var(--space-8)}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{transition:none!important;animation:none!important}}

dialog.site-services-success{width:min(92vw,34rem);padding:clamp(1.5rem,4vw,3rem);border:1px solid var(--color-cyan);border-radius:var(--radius);background:var(--color-night);color:var(--color-paper);box-shadow:0 1.5rem 5rem #00152499}
dialog.site-services-success .dialog-top{margin-bottom:1rem}
dialog.site-services-success h3{font-size:clamp(1.75rem,4vw,2.75rem)}
.site-services-success-message{color:var(--color-muted);font-size:var(--text-lead);line-height:1.45;margin-bottom:1.5rem}
dialog.site-services-success .button--filled{width:100%;background:var(--color-cyan);color:var(--color-night);border-color:var(--color-cyan)}
@layer components {
 @media(max-width:47.999rem){.header{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.75rem}.header>.menu-toggle{grid-column:2;grid-row:1}.header-contact{display:block;grid-column:1;grid-row:2;min-width:0;align-self:center;font-size:.78rem;line-height:1.2}.header-contact .contact-item{gap:.35rem;white-space:nowrap}.header-contact .contact-item .icon{width:1.15rem;height:1.15rem}.header-contact .eyebrow{display:block;font-size:.55rem;line-height:1.15;white-space:nowrap}.hero-copy{font-size:clamp(2.8rem,11vw,5rem)}.service-head h2{overflow-wrap:anywhere}.photo{aspect-ratio:4/3}}
}
@layer components {
 .section-label{max-width:none}.photo--award{aspect-ratio:478/495}.hero .media-bg{overflow:hidden}
 @media(min-width:48rem) and (max-width:79.999rem){.split>.grid--3{grid-template-columns:1fr}}
}

@media(min-width:48rem) and (max-width:79.999rem){
 .header{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:1rem}
 .header-actions{grid-column:2;justify-self:center;gap:.75rem;margin-left:0}
 .header-contact{display:block;min-width:0;padding-left:30px;position:relative;font-size:1.05rem;line-height:1.5;text-align:right}
 .header-contact .contact-item{gap:.35rem;white-space:nowrap}
 .header-contact .contact-item .icon{position:absolute;left:0;top:50%;width:1.8rem;height:1.8rem;transform:translateY(-50%)}
 .header-contact .eyebrow{font-size:.52rem;line-height:1.1;white-space:nowrap;text-align:right}
 .header-actions>.button{min-height:2.75rem;padding:.55rem .75rem;gap:.35rem;font-size:.66rem;white-space:nowrap}
}
@media(max-width:47.999rem){
 .header{grid-template-columns:1fr auto}
 .header-actions{grid-column:1/-1;grid-row:2;display:flex;justify-content:center;align-items:center;gap:.55rem;margin:0 auto}
 .header .header-contact{display:block!important;min-width:0;padding-left:30px;position:relative;text-align:right;font-size:1.05rem;line-height:1.5}
 .header-contact .contact-item .icon{position:absolute;left:0;top:50%;width:1.8rem;height:1.8rem;transform:translateY(-50%)}
 .header-contact .eyebrow{display:block;font-size:.52rem;line-height:1.1;text-align:right}
 .header-actions>.button{min-height:2.6rem;padding:.5rem .6rem;gap:.3rem;font-size:.52rem;white-space:nowrap}
}

.header-contact .contact-item{text-decoration:none}
@layer base {h1,h2,h3,h4,.display{overflow-wrap:anywhere}}
.cookie-banner{position:fixed;z-index:20;left:2rem;right:2rem;bottom:1rem;display:flex;align-items:center;gap:1rem;padding:1rem 1.5rem;background:#fff;color:#19242a;box-shadow:0 1rem 3rem #00152430;opacity:0;visibility:hidden;pointer-events:none;transform:translateY(.85rem);transition:opacity .55s var(--ease),visibility .55s var(--ease),transform .55s var(--ease)}.cookie-banner.is-visible{opacity:1;visibility:visible;pointer-events:auto;transform:none}.cookie-banner strong{color:#006bff;letter-spacing:.12em}.cookie-banner span{flex:1}.cookie-banner a{color:#06e;text-decoration:underline}html.cookie-banner-dismissed .cookie-banner{display:none!important}@media(max-width:40rem){.cookie-banner{left:.75rem;right:.75rem;flex-wrap:wrap;font-size:.8rem}}
.back-to-top{position:fixed;z-index:15;right:1.25rem;bottom:1.25rem;width:3rem;height:3rem;min-height:3rem;padding:0;background:var(--color-night);color:var(--color-cyan);border-color:var(--color-cyan);box-shadow:0 .6rem 1.6rem #00152440;opacity:0;visibility:hidden;pointer-events:none;transform:translateY(.75rem);transition:opacity .35s var(--ease),visibility .35s var(--ease),transform .35s var(--ease),background var(--duration) var(--ease),color var(--duration) var(--ease)}.back-to-top.is-visible{opacity:1;visibility:visible;pointer-events:auto;transform:none}.back-to-top:hover:not(:disabled){background:var(--color-cyan);color:var(--color-night)}.back-to-top .icon{width:1.35rem;height:1.35rem;color:inherit}body:has(.cookie-banner.is-visible) .back-to-top{bottom:6.5rem}@media(max-width:40rem){.back-to-top{right:.75rem;bottom:.75rem}body:has(.cookie-banner.is-visible) .back-to-top{bottom:8.25rem}}

/* Shared footer: reference implementation from the About page. */
.site-footer{--color-cyan:#00c4e5;--color-teal:#00c4e5;--color-paper:#f7f6f3;--text-base:1rem;--text-sm:.875rem;--text-xs:.75rem;--space-6:1.5rem;--space-8:2rem;--control-size:2.75rem;--gutter:clamp(1.25rem,3.5vw,5rem);--section-space:clamp(3rem,6vw,7rem);font:1rem/1.6 Arial,sans-serif;color:#f7f6f3;height:auto}
.site-footer .stack{gap:1.5rem}.site-footer .footer-grid{line-height:1.6}.site-footer .footer-grid>div>p{text-align:left}
.footer-association{background:#0b1a26}.footer-association>.association{margin-bottom:0}
@media(min-width:64rem){.site-footer{--footer-unit:calc(100vw / 1693);--gutter:calc(75 * var(--footer-unit));--section-space:calc(65 * var(--footer-unit))}}
.site-footer .footer-grid .asset-brand{width:15rem}
.site-footer{background:#0b1a26;padding-bottom:0}.site-footer .footer-bottom{display:flex;justify-content:space-between;align-items:center;gap:1.5rem;color:#c2cdd2}.site-footer .footer-bottom>span:last-child{display:flex;gap:1.5rem;align-items:center}.site-footer .footer-bottom .icon{width:1.8rem;height:1.8rem}.site-footer .footer-grid>div{align-content:start;gap:1rem}.site-footer .footer-grid>div>p{max-width:23ch;margin-left:3rem;font-size:var(--text-sm)}.site-footer .footer-grid .social-icons{margin-top:1.5rem}.site-footer .social-icons .button:disabled{opacity:1}.site-footer .footer-grid strong{font-weight:400}.site-footer .footer-grid strong::after{content:'';display:block;width:2rem;height:1px;margin-top:.75rem;background:var(--color-cyan)}
@media(min-width:48rem){
 .site-footer .footer-grid>nav,.site-footer .footer-grid>address{border-left:1px solid #ffffff30;padding-left:2rem}
 .site-footer .footer-bottom>span:nth-child(2),.site-footer .footer-bottom>span:nth-child(3){border-left:1px solid #ffffff30;padding-left:1.5rem}}
@media(min-width:64rem){
 .site-footer{padding-top:calc(38 * var(--footer-unit));padding-inline:calc(58 * var(--footer-unit))}.site-footer .footer-grid{grid-template-columns:1.05fr .75fr 1fr 1.45fr;gap:0;font-size:clamp(.875rem,1.15vw,1.25rem)}.site-footer .footer-grid>div{padding-right:calc(50 * var(--footer-unit));gap:.75rem}.site-footer .footer-grid .asset-brand{width:calc(275 * var(--footer-unit))}.site-footer .footer-grid>nav,.site-footer .footer-grid>address{padding-left:calc(65 * var(--footer-unit));gap:calc(15 * var(--footer-unit))}.site-footer .footer-grid address{font-size:clamp(.875rem,1.1vw,1.2rem)}.site-footer .footer-grid .contact-item{gap:1rem}.site-footer .footer-grid .contact-item .icon{width:1.5rem;height:1.5rem;margin-top:0}.site-footer .footer-grid strong{margin-bottom:1rem}.site-footer .social-icons{gap:1.5rem}.site-footer .social-icons .button{width:3.5rem;height:3.5rem}.site-footer .footer-grid>div>p{font-size:clamp(.875rem,1.08vw,1.25rem);margin-left:calc(65 * var(--footer-unit))}.site-footer .footer-bottom{font-size:clamp(.75rem,1.05vw,1.15rem);margin-top:calc(25 * var(--footer-unit));padding-block:calc(30 * var(--footer-unit));gap:calc(25 * var(--footer-unit));flex-wrap:nowrap}.site-footer .footer-bottom>span:last-child{margin-left:auto;gap:1.25rem}.site-footer .footer-bottom>span:nth-child(2),.site-footer .footer-bottom>span:nth-child(3){padding-left:calc(38 * var(--footer-unit))}}
@media(max-width:63.999rem){.site-footer .footer-bottom{align-items:flex-start}.site-footer .footer-bottom>span:last-child{width:100%}}
@media(max-width:47.999rem){.site-footer .footer-bottom{flex-direction:column;gap:1rem}.site-footer .footer-bottom>span:last-child{justify-content:space-between}}
.site-footer .max-link{display:inline-flex;align-items:center;gap:.75rem;width:max-content;color:inherit;text-decoration:none}.site-footer .max-link:hover span{text-decoration:underline;text-underline-offset:.2em}.site-footer .max-link img{display:block;width:2.25rem;height:2.25rem;border-radius:.55rem}

/* Shared motion and carousel controls. */
@layer components {
 .autoplay-toggle{position:absolute;right:1.25rem;bottom:1.25rem;z-index:4;width:2.75rem;min-width:2.75rem;height:2.75rem;min-height:2.75rem;padding:0;border:0!important;background:transparent;color:currentColor;box-shadow:none!important;font-size:1rem}
 .autoplay-toggle:hover:not(:disabled),.autoplay-toggle:active:not(:disabled),.autoplay-toggle:focus,.autoplay-toggle:focus-visible{border:0!important;outline:0!important;background:transparent;color:var(--color-cyan);box-shadow:none!important}
 .button.autoplay-toggle[aria-pressed=true]{border:0!important;box-shadow:none!important}
 .autoplay-toggle__icon{font-size:.9em;line-height:1}
 [data-autoplay]:not(dialog){position:relative}
 .work-slider .autoplay-toggle,.certificate-carousel .autoplay-toggle{bottom:-2.75rem}
 .service-portfolio-slider .autoplay-toggle,#benefits .autoplay-toggle{bottom:1.25rem}
 .motion-reveal{opacity:.01;transform:translateY(1.25rem);transition:opacity .7s var(--ease),transform .7s var(--ease)}
 .motion-reveal.is-visible{opacity:1;transform:none}
 .text-link,.project-link{transition:color var(--duration) var(--ease)}
 .text-link>span:last-child,.project-link>.button,.button>span:last-child{transition:transform .25s var(--ease)}
 .text-link:hover>span:last-child,.text-link:focus-visible>span:last-child,.project-link:hover>.button,.project-link:focus-visible>.button,.button:hover>span:last-child,.button:focus-visible>span:last-child{transform:translateX(.35rem)}
 @media(prefers-reduced-motion:reduce){.motion-reveal{opacity:1;transform:none}}
}
