/* Match the original 2500x120 and 625x120 advertising slots. */
.individual-promo{--ip-ink:var(--cp-text);--ip-paper:var(--cp-bg);position:relative;display:block;container-type:inline-size;isolation:isolate;width:100%;aspect-ratio:2500/120;overflow:hidden;border-radius:20px;background:radial-gradient(ellipse at 48% 90%,color-mix(in srgb,var(--cp-teal) 18%,transparent),transparent 55%),linear-gradient(100deg,var(--cp-bg),color-mix(in srgb,var(--cp-teal) 7%,var(--cp-bg)));color:var(--ip-ink);text-decoration:none!important;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--cp-teal) 25%,transparent)}
.individual-promo__copy{position:absolute;left:2%;top:0;height:100%;display:flex;align-items:center;gap:1.6cqw;z-index:2}
.individual-promo__world{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.individual-promo__world svg{display:block;width:100%;height:100%}
.individual-promo__sunlight{position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse at 70% 10%,color-mix(in srgb,var(--cp-orange) 30%,transparent),transparent 65%);animation:ip-sunset 16s ease infinite}
/* Text stays on quiet surfaces while the landscape runs edge to edge. */
.individual-promo__copy::before,.individual-promo__price::before{content:"";position:absolute;inset:0 -1.5cqw;z-index:-1;background:linear-gradient(90deg,transparent,var(--ip-paper) 12%,var(--ip-paper) 88%,transparent);opacity:.85}
.individual-promo__price{z-index:2}
.ip-survey{animation:ip-survey 16s ease infinite}
.ip-route{stroke-dasharray:1;animation:ip-route 16s ease infinite}
.ip-horizon{animation:ip-horizon 16s ease infinite}
.ip-clouds{animation:ip-clouds 16s linear infinite}
.ip-avenue{transform-origin:center bottom;animation:ip-avenue 16s ease infinite}
.ip-road{animation:ip-avenue 16s ease infinite}
.ip-car{animation:ip-drive 16s cubic-bezier(.25,.1,.25,1) infinite}
.ip-headlights{animation:ip-light 16s ease infinite}
.ip-birds{animation:ip-birds 16s linear infinite}
@keyframes ip-survey{0%,8%{opacity:.12}20%,39%{opacity:.4}55%,94%{opacity:0}100%{opacity:.12}}
@keyframes ip-route{0%{stroke-dashoffset:1}30%,100%{stroke-dashoffset:0}}
@keyframes ip-horizon{0%,38%{opacity:.15;transform:translateX(-25px)}66%,94%{opacity:1;transform:translateX(0)}100%{opacity:.15;transform:translateX(0)}}
@keyframes ip-clouds{0%{opacity:0;transform:translateX(-40px)}50%{opacity:.6}90%{opacity:.6}100%{opacity:0;transform:translateX(40px)}}
@keyframes ip-avenue{0%,58%{opacity:0;transform:scaleY(.3)}75%,94%{opacity:.55;transform:scaleY(1)}100%{opacity:0;transform:scaleY(1)}}
@keyframes ip-drive{0%,73%{opacity:0;transform:translateX(-30px)}74%{opacity:1;transform:translateX(-30px)}80%,96%{opacity:1;transform:translateX(45px)}100%{opacity:0;transform:translateX(45px)}}
@keyframes ip-birds{0%,60%{opacity:0;transform:translate(710px,25px)}65%{opacity:.6}90%{opacity:.6}100%{opacity:0;transform:translate(1120px,10px)}}
@keyframes ip-sunset{0%,67%{opacity:0}85%,94%{opacity:1}100%{opacity:0}}
.individual-promo__copy strong{display:block;font-size:1.85cqw;line-height:1.03;letter-spacing:-.025em;font-weight:700;text-rendering:optimizeLegibility;color:var(--ip-ink)!important}
.individual-promo__tagline{font-size:.76cqw;max-width:6cqw;line-height:1.3;color:var(--ip-ink)!important;opacity:.75}
.individual-promo__cinema{position:absolute;left:25%;top:0;width:39%;height:100%;overflow:hidden;color:var(--ip-ink)}
.individual-promo__cinema svg{width:100%;height:100%;overflow:visible}
/* Reuse the page palette for the illustration in both themes. */
.individual-promo svg [fill="#f1e6d2"]{fill:var(--cp-bg)}
.individual-promo svg [fill="#b4cabe"],.individual-promo svg [fill="#83a890"],.individual-promo svg [fill="#78968a"]{fill:var(--cp-teal-soft)}
.individual-promo svg [fill="#416558"],.individual-promo svg [fill="#5e8b71"],.individual-promo svg [fill="#547b67"],.individual-promo svg [fill="#45665b"]{fill:var(--cp-teal-dark)}
.individual-promo svg [fill="#294d4b"]{fill:var(--cp-text)}
.individual-promo svg [fill="#bf946a"],.individual-promo svg [fill="#cb965b"],.individual-promo svg [fill="#e2ab64"],.individual-promo svg [fill="#e6bb77"],.individual-promo svg [fill="#dfb87e"]{fill:var(--cp-orange)}
.individual-promo svg [fill="#c7a77d"]{fill:var(--cp-orange-soft)}
.individual-promo svg [stroke="#8b694b"],.individual-promo svg [stroke="#987e5b"],.individual-promo svg [stroke="#836a47"],.individual-promo svg [stroke="#b07a42"]{stroke:var(--cp-orange-dark)}
.individual-promo svg [stroke="#b2c8be"],.individual-promo svg [stroke="#e7d8bd"]{stroke:var(--cp-teal-soft)}
.individual-promo__story{position:absolute;left:62%;top:0;width:21%;height:100%;display:grid;align-items:center;font-size:1.08cqw;line-height:1.25;font-weight:500;color:var(--ip-ink)!important}
.individual-promo__story b{display:block;font-size:1.32cqw;line-height:1.2;letter-spacing:-.015em;font-weight:700;color:inherit!important}
.individual-promo__story>span{grid-area:1/1;opacity:0;animation:ip-caption 16s linear infinite}
.individual-promo__story>span:nth-child(2){animation-delay:4s}.individual-promo__story>span:nth-child(3){animation-delay:8s}.individual-promo__story>span:nth-child(4){animation-delay:12s}
.individual-promo__price{position:absolute;right:2.5%;top:0;height:100%;display:flex;align-items:center;gap:.4cqw;color:var(--ip-ink)!important;font-size:.9cqw;white-space:nowrap}
.individual-promo__price strong{font-size:2.2cqw;font-weight:700;letter-spacing:-.025em;font-variant-numeric:lining-nums tabular-nums;color:inherit!important}
.individual-promo__price>span{color:inherit!important}
.individual-promo:focus-visible{outline:3px solid var(--cp-teal-dark);outline-offset:4px}
.individual-promo__timeline{position:absolute;bottom:0;left:0;height:2px;width:100%;background:linear-gradient(90deg,transparent,var(--cp-teal),var(--cp-orange));transform-origin:left;animation:ip-progress 16s linear infinite}
.ip-land{animation:ip-land 16s ease infinite}.ip-land .ip-draw{stroke-dasharray:1;animation:ip-trace-land 16s ease infinite}
.ip-plan{animation:ip-plan 16s ease infinite;transform-origin:200px 50px}
.ip-outline{stroke-dasharray:1;animation:ip-outline 16s linear infinite}
.ip-partition{stroke-dasharray:1}
.ip-partition--one{animation:ip-partition-one 16s linear infinite}
.ip-partition--two{animation:ip-partition-two 16s linear infinite}
.ip-partition--three{animation:ip-partition-three 16s linear infinite}
.ip-partition--four{animation:ip-partition-four 16s linear infinite}
.ip-furniture,.ip-dimensions{animation:ip-details 16s ease infinite}
@keyframes ip-outline{0%,24%{stroke-dashoffset:1}35%,100%{stroke-dashoffset:0}}
@keyframes ip-partition-one{0%,36%{stroke-dashoffset:1}38%,100%{stroke-dashoffset:0}}
@keyframes ip-partition-two{0%,38.5%{stroke-dashoffset:1}40.5%,100%{stroke-dashoffset:0}}
@keyframes ip-partition-three{0%,41%{stroke-dashoffset:1}42%,100%{stroke-dashoffset:0}}
@keyframes ip-partition-four{0%,42.5%{stroke-dashoffset:1}44%,100%{stroke-dashoffset:0}}
@keyframes ip-details{0%,40%{opacity:0}44%,100%{opacity:1}}
.ip-house{animation:ip-house 16s ease infinite}.ip-walls{animation:ip-walls 16s cubic-bezier(.22,.61,.36,1) infinite;transform-origin:200px 84px}
.ip-roof{animation:ip-roof 16s cubic-bezier(.22,.61,.36,1) infinite}.ip-garden{animation:ip-garden 16s ease infinite;transform-origin:200px 84px}
.ip-light{animation:ip-light 16s ease infinite}.ip-dossier{animation:ip-dossier 16s ease infinite}
.ip-pencil{animation:ip-pencil 16s linear infinite}
.ip-terrace{transform-origin:200px 84px;animation:ip-terrace 16s ease infinite}
.ip-sheets{animation:ip-sheets 16s ease infinite}
.ip-foundation-shadow{animation:ip-shadow 16s ease infinite;transform-origin:205px 87px}
.ip-structure{stroke-dasharray:1;animation:ip-structure 16s ease infinite}
.ip-glazing{animation:ip-glazing 16s cubic-bezier(.22,.61,.36,1) infinite}
.ip-delivery{animation:ip-delivery 20s ease-in-out infinite}
.ip-delivery-load{animation:ip-unload 20s ease-in-out infinite}
.ip-crane{animation:ip-crane 20s ease-in-out infinite}
.ip-crane-boom{transform-origin:325px 80px;animation:ip-crane-boom 20s cubic-bezier(.22,.61,.36,1) infinite}
.ip-jib-inner{animation:ip-jib-inner 24s ease-in-out infinite}
.ip-crane-legs{animation:ip-crane-legs 20s ease infinite}
@keyframes ip-delivery{0%,39%{opacity:0;transform:translateX(-100px)}41%{opacity:1;transform:translateX(-100px)}47%,55%{opacity:1;transform:translateX(0)}63%,100%{opacity:0;transform:translateX(-110px)}}
@keyframes ip-unload{0%,52.99%{opacity:1}53%,100%{opacity:0}}
@keyframes ip-crane{0%,43%{opacity:0;transform:translateX(100px)}45%{opacity:1;transform:translateX(100px)}49%,74%{opacity:1;transform:translateX(0)}78%,100%{opacity:0;transform:translateX(110px)}}
@keyframes ip-crane-boom{0%,49%{transform:scaleX(.15) scaleY(.3)}51%,67%{transform:scale(1)}72%,100%{transform:scaleX(.15) scaleY(.3)}}
/* The tip stays seven SVG units beyond the hook during its horizontal travel. */
@keyframes ip-jib-inner{0%,55%{transform:translateX(0)}60%,100%{transform:translateX(114px)}}
@keyframes ip-crane-legs{0%,49%{opacity:0}51%,69%{opacity:1}72%,100%{opacity:0}}
@keyframes ip-shadow{0%,46%{opacity:0;transform:scaleX(.4)}60%,94%{opacity:.12;transform:scaleX(1)}100%{opacity:0;transform:scaleX(1)}}
@keyframes ip-structure{0%,46%{opacity:0;stroke-dashoffset:1}48%{opacity:.65;stroke-dashoffset:1}58%{opacity:.65;stroke-dashoffset:0}66%,100%{opacity:0;stroke-dashoffset:0}}
@keyframes ip-glazing{0%,68%{opacity:0;transform:translateY(4px)}73%,94%{opacity:1;transform:translateY(0)}100%{opacity:0;transform:translateY(0)}}
@keyframes ip-pencil{0%,23%{opacity:0;transform:translate(126px,77px)}24%{opacity:1;transform:translate(126px,77px)}25.46%{transform:translate(126px,24px)}29.5%{transform:translate(272px,24px)}30.96%{transform:translate(272px,77px)}35%{transform:translate(126px,77px)}36%{transform:translate(181px,24px)}38%{transform:translate(181px,77px)}38.5%{transform:translate(226px,24px)}39.26%{transform:translate(226px,52px)}40.5%{transform:translate(272px,52px)}41%{transform:translate(126px,51px)}42%{transform:translate(181px,51px)}42.5%{transform:translate(181px,59px)}43.57%{transform:translate(226px,59px)}44%{opacity:1;transform:translate(226px,77px)}47%,100%{opacity:0;transform:translate(300px,35px)}}
@keyframes ip-terrace{0%,62%{opacity:0;transform:scaleX(.3)}72%,94%{opacity:1;transform:scaleX(1)}100%{opacity:0;transform:scaleX(1)}}
@keyframes ip-sheets{0%,74%{opacity:0;transform:translate(16px,8px) rotate(8deg)}82%,94%{opacity:1;transform:translate(0,0) rotate(0)}100%{opacity:0;transform:translate(0,-5px)}}
@keyframes ip-caption{0%,2%{opacity:0;transform:translateY(5px)}5%,21%{opacity:1;transform:translateY(0)}24%,100%{opacity:0;transform:translateY(-5px)}}
@keyframes ip-land{0%,3%{opacity:.2}9%,23%{opacity:1}30%,43%{opacity:.3}51%,95%{opacity:0}100%{opacity:.2}}
@keyframes ip-trace-land{0%{stroke-dashoffset:1}20%,94%{stroke-dashoffset:0}100%{stroke-dashoffset:1}}
@keyframes ip-plan{0%,22%{opacity:0;transform:scale(1)}24%,44%{opacity:1;transform:scale(1)}50%{opacity:.8;transform:translateY(32px) scaleY(.08)}54%,100%{opacity:0;transform:translateY(32px) scaleY(.08)}}
@keyframes ip-trace-plan{0%,24%{stroke-dashoffset:1}42%,100%{stroke-dashoffset:0}}
@keyframes ip-house{0%,44%{opacity:0}50%,96%{opacity:1}100%{opacity:0}}
@keyframes ip-walls{0%,49%{clip-path:inset(100% 0 0 0);transform:translateY(5px)}61%,100%{clip-path:inset(0);transform:translateY(0)}}
@keyframes ip-roof{0%,63%{opacity:0;transform:translateY(-5px)}65%{opacity:1;transform:translateY(-5px)}69%,94%{opacity:1;transform:translateY(0)}100%{opacity:0;transform:translateY(0)}}
@keyframes ip-garden{0%,66%{opacity:0;transform:scaleY(.3)}77%,94%{opacity:1;transform:scaleY(1)}100%{opacity:0;transform:scaleY(1)}}
@keyframes ip-light{0%,73%{opacity:0}80%,96%{opacity:.75}100%{opacity:0}}
@keyframes ip-dossier{0%,77%{opacity:0;transform:translateX(-10px)}84%,94%{opacity:1;transform:translateX(0)}100%{opacity:0;transform:translateX(5px)}}
@keyframes ip-progress{0%{transform:scaleX(0);opacity:.6}94%{transform:scaleX(1);opacity:.6}100%{transform:scaleX(1);opacity:0}}
body.theme-premium .individual-promo{--ip-paper:var(--cp-panel);background:radial-gradient(ellipse at 48% 90%,color-mix(in srgb,var(--cp-teal) 12%,transparent),transparent 55%),linear-gradient(100deg,var(--cp-panel),var(--cp-bg));box-shadow:inset 0 0 0 1px var(--cp-line)}
/* A shared timeline keeps drawing, construction and the captions synchronized. */
.ip-hoist{animation:ip-hoist 24s ease-in-out infinite}
.ip-hoist-line{transform-origin:176px 11px;animation:ip-hoist-line 24s ease-in-out infinite}
.ip-hook{animation:ip-hook 24s ease-in-out infinite}
.ip-lifted-load{animation:ip-payload 24s ease-in-out infinite}
.ip-load-sway{transform-origin:176px 50px;animation:ip-sway 24s ease-in-out infinite}
.ip-slab{animation:ip-slab 24s ease infinite}
.ip-return-drawing{transform-origin:200px 84px;animation:ip-return 24s ease-in-out infinite}
.ip-wheel{transform-box:fill-box;transform-origin:center}
.ip-wheel--car{animation:ip-wheel-car 24s cubic-bezier(.25,.1,.25,1) infinite}
.ip-wheel--truck{animation:ip-wheel-truck 24s ease-in-out infinite}
.ip-wheel--crane{animation:ip-wheel-crane 24s ease-in-out infinite}
/* Hook and load use the same lift distances; 39 is the cable's SVG length. */
@keyframes ip-hoist{0%,50%{opacity:0;transform:translateX(-109px)}51%,55%{opacity:1;transform:translateX(-109px)}60%,66%{opacity:1;transform:translateX(5px)}67%,100%{opacity:0;transform:translateX(5px)}}
@keyframes ip-hoist-line{0%,51%{transform:scaleY(.2)}53%{transform:scaleY(1)}55%,60%{transform:scaleY(.2)}62%,63%{transform:scaleY(.589744)}65%,100%{transform:scaleY(.05)}}
@keyframes ip-hook{0%,51%{transform:translateY(-31.2px)}53%{transform:translateY(0)}55%,60%{transform:translateY(-31.2px)}62%,63%{transform:translateY(-16px)}65%,100%{transform:translateY(-37.05px)}}
@keyframes ip-payload{0%,52.99%{opacity:0;transform:translateY(0)}53%{opacity:1;transform:translateY(0)}55%,60%{opacity:1;transform:translateY(-31.2px)}62%,62.8%{opacity:1;transform:translateY(-16px)}63.5%,100%{opacity:0;transform:translateY(-16px)}}
@keyframes ip-sway{0%,55%{transform:rotate(0)}56%{transform:rotate(-3deg)}58%{transform:rotate(2deg)}60%{transform:rotate(-.7deg)}61%,100%{transform:rotate(0)}}
@keyframes ip-slab{0%,62%{opacity:0}63%,100%{opacity:1}}
@keyframes ip-return{0%{opacity:.5;transform:scaleY(.6)}8%,95%{opacity:0;transform:scaleY(1)}98%{opacity:.8;transform:scaleY(1)}100%{opacity:.5;transform:scaleY(.6)}}
@keyframes ip-wheel-car{0%,74%{transform:rotate(0)}80%,100%{transform:rotate(1080deg)}}
@keyframes ip-wheel-truck{0%,41%{transform:rotate(0)}47%,55%{transform:rotate(1146deg)}63%,100%{transform:rotate(-115deg)}}
@keyframes ip-wheel-crane{0%,45%{transform:rotate(0)}49%,74%{transform:rotate(-1146deg)}78%,100%{transform:rotate(115deg)}}
.individual-promo [class^="ip-"],.individual-promo__story>span,.individual-promo__sunlight,.individual-promo__timeline{animation-duration:24s}
.individual-promo__story>span:nth-child(2){animation-delay:6s}
.individual-promo__story>span:nth-child(3){animation-delay:12s}
.individual-promo__story>span:nth-child(4){animation-delay:18s}
.individual-promo-shell{position:relative;min-width:0}
.individual-promo-shell .individual-promo *{animation-play-state:paused!important}
.individual-promo-shell.is-playing .individual-promo *{animation-play-state:running!important}
.individual-promo__world{opacity:.6}
.ip-personal-plan{animation:ip-personal-plan 24s ease infinite;transform-origin:200px 77px}
.ip-moving-partition{animation:ip-moving-partition 24s ease-in-out infinite}
.ip-extra-terrace{stroke-dasharray:1;animation:ip-extra-terrace 24s ease infinite}
.ip-room-area{transform-origin:127px 52px;animation:ip-room-area 26s ease-in-out infinite}
.ip-plan-window{transform-origin:137px 77px;animation:ip-plan-window 26s ease-in-out infinite}
.ip-front-window{transform-origin:137px 64px;animation:ip-front-window 26s ease-in-out infinite}
.ip-window-highlight{animation:ip-window-highlight 26s ease infinite}
@keyframes ip-room-area{0%,31%{transform:scaleX(.76)}37%,100%{transform:scaleX(1)}}
@keyframes ip-plan-window{0%,33%{opacity:0;transform:scaleX(.6)}35%{opacity:1;transform:scaleX(.6)}40%,100%{opacity:1;transform:scaleX(1)}}
@keyframes ip-front-window{0%,70%{transform:scaleX(.6)}77%,100%{transform:scaleX(1)}}
@keyframes ip-window-highlight{0%,70%{opacity:0}73%,78%{opacity:1}83%,100%{opacity:0}}
@keyframes ip-personal-plan{0%,27%{opacity:0}29%,43%{opacity:1;transform:scaleY(1)}50%,100%{opacity:0;transform:translateY(6px) scaleY(.08)}}
@keyframes ip-moving-partition{0%,31%{transform:translateX(0)}37%,100%{transform:translateX(17px)}}
@keyframes ip-extra-terrace{0%,36%{stroke-dashoffset:1}42%,100%{stroke-dashoffset:0}}
/* Start drawing promptly, leaving the middle of the story for customization. */
.individual-promo .ip-plan,.individual-promo .ip-outline,.individual-promo .ip-partition,.individual-promo .ip-furniture,.individual-promo .ip-dimensions,.individual-promo .ip-pencil{animation-delay:-5s}
.individual-promo-shell:not(.is-ready) .individual-promo *{animation:none!important}
.individual-promo-shell:not(.is-ready) :is(.ip-land,.ip-plan,.ip-personal-plan,.ip-pencil,.ip-structure,.ip-delivery,.ip-crane,.ip-hoist,.ip-return-drawing,.individual-promo__timeline){display:none}
.individual-promo-shell:not(.is-ready) .individual-promo__story>span{opacity:0}
.individual-promo-shell:not(.is-ready) .individual-promo__story>span:last-child{opacity:1}
.individual-promo-shell:not(.is-ready) .ip-car{transform:translateX(45px)}
.individual-promo-shell:not(.is-ready) .ip-foundation-shadow{opacity:.12}
.individual-promo [class^="ip-"],.individual-promo__story>span,.individual-promo__sunlight,.individual-promo__timeline{animation-duration:26s}
.individual-promo__story>span:nth-child(2){animation-delay:6.5s}
.individual-promo__story>span:nth-child(3){animation-delay:13s}
.individual-promo__story>span:nth-child(4){animation-delay:19.5s}
@media(max-width:760px){
 .individual-promo{aspect-ratio:625/120;border-radius:16px}
 .individual-promo__copy{left:4%;height:auto;top:13%;display:block}
 .individual-promo__copy strong{font-size:4.65cqw;line-height:1.05}
 .individual-promo__tagline,.individual-promo__story{display:none}
 .individual-promo__cinema{left:51%;width:49%;height:100%}
 .individual-promo .ip-clouds,.individual-promo .ip-birds,.individual-promo .ip-avenue,.individual-promo .ip-furniture,.individual-promo .ip-dimensions{display:none}
 .individual-promo .ip-delivery,.individual-promo .ip-crane,.individual-promo .ip-hoist,.individual-promo .ip-car,.individual-promo .ip-garden{display:none}
 .individual-promo__world{opacity:.3}
 .individual-promo__price{left:4%;right:auto;top:auto;bottom:8%;height:auto;font-size:2.8cqw;gap:1cqw;line-height:1}
 .individual-promo__price strong{font-size:4.5cqw}
 .individual-promo__copy::before,.individual-promo__price::before{inset:-2px -2cqw}
}
@media(prefers-reduced-motion:reduce){
 .individual-promo *{animation:none!important;transition:none!important}
 .individual-promo .ip-land,.individual-promo .ip-plan,.individual-promo .ip-pencil,.individual-promo__timeline,.individual-promo__story>span{opacity:0}
 .individual-promo .ip-house,.individual-promo .ip-walls,.individual-promo .ip-roof,.individual-promo .ip-garden,.individual-promo .ip-dossier,.individual-promo__story>span:last-child{opacity:1;transform:none}
 .individual-promo .ip-light{opacity:.6}
 .individual-promo .ip-survey,.individual-promo .ip-birds{display:none}
 .individual-promo .ip-car{transform:translateX(45px)}
 .individual-promo__sunlight{opacity:.35}
 .individual-promo .ip-structure{display:none}
 .individual-promo .ip-foundation-shadow{opacity:.12}
 .individual-promo .ip-delivery,.individual-promo .ip-crane,.individual-promo .ip-hoist,.individual-promo .ip-return-drawing{display:none}
 .individual-promo .ip-personal-plan{display:none}
}
