:root{--navy:#17324d;--rose:#bd907e;--paper:#f8f9fa;--ink:#20262e;--line:#dfe4e8}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:100px}body{margin:0;background:var(--paper);color:var(--navy);font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;font-size:16px;line-height:1.6}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button,a,input,textarea,select,summary{ -webkit-tap-highlight-color:transparent}button{cursor:pointer}a:focus-visible,button:focus-visible,summary:focus-visible{outline:3px solid var(--rose);outline-offset:5px}header{height:98px;display:flex;align-items:center;justify-content:space-between;padding:0 6%;border-bottom:1px solid var(--line);background:var(--paper)}.brand{font-size:30px;letter-spacing:-1.4px;font-weight:850}.brand span{color:var(--rose)}nav{display:flex;gap:36px;font-size:15px;font-weight:600}nav a:hover{color:#805c4d}.button{display:inline-flex;justify-content:center;align-items:center;border:0;background:var(--rose);color:var(--navy);font-weight:750;border-radius:12px;padding:17px 27px;min-height:56px;transition:transform .2s,background .2s}.button:hover{background:#cba18f;transform:translateY(-2px)}.small{padding:11px 23px;min-height:46px}.hero{max-width:1600px;margin:auto;padding:64px 6% 70px;display:grid;grid-template-columns:1.04fr 1fr;gap:7%;align-items:center}.eyebrow{font-size:12px;letter-spacing:2.3px;font-weight:750;margin:0 0 24px}.hero h1{font-size:clamp(64px,7.9vw,120px);line-height:.99;letter-spacing:-6px;margin:0 0 28px;font-weight:800}.hero h1 span,h2 span{color:#a67561}.intro{font-size:19px;max-width:435px;margin-bottom:32px;color:#536270;line-height:1.75}.quiet-link{display:block;font-size:14px;font-weight:650;margin-top:18px;text-decoration:underline;text-underline-offset:5px}.hero-note{display:flex;gap:17px;align-items:center;margin-top:40px;font-size:13px}.hero-note>span{border:1px solid #c9d1d9;padding:10px 12px;border-radius:50%;font-size:12px}.hero-note p{margin:0;color:#60707e}.hero-note strong{font-weight:600;color:var(--navy)}.hero-art{background:var(--navy);border-radius:200px 200px 26px 26px;padding:60px 30px 28px;position:relative;min-height:560px;color:white;display:flex;flex-direction:column;justify-content:space-between;overflow:hidden}.hero-art img{width:112%;margin-left:-6%;mix-blend-mode:normal;object-fit:contain;filter:drop-shadow(0 20px 24px #0002)}.art-caption{font-size:10px;text-align:center;letter-spacing:1.7px;color:#e0c6bb;margin-top:15px}.art-footer{display:flex;align-items:center;justify-content:space-between;font-size:14px;padding:0 8px}.round-mark{width:56px;height:56px;border-radius:50%;background:var(--rose);font-weight:800;display:grid;place-items:center;color:var(--navy);font-size:28px}.service-strip{padding:26px 6%;display:flex;justify-content:space-around;align-items:center;border-top:1px solid var(--line);border-bottom:1px solid var(--line);font-size:14px;font-weight:600;gap:18px}.service-strip i{width:5px;height:5px;background:var(--rose);border-radius:50%}.section{padding:100px 6%;max-width:1600px;margin:auto}.section-heading{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:45px;gap:50px}h2{font-size:clamp(36px,4.1vw,58px);line-height:1.12;letter-spacing:-2px;margin:0;font-weight:750}.section-heading>p{max-width:360px;color:#596877}.service-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}.service-grid article{background:white;border:1px solid var(--line);border-radius:22px;padding:24px 28px 30px;box-shadow:0 12px 20px #17324d05}.service-image{height:195px;display:flex;justify-content:center}.service-image img{height:100%;max-width:100%;object-fit:contain}.number{font-size:11px;letter-spacing:1.8px;color:#8e6353;font-weight:700}h3{font-size:21px;line-height:1.3;margin:16px 0 10px;letter-spacing:-.5px}.service-grid p{font-size:15px;color:#61717e;min-height:96px}.text-button{padding:0 0 4px;border:0;border-bottom:1px solid var(--rose);background:none;color:var(--navy);font-weight:700;font-size:14px}.how{background:var(--navy);color:white;max-width:none}.how .eyebrow{color:#dab8a8}.how .section-heading>p{color:#c4d0da}.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:55px;margin-top:65px}.steps b{display:flex;align-items:center;justify-content:center;width:42px;height:42px;border:1px solid #8794a0;border-radius:50%;color:#e0bdad;font-size:16px;font-weight:500;margin-bottom:26px}.steps article{position:relative}.steps article:not(:last-child):after{content:'';height:1px;background:#ffffff25;position:absolute;top:21px;left:60px;right:-35px}.steps p{color:#c4d0da;font-size:15px;max-width:330px}.enquiry{display:grid;grid-template-columns:1fr 1.1fr;gap:12%;align-items:center}.enquiry>div>p:not(.eyebrow){max-width:350px;color:#596877;margin-top:28px}.demo-note{font-size:13px;color:#65737e;max-width:350px;border-left:2px solid var(--rose);padding-left:16px;margin-top:35px}form{padding:32px;background:white;border:1px solid var(--line);border-radius:24px;box-shadow:0 15px 40px #17324d09}.form-top{display:flex;justify-content:space-between;font-size:11px;font-weight:700;letter-spacing:1.4px;border-bottom:1px solid var(--line);padding-bottom:20px;margin-bottom:22px}.form-top span:last-child{color:#8e6353}label{display:block;font-size:14px;font-weight:600;margin-bottom:17px}input,select,textarea{display:block;width:100%;padding:12px;margin-top:7px;border:1px solid #d5dce1;border-radius:9px;background:#fff;color:var(--ink);font-size:16px}input:focus,select:focus,textarea:focus{outline:2px solid var(--rose);outline-offset:1px}textarea{resize:vertical}.field-pair{display:grid;grid-template-columns:1fr 1fr;gap:15px}form>.button{width:100%}.form-fine{text-align:center;color:#69747c;font-size:12px;margin:14px 0 0}.faq{display:grid;grid-template-columns:1fr 1.15fr;gap:10%;border-top:1px solid var(--line);padding-top:80px}details{border-bottom:1px solid var(--line);padding:22px 0}summary{cursor:pointer;font-size:17px;font-weight:650}details p{color:#61717e;font-size:15px}footer{background:var(--navy);color:#fff;padding:38px 6%;display:flex;align-items:center;gap:32px}footer .brand{font-size:26px}footer p{margin-right:auto;color:#c4d0da}footer>span{font-size:12px;color:#c4d0da}dialog{border:0;padding:40px;border-radius:24px;max-width:540px;width:calc(100% - 32px);color:var(--navy);box-shadow:0 30px 90px #0004}dialog::backdrop{background:#17324d99;backdrop-filter:blur(5px)}dialog h2{font-size:40px}.close{position:absolute;right:15px;top:10px;font-size:30px;background:none;border:0;color:var(--navy)}dialog dl{display:grid;grid-template-columns:100px 1fr;gap:12px;font-size:14px}dt{color:#677580}dd{margin:0;overflow-wrap:anywhere}dialog .button{margin-top:25px}.skip{position:fixed;top:-100px;left:10px;padding:12px;background:white;z-index:10}.skip:focus{top:10px}@media(max-width:900px){nav{gap:18px}.hero{gap:4%;padding-top:45px}.hero h1{letter-spacing:-3px}.hero-art{min-height:450px;padding:48px 20px 25px}.art-caption{font-size:8px}.section{padding:70px 5%}.enquiry{gap:6%}.service-grid{gap:14px}.service-grid article{padding:20px}.service-grid h3{min-height:54px}.service-grid p{min-height:144px}.service-image{height:155px}footer{flex-wrap:wrap}.hero-note{margin-top:28px}}@media(max-width:640px){header{height:80px;padding:0 6%}.brand{font-size:25px}nav{display:none}.small{font-size:13px;padding:10px 16px;min-height:42px}.hero{grid-template-columns:1fr;padding-top:38px;gap:35px}.hero h1{font-size:76px}.intro{font-size:17px}.hero-art{min-height:440px;max-width:420px;width:100%;margin:auto}.hero-art img{max-height:340px}.hero-note{display:none}.service-strip{font-size:11px;text-align:center;padding:18px 5%;gap:12px}.service-strip i{flex-shrink:0}.section-heading{display:block;margin-bottom:25px}.section-heading>p{margin-top:24px}.service-grid,.steps,.enquiry,.faq{grid-template-columns:1fr}.service-grid{gap:20px}.service-grid article{padding:24px}.service-image{height:220px}.service-grid h3,.service-grid p{min-height:0}.steps{gap:24px;margin-top:40px}.steps article:not(:last-child):after{display:none}.steps b{margin-bottom:12px}.enquiry{gap:34px}form{padding:23px}.faq{gap:24px}footer{gap:15px}footer .brand{width:100%}footer p{width:100%;margin:0}footer>span{font-size:11px}.eyebrow{font-size:10px}dialog{padding:30px}.field-pair{grid-template-columns:1fr}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}
.hero h1{letter-spacing:-.045em}.hero h1 span{display:inline-block;margin-left:.06em}

.legal{border-top:1px solid var(--line)}.legal-grid{display:grid;grid-template-columns:1fr 1fr;gap:28px;align-items:start}.legal-card{padding:36px;background:white;border:1px solid var(--line);border-radius:24px;scroll-margin-top:32px}.legal-card h2{font-size:32px;letter-spacing:-1px;margin:16px 0 8px}.legal-card h3{font-size:18px;margin:28px 0 8px}.legal-card p{font-size:16px;color:#536270;line-height:1.75}.legal-card .legal-status{font-size:13px;color:#806050}.legal-draft-note{border-left:2px solid var(--rose);padding-left:16px}.legal-links{display:flex;flex-direction:column;gap:8px;font-size:14px}.legal-links a{text-decoration:underline;text-underline-offset:4px}@media(max-width:760px){.legal-grid{grid-template-columns:1fr}.legal-card{padding:25px}.legal-links{width:100%;flex-direction:row;gap:24px}}

.app-download{background:var(--navy);color:white;max-width:none;display:grid;grid-template-columns:1fr 1fr;gap:9%;align-items:center}.app-download .eyebrow{color:#dab8a8}.app-download>div>p:not(.eyebrow){color:#c4d0da;max-width:450px;margin-top:24px}.download-options{display:grid;grid-template-columns:1fr 1fr;gap:18px}.store-option{border:1px solid #ffffff40;border-radius:18px;padding:26px;background:#ffffff05}.store-platform{font-size:14px;color:#c4d0da}.store-option h3{font-size:25px;margin:8px 0 22px}.store-coming{display:inline-block;color:#e2c2b3;border-top:1px solid #ffffff25;padding-top:16px;width:100%;font-size:14px;font-weight:600}.download-note{grid-column:1/-1;font-size:14px;color:#c4d0da;margin:0}@media(max-width:760px){.app-download{grid-template-columns:1fr;gap:30px}.store-option{padding:20px}.legal-links{flex-wrap:wrap}.store-option h3{font-size:22px}}

.legal-page{max-width:1000px;padding-top:50px}.back-link{display:inline-block;margin-bottom:28px;font-size:15px;font-weight:650;text-decoration:underline;text-underline-offset:5px}.legal-page .legal-card{padding:48px}.legal-page h1{font-size:clamp(34px,5vw,52px);line-height:1.15;letter-spacing:-1.5px;margin:16px 0}.legal-page .legal-card h3{margin-top:32px}@media(max-width:640px){.legal-page .legal-card{padding:25px}.legal-page{padding-top:30px}}

.badge-frame{height:90px;display:flex;align-items:center;justify-content:flex-start}.store-badge{display:block;max-width:100%;object-fit:contain}.apple-badge{width:160px}.google-badge{width:185px}.badge-credit{grid-column:1/-1;font-size:12px;line-height:1.5;color:#b5c3ce;margin:0}@media(max-width:640px){.download-options{grid-template-columns:1fr}.badge-frame{height:85px}.store-badge{max-width:190px}}

.contact-section{display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:9%;border-top:1px solid var(--line)}.contact-section>div>p:not(.eyebrow){color:#536270;max-width:450px}.contact-email{padding:32px;background:white;border:1px solid var(--line);border-radius:22px}.contact-email .email-placeholder{font-size:22px;font-weight:650;color:var(--navy);margin:14px 0 8px;overflow-wrap:anywhere}@media(max-width:640px){.contact-section{grid-template-columns:1fr;gap:28px}.contact-email{padding:24px}}

/* Words puff from the moving exhaust and settle into their original layout. */
.headline-drive{position:relative;isolation:isolate;margin-bottom:28px;--truck-width:clamp(110px,13vw,185px)}
.hero .headline-drive h1{margin-bottom:0;padding-bottom:.08em}
.hero .headline-drive .headline-word{display:inline-block;color:var(--navy);margin-left:0;transform-origin:center;will-change:transform,opacity,filter}
.hero .headline-drive .accent-word{color:#a67561;margin-left:.06em}
.headline-truck{position:absolute;z-index:2;left:0;top:50%;width:var(--truck-width);pointer-events:none;visibility:hidden}
.headline-truck svg{display:block;width:100%;overflow:visible}
.hero-animating .headline-truck{visibility:visible}
.hero-animating .truck-body{animation:truck-bounce .3s ease-in-out infinite alternate}
.hero-animating .truck-exhaust{transform-origin:60px 107px;animation:exhaust-pulse .65s ease-out infinite}
@keyframes truck-bounce{from{transform:translateY(0)}to{transform:translateY(-1px)}}
@keyframes exhaust-pulse{0%{opacity:0;transform:translateX(5px) scale(.4)}35%{opacity:.8}100%{opacity:0;transform:translateX(-18px) scale(1.5)}}
@media(prefers-reduced-motion:reduce){.headline-truck{display:none}.hero .headline-drive .headline-word{will-change:auto}}

.hero{overflow:hidden}

footer{background:var(--rose);color:var(--navy)}footer p,footer>span,footer .brand span{color:var(--navy)}footer a:focus-visible{outline-color:var(--navy)}

.download-app-icon{display:block;width:80px;height:80px;object-fit:contain;border-radius:18px;background:white;margin-bottom:20px;box-shadow:0 5px 16px #0002}

.download-app-brand{display:flex;align-items:center;gap:12px;margin-bottom:20px}.download-app-brand .download-app-icon{width:52px;height:52px;border-radius:12px;margin:0;flex-shrink:0}.download-app-brand strong{font-size:17px;letter-spacing:-.5px}.badge-frame{height:90px}.apple-badge{width:144px;height:48px}.google-badge{width:186.8px;height:72.3px;max-width:none;margin-left:-12px}@media(min-width:761px) and (max-width:1100px){.download-options{grid-template-columns:1fr}}

.headline-drive{container-type:inline-size}.hero .headline-drive h1{font-size:clamp(36px,14cqw,96px);line-height:1.05}.hero .headline-drive .accent-word{margin-left:0}

.headline-last-line{white-space:nowrap}.hero .headline-drive h1>.headline-last-line{display:inline;margin:0;color:#a67561}

/* Edge-to-edge photo fades into the exact page background. */
.hero{position:relative;isolation:isolate;max-width:none;padding:0;display:grid;grid-template-columns:1fr;gap:0;align-items:stretch;background:var(--paper)}
.hero-copy{position:relative;z-index:2;width:52%;padding:64px 0 70px 6%;pointer-events:auto}
.hero-photo{position:absolute;z-index:0;inset:0 0 0 42%;margin:0;padding:0;border:0;border-radius:0;min-height:0;overflow:hidden;background:var(--paper);pointer-events:none}
.hero-photo img{display:block;position:absolute;inset:0;width:100%;height:100%;max-height:none;object-fit:cover;object-position:left center}
.hero-photo::after{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,var(--paper) 0%,rgba(248,249,250,.92) 5%,rgba(248,249,250,.55) 12%,rgba(248,249,250,.15) 20%,rgba(248,249,250,0) 30%)}
.hero .headline-drive .accent-word,.hero .headline-drive h1>.headline-last-line{color:var(--rose)}
@media(max-width:1000px) and (min-width:761px){.hero-copy{width:54%;padding:48px 0 52px 5%}.hero-photo{left:42%}.hero .intro{max-width:90%}}
@media(max-width:760px){.hero{display:flex;flex-direction:column;gap:0;padding:0}.hero-copy{width:100%;padding:38px 6% 18px}.hero .headline-drive h1{font-size:clamp(36px,13cqw,76px)}.hero-photo{position:relative;inset:auto;width:100%;aspect-ratio:4/3;margin:0;border:0;border-radius:0}.hero-photo img{object-position:center center}.hero-photo::after{background:linear-gradient(180deg,var(--paper) 0%,rgba(248,249,250,.8) 4%,rgba(248,249,250,.25) 10%,rgba(248,249,250,0) 20%)}}
.hero-trust{font-size:14px;font-weight:650;margin:18px 0 0;color:var(--navy)}

/* Public service information pages. */
.service-detail{max-width:1200px}.service-detail-intro{display:grid;grid-template-columns:1.4fr 1fr;gap:40px;align-items:center;margin:40px 0 65px}.service-detail h1{font-size:clamp(36px,5vw,64px);line-height:1.12;letter-spacing:-1.8px;margin:0}.service-detail-intro img{width:100%;height:auto;max-height:320px;object-fit:contain}.service-detail-body{max-width:780px}.service-detail-body section{margin:0 0 45px}.service-detail-body h2{font-size:28px;letter-spacing:-.5px}.service-detail-body p{color:#536270}.service-detail-body p a{text-decoration:underline;text-underline-offset:4px}.service-detail .intro{max-width:600px}@media(max-width:700px){.service-detail-intro{grid-template-columns:1fr;gap:24px}.service-detail-intro img{max-height:200px}.service-detail{padding-top:35px}}


/* Moving-day photo cards. */
.section.team-gallery{background:transparent;max-width:none;width:100%;margin:0;padding-left:0;padding-right:0;border:0;border-radius:0;box-shadow:none;overflow:hidden}
.team-gallery .section-heading{max-width:1600px;margin:0 auto 48px;padding:0 6%}
.team-slides{display:flex;gap:28px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;padding:0 0 8px;touch-action:pan-x pan-y;overscroll-behavior-x:contain}
.team-slides::-webkit-scrollbar{display:none}
.team-slide{position:relative;flex-grow:0;flex-shrink:0;flex-basis:32%;min-width:280px;max-width:460px;aspect-ratio: .81;margin:0;border-radius:32px;overflow:hidden;scroll-snap-align:start;background:#17324d;isolation:isolate}
.team-photo{position:absolute;inset:0}
.team-photo img{display:block;width:100%;height:100%;object-fit:cover}
.team-slide:nth-child(1) img{object-position:50% 60%}
.team-slide:nth-child(2) img{object-position:61% center}
.team-slide:nth-child(3) img{object-position:48% center}
.team-slide:nth-child(4) img{object-position:50% 60%}
.team-slide:after{content:"";position:absolute;inset:0;background:linear-gradient(transparent 40%,rgba(7,20,32,.25) 65%,rgba(7,20,32,.88));z-index:1;pointer-events:none}
.team-slide figcaption{position:absolute;bottom:0;left:0;right:0;padding:26px;z-index:2;color:white}
.team-slide .number{display:none}
.team-slide h3{font-size:clamp(20px,1.8vw,28px);line-height:1.15;margin:0;color:white}
.team-slide figcaption p{font-size:14px;line-height:1.5;color:#fff;margin:12px 0 0}
.team-controls{display:flex;align-items:center;justify-content:center;gap:18px;margin:40px 0 0}
.team-controls button{min-height:44px;min-width:44px;padding:10px;border:0;background:transparent;color:#17324d;font:inherit;cursor:pointer}
.team-controls button[data-team=previous],.team-controls button[data-team=next]{font-size:26px}
.team-controls button:disabled{opacity:.25;cursor:default}
.team-controls button:focus-visible,.team-slides:focus-visible{outline:3px solid #bd907e;outline-offset:3px}
.team-counter{font-size:13px;white-space:nowrap;font-variant-numeric:tabular-nums}
.team-progress{height:3px;background:#d8d3ce;width:min(32vw,480px);border-radius:3px;overflow:hidden}
.team-progress span{display:block;width:25%;height:100%;background:#bd907e;transition:transform .3s ease}
@media(max-width:700px){.team-slide{flex-basis:82%;min-width:0;aspect-ratio:.72;border-radius:24px}.team-slides{gap:16px}.team-gallery .section-heading{margin-bottom:28px}.team-slide figcaption{padding:22px}.team-controls{gap:8px;flex-wrap:wrap;margin-top:24px}.team-progress{width:25vw}.team-controls [data-team=pause]{font-size:12px}}
@media(prefers-reduced-motion:reduce){.team-progress span{transition:none}}

/* Start the photo rail on the heading gutter, with full-width overflow. */
.team-slides{padding-left:calc(max(0px, (100% - 1600px) / 2) + 6%);scroll-padding-left:calc(max(0px, (100% - 1600px) / 2) + 6%)}

/* Full phone preview with the app recording at its native proportions. */
.app-download{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:7%}
.app-download-copy .download-options{margin-top:36px;max-width:620px}
.app-phone-preview{display:flex;justify-content:center;align-items:center;padding:16px 12px}
.app-phone{position:relative;width:min(100%,340px);padding:10px;background:#111820;border:3px solid #77818a;border-radius:46px;box-shadow:0 28px 64px #0005, inset 0 0 0 2px #303b45}
.app-phone:before,.app-phone:after{content:"";position:absolute;width:4px;background:#77818a;border-radius:3px;left:-6px;top:95px;height:42px}
.app-phone:after{top:151px;height:64px}
.app-phone video{display:block;width:100%;height:auto;aspect-ratio:384/832;object-fit:contain;border-radius:33px;background:#000}
@media(max-width:760px){.app-download{grid-template-columns:1fr;gap:36px}.app-phone{width:min(100%,310px)}.app-download-copy .download-options{max-width:none}}

/* A compact app showcase with feature notes anchoring the phone. */
.section.app-download{grid-template-columns:minmax(0,580px) minmax(0,540px);justify-content:center;gap:clamp(36px,5vw,90px);padding-top:80px;padding-bottom:80px}
.app-download-copy{min-width:0}
.app-download-copy h2{font-size:clamp(36px,3.3vw,54px)}
.app-download-copy .download-options{gap:16px;margin-top:30px}
.app-download-copy .store-option{padding:20px}
.app-phone-preview{position:relative;isolation:isolate;min-width:0;padding:28px 60px}
.app-phone-preview:before{content:"";position:absolute;width:100%;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,#bd907e30 0%,#bd907e12 55%,transparent 72%);z-index:-1;pointer-events:none}
.app-phone-preview:after{content:"";position:absolute;width:88%;aspect-ratio:1;border:1px solid #bd907e35;border-radius:50%;z-index:-1;pointer-events:none}
.app-phone{width:min(100%,310px);flex-shrink:0}
.app-feature{position:absolute;z-index:2;display:flex;align-items:center;gap:12px;padding:15px 18px;border-radius:16px;background:#f8f9fa;color:#17324d;box-shadow:0 14px 35px #0003;max-width:260px}
.app-feature>span{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:#bd907e30;color:#17324d;font-size:22px;flex-shrink:0}
.app-feature strong,.app-feature small{display:block}.app-feature strong{font-size:14px}.app-feature small{font-size:11px;color:#536270;margin-top:2px}
.app-feature-route{left:0;top:18%}.app-feature-chat{right:0;bottom:16%}
@media(min-width:761px) and (max-width:1100px){.app-download-copy .download-options{grid-template-columns:1fr 1fr}.app-download-copy .store-option{padding:14px}.app-phone-preview{padding:25px}.app-feature{padding:12px;max-width:210px}.app-feature small{display:none}}
@media(max-width:760px){.section.app-download{grid-template-columns:minmax(0,580px);gap:30px;padding-top:60px;padding-bottom:60px}.app-phone-preview{width:min(100%,460px);justify-self:center;padding:20px 45px}.app-feature{padding:12px;gap:8px}.app-feature small{font-size:10px}.app-feature-route{top:16%}.app-feature-chat{bottom:14%}}
@media(max-width:380px){.app-feature small{display:none}.app-feature strong{font-size:12px}.app-feature>span{width:26px;height:26px}.app-phone-preview{padding:20px 26px}}

/* Mask the recording indicator without shifting or cropping the video. */
.app-phone-screen{position:relative;width:100%;aspect-ratio:384/832;overflow:hidden;border-radius:33px;background:#000}
.app-phone-screen video{display:block;position:static;width:100%;height:auto;aspect-ratio:384/832;border-radius:0;max-width:none}
.app-phone-screen:after{content:"";position:absolute;left:7%;top:0.4%;width:21%;height:3.5%;background:#f8f9fa;z-index:1;pointer-events:none}

/* Progressive enhancement: content is visible when JavaScript is unavailable. */
.scroll-reveal{transition:opacity .65s ease var(--reveal-delay,0ms),transform .65s cubic-bezier(.2,.65,.3,1) var(--reveal-delay,0ms)}
.reveal-pending{opacity:0;transform:translateY(24px)}
@media(prefers-reduced-motion:reduce){.scroll-reveal,.reveal-pending{opacity:1;transform:none;transition:none}}
@media print{.reveal-pending{opacity:1;transform:none}}

/* Customer feedback supplied by SheMovesIt. */
.reviews-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}
.customer-review{margin:0;padding:30px;background:#fff;border:1px solid var(--line);border-radius:22px;box-shadow:0 10px 30px #17324d06;display:flex;flex-direction:column;min-width:0}
.review-quote-mark{font-family:Georgia,serif;font-size:66px;line-height:.8;color:var(--rose);height:48px}
.customer-review blockquote{margin:0 0 26px;flex:1}.customer-review blockquote p{margin:0;color:#465b6b;font-size:15px;line-height:1.8}
.customer-review figcaption{display:flex;align-items:center;gap:12px;font-size:14px;font-weight:700;color:var(--navy)}
.review-initials{display:grid;place-items:center;flex-shrink:0;width:42px;height:42px;border-radius:50%;background:#bd907e26;color:var(--navy);font-size:12px;letter-spacing:1px}
@media(max-width:1000px){.reviews-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:640px){.reviews-grid{grid-template-columns:1fr;gap:16px}.customer-review{padding:24px}}

/* Local hero map concept. */
.hero-map-demo{position:absolute;inset:0 0 0 46%;overflow:hidden;background:#edf0eb;color:#17324d}
.hero-map-demo>svg{width:100%;height:100%;object-fit:cover;display:block}
.hero-map-demo:after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,var(--paper),transparent 15%)}
.map-demo-form{position:absolute;left:12%;bottom:11%;width:min(320px,76%);padding:22px;background:#fffffff2;border:1px solid #fff;border-radius:18px;box-shadow:0 16px 44px #17324d22;z-index:1}
.demo-eyebrow{font-size:10px;font-weight:750;letter-spacing:2px;color:#946d5d}.demo-address{display:flex;gap:12px;align-items:center;margin-top:16px}.demo-address b{border-radius:50%;width:28px;height:28px;background:#17324d;color:white;display:grid;place-items:center;font-size:12px}.demo-address:nth-of-type(2) b{background:#bd907e}.demo-address small{display:block;color:#677780;font-size:11px}.demo-address span{display:block;font-size:14px;min-height:23px}.map-demo-form p{margin:16px 0 0;border-top:1px solid #dfe4e8;padding-top:12px;font-size:12px;color:#61717e}.demo-disclaimer{position:absolute;bottom:12px;left:15%;font-size:10px;color:#66756d}.demo-toggle{position:absolute;right:14px;bottom:10px;z-index:2;border:0;border-radius:16px;background:white;padding:7px 12px;font-size:11px;color:#17324d}.demo-route{stroke-dasharray:1;stroke-dashoffset:0}.hero-map-demo.is-running .demo-pin{opacity:0}.hero-map-demo.is-running .demo-pin.is-visible{opacity:1;transition:opacity .4s}.hero-map-demo.is-running .demo-route{stroke-dashoffset:1}.hero-map-demo.is-running .demo-route.is-visible{stroke-dashoffset:0;transition:stroke-dashoffset 2s ease}
@media(max-width:760px){.hero-map-demo{position:relative;inset:auto;width:100%;height:580px}.hero-map-demo:after{background:linear-gradient(var(--paper),transparent 12%)}.map-demo-form{left:6%;bottom:10%;padding:18px;width:280px}.demo-disclaimer{left:6%}}

/* Keep the map and its pins above the address demo, never behind it. */
.hero-map-demo>svg{position:absolute;inset:0 0 auto;height:calc(100% - 250px);width:100%}
.hero-map-demo .map-demo-form{bottom:42px;left:50%;transform:translateX(-50%);width:min(360px,84%);padding:18px 22px}
.hero .headline-drive .headline-word{will-change:auto}
@media(max-width:760px){.hero-map-demo{height:620px}.hero-map-demo .map-demo-form{left:50%;bottom:42px;width:min(360px,88%)}}

/* Full-height map behind the floating card; route stays in the upper half. */
.hero-map-demo>svg{position:absolute;inset:0;width:100%;height:100%}
.hero-map-demo .map-demo-form{z-index:2;bottom:42px}

/* Layered route and raised location pins for the local map concept. */
.hero-map-demo .demo-route{filter:drop-shadow(0 2px 2px #17324d30)}
.hero-map-demo .route-halo{filter:none}
.hero-map-demo .demo-pin{filter:drop-shadow(0 4px 4px #17324d35)}

.demo-distance{position:absolute;left:57%;top:11%;transform:translateX(-50%);z-index:2;padding:9px 16px;background:white;color:var(--navy);border:1px solid #dfe4e8;border-radius:12px;box-shadow:0 5px 18px #17324d20;font-size:17px;font-weight:750;white-space:nowrap;pointer-events:none}
.demo-distance small{font-size:10px;font-weight:500;color:#61717e;margin-left:4px}
.hero-map-demo.is-running .demo-distance{opacity:0}
.hero-map-demo.is-running .demo-distance.is-visible{opacity:1;transition:opacity .3s ease}

/* Supplied map fills the hero; card sits away from the northbound route. */
.hero-map-demo .map-demo-form{left:auto;right:3%;transform:none;bottom:25px;width:min(280px,43%);padding:16px}
.hero-map-demo .demo-distance{left:48%;top:30%}
@media(max-width:760px){.hero-map-demo{height:720px}.hero-map-demo>svg{height:calc(100% - 210px)}.hero-map-demo .map-demo-form{left:6%;right:6%;bottom:20px;width:auto}.hero-map-demo .demo-distance{left:48%;top:22%}}

.demo-address>div{flex:1;min-width:0;padding:5px 7px;border:1px solid transparent;border-radius:6px}
.demo-address.demo-active>div{border-color:var(--rose);background:#fff}
.demo-suggestion{margin-top:10px;padding:12px;background:white;border:1px solid #dfe4e8;border-radius:8px;box-shadow:0 6px 18px #17324d16;font-size:12px;color:#17324d}
.demo-suggestion[hidden]{display:none}

/* Match route drawing to the faster hero timeline. */
.hero-map-demo.is-running .demo-route.is-visible{transition-duration:1s}

/* Scroll-driven service cards: fanned stack to their normal three columns. */
.service-grid{position:relative}
.service-grid.service-fan>article{position:relative;transform:translate(var(--fan-x,0px),var(--fan-y,0px)) rotate(var(--fan-angle,0deg));transform-origin:50% 85%;transition:none;box-shadow:0 16px 34px #17324d18}
.service-grid.service-fan>article:nth-child(1){z-index:1}
.service-grid.service-fan>article:nth-child(2){z-index:3}
.service-grid.service-fan>article:nth-child(3){z-index:2}
@media(prefers-reduced-motion:reduce){.service-grid.service-fan>article{transform:none}}

/* Vertical scrolling carries the photo rail through a pinned section. */
.team-scroll-stage{position:relative}
.team-scroll-stage.is-scroll-driven>.team-gallery{position:sticky;top:0;height:100vh;padding-top:34px;padding-bottom:24px;display:flex;flex-direction:column;justify-content:center}
.is-scroll-driven .team-gallery .section-heading{width:100%;margin-bottom:26px}
.is-scroll-driven .team-gallery .section-heading h2{font-size:clamp(32px,3.5vw,52px)}
.is-scroll-driven .team-gallery .eyebrow{margin-bottom:12px}
.is-scroll-driven .team-slides{flex-shrink:0;scroll-snap-type:none;scroll-behavior:auto;overflow-x:hidden}
.is-scroll-driven .team-slide{height:clamp(240px,54vh,570px);flex-basis:auto;width:auto;min-width:0;max-width:none;aspect-ratio:.81}
.is-scroll-driven .team-controls{margin-top:24px;flex-shrink:0}
@media(prefers-reduced-motion:reduce){.team-scroll-stage{height:auto!important}}

/* Once completed, retain the rail layout without capturing another scroll pass. */
.team-scroll-stage.is-scroll-complete>.team-gallery{position:relative}
.is-scroll-complete .team-slides{overflow-x:auto;scroll-snap-type:x mandatory}

/* Coordinated illustrations for the three moving steps. */
.steps .step-illustration{display:block;width:228px;max-width:100%;height:150px;object-fit:contain;margin:0 0 28px}
.steps article:not(:last-child):after{top:199px}
@media(max-width:640px){.steps .step-illustration{width:190px;height:125px;margin:0 0 18px}.steps{gap:36px}}

/* Local full-width hero experiment: map behind the copy. */
.hero{min-height:740px}
.hero-map-demo{position:absolute;inset:0;width:100%;height:100%;z-index:0;pointer-events:none}
.hero-map-demo>svg{inset:0;width:100%;height:100%}
.hero-map-demo:after{background:linear-gradient(90deg,rgba(248,249,250,.94) 0%,rgba(248,249,250,.88) 26%,rgba(248,249,250,.55) 42%,rgba(248,249,250,.08) 60%,transparent 75%)}
.hero-copy{width:45%;padding:64px 0 70px 6%;align-self:center;z-index:3}
.hero-map-demo .map-demo-form{right:6%;bottom:32px;width:300px;max-width:32%}
@media(max-width:1000px) and (min-width:761px){.hero-copy{width:46%;padding-left:5%}.hero-map-demo .map-demo-form{right:4%;width:260px}}
@media(max-width:760px){
 .hero{display:block;min-height:1040px}
 .hero-copy{width:100%;padding:38px 6% 450px}
 .hero-map-demo{position:absolute;inset:0;height:100%;width:100%}
 .hero-map-demo>svg{inset:0;height:100%;width:100%}
 .hero-map-demo:after{background:linear-gradient(180deg,rgba(248,249,250,.95),rgba(248,249,250,.88) 36%,rgba(248,249,250,.35) 58%,transparent 75%)}
 .hero-map-demo .map-demo-form{left:6%;right:6%;bottom:24px;width:auto;max-width:none}
 .hero-map-demo .demo-distance{top:62%;left:65%}
}

/* Keep the map tall enough that cover-cropping cannot cut off either route pin. */
@media(min-width:761px){
 .hero{min-height:max(740px,52.991vw)}
 .hero-map-demo>svg{height:100%;width:100%}
}
@media(max-width:760px){
 .hero-copy{padding-bottom:740px}
 .hero-map-demo>svg{top:auto;bottom:210px;height:510px;width:100%}
 .hero-map-demo{background:#edf0eb url('assets/hero_street_view.png') center/cover no-repeat}
 .hero-map-demo .demo-distance{top:auto;bottom:560px;left:65%}
}

.hero-map-attribution{position:absolute;right:8px;bottom:4px;z-index:4;background:#ffffffed;padding:2px 7px;font-size:10px;pointer-events:auto;color:#17324d}
.hero-map-attribution a{text-decoration:underline}
.hero-map-demo .demo-distance{left:64%;top:32%}
@media(min-width:761px){.hero{min-height:max(740px,45.455vw)}}
@media(max-width:760px){.hero-map-demo>svg{width:170%;max-width:none;left:-42%;right:auto}.hero-map-demo .demo-distance{top:auto;bottom:560px;left:65%}}

/* Keep the distance badge to the left of the route. */
.hero-map-demo .demo-distance{left:57%;top:36%;transform:translate(-50%,-50%)}
@media(max-width:760px){.hero-map-demo .demo-distance{left:34%;top:auto;bottom:560px}}

/* Approximate Gauteng coverage, illustrated without extra map API calls. */
.coverage-section .section-heading>p{max-width:460px}
.coverage-map{position:relative;height:520px;overflow:hidden;border-radius:24px;border:1px solid var(--line);background:#edece8}
.coverage-map svg{display:block;width:100%;height:100%}
.coverage-map-label{position:absolute;top:22px;left:22px;background:#fffffff2;padding:12px 18px;border-radius:12px;box-shadow:0 4px 18px #17324d15;font-weight:650;font-size:14px;display:flex;gap:10px;align-items:center}
.coverage-dot{width:12px;height:12px;border-radius:50%;background:var(--rose);border:1px solid #a67561}
.coverage-attribution{position:absolute;bottom:5px;right:8px;background:#fffffff0;padding:2px 6px;font-size:10px}.coverage-attribution a{text-decoration:underline}
.coverage-footer{display:flex;align-items:center;justify-content:space-between;gap:30px;margin-top:24px}.coverage-footer p{max-width:760px;color:#596877;margin:0}.coverage-footer strong{color:var(--navy)}.coverage-footer .button{flex-shrink:0}
@media(max-width:760px){.coverage-map{height:460px}.coverage-map-label{top:14px;left:14px;font-size:12px}.coverage-footer{align-items:flex-start;flex-direction:column;gap:20px}}

/* Full-bleed coverage map, with copy aligned to the rest of the page. */
.section.coverage-section{max-width:none;padding-left:0;padding-right:0}
.coverage-section>.section-heading,.coverage-section>.coverage-footer{max-width:1600px;margin-left:auto;margin-right:auto;padding-left:6%;padding-right:6%}
.coverage-map{width:100%;height:auto;aspect-ratio:16/9;max-height:780px;border:0;border-radius:0}
@media(max-width:760px){.coverage-map{aspect-ratio:auto;height:460px}.coverage-section>.section-heading,.coverage-section>.coverage-footer{padding-left:5%;padding-right:5%}}

/* Contain the coverage map in a card aligned with the section copy. */
.section.coverage-section{max-width:1600px;padding-left:6%;padding-right:6%}
.coverage-section>.section-heading,.coverage-section>.coverage-footer{max-width:none;padding-left:0;padding-right:0}
.coverage-map{border:1px solid var(--line);border-radius:24px;box-shadow:0 12px 32px #17324d12}
@media(max-width:900px){.section.coverage-section{padding-left:5%;padding-right:5%}}
@media(max-width:760px){.coverage-section>.section-heading,.coverage-section>.coverage-footer{padding-left:0;padding-right:0}.coverage-map{border-radius:20px}}

/* Coverage arrives once on scroll, following the existing reveal behaviour. */
.coverage-map.scroll-reveal{transition:opacity .85s ease,transform .85s cubic-bezier(.2,.65,.3,1)}
.coverage-map.reveal-pending{transform:translateY(36px) scale(.98)}
.coverage-map.scroll-reveal svg circle{transform-box:fill-box;transform-origin:center;transition:opacity .8s ease .2s,transform 1s cubic-bezier(.2,.65,.3,1) .2s}
.coverage-map.reveal-pending svg circle{opacity:0;transform:scale(.75)}
@media(prefers-reduced-motion:reduce){.coverage-map.scroll-reveal,.coverage-map.scroll-reveal svg circle{transition:none;transform:none;opacity:1}}
@media print{.coverage-map.reveal-pending,.coverage-map.reveal-pending svg circle{transform:none;opacity:1}}

/* Keep homepage navigation visible without removing its layout space. */
:root{--site-header-height:98px}
html{scroll-padding-top:calc(var(--site-header-height) + 18px)}
.site-header{position:sticky;top:0;z-index:9;background:var(--paper);box-shadow:0 3px 16px #17324d0a}
@media(max-width:640px){:root{--site-header-height:80px}}
@media print{.site-header{position:static;box-shadow:none}}
