/* Illustrated squeegee; its rubber blade stays exactly on the clean/dirty boundary. */
.cleaning-brush{top:var(--clean);height:auto;aspect-ratio:1;transform:translateY(-14.8%) translateZ(12px);filter:drop-shadow(2px 5px 3px #00182650)}.cleaning-brush img{display:block;width:100%;height:auto;max-width:none}
.panel-dirt{mix-blend-mode:normal;opacity:.9}.panel-dirt svg{opacity:.9}.is-weathering .panel-dirt{clip-path:inset(0)!important;opacity:var(--soil,0)}
/* One compact storm: sculpted cloud, wind-driven rain, dust and run-off. */
.rain-layer{position:absolute;inset:-4% -8% 2%;overflow:hidden;pointer-events:none;z-index:5;opacity:0;transition:opacity .45s;mask-image:linear-gradient(transparent,#000 17%,#000 85%,transparent)}
.is-raining .rain-layer{opacity:1}.rain-layer i{position:absolute;left:var(--x);top:-20%;height:var(--length);width:1.5px;border-radius:50%;background:linear-gradient(transparent,#bcefff 65%,#fff);rotate:24deg;animation:rain-fall var(--speed) var(--delay) linear infinite;opacity:var(--rain-opacity)}
.rain-cloud{position:absolute;top:-15%;left:12%;width:83%;max-width:380px;height:auto;z-index:7;opacity:0;transform:translate(35px,-20px) scale(.86);transition:opacity .5s,transform .7s cubic-bezier(.16,1,.3,1);pointer-events:none;filter:drop-shadow(0 15px 15px #082a4b45)}
.rain-cloud img{display:block;width:100%;height:auto;animation:storm-roll 2s ease-in-out infinite alternate;animation-play-state:paused}.is-raining .rain-cloud{opacity:1;transform:translate(0,0) scale(1)}.is-raining .rain-cloud img{animation-play-state:running}
.weather-badge{position:absolute;top:36%;right:0;background:#11283fed;border:1px solid #9fdcff70;color:#fff;padding:9px 12px;border-radius:30px;font-size:10px;font-weight:700;z-index:8;opacity:0;transform:translateY(-8px);transition:opacity .4s,transform .4s}.is-raining .weather-badge{opacity:1;transform:translateY(0)}
.storm-atmosphere{position:absolute;inset:0;z-index:4;pointer-events:none;overflow:hidden;mask-image:radial-gradient(ellipse at center,#000 45%,transparent 72%);opacity:0;transition:opacity .5s}.is-raining .storm-atmosphere{opacity:1}.storm-haze{position:absolute;inset:0;background:none}
.wind-line{position:absolute;left:-30%;width:90%;height:25%;border-top:1px solid #def9ff7a;border-radius:50%;transform:rotate(-22deg);animation:wind-rush 1.4s linear infinite}.wind-one{top:25%}.wind-two{top:49%;animation-delay:-.5s;opacity:.65}.wind-three{top:73%;animation-delay:-1s;opacity:.4}
.storm-debris{position:absolute;top:var(--drift-y);right:-10%;width:9px;height:5px;border-radius:70% 5% 70% 5%;background:#9f8a52;box-shadow:0 1px 2px #15314a50;animation:storm-leaf 1.4s var(--delay) linear infinite}
.is-raining .panel-float{animation:storm-panel 1.6s ease-in-out infinite}.is-raining .scene-lightning{filter:drop-shadow(11px 10px 0 #ed3344) saturate(.55);opacity:.65}.is-weathering .panel-glint{opacity:0!important}
.solar-experience:not(.is-raining) .rain-layer i,.solar-experience:not(.is-raining) .wind-line,.solar-experience:not(.is-raining) .storm-debris,.cycle-paused .rain-layer i,.cycle-paused .rain-cloud img,.cycle-paused .wind-line,.cycle-paused .storm-debris,.cycle-paused .panel-float{animation-play-state:paused}
@keyframes rain-fall{from{translate:70px -20px}to{translate:-140px 650px}}@keyframes storm-roll{from{translate:-4px 0;rotate:-2deg}to{translate:6px 4px;rotate:2deg}}@keyframes wind-rush{0%{translate:80% 0;opacity:0}25%{opacity:.6}75%{opacity:.5}100%{translate:-80% 24px;opacity:0}}@keyframes storm-leaf{0%{translate:0 -10px;rotate:0;opacity:0}12%{opacity:.9}85%{opacity:.7}100%{translate:-520px 170px;rotate:500deg;opacity:0}}@keyframes storm-panel{0%,100%{transform:rotate(-14deg) translate(0,0)}30%{transform:rotate(-15deg) translate(-3px,2px)}65%{transform:rotate(-13.5deg) translate(2px,-1px)}}

/* Large, scroll-controlled pressure wash. No scroll capture or scroll hijacking. */
.pressure-story{height:230vh;background:var(--blue)}.pressure-story .wipe-sticky{height:90vh;min-height:450px;background:var(--blue)}
.pressure-clean-message{position:absolute;z-index:0;inset:0;background:var(--blue);color:var(--ink);display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:5%;padding:6% 10%}
.clean-reveal-copy{position:relative;z-index:1}.clean-reveal-copy>p{font-size:clamp(70px,8.8vw,130px);font-weight:900;letter-spacing:-6px;line-height:.94;margin:28px 0;color:white}.clean-reveal-copy>p>span{color:var(--yellow)}.clean-reveal-copy>.wipe-sub{font-size:clamp(15px,1.6vw,22px);font-weight:700;line-height:1.6}.clean-reveal-portrait{height:100%;max-height:640px;min-height:0;position:relative;transform:rotate(3deg);border:9px solid #fff;border-radius:6px;box-shadow:16px 18px 0 #102d4530;background:#fff}.clean-reveal-portrait img{width:100%;height:100%;object-fit:cover;object-position:50% 43%;display:block}.clean-reveal-portrait>span{position:absolute;bottom:22px;left:-25px;right:15px;padding:17px 20px;display:flex;align-items:center;justify-content:space-between;background:var(--red);color:#fff;font-size:clamp(16px,2vw,26px);font-weight:800;transform:rotate(-5deg);box-shadow:0 4px 0 #12263a18}.pressure-clean-message .ws1{right:5%;top:4%;z-index:1}
.about-after-reveal{display:block}.about-after-reveal .about-copy{max-width:1100px;margin:auto;display:grid;grid-template-columns:.95fr 1fr;column-gap:9%;align-items:start}.about-after-reveal .about-copy>.eyebrow{grid-column:1;grid-row:1}.about-after-reveal .about-copy>h2{grid-column:1;grid-row:2/6;max-width:480px}.about-after-reveal .about-copy>p,.about-after-reveal .about-copy>.button,.about-after-reveal .about-copy>.local-note{grid-column:2}.about-after-reveal .about-copy>.about-lead{grid-row:1/3;margin-top:0}.about-after-reveal .about-copy>.button{justify-self:start}
#dirty-screen{position:absolute;z-index:1;inset:0;width:100%;height:100%;display:block;pointer-events:none}
.dirty-caption{position:absolute;z-index:2;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;padding:40px 24px;color:#f7f3e4;pointer-events:none;text-shadow:0 3px 30px #171b13a6}
.dirty-caption>.eyebrow{color:#e7e0c8;font-size:11px;letter-spacing:2px}.dirty-caption>p{font-size:clamp(54px,7.6vw,120px);font-weight:800;letter-spacing:-4px;line-height:1.02;margin:30px 0}.dirty-caption>span:last-child{font-size:16px;color:#f1eddf;line-height:1.8}
#water-screen{position:absolute;inset:0;width:100%;height:100%;z-index:3;pointer-events:none}
.pressure-tool{position:absolute;left:0;top:0;z-index:4;width:0;height:0;pointer-events:none;opacity:0;will-change:transform}
.pressure-lance-art{position:absolute;max-width:none;height:auto;filter:drop-shadow(0 5px 4px #102b4530)}
.pressure-story .wipe-instruction{color:#fff;text-shadow:0 1px 8px #103047a6;font-size:11px;bottom:27px}

/* A short brand entrance. It never waits indefinitely for assets or audio. */
.intro-active{overflow:hidden}.intro-overlay{position:fixed;inset:0;background:#7f7b63;z-index:200;isolation:isolate;overflow:hidden;opacity:1;transition:opacity .5s,visibility .5s}.intro-overlay[hidden]{display:none}.intro-overlay.intro-leaving{opacity:0;visibility:hidden;pointer-events:none}
.intro-dirty{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;text-align:center;color:#e1ddc4;font-size:clamp(44px,7vw,100px);line-height:.95;font-weight:900;letter-spacing:-4px;background:radial-gradient(ellipse at 80% 30%,#444a2a,transparent 40%),radial-gradient(ellipse at 20% 80%,#4c4729,transparent 45%),#83816b}
.intro-dirty>span{opacity:.65}.intro-dirty i{position:absolute;background:#2a301b80;width:140px;height:110px;border-radius:40% 60% 28% 72%/60% 31% 69% 40%;box-shadow:20px 15px 0 -14px #33391fcc,-25px -15px 0 -30px #33391fcc}.intro-dirty i:nth-of-type(1){top:11%;left:12%;rotate:30deg}.intro-dirty i:nth-of-type(2){top:33%;right:8%;width:210px;height:190px;rotate:-40deg}.intro-dirty i:nth-of-type(3){bottom:12%;left:25%;width:180px;rotate:15deg}.intro-dirty i:nth-of-type(4){top:5%;right:36%;width:77px;height:90px}.intro-dirty i:nth-of-type(5){bottom:4%;right:14%;width:100px}
.intro-clean{position:absolute;inset:0;background:var(--ink);clip-path:circle(0% at 50% 47%);display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;padding-top:85px;color:white}
.intro-brand-text{font-size:11px;font-weight:700;letter-spacing:5px;margin-bottom:15px;color:#a3ddf6}.intro-clean h2{font-size:clamp(70px,10vw,130px);font-weight:900;letter-spacing:-6px;line-height:.9;margin:0 0 20px}.intro-clean h2 span{color:var(--yellow)}.intro-clean p{font-size:14px;color:#d3e8f3;line-height:1.7}
.intro-drop{position:absolute;width:120px;height:120px;left:calc(50% - 60px);top:calc(47% - 60px);z-index:4;opacity:0;filter:drop-shadow(7px 9px 0 #00000024)}.intro-drop img{width:100%;height:100%;object-fit:contain}
.intro-playing .intro-drop{animation:logo-drop 1.4s cubic-bezier(.3,.1,.3,1) forwards}.intro-playing .intro-clean{animation:clean-burst 1.1s .85s cubic-bezier(.15,.6,.3,1) forwards}
.intro-splash{position:absolute;top:47%;left:50%;width:0;height:0;z-index:3}.intro-splash i{position:absolute;width:20px;height:31px;border-radius:80% 20% 70% 30%;background:var(--blue);opacity:0;--angle:20deg;--distance:170px}.intro-splash i:nth-child(2){--angle:80deg;--distance:200px;background:var(--yellow)}.intro-splash i:nth-child(3){--angle:140deg;--distance:160px}.intro-splash i:nth-child(4){--angle:200deg;--distance:220px;background:var(--red)}.intro-splash i:nth-child(5){--angle:260deg;--distance:150px}.intro-splash i:nth-child(6){--angle:320deg;--distance:190px;background:var(--yellow)}.intro-playing .intro-splash i{animation:logo-splash .9s .86s ease-out forwards}
.intro-actions{position:absolute;bottom:30px;left:24px;right:24px;display:flex;justify-content:center;gap:18px;z-index:5}.intro-actions button{border:1px solid #ffffff70;background:#10283fbc;backdrop-filter:blur(10px);padding:12px 18px;color:white;border-radius:25px;font-size:11px}.intro-actions button:hover{background:var(--yellow);color:var(--ink);border-color:var(--yellow)}
.replay-intro{background:none;border-bottom:1px solid #acc1cf;padding:8px 0;font-size:12px;font-weight:700;display:flex;align-items:center;gap:12px}.replay-intro span{font-size:20px;color:#008ec5}
@keyframes logo-drop{0%{opacity:1;transform:translateY(-70vh) scale(.75) rotate(-20deg)}55%{opacity:1;transform:translateY(0) scale(.92,1.13) rotate(0)}65%{opacity:1;transform:translateY(10px) scale(1.2,.8) rotate(0)}80%{opacity:1;transform:translateY(-25px) scale(.95,1.02)}100%{opacity:1;transform:translateY(-170px) scale(.72)}}
@keyframes clean-burst{from{clip-path:circle(0% at 50% 47%)}to{clip-path:circle(150% at 50% 47%)}}@keyframes logo-splash{0%{opacity:1;transform:rotate(var(--angle)) translateY(0) scale(.3)}80%{opacity:.7}100%{opacity:0;transform:rotate(var(--angle)) translateY(calc(-1 * var(--distance))) scale(1.2)}}
@media(max-width:850px){.weather-badge{font-size:8px;padding:7px 10px}.pressure-clean-message>p{letter-spacing:-4px}.footer-top{flex-wrap:wrap}}
@media(max-width:620px){.pressure-story{height:210vh}.pressure-story .wipe-sticky{height:85vh;min-height:440px}.pressure-clean-message>p{font-size:clamp(62px,15vw,88px);letter-spacing:-3.5px}.pressure-clean-message>.eyebrow{font-size:7px;letter-spacing:1px}.pressure-clean-message>.wipe-sub{font-size:13px;max-width:260px;line-height:1.8}.dirty-caption>p{font-size:clamp(43px,10.6vw,65px);letter-spacing:-2px;line-height:1.05}.dirty-caption>.eyebrow{font-size:7px;letter-spacing:1.5px}.dirty-caption>span:last-child{font-size:12px;max-width:240px}.pressure-story .wipe-instruction{font-size:9px;bottom:25px}.rain-cloud{left:8%;top:-10%;width:90%}.weather-badge{top:35%;right:1%}.intro-clean{padding-top:50px}.intro-clean h2{font-size:78px;letter-spacing:-4px}.intro-clean p{font-size:12px}.intro-brand-text{font-size:9px;letter-spacing:3px}.intro-drop{width:105px;height:105px;left:calc(50% - 52px)}.intro-actions{gap:10px;bottom:25px;left:15px;right:15px}.intro-actions button{font-size:10px;padding:11px 14px}.intro-dirty{font-size:51px;letter-spacing:-2px}.intro-dirty i{scale:.7}.replay-intro{font-size:11px}}
.motion-paused .pressure-story{height:90vh}.motion-paused #dirty-screen,.motion-paused #water-screen,.motion-paused .dirty-caption,.motion-paused .pressure-tool,.motion-paused .pressure-story .wipe-instruction{display:none}
.motion-paused .intro-clean{animation:none!important;clip-path:none}.motion-paused .intro-drop{animation:none!important;opacity:1;transform:translateY(-170px) scale(.72)}.motion-paused .intro-splash{display:none}
@media(prefers-reduced-motion:reduce){.pressure-story{height:90vh}#dirty-screen,#water-screen,.dirty-caption,.pressure-tool,.pressure-story .wipe-instruction,.rain-layer{display:none}.intro-clean{clip-path:none}.intro-drop{opacity:1;transform:translateY(-170px) scale(.72)}.intro-splash{display:none}.intro-overlay{transition:none}}

@media(max-width:620px){.pressure-clean-message{padding:7% 24px 58px;grid-template-columns:1fr;grid-template-rows:53% 1fr;gap:6%;text-align:center}.clean-reveal-portrait{grid-row:1;width:65%;margin:auto;height:100%;border-width:6px;box-shadow:8px 9px 0 #102d4530}.clean-reveal-portrait>span{font-size:15px;bottom:11px;padding:11px 14px;left:-17px;right:8px}.clean-reveal-portrait img{object-position:50% 36%}.clean-reveal-copy{grid-row:2}.clean-reveal-copy>.eyebrow{font-size:7px;letter-spacing:1.3px}.clean-reveal-copy>p{font-size:clamp(52px,15vw,77px);letter-spacing:-3px;margin:13px 0}.clean-reveal-copy>.wipe-sub{font-size:12px;line-height:1.5}.pressure-clean-message .ws1{right:8%;top:8%;font-size:48px}.about-after-reveal .about-copy{display:block}.about-after-reveal .about-copy>.about-lead{margin-top:22px}}

@media(prefers-reduced-motion:reduce){.storm-atmosphere,.rain-cloud{display:none}}
