@font-face{font-family:"Alte";src:url("fonts/AlteHaasGroteskRegular.ttf") format("truetype");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Alte";src:url("fonts/AlteHaasGroteskBold.ttf") format("truetype");font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:"Archivo Fallback";src:local("Arial");size-adjust:104%;ascent-override:88%;descent-override:21%;line-gap-override:0%}

:root{
--font-sans:"Archivo","Archivo Fallback","Helvetica Neue",Arial,system-ui,sans-serif;
--font-display:"Alte","Helvetica Neue",Arial,sans-serif;
--gutter:clamp(1rem, 0.5rem + 2.5vw, 3rem);
--gap:clamp(1rem, 0.75rem + 1.25vw, 2rem);
--section:clamp(5rem, 2rem + 10vw, 12rem);
--header-h:64px;
--ease:cubic-bezier(0.2, 0, 0, 1);
--ease-out:cubic-bezier(0.16, 1, 0.3, 1);
--ease-in-out:cubic-bezier(0.65, 0, 0.35, 1);
--bg:#F7F7F8;
--surface:#FFFFFF;
--border:#E2E2E6;
--border-strong:#85858E;
--text:#101012;
--muted:#52525B;
--subtle:#6E6E78;
--primary:#18181B;
--primary-hover:#27272C;
--primary-active:#3D3D44;
--primary-fg:#FFFFFF;
--link:#1F5EFF;
--focus:#1F5EFF;
--error:#D42424;
--error-text:#AE1C1C;
--success-text:#146634;
--selection:#C4D5FF;
--sand:#eae0c8;
}

html.is-dark{
--bg:#000000;
--surface:#101012;
--border:#27272C;
--border-strong:#6E6E78;
--text:#F7F7F8;
--muted:#9A9AA3;
--subtle:#83838C;
--primary:#F7F7F8;
--primary-hover:#E2E2E6;
--primary-active:#C8C8CE;
--primary-fg:#101012;
--link:#8FB0FF;
--focus:#8FB0FF;
--error:#FA7A7A;
--error-text:#FA7A7A;
--success-text:#4CCB7A;
--selection:#1A47C4;
}

*,*::before,*::after{box-sizing:border-box}
*{margin:0;padding:0}
html{font-family:var(--font-sans);font-variation-settings:"wdth" 100;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-text-size-adjust:100%;background:var(--bg);color:var(--text);transition:background-color 400ms var(--ease),color 400ms var(--ease)}
body{min-height:100vh;font-size:1rem;line-height:1.6;background:transparent}
ul{list-style:none}
input,textarea,button{font:inherit;color:inherit}
::selection{background:var(--selection)}
a{color:var(--link);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:0.2em}
a:hover{text-decoration-thickness:2px}
:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.visually-hidden{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

.bg-shape{position:fixed;inset:0;width:100%;height:100%;z-index:0;pointer-events:none}

.site-header{position:sticky;top:0;z-index:20;display:flex;align-items:center;height:var(--header-h);padding-inline:var(--gutter);transition:background-color 240ms var(--ease)}
.site-header.is-scrolled{background:rgba(247,247,248,.8);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}
html.is-dark .site-header.is-scrolled{background:rgba(0,0,0,.8)}
.brand{font-family:var(--font-display);font-weight:700;text-transform:lowercase;font-size:1.5rem;letter-spacing:-0.05em;line-height:1;color:var(--text);text-decoration:none}
.brand span,.brand-word span{font-weight:400}
.brand-word{text-transform:lowercase;letter-spacing:-0.05em}

main{position:relative;z-index:1}
main>section{padding-inline:var(--gutter);display:grid;grid-template-columns:repeat(4,minmax(0,1fr));column-gap:var(--gap)}

.display{font-family:var(--font-display);font-weight:700;text-transform:uppercase;font-size:clamp(2.5rem, 1rem + 5vw, 6rem);line-height:0.92;letter-spacing:-0.04em;text-wrap:balance}
.heading{font-weight:700;font-size:clamp(2rem, 1.5rem + 2vw, 3.25rem);line-height:1.05;letter-spacing:-0.025em;text-wrap:balance}
.heading-icon{display:block;width:32px;height:32px;margin-bottom:1.25rem;background:currentColor;-webkit-mask:var(--icon) center/contain no-repeat;mask:var(--icon) center/contain no-repeat}
.heading-icon--briefcase{--icon:url("images/icons/briefcase.svg")}
.heading-icon--target{--icon:url("images/icons/target.svg")}
.heading-icon--compass{--icon:url("images/icons/compass.svg")}
.lead{grid-column:1/-1;max-width:32ch;font-size:clamp(1.25rem, 1.05rem + 0.9vw, 1.875rem);line-height:1.3;letter-spacing:-0.015em;text-wrap:pretty}
.body-lg{font-size:1.125rem;line-height:1.6;color:var(--muted);text-wrap:pretty;max-width:60ch}

.reveal .line{display:block;overflow:hidden;padding-bottom:0.04em}
.reveal .line>span{display:block;transform:translateY(105%);animation:line-in 700ms var(--ease-out) forwards}
.reveal .line:nth-child(2)>span{animation-delay:80ms}
.reveal .line:nth-child(3)>span{animation-delay:160ms}
.reveal .line:nth-child(4)>span{animation-delay:240ms}
.reveal .line:nth-child(5)>span{animation-delay:320ms}
@keyframes line-in{to{transform:translateY(0)}}

.hero{min-height:calc(100vh - var(--header-h));align-content:end;padding-bottom:clamp(3rem, 8vh, 6rem)}
.hero h1{grid-column:1/-1}

.intro,.split,.services{padding-block:clamp(3.5rem, 2rem + 5vw, 6.5rem);row-gap:1.25rem;align-items:start}
.intro{padding-top:clamp(4rem, 2rem + 6vw, 7rem)}
.split,.services{border-top:1px solid var(--border);margin-inline:var(--gutter);padding-inline:0}
.split .heading,.split .body-lg,.services .heading{grid-column:1/-1}

.parallax{display:block;position:relative;height:70vh;min-height:320px;padding:0;overflow:hidden;background:var(--border)}
.parallax__media{position:absolute;left:0;right:0;top:-15%;height:130%;background:#DADADF url("images/radial-blur.jpg") center/cover no-repeat;will-change:transform}

.media-frame{grid-column:1/-1;aspect-ratio:4/3;margin-top:1rem;border-radius:20px;background:#E2E2E6 center/cover no-repeat}
.media-frame--deal{background-image:url("images/facade-windows.jpg")}
.media-frame--rigour{background-image:url("images/eastcheap-city.jpg");background-position:center 60%}

.services__list{grid-column:1/-1;border-top:1px solid var(--border)}
.services__list li{padding-block:clamp(1.1rem, 2.4vw, 1.9rem);border-bottom:1px solid var(--border);font-family:var(--font-display);font-weight:700;text-transform:uppercase;font-size:clamp(1.75rem, 1rem + 3.5vw, 2.625rem);line-height:0.95;letter-spacing:-0.035em;transition:border-color 400ms var(--ease)}

.contact{padding-block:var(--section) calc(var(--section) * 0.6);row-gap:clamp(2.5rem, 5vw, 4rem)}
.contact__intro{grid-column:1/-1;display:grid;gap:var(--gap)}
.contact__email{color:#52525B}
.display--contact{font-size:clamp(3rem, 1rem + 5vw, 86px);line-height:0.88;letter-spacing:-0.045em}
.contact__form{grid-column:1/-1;display:grid;gap:1.5rem}
.contact__actions{display:flex;flex-wrap:wrap;align-items:center;gap:1rem 1.5rem}
.contact__status{font-size:1rem;color:var(--success-text);max-width:48ch}
.contact__status.is-error{color:var(--error-text)}
html.is-dark .contact{--text:var(--sand);--muted:var(--sand);--primary:var(--sand);--primary-hover:#f3ecdb;--primary-active:#d9ceb2;color:var(--sand)}

.field{display:flex;flex-direction:column;gap:0.5rem}
.field__label{font-size:0.875rem;line-height:1.5;font-weight:500}
.field__error{font-size:0.875rem;line-height:1.5;color:var(--error-text)}
.input{width:100%;height:44px;padding-inline:1rem;border:1px solid var(--border-strong);border-radius:10px;background:var(--surface);color:var(--text);font-size:1rem;line-height:1.5;transition:border-color 150ms var(--ease),background-color 400ms var(--ease)}
.input:hover{border-color:var(--muted)}
.input:focus{border-color:var(--focus);outline:none;box-shadow:0 0 0 1px var(--focus)}
.input[aria-invalid="true"]{border-color:var(--error)}
textarea.input{height:auto;min-height:152px;padding-block:0.75rem;resize:vertical}

.btn{display:inline-flex;align-items:center;justify-content:center;height:56px;padding-inline:2rem;border:0;border-radius:9999px;background:var(--primary);color:var(--primary-fg);font-size:0.875rem;font-weight:500;letter-spacing:0.06em;text-transform:uppercase;line-height:1;text-decoration:none;cursor:pointer;transition:background-color 150ms var(--ease),color 150ms var(--ease),transform 80ms var(--ease)}
.btn:active{background:var(--primary-active);transform:scale(0.98)}
.btn:disabled{opacity:0.6;cursor:wait}
.btn__label{position:relative;display:inline-block;overflow:hidden;line-height:1.2}
.btn__text,.btn__roll{display:block;transition:transform 240ms var(--ease-in-out)}
.btn__roll{position:absolute;left:0;right:0;top:100%}
.btn--outline{background:transparent;color:var(--text);box-shadow:inset 0 0 0 1px var(--border-strong)}
@media (hover:hover) and (pointer:fine){
.btn:hover{background:var(--primary-hover)}
.btn:hover .btn__text,.btn:hover .btn__roll{transform:translateY(-100%)}
}
.btn.btn--outline:hover{background:var(--bg);color:var(--text);box-shadow:inset 0 0 0 1px var(--text)}
.btn.btn--outline:active{background:var(--border)}

.link-nav{color:inherit;text-decoration:none;font-size:0.8125rem;font-weight:500;text-transform:uppercase;letter-spacing:0.06em;line-height:1;padding-bottom:3px;background:linear-gradient(currentColor,currentColor) 0 100%/0 1px no-repeat;transition:background-size 240ms var(--ease-out)}
.link-nav:hover{background-size:100% 1px}
.link-button{background:none;border:0;cursor:pointer;color:inherit;font-family:inherit}

.site-footer{position:relative;z-index:1;display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:0.75rem 2rem;padding:2rem var(--gutter) 2.5rem;border-top:1px solid var(--border);font-size:0.875rem;color:var(--muted);transition:border-color 400ms var(--ease)}
.site-footer small{font-size:inherit}
html.is-dark .site-footer{color:var(--sand)}
.footer-links{display:flex;flex-wrap:wrap;gap:0.75rem 1.75rem}

.cookie{position:fixed;left:var(--gutter);right:var(--gutter);bottom:var(--gutter);z-index:50;max-width:430px;max-height:calc(100vh - 2 * var(--gutter));overflow-y:auto;padding:1.5rem 1.5rem 1.35rem;background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:20px;box-shadow:0 18px 48px rgba(16,16,18,.14);opacity:0;transform:translateY(16px);transition:opacity 240ms var(--ease),transform 400ms var(--ease-out),background-color 400ms var(--ease)}
.cookie.is-visible{opacity:1;transform:none}
.cookie__title{font-size:1.125rem;font-weight:700;line-height:1.3;letter-spacing:-0.01em;margin-bottom:0.5rem}
.cookie__text{font-size:0.9375rem;line-height:1.55;color:var(--muted)}
.cookie__options{margin-top:1.25rem;border-top:1px solid var(--border)}
.cookie__option{display:flex;align-items:flex-start;justify-content:space-between;gap:1.25rem;padding:0.9rem 0;border-bottom:1px solid var(--border)}
.cookie__option strong{display:block;font-size:0.9375rem;font-weight:600;line-height:1.4}
.cookie__option span{display:block;font-size:0.8125rem;line-height:1.45;color:var(--subtle);margin-top:0.15rem}
.cookie__actions{display:flex;flex-wrap:wrap;align-items:center;gap:0.5rem;margin-top:1.25rem}
.cookie .btn{height:44px;padding-inline:1.25rem;font-size:0.8125rem}
.cookie__manage{margin-left:auto;background:none;border:0;padding:0.5rem 0.25rem;font-size:0.8125rem;font-weight:500;letter-spacing:0.06em;text-transform:uppercase;color:var(--text);text-decoration:underline;text-underline-offset:0.25em;cursor:pointer}
.switch{flex:none;position:relative;width:44px;height:26px;margin-top:2px;border:0;border-radius:9999px;background:var(--border-strong);cursor:pointer;transition:background-color 150ms var(--ease)}
.switch::after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:var(--surface);transition:transform 240ms var(--ease-out)}
.switch[aria-checked="true"]{background:var(--primary)}
.switch[aria-checked="true"]::after{transform:translateX(18px)}
.switch:disabled{opacity:0.45;cursor:not-allowed}

.page-plain main{min-height:calc(100vh - var(--header-h) - 100px)}
.plain{padding-block:clamp(4rem, 12vh, 9rem)}
.plain h1{grid-column:1/-1}
.plain+.policy{margin-top:calc(clamp(4rem, 12vh, 9rem) * -0.5)}

.policy{padding-bottom:var(--section)}
.policy__body{grid-column:1/-1;max-width:68ch;color:var(--muted);font-size:1.0625rem;line-height:1.65}
.policy__body p{margin-top:1rem;text-wrap:pretty}
.policy__body h2{color:var(--text);font-size:clamp(1.375rem, 1.1rem + 1vw, 1.75rem);font-weight:700;line-height:1.2;letter-spacing:-0.02em;margin-top:3.25rem;padding-top:1.5rem;border-top:1px solid var(--border)}
.policy__body h3{color:var(--text);font-size:1.0625rem;font-weight:600;line-height:1.4;margin-top:1.75rem}
.policy__body h2+p,.policy__body h3+p{margin-top:0.6rem}
.policy__body h2+h3{margin-top:1.25rem}
.policy__body .policy__intro{margin-top:0;color:var(--text);font-size:clamp(1.25rem, 1.05rem + 0.8vw, 1.625rem);line-height:1.35;letter-spacing:-0.015em}
.policy__address{font-style:normal;margin-top:0.6rem;color:var(--text)}
.policy__date{font-size:0.9375rem;color:var(--subtle)}

.not-found{row-gap:1.5rem;padding-top:clamp(3rem, 10vh, 7rem)}
.not-found>*{grid-column:1/-1}
.error-code{font-family:var(--font-display);font-weight:700;font-size:clamp(7rem, 4rem + 18vw, 20rem);line-height:0.8;letter-spacing:-0.06em;color:var(--border);margin-bottom:0.5rem}
.not-found__actions{display:flex;gap:1rem;margin-top:0.5rem}

@media (min-width:768px){
:root{--header-h:72px}
main>section{grid-template-columns:repeat(8,minmax(0,1fr))}
.lead{grid-column:1/8}
.split .heading,.services .heading{max-width:18ch}
.media-frame{border-radius:28px}
.contact{align-items:start}
.contact__intro{grid-column:1/5}
.contact__form{grid-column:5/-1}
}

@media (min-width:1024px){
main>section{grid-template-columns:repeat(12,minmax(0,1fr))}
.hero h1{grid-column:1/11}
.lead{grid-column:1/10;max-width:34ch}
.split .heading,.services .heading{grid-column:1/6;grid-row:1}
.split .body-lg,.services__list{grid-column:7/-1;grid-row:1}
.split .body-lg{padding-top:0.35rem}
.media-frame{grid-row:2;aspect-ratio:21/9;margin-top:2.5rem;border-radius:40px}
.services__list{border-top:0}
.services__list li:first-child{padding-top:0}
.services__list li:last-child{border-bottom:0}
.contact__intro{grid-column:1/6}
.contact__form{grid-column:7/-1}
.policy__body{grid-column:3/11}
}

@media (prefers-reduced-motion:reduce){
.parallax__media{transform:none!important}
.reveal .line>span{transform:none;animation:none}
*{transition-duration:0s!important}
}
