:root{--header-height:104px}html{scroll-padding-top:calc(var(--header-height) + 24px)}body{overflow-x:clip}header.nav{position:sticky;top:0;z-index:60;background:var(--paper);box-shadow:0 1px 0 #181b1c1c;min-height:90px}.desktopnav{gap:clamp(12px,1.4vw,28px)}.desktopnav a{font-size:14px;white-space:nowrap}#mobileNav{position:fixed;top:var(--header-height);left:0;right:0;z-index:59;max-height:calc(100dvh - var(--header-height));overflow:auto;background:var(--paper);padding:20px 6vw}#mobileNav a{min-height:48px;display:flex;align-items:center}.section{padding-block:clamp(64px,8vw,128px)}.wrap{width:min(1440px,90%)}h1,h2,h3{overflow-wrap:break-word}h1{line-height:1.15}h2{line-height:1.25}p{line-height:1.7}.hero{min-height:700px;min-height:min(860px,calc(100svh - var(--header-height)));}.hero h1{font-size:clamp(38px,5vw,80px);max-width:1000px;letter-spacing:-.025em}.hero .herocopy{font-size:clamp(17px,1.45vw,22px);max-width:820px}.hero .heromain{padding-top:100px}.herobottom{padding-top:30px}.category-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:56px 28px}.category-card{display:block;min-width:0}.category-image{position:relative;aspect-ratio:3/2;overflow:hidden;background:#e9e9e7}.category-image img{width:100%;height:100%;object-fit:cover;transition:transform .4s ease}.category-card:hover img{transform:scale(1.025)}.category-number{position:absolute;top:18px;left:18px;background:#fff;color:var(--ink);padding:8px 12px;font-size:14px}.category-caption{padding-top:20px}.category-caption h3{font-size:clamp(22px,2.1vw,34px);line-height:1.3;max-width:650px}.category-caption p{color:#5b6163;font-size:16px;margin-top:10px;max-width:540px}.portfolio-intro{font-size:18px;max-width:760px;margin-bottom:42px}.archive-heading{padding-block:70px 52px}.archive-heading h1{font-size:clamp(34px,4.8vw,72px);max-width:1200px;margin-top:20px}.archive-heading>p:last-child{font-size:18px;margin-top:24px}.category-nav{position:sticky;top:var(--header-height);z-index:40;background:var(--paper);border-block:1px solid #dedede}.category-scroll{display:flex;gap:28px;overflow-x:auto;overscroll-behavior-x:contain;padding:0 5vw;scrollbar-width:thin}.category-scroll a{display:flex;align-items:center;flex:0 0 auto;max-width:300px;font-size:14px;line-height:1.5;padding:18px 0;border-bottom:3px solid transparent;min-height:64px}.category-scroll a[aria-current=page]{border-color:var(--red);color:var(--red)}.archive-results{padding-block:56px 110px}.portfolio-grid{gap:60px 30px}.portfolio-caption h2{font-size:clamp(23px,2.1vw,34px);margin-bottom:12px}.portfolio-caption .project-description{font-size:16px;color:#5b6163;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.portfolio-image{aspect-ratio:3/2}.status-tag{font-size:13px}.case-page{padding-top:30px}.case-page>.textlink{display:inline-block;margin:0 0 28px;max-width:100%;font-size:14px}.case-cover{display:block;overflow:hidden}.case-cover img{aspect-ratio:16/9;max-height:760px;object-fit:cover;width:100%;height:auto}.case-heading{display:grid;grid-template-columns:1fr;max-width:1080px;padding:55px 0 30px}.case-heading h1{font-size:clamp(36px,5vw,76px)}.case-copy{gap:60px}.case-extra{max-width:1000px;margin-block:36px}.case-extra h2{font-size:24px;margin-bottom:12px}.case-gallery{gap:30px;margin-block:40px 70px}.case-gallery img{aspect-ratio:3/2}.case-gallery button:first-child{grid-column:1/-1}.case-gallery button:first-child img{aspect-ratio:16/9}.case-gallery span{display:block;font-size:14px;margin-top:12px}.example-note{font-size:14px!important;color:#686d6e;border-left:2px solid var(--red);padding-left:16px;margin-block:20px}.related-projects{margin-top:90px}.integrated-step{border-top:1px solid #ffffff40;padding:24px 0}.integrated-step h3{font-size:26px;line-height:1.35;margin:26px 0 18px}.integrated-step p{font-size:16px;color:#d3d7d8}.credential-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;margin-top:50px}.credential-grid article{padding:28px 0;border-top:1px solid #bbb}.credential-grid h3{font-size:23px;line-height:1.5}.credential-line{display:block;width:40px;border-top:3px solid var(--red);margin-bottom:18px}.company-link{display:inline-block;margin-top:32px}.partner-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:32px;margin-top:44px}.partner-grid img{width:100%;height:120px;object-fit:contain;filter:grayscale(1);transition:filter .2s}.partner-grid figure:hover img{filter:none}.partner-grid figcaption{font-size:14px;text-align:center;margin-top:14px}.contact-clean{background:#f1f1ee;color:var(--ink)}.contact-columns{display:grid;grid-template-columns:1fr 1fr;gap:60px}.contact-columns>div>p{max-width:640px}.contact-details{display:grid;gap:18px;margin-top:30px}.contact-details>a{font-size:clamp(20px,2vw,32px);overflow-wrap:anywhere}.contact-details span{font-size:14px;color:#646969}.contact-map iframe{border:0;width:100%;height:360px;background:#e8e8e4}.contact-clean #contactForm{padding-top:55px}.contact-clean input,.contact-clean textarea{border-color:#a0a5a5}.company-page{padding-block:70px 110px}.company-heading{max-width:1160px}.company-heading h1{font-size:clamp(36px,5vw,76px);margin-block:25px 35px}.company-heading>p:last-child{font-size:20px;max-width:950px}.company-model{display:grid;grid-template-columns:1fr 1.4fr;gap:60px;padding-block:70px;border-block:1px solid #ddd;margin-block:70px}.professional-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:48px 30px;margin-top:40px}.professional img{aspect-ratio:4/5;width:100%;height:auto;object-fit:cover}.professional-index{font-size:76px;color:#b8bdbe;border-top:1px solid #aaa;padding:30px 0}.professional h3{font-size:26px;line-height:1.4;margin-block:20px 10px}.professional-role{font-size:16px;color:#5d6264}.job-card{border-top:1px solid #c5c7c7;padding:28px 0;display:grid;grid-template-columns:1fr auto;gap:30px}.job-card h3{font-size:24px}.job-card p{max-width:700px;margin-block:12px}.job-card button{align-self:center;min-height:48px}.career-jobs:has(.job-card){display:block}#applicationForm select{width:100%;padding:14px;font:inherit;border:1px solid #999;background:#fff}#backToTop{position:fixed;bottom:24px;right:24px;z-index:45;width:48px;height:48px;background:var(--ink);color:#fff;border:1px solid #ffffff70;font-size:24px;box-shadow:0 3px 12px #0002}.category-card:focus-visible,.portfolio-card:focus-visible,a:focus-visible,button:focus-visible{outline:3px solid var(--red);outline-offset:5px}.preview-banner{position:relative}.servicebody .textlink{display:inline-block;margin-top:24px}#galleryDialog{width:98vw;max-width:1600px}#galleryDialog img{width:auto;height:auto}#apply{scroll-margin-top:calc(var(--header-height) + 25px)}
@media(max-width:1200px){.desktopnav{display:none}.nav{padding-block:18px}.professional-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:700px){:root{--header-height:80px}header.nav{min-height:76px;padding:16px 5%;gap:12px}.brand{gap:8px}.brand .mark{width:32px;height:38px}.brand>span{font-size:24px}.brand small{display:none}.langs{gap:0}.langs button{min-width:36px;min-height:44px;padding:6px;font-size:12px}#menu{font-size:0;min-width:44px;min-height:44px;padding:8px}#menu>span:last-child{font-size:20px}.hero{min-height:720px}.hero .heromain{padding-top:70px}.hero h1{font-size:38px;line-height:1.25}.hero .herocopy{font-size:17px}.category-grid,.portfolio-grid,.credential-grid,.case-copy,.case-gallery,.company-model,.contact-columns,.professional-grid{grid-template-columns:1fr}.category-grid{gap:38px}.category-caption h3{font-size:25px}.sectionhead{display:block}.sectionhead h2{margin-top:22px;font-size:32px}.archive-heading{padding-top:46px}.category-scroll{gap:24px}.category-scroll a{max-width:230px;padding-block:14px}.archive-results{padding-top:32px}.case-heading h1{font-size:36px}.case-copy{gap:24px}.case-cover img{aspect-ratio:3/2}.case-gallery button:first-child img{aspect-ratio:3/2}.company-heading>p:last-child{font-size:18px}.company-model{gap:25px;padding-block:40px;margin-block:45px}.partner-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.job-card{grid-template-columns:1fr;gap:12px}.job-card button{justify-self:start}.contact-map iframe{height:280px}.contact-columns{gap:28px}#backToTop{right:16px;bottom:16px;width:44px;height:44px}.application-grid{grid-template-columns:1fr}.projectgrid{grid-template-columns:1fr}#galleryDialog{padding:50px 12px 20px}.herotop .eyebrow{font-size:12px;line-height:1.8}.status-tag{font-size:12px}.case-facts{gap:24px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto!important}*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
/* Compact portfolio and document pages */
.category-hero{margin-top:36px;aspect-ratio:21/9;overflow:hidden}.category-hero img{width:100%;height:100%;object-fit:cover}.category-scroll a{white-space:nowrap;max-width:none}.case-thumbnails{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin:18px 0 48px}.case-thumbnails button:first-child{grid-column:auto}.case-thumbnails button img,.case-thumbnails button:first-child img{aspect-ratio:3/2;object-fit:cover;width:100%;height:auto}.case-copy p{white-space:pre-wrap}.case-copy:empty,.case-facts:empty{display:none}.case-back{margin-block:40px!important}.company-licenses{margin-top:80px;scroll-margin-top:calc(var(--header-height) + 30px)}.license-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:48px 32px;margin-top:36px}.license-grid article{border-top:1px solid #ccc;padding-top:24px}.license-grid h3{font-size:23px;line-height:1.5;margin-block:20px}.license-scan{display:block;width:100%;background:#f1f2f2;padding:18px;border:0;cursor:zoom-in}.license-scan img{max-height:360px;width:100%;object-fit:contain}.license-grid dl>div{display:flex;gap:24px;justify-content:space-between;padding:10px 0;border-bottom:1px solid #ddd;font-size:14px}.license-grid dd{text-align:right;margin:0}.social-links{display:flex;gap:12px;flex-wrap:wrap}.social-links a{display:flex;align-items:center;justify-content:center;gap:10px;min-height:44px;min-width:44px}.social-links svg{width:22px;height:22px}.social-links.named{margin-top:28px;justify-content:flex-start}.social-links.named a{padding-right:16px}.privacy-body{white-space:normal;max-width:850px;line-height:1.9;margin-block:36px 80px}footer{display:flex;align-items:center;gap:24px;flex-wrap:wrap;padding-block:35px!important}footer nav{display:flex;gap:20px;flex-wrap:wrap}footer nav a{font-size:14px;min-height:44px;display:flex;align-items:center}footer p{font-size:14px}.footer-brand{font-size:28px;font-weight:800;letter-spacing:-1px}.footer-brand span{font-size:13px;vertical-align:top}.contact-clean h1{font-size:clamp(40px,5vw,72px)}.case-thumbnails button{min-width:0}.case-thumbnails button:focus-visible{outline-offset:2px}
@media(max-width:700px){.category-hero{aspect-ratio:3/2}.case-thumbnails{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.license-grid{grid-template-columns:1fr}.case-heading{padding-top:28px}footer{align-items:flex-start}footer nav{gap:8px 20px;width:100%}.social-links{gap:8px}.hero .btn,.hero .textlink{min-height:44px}.license-grid dl>div{gap:16px}}
html.viewport-preview{scrollbar-width:none}html.viewport-preview::-webkit-scrollbar{width:0}
.full-banner{width:100%;margin:0;aspect-ratio:24/9;max-height:650px}.full-banner img{width:100%;height:100%;object-fit:cover}.inline-project .project-photo{display:block;width:100%;height:100%;border:0;padding:0;background:transparent;cursor:zoom-in}.inline-project .project-photo img{width:100%;height:100%;object-fit:cover}.inline-gallery-controls{position:absolute;bottom:16px;left:16px;right:16px;display:flex;align-items:center;gap:8px;opacity:0;transform:translateY(6px);transition:opacity .15s,transform .15s;pointer-events:none}.inline-project:hover .inline-gallery-controls,.inline-project:focus-within .inline-gallery-controls{opacity:1;transform:none;pointer-events:auto}.inline-gallery-controls button{min-height:44px;min-width:44px;background:#fff;color:var(--ink);border:0;font:inherit;cursor:pointer;padding:8px 12px;box-shadow:0 2px 10px #0003}.inline-gallery-controls button[data-inline-prev],.inline-gallery-controls button[data-inline-next]{font-size:28px}.inline-gallery-controls .open-gallery{margin-inline:auto;display:flex;align-items:center;gap:14px;font-size:14px}.inline-counter{font-variant-numeric:tabular-nums;font-size:13px}.contact-details p{white-space:pre-line}.map-placeholder{border:1px solid #c5c9c9;padding:30px;min-height:220px;background:#e8e8e4;display:flex;flex-direction:column;justify-content:center;gap:12px}.map-placeholder p{font-size:16px}
@media(hover:none){.inline-gallery-controls{opacity:1;transform:none;pointer-events:auto}}
@media(max-width:700px){.full-banner{aspect-ratio:16/10;max-height:none}.inline-gallery-controls{left:8px;right:8px;bottom:8px;opacity:1;transform:none;pointer-events:auto}.inline-gallery-controls .open-gallery{gap:8px;font-size:13px}.archive-heading{padding-bottom:32px}}
/* v12: preserve full image composition across every viewport. */
.full-banner{aspect-ratio:auto;max-height:none;height:auto;overflow:visible}.full-banner img{display:block;width:100%;height:auto;max-height:none;object-fit:contain;aspect-ratio:auto}
html{scroll-padding-top:calc(var(--header-height) + 20px)}
.inline-gallery-controls{bottom:18px;left:18px;right:18px;align-items:flex-end;justify-content:space-between;gap:12px;transform:translateY(10px)}
.project-filmstrip{display:flex;gap:6px;min-width:0;max-width:calc(100% - 66px);padding:6px;background:#181b1ccc;backdrop-filter:blur(12px);border:1px solid #ffffff40;overflow-x:auto;scrollbar-width:thin;border-radius:10px}
.inline-gallery-controls .project-filmstrip button{position:relative;width:64px;height:48px;min-width:52px;flex-shrink:0;padding:0;overflow:hidden;border-radius:5px;background:#181b1c;box-shadow:none;border:2px solid transparent;opacity:.65;transition:opacity .15s,border-color .15s}
.inline-gallery-controls .project-filmstrip button[aria-pressed=true]{border-color:#fff;opacity:1}
.inline-gallery-controls .project-filmstrip img{display:block;width:100%;height:100%;object-fit:cover;transform:none}
.project-filmstrip span{position:absolute;bottom:0;right:0;font-size:12px;line-height:1.4;color:#fff;background:#181b1cb3;padding:1px 4px}
.inline-gallery-controls .open-gallery{margin:0;min-width:52px;padding:8px;display:grid;justify-items:center;gap:2px;background:#181b1ccc;color:#fff;backdrop-filter:blur(12px);border:1px solid #ffffff40;border-radius:10px;box-shadow:none}
.open-gallery svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.5}.inline-counter{font-size:12px}
.project-photo{touch-action:pan-y}.inline-project:hover .project-photo img{transform:none}
#galleryDialog{width:min(96vw,1600px);height:auto;max-height:96dvh;padding:58px 24px 24px;border-radius:12px;overflow:auto}
#galleryDialog .gallery-stage{margin:0}#galleryDialog .gallery-stage img{width:auto;height:auto;max-width:100%;max-height:calc(96dvh - 210px);object-fit:contain}
.gallery-filmstrip{display:flex;justify-content:center;gap:8px;overflow-x:auto;margin:20px auto 12px;padding:4px;max-width:100%;scrollbar-width:thin}
.gallery-filmstrip button{position:relative;flex:0 0 84px;height:60px;padding:0;border:2px solid transparent;background:#181b1c;border-radius:5px;overflow:hidden;opacity:.6;color:#fff;cursor:pointer}
.gallery-filmstrip button[aria-pressed=true]{border-color:#fff;opacity:1}#galleryDialog .gallery-filmstrip img{width:100%;height:100%;object-fit:cover;max-height:none}
.gallery-filmstrip span{position:absolute;bottom:0;right:0;background:#181b1cb3;padding:1px 4px;font-size:12px}.gallery-counter{display:block;text-align:center;font-size:14px;font-variant-numeric:tabular-nums}.gallery-close{border-radius:50%}
footer .social-links{width:100%;border-top:1px solid #dedede;padding-top:20px;justify-content:flex-start;gap:12px 28px}footer .social-links a{font-size:14px}.social-unconfigured{display:flex;align-items:center;gap:10px;min-height:44px;font-size:14px;color:#747a7c}.social-unconfigured svg{width:22px;height:22px}
@media(hover:none){.inline-gallery-controls{opacity:1;transform:none;pointer-events:auto}}
@media(max-width:700px){.full-banner{aspect-ratio:auto;max-height:none}.inline-gallery-controls{left:10px;right:10px;bottom:10px;opacity:1;transform:none;pointer-events:auto}.inline-gallery-controls .project-filmstrip button{width:54px;height:44px;min-width:44px}.inline-gallery-controls .open-gallery{min-width:48px;min-height:48px}.portfolio-caption h2{font-size:25px}.archive-heading h1{font-size:clamp(28px,7.8vw,42px)}.category-nav{position:relative;top:auto}.category-scroll a{max-width:260px;white-space:normal}.hero{min-height:0}.hero .heromain{padding-block:48px}.herobottom{flex-wrap:wrap}.herotop{flex-wrap:wrap;gap:12px}.heroside{display:none}.service h3{overflow-wrap:anywhere}.social-links a{min-height:48px}#galleryDialog{padding:58px 12px 20px;width:96vw}#galleryDialog .gallery-stage img{max-height:calc(96dvh - 200px)}.gallery-filmstrip{justify-content:flex-start;width:max-content;max-width:100%}.gallery-filmstrip button{flex-basis:66px;height:52px}footer{gap:16px}footer .social-links{gap:10px 20px}.contact-columns>*{min-width:0}.contact-details a{font-size:clamp(18px,5.5vw,28px)}}
/* v13: purpose-made 3:1 panorama, standard 1920 × 640 composition. */
.full-banner{aspect-ratio:3/1;height:auto;max-height:none;overflow:hidden;background:#eceeed}.full-banner img{display:block;width:100%;height:100%;aspect-ratio:3/1;object-fit:contain;max-height:none}
@media(max-width:700px){.full-banner{aspect-ratio:3/1;max-height:none}.full-banner img{aspect-ratio:3/1;height:100%;object-fit:contain}}
/* v14: a contained editorial banner, narrower than the viewport. */
.full-banner{width:min(1280px,90%);margin-inline:auto;aspect-ratio:3/1;max-height:none;background:#eceeed}.full-banner img{width:100%;height:100%;object-fit:contain;aspect-ratio:3/1}
@media(max-width:700px){.full-banner{width:calc(100% - 32px);aspect-ratio:3/1}.full-banner img{object-fit:contain;aspect-ratio:3/1}}

.archive-category-heading{grid-column:1/-1;margin:36px 0 0;font-size:clamp(22px,3vw,32px);line-height:1.4;overflow-wrap:anywhere}.portfolio-grid>.archive-category-heading:first-child{margin-top:0}.portfolio-caption h2{overflow-wrap:anywhere}@media(max-width:800px){.project-photo,.open-gallery,.project-filmstrip button{min-height:44px}.archive-category-heading{margin-top:24px}.category-scroll a{min-height:44px;display:flex;align-items:center}}

@media(max-width:700px){.hero h1,.archive-heading h1{max-width:100%;overflow-wrap:anywhere}.wrap{min-width:0}#applicationForm input:not([type=checkbox]),#applicationForm textarea,#contactForm input:not([type=checkbox]),#contactForm textarea{font-size:16px}.application-grid>*{min-width:0}.contact-map iframe{max-width:100%}}
