/* Release 39: device layout and keyboard accessibility. Loaded last on all pages. */
html { scroll-padding-top: 100px; }
main:focus { outline: none; }
:where(a,button,input,textarea,select,summary,[tabindex]):focus-visible { outline: 2px solid #a7c0ff; outline-offset: 5px; }
.skip-link { position: fixed; top: 12px; left: 16px; z-index: 2000; padding: 12px 18px; background: #fff; color: #050505; border-radius: 8px; transform: translateY(-160%); }
.skip-link:focus { transform: none; }
:where(.contact-grid,.form-row,.process-grid,.principle-grid,.benefit-grid,.legal-grid,.experience-grid,.section-head,.service-detail,.footer) > * { min-width: 0; }
:where(h1,h2,h3,p,.legal-card,.contact-direct,.footer) { overflow-wrap: break-word; }
.contact-grid { grid-template-columns: repeat(2,minmax(0,1fr)); gap: clamp(32px,5vw,80px); }
.contact-title { font-size: clamp(40px,5vw,80px); line-height: .98; }
.form-row { grid-template-columns: repeat(2,minmax(0,1fr)); }
.field { min-width: 0; font-size: 16px; }
.field::placeholder { color: #a4a49e; opacity: 1; }
.check input { flex: 0 0 20px; width: 20px; height: 20px; }
.check span { min-width: 0; }
.form [type=submit] { cursor: pointer; min-height: 48px; justify-content: center; }
.form [type=submit]:disabled { cursor: wait; opacity: .65; }
.legal-card { overflow-wrap: anywhere; }
.legal-hero h1 { font-size: clamp(36px,8vw,150px); line-height: 1; }
.menu-panel { overflow-y: auto; overscroll-behavior: contain; justify-content: flex-start; padding-top: max(110px,15svh); padding-bottom: max(32px,env(safe-area-inset-bottom)); }
.menu-panel a { flex-shrink: 0; min-height: 48px; }
.menu-open .header { background: #050505; }
.nav a,.footer a { display: inline-flex; align-items: center; min-height: 32px; }
.services-page .services-hero-split .hero-content { container-type: inline-size; }
.services-page .services-hero-split h1 { font-size: clamp(30px,4vw,72px); font-size: clamp(26px,11.5cqw,72px); line-height: 1.02; }
.process-grid,.principle-grid,.benefit-grid { grid-template-columns: repeat(4,minmax(0,1fr)); }
.work-example-detail-copy h2 { overflow-wrap: anywhere; }
.lightbox button { min-width: 44px; min-height: 44px; }
.lightbox { padding: 64px 16px 24px; }
.lightbox img { max-height: calc(100dvh - 100px); object-fit: contain; }
.video-control { position: absolute; bottom: 16px; right: 16px; z-index: 5; min-height: 44px; padding: 10px 14px; border: 1px solid #ffffff66; border-radius: 24px; color: #fff; background: #080808e6; font: inherit; font-size: 12px; cursor: pointer; }
.intro-media { position: relative; }
@media(max-width:1100px) {
 .contact-grid { grid-template-columns: minmax(0,1fr); }
 .process-grid,.principle-grid,.benefit-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
 .about-page .experience-grid { grid-template-columns: minmax(0,1fr); gap: 36px; }
 .section-head { align-items: flex-start; }
 .section-head > * { flex: 1; }
}
@media(max-width:760px) {
 .form-row { grid-template-columns: minmax(0,1fr); }
 .contact-title { font-size: clamp(30px,7.6vw,57px); }
 .legal-hero { padding-top: 125px; padding-bottom: 45px; }
 .legal-main { padding-top: 40px; padding-bottom: 75px; }
 .legal-grid { grid-template-columns: minmax(0,1fr); gap: 35px; }
 .legal-card h2 { font-size: clamp(24px,6vw,31px); hyphens: auto; }
 .home-video-panel { min-height: 0; height: auto; aspect-ratio: 3/4; max-height: 85svh; }
 .home-video-hero h1 { font-size: clamp(30px,8.5vw,60px); }
 .home-video-hero .hero-content,.references-page .references-hero-split .hero-content,.services-page .services-hero-split .hero-content { padding-top: 120px; }
 .hero-kicker { letter-spacing: .1em; line-height: 1.6; }
 .hero-kicker::before { width: 24px; flex-shrink: 0; }
 .menu-panel a { font-size: clamp(27px,8vw,48px); line-height: 1.1; }
 .service-preview { min-height: 360px; }
 .footer a { min-height: 36px; }
}
@media(max-width:520px) {
 .process-grid,.principle-grid,.benefit-grid { grid-template-columns: minmax(0,1fr); }
 .contact-direct a { font-size: 20px; }
 .home-video-toggle { min-height: 44px; right: 12px; bottom: 12px; }
 .work-example-detail-copy h2 { font-size: 28px; }
}
@media(max-height:500px) and (orientation:landscape) {
 .menu-panel { padding-top: 88px; }
 .menu-panel a { font-size: 28px; padding: 10px 0; }
}
@media(prefers-reduced-motion:reduce) {
 html { scroll-behavior: auto; }
 *,*::before,*::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
 .reveal,.mask>span { opacity: 1; transform: none; }
}
/* Keep information readable if scripts are unavailable or blocked. */
body:not(.loaded) .reveal { opacity: 1; transform: none; }
body:not(.loaded) .mask>span { transform: none; }
