/* Finishes are opt-in and leave the original compositions in place. */
.finish-target{position:relative;isolation:isolate;--pointer-x:50%;--pointer-y:50%;--button-x:0;--button-y:0}
.button-wash{position:absolute;inset:-1px;border-radius:inherit;pointer-events:none;z-index:-1;display:block;background:currentColor;opacity:0;clip-path:circle(0% at var(--pointer-x) var(--pointer-y));transition:clip-path .65s cubic-bezier(.16,1,.3,1),opacity .25s}
html[data-button-style=solid] .finish-target{background:var(--accent);color:var(--button-ink,#fffdf5);border-color:transparent}
html[data-button-style=outline] .finish-target{background:transparent;color:inherit;border:1px solid currentColor}
html[data-button-style=soft] .finish-target{background:color-mix(in srgb,var(--accent) 13%,var(--paper));color:var(--ink);border:1px solid color-mix(in srgb,var(--accent) 15%,transparent)}
html[data-button-style=glass] .finish-target{background:color-mix(in srgb,var(--paper) calc(var(--glass-opacity) * 100%),transparent);color:inherit;border:1px solid color-mix(in srgb,currentColor 25%,transparent);backdrop-filter:blur(var(--glass-blur)) saturate(1.35);-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(1.35);box-shadow:inset 0 1px 0 #fff8,inset 0 -1px 0 #fff2,0 5px 18px #0000000c}
html[data-button-style=glass] .finish-target:after{content:'';position:absolute;inset:0;border-radius:inherit;pointer-events:none;background:radial-gradient(ellipse at var(--pointer-x) var(--pointer-y),#ffffff40,transparent 65%);z-index:-1}
html[data-button-shape=pill] .finish-target{border-radius:999px}html[data-button-shape=rounded] .finish-target{border-radius:13px}html[data-button-shape=square] .finish-target{border-radius:3px}
html[data-button-outline=fine] .finish-target{outline:1px solid color-mix(in srgb,currentColor 32%,transparent);outline-offset:3px}
html[data-button-outline=double] .finish-target{outline:1px solid color-mix(in srgb,currentColor 35%,transparent);outline-offset:5px;border:1px solid currentColor}
html[data-button-outline=glow] .finish-target{outline:1px solid color-mix(in srgb,currentColor 20%,transparent);outline-offset:3px;box-shadow:inset 0 1px 1px #fff8,0 0 0 6px color-mix(in srgb,currentColor 3%,transparent),0 7px 30px color-mix(in srgb,var(--accent) 10%,transparent)}
html[data-button-outline=none] .finish-target{border-color:transparent;outline:0;box-shadow:none}
html .finish-target:focus-visible{outline:2px solid currentColor;outline-offset:7px}
html[data-button-effect=fill] .finish-target:is(:hover,:focus-visible)>.button-wash{clip-path:circle(150% at var(--pointer-x) var(--pointer-y));opacity:.14}
html[data-button-effect=magnetic][data-motion=true] .finish-target{translate:calc(var(--button-x) * 1px) calc(var(--button-y) * 1px)}
html[data-button-effect=sheen] .finish-target{overflow:hidden}
html[data-button-effect=sheen] .finish-target>.button-wash{clip-path:none;background:linear-gradient(110deg,transparent 25%,#fff8 50%,transparent 75%);opacity:.15;transform:translateX(-110%);transition:transform .8s cubic-bezier(.16,1,.3,1),opacity .5s}
html[data-button-effect=sheen] .finish-target:is(:hover,:focus-visible)>.button-wash{transform:translateX(110%);opacity:.6}
html[data-button-effect=none] .finish-target:hover{transform:none}
html[data-button-effect=ripple] .finish-target{overflow:hidden}
html[data-edge-style=fine] :is(.work-example,.example-item,.method-tabs button){border-bottom:1px solid var(--rule)}
html[data-edge-style=double] :is(.work-example,.example-item,.method-tabs button){border-bottom:3px double var(--rule)}
html[data-edge-style=dotted] :is(.work-example,.example-item,.method-tabs button){border-bottom:1px dotted color-mix(in srgb,var(--ink) 40%,transparent)}
html[data-edge-style=none] :is(.work-example,.example-item,.method-tabs button){border-color:transparent}
html[data-edge-style=fine] :is(.method-photo,.work-photo){outline:1px solid var(--rule);outline-offset:7px}
html[data-edge-style=double] :is(.method-photo,.work-photo){outline:3px double var(--rule);outline-offset:8px}
html[data-finish-grain=true] body:after{content:'';position:fixed;inset:0;pointer-events:none;z-index:99;background:url(/series/grain.png) repeat;opacity:var(--finish-grain);mix-blend-mode:multiply}
.art-cursor{position:fixed;width:10px;height:10px;border-radius:50%;background:#fff;mix-blend-mode:difference;pointer-events:none;z-index:2147483647;opacity:0;display:grid;place-items:center;transform:translate(-50%,-50%) rotate(var(--angle,0rad)) scale(var(--stretch,1),var(--squash,1));transition:width .45s cubic-bezier(.2,.8,.2,1),height .45s cubic-bezier(.2,.8,.2,1),opacity .15s;will-change:left,top}
.art-cursor span{color:#000;font-family:Arial,sans-serif;font-size:35px;opacity:0;transform:rotate(calc(-1 * var(--angle,0rad)));transition:opacity .18s}.art-cursor.is-visible{opacity:1}.art-cursor.is-link{width:var(--cursor-size,80px);height:var(--cursor-size,80px);transform:translate(-50%,-50%)}.art-cursor.is-link span{opacity:1;transform:none}.art-cursor>b{display:none}
.art-cursor.is-link[data-style=halo]{background:transparent;border:1px solid #fff}.art-cursor.is-link[data-style=halo]:before{content:'';position:absolute;inset:6px;border:1px solid #fff7;border-radius:50%;transform:rotate(-22deg) scaleX(.86)}
.art-cursor.is-link:is([data-style=halo],[data-style=iris],[data-style=reticle]) span{color:white}
.art-cursor.is-link[data-style=iris]{background:#fff1;border:1px solid #fff8}.art-cursor.is-link[data-style=iris]>b{display:block;position:absolute;inset:5%;border:1px solid #fff;border-radius:50%;transform:rotate(45deg) scaleX(.7)}.art-cursor.is-link[data-style=iris]>b:nth-child(2){transform:rotate(90deg) scaleX(.7)}.art-cursor.is-link[data-style=iris]>b:nth-child(3){transform:rotate(135deg) scaleX(.7)}.art-cursor.is-link[data-style=iris]>b:nth-child(4){transform:scaleX(.7)}
.art-cursor.is-link[data-style=glass]{mix-blend-mode:normal;backdrop-filter:blur(8px) saturate(1.3);background:#f5f0e340;border:1px solid #fffc;box-shadow:inset 0 0 15px #fffa,0 4px 20px #0002}.art-cursor.is-link[data-style=glass] span{color:#fff;text-shadow:0 1px 8px #0008}
.art-cursor.is-link[data-style=reticle]{border:1px dashed white;background:transparent}.art-cursor.is-link[data-style=reticle]:after{content:'';position:absolute;inset:-7px;border:1px solid #fff8;border-radius:50%;clip-path:polygon(0 0,38% 0,38% 100%,0 100%,0 0,62% 0,100% 0,100% 100%,62% 100%,62% 0)}
.art-cursor.is-link:is([data-style=tiny-halo],[data-style=thin-ring],[data-style=soft-dot],[data-style=dot-arrow]){width:var(--cursor-quiet-size,22px);height:var(--cursor-quiet-size,22px);transition:width .22s cubic-bezier(.2,.8,.2,1),height .22s cubic-bezier(.2,.8,.2,1),opacity .15s}
.art-cursor.is-link:is([data-style=tiny-halo],[data-style=thin-ring],[data-style=soft-dot]) span{opacity:0}
.art-cursor.is-link[data-style=tiny-halo]{background:transparent;border:1px solid #fff7}.art-cursor.is-link[data-style=tiny-halo]:after{content:'';position:absolute;left:50%;top:50%;width:5px;height:5px;border-radius:50%;background:#fff;transform:translate(-50%,-50%)}
.art-cursor.is-link[data-style=thin-ring]{background:transparent;border:1px solid #fff}
.art-cursor.is-link[data-style=soft-dot]{width:clamp(12px,calc(var(--cursor-quiet-size,22px) * .65),20px);height:clamp(12px,calc(var(--cursor-quiet-size,22px) * .65),20px);background:#fffd}
.art-cursor.is-link[data-style=dot-arrow]{width:10px;height:10px}.art-cursor.is-link[data-style=dot-arrow] span{position:absolute;left:12px;top:-8px;color:#fff;font-size:clamp(10px,calc(var(--cursor-quiet-size,22px) * .55),16px);line-height:1}
html.custom-cursor,html.custom-cursor *{cursor:none!important}html.custom-cursor :is(input,textarea){cursor:text!important}html.custom-cursor :is(.new-lab,.new-lab *){cursor:auto!important}
.backdrop-owner{position:relative;isolation:isolate}.series-backdrop{position:absolute;inset:0;z-index:-1;pointer-events:none;overflow:clip}.backdrop-field{position:sticky;top:0;height:min(100svh,100%);min-height:450px;width:100%;opacity:var(--backdrop-opacity);background:radial-gradient(ellipse at 25% 35%,var(--shader-colour),transparent 65%)}.backdrop-field:empty:not([data-fallback]){background:none}.backdrop-field canvas{width:100%;height:100%;display:block}
.backdrop-wash{position:absolute;inset:0;opacity:var(--backdrop-opacity)}.backdrop-texture{position:absolute;inset:0;opacity:var(--texture-opacity);background-size:var(--grid-size) var(--grid-size)}
.series-backdrop[data-texture=grid] .backdrop-texture{background-image:linear-gradient(var(--texture-colour) 1px,transparent 1px),linear-gradient(90deg,var(--texture-colour) 1px,transparent 1px)}
.series-backdrop[data-texture=lines] .backdrop-texture{background-image:linear-gradient(var(--texture-colour) 1px,transparent 1px)}
.series-backdrop[data-texture=dots] .backdrop-texture{background-image:radial-gradient(var(--texture-colour) 1px,transparent 1.5px)}
.series-backdrop[data-texture=crosses] .backdrop-texture{background-image:linear-gradient(var(--texture-colour) 1px,transparent 1px),linear-gradient(90deg,var(--texture-colour) 1px,transparent 1px);mask-image:radial-gradient(circle at 0 0,#000 5px,transparent 6px),radial-gradient(circle at 100% 0,#000 5px,transparent 6px),radial-gradient(circle at 0 100%,#000 5px,transparent 6px),radial-gradient(circle at 100% 100%,#000 5px,transparent 6px);mask-size:var(--grid-size) var(--grid-size)}
.series-backdrop[data-texture=paper] .backdrop-texture{background-image:url(/series/grain.png);background-size:180px;mix-blend-mode:multiply}
.series-backdrop[data-wash=glow] .backdrop-wash{background:radial-gradient(80% 70% at 50% 0%,var(--shader-colour),transparent 65%)}
.series-backdrop[data-wash=aurora] .backdrop-wash{background:radial-gradient(65% 50% at 20% 25%,var(--shader-colour),transparent 65%),radial-gradient(55% 55% at 80% 65%,var(--shader-second-colour),transparent 60%);filter:blur(35px)}
.series-backdrop[data-wash=mesh] .backdrop-wash{background:radial-gradient(60% 60% at 12% 8%,var(--shader-colour),transparent 60%),radial-gradient(55% 55% at 88% 18%,var(--shader-second-colour),transparent 58%),radial-gradient(70% 70% at 70% 96%,var(--shader-colour),transparent 62%)}
.series-backdrop[data-wash=conic] .backdrop-wash{background:conic-gradient(from 210deg at 50% 0%,var(--shader-colour),transparent 30%,var(--shader-second-colour) 62%,transparent 78%)}
.series-backdrop[data-wash=duotone] .backdrop-wash{background:linear-gradient(135deg,var(--shader-colour),transparent 46%,var(--shader-second-colour))}
.series-backdrop[data-wash=noise] .backdrop-wash{background:radial-gradient(90% 80% at 50% 0%,var(--shader-colour),transparent 66%)}.series-backdrop[data-wash=noise] .backdrop-wash:after{content:'';position:absolute;inset:0;background:url(/series/grain.png);opacity:.5}
.series-backdrop-fixed{position:fixed;inset:0;background:var(--paper);z-index:0}.series-backdrop-fixed .backdrop-field{position:absolute;inset:0;height:100%;min-height:0}
html[data-bg-continuous=true] #surface{position:relative;z-index:1}html[data-bg-continuous=true] #surface main{background:transparent}
html[data-bg-continuous=true] #surface main>:is(section,div):not(.hero),html[data-bg-continuous=true] :is(#approach,#examples){background:transparent!important}
html[data-bg-continuous=true] :is(#approach,#examples){color:var(--ink)}
html[data-bg-footer=true] #contact,html[data-bg-hero=true] .hero{background:transparent!important;color:var(--ink)}
.new-lab .finish-presets{display:grid;grid-template-columns:1fr 1fr;gap:8px}.finish-presets button{border:1px solid #b5b6ab;border-radius:9px;padding:13px;font-size:14px}.finish-presets [aria-pressed=true]{background:#303a2f;color:#f8f7ef}.finish-presets button:first-child{grid-column:1/-1}.new-lab .lab-help{font-size:12px;line-height:1.5;color:#666b60;margin-top:12px}.new-lab .finish-select{display:block}.finish-select select{margin-top:8px}.new-lab fieldset{border:0;margin:0;padding:0}.new-lab fieldset:disabled{opacity:.45}.new-lab .section-edit{padding-top:18px;border-top:1px solid #aaa7;margin-top:20px}
@media(prefers-reduced-motion:reduce){.art-cursor,.finish-target,.button-wash{transition:none!important}.finish-target{translate:none!important}.finish-target>.button-wash{animation:none!important}}
html[data-motion=false] .finish-target,html[data-motion=false] .button-wash{transition:none!important}html[data-motion=false] .finish-target{translate:none!important}

html[data-bg-footer=true] .continuous-background-art{display:none!important}
/* Paper belongs to the document. Keep the previous screen attachment as a choice. */
html[data-background-attachment=page] body{position:relative}
html[data-background-attachment=page] body:after{position:absolute}
html[data-background-attachment=page] .series-backdrop-fixed{position:absolute}
html[data-background-attachment=page] .backdrop-field{position:absolute;inset:0;height:100%;min-height:0}
html[data-bg-continuous=true] #ai-services{background:transparent}
/* Only the mask changes: section height and the scroll position stay natural. */
.section-mask-panel{position:relative;isolation:isolate;background:color-mix(in srgb,var(--section-mask-colour) var(--section-mask-tint),var(--enquiry-paper,var(--paper)))!important;clip-path:inset(var(--mask-gap,0%) var(--mask-gap,0%) 0 round var(--mask-round,0px))!important}
.section-mask-panel[data-section-mask=arch]{clip-path:inset(0 var(--mask-gap,0%) 0 round var(--mask-arch,0%) var(--mask-arch,0%) 0 0)!important}
.section-mask-panel[data-section-mask=curtain]{clip-path:inset(0 var(--mask-curtain,0%) 0 round var(--mask-round,0px))!important}
html[data-bg-continuous=true] #surface main>.section-mask-panel{background:color-mix(in srgb,var(--section-mask-colour) var(--section-mask-tint),var(--enquiry-paper,var(--paper)))!important}
@media(prefers-reduced-motion:reduce){.section-mask-panel{clip-path:none!important}}

/* Embedded calendars own their pointer, including their surrounding controls. */
html.custom-cursor :is(iframe,[data-native-cursor],[data-native-cursor] *,.sa-booking,.sa-booking *,.booking-panel,.booking-panel *){cursor:auto!important}
html.custom-cursor :is(.sa-booking,.booking-panel) :is(a,button){cursor:pointer!important}
/* New open transitions never crop copy or turn whole sections into cards. */
.section-open-transition[data-section-mask=wash]{background:color-mix(in srgb,var(--section-mask-colour) var(--section-wash,0%),transparent);border-radius:0}
.section-open-transition[data-section-mask=media] .section-transition-art{clip-path:inset(0 0 var(--art-reveal,0%) 0);overflow:hidden}
.section-open-transition[data-section-mask=depth] .section-transition-art{scale:var(--art-depth,1);translate:0 var(--art-rise,0px);transform-origin:50% 50%}
@media(prefers-reduced-motion:reduce){.section-transition-art{clip-path:none!important;scale:1!important;translate:0!important}}
html[data-motion=false] .section-transition-art{clip-path:none!important;scale:1!important;translate:0!important}
