*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:1.5rem}body{margin:0;background:var(--bone);color:var(--espresso);font:var(--body-size)/1.5 var(--font-sans)}a{color:inherit}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid currentColor;outline-offset:5px}a:hover{text-decoration-thickness:2px}.skip{position:absolute;top:-6rem;background:var(--bone);padding:1rem;z-index:10}.skip:focus{top:0}.draft{padding:.5rem var(--page-gutter);display:flex;justify-content:space-between;gap:1rem;background:var(--espresso);color:var(--bone);font-size:.75rem;letter-spacing:.06em}.draft span{letter-spacing:0}.header{padding:1.8rem var(--page-gutter);display:flex;align-items:center;justify-content:space-between;gap:2rem;border-bottom:1px solid var(--line)}.wordmark{font:2.8rem/.9 var(--font-editorial);letter-spacing:-.07em;text-decoration:none;white-space:nowrap}.wordmark span{display:block;font: .6rem/1.5 var(--font-sans);letter-spacing:.2em;margin-top:.8rem}.header nav{display:flex;gap:2rem;font-size:.875rem}.header nav a{text-decoration:none}.header nav a:hover{text-decoration:underline;text-underline-offset:.35em}.button{display:inline-flex;gap:2.4rem;align-items:center;justify-content:space-between;border:1px solid transparent;border-radius:3rem;background:var(--chartreuse);color:var(--espresso);padding:1.05rem 1.5rem;text-decoration:none;font-weight:600;font-size:.9375rem;cursor:pointer;transition:background var(--motion-duration),transform var(--motion-duration)}.button:hover{background:#d5ff69;transform:translateY(-2px)}.header-cta{padding:.85rem 1.2rem}.text-link{text-decoration:none;border-bottom:1px solid currentColor;padding:.4rem 0;font-size:.9375rem;display:inline-flex;gap:1.5rem;align-items:center}.hero{padding:3.5rem var(--page-gutter) 0;display:grid;grid-template-columns:1.18fr 1fr;align-items:center;column-gap:2rem;position:relative}.eyebrow{text-transform:uppercase;letter-spacing:.14em;font-size:var(--label-size);font-weight:500;margin:0 0 2rem}h1,h2,h3,p{margin-top:0}h1{font-size:var(--hero-size);letter-spacing:-.065em;line-height:.94;font-weight:600;margin:0 0 2rem;position:relative;z-index:1}h2{font-size:var(--section-size);letter-spacing:-.055em;font-weight:500;line-height:1.03;margin:0 0 1.75rem}em{font-family:var(--font-editorial);font-weight:400;letter-spacing:-.065em}.intro{max-width:30rem;color:var(--secondary-text);margin-bottom:2rem;font-size:1.125rem}.hero-actions{display:flex;align-items:center;gap:1.8rem;flex-wrap:wrap}.orb-stage{margin:0;position:relative;aspect-ratio:.88;background:radial-gradient(ellipse at 28% 15%,#c4c3b9 0,transparent 52%),linear-gradient(160deg,#a9ab9f,#85887d 65%,#bfb4a4);display:grid;place-items:center;isolation:isolate;overflow:hidden;--pointer-x:0px;--pointer-y:0px}.orb-stage:after{content:'';position:absolute;width:60%;height:7%;bottom:17%;background:#33241c47;filter:blur(18px);border-radius:50%;z-index:-1}.orb-position{width:78%;transform:translate(var(--pointer-x),var(--pointer-y));transition:transform var(--motion-duration)}.orb{aspect-ratio:1;border-radius:50%;display:grid;place-items:center;border:1px solid #fff9;background:radial-gradient(ellipse at 25% 22%,#fff9,transparent 24%),radial-gradient(ellipse at 75% 75%,#b77c6670,transparent 48%),linear-gradient(140deg,#fff3,#5c554015 48%,#fbe1cf55);box-shadow:inset 5px 7px 10px #fff9,inset -5px -5px 8px #7f4b3799,inset 0 0 0 7px #f1d9c24d,inset -10px -15px 22px #f7c6a978,7px 15px 20px #35251b20;animation:float var(--float-duration) ease-in-out infinite}.orb span{font:clamp(7rem,15vw,16rem)/1 var(--font-editorial);letter-spacing:-.16em;padding:0 .15em .13em 0;color:#49372e;text-shadow:1px 2px 1px #e1bbaa,-2px -1px 1px #281d18}.stage-bottom{position:absolute;bottom:3.2rem;left:1.5rem;right:1.5rem;display:flex;justify-content:space-between;font-size:.625rem;letter-spacing:.14em}.orb-stage figcaption{position:absolute;bottom:0;left:0;right:0;font-size:.75rem;padding:.65rem 1rem;background:var(--bone);color:var(--secondary-text);text-align:center}.hero-bottom{grid-column:1/-1;padding:2rem 0;display:flex;justify-content:space-between;font-size:.8125rem;border-bottom:1px solid var(--line)}.hero-bottom>span{font-family:var(--font-editorial);font-size:1.1rem;font-style:italic}.hero-bottom a{text-decoration:none;display:flex;gap:2rem}section:not(.hero){padding:var(--section-space) var(--page-gutter)}.section-heading{display:grid;grid-template-columns:1fr 2fr;gap:2rem;margin-bottom:3rem}.section-heading>.eyebrow{padding-top:.7rem}.section-intro{max-width:35rem;color:var(--secondary-text);font-size:1.0625rem}.service{border-top:1px solid var(--line);display:grid;grid-template-columns:.22fr 1.5fr 1fr 3rem;align-items:center;gap:2rem;padding:2rem 0}.service:last-child{border-bottom:1px solid var(--line)}.service-number{font-size:.875rem;align-self:start;padding-top:.2rem}.service-label{font-size:.6875rem;letter-spacing:.1em;text-transform:uppercase;color:var(--secondary-text);display:block;margin-bottom:.6rem}.service h3{font-size:clamp(1.5rem,2.5vw,2.3rem);font-weight:400;letter-spacing:-.04em;line-height:1.15;margin:0}.service p{font-size:1rem;color:var(--secondary-text);margin:0;max-width:25rem}.service-link{display:grid;place-items:center;border:1px solid var(--line);border-radius:50%;width:3rem;height:3rem;text-decoration:none;transition:background var(--motion-duration)}.service-link:hover{background:var(--blush)}.scope{font-size:.875rem;color:var(--secondary-text);max-width:48rem;margin:1.5rem 0 0}.campaign{background:var(--blush);display:grid;grid-template-columns:.9fr 1.1fr;gap:5rem;align-items:stretch}.campaign-copy{padding:1rem 0;display:flex;flex-direction:column;align-items:flex-start}.campaign h2{font-size:clamp(3.5rem,7vw,7rem);margin-top:1.5rem}.campaign-copy>p:not(.eyebrow){font-size:1rem}.campaign-footnote{margin:auto 0 0;padding-top:4rem;font-family:var(--font-editorial);font-style:italic;font-size:1.35rem!important}.image-placeholder{margin:0;aspect-ratio:4/5;min-height:480px;background:linear-gradient(110deg,#e4ded7aa,#b2b2a766);border:1px solid #796d6259;position:relative;display:flex;flex-direction:column;justify-content:space-between;padding:1.5rem}.placeholder-corner{font-size:.6875rem;letter-spacing:.15em}.placeholder-message{text-align:center;padding:2rem 0}.placeholder-number{font-family:var(--font-editorial);font-size:7rem;font-style:italic;line-height:1;color:#5c5b50}.placeholder-message p{font-family:var(--font-editorial);font-size:2.3rem;letter-spacing:-.05em;margin:.6rem 0}.placeholder-message>span:last-child{font-size:.625rem;letter-spacing:.16em}.image-placeholder figcaption{font-size:.8125rem;line-height:1.5;max-width:26rem;padding-top:1rem;border-top:1px solid #796d6259}.steps{list-style:none;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:3rem;margin:3rem 0}.steps li{border-top:1px solid var(--line);padding-top:1.5rem}.step-number{font:italic 2.5rem/1 var(--font-editorial);display:block;margin-bottom:2.5rem}.steps h3{font-size:1.375rem;line-height:1.25;font-weight:500;letter-spacing:-.03em}.steps p{font-size:1rem;color:var(--secondary-text);max-width:24rem}.steps+.scope{border-top:1px solid var(--line);padding-top:1.5rem}#quote{background:var(--espresso);color:var(--bone);display:grid;grid-template-columns:1fr 1fr;gap:6rem}#quote h2{font-size:clamp(3rem,5.7vw,6rem)}.quote-copy>p:not(.eyebrow){font-size:1rem}#contact-note{margin-top:3rem;color:#c8c1b9}#demo-note{border-top:1px solid var(--dark-line);padding-top:1.25rem;margin-bottom:2rem}#demo-note .eyebrow{font-size:.6875rem}#demo-note p{font-size:.875rem;margin:.75rem 0 0;color:#d7d0c9}#demo-note strong{font-weight:500;color:var(--bone)}form{display:grid;gap:1.4rem}.form-pair{display:grid;grid-template-columns:1fr 1fr;gap:1.25rem}label{display:flex;flex-wrap:wrap;gap:.55rem;font-size:.875rem}input,select,textarea{width:100%;min-width:0;border:0;border-bottom:1px solid #a19a91;padding:.75rem 0;background:transparent;color:var(--bone);border-radius:0;font-size:1rem;line-height:1.5}select{color-scheme:dark}option{background:var(--espresso)}input::placeholder,textarea::placeholder{color:#bdb5ad;opacity:1}textarea{resize:vertical}input:focus,select:focus,textarea:focus{border-color:var(--bone)}.optional{color:#c8c1b9}.form-panel .button{justify-self:start;margin-top:.75rem}#form-status{font-size:.875rem;min-height:1.5rem;margin:0;color:var(--bone)}footer{padding:3.5rem var(--page-gutter) 1.5rem}.footer-top{display:flex;justify-content:space-between;gap:2rem;align-items:flex-start}.footer-top .wordmark{font-size:4rem}.footer-top p{font-size:.9375rem}.footer-top .text-link{font-size:.8125rem}footer nav{display:flex;gap:1.5rem;flex-wrap:wrap;font-size:.875rem;margin:3rem 0}footer nav a{text-decoration:none}footer nav a:hover{text-decoration:underline}.footer-bottom{border-top:1px solid var(--line);padding-top:1.5rem;display:flex;justify-content:space-between;gap:1rem;font-size:.75rem;color:var(--secondary-text)}.noscript{padding:2rem}@keyframes float{50%{transform:translateY(-9px) rotate(1.5deg)}}
@media(min-width:1600px){body{max-width:1920px;margin:auto}.hero{column-gap:5rem}}
@media(max-width:1000px){.header{gap:1.2rem}.header nav{gap:1rem}.header-cta{gap:1rem}.hero{column-gap:1rem}.hero-actions{gap:1rem}.hero-actions .button{gap:1rem}.intro{font-size:1rem}.section-heading{grid-template-columns:.8fr 2fr}.service{gap:1rem;grid-template-columns:2rem 1.2fr 1fr 3rem}.campaign{gap:2rem}.image-placeholder{min-height:420px}.steps{gap:1.5rem}#quote{gap:3rem}.form-pair{grid-template-columns:1fr}}
@media(max-width:700px){.draft{font-size:.625rem;padding:.55rem var(--page-gutter)}.draft span{max-width:10rem;text-align:right}.header{flex-wrap:wrap;padding-top:1.5rem;padding-bottom:1.25rem}.wordmark{font-size:2.25rem}.wordmark span{font-size:.5rem}.header nav{order:3;width:100%;justify-content:space-between;margin-top:.4rem;font-size:.875rem}.header-cta{font-size:.8125rem;padding:.8rem 1rem;gap:.75rem}.hero{grid-template-columns:1fr;padding-top:2.75rem;gap:2.75rem}.hero .eyebrow{font-size:.625rem;margin-bottom:1.6rem}h1{font-size:clamp(3.1rem,13.5vw,5.8rem);margin-bottom:1.5rem}.intro{max-width:29rem;line-height:1.6}.hero-actions{gap:1.4rem}.hero-actions .button{padding:1rem 1.2rem}.text-link{font-size:.875rem;gap:1rem}.orb-stage{aspect-ratio:1.08}.orb-position{width:68%}.orb span{font-size:clamp(8rem,38vw,14rem)}.orb{animation:none}.hero-bottom{padding:0 0 1.5rem;gap:1rem}.hero-bottom>span{font-size:.9375rem}.hero-bottom a{font-size:.6875rem;gap:.75rem}.section-heading{grid-template-columns:1fr;gap:0;margin-bottom:2rem}.section-heading .eyebrow{padding:0;margin-bottom:1.5rem}.section-intro{font-size:1rem}.service{grid-template-columns:1.5rem 1fr 2.75rem;gap:.75rem;padding:1.5rem 0}.service p{grid-column:2;grid-row:2;font-size:.9375rem}.service h3{font-size:1.65rem}.service-link{grid-column:3;grid-row:1/3;width:2.75rem;height:2.75rem}.service-number{font-size:.75rem}.service-label{font-size:.625rem}.campaign{grid-template-columns:1fr;gap:2.5rem}.campaign h2{font-size:3.75rem;margin-top:0}.campaign-footnote{padding-top:2.5rem}.image-placeholder{min-height:0;aspect-ratio:4/5}.placeholder-number{font-size:5rem}.placeholder-message{padding:1.5rem 0}.steps{grid-template-columns:1fr;gap:1rem;margin:2rem 0}.steps li{display:grid;grid-template-columns:3rem 1fr;gap:0 1rem}.step-number{grid-row:1/3;font-size:2rem}.steps h3{font-size:1.25rem;margin-bottom:.75rem}.steps p{grid-column:2;margin-bottom:1.2rem}#quote{grid-template-columns:1fr;gap:2.5rem}#quote h2{font-size:3.5rem}#contact-note{margin-top:2rem}.footer-top{flex-wrap:wrap;gap:1.5rem}.footer-top .wordmark{font-size:3rem}.footer-top p{font-size:.875rem}.footer-bottom{flex-direction:column;gap:.5rem}footer nav{display:grid;grid-template-columns:1fr 1fr;gap:1rem;font-size:.8125rem}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.orb-position{transform:none}.button:hover{transform:none}}

/* Hero v2: a single photographic composition. Artwork stays still, including
   under reduced motion; the glass and its caustics are not separate layers. */
.hero-glass{isolation:isolate;overflow:hidden;background:#b3b3a7;display:flex;flex-direction:column;align-items:stretch;justify-content:center;min-height: min(64vw,900px);padding:5rem var(--page-gutter) 0;gap:0}
.hero-glass .hero-art{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center;z-index:-2;pointer-events:none}
.hero-glass:before{content:'';position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,#f3efe84d,transparent 52%);pointer-events:none}
.hero-glass .hero-copy{width:47%;padding:3rem 0 5rem;margin:auto 0}
.hero-glass h1{font-size:clamp(3.25rem,6.6vw,7rem);line-height:.98}
.hero-glass .intro{color:var(--espresso);max-width:27rem}
.hero-glass .hero-bottom{padding:1.5rem 0;border-top:1px solid #1b17154d;border-bottom:0;position:relative}
@media(min-width:1600px){.hero-glass{min-height:960px}}
@media(max-width:1000px) and (min-width:701px){.hero-glass{min-height:650px;padding-top:3rem}.hero-glass .hero-art{object-position:58% center}.hero-glass .hero-copy{width:46%;padding:2rem 0 4rem}.hero-glass h1{font-size:clamp(3.25rem,6.4vw,4.5rem)}.hero-glass .hero-actions{gap:1rem}.hero-glass .eyebrow{font-size:.625rem}.hero-glass .hero-art{object-fit:cover}}
@media(max-width:700px){.hero-glass{min-height:0;padding:3rem var(--page-gutter) 0;background:#b3b3a7}.hero-glass .hero-copy{width:100%;margin:0;padding:0 0 1.5rem}.hero-glass h1{font-size:clamp(3.1rem,13.5vw,5.8rem)}.hero-glass .intro{max-width:29rem}.hero-glass .hero-art{position:relative;inset:auto;align-self:center;width:calc(100% + 2 * var(--page-gutter));height:clamp(330px,105vw,650px);object-fit:cover;object-position:91% center;z-index:0;mask-image:linear-gradient(to bottom,transparent,#000 17%,#000 88%,transparent);margin-top:-.5rem}.hero-glass:before{display:none}.hero-glass .hero-bottom{padding:1.25rem 0;gap:1rem}.hero-glass .hero-copy{position:relative;z-index:1}}
@media(max-width:700px){.hero-glass .hero-copy{order:1}.hero-glass .hero-art{order:2}.hero-glass .hero-bottom{order:3}}

/* Shared header/hero scene starts immediately below the draft banner. */
body{display:grid;grid-template-columns:minmax(0,1fr)}
body>.draft{grid-column:1;grid-row:1}
body>.header{grid-column:1;grid-row:2;align-self:start;z-index:4;background:transparent;border-bottom:0}
body>main{grid-column:1;grid-row:2;min-width:0}
body>footer{grid-column:1;grid-row:3}
body>noscript{grid-column:1;grid-row:4}
.hero-layered{min-height:min(73vw,1040px);padding-top:160px;background:#b3b3a7}
.hero-layered .hero-scenery{position:absolute;inset:0;z-index:-2;pointer-events:none;background:url('../assets/hero-clean-scene.png') center/cover no-repeat}
.hero-layered .hero-visual{position:absolute;inset:0;pointer-events:none;z-index:0}
.hero-orb-layer{position:absolute;width:38%;height:auto;right:8%;top:24%;animation:orb-drift var(--float-duration) ease-in-out infinite;will-change:transform}
.hero-layered .hero-copy,.hero-layered .hero-bottom{position:relative;z-index:1}
.hero-layered .hero-copy{padding-top:3rem;padding-bottom:5rem}
@keyframes orb-drift{0%,100%{transform:translate(-2.5px,5px)}50%{transform:translate(2.5px,-5px)}}
@media(min-width:1600px){.hero-layered{min-height:1100px}}
@media(min-width:701px) and (max-width:1000px){.hero-layered{min-height:790px;padding-top:140px}.hero-orb-layer{width:40%;right:5%;top:31%}.hero-layered .hero-copy{width:46%}}
@media(max-width:700px){.hero-layered{min-height:0;padding-top:200px}.hero-layered .hero-copy{padding:0 0 1.5rem;width:100%;order:1}.hero-layered .hero-visual{position:relative;inset:auto;order:2;align-self:center;width:calc(100% + 2 * var(--page-gutter));height:clamp(340px,100vw,580px)}.hero-orb-layer{width:72%;right:10%;top:4%;height:auto}.hero-layered .hero-scenery{background-size:auto 530px;background-position:78% bottom;mask-image:linear-gradient(to bottom,transparent 35%,#000 67%)}.hero-layered .hero-bottom{order:3}.hero-layered:before{display:none}}
@media(max-width:360px){.hero-layered{padding-top:255px}.hero-orb-layer{width:73%;right:9%;top:6%}}
@media(prefers-reduced-motion:reduce){.hero-orb-layer{animation:none!important;transform:none!important;will-change:auto}}
.hero-layered .hero-visual:before{content:'';position:absolute;right:12%;top:78%;width:30%;height:3%;border-radius:50%;background:#30271c2b;filter:blur(18px);pointer-events:none}
@media(max-width:700px){.hero-layered .hero-visual:before{right:18%;top:85%;width:55%;height:4%;filter:blur(12px)}}
@media(max-width:700px){.hero-layered .hero-scenery{inset:auto 0 0;height:530px;mask-image:linear-gradient(to bottom,transparent,#000 35%)}}
@keyframes orb-drift{0%,100%{transform:translate(calc(-1 * var(--orb-float-x)),var(--orb-float-y))}50%{transform:translate(var(--orb-float-x),calc(-1 * var(--orb-float-y)))}}

/* September refinement: translucent sticky navigation and organic hero motion. */
html{scroll-padding-top:calc(var(--header-height) + 20px)}
body>.header{position:sticky;top:0;background:rgba(243,239,232,.38);backdrop-filter:blur(15px) saturate(.9);-webkit-backdrop-filter:blur(15px) saturate(.9);box-shadow:0 1px 0 #1b171515}
.header{display:grid;grid-template-columns:1fr auto 1fr}.header nav{justify-self:center}.header-cta{justify-self:end}
.hero-layered{min-height:min(66vw,940px);padding-top:calc(var(--header-height) + 26px)}
.hero-layered .hero-copy{padding-top:1rem;padding-bottom:3rem}
.orb-anchor{position:absolute;width:38%;right:8%;top:21%;animation:orb-sway var(--orb-sway-duration) ease-in-out infinite;pointer-events:none}
.orb-pointer{transform:translate(var(--orb-pointer-x,0px),var(--orb-pointer-y,0px));transition:transform 700ms ease-out}
.orb-float{animation:orb-rise var(--orb-rise-duration) ease-in-out infinite}
.hero-layered .hero-orb-layer{position:static;display:block;width:100%;height:auto;animation:orb-shape var(--orb-shape-duration) ease-in-out infinite;transform-origin:50% 50%}
.hero-layered .hero-scenery:after{content:'';position:absolute;inset:38% -5% -5% 40%;pointer-events:none;background:radial-gradient(ellipse at 52% 70%,transparent 30%,#fff3d566 31%,transparent 34%),radial-gradient(ellipse at 72% 80%,transparent 32%,#f2c7b94d 33%,transparent 36%),radial-gradient(ellipse at 27% 95%,transparent 27%,#fffaf080 28%,transparent 31%);filter:blur(12px);mix-blend-mode:screen;opacity:.45;animation:caustic-shimmer var(--caustic-duration) ease-in-out infinite alternate;transform-origin:70% 90%}
@keyframes orb-rise{0%,100%{transform:translateY(2px)}38%{transform:translateY(calc(-1 * var(--orb-rise)))}76%{transform:translateY(calc(var(--orb-rise) * .5))}}
@keyframes orb-sway{0%,100%{transform:translateX(calc(-1 * var(--orb-sway)))}53%{transform:translateX(var(--orb-sway))}}
@keyframes orb-shape{0%,100%{transform:rotate(calc(-1 * var(--orb-tilt))) scale(1)}61%{transform:rotate(var(--orb-tilt)) scale(var(--orb-scale))}}
@keyframes caustic-shimmer{0%{opacity:.28;transform:translate(-10px,3px) scale(1,.94)}47%{opacity:.55;transform:translate(6px,-5px) scale(1.04,1.06)}100%{opacity:.37;transform:translate(15px,2px) scale(.97,1.12)}}
@media(min-width:1600px){.hero-layered{min-height:1000px}}
@media(min-width:701px) and (max-width:1000px){.hero-layered{min-height:720px}.orb-anchor{width:40%;right:5%;top:26%}.header{grid-template-columns:auto 1fr auto;gap:1rem}.header nav{gap:.8rem}.header-cta{gap:.6rem}}
@media(max-width:700px){.header{grid-template-columns:1fr auto;gap:1rem}.header nav{grid-column:1/-1;grid-row:2;width:100%;justify-self:stretch}.hero-layered{min-height:0;padding-top:calc(var(--header-height) + 32px)}.hero-layered .hero-copy{padding:0 0 1.5rem}.orb-anchor{width:72%;right:10%;top:4%}.hero-layered .hero-orb-layer{width:100%}.hero-layered .hero-scenery:after{inset:35% -10% 0 -10%;filter:blur(10px);opacity:.35}.hero-layered .hero-visual{height:clamp(340px,100vw,580px)}}
@media(max-width:360px){.header{column-gap:.5rem}.header .wordmark{font-size:1.9rem}.header-cta{padding:.75rem .85rem;font-size:.75rem}.header .wordmark span{font-size:.43rem}.orb-anchor{width:73%;right:9%;top:6%}}
@media(prefers-reduced-motion:reduce){.orb-anchor,.orb-pointer,.orb-float,.hero-layered .hero-orb-layer,.hero-layered .hero-scenery:after{animation:none!important;transform:none!important;transition:none!important;will-change:auto}}

/* Controlled extension: space-estimate preview. */
body>.header{background:rgba(243,239,232,.22);box-shadow:none}
body>.header.is-scrolled{background:rgba(243,239,232,.82);box-shadow:0 1px 0 var(--line)}
#estimate{border-top:1px solid var(--line)}
.estimate-demo,.estimate-error{font-size:.875rem;color:var(--secondary-text)}
.estimate-demo strong{font-weight:500;color:var(--espresso)}
.estimate-form{grid-template-columns:1.6fr 1fr 1fr 1.2fr auto;align-items:end;gap:1.5rem;border-top:1px solid var(--line);padding-top:1.75rem}
.estimate-form label{display:flex;flex-direction:column;align-self:stretch;justify-content:space-between;min-width:0}
.estimate-form input,.estimate-form select{color:var(--espresso);color-scheme:light;border-color:var(--secondary-text);min-height:48px}
.estimate-form option{background:var(--bone);color:var(--espresso)}
.estimate-form input::placeholder{color:var(--secondary-text)}
.estimate-form .button{gap:1rem;min-height:48px}.estimate-form :disabled{opacity:.6}
.estimate-form [aria-invalid="true"]{border-bottom:2px solid var(--espresso)}
.estimate-error{min-height:1.5em;margin:1rem 0}
.estimate-result{border-top:1px solid var(--copper);border-bottom:1px solid var(--line);padding:2.5rem 0;margin:2rem 0 4rem;scroll-margin-top:calc(var(--header-height) + 24px)}
.estimate-result[hidden]{display:none}.estimate-result:focus-visible{outline:2px solid var(--espresso);outline-offset:8px}
.estimate-result h3{font-size:clamp(1.8rem,3vw,3rem);letter-spacing:-.04em;font-weight:400}
.estimate-result>p{max-width:48rem;font-size:1rem}.estimate-result .eyebrow{font-size:var(--label-size)}
.estimate-values{display:grid;grid-template-columns:1fr 1fr;gap:2rem;margin:2rem 0;padding:1.5rem 0;border-block:1px solid var(--line)}
.estimate-values span{font-size:.875rem}.estimate-values p{font-family:var(--font-editorial);font-size:clamp(1.5rem,2.5vw,2.25rem);margin:.75rem 0 0}
.estimate-promise{font-family:var(--font-editorial);font-style:italic;font-size:1.3rem!important}.estimate-result .button{margin:.5rem 0 1rem}
.estimate-examples{margin-top:4rem}.example-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:3rem}
.example-grid article{border-top:1px solid var(--line);padding-top:1.5rem}.example-grid h3{font-size:1.4rem;font-weight:400;line-height:1.3;letter-spacing:-.03em}.example-grid p{font-size:1rem}.example-grid .example-note{font-size:.875rem;color:var(--secondary-text)}
@media(max-width:1100px){.estimate-form{grid-template-columns:1fr 1fr}.estimate-form .button{justify-self:start}.header nav{gap:1rem}}
@media(max-width:850px){.header{grid-template-columns:1fr auto}.header nav{grid-column:1/-1;grid-row:2;width:100%;justify-content:space-between}.example-grid{grid-template-columns:1fr;gap:2rem}.estimate-form{grid-template-columns:1fr}.estimate-values{grid-template-columns:1fr}.hero-layered{padding-top:calc(var(--header-height) + 26px)}}
@media(max-width:400px){.header nav{font-size:.8rem;gap:.5rem}.estimate-result .button{gap:.5rem;font-size:.875rem}}

/* Selective disclosure preserves the existing numbered service rows. */
button.service-link{background:transparent;color:var(--espresso);font:inherit;cursor:pointer;padding:0}
.service-link span{transition:transform var(--motion-duration)}.service-link[aria-expanded="true"] span{transform:rotate(90deg)}
.service-detail{grid-column:2/-1;max-width:46rem;padding:1rem 0 .5rem}.service-detail[hidden]{display:none}
.service-detail h4{font:italic clamp(1.65rem,2.6vw,2.3rem)/1.2 var(--font-editorial);letter-spacing:-.04em;margin:0 0 1.5rem}
.service .service-detail p{max-width:42rem;margin:0 0 1rem;color:var(--secondary-text)}.service-detail .text-link{margin-top:.5rem}
.campaign-copy>.campaign-problem{font-size:clamp(1.25rem,2vw,1.6rem)!important;line-height:1.35;letter-spacing:-.025em;max-width:24rem}
.campaign-copy>p:not(.eyebrow){max-width:30rem}
/* Old rings are replaced by a genuinely morphing procedural light field. */
.hero-layered .hero-scenery:after{display:none}
.hero-caustics{position:absolute;inset:auto 0 0;width:100%;height:53%;z-index:-1;pointer-events:none;mix-blend-mode:screen;opacity:.7;mask-image:linear-gradient(to bottom,transparent,#000 48%,#000 92%,transparent)}
@media(max-width:700px){.service-detail{grid-column:2/-1}.service .service-detail p{grid-column:auto;grid-row:auto}.hero-caustics{height:365px;opacity:.6}.campaign h2{font-size:clamp(2.7rem,12.4vw,3.75rem)}}

.service-subgroup{margin-top:2rem;padding-top:1.5rem;border-top:1px solid var(--line)}
/* Keep the reserved campaign frame inside its column as copy grows. */
.campaign{grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr)}
.campaign>.image-placeholder{width:100%;min-width:0}
@media(max-width:700px){.campaign{grid-template-columns:minmax(0,1fr)}}

.estimate-values[hidden]{display:none}
/* Campaign asset: preserve the complete portrait in its native editorial ratio. */
.campaign-image{margin:0;min-width:0;width:100%;align-self:start;aspect-ratio:1122/1402;border:1px solid var(--line);overflow:hidden}
.campaign-image img{display:block;width:100%;height:100%;object-fit:cover;object-position:50% 50%}
/* Functional estimate hierarchy uses sans-serif throughout. */
.estimate-input-area{padding:clamp(1.4rem,3vw,3rem);background:rgba(255,255,255,.36);border:1px solid #b77c6666;box-shadow:0 10px 30px #1b171508;backdrop-filter:blur(8px)}
.estimate-input-title{font:600 1.125rem/1.4 var(--font-sans);margin:0 0 1rem}
.estimate-input-area .estimate-demo{max-width:46rem;margin-bottom:1.5rem}
.estimate-input-area .estimate-form{border:0;padding:0;gap:1.25rem;grid-template-columns:minmax(0,1.65fr) minmax(0,.85fr) minmax(0,1.1fr) minmax(0,1.1fr) auto}
.estimate-form label{font-weight:600;font-size:1rem;gap:.8rem}
.estimate-form input,.estimate-form select{min-height:52px;font-weight:400}
.estimate-input-area .estimate-error:empty{margin:0;min-height:0}
.estimate-result{background:var(--blush);border:0;border-top:2px solid var(--copper);padding:clamp(1.5rem,4vw,4rem);margin:2rem 0 0}
.estimate-result #result-title{font:600 .8125rem/1.5 var(--font-sans);letter-spacing:.12em;margin:0 0 1.5rem;text-transform:uppercase}
.estimate-result .estimate-values{display:block;border:0;margin:0 0 1.75rem;padding:0}
.estimate-result .estimate-values[hidden]{display:none}
.estimate-result #estimate-price{font:600 clamp(3rem,6vw,5.5rem)/1.05 var(--font-sans);letter-spacing:-.045em;margin:0 0 1.1rem}
.estimate-result #estimate-hours{font:500 clamp(1.125rem,2vw,1.5rem)/1.4 var(--font-sans);margin:0}
.estimate-result #estimate-summary{max-width:42rem;margin:0 0 1.5rem;line-height:1.65}
.estimate-result .estimate-essential{max-width:40rem;margin:1.1rem 0 1.5rem}
.estimate-information{border-top:1px solid var(--line);max-width:46rem;margin-top:1.5rem}
#estimate-info-toggle{display:flex;justify-content:space-between;gap:2rem;align-items:center;width:100%;min-height:56px;padding:1rem 0;border:0;background:transparent;color:var(--espresso);font-weight:600;text-align:left;cursor:pointer}
#estimate-information{padding:.5rem 0;max-width:40rem;font-size:1rem;line-height:1.6}
#estimate-information p{margin:0 0 1rem}
#estimate-information[hidden]{display:none}
#estimate-area{font-size:.9375rem;max-width:40rem;margin:1rem 0 0}
.estimate-examples{background:#dce0d6;padding:clamp(1.5rem,4vw,4rem);margin-top:4rem}
.estimate-examples>h3{font:500 clamp(1.5rem,3vw,2.3rem)/1.2 var(--font-sans);letter-spacing:-.025em;margin:0 0 1.5rem}
.estimate-examples>.eyebrow{font-size:.75rem;margin-bottom:1rem}
.examples-disclaimer{font-size:1rem;max-width:42rem;margin-bottom:2.5rem}
.example-grid h4{font:500 1.25rem/1.4 var(--font-sans);margin:0 0 1.5rem}
.example-grid .example-price{font:600 clamp(1.5rem,2.5vw,2rem)/1.3 var(--font-sans);margin:0 0 .75rem}
.example-price span{display:block;font-size:.875rem;font-weight:400;margin-top:.3rem}
.example-grid p{max-width:25rem}
@media(max-width:1200px){.estimate-input-area .estimate-form{grid-template-columns:1fr 1fr}.estimate-input-area .estimate-form .button{justify-self:start}}
@media(max-width:850px){.estimate-input-area .estimate-form{grid-template-columns:1fr}}
@media(max-width:700px){.campaign-image{aspect-ratio:4/5}.estimate-result{padding:1.5rem}.estimate-examples{margin-top:3rem}}
/* After calculation, the quote remains the strongest action. */
#estimate:has(.estimate-result:not([hidden])) .estimate-form .button{background:transparent;border-color:var(--espresso)}
/* Controlled campaign refinement: unchanged grid width, 12% shorter portrait. */
section.campaign{padding-top:clamp(3rem,4.5vw,4.5rem);padding-bottom:clamp(3rem,4.5vw,4.5rem)}
.campaign-image{aspect-ratio:1122/1234}
.campaign-image img{object-position:50% 43%}
.campaign-copy{padding:0}
.campaign-copy>p:not(.eyebrow):not(.campaign-problem){font-size:1.125rem;line-height:1.65;max-width:29rem}
.campaign-copy>.campaign-problem{font-weight:600;line-height:1.4;margin-bottom:1.5rem}
.campaign-problem span{display:block;margin-bottom:.25rem}
#campaign,#approach{scroll-margin-top:calc(var(--header-height) + 24px)}
/* One mineral environment, with opaque fallbacks before blur enhancement. */
#estimate{background:var(--estimate-surface);color:var(--espresso)}
.estimate-input-area{background:var(--estimate-glass-input);border:1px solid #ffffffb3;border-radius:2px;box-shadow:inset 0 1px 0 #ffffffb3,0 8px 25px #1b171509;backdrop-filter:none}
.estimate-result{background:var(--estimate-glass-result);border:1px solid #ffffffc9;border-top:1px solid #ffffffdf;border-radius:2px;box-shadow:inset 1px 0 0 #b77c6640,inset 0 1px 0 #ffffffcc,0 12px 32px #1b17150c;backdrop-filter:none}
@supports ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
 .estimate-input-area{background:rgba(255,255,250,.55);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
 .estimate-result{background:linear-gradient(115deg,#ffffff61,#ffffff24);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
}
.estimate-information{border-color:#ffffff9c}
.estimate-examples{background:transparent;padding:0;margin-top:clamp(3.5rem,6vw,6rem);border:0}
.example-grid article{border-color:#ffffffa6;padding-top:1.5rem}
footer{background:var(--espresso);color:var(--bone);border-top:1px solid var(--dark-line)}
.footer-bottom{color:#d0c8bf;border-color:var(--dark-line)}
footer a:hover{color:#ffffff;text-decoration:underline;text-underline-offset:.3rem}
footer a:focus-visible{outline-color:var(--bone)}
@media(max-width:700px){.campaign-image{aspect-ratio:4/5}.campaign-image img{object-position:50% 50%}.campaign-copy>p:not(.eyebrow):not(.campaign-problem){font-size:1.0625rem}.example-grid{gap:2.5rem}}
/* Whole-portrait framing: preserve all source content, including hair and cloth. */
section.campaign{padding-block:1.5rem;align-items:center;gap:clamp(2rem,4vw,4rem)}
.campaign-image{justify-self:center;aspect-ratio:auto;width:min(100%,480px,calc((100svh - var(--header-height) - 96px)*.8));padding:12px;background:var(--blush);border:0;overflow:visible}
.campaign-image img{height:auto;aspect-ratio:1122/1402;object-fit:contain;object-position:50% 50%}
.campaign-copy .eyebrow{margin-bottom:1.25rem}
.campaign h2{font-size:clamp(2.8rem,4.2vw,3.8rem);margin:0 0 1.25rem}
.campaign-copy>.campaign-problem{font-size:clamp(1.125rem,1.5vw,1.35rem)!important;line-height:1.35;margin-bottom:1.25rem}
.campaign-copy>p:not(.eyebrow):not(.campaign-problem){font-size:1.0625rem;line-height:1.55;margin-bottom:1.25rem}
#campaign{scroll-margin-top:var(--header-height)}
footer{background:var(--footer-surface);padding-top:2.5rem;padding-bottom:1.25rem;border-top:1px solid #f3efe82b}
footer nav{margin-block:2rem}
.footer-bottom{padding-top:1.1rem}
.recurring-agreement{margin-top:2.5rem;padding-top:2rem;border-top:1px solid var(--line)}
.service .recurring-agreement .eyebrow{font-size:.75rem;letter-spacing:.12em;margin-bottom:1rem;color:var(--espresso)}
.recurring-agreement h4{font-style:normal;font-family:var(--font-sans);font-size:clamp(1.6rem,2.5vw,2.2rem);letter-spacing:-.035em}
.recurring-agreement ul{list-style:none;padding:0;margin:1.75rem 0;font-size:1rem}
.recurring-agreement li{padding:.65rem 0;border-top:1px solid var(--line)}
.recurring-agreement li:last-child{border-bottom:1px solid var(--line)}
@media(min-width:1001px) and (max-height:760px){
 .campaign h2{font-size:2.8rem;margin-bottom:1rem}
 .campaign-copy .eyebrow{margin-bottom:1rem}
 .campaign-copy>.campaign-problem{font-size:1.125rem!important;margin-bottom:1rem}
 .campaign-copy>p:not(.eyebrow):not(.campaign-problem){font-size:1rem;line-height:1.5;margin-bottom:1rem}
}
@media(max-width:1000px){
 section.campaign{grid-template-columns:minmax(0,1fr);padding-block:3rem;gap:2rem}
 .campaign-copy{max-width:36rem}
 .campaign-image{width:min(100%,480px);justify-self:start}
 .campaign h2{font-size:clamp(2.7rem,8vw,3.75rem)}
}
/* Root scroll-padding already reserves the sticky header; avoid double offset. */
#campaign,#approach{scroll-margin-top:0}

/* Phase 1 enquiry integration; retain the existing section and form panel. */
.guide-rates { margin-block: 1.5rem 2rem; }
.guide-rates p { margin-block: .5rem; }
.enquiry-frame { display:block; width:100%; height:850px; border:0; margin-bottom:1rem; background:var(--espresso); }
.privacy-summary, .privacy-pending { font-size:.875rem; line-height:1.6; margin-top:1.5rem; }
#enquiry-context { overflow-wrap:anywhere; }
#contact-note a { text-underline-offset:.2em; }


/* Compact estimate: input and result remain in one panel. */
#estimate { padding-block: clamp(2rem,5vh,4rem); }
#estimate .section-heading { margin-bottom: 1.5rem; }
#estimate h2 { font-size: clamp(2.5rem,4vw,4rem); }
#estimate .section-intro { margin-top: .7rem; }
#estimate .estimate-input-area { padding: clamp(1.25rem,2vw,2rem); }
#estimate .estimate-form { grid-template-columns: repeat(4,minmax(0,1fr)); align-items:start; gap:1rem; }
#estimate .estimate-form > button { grid-column:1/-1; justify-self:start; }
.estimate-postcode-field label { display:block; margin-bottom:.7rem; }
.estimate-postcode-field input { width:100%; }
#estimate-area { color:var(--postcode-warning); font-size:.85rem; line-height:1.45; margin:.6rem 0 0; }
#estimate-area a { color:inherit; text-decoration:underline; }
#estimate .estimate-result { border:0; border-top:1px solid #85887d66; border-radius:0; box-shadow:none; background:none; margin:1.25rem 0 0; padding:1.25rem 0 0; animation:estimate-reveal .3s ease-out; }
#estimate .estimate-values { display:flex; align-items:center; gap:2rem; margin:.6rem 0; }
#estimate .estimate-values p { margin:0; }
#estimate-price { font-size:clamp(2rem,4vw,3rem); }
#estimate .estimate-essential { margin:.7rem 0 1rem; max-width:70ch; }
#estimate .estimate-error:empty { display:none; }
@keyframes estimate-reveal { from { opacity:0; transform:translateY(4px); } to { opacity:1; transform:none; } }
@media(max-width:1000px) { #estimate .estimate-form { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media(max-width:600px) { #estimate .estimate-form { grid-template-columns:1fr; } #estimate .estimate-values { align-items:flex-start; flex-direction:column; gap:.6rem; } }
@media(prefers-reduced-motion:reduce) { #estimate .estimate-result { animation:none; } }
#estimate .estimate-result #estimate-price { font-size:clamp(2rem,3vw,3rem); }
#estimate .estimate-result #result-title { margin-bottom:.6rem; }
#estimate .estimate-values[hidden] { display:none; }
@media(min-width:1001px) {
 #estimate { padding-block:1.5rem; }
 #estimate h2 { font-size:clamp(2.5rem,3vw,3rem); margin-bottom:.6rem; }
 #estimate .section-heading { margin-bottom:1rem; }
 #estimate .estimate-input-area { padding:1.25rem; }
 #estimate .estimate-result { display:grid; grid-template-columns:1fr auto; gap:.6rem 2rem; padding-top:1rem; margin-top:1rem; }
 #estimate .estimate-result[hidden] { display:none; }
 #estimate .estimate-result #result-title { grid-column:1/-1; margin:0; }
 #estimate .estimate-values { margin:0; }
 #estimate .estimate-essential { grid-column:1; grid-row:3; margin:0; font-size:.9375rem; }
 #estimate-to-quote { grid-column:2; grid-row:2/4; align-self:center; }
}

/* Use only the extraction alpha: all visible portrait pixels are the supplied photo. */
section.campaign { background:var(--blush); padding-block:0; overflow:hidden; }
.campaign-image { border:0; padding:0; margin:0; background:transparent; width:100%; align-self:end; }
.campaign-image img { mask-image:url('../public/images/campaign-cutout-mask.png'); mask-mode:alpha; mask-size:100% 100%; -webkit-mask-image:url('../public/images/campaign-cutout-mask.png'); -webkit-mask-size:100% 100%; }
@media(min-width:1001px) {
 section.campaign { min-height:calc(100svh - var(--header-height)); grid-template-columns:1fr 1.15fr; gap:2rem; }
 .campaign-copy { padding-block:1.5rem; }
 .campaign-image { width:min(100%,calc((100svh - var(--header-height)) * .8)); justify-self:end; }
}
@media(max-width:1000px) {
 section.campaign { padding-top:3rem; gap:1.5rem; }
 .campaign-image { width:min(100%,560px); justify-self:center; }
}
#quote { padding-block:clamp(2rem,5vh,4rem); gap:clamp(2rem,5vw,5rem); }
#quote h2 { font-size:clamp(3rem,5.4vw,5.5rem); margin-bottom:1.5rem; }
#quote .quote-copy>p:not(.eyebrow) { font-size:1rem; line-height:1.5; margin-bottom:1rem; }
.enquiry-fallback,.enquiry-load-status { font-size:.875rem; line-height:1.5; }
.enquiry-fallback { display:inline-block; text-underline-offset:.2em; }
#quote .privacy-summary { margin-top:1rem; }
@media(max-width:850px) { #quote { grid-template-columns:1fr; } }
#campaign,#estimate { scroll-margin-top:-20px; }
#estimate .estimate-result { backdrop-filter:none; -webkit-backdrop-filter:none; }
#estimate .estimate-values p { font-family:var(--font-sans); }
#quote:has(.enquiry-frame) .privacy-summary { display:none; }
#quote .enquiry-frame { margin-bottom:.5rem; }
@media(min-width:1001px) { #quote { padding-block:1rem; scroll-margin-top:-20px; } }
@media(min-width:1001px) { #quote { padding-block:.5rem; } #quote .enquiry-frame { margin-bottom:0; } }

/* Focused October correction: one layered, window-lit campaign scene. */
section.campaign { position:relative; isolation:isolate; background:var(--bone); overflow:hidden; }
section.campaign::before { content:''; position:absolute; z-index:-1; inset:3.5rem 0 1.25rem; background: url('../assets/campaign-window-light.svg') center/100% 100% no-repeat,linear-gradient(105deg,#ceb8ae,#dfc8bc 58%,#bfa79c); }
.campaign-copy { position:relative; z-index:1; }
@media(min-width:1001px) {
 section.campaign { height:calc(100svh - var(--header-height)); min-height:640px; display:block; padding-block:0; }
 .campaign-copy { width:37%; height:100%; display:flex; flex-direction:column; justify-content:center; padding:3.5rem 0 1.25rem; }
 .campaign-copy .text-link { align-self:flex-start; }
 .campaign-image { position:absolute; right:8%; bottom:0; width:auto; height:97%; max-width:53%; }
 .campaign-image img { width:auto; height:100%; max-width:100%; object-fit:contain; object-position:bottom; }
 .campaign h2 { font-size:clamp(2.8rem,4.2vw,4.6rem); }
 #estimate { min-height:calc(100svh - var(--header-height)); display:flex; flex-direction:column; justify-content:center; padding-block:2rem; }
 #estimate .estimate-result { grid-template-columns:minmax(0,36rem) auto; justify-content:start; gap:.6rem 2rem; }
 #estimate .estimate-values { gap:2rem; }
}
@media(min-width:1001px) and (max-height:800px) {
 section.campaign { min-height:0; }
 .campaign h2 { font-size:clamp(2.8rem,4vw,3.8rem); }
 .campaign-copy { width:40%; }
 .campaign-copy>p:not(.eyebrow):not(.campaign-problem) { font-size:1rem; line-height:1.5; }
}
@media(max-width:1000px) {
 section.campaign { padding-top:4rem; }
 section.campaign::before { inset:2rem 0 1.25rem; background-size:auto 100%; }
 .campaign-image { width:min(90%,560px); margin-top:-.5rem; }
}
#estimate .estimate-form input:focus,#estimate .estimate-form select:focus { background:#f5eae2; color:var(--espresso); border-bottom:2px solid #785343; outline:2px solid #785343; outline-offset:3px; box-shadow:none; }
#estimate .estimate-form input:autofill { background:#f5eae2; color:var(--espresso); }
.enquiry-confirmation { padding:clamp(2rem,5vw,4rem) 0; color:var(--bone); }
#quote .enquiry-confirmation h3 { font:400 clamp(1.8rem,3vw,2.75rem)/1.15 var(--font-sans); letter-spacing:-.035em; margin:0 0 1rem; }
.enquiry-confirmation p { color:#d6cec5; font-size:1.0625rem; line-height:1.65; max-width:36ch; }
#quote.is-confirmed .privacy-summary,#quote.is-confirmed .enquiry-fallback,#quote.is-confirmed .enquiry-load-status,#quote.is-confirmed #enquiry-context,#quote.is-confirmed #jotform-consent { display:none; }
@media(min-width:1001px) { .campaign-image { right:14%; } }

/* Approved photographic layers. Assets are used byte-for-byte as supplied. */
section.campaign::before { background:var(--blush) url('../public/images/campaign-approved-background.png') center / cover no-repeat; }
.campaign-image img { mask-image:none; -webkit-mask-image:none; filter:none; }
@media(min-width:1001px) {
 section.campaign { --campaign-figure-height:calc((100svh - var(--header-height)) * .97); }
 .campaign-image { height:var(--campaign-figure-height); width:calc(var(--campaign-figure-height) * 1.941111); max-width:none; right:calc(14% - var(--campaign-figure-height) * .502222); }
 .campaign-image img { width:100%; height:100%; max-width:none; aspect-ratio:1747/900; object-fit:contain; }
}
@media(max-width:1000px) {
 .campaign-image { position:relative; width:min(90%,560px); height:auto; aspect-ratio:744/900; max-width:none; right:auto; }
 .campaign-image img { position:absolute; left:-73.9%; bottom:0; width:234.812%; max-width:none; height:auto; aspect-ratio:1747/900; }
}
section.campaign::before { bottom:3.5rem; }
@media(min-width:1001px) {
 section.campaign { --campaign-figure-height:calc((100svh - var(--header-height)) * .94); }
 .campaign-image { bottom:12px; }
}
@media(max-width:1000px) { section.campaign { padding-bottom:12px; } }

/* Approved portrait: preserve the supplied alpha silhouette without body masks. */
section.campaign::before { clip-path:none; }
section.campaign::after,.campaign-image::before { content:none; }
.campaign-image img { clip-path:none; mask-image:none; -webkit-mask-image:none; aspect-ratio:1121/1403; object-fit:contain; }
.campaign-lettering { position:absolute; pointer-events:none; z-index:0; right:3%; top:19%; color:#887568; opacity:.45; font:400 clamp(7rem,15vw,15rem)/1 var(--font-sans); letter-spacing:-.065em; }
.campaign-image { z-index:0; }
@media(min-width:1001px) {
 .campaign-image { width:calc(var(--campaign-figure-height) * .799002); right:9%; }
 .campaign-copy { width:43%; }
 .campaign h2 { font-size:clamp(2.8rem,4.2vw,4.6rem); }
}
@media(max-width:1000px) {
 .campaign-image { width:min(90%,500px); aspect-ratio:1121/1403; }
 .campaign-image img { position:static; width:100%; height:auto; max-width:100%; }
 .campaign-lettering { top:auto; bottom:22%; right:5%; font-size:clamp(6rem,22vw,11rem); }
}

/* Replacement portrait: retain its real sleeve contour below the canvas. */
.campaign-image img {
 mask-image:linear-gradient(#000 0,#000 calc(100% - 44px),transparent calc(100% - 44px)),url('../assets/campaign-connected-arm-mask.svg');
 -webkit-mask-image:linear-gradient(#000 0,#000 calc(100% - 44px),transparent calc(100% - 44px)),url('../assets/campaign-connected-arm-mask.svg');
 mask-size:100% 100%; -webkit-mask-size:100% 100%; mask-repeat:no-repeat; -webkit-mask-repeat:no-repeat;
}
.campaign-lettering { right:-9%; top:43%; font-size:clamp(12rem,20vw,22rem); opacity:.22; }
@media(min-width:1001px) {
 section.campaign { --campaign-figure-height:calc((100svh - var(--header-height)) * .98); }
 section.campaign::after {
  content:''; position:absolute; z-index:-1; pointer-events:none;
  top:0; right:9%; width:37%; height:3.5rem;
  background:radial-gradient(ellipse at 55% 100%,#bba09388 0,#c6aa9b40 40%,transparent 72%);
 }
}
@media(max-width:1000px) { .campaign-lettering { display:none; } }
@media(min-width:1001px) {
 section.campaign::after { mask-image:linear-gradient(to right,transparent,#000 20%,#000 80%,transparent); -webkit-mask-image:linear-gradient(to right,transparent,#000 20%,#000 80%,transparent); }
}

@media(min-width:1001px) and (max-width:1150px) { .campaign-copy { width:38%; } }

/* A single photographic wall with a locally feathered alpha edge. */
section.campaign::after { content:none; }
@media(min-width:1001px) {
 section.campaign::before {
  top:0;
  mask-image:url('../assets/campaign-wall-edge.svg'),linear-gradient(transparent 120px,#000 120px);
  -webkit-mask-image:url('../assets/campaign-wall-edge.svg'),linear-gradient(transparent 120px,#000 120px);
  mask-size:100% 120px,100% 100%; -webkit-mask-size:100% 120px,100% 100%;
  mask-repeat:no-repeat; -webkit-mask-repeat:no-repeat;
 }
}

/* Services disclosures retain the existing row typography and spacing. */
.service { cursor:pointer; }
.service-detail { overflow:hidden; cursor:auto; }
/* Service feedback uses one surface across the header and disclosure. */
#services .service { transition:background-color 280ms ease-in-out,backdrop-filter 280ms ease-in-out,box-shadow 280ms ease-in-out; }
#services .service:has(.service-link[aria-expanded="true"]),
#services .service:has(.service-link:focus-visible) { background-color:rgba(248,250,252,.55); backdrop-filter:blur(3px); -webkit-backdrop-filter:blur(3px); box-shadow:inset 0 1px 0 rgba(255,255,255,.55); }
@media(hover:hover) and (pointer:fine) {
 #services .service:hover { background-color:rgba(248,250,252,.55); backdrop-filter:blur(3px); -webkit-backdrop-filter:blur(3px); box-shadow:inset 0 1px 0 rgba(255,255,255,.55); }
}
@media(min-width:1001px) {
 #services { padding-block:clamp(1.5rem,4vh,3rem); scroll-margin-top:-20px; }
 #services .section-heading { margin-bottom:1.25rem; }
 #services h2 { margin-bottom:1rem; }
 #services .section-intro { margin-bottom:0; }
 #services .service { padding-block:clamp(.75rem,1.7vh,1.5rem); }
}
@media(prefers-reduced-motion:reduce) {
 #services .service { transition:none; }
}

/* Secondary disclosure headings retain the approved serif treatment. */
#services .service-detail h4 { font-size:clamp(1.875rem,2.2vw,2rem); }
@media(max-width:700px) { #services .service-detail h4 { font-size:1.5625rem; } }

/* Shared advisory treatment: informational, with accessible red on pale blush. */
#estimate-area[data-outside-area="true"]{color:var(--postcode-warning);background:#F7E8E2;padding:8px 12px;border-radius:2px}
#estimate-form [hidden]{display:none!important}

/* Longer accommodation scopes need readable room without changing other services. */
@media(min-width:1001px){#estimate .estimate-form:has(#estimate-cleaning-type-field:not([hidden])){grid-template-columns:repeat(2,minmax(0,1fr))}}
.estimate-selected-scope{display:none}
@media(max-width:1000px){.estimate-selected-scope:not(:empty){display:block;font-size:.85rem;font-weight:400;line-height:1.4;overflow-wrap:anywhere}}

/* Secondary same-page return action; the enquiry submit remains primary. */
.enquiry-return{background:transparent;color:var(--bone);border:1px solid #f3efe87a;border-radius:48px;min-height:48px;padding:12px 22px;max-width:100%;text-align:center;white-space:normal}
.enquiry-return:hover{background:#f3efe812;color:var(--bone)}
.enquiry-return:focus-visible{outline:3px solid var(--bone);outline-offset:4px}

/* Vector arrows keep the existing span animation and inherit each control’s colour. */
.arrow-icon{display:block;width:1em;height:1em;flex:none;pointer-events:none}
