/* Full-screen navigation: curved black edge, editorial links and a service directory. */
body.menu-open{overflow:hidden}
.site-menu{position:fixed;inset:0;z-index:30;height:100dvh;background:#f8f8f8;border:0;padding:0;box-shadow:none;overflow:hidden;opacity:0;visibility:hidden;transition:opacity .3s ease,visibility .3s}
.site-menu[hidden]{display:none}
.site-menu.is-open{opacity:1;visibility:visible}
.site-menu-curve{position:absolute;left:-2vw;top:-15%;width:23vw;height:130%;border-radius:0 50% 50% 0;background:#111;transform:translateX(-35%) scaleX(.7);transform-origin:left center;transition:transform .8s cubic-bezier(.2,.8,.15,1);pointer-events:none}
.site-menu.is-open .site-menu-curve{transform:translateX(0) scaleX(1)}
.menu-header{position:relative;height:var(--header-height);z-index:2;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:0 6.2%}
.menu-close{justify-self:start;position:relative;width:44px;height:44px;display:grid;place-items:center;color:#fff;margin-left:-10px}
.menu-close span{position:relative;width:28px;height:28px;transition:transform .25s}
.menu-close span::before,.menu-close span::after{content:'';position:absolute;top:13px;left:0;width:28px;height:2px;border-radius:2px;background:currentColor;transform:rotate(45deg)}
.menu-close span::after{transform:rotate(-45deg)}
.menu-close:hover span{transform:rotate(90deg)}
.menu-close:focus-visible{outline:2px solid #fff;outline-offset:4px;border-radius:50%}
.menu-brand{justify-self:center}
.menu-contact{justify-self:end}
.menu-scroll{position:relative;z-index:1;overflow-y:auto;overscroll-behavior:contain;height:calc(100% - var(--header-height));padding:clamp(25px,4vh,54px) 7% 24px 25%;display:flex;flex-direction:column}
.menu-columns{display:grid;grid-template-columns:minmax(190px,.85fr) minmax(310px,1.5fr);gap:6%;flex:1;align-items:stretch}
.menu-pages{display:flex;flex-direction:column;justify-content:space-between;padding:3px 0 12px;gap:clamp(17px,3vh,38px)}
.menu-pages>a{font-size:clamp(32px,3.6vw,58px);font-weight:800;line-height:1.07;letter-spacing:-.052em;color:#717171;display:flex;align-items:center;gap:18px;width:fit-content;transform-origin:left center;transition:color .24s,transform .36s cubic-bezier(.2,.8,.2,1)}
.menu-pages>a:hover,.menu-pages>a:focus-visible{color:var(--accent);transform:translateX(6px) scale(1.055)}
.menu-pages>.menu-services-heading{color:#717171}
.menu-pages>.menu-services-heading:hover,.menu-pages>.menu-services-heading:focus-visible{color:var(--accent)}
.menu-page-arrow{font-size:.55em;opacity:0;transform:translate(-6px,6px);transition:opacity .2s,transform .2s}
.menu-services-heading:hover .menu-page-arrow,.menu-services-heading:focus-visible .menu-page-arrow{opacity:1;transform:none}
.menu-service-list{border-left:1px solid #d7d7d7;padding:2px 0 8px clamp(30px,5vw,90px);display:flex;flex-direction:column;justify-content:space-between;gap:clamp(10px,1.7vh,22px)}
.menu-service-label{font-size:10px;font-weight:700;letter-spacing:.08em;color:#888;display:flex;justify-content:space-between;gap:20px;margin:0 0 4px}
.menu-service-label span{font-variant-numeric:tabular-nums;letter-spacing:.02em}
.menu-service-list>a{display:flex;gap:12px;align-items:center;justify-content:space-between;font-weight:700;color:#717171;font-size:clamp(18px,1.9vw,30px);line-height:1.15;letter-spacing:-.035em;transform-origin:left center;transition:color .24s,transform .36s cubic-bezier(.2,.8,.2,1)}
.menu-service-list>a>span{font-size:.85em;opacity:0;transform:translate(-4px,4px);transition:opacity .2s,transform .2s}
.menu-service-list>a:hover,.menu-service-list>a:focus-visible{color:var(--accent);transform:translateX(5px) scale(1.045)}
.menu-service-list>a:hover>span,.menu-service-list>a:focus-visible>span{opacity:1;transform:none;color:var(--accent)}
.menu-bottom{display:flex;justify-content:space-between;gap:20px;margin-top:clamp(28px,5vh,55px);font-size:12px;line-height:1.5;color:#858585}
.menu-bottom>a{color:#555}.menu-bottom>a>span{color:var(--accent);margin-left:8px}
.site-menu.is-open .menu-pages>a,.site-menu.is-open .menu-service-list>a{animation:menu-link-in .62s backwards cubic-bezier(.2,.8,.2,1);animation-delay:calc(80ms + var(--menu-order)*38ms)}
.site-menu.is-open .menu-service-list{animation:menu-divider-in .8s backwards cubic-bezier(.2,.8,.2,1)}
.site-menu.is-open .menu-bottom{animation:menu-link-in .6s .35s backwards ease-out}
/* Entry uses translate; hover owns transform, so both remain responsive. */
@keyframes menu-link-in{from{opacity:0;translate:0 24px}to{opacity:1;translate:0 0}}
@keyframes menu-divider-in{from{opacity:0;clip-path:inset(0 0 100% 0)}to{opacity:1;clip-path:inset(0)}}
@media(max-height:700px) and (min-width:768px){.menu-scroll{padding-top:22px;padding-bottom:18px}.menu-pages{gap:14px}.menu-pages>a{font-size:clamp(34px,3.8vw,55px)}.menu-service-list{gap:11px}.menu-service-list>a{font-size:clamp(18px,1.75vw,26px)}.menu-bottom{margin-top:28px}}
@media(max-width:1000px) and (min-width:768px){.menu-columns{gap:5%;grid-template-columns:.85fr 1.35fr}.menu-scroll{padding-left:22%;padding-right:5%}.menu-service-list{padding-left:28px}.menu-pages>a{font-size:37px}.menu-service-list>a{font-size:19px}.menu-bottom{font-size:10px}}
@media(max-width:767px){
 .site-menu-curve{left:-58px;top:0;width:64px;height:100%;border-radius:0 50% 50% 0}
 .menu-header{padding:0 6%;background:#f8f8f8}.menu-close{color:#111;margin-left:-8px;width:38px;height:38px}.menu-close span{width:24px;height:24px}.menu-close span::before,.menu-close span::after{width:24px;top:11px}.menu-close:focus-visible{outline-color:#111}
 .menu-scroll{padding:22px 7% 28px 8%;height:calc(100% - var(--header-height));display:block}
 .menu-columns{display:block}.menu-pages{display:grid;grid-template-columns:1fr 1fr;gap:18px 12px;padding:0 0 30px}.menu-pages>a{font-size:clamp(27px,7vw,36px);letter-spacing:-.045em}.menu-page-arrow{display:none}
 .menu-service-list{padding:24px 0 0;border-left:0;border-top:1px solid #d7d7d7;gap:0}.menu-service-label{font-size:9px;margin-bottom:15px}.menu-service-list>a{font-size:19px;line-height:1.2;padding:11px 0;min-height:44px}.menu-service-list>a>span{opacity:1;transform:none;font-size:16px;color:#aaa}
 .menu-bottom{display:block;margin-top:28px;font-size:12px}.menu-bottom>a{display:block;margin-top:9px}
}
@media(prefers-reduced-motion:reduce){html:not(.motion-enabled) .site-menu,html:not(.motion-enabled) .site-menu-curve,html:not(.motion-enabled) .site-menu a,html:not(.motion-enabled) .menu-close span{transition:none!important}html:not(.motion-enabled) .site-menu.is-open *{animation:none!important}}
body[data-motion-paused=true] .site-menu *{animation:none!important;transition:none!important}
/* Retain the page width while the overlay locks scrolling. */
html{scrollbar-gutter:stable}
.menu-scroll{padding-bottom:max(28px,env(safe-area-inset-bottom))}
.menu-close,.menu-contact{min-width:44px;min-height:44px}
.menu-pages>a,.menu-service-list>a{min-width:0;overflow-wrap:break-word}
.menu-bottom>a{overflow-wrap:anywhere}
.menu-service-label,.menu-bottom{color:#6f6f6f}
.site-header .menu-toggle{width:44px;height:44px;padding:8px;display:grid;place-items:center;margin-left:-8px}
.menu-hamburger{display:flex;flex-direction:column;justify-content:space-between;width:27px;height:18px}
.menu-hamburger i{display:block;width:100%;height:2px;background:#111;border-radius:2px;transition:transform .2s,background .2s}
.menu-toggle:hover .menu-hamburger i{background:var(--accent)}
.menu-toggle:hover .menu-hamburger i:nth-child(2){transform:translateX(4px)}
@media(prefers-reduced-motion:reduce){html:not(.motion-enabled) .menu-hamburger i{transition:none}}
