@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@400;500;600;700;800&display=swap');
:root{--bg:#080f12;--fg:#edf3f3;--cyan:#4ce6fb;--muted:#95a4aa;--line:#233136}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:90px}body{margin:0;background:var(--bg);color:var(--fg);font-family:'DM Sans',Arial,sans-serif}a{color:inherit;text-decoration:none}button{font:inherit;cursor:pointer}header{height:100px;display:flex;align-items:center;justify-content:space-between;padding:0 5%;position:absolute;top:0;left:0;width:100%;z-index:10;border-bottom:1px solid #ffffff12}.brand{font-family:'Manrope',Arial,sans-serif;font-size:31px;font-weight:800;line-height:.95;letter-spacing:-1.5px;display:inline-block}.brand-small{display:block;font-size:10px;letter-spacing:4px;margin-bottom:5px}.brand-dot{color:var(--cyan)}nav{display:flex;gap:35px;font-size:14px}nav a:hover{color:var(--cyan)}.button{display:inline-flex;align-items:center;justify-content:center;padding:19px 27px;background:var(--cyan);color:#061013;border:1px solid var(--cyan);border-radius:5px;font-size:14px;font-weight:700;transition:background .2s,transform .2s}.button:hover{background:#a3f4ff;transform:translateY(-2px)}.button.small{padding:13px 20px}a:focus-visible,button:focus-visible{outline:3px solid white;outline-offset:6px}.hero{min-height:850px;height:100svh;max-height:1200px;position:relative;overflow:hidden;padding:145px 5% 40px;background:radial-gradient(ellipse at 73% 62%,#13323a66,transparent 56%)}.hero-top{display:flex;justify-content:space-between;position:relative;z-index:2}.eyebrow{font-size:12px;letter-spacing:2.5px;font-weight:500;color:var(--cyan)}.hero-note{text-align:right;color:var(--muted);font-size:13px;line-height:1.6}.hero-title{position:relative;z-index:2;margin-top:64px;width:60%;pointer-events:none}h1,h2,h3,p{margin:0}h1{font-family:'Manrope',Arial,sans-serif;font-size:clamp(65px,7.2vw,116px);font-weight:500;line-height:1.03;letter-spacing:-6px}em{font-style:normal;color:var(--cyan)}.hero-title p{font-size:16px;line-height:1.8;color:#b3c0c5;margin-top:32px}.hero-art{position:absolute;width:74%;right:-7%;bottom:3%;z-index:1}.hero-art img{width:100%;display:block;mix-blend-mode:lighten;animation:float 9s ease-in-out infinite}.orbit-label{position:absolute;bottom:15%;right:28%;font-size:10px;letter-spacing:3px;color:var(--muted)}.discover{position:absolute;bottom:49px;left:5%;z-index:3;display:flex;align-items:center;gap:15px;font-size:13px;color:#c6d3d7}.scroll-line{height:44px;width:1px;background:linear-gradient(var(--cyan),transparent)}.hero-side{position:absolute;right:2.5%;top:43%;writing-mode:vertical-rl;font-size:10px;letter-spacing:3px;color:#748890}.journey{height:430svh;position:relative}.stage{height:100svh;min-height:680px;position:sticky;top:0;overflow:hidden;border-top:1px solid var(--line);background:radial-gradient(ellipse at 35% 60%,#112b3460,transparent 60%)}.stage-heading{position:absolute;left:5%;right:5%;top:6%;display:flex;justify-content:space-between;align-items:center;z-index:3}.stage-count{font-size:14px;color:#81969e;letter-spacing:3px}.scene{position:absolute;left:-7%;top:9%;width:75%;height:81%;}.house-wrap{width:100%;position:absolute;top:0;transition:filter .4s;transform-origin:50% 65%}.house{width:100%;display:block;mix-blend-mode:lighten}.dirt{position:absolute;left:28%;top:39%;width:41%;height:27%;opacity:.38;mix-blend-mode:multiply;background:repeating-linear-gradient(92deg,transparent 0 11px,#3c4a21bb 13px 19px,transparent 25px 41px),linear-gradient(#67794b,#444622);clip-path:polygon(0 0,62% 0,100% 23%,100% 100%,0 100%)}.wash-glow{position:absolute;left:27%;top:37%;width:45%;height:34%;background:linear-gradient(100deg,transparent 30%,#4ce6fb44 50%,transparent 70%);opacity:0;pointer-events:none}.worker{position:absolute;width:30%;height:65%;left:24%;bottom:5%;background-image:url('workers.webp');background-repeat:no-repeat;background-size:252% 100%;filter:drop-shadow(0 8px 7px #0008);transform-origin:50% 94%;transition:background-position .2s;z-index:2}canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:3}.scene-caption{position:absolute;bottom:5%;left:33%;display:flex;gap:20px;align-items:center;color:#718a94;font-size:10px;letter-spacing:3px}.cross{font-size:23px;color:var(--cyan)}.stage-copy{position:absolute;left:65%;width:29%;top:30%;z-index:4}.service-label{font-size:12px;color:var(--cyan);letter-spacing:2px}h2{font-family:'Manrope',Arial,sans-serif;font-weight:500;font-size:clamp(35px,4vw,64px);line-height:1.12;letter-spacing:-2.4px}.stage-copy h2{margin:25px 0;font-size:clamp(34px,3.5vw,56px)}.stage-copy p{color:var(--muted);font-size:16px;line-height:1.85;max-width:340px;min-height:118px}.technique{margin-top:32px;display:inline-block;padding-top:15px;border-top:1px solid var(--line);font-size:11px;letter-spacing:2px;color:#d2dfe3}.step-nav{position:absolute;bottom:6%;left:5%;right:5%;display:flex;justify-content:space-between;gap:30px;z-index:5}.step-nav button{background:none;border:0;border-top:1px solid #38474d;color:#73858c;text-align:left;padding:20px 0 0;flex:1;font-size:14px;transition:color .3s}.step-nav button span{margin-right:15px;font-size:12px}.step-nav button.active{color:var(--cyan);border-color:var(--cyan)}.progress{position:absolute;bottom:0;height:2px;width:100%;background:#18272e}.progress div{height:100%;background:var(--cyan);width:0}.result{text-align:center;padding:125px 5% 140px;border-bottom:1px solid var(--line);background:radial-gradient(ellipse at center,#12282c88,transparent 65%)}.result h2{font-size:clamp(40px,5.4vw,83px);margin:30px 0}.result p{color:var(--muted);line-height:1.8;font-size:16px;margin-bottom:35px}.services{padding:110px 5% 120px}.section-top{display:flex;justify-content:space-between;align-items:flex-start;gap:40px}.section-top h2{width:61%;font-size:clamp(34px,3.6vw,55px)}.service-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:48px;margin-top:75px}.service-grid article{border-top:1px solid var(--line);padding-top:25px}.number{font-size:12px;color:var(--cyan);letter-spacing:2px}h3{font-family:'Manrope',Arial,sans-serif;font-size:23px;letter-spacing:-.7px;margin:27px 0 18px;font-weight:500}.service-grid p{font-size:15px;line-height:1.85;color:var(--muted)}.text-button{margin-top:30px;padding:0;background:none;color:var(--fg);border:0;font-size:14px}.text-button span{margin-left:8px;color:var(--cyan)}.text-button:hover{color:var(--cyan)}.contact{border-top:1px solid var(--line);padding:100px 5%;display:flex;align-items:center;justify-content:space-between;gap:55px;background:#0e1a1f}.contact h2{margin-top:30px;font-size:clamp(35px,4vw,60px)}.contact-side{max-width:340px}.contact-side p{font-size:16px;line-height:1.8;color:#a9b8bf;margin-bottom:25px}.contact-note{display:block;font-size:12px;color:var(--muted);margin-top:16px}footer{padding:38px 5%;display:flex;align-items:center;justify-content:space-between;gap:25px}footer>span{font-size:12px;color:var(--muted)}@keyframes float{50%{transform:translateY(-13px)}}@media(min-width:1500px){.hero-art{width:68%;right:-2%}}@media(max-width:800px){header{height:85px;padding:0 6%}.brand{font-size:26px}nav{display:none}.button.small{font-size:11px;padding:12px}.hero{min-height:790px;height:100svh;padding:119px 6% 30px}.hero-note,.hero-side{display:none}.eyebrow{font-size:10px;letter-spacing:1.8px}.hero-title{width:100%;margin-top:40px}h1{font-size:clamp(56px,12vw,86px);letter-spacing:-3.5px}.hero-title p{font-size:14px;margin-top:23px}.hero-art{width:124%;right:-16%;bottom:7%}.orbit-label{bottom:10%;right:29%;font-size:8px}.discover{bottom:28px;left:6%;font-size:12px}.stage{min-height:690px}.stage-heading{top:4%;left:6%;right:6%}.scene{left:-16%;width:128%;top:14%;height:56%}.worker{height:76%;width:29%;left:23%;bottom:0}.scene-caption{display:none}.stage-copy{left:7%;top:auto;bottom:15%;width:86%}.stage-copy h2{font-size:31px;letter-spacing:-1.3px;margin:12px 0}.stage-copy h2 br{display:none}.stage-copy p{font-size:14px;line-height:1.6;min-height:0;max-width:95%}.service-label{font-size:10px}.technique{font-size:9px;margin-top:13px;padding-top:10px}.step-nav{left:7%;right:7%;bottom:4%;gap:15px}.step-nav button{font-size:11px;padding-top:12px}.step-nav button span{margin-right:4px;font-size:10px}.result{padding:90px 7%}.result h2{font-size:42px;letter-spacing:-2px}.result p{font-size:14px}.services{padding:75px 7%}.section-top{display:block}.section-top h2{width:100%;font-size:34px;margin-top:25px}.service-grid{grid-template-columns:1fr;gap:35px;margin-top:45px}.service-grid article{padding-top:20px}h3{margin-top:17px}.text-button{margin-top:20px}.contact{display:block;padding:75px 7%}.contact h2{font-size:36px}.contact-side{margin-top:30px}footer{padding:30px 7%;flex-wrap:wrap}footer>span:nth-child(2){display:none}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.hero-art img{animation:none}*{transition:none!important}}

.house-wrap,.hero-art{mask-image:radial-gradient(ellipse at center,#000 45%,transparent 74%)}
.worker{left:39%;width:32%;height:65%;bottom:12%;background-size:252% 100%}
@media(max-width:800px){.worker{left:40%;width:30%;height:85%;bottom:5%}.house-wrap{top:0}.scene{top:10%;}}

/* House, hands and tool tips share one coordinate system. */
.scene{left:-3%;top:10%;width:70%;height:auto;aspect-ratio:3/2}
.world{position:absolute;left:0;top:0;width:1536px;height:1024px;transform-origin:0 0}
.world .house-wrap{width:1536px;height:1024px;top:0;transform:none!important;mask-image:none}
.world .house{width:1536px;height:1024px}
.crew-part{position:absolute;left:0;top:0;width:1536px;height:1024px;background:url('workers.webp') 0 0/1536px 1024px no-repeat;transform-origin:0 0;pointer-events:none;z-index:2;will-change:transform;transition:none}
.world canvas{width:1536px;height:1024px}
.scene-caption{bottom:1%;left:36%}
@media(max-width:800px){.scene{left:-6%;width:112%;top:10%;height:auto;aspect-ratio:3/2}.stage-copy{bottom:15%}.stage{min-height:720px}}

.journey{height:500svh}.stage{min-height:750px}.intro{position:absolute;left:5%;top:24%;z-index:4;width:60%;pointer-events:none}.intro h1{margin:32px 0 25px}.intro p{color:var(--muted);font-size:16px;line-height:1.8}.intro-scroll{display:block;margin-top:38px;font-size:13px;color:var(--cyan)}.stage-heading,.stage-copy{opacity:0}.scene{will-change:left,top,width}.intro{will-change:opacity}
@media(max-width:800px){.stage{min-height:740px}.intro{left:6%;top:18%;width:90%}.intro h1{font-size:clamp(54px,12vw,80px);letter-spacing:-3px;margin:23px 0 18px}.intro p{font-size:14px}.intro-scroll{margin-top:20px;font-size:12px}}

#soap{z-index:1;pointer-events:none}#crewHead{z-index:4}#crewArmA,#crewArmB{z-index:3}#crewLegA,#crewLegB{z-index:2}.world .wash-glow{display:none}

/* The original photograph is the only scene; dirt is revealed in service order. */
.world .house-wrap{mask-image:none}.cleaning-layer{position:absolute;inset:0;width:1536px;height:1024px;pointer-events:none;object-fit:fill;will-change:opacity;mask-mode:luminance}.world .house{mix-blend-mode:normal}.scene-caption{color:#a0b4bc}.world{isolation:isolate}

#softwashJet{position:absolute;z-index:3;height:44px;transform-origin:0 50%;pointer-events:none;background:linear-gradient(90deg,#efffff99,#efffff55 55%,#efffff00);clip-path:polygon(0 48%,100% 0,100% 100%,0 52%)}

/* Stable viewport height and persistent SVG masks avoid rebuilding image masks on scroll. */
.stage{height:100svh;min-height:0}.world .cleaning-svg{position:absolute;inset:0;width:1536px;height:1024px;pointer-events:none;overflow:visible}.crew-part{will-change:auto}.scene,.intro{will-change:auto}
@media(max-width:800px){.stage{min-height:0}.stage-copy{bottom:15%}.stage-copy h2{font-size:28px;margin:9px 0}.stage-copy p{font-size:14px}.technique{margin-top:9px}.intro{top:17%}}
@media(max-width:800px) and (max-height:670px){.stage-copy h2{font-size:24px}.stage-copy p{font-size:13px;line-height:1.45}.technique{display:none}.intro h1{font-size:48px}.intro-scroll{margin-top:12px}}

/* A visible first view must never depend on script or image callbacks. */
.scene-fallback{display:block;position:relative;width:100%;height:auto}.world{visibility:hidden}html.animation-ready .world{visibility:visible}html.animation-ready .scene-fallback{visibility:hidden}html.animation-ready #houseWrap{visibility:visible}
html.animation-failed .world{display:none}html.animation-failed .scene-fallback{visibility:visible}html.animation-failed .intro{opacity:1!important;visibility:visible!important}html.animation-failed .stage-copy,html.animation-failed .stage-heading,html.animation-failed .step-nav,html.animation-failed .scene-caption{display:none}html.animation-failed .journey{height:100svh}html.animation-failed .scene{left:34%!important;top:25%!important;width:70%!important}
@media(max-width:800px){html.animation-failed .scene{left:-6%!important;top:43%!important;width:112%!important}}
html:not(.animation-ready) .scene{left:34%;top:25%;width:70%}@media(max-width:800px){html:not(.animation-ready) .scene{left:-6%;top:43%;width:112%}}

#crewLowerPole{z-index:2}.booking{padding:90px 5%;border-top:1px solid var(--line)}.booking-heading{display:flex;align-items:center;justify-content:space-between;gap:45px;margin-bottom:40px}.booking-heading h2{margin-top:22px}.booking-heading>div:last-child{max-width:420px}.booking-heading p{color:var(--muted);font-size:16px;line-height:1.8}.booking-external{display:inline-block;color:var(--cyan)}.booking-calendar{display:block;width:100%;height:850px;border:1px solid var(--line);border-radius:8px;background:white}.booking-help{font-size:14px;color:var(--muted);margin-top:18px;line-height:1.7}.booking-help a{color:var(--cyan);text-decoration:underline}@media(max-width:800px){.booking{padding:65px 6%}.booking-heading{display:block}.booking-heading>div:last-child{margin-top:25px}.booking-calendar{height:760px}.booking-heading h2{font-size:38px}}

/* One reading area: house above, included service directly below. */
.stage-copy{left:50%;top:auto;bottom:84px;transform:translateX(-50%);width:min(760px,90%);min-height:202px;padding:20px 28px 18px;background:#111f24;border:1px solid #36505a;border-top:2px solid var(--cyan);border-radius:12px;box-sizing:border-box;z-index:5}
.stage-copy h2{font-size:clamp(25px,2.5vw,34px);line-height:1.12;letter-spacing:-.8px;margin:9px 0 10px}
.stage-copy p{max-width:none;min-height:0;font-size:16px;line-height:1.6;color:#e0e9ec;margin:0}
.stage-copy .technique{margin-top:12px;padding:0;border:0;font-size:10px;letter-spacing:1.6px;color:var(--cyan)}
.stage-heading{top:24px;left:5%;right:5%}
.scene-caption{display:none}
.step-nav{left:50%;right:auto;transform:translateX(-50%);width:min(760px,90%);bottom:22px;gap:24px}
.step-nav button{padding-top:12px;font-size:12px}
@media(max-width:800px){
.stage-copy{width:92%;bottom:78px;min-height:230px;padding:15px 17px}
.stage-copy h2{font-size:25px;line-height:1.12;margin:8px 0 10px}
.stage-copy p{font-size:14px;line-height:1.55;max-width:none}
.stage-copy .technique{font-size:9px;margin-top:10px}
.stage-heading{top:18px;left:5%;right:5%}
.step-nav{width:92%;bottom:22px;gap:12px}
.step-nav button{font-size:10px;line-height:1.4;padding-top:10px}
}
@media(max-height:670px){
.stage-copy{min-height:0;padding:12px 17px;bottom:66px}
.stage-copy h2{font-size:22px;margin:6px 0 8px}
.stage-copy p{font-size:13px;line-height:1.45}
.stage-copy .technique{display:none}
.step-nav{bottom:15px}
}

/* Fixed-price offers directly after the cleaning demonstration. */
.pricing{padding:76px 5% 84px;border-top:1px solid var(--line)}
.pricing-heading{max-width:1200px;margin:0 auto 38px}
.pricing-heading h2{font-size:clamp(32px,4vw,54px);line-height:1.08;margin:20px 0 0;letter-spacing:-1.6px}
.pricing-grid{max-width:1200px;margin:0 auto;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:28px}
.price-card{overflow:hidden;border:1px solid #2a4049;border-radius:14px;background:#0b171c}
.price-card img{display:block;width:100%;height:auto;aspect-ratio:3/2;object-fit:contain;background:#050f14}
.price-caption{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:24px 28px;border-top:1px solid #2a4049}
.price-caption h3{font-size:clamp(20px,2vw,28px);line-height:1.2;margin:0;letter-spacing:-.5px}
.price-caption .fixed-price{font-size:clamp(34px,3.8vw,52px);line-height:1.1;font-weight:700;color:var(--cyan);margin:0;white-space:nowrap;letter-spacing:-1.5px}
@media(max-width:650px){.pricing{padding:50px 5% 56px}.pricing-heading{margin-bottom:26px}.pricing-grid{grid-template-columns:1fr;gap:22px}.price-caption{padding:20px}.price-caption h3{font-size:23px}.price-caption .fixed-price{font-size:42px}}

/* Fit the new, longer welcome message beside the house. */
.intro h1{font-size:clamp(40px,4.9vw,78px);line-height:1.08;letter-spacing:-2.5px}
@media(max-width:800px){.intro h1{font-size:clamp(29px,7.6vw,55px);line-height:1.12;letter-spacing:-1px;margin:20px 0 16px}.intro p{font-size:16px}}
@media(max-width:800px) and (max-height:670px){.intro h1{font-size:clamp(28px,7.2vw,42px);margin:14px 0 12px}.intro-scroll{margin-top:12px}}

.result-video{display:block;width:min(100%,420px);height:auto;aspect-ratio:512/910;margin:38px auto 0;border-radius:14px;border:1px solid var(--line);background:#000;object-fit:contain}
@media(max-width:650px){.result-video{width:min(100%,360px);margin-top:28px}}

/* Preserve the complete Wix reservation flow inside a branded frame. */
.booking-frame{padding:8px;background:#13272f;border:1px solid #36505a;border-top:3px solid var(--cyan);border-radius:16px;margin-top:24px}
.booking-frame .booking-calendar{width:100%;height:850px;border:0;border-radius:8px;background:white}
@media(max-width:800px){.booking-frame{padding:4px;border-radius:12px}.booking-frame .booking-calendar{height:760px}}
