:root{--ink:#0c1927;--navy:#0b1b2b;--cyan:#00aa9e;--cyan-text:#008178;--muted:#516779;--paper:#f8fbfd;--progress:0;color-scheme:light}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:85px}body{margin:0;background:var(--paper);font:16px/1.6 -apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:var(--ink);overflow-x:clip}a{color:inherit;text-decoration:none}a:focus-visible{outline:3px solid #009a92;outline-offset:5px;border-radius:4px}.skip{position:fixed;z-index:99;top:-100px;left:15px;background:white;padding:12px}.skip:focus{top:10px}header{height:86px;display:flex;align-items:center;gap:35px;padding:0 max(5vw,24px);position:absolute;top:0;left:0;right:0;z-index:10}header.scrolled{position:fixed;background:#f8fbfdf0;backdrop-filter:blur(12px);box-shadow:0 1px 0 #dce6eb}header nav{display:flex;gap:30px;margin-left:auto;font-size:13px}.wordmark{font-weight:780;font-size:25px;letter-spacing:-1px;white-space:nowrap}.wordmark>span{color:var(--cyan)}.brand{display:inline-flex;align-items:center;gap:8px}.download{font-size:12px;font-weight:650;background:var(--ink);color:white;border-radius:13px;padding:12px 19px;min-height:44px;display:flex;align-items:center;justify-content:center;gap:3px;box-shadow:0 6px 10px #0c192712}.wrap{width:min(1160px,88%);margin:auto}.hero{position:relative;padding-top:120px;background:linear-gradient(120deg,#fafcfd,#f1f7fa);overflow:hidden}.hero-glow{position:absolute;inset:45% -15% -20% 35%;background:radial-gradient(ellipse,#88d9db80,transparent 70%);pointer-events:none}.hero-grid{display:grid;grid-template-columns:1.1fr 1fr;align-items:center;min-height:660px;gap:30px}.hero-copy{padding-bottom:70px}.eyebrow{text-transform:uppercase;letter-spacing:2px;color:#5a7386;font-size:11px;font-weight:700;margin:0 0 20px}h1{font-size:clamp(40px,4.5vw,64px);line-height:1.08;letter-spacing:-2.6px;margin:0 0 27px;font-weight:780}em{font-style:normal;color:var(--cyan-text)}.lead{max-width:390px;font-size:17px;line-height:1.6}.stores{display:flex;gap:14px;margin-top:30px}.store{min-width:164px;min-height:58px;padding:10px 18px;border-radius:12px;display:flex;align-items:center;gap:12px;font-size:14px;font-weight:650;box-shadow:0 6px 18px #172d3a0c;line-height:1.2}.store>span:first-child{font-size:24px}.store small{font-size:10px;display:block;margin-bottom:4px;font-weight:500}.apple{background:var(--ink);color:white}.play{background:white;color:var(--ink)}.discover{display:inline-flex;flex-direction:column;font-size:11px;color:#607787;margin-top:30px;min-height:44px}.discover span{font-size:35px;line-height:1.1;font-weight:200;margin-bottom:8px}.hero-product{position:relative;justify-self:center;align-self:end}.PhoneMockup{width:285px;max-width:100%;margin:0;position:relative;transform:scale(var(--phone-scale,1));transform-origin:center center}.phone-body{position:relative;padding:10px;border-radius:44px;background:linear-gradient(120deg,#121a20 10%,#657580 27%,#050708 33%,#15212c 75%,#4a565f);border:2px solid #475157;box-shadow:inset 0 0 0 4px #070a0b,12px 16px 16px #0e233728,2px 1px 0 #050708}.phone-body:after{content:'';position:absolute;width:3px;height:62px;right:-5px;top:135px;border-radius:2px;background:#29373e}.ProductScreen{position:relative;overflow:hidden;border-radius:33px;background:#102332;aspect-ratio:1/2}.ProductScreen>img{display:block;width:100%;height:100%;object-fit:cover}.island{position:absolute;width:87px;height:23px;top:15px;left:calc(50% - 43px);background:#030506;border-radius:20px;box-shadow:inset -7px 0 2px #0b1723}.PhoneMockup figcaption{font-size:9px;color:#708898;text-align:center;margin-top:14px;letter-spacing:.15px}.hero .PhoneMockup{width:300px;transform:translateY(calc(var(--hero-shift,0)*1px)) rotate(calc(-4deg + var(--hero-tilt,0)*1deg));animation:phone-enter 950ms both cubic-bezier(.2,.75,.2,1);margin-bottom:26px}.note{font-family:Georgia,serif;font-style:italic;position:absolute;font-size:14px;line-height:1.3;right:-126px;top:100px;transform:rotate(-6deg);color:#4a6575}.note>span{display:block;font:38px Georgia;color:#6698aa;margin:12px 30px}.split{display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:100px;min-height:600px}.stage{position:relative;padding:70px 0 0;overflow:clip;--progress:0}.visual{display:flex;justify-content:center;align-self:end}.visual .PhoneMockup{margin-bottom:-35px}.copy{padding:25px 0 80px;position:relative;z-index:2}.section-number{color:#5f7785;display:flex;align-items:center;gap:12px;font-size:16px;font-weight:500;margin:0 0 22px}.section-number>span{width:42px;height:1px;background:#91abbc}h2{font-size:clamp(28px,3.2vw,42px);line-height:1.12;letter-spacing:-1.3px;margin:0 0 22px;font-weight:750}h3{font-size:18px;line-height:1.35;letter-spacing:-.4px;margin:0 0 21px}.copy>p{font-size:15px;line-height:1.6}.features,.feature-card{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:35px}.features>span,.feature-card>span{font-size:28px;line-height:1.3}.features small,.feature-card small{display:block;font-size:11px;line-height:1.4;margin-top:14px;font-weight:500}.dark{color:#f7fafc;background:radial-gradient(ellipse at 75% 5%,#254359,transparent 65%),linear-gradient(130deg,#12222f,#07131f)}.dark .section-number{color:#a3bdca}.dark .PhoneMockup figcaption{color:#a4b7c3}.opportunities:before,.radar:before{content:'';position:absolute;inset:0;opacity:.08;background:repeating-linear-gradient(75deg,transparent,transparent 65px,#b4dbdf 66px,transparent 68px)}.opportunities .PhoneMockup{transform:rotate(4deg);width:285px}.smartmap .PhoneMockup{transform:rotate(-5deg);width:300px}.feature-card{padding:22px;border-radius:22px;background:#edf4f9}.map-steps{display:flex;gap:13px;align-items:center;font-size:10px;color:#5f7785;margin-top:25px}.map-steps b{color:var(--cyan-text);font-weight:650}.traffic-lines{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.traffic{fill:none;stroke-width:12;stroke-linecap:round;stroke-dasharray:600;stroke-dashoffset:calc(600*(1 - var(--traffic-reveal,0)))}.orange{stroke:#f5a249}.red{stroke:#ec6759}.map-pin{position:absolute;left:var(--x);top:var(--y);width:29px;height:29px;display:grid;place-items:center;border-radius:50%;color:white;background:#cc327c;box-shadow:0 4px 7px #0004;opacity:var(--pin-reveal,0);transform:translateY(calc(14px*(1 - var(--pin-reveal,0))));font-size:16px}.sport{background:#208478}.closure{background:#db5149;font-weight:800}.boers{background:#267bac}.map-callout{position:absolute;left:7%;right:7%;top:42%;border-radius:13px;background:#102130ed;color:white;font-size:12px;padding:17px;box-shadow:0 7px 14px #0005;opacity:var(--callout-reveal,0);transform:translateY(calc(20px*(1 - var(--callout-reveal,0))));pointer-events:none}.map-callout small{display:block;margin:5px 0 12px;font-size:9px;color:#a9c0c9}.map-callout>span{display:block;text-align:center;background:#2a3d4c;padding:9px;border-radius:7px;font-size:10px}.hero{--traffic-reveal:1;--pin-reveal:1;--callout-reveal:0}.analysis-overlay{position:absolute;top:36%;left:9%;right:9%;display:flex;flex-direction:column;gap:7px}.analysis-overlay>span{padding:8px 10px;background:#def8f1f5;border-radius:8px;color:#087f78;font-size:11px;opacity:var(--analysis-reveal,0);transform:translateY(calc(12px*(1 - var(--analysis-reveal,0))))}.analysis-overlay>span:nth-child(2){opacity:var(--analysis-two,0)}.analysis-overlay>span:nth-child(3){opacity:var(--analysis-three,0)}.analysis-overlay>span:nth-child(4){opacity:var(--analysis-four,0)}.analysis-overlay>span:nth-child(5){opacity:var(--analysis-five,0)}.radar{padding-bottom:50px}.radar .split{min-height:420px}.radar .copy{padding-bottom:25px}.voice{display:flex;align-items:center;gap:20px;background:#ffffff0b;border:1px solid #ffffff08;border-radius:30px;padding:10px 22px;width:max-content;max-width:100%;margin:25px 0 12px}.voice>span{font-size:28px}.voice p{font-size:13px;line-height:1.5;margin:0}.voice small{display:block;font-size:9px;color:#9bb6c5;margin-top:5px}.muted{font-size:12px!important;color:#b9cad5;max-width:370px}.radar-visual{position:relative;min-height:340px;display:grid;align-content:center}.radar-road{position:absolute;inset:0;background:linear-gradient(75deg,transparent 43%,#6f8a9712 44%,#bfc9cc33 45%,transparent 46%,transparent 62%,#bfc9cc33 63%,#6f8a9712 64%,transparent 65%);transform:perspective(200px) rotateX(18deg)}.radar-panel{display:flex;align-items:center;justify-content:center;gap:22px;padding:27px;background:linear-gradient(120deg,#25343d,#080f14);border:5px solid #354651;border-radius:24px;box-shadow:0 15px 25px #0006;transform:rotate(2deg);position:relative;margin:80px 0 0}.radar-symbol{font-size:45px;color:#bfeae6}.radar-panel small{display:block;font-size:18px;color:#b3d5d8}.radar-panel strong{display:block;font-size:35px;line-height:1.1;font-weight:500;white-space:nowrap}.radar .note{top:5px;right:5px;color:#bdd4df}.sound-wave{display:flex;align-items:center;gap:5px;width:45px;justify-content:center}.sound-wave i{width:4px;height:20px;background:#42d2c0;border-radius:10px;transform:scaleY(.25)}.sound-wave.active i{animation:wave 800ms ease-in-out infinite alternate}.sound-wave i:nth-child(2){height:35px;animation-delay:150ms}.sound-wave i:nth-child(3){animation-delay:300ms}.illustration-label{font-size:10px;color:#a4b7c3;text-align:center;z-index:1}.platforms{text-align:center;padding:70px 0 0;background:#eff6fa;overflow:hidden}.platforms h2{margin-bottom:12px}.platforms>div>p:not(.eyebrow){color:#526a7b;font-size:14px}.platform-devices{display:flex;align-items:flex-end;justify-content:center;gap:35px;margin-top:30px;max-height:310px;overflow:hidden;padding:8px}.platform-devices .PhoneMockup{width:200px;transform:rotate(-3deg)}.android-device{width:160px;border-radius:23px;border:7px solid #15212b;overflow:hidden;position:relative;transform:rotate(3deg);margin-bottom:-45px;box-shadow:6px 8px 20px #0b19272b}.android-device>img{width:100%;height:auto;display:block}.android-device>span{position:absolute;width:9px;height:9px;border-radius:50%;background:#111;top:6px;left:48%}.final-cta{text-align:center;padding:70px 0;background:white}.final-cta .wordmark{display:block;margin-bottom:15px;font-size:28px}.final-cta h2{font-size:29px;margin-bottom:13px}.final-cta p{font-size:14px}.final-cta .stores{justify-content:center}footer{display:flex;align-items:center;justify-content:space-between;gap:25px;font-size:10px;padding:30px max(5vw,24px);background:white;color:#4e6575}footer nav{display:flex;gap:23px}footer .wordmark{font-size:17px}@keyframes phone-enter{from{opacity:0;translate:0 45px;scale:.96}to{opacity:1;translate:0 0;scale:1}}@keyframes wave{to{transform:scaleY(1)}}.hero-copy{animation:copy-enter 800ms both}@keyframes copy-enter{from{opacity:0;translate:0 14px}to{opacity:1;translate:0 0}}
@media(min-width:901px){.analysis,.smartmap{padding-top:90px;padding-bottom:35px}.analysis .split,.smartmap .split{min-height:710px;align-items:start}.sticky{position:sticky;top:110px;align-self:start}.sticky .PhoneMockup{margin:0}.analysis .copy,.smartmap .copy{padding-top:95px}.smartmap .copy{padding-bottom:130px}}
@media(max-width:1100px){.note{right:-82px;font-size:12px}.split{gap:50px}.hero .PhoneMockup{width:260px}h1{font-size:47px}.hero-grid{min-height:580px}.hero .note{right:-87px;top:70px}.features small{font-size:10px}.store{min-width:148px;padding:10px 14px}header{gap:22px}header nav{gap:18px}}
@media(max-width:800px){header{padding:0 20px;height:74px;gap:15px}header nav{gap:12px;font-size:11px}.download{font-size:11px;padding:11px 12px}.download>span{display:none}.wordmark{font-size:22px}.wrap{width:90%}.hero-grid{min-height:540px;gap:10px;grid-template-columns:1.15fr 1fr}h1{font-size:39px;letter-spacing:-1.8px}.lead{font-size:14px}.hero .note{display:none}.hero .PhoneMockup{width:220px}.stores{gap:10px}.store{font-size:12px;min-width:126px;padding:10px}.store>span:first-child{font-size:20px}.hero-copy{padding-bottom:40px}.split{gap:30px;min-height:550px}.PhoneMockup,.opportunities .PhoneMockup,.smartmap .PhoneMockup{width:240px}.features{gap:8px}.features small{font-size:9px}.copy>p{font-size:14px}.feature-card{padding:15px;gap:8px}.feature-card small{font-size:9px}.radar-panel{padding:23px 13px;gap:13px}.radar-panel strong{font-size:29px}.note{display:none}footer{flex-wrap:wrap;justify-content:center}.smartmap .copy{padding-bottom:60px}}
@media(max-width:600px){html{scroll-padding-top:74px}header{position:absolute;height:68px;gap:10px;padding:0 16px;flex-wrap:wrap;align-content:center}header .wordmark{font-size:21px}header nav{order:3;flex-basis:100%;justify-content:center;margin:0;gap:27px;height:20px}header nav a{min-height:26px;display:flex;align-items:center;font-size:10px}.download{margin-left:auto;min-height:31px;padding:7px 10px;font-size:10px;border-radius:9px}.hero{padding-top:110px}.hero-grid{display:flex;flex-direction:column;gap:0;min-height:auto;text-align:center}.hero-copy{padding-bottom:5px;width:100%}.eyebrow{font-size:9px;letter-spacing:1.7px;margin-bottom:17px}h1{font-size:clamp(34px,9.7vw,44px);letter-spacing:-1.7px;margin-bottom:20px}.lead{font-size:14px;max-width:315px;margin:0 auto}.stores{justify-content:center;margin-top:23px;gap:11px}.store{min-width:132px;font-size:12px;min-height:50px;padding:9px 12px;gap:8px}.store small{font-size:9px}.discover{margin-top:22px;min-height:44px}.discover span{font-size:25px;margin:0}.hero-product{align-self:center;margin-top:20px}.hero .PhoneMockup{width:218px;transform:translateY(calc(var(--hero-shift,0)*.3px)) rotate(-3deg);margin-bottom:27px}.PhoneMockup figcaption{font-size:8px}.split{display:flex;flex-direction:column;gap:0;min-height:0}.stage{padding:46px 0 0}.stage .copy{order:2;padding:25px 0 45px;width:100%;text-align:left}.stage .visual{order:1;align-self:center}.stage .PhoneMockup{width:215px;margin-bottom:0}.opportunities .visual,.smartmap .visual{max-height:355px;overflow:hidden;padding:8px 16px 0}.analysis .visual{max-height:380px;overflow:hidden}.smartmap .PhoneMockup{transform:rotate(-3deg)}.opportunities .PhoneMockup{transform:rotate(3deg)}h2{font-size:30px;letter-spacing:-1px;line-height:1.12;margin-bottom:19px}.section-number{font-size:13px;margin-bottom:15px}h3{font-size:17px}.copy>p{font-size:14px}.features{margin-top:27px}.features small{font-size:10px}.features>span{font-size:25px}.feature-card{padding:17px 12px;border-radius:15px}.feature-card small{font-size:9px}.map-steps{font-size:9px;justify-content:center}.radar{padding-bottom:15px}.radar .copy{order:1;padding-top:0;padding-bottom:15px}.radar-visual{order:2;min-height:230px;width:90%}.radar-panel{margin:35px 0 0;padding:23px 20px;justify-content:space-around;gap:12px;border-width:4px}.radar-symbol{font-size:35px}.radar-panel strong{font-size:31px}.radar-panel small{font-size:15px}.voice{gap:15px;padding:12px 17px}.voice p{font-size:12px}.voice>span{font-size:22px}.platforms{padding-top:50px}.platforms h2{font-size:28px}.platform-devices{max-height:255px;gap:20px}.platform-devices .PhoneMockup{width:160px}.android-device{width:130px}.final-cta{padding:48px 0}.final-cta h2{font-size:28px}.final-cta p{font-size:13px}.final-cta .wordmark{font-size:25px}footer{gap:17px;padding:22px 18px}footer .brand{display:none}footer nav{width:100%;justify-content:center;gap:20px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.hero .PhoneMockup{transform:rotate(-2deg)!important}.traffic{stroke-dashoffset:0}.map-pin,.map-callout,.analysis-overlay>span{opacity:1!important;transform:none!important}.sound-wave i{transform:scaleY(.7)}}
/* Position tokens live in the stylesheet to preserve the strict CSP. */
.music{--x:67%;--y:36%}.sport{--x:28%;--y:47%;opacity:var(--sport-reveal,0)}.closure{--x:73%;--y:65%;opacity:var(--closure-reveal,0)}.boers{--x:38%;--y:68%;opacity:var(--boers-reveal,0)}.hero{--sport-reveal:1;--closure-reveal:1;--boers-reveal:1}.platform-devices{align-items:flex-start}.platform-devices .PhoneMockup{margin-top:0}.android-device{margin-top:38px;margin-bottom:0}.PhoneMockup[data-scale=".96"]{scale:.96}.PhoneMockup[data-scale="1"]{scale:1}.PhoneMockup[data-position="left"]{margin-right:auto}.PhoneMockup[data-position="right"]{margin-left:auto}
@media(max-width:600px){header{height:104px;gap:1px}.download{min-height:44px}header nav{height:44px}header nav a{min-height:44px;font-size:11px}header .brand{min-height:44px}.hero{padding-top:129px}html{scroll-padding-top:110px}}
@media(prefers-reduced-motion:reduce){.sport,.closure,.boers{opacity:1!important}.PhoneMockup{translate:0 0!important;scale:1!important}}
.brand-logo{display:block;width:136px;height:auto}.final-cta .brand-logo{width:174px;margin:0 auto 20px}footer .brand-logo{width:110px}
@media(max-width:600px){header .brand-logo{width:117px;height:auto}.final-cta .brand-logo{width:164px}}

/* Native iPhone captures preserve their full status/header/navigation frame. */
.ProductScreen.native-screen{aspect-ratio:1206/2622}.ProductScreen.native-screen>img{height:auto;object-fit:contain}

.ProductScreen.native-screen>.native-detail{position:absolute;inset:0;opacity:var(--callout-reveal,0);transition:opacity .2s linear}.android-caption{display:block;text-align:center;font-size:10px;color:#536978;background:#eff6fa}
@media(prefers-reduced-motion:reduce){.ProductScreen.native-screen>.native-detail{transition:none;opacity:0}}

/* Static map export credits remain adjacent and readable, outside any clipping. */
.PhoneMockup figcaption{font-size:11px;line-height:1.5;opacity:1}.PhoneMockup figcaption a{text-decoration:underline}.module-screens{display:flex;gap:18px;align-items:flex-start;justify-content:center}.module-screens .PhoneMockup{width:200px;flex-shrink:0}@media(max-width:600px){.opportunities .visual,.smartmap .visual,.analysis .visual{max-height:none;overflow:visible}.module-screens{flex-direction:column;align-items:center;gap:28px}.PhoneMockup figcaption{font-size:11px}}

.ProductScreen.historical-screen{aspect-ratio:851/1849}.ProductScreen.historical-screen>img{height:auto;object-fit:contain}.screen-switcher{width:230px;max-width:100%}.screen-tabs{display:flex;gap:5px;justify-content:center;margin:0 0 15px}.screen-tabs button{border:1px solid #526879;background:#132b3c;color:#eaf5ff;border-radius:9px;font:inherit;font-size:12px;min-height:40px;padding:8px 10px;cursor:pointer}.screen-tabs button[aria-selected=true]{background:#e8fcfa;color:#064e49;border-color:#49cebd}.screen-tabs button:focus-visible{outline:3px solid #68dccc;outline-offset:3px}.screen-frames{display:grid}.screen-panel{grid-area:1/1;min-width:0;opacity:0;visibility:hidden;transform:translateY(8px);transition:opacity 180ms ease,transform 180ms ease,visibility 180ms}.screen-panel.is-selected{opacity:1;visibility:visible;transform:translateY(0)}.module-screens .screen-panel .PhoneMockup{width:215px;margin-inline:auto}.sound-wave.active i{animation:none}@media(prefers-reduced-motion:reduce){.screen-panel,.screen-panel.is-selected{transition:none;transform:none}}
/* Explicit availability and fictional map, with static complete content. */
.store:disabled{opacity:1;cursor:not-allowed;font-family:inherit;text-align:left;border:0}
.radar-status{color:#70e2d8;font-weight:700;border:1px solid #70e2d844;border-radius:12px;padding:12px 15px}
.platform-devices{max-height:none;overflow:visible;padding-bottom:30px}
.android-device{overflow:visible}.android-device>img{border-radius:16px}.android-caption{position:static;padding:8px 0}
.ProductScreen.map-illustration-screen{aspect-ratio:1206/2622}.ProductScreen.map-illustration-screen>img{height:auto;object-fit:contain}
/* Accessible local web mockup interaction; all coordinates are relative to screen. */
.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.ProductScreen.mockup-screen>img{height:auto;object-fit:contain}
.ProductScreen.mockup-851-1848{aspect-ratio:851/1848}
.ProductScreen.mockup-851-1847{aspect-ratio:851/1847}
.demo-hotspot{position:absolute;top:72.5%;height:13%;width:45%;border:2px solid transparent;border-radius:14px;background:transparent;cursor:pointer;z-index:2}
.demo-hotspot.circulation{left:4%}.demo-hotspot.opportunites{right:4%}
.demo-hotspot:hover,.demo-hotspot:focus-visible{border-color:#65dfd0;background:#65dfd00c;outline:3px solid #65dfd080;outline-offset:2px}
.demo-panel{position:absolute;inset:0;background:#0008;z-index:4;display:flex;align-items:center;padding:4%}
.demo-panel[hidden]{display:none}
.demo-sheet{background:#10151b;border:1px solid #526275;border-radius:18px;padding:16px 12px;width:100%;box-shadow:0 12px 28px #0008;animation:demo-panel-in 240ms ease-out}
.demo-sheet-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.demo-sheet-title h3{font-size:15px;color:white;margin:0;line-height:1.2}
.demo-sheet-title button{width:32px;height:32px;border:0;border-radius:50%;background:#1b2c3e;color:#c5d5e2;font-size:24px;cursor:pointer;line-height:1}
.demo-card{background:#0b2134;border-left:3px solid #ff525b;border-radius:10px;padding:10px;margin:9px 0;color:white}.demo-card h4{font-size:11px;margin:0 0 6px;line-height:1.2}.demo-card p{font-size:9px;margin:0 0 5px;line-height:1.4;color:#b4c5d5}.demo-card strong{font-size:9px;line-height:1.35;font-weight:600}
[data-demo-panel=opportunites] .demo-card{border-color:#398cff}
.demo-external-tabs{display:flex;gap:6px;justify-content:center;margin-bottom:16px}.demo-external-tabs button{background:#193045;color:white;border:1px solid #536b7d;border-radius:9px;padding:10px;font:inherit;font-size:12px;cursor:pointer}.demo-external-tabs button:focus-visible{outline:3px solid #68dccc;outline-offset:3px}
.module-demo-wrap{max-width:100%;width:230px}.module-demo-wrap .PhoneMockup{margin-inline:auto;width:215px}
.PhoneMockup figcaption{font-size:9px;line-height:1.5;max-width:100%;text-align:center}
.hero-product .note{position:static;text-align:center;max-width:260px;margin:0 auto 18px;font-family:inherit;font-size:13px;line-height:1.45;transform:none;color:#4e6575}.hero-product .note>span{display:none}
.hero-product{display:flex;flex-direction:column;align-items:center}.hero .PhoneMockup{margin-bottom:14px}
.brand-phone{margin:0;width:200px;max-width:43%}.brand-phone-body{aspect-ratio:1/2.1;background:radial-gradient(circle at 50% 46%,#173c55,#061b34 67%);border:8px solid #15212b;border-radius:29px;box-shadow:5px 14px 25px #091b3330;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden}.brand-phone-body>img{width:83%;height:auto}.brand-status{position:absolute;top:12px;left:12px;right:12px;color:white;display:flex;justify-content:space-between;font-size:8px}.brand-phone figcaption{padding-top:12px;font-size:12px;color:#536978}.android-brand .brand-phone-body{border-radius:21px}.iphone-brand .brand-phone-body:before{content:'';position:absolute;top:5px;left:36%;width:28%;height:13px;border-radius:20px;background:#02070c}.platform-devices{gap:30px;align-items:flex-start;padding-bottom:35px}
@keyframes demo-panel-in{from{opacity:0;translate:0 12px}to{opacity:1;translate:0 0}}
@media(max-width:800px){.hero-product .note{display:block;max-width:210px;font-size:12px}}
@media(max-width:600px){.hero-product .note{display:block;max-width:240px;font-size:12px}.brand-phone{width:155px}.brand-phone-body{border-width:6px;border-radius:25px}.platform-devices{gap:18px}.demo-sheet{padding:11px 9px}.demo-card{padding:8px;margin:7px 0}.demo-sheet-title h3{font-size:13px}.demo-card h4{font-size:10px}.module-demo-wrap{width:240px}}
@media(prefers-reduced-motion:reduce){.demo-sheet{animation:none}}

.visual-provenance{margin:4px auto;font-size:9px;line-height:1.5}.visual-provenance summary{cursor:pointer;display:inline-block;text-decoration:underline}.visual-provenance p{padding:9px;border-radius:8px;background:#eff7fb;color:#405569;font-size:10px;text-align:left}.dark .visual-provenance p{background:#1b3448;color:#c6d7e4}
.analysis .ProductScreen.historical-screen{aspect-ratio:851/1848}

/* Restore historical map pixels; only independent UI/traffic layers are added. */
.ProductScreen.native-screen>img.native-map-ui-overlay,.ProductScreen.native-screen>img.native-map-traffic-overlay{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;pointer-events:none}
.native-map-traffic-overlay{opacity:calc(.4 + .6 * var(--pin-reveal,0));transition:opacity 240ms ease}
.map-source-credit{text-align:center;font-size:9px;line-height:1.5;background:white;color:#657985;padding:0 18px 14px}.map-source-credit a{text-decoration:underline}
/* Small bounded movement on scroll; transform belongs to the container so phone rotation survives. */
.stage .visual{transform:translateY(calc(12px - 24px * var(--pin-reveal,0)));transition:transform 180ms ease-out}
.opportunities .module-demo-wrap .PhoneMockup{transform:rotate(4deg)}
.module-demo-wrap{animation:module-arrive 650ms ease-out both}
@keyframes module-arrive{from{opacity:0;translate:0 16px}to{opacity:1;translate:0 0}}
@media(max-width:600px){.opportunities .module-demo-wrap .PhoneMockup{transform:rotate(3deg)}.module-demo-wrap{width:230px}.stage .visual{transform:translateY(calc(8px - 16px * var(--pin-reveal,0)))}}
@media(prefers-reduced-motion:reduce){.stage .visual{transform:none!important;transition:none}.module-demo-wrap{animation:none}.native-map-traffic-overlay{opacity:1;transition:none}}

.restored-traffic{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.restored-traffic path{stroke-dasharray:400;stroke-dashoffset:calc(400 * (1 - var(--traffic-reveal,1)));transition:stroke-dashoffset 220ms ease-out}
.demo-external-tabs button[aria-expanded=true]{background:#23716b;border-color:#65dfd0}
@media(prefers-reduced-motion:reduce){.restored-traffic path{stroke-dashoffset:0;transition:none}}

/* ── LES VISUELS DES MODULES NE ROGNENT PLUS LE TÉLÉPHONE (correctif du 08/10) ───────────────
   `.opportunities .visual, .smartmap .visual` étaient bornés à `max-height:355px` avec
   `overflow:hidden`. Or le mockup fait 240 px de large pour un ratio d'image de 2,17, soit
   environ 520 px de haut : il était donc coupé d'un tiers, en bas. C'est le défaut signalé par
   le propriétaire (« l'iPhone est coupé car il est trop bas »). On ne borne plus la hauteur, et
   on laisse dépasser la rotation — sinon les coins inclinés sont rognés eux aussi. */
.opportunities .visual,.smartmap .visual{max-height:none;overflow:visible}

/* ── BOUTON D'APERÇU SONORE DU RADAR ──────────────────────────────────────────────────────────
   Le visiteur entend ce que le chauffeur entend : un bip puis la phrase, sans aucun fichier
   audio (bip synthétisé, phrase prononcée par la voix de l'appareil). */
.radar-listen{display:inline-flex;align-items:center;gap:9px;margin-top:18px;padding:11px 18px;
  border:1px solid #65dfd0;border-radius:12px;background:#65dfd014;color:#eaf6f6;
  font:inherit;font-size:13px;font-weight:650;cursor:pointer;transition:background 160ms ease-out,transform 160ms ease-out}
.radar-listen>span{font-size:11px;color:#65dfd0}
.radar-listen:hover,.radar-listen:focus-visible{background:#65dfd02e;transform:translateY(-1px);
  outline:3px solid #65dfd080;outline-offset:2px}
@media(max-width:600px){.radar-listen{width:100%;justify-content:center;min-height:44px}}

/* ── LA MAQUETTE N'EST PLUS ROGNÉE PAR SA SECTION (08/10/2026) ───────────────────────────────
   Signalé deux fois par le propriétaire : « dans Opportunité l'iPhone est toujours coupé vers
   le bas ». MESURÉ au navigateur (CDP, largeur 1280) et non supposé :
     .stage            bottom = 2333 px   (.stage porte overflow:clip)
     .visual           bottom = 2345 px
     .opportunities .PhoneMockup bottom = 2373 px   (.visual .PhoneMockup{margin-bottom:-35px})
   La maquette dépasse donc de 37 px sous sa section, et `overflow:clip` la coupe : c'était la
   marge négative assumée à l'origine, devenue une mutilation depuis que la section rogne.
   On lui REND la place au lieu de la rogner — aucune autre valeur n'est touchée, et le CSS ne
   cible que les deux sections concernées. Le surplomb de la rotation (4° / -5°) est couvert par
   les 44 px. Sur mobile la marge est déjà annulée (`.stage .PhoneMockup{margin-bottom:0}`) : la
   règle n'y change rien, elle est sans effet. */
.opportunities.stage,.smartmap.stage{padding-bottom:44px}
