@font-face{font-family:WM Display;src:url('assets/fonts/Montserrat-Black.ttf') format('truetype');font-weight:900;font-display:block}
@font-face{font-family:WM Display;src:url('assets/fonts/Montserrat-ExtraBold.ttf') format('truetype');font-weight:800;font-display:block}
h1,h2,h3{font-family:WM Display,Arial,sans-serif;font-weight:900;letter-spacing:-.055em}
.hero-copy h1{font-family:WM Display,Arial,sans-serif;font-weight:900;font-size:76px;line-height:.88;letter-spacing:-.065em;margin-bottom:30px}
.hero-copy .line-play{font-size:108px;font-weight:900;line-height:.87;letter-spacing:-.07em;margin-top:2px;margin-bottom:2px}
.hero-copy .line-out{margin-left:35px}.hero-copy .line-different{margin-left:14px}.hero-copy .eyebrow,.hero-copy .lede,.hero-copy .actions{margin-left:35px}
.section-heading h2,.about h2{font-weight:900;line-height:.96;letter-spacing:-.06em}.contact h2{font-size:82px;line-height:.92;font-weight:900;letter-spacing:-.065em}.contact h2 .line-next{margin-left:32px}.contact h2 .line-move{margin-left:146px}
.service h3{font-weight:900;font-size:19px;line-height:1.08}.owner h3{font-weight:800}.contact-copy .eyebrow{margin-bottom:32px}
body{background:#f1efeb}.feature-bg{inset:0;filter:none;opacity:1;z-index:0;overflow:visible}.feature-bg:after{display:none}.wm-backdrop{position:absolute;width:145%;max-width:none;height:115%;left:-24%;top:-2%;object-fit:contain;filter:blur(17px);opacity:.22;will-change:transform,opacity;transform-origin:center}.contact .wm-backdrop{width:125%;left:0;opacity:.1;filter:blur(25px)}
.ribbon-stage{background:#f1efeb;transition:none;opacity:1;will-change:transform,filter}.ribbon-stage:after{background:#f7f6f33d}.ribbon-stage>video,.ribbon-stage>img{transition:none;will-change:transform;top:var(--ribbon-y,0px);height:calc(100% + var(--ribbon-extra,0px))}.ribbon-stage>video{opacity:0}.ribbon-stage.ready>video{opacity:1}
.nav{padding-right:258px}.project-dock{position:fixed;z-index:80;top:44px;right:56px;transition:top .65s cubic-bezier(.22,1,.36,1),right .65s cubic-bezier(.22,1,.36,1),transform .65s cubic-bezier(.22,1,.36,1),opacity .65s;box-shadow:inset 0 1px 0 #ff8ca3,0 7px 35px #a40e3933;backdrop-filter:blur(18px)}
body.is-scrolled .project-dock{top:20px;right:24px;transform:scale(.96)}body[data-phase=loading] .project-dock,body[data-phase=revealing] .project-dock{opacity:0;pointer-events:none;transform:translateY(-20px)}
.about .glass,.services .glass,.clients .glass,.perspectives .glass,.enquiry.glass{background:linear-gradient(125deg,#ffffff88,#ffffff48 43%,#ffffff73);backdrop-filter:blur(34px) saturate(155%);-webkit-backdrop-filter:blur(34px) saturate(155%);border:1px solid #ffffffa6;box-shadow:inset 0 1px 1px #fffe,inset 0 -1px 3px #fff8,0 22px 45px #30212c10,0 2px 5px #1414140d}
.client-grid.glass{background:#ffffff09;border-color:#ffffff50;backdrop-filter:blur(9px);-webkit-backdrop-filter:blur(9px);box-shadow:inset 0 1px 0 #fff8,0 18px 40px #30212c08}
.client-cell.glass{background:radial-gradient(ellipse at center,#ffffff53,transparent 75%),linear-gradient(127deg,#ffffff65,#ffffff20 45%,#ffffff4a);backdrop-filter:blur(13px) saturate(180%);-webkit-backdrop-filter:blur(13px) saturate(180%);border-color:#ffffffbd}
.client-cell.glass:hover,.client-cell.glass:focus-visible{background:linear-gradient(128deg,#ffffff8a,#ffffff30 46%,#ffffff6a);transform:perspective(700px) rotateX(var(--tilt-x,0deg)) rotateY(var(--tilt-y,0deg));box-shadow:inset 0 1px 1px #fff,inset 1px 0 2px #fff9,0 20px 36px #25142a20}
.service,.quote-card,.about-copy,.enquiry{position:relative;overflow:hidden}.glass-refraction{position:absolute!important;inset:0;width:100%;height:100%;pointer-events:none;border-radius:inherit;z-index:0!important;opacity:.42;filter:blur(.6px) saturate(1.18);mask-image:linear-gradient(#000c,transparent 23%,transparent 75%,#0008);-webkit-mask-image:linear-gradient(#000c,transparent 23%,transparent 75%,#0008)}
.client-cell .glass-refraction{opacity:.62;mask-image:linear-gradient(#000,transparent 32%,transparent 65%,#000a);-webkit-mask-image:linear-gradient(#000,transparent 32%,transparent 65%,#000a)}
.service>*:not(canvas),.about-copy>*:not(canvas),.quote-card>*:not(canvas),.enquiry>*:not(canvas){position:relative;z-index:1}.client-cell img{filter:contrast(1.08) drop-shadow(0 1px 2px #ffffff85)}
.motion-content{transform-origin:50% 0;translate:0 var(--motion-y,0px);scale:var(--motion-scale,1);filter:blur(var(--motion-blur,0px));opacity:var(--motion-opacity,1);will-change:translate,scale,filter,opacity}
.hero-art,.hero-copy,.contact-art{translate:0 var(--layer-y,0px);will-change:translate}.hero-art.intro-jester{translate:none!important;z-index:1100!important;pointer-events:none;overflow:visible!important;max-width:none!important;aspect-ratio:1!important}
.footer-stage{background:linear-gradient(125deg,#e6dddba0,#f4f0ea);padding-bottom:24px}
.intro{background:radial-gradient(ellipse at 45% 40%,#f1264e,#dc0b37 72%);clip-path:none!important;transition:none;overflow:hidden;z-index:1000}
.intro .load-content{width:min(360px,75vw);gap:0;text-align:center}.intro .loading-logo{width:min(350px,72vw);height:210px;object-fit:contain;filter:drop-shadow(0 25px 22px #65001640);animation:wmArrive 1.2s cubic-bezier(.16,1,.3,1) both}
.intro .loader-label{font-size:10px;letter-spacing:.24em;font-weight:800;color:#fff;margin:20px 0 30px}.load-track{width:100%;height:3px;border-radius:3px;background:#ffffff38;overflow:hidden}.load-track i{display:block;width:0;height:100%;background:#fff;animation:none!important;transition:width .18s linear;box-shadow:0 0 14px #fff}
.load-meta{width:100%;display:flex;justify-content:space-between;align-items:center;margin-top:15px;color:#fff}.load-content .load-meta span{font-size:11px;letter-spacing:0;text-transform:none}.load-meta output{font-family:WM Display,Arial,sans-serif;font-size:18px;font-weight:900;letter-spacing:-.06em;font-variant-numeric:tabular-nums}
.intro #retryAssets{position:static;border:1px solid #ffffff80;border-radius:30px;padding:12px 20px;margin-top:28px;font-size:12px}.intro #retryAssets[hidden]{display:none}
@keyframes wmArrive{from{opacity:0;transform:translateY(46px) scale(.67) rotate(-8deg);filter:blur(18px)}to{opacity:1;transform:translateY(0) scale(1) rotate(0);filter:blur(0) drop-shadow(0 25px 22px #65001640)}}
body[data-phase=loading] .hero-copy,body[data-phase=loading] .nav,body[data-phase=loading] .hero-bottom{opacity:0}
body[data-phase=revealing] .hero-copy{animation:copyArrive 1s .62s cubic-bezier(.22,1,.36,1) both}body[data-phase=revealing] .nav{animation:copyArrive .9s 1s cubic-bezier(.22,1,.36,1) both}body[data-phase=revealing] .hero-bottom{animation:copyArrive .9s 1.1s cubic-bezier(.22,1,.36,1) both}
@keyframes copyArrive{from{opacity:0;transform:translateY(40px) scale(1.045);filter:blur(13px)}to{opacity:1;transform:none;filter:blur(0)}}
.owner{position:relative;overflow:visible}.contact-trigger{display:block;width:100%;padding:0;border:0;cursor:pointer;text-align:left}.contact-trigger img{transition:scale .8s cubic-bezier(.2,.8,.2,1),filter .8s}.contact-trigger:hover img,.contact-trigger:focus-visible img{scale:1.045;filter:saturate(1.06)}
.contact-hint{position:absolute;left:12px;right:12px;bottom:12px;padding:11px 13px;border-radius:15px;background:#ffffff69;backdrop-filter:blur(22px);-webkit-backdrop-filter:blur(22px);border:1px solid #ffffffa1;font-size:10px;display:flex;justify-content:space-between;align-items:center;color:#25202a;box-shadow:inset 0 1px 0 #fff8}.contact-hint>span{font-size:17px}
.contact-popover.glass{position:fixed;z-index:200;width:310px;max-width:calc(100vw - 28px);max-height:calc(100svh - 32px);overflow:auto;border-radius:27px;padding:25px 24px 21px;text-align:center;background:linear-gradient(135deg,#ffffffb8,#ffffff80 50%,#ffffffab);backdrop-filter:blur(42px) saturate(160%);-webkit-backdrop-filter:blur(42px) saturate(160%);border:1px solid #ffffffeb;box-shadow:inset 0 1px 2px white,0 30px 80px #25102040;animation:contactAppear .35s cubic-bezier(.22,1,.36,1)}
.contact-popover[hidden]{display:none}.contact-popover .contact-close{position:absolute;right:9px;top:5px;background:none;border:0;font-size:24px;width:40px;height:40px;color:#4f444d}.contact-popover .eyebrow{margin:3px 0 16px;font-size:8px}.contact-popover h3{font-size:22px;line-height:1;letter-spacing:-.06em;margin:0 auto 18px;max-width:215px}
.contact-qr{display:block;width:212px;height:212px;max-width:100%;margin:0 auto 17px;border-radius:12px;background:white;padding:0;box-shadow:0 5px 20px #0000000d}.contact-popover strong{display:block;font-size:15px;margin-bottom:7px}.contact-phone,.contact-email{display:block;font-size:12px;line-height:1.8}.contact-email{font-size:11px}.contact-download.button{width:100%;margin-top:16px;padding:13px 18px;font-size:11px;gap:10px;min-height:44px}.qr-caption{font-size:10px;line-height:1.5;color:#64585f;margin-top:13px}.contact-popover a:focus-visible{outline:2px solid var(--red);outline-offset:3px}
@keyframes contactAppear{from{opacity:0;transform:translateY(14px) scale(1.04);filter:blur(6px)}to{opacity:1;transform:none;filter:blur(0)}}
@media(min-width:1201px) and (max-width:1380px){.hero-copy h1{font-size:65px}.hero-copy .line-play{font-size:95px}.hero-copy .line-out,.hero-copy .eyebrow,.hero-copy .lede,.hero-copy .actions{margin-left:16px}.contact h2{font-size:75px}}
@media(min-width:701px) and (max-width:1200px){.hero-copy h1{font-size:clamp(35px,5.15vw,55px)}.hero-copy .line-play{font-size:clamp(53px,7.65vw,82px)}.hero-copy .line-out,.hero-copy .eyebrow,.hero-copy .lede,.hero-copy .actions{margin-left:10px}.hero-copy .line-different{margin-left:0}.hero-copy .line-play{margin-left:0}.contact h2{font-size:72px}.contact h2 .line-move{margin-left:110px}.nav{padding-right:237px}.project-dock{right:50px}}
@media(max-width:700px){.nav{padding-right:17px}.project-dock.button{top:103px;right:18px;min-height:44px;padding:12px 17px;font-size:11px;gap:22px}body.is-scrolled .project-dock{top:14px;right:14px;transform:scale(.96)}.hero{height:calc(100vw + 687px);min-height:1080px}.hero-copy{top:165px}.hero-copy .eyebrow{margin-left:0;margin-bottom:22px}.hero-copy h1{font-size:clamp(40px,11.4vw,55px);line-height:.88;margin-bottom:0}.hero-copy .line-out,.hero-copy .line-different{margin-left:0}.hero-copy .line-play{font-size:clamp(58px,16.5vw,80px);line-height:.88;margin-left:38px;margin-top:2px;margin-bottom:2px}.hero-copy .lede,.hero-copy .actions{margin-left:0}.hero-art{top:372px}.hero-copy .lede{margin-top:calc(100vw + 94px)}.hero-copy .actions{gap:18px}.hero-bottom{bottom:27px}.contact h2{font-size:clamp(48px,13.8vw,66px);line-height:.93}.contact h2 .line-next{margin-left:22px}.contact h2 .line-move{margin-left:89px}.contact-copy>p:not(.eyebrow){margin-top:26px}.wm-backdrop{width:210%;height:90%;left:-55%;top:15%;filter:blur(12px);opacity:.18}.contact .wm-backdrop{width:170%;left:-35%;height:55%}.intro .loading-logo{height:185px}.contact-hint{left:7px;right:7px;bottom:7px;padding:8px;font-size:8px;border-radius:11px}.client-cell.glass{backdrop-filter:blur(15px);-webkit-backdrop-filter:blur(15px)}.footer-stage{padding-bottom:18px}.ribbon-stage>video,.ribbon-stage>img{top:var(--ribbon-y,240px)}}
@media(max-width:380px){.hero-copy h1{font-size:40px}.hero-copy .line-play{font-size:58px}.hero{height:1045px;min-height:1045px}.hero-copy .lede{margin-top:calc(100vw + 95px)}.contact h2{font-size:47px}}
@media(prefers-reduced-motion:reduce){.motion-content{translate:none!important;scale:1!important;filter:none!important;opacity:1!important}.hero-art,.hero-copy,.contact-art{translate:none!important}.wm-backdrop{transform:none!important}.project-dock{transition:none}.intro .loading-logo{animation:none}.glass-refraction{display:none}.contact-popover{animation:none}}
@media(min-width:701px){.service-grid{row-gap:48px}.testimonial-grid{row-gap:42px}.client-grid.glass{row-gap:24px}}
@media(max-width:700px){.service-grid{gap:34px}.testimonial-grid{gap:30px}}
@media(prefers-reduced-motion:reduce){.ribbon-stage.ready>video{opacity:0}.ribbon-stage>img{top:0!important;height:100%;object-position:80% center!important;mask-image:none;-webkit-mask-image:none}}
.project-dock{z-index:250}.contact-popover.glass{max-height:calc(100svh - 108px)}
/* Revision 3 — crisp, quick opening and a lighter motion/compositing budget. */
html{scroll-behavior:auto}
.intro{background:#e6123c;isolation:isolate;will-change:transform;backface-visibility:hidden;mask-image:none!important;-webkit-mask-image:none!important}
.intro .loading-logo{animation:none;filter:none;background:transparent;box-shadow:none;opacity:1}
.hero-art.intro-jester{background:transparent!important;box-shadow:none!important;border:0!important;border-radius:0!important;contain:layout style;will-change:transform;backface-visibility:hidden}
.hero-art.intro-jester>.feature-art{filter:none!important;mix-blend-mode:normal!important}
.hero-copy .line-out,.hero-copy .line-play,.hero-copy .line-different{margin-left:0}
.hero-copy .eyebrow,.hero-copy .lede,.hero-copy .actions{margin-left:0}
@media(min-width:1381px){.hero-art{left:calc(50% - 845px)}}
@media(min-width:1201px) and (max-width:1380px){.hero-art{left:calc(50% - 785px)}}
@media(min-width:701px) and (max-width:1200px){.hero-art{left:-70px}}
@media(max-width:700px){.hero-art{left:-42px}.hero-copy .line-play{margin-left:0}}
body[data-phase=revealing] .hero-copy{animation:quickCopy .48s .43s cubic-bezier(.2,.8,.2,1) both}
body[data-phase=revealing] .nav,body[data-phase=revealing] .hero-bottom{animation:quickCopy .4s .5s cubic-bezier(.2,.8,.2,1) both}
@keyframes quickCopy{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
.motion-content{translate:none;scale:none;transform-origin:50% 0;will-change:auto;filter:none;opacity:1}
.about .glass,.services .glass,.clients .glass,.perspectives .glass,.enquiry.glass{backdrop-filter:blur(18px) saturate(140%);-webkit-backdrop-filter:blur(18px) saturate(140%)}
.client-grid.glass{backdrop-filter:none;-webkit-backdrop-filter:none}
.client-cell.glass{backdrop-filter:blur(10px) saturate(150%);-webkit-backdrop-filter:blur(10px) saturate(150%)}
.service,.quote-card,.about-copy,.enquiry,.client-cell{box-shadow:inset 0 1px 1px #fffe,inset 0 -1px 3px #fff9,0 14px 28px #30212c10!important}
.ribbon-stage{will-change:auto;filter:none!important}.ribbon-stage>video{will-change:transform;backface-visibility:hidden}
.project-dock{transition:top .32s cubic-bezier(.2,.8,.2,1),right .32s cubic-bezier(.2,.8,.2,1),transform .32s,opacity .32s}
.owner .contact-trigger{position:absolute;inset:0;z-index:5;width:100%;height:100%;border-radius:inherit;cursor:pointer;background:transparent;border:0;padding:0}
@media(min-width:701px) and (hover:hover) and (pointer:fine){.owner .contact-trigger{cursor:default}}
.owner:has(.contact-trigger:hover),.owner:has(.contact-trigger:focus-visible){border-color:#fff;box-shadow:inset 0 1px 2px #fff,0 14px 32px #2618271f}
.owner .portrait img{transition:transform .28s cubic-bezier(.2,.8,.2,1)}.owner:has(.contact-trigger:hover) .portrait img{transform:scale(1.025)}
.contact-popover.glass{left:0;top:0;width:224px;max-width:calc(100vw - 24px);max-height:calc(100svh - 100px);overflow:hidden;padding:16px;border-radius:20px;pointer-events:none;backdrop-filter:blur(18px) saturate(140%);-webkit-backdrop-filter:blur(18px) saturate(140%);background:linear-gradient(130deg,#ffffffe0,#ffffffb8);box-shadow:inset 0 1px 1px white,0 16px 38px #2014202a;will-change:transform;animation:qrIn .14s ease-out}
@keyframes qrIn{from{opacity:0}to{opacity:1}}
.contact-qr{width:176px;height:176px;margin:0 auto 13px;border-radius:9px;box-shadow:none}.contact-popover strong{font-size:13px;margin-bottom:5px}.contact-phone,.contact-email,.contact-website{display:block;font-size:11px;line-height:1.65}.contact-popover .contact-email{font-size:11px}.qr-caption{font-size:10px;line-height:1.3;margin-top:12px;color:#51484f}
@media(max-width:700px){.services .section-heading{padding-bottom:235px;margin-bottom:12px}.service-grid{gap:23px}.section-heading{padding-bottom:245px}.about>.wrap>.eyebrow{margin-bottom:345px}.perspectives .section-heading{padding-bottom:275px}}
@media(prefers-reduced-motion:reduce){.motion-content{transform:none!important}.intro .loading-logo{filter:none!important}.owner .portrait img{transition:none}}
.about-copy{align-self:start}.owner-info .owner-bio{margin-top:16px;font-size:12px;line-height:1.55;color:#414149}
@media(max-width:700px){.owners{grid-template-columns:1fr}.owner:nth-child(2){margin-top:0}.owner-info .owner-bio{font-size:13px;line-height:1.55}.portrait{height:300px}}
.service{transition:background-color .18s}.motion-content[style*="filter: none"]{will-change:auto}
/* Revision 4 — an exact WM-hat aperture, distinct entrance phases, full source resolution. */
.intro{background:transparent!important;will-change:auto;transform:none!important;isolation:isolate}
.intro-mask{position:absolute;inset:0;width:100%;height:100%;z-index:0;overflow:hidden;pointer-events:none}
.intro .load-content{position:relative;z-index:1}
body:not([data-phase=ready]):not([data-phase=entering]) .hero-art,
body:not([data-phase=ready]):not([data-phase=entering]) .hero-copy,
body:not([data-phase=ready]):not([data-phase=entering]) .nav,
body:not([data-phase=ready]):not([data-phase=entering]) .hero-bottom,
body:not([data-phase=ready]):not([data-phase=entering]) .project-dock{opacity:0!important;pointer-events:none}
body[data-phase=entering] .hero-copy,body[data-phase=entering] .nav,body[data-phase=entering] .hero-bottom{animation:none}
.hero .feature-bg{mask-image:linear-gradient(#000 0%,#000 62%,transparent 98%);-webkit-mask-image:linear-gradient(#000 0%,#000 62%,transparent 98%)}
.ribbon-stage{background:transparent!important}
.ribbon-stage>video,.ribbon-stage>img{mask-image:linear-gradient(transparent,#000 100px,#000 calc(100% - 100px),transparent);-webkit-mask-image:linear-gradient(transparent,#000 100px,#000 calc(100% - 100px),transparent)}
.ribbon-stage:after{background:linear-gradient(transparent,#f7f6f32a 110px,#f7f6f32a calc(100% - 110px),transparent)}
@media(min-width:701px){
 /* The poster and decoded video showed different ribbon frames through their
    feathered edges. Once playback is ready, only the video may contribute. */
 .ribbon-stage.ready>img:not(.ribbon-sequence){opacity:0}
 .ribbon-stage{mask-image:radial-gradient(ellipse 30% 26% at 100% 0%,rgba(0,0,0,var(--ribbon-corner-alpha,1)),#000 100%);-webkit-mask-image:radial-gradient(ellipse 30% 26% at 100% 0%,rgba(0,0,0,var(--ribbon-corner-alpha,1)),#000 100%)}
 .ribbon-stage>video,.ribbon-stage>img{mask-image:linear-gradient(transparent,#000 100px,#000 calc(100% - var(--ribbon-bottom-fade,100px)),transparent);-webkit-mask-image:linear-gradient(transparent,#000 100px,#000 calc(100% - var(--ribbon-bottom-fade,100px)),transparent)}
}
@media(min-width:701px) and (prefers-reduced-motion:reduce){.ribbon-stage.ready>img:not(.ribbon-sequence){opacity:1}}
.clients .client-grid.glass{background:linear-gradient(125deg,#ffffffa1,#ffffff75 46%,#ffffff91);border:1px solid #ffffffed;backdrop-filter:blur(22px) saturate(130%);-webkit-backdrop-filter:blur(22px) saturate(130%);box-shadow:inset 0 1px 2px #fff,0 20px 44px #30212c1c}
.clients .client-cell.glass{background:linear-gradient(130deg,#ffffff37,#ffffff1b 48%,#ffffff3d);border-color:#ffffffba}
.contact .wm-backdrop{opacity:.035!important}.contact-copy>p:not(.eyebrow){color:#343038}
.idle-art>.feature-art{filter:url(#jester-edge-clean)!important}
@media(max-width:700px){.hero .feature-bg{mask-image:linear-gradient(#000 0%,#000 60%,transparent 97%);-webkit-mask-image:linear-gradient(#000 0%,#000 60%,transparent 97%)}.ribbon-stage>video,.ribbon-stage>img{mask-image:linear-gradient(transparent,#000 100px,#000 calc(100% - 70px),transparent);-webkit-mask-image:linear-gradient(transparent,#000 100px,#000 calc(100% - 70px),transparent)}}

/* Revision 5 — lighter glass and a hover lift independent of scroll entrances. */
.contact-popover strong{font-family:WM Display,Arial,sans-serif;font-weight:900;letter-spacing:-.025em}
.services .service{translate:0 0;transition:translate .24s cubic-bezier(.2,.8,.2,1),background-color .2s,box-shadow .24s}
.services .service:focus-visible{translate:0 -6px;box-shadow:inset 0 1px 2px #fff,0 20px 34px #30212c26!important}
@media(hover:hover) and (pointer:fine){.services .service:hover{translate:0 -6px;box-shadow:inset 0 1px 2px #fff,0 20px 34px #30212c26!important}}
@media(prefers-reduced-motion:reduce){.services .service{translate:none!important;transition:background-color .15s,box-shadow .15s}}

/* Revision 6: a single live-painted hat aperture with display-paced frames. */
.intro-canvas{pointer-events:none}
.intro-canvas[hidden]{display:none}
body[data-phase=entering] .hero-art{transform-origin:42% 48%;will-change:transform,opacity}

/* Revision 7 — settled opening layout and staggered heading words. */
html{scrollbar-gutter:stable}
.hero .wm-backdrop{transform:translate3d(0,0,0) scale(1)}

/* Revision 8 — scroll-scrubbed panel entrances end at the section label midpoint. */
.panel-entrance{backface-visibility:hidden;transition:background-color .2s,box-shadow .24s,border-color .2s,translate .24s cubic-bezier(.2,.8,.2,1)}
@media(min-width:701px){
 .panel-entrance{transform-origin:50% 58%;transform-style:preserve-3d;will-change:transform,filter,opacity}
 .panel-entrance{transform-origin:50% 55%}
}
@media(max-width:700px){.panel-entrance{transform:none!important;filter:none!important;opacity:1!important;will-change:auto}}
@media(prefers-reduced-motion:reduce){.panel-entrance{transform:none!important;filter:none!important;opacity:1!important}}

/* Revision 9 — full-bleed loader, ink-safe letter pops and service emblems. */
html.intro-active{scrollbar-gutter:auto;overflow:hidden}
html.intro-active body{width:calc(100% - var(--wm-scrollbar,0px))}
.intro{inset:0;width:100%;height:100%;max-width:none}
.word-heading,.word-heading>span,.word-heading>em{overflow:visible;clip-path:none;mask-image:none;-webkit-mask-image:none}
.hero-copy h1>.line-out,.hero-copy h1>.line-play,.hero-copy h1>.line-different{white-space:nowrap}
.word-heading .heading-word{display:inline-block;white-space:nowrap;vertical-align:baseline;overflow:visible;padding:.12em .12em .22em;margin:-.12em -.12em -.22em;opacity:1;transform:none;filter:none}
.word-heading .heading-char{display:inline-block;vertical-align:baseline;overflow:visible;padding:.12em .08em .22em;margin:-.12em -.08em -.22em;transform:scale(0);transform-origin:50% 62%;transition:transform .18s ease-in;transition-delay:calc((var(--char-count) - 1 - var(--char-index))*8ms)}
.word-heading.words-visible .heading-char{transform:none;transition-duration:.42s;transition-timing-function:cubic-bezier(.175,.885,.32,1.6);transition-delay:calc(var(--char-index)*30ms)}
body:not([data-phase=ready]):not([data-phase=entering]) .heading-char{transition:none}
.services .service.wide{display:grid;grid-template-columns:minmax(0,1fr) 86px;column-gap:20px;align-content:center;align-items:start;min-height:183px}
.services .service.wide .card-top{grid-column:1/-1;margin-bottom:16px}
.services .service.wide .service-symbol{grid-column:2;grid-row:2/4;align-self:center;justify-self:center;margin:0;font-size:65px;line-height:1}
.services .service.wide h3{grid-column:1;margin-top:0}
.services .service.wide p{grid-column:1}
.service-hat img{display:block;width:80px;height:auto;filter:drop-shadow(0 2px 1px #fff) drop-shadow(0 4px 4px #0002)}
@media(max-width:700px){.services .service.wide{grid-template-columns:minmax(0,1fr) 60px;column-gap:10px;min-height:150px}.services .service.wide .service-symbol{font-size:48px}.service-hat img{width:60px}}
@media(prefers-reduced-motion:reduce){.word-heading .heading-char{transform:none!important;transition:none!important}}

/* Revision 10 — compact phone spacing without changing desktop composition. */
@media(max-width:700px){
 .section:not(.hero){padding-top:44px;padding-bottom:44px;min-height:0}
 .about>.wrap>.eyebrow{margin-bottom:20px}
 .section-heading,.services .section-heading,.clients .section-heading,.perspectives .section-heading{padding-bottom:0;margin-bottom:24px}
 .section-heading .eyebrow,.contact-copy .eyebrow{margin-bottom:16px}
 .section-heading>p{margin-top:12px}
 .service-grid,.testimonial-grid{gap:16px}
 .owners{margin-top:20px}
 .owner:nth-child(2){margin-top:16px}
 .about-copy .mini-mark{margin-bottom:16px}
 .about h2{margin-bottom:16px}
 .section-note,.clients .section-note{margin-top:24px;padding-top:16px}
 .contact-copy>p:not(.eyebrow){margin-top:20px}
}

/* Revision 16 — translucent button glass and a 250 px cursor shimmer. */
.button.suit-button{isolation:isolate;overflow:hidden;color:#fff;background:radial-gradient(130% 180% at 18% -55%,#ffffff2e 0%,#ffffff08 42%,transparent 64%),linear-gradient(132deg,#232329d9,#09090cbd 48%,#29292fd1);border-color:#ffffff45;backdrop-filter:blur(24px) saturate(132%);-webkit-backdrop-filter:blur(24px) saturate(132%);box-shadow:inset 0 1px 1px #ffffff54,inset 0 -1px 0 #ffffff12,inset 9px 0 22px #ffffff08,0 10px 26px #0000002e;transform:none;transition:translate .24s cubic-bezier(.2,.8,.2,1),box-shadow .24s,top .32s cubic-bezier(.2,.8,.2,1),right .32s cubic-bezier(.2,.8,.2,1),transform .32s,opacity .32s}
.button.suit-button:not(.project-dock){position:relative}
.button.suit-button:disabled{opacity:.55;cursor:not-allowed}
.suit-button .button-fill{position:absolute;inset:-1px;z-index:0;display:block;border-radius:inherit;overflow:hidden;pointer-events:none;font-size:0;line-height:0}
.suit-button .button-ink{position:absolute;inset:0;background:var(--red);opacity:0;transition:opacity .12s ease-out}
.suit-button .button-suit-wave{position:absolute;inset:0;width:100%;height:100%;display:block;overflow:visible;fill:var(--red);pointer-events:none}
.suit-button .button-suit-stamp{transform-box:view-box;transform-origin:0 0;transform:scale(0);transition:transform .2s cubic-bezier(.4,0,.2,1);transition-delay:var(--stamp-out)}
.suit-button .button-copy{position:relative;z-index:2;display:inline-flex;align-items:center;justify-content:space-between;gap:inherit;width:100%;font-size:inherit;line-height:inherit;color:#fff;pointer-events:none}
.button.suit-button:is(.is-interacting,:focus-visible){box-shadow:inset 0 1px 1px #ffb6c680,0 9px 24px #87092430}
.suit-button:is(.is-interacting,:focus-visible) .button-suit-stamp{transform:scale(2.8);transition-duration:.32s;transition-timing-function:cubic-bezier(.3,0,.2,1);transition-delay:var(--stamp-in)}
.suit-button:is(.is-interacting,:focus-visible) .button-ink{opacity:1;transition-duration:.08s;transition-delay:var(--seal-delay)}
@media(hover:hover) and (pointer:fine){.button.suit-button:is(.is-interacting,:focus-visible){translate:0 -2px}}
.has-panel-shimmer{position:relative;isolation:isolate;--glow-x:50%;--glow-y:35%}
.has-panel-shimmer.glass>:not(.contact-trigger):not(.glass-refraction){position:relative;z-index:2}
.has-panel-shimmer.glass::before,.has-panel-shimmer.glass::after{content:'';position:absolute;inset:0;width:auto;height:auto;display:block!important;transform:none!important;box-sizing:border-box;border-radius:inherit;pointer-events:none;opacity:0;transition:opacity .14s ease-out}
.has-panel-shimmer.glass::before{z-index:1;padding:1.5px;background:radial-gradient(circle 250px at var(--glow-x) var(--glow-y),#fff 0%,#fff 26%,#ffffff9e 56%,#ffffff00 100%);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);mask-composite:exclude}
.has-panel-shimmer.glass::after{z-index:0;background:radial-gradient(circle 250px at var(--glow-x) var(--glow-y),#ffffffeb 0%,#ffffffb3 24%,#ffffff38 62%,#ffffff00 100%)}
.has-panel-shimmer.glass:is(.is-interacting,:focus-visible,:has(:focus-visible))::before,.has-panel-shimmer.glass:is(.is-interacting,:focus-visible,:has(:focus-visible))::after{opacity:1}
/* Preserve the resting rim during hover; only the cursor light brightens it. */
.services .service.has-panel-shimmer:is(:hover,:focus-visible){box-shadow:inset 0 1px 1px #fffe,inset 0 -1px 3px #fff9,0 14px 28px #30212c10!important}
.owner.has-panel-shimmer:has(.contact-trigger:hover),.owner.has-panel-shimmer:has(.contact-trigger:focus-visible){border-color:#ffffffa6;box-shadow:inset 0 1px 1px #fffe,inset 0 -1px 3px #fff8,0 22px 45px #30212c10,0 2px 5px #1414140d}
@media(prefers-reduced-motion:reduce){
 .button.suit-button{translate:none!important;transition:none}
 .suit-button .button-ink,.suit-button .button-suit-stamp{transition:none!important}
 .has-panel-shimmer.glass::before,.has-panel-shimmer.glass::after{transition:none}
}

/* Revision 19 — soft, unclipped navigation glow with brand-red hover text. */
.nav nav a,.mobile-nav a,.desktop-dock-menu a,.footer-top>a:not(.footer-brand){font-family:"WM Display",Arial,sans-serif;font-weight:800;position:relative;isolation:isolate;color:#fff}
.nav-shimmer{--glow-x:50%;--glow-y:35%;text-decoration:none;overflow:visible;transition:color .2s ease-out,text-shadow .2s ease-out}
.nav-shimmer::before{content:"";position:absolute;left:var(--glow-x);top:var(--glow-y);width:180px;height:96px;transform:translate(-50%,-50%);z-index:-1;pointer-events:none;opacity:0;background:radial-gradient(ellipse closest-side,#e6123c26 0%,#e6123c12 44%,#e6123c00 100%);transition:opacity .2s ease-out}
.nav-shimmer:is(.is-interacting,:focus-visible)::before{opacity:1}
.nav nav a:is(.is-interacting,:focus-visible),.mobile-nav a:is(.is-interacting,:focus-visible),.desktop-dock-menu a:is(.is-interacting,:focus-visible),.footer-top>a:not(.footer-brand):is(.is-interacting,:focus-visible){color:var(--red);text-shadow:0 1px 2px #000a}
@media(min-width:701px) and (max-width:900px){.nav{gap:16px}.nav .brand img{width:140px;height:auto}.nav nav{gap:18px;font-size:13px}}
@media(min-width:701px) and (max-width:1000px){.footer-top{flex-wrap:wrap;column-gap:28px;row-gap:20px}}
@media(prefers-reduced-motion:reduce){.nav-shimmer,.nav-shimmer::before{transition:none}}

/* Revision 24: iOS uses the transparent poster because WebGL video
   compositing can paint the canvas bounds as an opaque rectangle. */
@supports (-webkit-touch-callout:none){
 @media(max-width:700px){
  .hero-art>.feature-art,.contact-art>.feature-art{filter:none!important;background:transparent!important}
  .hero-art.is-playing>canvas,.contact-art.is-playing>canvas{display:none!important;opacity:0!important}
  .hero-art.is-playing>.feature-art,.contact-art.is-playing>.feature-art{opacity:1!important}
  .hero-art>.feature-art{animation:iosJesterIdle 5.4s ease-in-out infinite;transform-origin:50% 58%}
 }
}
@media(max-width:700px){
 .ios-motion-fallback .hero-art>.feature-art,.ios-motion-fallback .contact-art>.feature-art{filter:none!important;background:transparent!important}
 .ios-motion-fallback .hero-art.is-playing>canvas,.ios-motion-fallback .contact-art.is-playing>canvas{display:none!important;opacity:0!important}
 .ios-motion-fallback .hero-art.is-playing>.feature-art,.ios-motion-fallback .contact-art.is-playing>.feature-art{opacity:1!important}
 .ios-motion-fallback .hero-art>.feature-art{animation:iosJesterIdle 5.4s ease-in-out infinite;transform-origin:50% 58%}
}
@keyframes iosJesterIdle{0%,100%{transform:translate3d(0,0,0) scale(1)}50%{transform:translate3d(0,-4px,0) scale(1.006)}}
@media(prefers-reduced-motion:reduce){.hero-art>.feature-art{animation:none!important}}

/* Revision 26: iOS uses a scroll-driven frame sequence, avoiding Safari's
   paused-video seek and autoplay restrictions. */
.ribbon-stage>.ribbon-sequence{opacity:0;pointer-events:none}
@supports (-webkit-touch-callout:none){
 @media(max-width:700px){
  .ribbon-stage>video{opacity:0!important}
  .ribbon-stage.ready>.ribbon-sequence{opacity:1}
 }
}
@media(max-width:700px){
 .ios-motion-fallback .ribbon-stage>video{opacity:0!important}
 .ios-motion-fallback .ribbon-stage.ready>.ribbon-sequence{opacity:1}
}

/* Keep page navigation available through the final scene; omit only its
   redundant project link once the visitor has reached that page. */
body.is-contact-page .desktop-dock-menu .dock-project-link{display:none}
body.is-contact-page .desktop-dock-menu a[href="#perspectives"]{border-bottom:0}

/* Revision 38: precisely placed pupil masks travel farther while the brows
   and head receive a smaller feathered turn inside the same video canvas. */
.contact-art{transform:none;will-change:translate}
@media(prefers-reduced-motion:reduce){.contact-art{transform:none!important}}

/* Revision 43: the fixed project shortcut enters after the hero at every size. */
body:not(.is-past-hero) .project-dock.button{visibility:hidden;opacity:0;pointer-events:none;transform:translate3d(0,-16px,0) scale(.94)}
body.is-past-hero .project-dock.button{visibility:visible;opacity:1;pointer-events:auto;transform:scale(.96)}

/* Revision 44: compact desktop menu and descending liquid-glass page index. */
.dock-project-label{display:none}.project-dock .dock-menu-label,.project-dock .dock-project-label{font-size:inherit!important}.project-dock .dock-icon{position:relative;display:inline-block;flex:0 0 18px;width:18px;height:14px;font-size:18px!important;line-height:14px}.project-dock .dock-icon i{position:absolute;left:0;width:18px;height:1.5px;border-radius:2px;background:currentColor;transform-origin:center;transition:opacity .18s ease,transform .34s cubic-bezier(.2,.8,.2,1)}.project-dock .dock-icon i:nth-child(1){top:1px}.project-dock .dock-icon i:nth-child(2){top:6px}.project-dock .dock-icon i:nth-child(3){top:11px}.project-dock .dock-icon:after{content:"↓";position:absolute;inset:-1px 0 0;text-align:center;opacity:0;transform:translateY(-5px);transition:opacity .2s ease,transform .34s cubic-bezier(.2,.8,.2,1)}
.desktop-dock-menu{position:fixed;z-index:240;top:82px;right:24px;width:min(324px,calc(100vw - 48px));padding:12px;border-radius:25px;background:radial-gradient(130% 95% at 85% -15%,#ffffff28,transparent 54%),linear-gradient(145deg,#25252ce8,#0b0b0fdb);border:1px solid #ffffff3d;box-shadow:inset 0 1px 1px #ffffff4d,0 24px 70px #0005;backdrop-filter:blur(30px) saturate(135%);-webkit-backdrop-filter:blur(30px) saturate(135%);transform-origin:88% 0;clip-path:inset(0 0 100% 0 round 25px);transform:translate3d(0,-18px,0) scale(.94) rotateX(-8deg);opacity:0;visibility:hidden;pointer-events:none;transition:clip-path .52s cubic-bezier(.16,1,.3,1),transform .52s cubic-bezier(.16,1,.3,1),opacity .28s ease,visibility 0s linear .52s}
.desktop-dock-menu a{display:flex;align-items:center;gap:18px;min-height:49px;padding:0 15px;border-radius:15px;border-bottom:1px solid #ffffff12;font-size:14px;letter-spacing:-.015em;opacity:0;transform:translate3d(0,-12px,0);transition:opacity .28s ease,transform .42s cubic-bezier(.16,1,.3,1),background .22s,color .22s}
.desktop-dock-menu a>span{width:23px;color:#ffffff66;font-family:Arial,sans-serif;font-size:9px;letter-spacing:.08em}.desktop-dock-menu a>b{margin-left:auto;font-size:18px;font-weight:400}.desktop-dock-menu a:last-child{border-bottom:0}.desktop-dock-menu a:hover,.desktop-dock-menu a:focus-visible{background:#ffffff0c}
.desktop-dock-menu[aria-hidden="false"]{clip-path:inset(0 round 25px);transform:none;opacity:1;visibility:visible;pointer-events:auto;transition-delay:0s}
.desktop-dock-menu[aria-hidden="false"] a{opacity:1;transform:none}.desktop-dock-menu[aria-hidden="false"] a:nth-child(1){transition-delay:.07s}.desktop-dock-menu[aria-hidden="false"] a:nth-child(2){transition-delay:.1s}.desktop-dock-menu[aria-hidden="false"] a:nth-child(3){transition-delay:.13s}.desktop-dock-menu[aria-hidden="false"] a:nth-child(4){transition-delay:.16s}.desktop-dock-menu[aria-hidden="false"] a:nth-child(5){transition-delay:.19s}.desktop-dock-menu[aria-hidden="false"] a:nth-child(6){transition-delay:.22s}
.project-dock[aria-expanded="true"] .dock-icon i{opacity:0;transform:scaleX(.45)}.project-dock[aria-expanded="true"] .dock-icon:after{opacity:1;transform:none}body.desktop-menu-open .project-dock{transform:translate3d(0,3px,0) scale(.96)!important}
@media(min-width:701px){.nav{padding-right:24px}.nav .brand{margin-right:auto}.nav nav{margin-right:0;transform:translateX(-8px)}.project-dock{min-width:126px}.project-dock .button-copy{justify-content:space-between}}
@media(max-width:700px){.dock-menu-label{display:inline}.dock-project-label{display:none}.project-dock.button,body.is-scrolled .project-dock{left:auto;right:14px;top:14px}.project-dock{min-width:118px}.project-dock .button-copy{justify-content:space-between}.desktop-dock-menu{display:block;left:auto;right:14px;top:69px;width:calc(100vw - 28px);max-width:324px;transform-origin:88% 0}.desktop-dock-menu a{min-height:47px}.desktop-dock-menu[aria-hidden="false"]{transform:none}}
@media(prefers-reduced-motion:reduce){.desktop-dock-menu,.desktop-dock-menu a,.project-dock .dock-icon{transition:none!important}}
/* Blend the final desktop scene away before the dark footer, including the
   jester's clipped lower edge. The footer itself remains crisp and unchanged. */
@media(min-width:701px){
 #contact{mask-image:linear-gradient(to bottom,#000 calc(100% - 170px),transparent calc(100% - 20px));-webkit-mask-image:linear-gradient(to bottom,#000 calc(100% - 170px),transparent calc(100% - 20px))}
}

/* Desktop choreography: readable, compact testimonials and scroll-synced type. */
.hero-entrance-layer{position:absolute;z-index:3;left:-21.428571%;top:-21.428571%;width:142.857143%;height:142.857143%;transform:none;pointer-events:none;opacity:0}
/* The corrected footage includes 15% safety space on each side. Keep the
   original resting size while allowing the brush to move beyond its old box. */
.hero-art>canvas{inset:-21.428571%;width:142.857143%;height:142.857143%}
.hero-art.is-entrance-playing>.hero-entrance-layer{opacity:1}
.hero-art.is-entrance-playing>.feature-art,.hero-art.is-entrance-playing>canvas{opacity:0!important}
.independent-about-title{display:none}
@media(min-width:701px){
 #about .about-title-slot{visibility:hidden}
 #about .independent-about-title{display:block;position:absolute;z-index:5;margin:0;pointer-events:none}
 #perspectives{min-height:100svh;padding:52px 0 30px}
 #perspectives .section-heading{padding-bottom:0;margin-bottom:44px}
 #perspectives .section-heading .eyebrow{margin-bottom:12px}
 #perspectives h2{font-size:clamp(30px,3.2vw,46px);line-height:1.04;margin:0}
 #perspectives .testimonial-grid{gap:22px}
 #perspectives .quote-card{min-height:0;padding:24px 32px;border-radius:24px}
 #perspectives .quote-card.featured{min-height:0;padding:26px 34px;grid-template-columns:48px 1fr;column-gap:10px}
 #perspectives .quote-card blockquote{font-size:clamp(14px,1.2vw,17px);line-height:1.35}
 #perspectives .quote-card.featured blockquote{font-size:clamp(18px,1.7vw,24px);line-height:1.25}
 #perspectives .quote-mark{font-size:66px;line-height:.9}
 #perspectives .quote-attribution{margin-top:12px}
 #perspectives .quote-attribution b{font-size:11px}
 #perspectives .quote-attribution span{font-size:10px}
 #perspectives .quote-company-logo{max-height:28px;width:65px;object-fit:contain}
}
@media(min-width:701px) and (max-height:750px){
 #perspectives{padding-top:40px;padding-bottom:22px}
 #perspectives .section-heading{margin-bottom:38px}
 #perspectives .quote-card{padding:20px 28px}
 #perspectives .quote-card.featured{padding:22px 30px}
 #perspectives .quote-attribution{margin-top:8px}
}
@media(prefers-reduced-motion:reduce){
 .word-heading.scroll-heading{opacity:1;transform:none}
}
/* Move the complete desktop testimonial page without changing its cue anchor. */
/* Above navigation chrome, below the loading mask; never intercept menu clicks. */
#home .hero-art{z-index:600;pointer-events:none}
.contact-art.is-cursor-look>canvas{height:auto;aspect-ratio:26/27;bottom:auto;mask-image:linear-gradient(to bottom,#000 78%,transparent 100%);-webkit-mask-image:linear-gradient(to bottom,#000 78%,transparent 100%)}
@media(min-width:701px){
 #perspectives{--page-content-offset:250px;min-height:calc(100svh + var(--page-content-offset))}
 #perspectives>.wrap{margin-top:var(--page-content-offset)}
 #contact{--contact-page-shift:100px;margin-top:calc(-1 * var(--contact-page-shift))}
}

/* v100 VIP: text-bearing glass panels are fifteen percentage points less translucent. */
.about .about-copy.glass,.about .owner.glass,.services .service.glass,.perspectives .quote-card.glass,.contact .enquiry.glass{background:linear-gradient(125deg,#ffffffaf,#ffffff6f 43%,#ffffff9a)}

/* Keep the two contact-select chevrons consistently 4px in from their former position. */
.enquiry select{
 -webkit-appearance:none;
 appearance:none;
 background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='5' viewBox='0 0 8 5'%3E%3Cpath d='m1 1 3 3 3-3' fill='none' stroke='%235a555d' stroke-width='1.1' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
 background-repeat:no-repeat;
 background-size:8px 5px;
 background-position:right 10px center;
}

/* The contact action covers each whole card; explain it beneath the bios on phones. */
.owner-save-prompt{display:none}
@media(max-width:700px){
 .owner-info .owner-save-prompt{display:block;margin-top:14px;font-size:12px;line-height:1.4;font-weight:700;color:#25202a}
}

/* Keep the visitor's current page distinct without offering a redundant link. */
.desktop-dock-menu a[aria-current="page"]{color:var(--red);background:#e6123c18;cursor:default;pointer-events:none}
.desktop-dock-menu a[aria-current="page"]>span{color:var(--red)}
.desktop-dock-menu a[aria-current="page"]::before{display:none}

/* Desktop closing scene: let the form finish just above the dark footer.
   Fade the jester itself so the lower form stays fully readable. */
@media(min-width:701px){
 #contact{mask-image:none;-webkit-mask-image:none}
 #contact .enquiry{top:auto;bottom:0}
}
@media(min-width:1201px){
 #contact .contact-copy{top:355px}
 #contact .contact-art{mask-image:linear-gradient(to bottom,#000 65%,transparent 82%);-webkit-mask-image:linear-gradient(to bottom,#000 65%,transparent 82%)}
}
@media(min-width:701px) and (max-width:1200px){
 #contact .contact-copy{top:180px}
 #contact .contact-art{mask-image:linear-gradient(to bottom,#000 80%,transparent 100%);-webkit-mask-image:linear-gradient(to bottom,#000 80%,transparent 100%)}
}

/* Match the approved wide, tall desktop mockup without forcing the full form
   off shorter screens: headline and panel share one top alignment. */
@media(min-width:1500px) and (min-height:1100px){
 #contact .contact-copy .eyebrow,
 #contact .contact-copy h2{translate:0 -180px}
 #contact .contact-copy>p:not(.eyebrow){translate:0 -35px}
 #contact .enquiry{top:225px;bottom:auto}
}

/* v105 candidate: less wash over the silk, retaining the approved edge fades
   and glass-panel fills so the stronger ribbon remains behind the content. */
.ribbon-stage:after{background:linear-gradient(transparent,#f7f6f31a 110px,#f7f6f31a calc(100% - 110px),transparent)}

/* v106: point-sized readability adjustments; preserve mobile's larger bio base. */
.owner-info .owner-bio{font-size:calc(12px + 1pt)}
.section-note{font-size:calc(12px + 1pt)}
.section-heading>p{font-size:calc(14px + 1pt)}
.contact .enquiry .form-caption{font-size:calc(9px + 2pt)}
@media(max-width:700px){
 .owner-info .owner-bio{font-size:calc(13px + 1pt)}
}

/* v106: one desktop contact anchor across width breakpoints. The former
   1200px rules stretched the page and bottom-pinned the form independently.
   Keep the wide composition; scale the heading/indents as its column narrows. */
@media(min-width:701px){
 #contact{
  --contact-copy-anchor:clamp(175px,calc(1034px - 75svh),355px);
  --contact-form-offset:clamp(0px,calc(20.833svh - 188.5px),50px);
  height:1040px;min-height:1040px;
 }
 #contact .contact-copy{top:var(--contact-copy-anchor);width:min(568px,43vw)}
 #contact .contact-copy .eyebrow,
 #contact .contact-copy h2,
 #contact .contact-copy>p:not(.eyebrow){translate:none}
 #contact h2{font-size:clamp(42px,4.5vw,82px)}
 #contact h2 .line-next{margin-left:.39em}
 #contact h2 .line-move{margin-left:1.78em}
 #contact .enquiry{
  top:calc(var(--contact-copy-anchor) + var(--contact-form-offset));bottom:auto;
  width:clamp(280px,28vw,394px);padding:28px;gap:23px;
 }
 #contact .enquiry .form-row{flex-direction:row;gap:12px}
}
@media(min-width:701px) and (max-width:1200px){
 #contact .contact-art{
  left:calc(50% - 360px);top:clamp(235px,calc(1160px - 75vw),355px);width:48vw;
  mask-image:linear-gradient(to bottom,#000 75%,transparent 92%);
  -webkit-mask-image:linear-gradient(to bottom,#000 75%,transparent 92%);
 }
}
@media(min-width:701px) and (max-width:1000px){
 /* The compact desktop column cannot hold the full-size character beside
    the heading: keep him below the copy rather than behind the words. */
 #contact .contact-art{
  left:36px;top:600px;width:32vw;
  mask-image:linear-gradient(to bottom,#000 75%,transparent 90%);
  -webkit-mask-image:linear-gradient(to bottom,#000 75%,transparent 90%);
 }
}
@media(min-width:1500px) and (min-height:1100px){
 #contact .contact-copy>p:not(.eyebrow){position:relative;top:145px}
}
/* Form feedback is only present after an action, not a permanent caption. */
#formStatus[hidden]{display:none}
#formStatus.submission-success{font-weight:700}
.enquiry-honeypot{position:absolute!important;left:-10000px!important;width:1px!important;height:1px!important;opacity:0!important;pointer-events:none!important}
#enquiry button:disabled{cursor:wait;opacity:.75}
/* Blend the closing background into the footer without masking its content. */
@media(min-width:701px){
 .footer-stage{position:relative;background:#f1efeb;isolation:isolate;overflow:visible;padding-top:12px}
 .footer-stage::before{content:"";position:absolute;left:0;right:0;top:-220px;height:221px;background:linear-gradient(to bottom,rgba(241,239,235,0),rgba(241,239,235,.15) 20%,rgba(241,239,235,.55) 50%,rgba(241,239,235,.9) 80%,#f1efeb);pointer-events:none;z-index:0}
 .footer-stage > .footer{position:relative;z-index:1}
}

/* Service symbols replace the decorative corner arrows. */
.services .service .card-top > span:nth-child(2),
.about-copy .text-link > span,
.enquiry .form-heading > span:nth-child(2){display:none}
.services .service > .service-symbol{position:absolute!important;top:20px;right:29px;margin:0;font-size:40px;line-height:1;text-align:center;pointer-events:none}
.services .service.wide > .service-symbol{position:absolute;grid-area:auto;top:20px;right:29px;margin:0;font-size:40px;line-height:1}
.services .service .service-hat img{width:58px;height:auto}
.services .service.wide{grid-template-columns:minmax(0,1fr)}
.services .service .card-top{min-height:42px}
@media(min-width:701px){.services .service:not(.wide) h3{margin-top:54px}}
@media(max-width:700px){.services .service,.services .service.wide{grid-template-columns:minmax(0,1fr)}.services .service > .service-symbol,.services .service.wide > .service-symbol{grid-area:auto;top:18px;right:24px;font-size:34px}.services .service .service-hat img{width:49px}}
