1056 lines
71 KiB
JavaScript
1056 lines
71 KiB
JavaScript
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,67585,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"BailoutToCSR",{enumerable:!0,get:function(){return i}});let a=e.r(32061);function i({reason:e,children:t}){if("u"<typeof window)throw Object.defineProperty(new a.BailoutToCSRError(e),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return t}},9885,(e,t,n)=>{"use strict";function a(e){return e.split("/").map(e=>encodeURIComponent(e)).join("/")}Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"encodeURIPath",{enumerable:!0,get:function(){return a}})},52157,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"PreloadChunks",{enumerable:!0,get:function(){return d}});let a=e.r(43476),i=e.r(74080),r=e.r(63599),o=e.r(9885),s=e.r(43369);function d({moduleIds:e}){if("u">typeof window)return null;let t=r.workAsyncStorage.getStore();if(void 0===t)return null;let n=[];if(t.reactLoadableManifest&&e){let a=t.reactLoadableManifest;for(let t of e){if(!a[t])continue;let e=a[t].files;n.push(...e)}}if(0===n.length)return null;let l=(0,s.getAssetTokenQuery)();return(0,a.jsx)(a.Fragment,{children:n.map(e=>{let n=`${t.assetPrefix}/_next/${(0,o.encodeURIPath)(e)}${l}`;return e.endsWith(".css")?(0,a.jsx)("link",{precedence:"dynamic",href:n,rel:"stylesheet",as:"style",nonce:t.nonce},e):((0,i.preload)(n,{as:"script",fetchPriority:"low",nonce:t.nonce}),null)})})}},69093,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"default",{enumerable:!0,get:function(){return l}});let a=e.r(43476),i=e.r(71645),r=e.r(67585),o=e.r(52157);function s(e){return{default:e&&"default"in e?e.default:e}}let d={loader:()=>Promise.resolve(s(()=>null)),loading:null,ssr:!0},l=function(e){let t={...d,...e},n=(0,i.lazy)(()=>t.loader().then(s)),l=t.loading;function c(e){let s=l?(0,a.jsx)(l,{isLoading:!0,pastDelay:!0,error:null}):null,d=!t.ssr||!!t.loading,c=d?i.Suspense:i.Fragment,p=t.ssr?(0,a.jsxs)(a.Fragment,{children:["u"<typeof window?(0,a.jsx)(o.PreloadChunks,{moduleIds:t.modules}):null,(0,a.jsx)(n,{...e})]}):(0,a.jsx)(r.BailoutToCSR,{reason:"next/dynamic",children:(0,a.jsx)(n,{...e})});return(0,a.jsx)(c,{...d?{fallback:s}:{},children:p})}return c.displayName="LoadableComponent",c}},70703,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"default",{enumerable:!0,get:function(){return i}});let a=e.r(55682)._(e.r(69093));function i(e,t){let n={};"function"==typeof e&&(n.loader=e);let i={...n,...t};return(0,a.default)({...i,modules:i.loadableGenerated?.modules})}("function"==typeof n.default||"object"==typeof n.default&&null!==n.default)&&void 0===n.default.__esModule&&(Object.defineProperty(n.default,"__esModule",{value:!0}),Object.assign(n.default,n),t.exports=n.default)},14224,e=>{"use strict";var t=e.i(43476),n=e.i(71645),a=e.i(89970),i=e.i(83495);a.default.registerPlugin(i.ScrollTrigger);let r=[{icon:(0,t.jsx)("svg",{className:"evnd-icon",viewBox:"0 0 24 24",fill:"none",stroke:"#f59e0b",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:(0,t.jsx)("polygon",{points:"13 2 3 14 12 14 11 22 21 10 12 10 13 2"})}),title:"Battery-Aware Routing",desc:"Battery level, health, and degradation are first-class inputs to route optimization — not afterthoughts."},{icon:(0,t.jsx)("svg",{className:"evnd-icon",viewBox:"0 0 24 24",fill:"none",stroke:"#94a3b8",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:(0,t.jsx)("path",{d:"M18 10h-1.28A6 6 0 0 0 12 5V3M12 5V3M6 10h1.28A6 6 0 0 0 12 5M12 18v2M12 18v2M8 10v6a4 4 0 0 0 8 0v-6"})}),title:"Charging Integration",desc:"Seamlessly integrate charging stops without compromising delivery windows or SLA commitments."},{icon:(0,t.jsx)("svg",{className:"evnd-icon",viewBox:"0 0 24 24",fill:"none",stroke:"#ef4444",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:(0,t.jsx)("path",{d:"m8 3 4 8 5-5 5 15H2L8 3z"})}),title:"Energy-Optimized Paths",desc:"Factor in elevation, speed limits, payload weight, and live weather for maximum range efficiency."},{icon:(0,t.jsx)("svg",{className:"evnd-icon",viewBox:"0 0 24 24",fill:"none",stroke:"#ef4444",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:(0,t.jsx)("path",{d:"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"})}),title:"Predictable Operations",desc:"EVs become predictable assets, not operational risks. Full visibility from depot to doorstep."}],o=[{value:"100%",label:"ELECTRIC FLEET"},{value:"-40%",label:"COST / MILE"}],s=[{value:99.9,decimals:1,suffix:"%",label:"SLA Compliance"},{value:42,suffix:"%",label:"Distance Saved"},{value:37,suffix:"%",label:"Fewer Vehicles"},{value:45,suffix:"ms",label:"Dispatch Latency"}];function d({value:e,decimals:a=0,suffix:i="",duration:r=1700,className:o}){let[s,l]=(0,n.useState)(0),c=(0,n.useRef)(null),p=(0,n.useRef)(!1);return(0,n.useEffect)(()=>{let t=c.current;if(!t)return;if(window.matchMedia?.("(prefers-reduced-motion: reduce)").matches)return void requestAnimationFrame(()=>l(e));let n=new IntersectionObserver(t=>{for(let a of t)if(a.isIntersecting&&!p.current){p.current=!0;let t=performance.now(),a=e=>1-Math.pow(1-e,3),i=n=>{let o=Math.min(1,(n-t)/r);l(e*a(o)),o<1?requestAnimationFrame(i):l(e)};requestAnimationFrame(i),n.disconnect()}},{threshold:.2});return n.observe(t),()=>n.disconnect()},[e,r]),(0,t.jsxs)("b",{ref:c,className:o,children:[s.toFixed(a),i]})}function l({value:e,decimals:a=0,suffix:i="",active:r}){let[o,s]=(0,n.useState)(e),d=(0,n.useRef)(0);return(0,n.useEffect)(()=>{if(!r)return;if(window.matchMedia?.("(prefers-reduced-motion: reduce)").matches)return d.current=requestAnimationFrame(()=>s(e)),()=>cancelAnimationFrame(d.current);let t=performance.now(),n=a=>{let i=Math.min(1,Math.max(0,(a-t)/850));s(e*(1-Math.pow(1-i,3))),i<1?d.current=requestAnimationFrame(n):s(e)};return d.current=requestAnimationFrame(n),()=>cancelAnimationFrame(d.current)},[r,e]),(0,t.jsxs)("span",{className:"evnd__card-metric",children:[o.toFixed(a),(0,t.jsx)("i",{children:i})]})}let c=[[40,90],[150,150],[120,280],[250,330],[360,250],[60,420],[300,120],[330,430]],p=["M40 90 L150 150 L120 280 L250 330 L360 250","M60 420 L150 150 L300 120 L360 250","M120 280 L60 420 L250 330 L330 430"],m=[[14,22,0,13],[78,16,-3,16],[33,64,-7,14],[62,48,-1,18],[88,70,-5,15],[22,86,-9,17],[50,30,-4,19],[70,90,-2,14]];function g(){let e=(0,n.useRef)(null);return(0,n.useEffect)(()=>{let t=e.current;if(!t||window.matchMedia?.("(prefers-reduced-motion: reduce)").matches||window.matchMedia?.("(max-width: 767px)").matches)return;a.default.registerPlugin(i.ScrollTrigger);let n=Array.from(t.querySelectorAll("[data-depth]")),r=i.ScrollTrigger.create({trigger:t,start:"top bottom",end:"bottom top",scrub:!0,onUpdate:e=>{let t=e.progress-.5;for(let e of n){let n=parseFloat(e.dataset.depth||"0");a.default.set(e,{yPercent:t*n})}}});return()=>r.kill()},[]),(0,t.jsxs)("div",{ref:e,className:"evnd__bg","aria-hidden":"true",children:[(0,t.jsx)("div",{className:"evnd__bg-grid","data-depth":"4"}),(0,t.jsxs)("svg",{className:"evnd__bg-net","data-depth":"8",viewBox:"0 0 400 520",preserveAspectRatio:"xMidYMid slice",children:[(0,t.jsx)("g",{className:"evnd__bg-mesh",stroke:"currentColor",strokeWidth:"0.8",fill:"none",children:p.map((e,n)=>(0,t.jsx)("path",{d:e},n))}),(0,t.jsx)("g",{className:"evnd__bg-nodes",fill:"currentColor",children:c.map(([e,n],a)=>(0,t.jsx)("circle",{cx:e,cy:n,r:a%3==0?3:2,style:{animationDelay:`${-(.7*a)}s`}},a))}),(0,t.jsx)("path",{className:"evnd__bg-flow",d:p[0],fill:"none",stroke:"currentColor",strokeWidth:"1.4"}),(0,t.jsx)("path",{className:"evnd__bg-flow evnd__bg-flow--2",d:p[1],fill:"none",stroke:"currentColor",strokeWidth:"1.4"})]}),(0,t.jsx)("div",{className:"evnd__bg-glow evnd__bg-glow--a","data-depth":"11"}),(0,t.jsx)("div",{className:"evnd__bg-glow evnd__bg-glow--b","data-depth":"15"}),(0,t.jsx)("div",{className:"evnd__bg-particles","data-depth":"18",children:m.map(([e,n,a,i],r)=>(0,t.jsx)("span",{style:{left:`${e}%`,top:`${n}%`,animationDelay:`${a}s`,animationDuration:`${i}s`}},r))})]})}function h({slides:e,heading:a,theme:i}){let[r,o]=(0,n.useState)(0),[s,d]=(0,n.useState)(!1),[c,p]=(0,n.useState)(!1),m=(0,n.useRef)(null);(0,n.useEffect)(()=>{let e=m.current;if(!e)return;let t=new IntersectionObserver(([e])=>p(e.isIntersecting),{threshold:.35});return t.observe(e),()=>t.disconnect()},[]),(0,n.useEffect)(()=>{if(!c||s||e.length<2)return;let t=setTimeout(()=>{o(t=>(t+1)%e.length)},4e3);return()=>clearTimeout(t)},[r,c,s,e.length]);let u=i?{"--ca":i.accent,"--ca2":i.accent2,"--cg":i.glow}:void 0;return(0,t.jsxs)("div",{ref:m,className:"evnd__cards",style:u,onMouseEnter:()=>d(!0),onMouseLeave:()=>d(!1),children:[(0,t.jsx)(g,{}),a&&(0,t.jsxs)("div",{className:"evnd__cards-head",children:[(0,t.jsxs)("span",{className:"evnd__cards-live",children:[(0,t.jsx)("span",{className:"evnd__cards-livedot"}),a]}),(0,t.jsx)("span",{className:"evnd__cards-sys",children:"AI ENGINE"})]}),(0,t.jsx)("div",{className:"evnd__cards-stage",children:e.map((e,n)=>(0,t.jsxs)("div",{className:`evnd__card ${n===r?"is-active":""}`,"aria-hidden":n!==r||void 0,children:[(0,t.jsxs)("span",{className:"evnd__card-status",children:[(0,t.jsx)("span",{className:"evnd__card-statusdot"}),e.status]}),(0,t.jsxs)("div",{className:"evnd__card-hero",children:[(0,t.jsx)(l,{value:e.value,decimals:e.decimals,suffix:e.suffix,active:n===r}),(0,t.jsx)("span",{className:"evnd__card-metriclabel",children:e.metricLabel})]}),(0,t.jsx)("h3",{className:"evnd__card-title",children:e.title}),(0,t.jsx)("ul",{className:"evnd__card-kpis",children:e.kpis.map(e=>(0,t.jsxs)("li",{children:[(0,t.jsx)("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"3",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:(0,t.jsx)("polyline",{points:"20 6 9 17 4 12"})}),e]},e))}),(0,t.jsx)("p",{className:"evnd__card-desc",children:e.desc})]},e.title))}),(0,t.jsxs)("div",{className:"evnd__cards-nav",children:[(0,t.jsxs)("span",{className:"evnd__cards-counter",children:[String(r+1).padStart(2,"0"),"/",String(e.length).padStart(2,"0")]}),(0,t.jsx)("div",{className:"evnd__cards-bars",children:e.map((e,n)=>(0,t.jsx)("button",{type:"button","aria-label":`Go to ${e.title}`,className:`evnd__cards-bar ${n===r?"is-active":""}`,onClick:()=>o(n)},e.title))})]})]})}e.s(["default",0,function({bannerImage:e="/images/bg-header-5.png",cardNumber:l="",cardTitle:c="EV Logistics",cardSubtitle:p="Cleaner miles, lower costs",eyebrow:m="/ EV-Native Design /",titleLead:g="BUILT FOR ELECTRIC. ",titleAccent:u="NOT ADAPTED.",features:f=r,image:x="/images/premium-ev-van.png",imageAlt:v="DoorMile electric delivery van",badges:b=o,stats:_=s,gapTop:w=!1,gapBottom:y=!1,ariaLabel:j,mediaSlot:k,slides:N,cardsHeading:z,cardsTheme:L}){let S=(0,n.useRef)(null),E=!!N&&N.length>0;return(0,n.useEffect)(()=>{let e=S.current;if(!e)return;let t=i.ScrollTrigger.create({trigger:e,start:"top bottom",end:"bottom top",scrub:!0,onUpdate:()=>{if(window.innerWidth>=1021){let t=window.scrollY,n=e.getBoundingClientRect().top+t;a.default.set(e,{backgroundPosition:`center ${.3*(t-n)}px`})}else a.default.set(e,{backgroundPosition:""})}});return()=>t?.kill()},[]),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("style",{dangerouslySetInnerHTML:{__html:`
|
||
/* ============================================================
|
||
EV-Native Design — redesigned section
|
||
bg #080808 \xb7 red #ef4444 \xb7 Manrope
|
||
============================================================ */
|
||
|
||
.evnd, .evnd * { font-family: "Manrope", Sans-serif !important; }
|
||
|
||
/* External gap helpers — keep stacked workflow sections on one rhythm
|
||
(Desktop 40 \xb7 Tablet 32 \xb7 Mobile 24). Single-sided per boundary. */
|
||
.evnd-gap-top { margin-top: 40px !important; }
|
||
.evnd-gap-bottom { margin-bottom: 40px !important; }
|
||
|
||
.evnd {
|
||
position: relative;
|
||
isolation: isolate;
|
||
overflow: hidden;
|
||
background: #080808;
|
||
/* flat top so it connects seamlessly to the banner above; rounded
|
||
bottom only, and no top margin so there is no white gap */
|
||
border-radius: 0 0 clamp(16px, 2vw, 28px) clamp(16px, 2vw, 28px);
|
||
margin: 0 0 clamp(28px, 5vw, 64px);
|
||
padding: 64px 48px clamp(48px, 6vw, 80px);
|
||
}
|
||
/* subtle diagonal light band for depth (matches reference) */
|
||
.evnd::before {
|
||
content: '';
|
||
position: absolute;
|
||
inset: 0;
|
||
z-index: 0;
|
||
pointer-events: none;
|
||
background: linear-gradient(120deg, transparent 28%, rgba(255,255,255,0.015) 50%, transparent 72%);
|
||
}
|
||
.evnd__inner { position: relative; z-index: 1; max-width: 1280px; margin: 0 auto; }
|
||
|
||
/* ---- MAIN GRID ---- */
|
||
.evnd__grid {
|
||
display: grid;
|
||
grid-template-columns: 1.15fr 1fr;
|
||
gap: clamp(32px, 4vw, 56px);
|
||
align-items: center;
|
||
}
|
||
/* Split-screen workflow layout: ~60/40 so the live dashboard column
|
||
carries enough weight to balance the Three.js scene. align-items:
|
||
stretch lets the cards panel match the scene height. */
|
||
.evnd__grid--cards {
|
||
grid-template-columns: 1.5fr 1fr;
|
||
align-items: stretch;
|
||
}
|
||
.evnd__grid--cards .evnd__left { justify-content: center; }
|
||
.evnd__grid--cards .evnd__left,
|
||
.evnd__grid--cards .evnd__media { width: 100%; }
|
||
|
||
/* ---- Desktop height alignment: scene and insight panel share one row
|
||
height. A min-height floor on the scene column sets the baseline row
|
||
height (≥620px so the tallest slide's status → metric → title → KPIs →
|
||
description fits with the footer fully clear). Both columns stretch to
|
||
the row via grid align-items: stretch.
|
||
|
||
The panel uses min-height:100% (not a hard height) and its card stage
|
||
is flex: 1 0 auto — it grows to fill the row but, crucially, NEVER
|
||
shrinks below its own content. So a long description can only push the
|
||
panel taller, never overlap the nav footer; the grid row grows with it
|
||
and the scene (height:100%) stretches to match. Result: the card height
|
||
always equals the scene height AND the 01/04 counter + pagination stay
|
||
pinned to the bottom with dedicated, un-overlappable space. */
|
||
@media (min-width: 992px) {
|
||
.evnd__grid--cards .evnd__left {
|
||
min-height: clamp(620px, 44vw, 680px);
|
||
}
|
||
.evnd__grid--cards .evnd__media,
|
||
.evnd__grid--cards .evnd__imgwrap--media,
|
||
.evnd__grid--cards .wf-scene { height: 100%; }
|
||
.evnd__grid--cards .wf-scene { aspect-ratio: auto; }
|
||
.evnd__grid--cards .evnd__cards { min-height: 100%; }
|
||
/* grow to fill the row, but hold content height as a hard floor so
|
||
the footer can never ride up over the description */
|
||
.evnd__grid--cards .evnd__cards-stage { flex: 1 0 auto; min-height: 0; }
|
||
/* centre the slide content in the taller stage for a balanced panel */
|
||
.evnd__grid--cards .evnd__card { justify-content: center; }
|
||
}
|
||
|
||
.evnd__left {
|
||
display: flex;
|
||
flex-direction: column;
|
||
align-items: flex-start;
|
||
}
|
||
|
||
.evnd__right {
|
||
display: flex;
|
||
flex-direction: column;
|
||
}
|
||
|
||
.evnd__eyebrow {
|
||
display: inline-flex;
|
||
align-items: center;
|
||
gap: 12px;
|
||
color: #ef4444 !important;
|
||
font-weight: 800;
|
||
text-transform: uppercase;
|
||
letter-spacing: 0.16em;
|
||
font-size: 13px;
|
||
margin-bottom: 20px;
|
||
}
|
||
.evnd__eyebrow::before {
|
||
content: '';
|
||
width: 16px;
|
||
height: 2px;
|
||
background: #ef4444;
|
||
}
|
||
|
||
.evnd__title {
|
||
color: #fff !important;
|
||
font-weight: 800 !important;
|
||
font-size: clamp(32px, 3.8vw, 48px) !important;
|
||
line-height: 1.15 !important;
|
||
letter-spacing: -0.01em;
|
||
margin: 0 0 36px 0;
|
||
}
|
||
@media (min-width: 768px) {
|
||
.evnd__title {
|
||
white-space: nowrap;
|
||
}
|
||
}
|
||
.evnd__title .accent {
|
||
color: #ef4444 !important;
|
||
}
|
||
|
||
.evnd__media {
|
||
position: relative;
|
||
width: 100%;
|
||
}
|
||
.evnd__glow {
|
||
position: absolute;
|
||
left: 50%; bottom: -4%;
|
||
width: 80%; height: 80px;
|
||
transform: translateX(-50%);
|
||
background: radial-gradient(50% 50% at 50% 50%, rgba(239,68,68,0.3), transparent 72%);
|
||
filter: blur(35px);
|
||
z-index: 0;
|
||
animation: evndGlow 4s ease-in-out infinite;
|
||
}
|
||
.evnd__imgwrap {
|
||
position: relative;
|
||
z-index: 1;
|
||
overflow: hidden;
|
||
border-radius: 16px;
|
||
border: 1px solid rgba(255,255,255,0.06);
|
||
box-shadow: 0 30px 60px -25px rgba(0,0,0,0.85);
|
||
}
|
||
.evnd__img {
|
||
display: block;
|
||
width: 100%;
|
||
height: auto;
|
||
object-fit: cover;
|
||
transition: transform 0.8s cubic-bezier(0.25, 1, 0.5, 1);
|
||
}
|
||
.evnd__imgwrap:hover .evnd__img {
|
||
transform: scale(1.03);
|
||
}
|
||
|
||
/* Badge overlay styling */
|
||
.evnd__badge {
|
||
position: absolute;
|
||
z-index: 2;
|
||
display: flex;
|
||
flex-direction: column;
|
||
gap: 2px;
|
||
padding: 12px 16px;
|
||
background: rgba(13,13,13,0.72);
|
||
border: 1px solid rgba(255,255,255,0.08);
|
||
border-radius: 8px;
|
||
backdrop-filter: blur(12px);
|
||
-webkit-backdrop-filter: blur(12px);
|
||
}
|
||
.evnd__badge b {
|
||
color: #ef4444 !important;
|
||
font-weight: 800;
|
||
font-size: 24px;
|
||
line-height: 1;
|
||
}
|
||
.evnd__badge span {
|
||
color: rgba(255,255,255,0.7) !important;
|
||
font-size: 10px;
|
||
font-weight: 700;
|
||
letter-spacing: 0.08em;
|
||
text-transform: uppercase;
|
||
}
|
||
.evnd__badge--tl { top: 20px; left: 20px; }
|
||
.evnd__badge--br { bottom: 20px; right: 20px; }
|
||
|
||
/* ---- Feature cards ---- */
|
||
.evnd__features {
|
||
display: flex;
|
||
flex-direction: column;
|
||
gap: 16px;
|
||
height: 100%;
|
||
justify-content: space-between;
|
||
}
|
||
.evnd-feature {
|
||
position: relative;
|
||
display: grid;
|
||
grid-template-columns: 48px minmax(0, 1fr) auto;
|
||
gap: 20px;
|
||
align-items: start;
|
||
background: rgba(255,255,255,0.02);
|
||
border: 1px solid rgba(255,255,255,0.05);
|
||
border-radius: 16px;
|
||
padding: 24px;
|
||
overflow: hidden;
|
||
transition: background-color 0.4s ease, border-color 0.4s ease, transform 0.4s cubic-bezier(.25,1,.5,1);
|
||
}
|
||
.evnd-feature__body { min-width: 0; }
|
||
.evnd-feature::before {
|
||
content: '';
|
||
position: absolute;
|
||
left: 0; top: 0; bottom: 0;
|
||
width: 3px;
|
||
background: #ef4444;
|
||
transform: scaleY(0);
|
||
transform-origin: bottom;
|
||
transition: transform 0.4s ease;
|
||
}
|
||
.evnd-feature:hover {
|
||
background: rgba(239,68,68,0.03);
|
||
border-color: rgba(239,68,68,0.2);
|
||
transform: translateY(-2px);
|
||
}
|
||
.evnd-feature:hover::before { transform: scaleY(1); }
|
||
|
||
.evnd-feature__icon-container {
|
||
width: 48px; height: 48px;
|
||
display: flex; align-items: center; justify-content: center;
|
||
background: rgba(255,255,255,0.03);
|
||
border: 1px solid rgba(255,255,255,0.08);
|
||
border-radius: 12px;
|
||
transition: background-color 0.3s ease, border-color 0.3s ease;
|
||
}
|
||
.evnd-feature:hover .evnd-feature__icon-container {
|
||
background: rgba(239,68,68,0.08);
|
||
border-color: rgba(239,68,68,0.25);
|
||
}
|
||
|
||
.evnd-icon {
|
||
width: 22px;
|
||
height: 22px;
|
||
display: block;
|
||
}
|
||
|
||
.evnd-feature__title {
|
||
color: #fff !important;
|
||
font-weight: 700;
|
||
font-size: 15px !important;
|
||
text-transform: uppercase;
|
||
letter-spacing: 0.05em;
|
||
margin: 4px 0 8px;
|
||
transition: color 0.3s ease;
|
||
}
|
||
.evnd-feature:hover .evnd-feature__title { color: #ef4444 !important; }
|
||
.evnd-feature__desc {
|
||
color: rgba(255,255,255,0.65) !important;
|
||
font-weight: 400 !important;
|
||
font-size: 14px !important;
|
||
line-height: 1.6 !important;
|
||
margin: 0;
|
||
}
|
||
.evnd-feature__arrow {
|
||
color: rgba(255,255,255,0.25);
|
||
font-size: 16px;
|
||
align-self: flex-start;
|
||
margin-top: 4px;
|
||
transition: color 0.3s ease, transform 0.3s ease;
|
||
}
|
||
.evnd-feature:hover .evnd-feature__arrow { color: #ef4444; transform: translate(3px, -3px); }
|
||
|
||
/* When the left media is a live 3D scene, let it define its own height
|
||
(via aspect-ratio) — drop the image-only hover zoom container quirks. */
|
||
.evnd__imgwrap--media { box-shadow: 0 30px 60px -25px rgba(0,0,0,0.85); }
|
||
|
||
/* ============================================================
|
||
Rotating "live AI insight" cards (split-screen right column).
|
||
Themed per-workflow via CSS vars (--ca accent \xb7 --ca2 secondary \xb7
|
||
--cg glow). Falls back to the section red when no theme is passed.
|
||
============================================================ */
|
||
.evnd__cards {
|
||
--ca: #ef4444;
|
||
--ca2: #f59e0b;
|
||
--cg: rgba(239,68,68,0.22);
|
||
position: relative;
|
||
display: flex;
|
||
flex-direction: column;
|
||
gap: 22px;
|
||
width: 100%;
|
||
/* panel surface so the column reads as a real dashboard, not empty space */
|
||
background:
|
||
radial-gradient(120% 80% at 100% 0%, color-mix(in srgb, var(--ca) 9%, transparent) 0%, transparent 55%),
|
||
linear-gradient(180deg, rgba(255,255,255,0.025) 0%, rgba(255,255,255,0.01) 100%);
|
||
border: 1px solid rgba(255,255,255,0.07);
|
||
border-radius: 20px;
|
||
padding: 26px 26px 22px;
|
||
overflow: hidden;
|
||
isolation: isolate;
|
||
}
|
||
/* ============================================================
|
||
Layered "AI intelligence" backdrop (behind the card content).
|
||
Overscanned by 12% on every side so the scroll-parallax never
|
||
exposes a panel edge. Whole stack is colour = accent, individual
|
||
layers stay inside a 5–12% opacity budget. z-index 0; content is z 1.
|
||
============================================================ */
|
||
.evnd__bg {
|
||
position: absolute;
|
||
/* generous overscan so scroll-parallax never exposes a panel edge */
|
||
inset: -20%;
|
||
z-index: 0;
|
||
color: var(--ca);
|
||
pointer-events: none;
|
||
overflow: hidden;
|
||
}
|
||
.evnd__bg > * { position: absolute; inset: 0; }
|
||
|
||
/* Layer B — technical grid (large spacing, softer than the 3D floor) */
|
||
.evnd__bg-grid {
|
||
background-image:
|
||
linear-gradient(to right, currentColor 1px, transparent 1px),
|
||
linear-gradient(to bottom, currentColor 1px, transparent 1px);
|
||
background-size: 64px 64px;
|
||
opacity: 0.05;
|
||
-webkit-mask-image: radial-gradient(120% 100% at 80% 0%, #000 30%, transparent 85%);
|
||
mask-image: radial-gradient(120% 100% at 80% 0%, #000 30%, transparent 85%);
|
||
}
|
||
|
||
/* Layer A — routing network graph */
|
||
.evnd__bg-net { width: 100%; height: 100%; opacity: 0.11; }
|
||
.evnd__bg-mesh { opacity: 0.55; }
|
||
.evnd__bg-nodes circle {
|
||
transform-box: fill-box;
|
||
transform-origin: center;
|
||
animation: evndNode 3.6s ease-in-out infinite;
|
||
}
|
||
@keyframes evndNode { 0%,100% { opacity: 0.45; } 50% { opacity: 1; } }
|
||
.evnd__bg-flow {
|
||
opacity: 0.85;
|
||
stroke-dasharray: 14 320;
|
||
animation: evndFlow 7s linear infinite;
|
||
}
|
||
.evnd__bg-flow--2 { animation-duration: 9s; animation-delay: -3s; }
|
||
@keyframes evndFlow { to { stroke-dashoffset: -334; } }
|
||
|
||
/* Layer C — ambient glow field (slow breathing, 9–11s) */
|
||
.evnd__bg-glow { inset: auto; border-radius: 50%; filter: blur(46px); }
|
||
.evnd__bg-glow--a {
|
||
top: -6%; right: -6%;
|
||
width: 58%; height: 50%;
|
||
background: radial-gradient(50% 50% at 50% 50%, var(--cg), transparent 72%);
|
||
animation: evndBreathe 9.5s ease-in-out infinite;
|
||
}
|
||
.evnd__bg-glow--b {
|
||
bottom: -8%; left: -10%;
|
||
width: 52%; height: 46%;
|
||
background: radial-gradient(50% 50% at 50% 50%, color-mix(in srgb, var(--ca2) 55%, var(--cg)), transparent 72%);
|
||
opacity: 0.6;
|
||
animation: evndBreathe 11.5s ease-in-out infinite;
|
||
animation-delay: -4s;
|
||
}
|
||
@keyframes evndBreathe {
|
||
0%,100% { opacity: 0.4; transform: scale(0.96); }
|
||
50% { opacity: 0.85; transform: scale(1.06); }
|
||
}
|
||
|
||
/* Layer D — data particles (sparse, slow drift) */
|
||
.evnd__bg-particles span {
|
||
position: absolute;
|
||
width: 3px; height: 3px;
|
||
border-radius: 50%;
|
||
background: currentColor;
|
||
opacity: 0;
|
||
box-shadow: 0 0 6px currentColor;
|
||
animation-name: evndParticle;
|
||
animation-timing-function: ease-in-out;
|
||
animation-iteration-count: infinite;
|
||
}
|
||
@keyframes evndParticle {
|
||
0% { opacity: 0; transform: translateY(8px); }
|
||
20% { opacity: 0.5; }
|
||
80% { opacity: 0.5; }
|
||
100% { opacity: 0; transform: translateY(-22px); }
|
||
}
|
||
|
||
.evnd__cards-head,
|
||
.evnd__cards-stage,
|
||
.evnd__cards-nav { position: relative; z-index: 1; }
|
||
|
||
/* dashboard header row */
|
||
.evnd__cards-head {
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: space-between;
|
||
gap: 12px;
|
||
padding-bottom: 4px;
|
||
}
|
||
.evnd__cards-live {
|
||
display: inline-flex;
|
||
align-items: center;
|
||
gap: 9px;
|
||
color: var(--ca) !important;
|
||
font-weight: 800;
|
||
font-size: 12px;
|
||
letter-spacing: 0.16em;
|
||
text-transform: uppercase;
|
||
}
|
||
.evnd__cards-livedot {
|
||
width: 8px; height: 8px;
|
||
border-radius: 50%;
|
||
background: var(--ca);
|
||
box-shadow: 0 0 0 0 var(--cg);
|
||
animation: evndPulse 1.8s ease-out infinite;
|
||
}
|
||
@keyframes evndPulse {
|
||
0% { box-shadow: 0 0 0 0 var(--cg); opacity: 1; }
|
||
70% { box-shadow: 0 0 0 8px transparent; opacity: 0.7; }
|
||
100% { box-shadow: 0 0 0 0 transparent; opacity: 1; }
|
||
}
|
||
.evnd__cards-sys {
|
||
color: rgba(255,255,255,0.4) !important;
|
||
font-weight: 700;
|
||
font-size: 11px;
|
||
letter-spacing: 0.18em;
|
||
text-transform: uppercase;
|
||
}
|
||
|
||
.evnd__cards-stage { display: grid; }
|
||
|
||
.evnd__card {
|
||
grid-area: 1 / 1;
|
||
position: relative;
|
||
display: flex;
|
||
flex-direction: column;
|
||
opacity: 0;
|
||
transform: translateY(14px);
|
||
transition: opacity 0.6s ease, transform 0.6s cubic-bezier(.25,1,.5,1);
|
||
pointer-events: none;
|
||
}
|
||
.evnd__card.is-active {
|
||
opacity: 1;
|
||
transform: translateY(0);
|
||
pointer-events: auto;
|
||
}
|
||
|
||
/* status pill */
|
||
.evnd__card-status {
|
||
display: inline-flex;
|
||
align-items: center;
|
||
gap: 8px;
|
||
align-self: flex-start;
|
||
color: rgba(255,255,255,0.82) !important;
|
||
font-weight: 700;
|
||
font-size: 11px;
|
||
letter-spacing: 0.14em;
|
||
text-transform: uppercase;
|
||
padding: 7px 13px;
|
||
background: color-mix(in srgb, var(--ca) 12%, rgba(255,255,255,0.02));
|
||
border: 1px solid color-mix(in srgb, var(--ca) 35%, transparent);
|
||
border-radius: 999px;
|
||
margin-bottom: 20px;
|
||
}
|
||
.evnd__card-statusdot {
|
||
width: 7px; height: 7px;
|
||
border-radius: 50%;
|
||
background: var(--ca);
|
||
box-shadow: 0 0 8px var(--ca);
|
||
animation: evndPulse 1.8s ease-out infinite;
|
||
}
|
||
|
||
/* hero metric */
|
||
.evnd__card-hero {
|
||
display: flex;
|
||
flex-direction: column;
|
||
gap: 4px;
|
||
margin-bottom: 22px;
|
||
}
|
||
.evnd__card-metric {
|
||
display: inline-flex;
|
||
align-items: baseline;
|
||
color: #fff !important;
|
||
font-weight: 800;
|
||
font-size: clamp(48px, 6vw, 68px);
|
||
line-height: 0.95;
|
||
letter-spacing: -0.02em;
|
||
background: linear-gradient(120deg, #fff 0%, var(--ca) 120%);
|
||
-webkit-background-clip: text;
|
||
background-clip: text;
|
||
-webkit-text-fill-color: transparent;
|
||
}
|
||
.evnd__card-metric i {
|
||
font-style: normal;
|
||
font-size: 0.5em;
|
||
font-weight: 800;
|
||
margin-left: 4px;
|
||
-webkit-text-fill-color: var(--ca);
|
||
color: var(--ca);
|
||
}
|
||
.evnd__card-metriclabel {
|
||
color: rgba(255,255,255,0.6) !important;
|
||
font-weight: 600;
|
||
font-size: 14px;
|
||
letter-spacing: 0.02em;
|
||
}
|
||
|
||
.evnd__card-title {
|
||
color: #fff !important;
|
||
font-weight: 800 !important;
|
||
font-size: clamp(17px, 1.7vw, 20px) !important;
|
||
line-height: 1.2 !important;
|
||
letter-spacing: 0.02em;
|
||
text-transform: uppercase;
|
||
margin: 0 0 16px 0 !important;
|
||
}
|
||
|
||
/* outcome indicators */
|
||
.evnd__card-kpis {
|
||
list-style: none;
|
||
margin: 0 0 18px 0;
|
||
padding: 0;
|
||
display: grid;
|
||
gap: 11px;
|
||
}
|
||
.evnd__cards .evnd__card-kpis li {
|
||
display: flex;
|
||
align-items: center;
|
||
gap: 11px;
|
||
/* override the global ".logico-front-end ul li" padding + ::before glyph */
|
||
padding: 0;
|
||
color: rgba(255,255,255,0.82) !important;
|
||
font-weight: 600;
|
||
font-size: 14px;
|
||
letter-spacing: 0.01em;
|
||
}
|
||
.evnd__cards .evnd__card-kpis li::before { content: none !important; display: none !important; }
|
||
.evnd__card-kpis svg {
|
||
flex: none;
|
||
width: 18px; height: 18px;
|
||
padding: 3px;
|
||
color: var(--ca);
|
||
background: color-mix(in srgb, var(--ca) 14%, transparent);
|
||
border: 1px solid color-mix(in srgb, var(--ca) 34%, transparent);
|
||
border-radius: 6px;
|
||
}
|
||
|
||
.evnd__card-desc {
|
||
color: rgba(255,255,255,0.58) !important;
|
||
font-weight: 400 !important;
|
||
font-size: 15.5px !important;
|
||
line-height: 1.7 !important;
|
||
margin: 0 !important;
|
||
}
|
||
|
||
.evnd__cards-nav {
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: space-between;
|
||
gap: 16px;
|
||
margin-top: 6px;
|
||
padding-top: 18px;
|
||
border-top: 1px solid rgba(255,255,255,0.06);
|
||
}
|
||
.evnd__cards-counter {
|
||
color: rgba(255,255,255,0.5) !important;
|
||
font-weight: 700;
|
||
font-size: 13px;
|
||
letter-spacing: 0.08em;
|
||
}
|
||
.evnd__cards-bars { display: flex; gap: 8px; }
|
||
.evnd__cards-bar {
|
||
width: 40px;
|
||
height: 3px;
|
||
border: none;
|
||
padding: 0;
|
||
background: rgba(255,255,255,0.15);
|
||
border-radius: 999px;
|
||
cursor: pointer;
|
||
transition: background-color 0.3s ease, width 0.3s ease;
|
||
}
|
||
.evnd__cards-bar.is-active { width: 56px; background: var(--ca); }
|
||
.evnd__cards-bar:hover { background: rgba(255,255,255,0.35); }
|
||
.evnd__cards-bar.is-active:hover { background: var(--ca); }
|
||
|
||
@media (prefers-reduced-motion: reduce) {
|
||
.evnd__bg-flow, .evnd__bg-nodes circle, .evnd__bg-glow, .evnd__bg-particles span,
|
||
.evnd__cards-livedot, .evnd__card-statusdot { animation: none !important; }
|
||
.evnd__bg-particles span { opacity: 0.4; }
|
||
}
|
||
|
||
/* ---- BOTTOM BAR ---- */
|
||
.evnd__bar {
|
||
display: grid;
|
||
grid-template-columns: repeat(4, 1fr);
|
||
background: rgba(255,255,255,0.02);
|
||
border: 1px solid rgba(255,255,255,0.06);
|
||
border-radius: 16px;
|
||
overflow: hidden;
|
||
margin-top: 60px;
|
||
padding: 38px 0;
|
||
}
|
||
.evnd__bar-item {
|
||
position: relative;
|
||
display: flex;
|
||
flex-direction: column;
|
||
gap: 12px;
|
||
align-items: center;
|
||
justify-content: center;
|
||
text-align: center;
|
||
padding: 12px 24px;
|
||
}
|
||
.evnd__bar-item:not(:last-child)::after {
|
||
content: '';
|
||
position: absolute;
|
||
right: 0;
|
||
top: 15%;
|
||
height: 70%;
|
||
width: 1px;
|
||
background: rgba(255, 255, 255, 0.08);
|
||
}
|
||
|
||
.evnd__bar-val {
|
||
color: #ef4444 !important;
|
||
font-weight: 800;
|
||
font-size: clamp(32px, 4vw, 56px);
|
||
line-height: 1;
|
||
}
|
||
.evnd__bar-label {
|
||
color: #fff !important;
|
||
font-size: 14px;
|
||
font-weight: 600;
|
||
letter-spacing: 0.02em;
|
||
text-transform: none;
|
||
opacity: 0.9;
|
||
}
|
||
|
||
@keyframes evndGlow { 0%,100% { opacity: 0.75; } 50% { opacity: 1; } }
|
||
|
||
/* ---- Responsive ---- */
|
||
@media (max-width: 1024px) {
|
||
.evnd-gap-top { margin-top: 32px !important; }
|
||
.evnd-gap-bottom { margin-bottom: 32px !important; }
|
||
}
|
||
@media (max-width: 991px) {
|
||
.evnd { padding: 48px 32px 56px; }
|
||
.evnd__grid { grid-template-columns: 1fr; gap: 40px; }
|
||
.evnd__title { margin-bottom: 28px; }
|
||
.evnd__features { gap: 14px; }
|
||
}
|
||
@media (max-width: 767px) {
|
||
.evnd-gap-top { margin-top: 24px !important; }
|
||
.evnd-gap-bottom { margin-bottom: 24px !important; }
|
||
/* Pull the KPI bar up close to the card (was a 60px desktop gap) so
|
||
there's no large vertical dead zone before the KPIs on mobile. */
|
||
.evnd__bar { grid-template-columns: repeat(2, 1fr); gap: 24px 0; padding: 24px 0; margin-top: 24px; }
|
||
.evnd__bar-item:nth-child(even)::after { display: none; }
|
||
.evnd__bar-item:nth-child(2)::after { display: none; }
|
||
.evnd__bar-item { padding: 12px 16px; }
|
||
|
||
/* ---- Scene overlay cleanup (mobile) ----
|
||
Keep only the primary top-left KPI badge; the second (bottom-right)
|
||
badge duplicates info in the insight card and covers the route
|
||
visualization, so it is removed. The remaining badge is scaled down
|
||
(~0.72) so it never dominates the now-shorter scene. */
|
||
.evnd__badge--br { display: none !important; }
|
||
.evnd__badge--tl { transform: scale(0.72); transform-origin: top left; }
|
||
|
||
/* ---- Horizontal alignment (WF1 / WF2 only) ----
|
||
The stacked scene column is a grid 1fr track whose auto-minimum
|
||
equals the Three.js canvas min-content (~244px). At 320px that floor
|
||
is wider than the available column, forcing the whole section ~18px
|
||
past its container (left-aligned) → unequal left/right gaps.
|
||
minmax(0,1fr) + min-width:0 let the scene/card columns shrink to the
|
||
container so the scene, card and KPI bar share one symmetric width and
|
||
centre perfectly. Scoped to .evnd__grid--cards (WF1/WF2), so the
|
||
homepage EV section is untouched. */
|
||
.evnd__grid--cards { grid-template-columns: minmax(0, 1fr); }
|
||
.evnd__grid--cards .evnd__left,
|
||
.evnd__grid--cards .evnd__right,
|
||
.evnd__grid--cards .evnd__media,
|
||
.evnd__grid--cards .evnd__cards { min-width: 0; }
|
||
}
|
||
@media (max-width: 480px) {
|
||
.evnd { padding: 40px 16px 48px; }
|
||
/* keep the stat bar a compact 2\xd72 on phones (inherits the centre
|
||
divider from the ≤767 rules) instead of a tall single column */
|
||
.evnd__bar { grid-template-columns: repeat(2, 1fr); gap: 18px 0; padding: 22px 0; }
|
||
.evnd__bar-item { padding: 10px 12px; gap: 8px; }
|
||
.evnd__bar-val { font-size: clamp(26px, 9vw, 34px); }
|
||
.evnd__bar-label { font-size: 12.5px; }
|
||
/* badge already scaled to 0.72 via the ≤767 rule — keep desktop
|
||
internals so the scale (not double-reduction) controls its size */
|
||
|
||
/* feature cards: tighter, no overflow, more room for text */
|
||
.evnd-feature {
|
||
grid-template-columns: 40px minmax(0, 1fr);
|
||
gap: 14px;
|
||
padding: 18px 16px;
|
||
}
|
||
.evnd-feature__icon-container { width: 40px; height: 40px; border-radius: 10px; }
|
||
.evnd-icon { width: 20px; height: 20px; }
|
||
.evnd-feature__title { font-size: 14px !important; letter-spacing: 0.03em; margin: 2px 0 6px; padding-right: 22px; }
|
||
.evnd-feature__desc { font-size: 13px !important; line-height: 1.55 !important; }
|
||
/* arrow occupies its own slot to the right of the icon, no extra column */
|
||
.evnd-feature__arrow { position: absolute; top: 16px; right: 16px; margin: 0; }
|
||
|
||
/* ---- Compact mobile insight card (standard mobile, 390–480px).
|
||
Tighter spacing, smaller typography and a 2-line-clamped
|
||
description so the card stays ~380–480px tall and the KPI bar
|
||
is reached with far less scrolling. ---- */
|
||
.evnd__cards { padding: 20px 18px 16px; gap: 14px; }
|
||
.evnd__cards-sys { display: none; }
|
||
.evnd__cards-head { padding-bottom: 0; }
|
||
.evnd__cards-live { font-size: 11px; }
|
||
.evnd__card-status { margin-bottom: 14px; padding: 6px 12px; font-size: 10.5px; }
|
||
.evnd__card-hero { margin-bottom: 12px; gap: 2px; }
|
||
.evnd__card-metric { font-size: clamp(38px, 12vw, 50px); }
|
||
.evnd__card-metriclabel { font-size: 13px; }
|
||
.evnd__card-title { font-size: 15px !important; margin: 0 0 12px 0 !important; }
|
||
.evnd__card-kpis { margin: 0; gap: 9px; }
|
||
.evnd__card-kpis li { font-size: 14px; }
|
||
.evnd__card-kpis svg { width: 17px; height: 17px; }
|
||
/* Drop the paragraph on mobile — the status, metric, title and
|
||
bullets carry the meaning; this is the single biggest height
|
||
saving and matches the compact mobile structure. */
|
||
.evnd__card-desc { display: none; }
|
||
.evnd__cards-nav { margin-top: 14px; padding-top: 14px; }
|
||
.evnd__cards-bar { width: 30px; }
|
||
.evnd__cards-bar.is-active { width: 44px; }
|
||
}
|
||
/* ---- Medium mobile (≤389px, e.g. 360/375): a notch tighter ---- */
|
||
@media (max-width: 389px) {
|
||
.evnd__cards { padding: 18px 16px 14px; gap: 12px; }
|
||
.evnd__card-status { margin-bottom: 12px; }
|
||
.evnd__card-hero { margin-bottom: 10px; }
|
||
.evnd__card-metric { font-size: clamp(36px, 11.5vw, 46px); }
|
||
.evnd__card-title { font-size: 14.5px !important; margin-bottom: 10px !important; }
|
||
.evnd__card-kpis { gap: 8px; }
|
||
.evnd__card-kpis li { font-size: 13.5px; }
|
||
.evnd__cards-nav { margin-top: 12px; padding-top: 12px; }
|
||
}
|
||
/* ---- Compact mobile (≤340px, e.g. 320): tightest. Drop the paragraph
|
||
entirely — the bullets carry the meaning — so nothing overflows. ---- */
|
||
@media (max-width: 340px) {
|
||
.evnd__cards { padding: 16px 14px 12px; gap: 10px; }
|
||
.evnd__card-status { margin-bottom: 10px; padding: 5px 10px; font-size: 10px; letter-spacing: 0.1em; }
|
||
.evnd__card-hero { margin-bottom: 8px; }
|
||
.evnd__card-metric { font-size: 34px; }
|
||
.evnd__card-metriclabel { font-size: 12px; }
|
||
.evnd__card-title { font-size: 13.5px !important; margin-bottom: 8px !important; }
|
||
.evnd__card-kpis { gap: 7px; }
|
||
.evnd__card-kpis li { font-size: 13px; gap: 9px; }
|
||
.evnd__card-kpis svg { width: 16px; height: 16px; }
|
||
.evnd__cards-nav { margin-top: 10px; padding-top: 10px; }
|
||
}
|
||
`}}),(0,t.jsxs)("div",{className:"elementor-element elementor-element-bbc6760 e-con-full e-flex cut-corner-no sticky-container-off e-con e-parent"+(w?" evnd-gap-top":"")+(y?" evnd-gap-bottom":""),"data-id":"bbc6760","data-element_type":"container","data-e-type":"container","aria-label":j,style:{backgroundColor:"#0d0d0d",width:"calc(100% - 40px)",marginLeft:"20px",marginRight:"20px",borderRadius:"25px",overflow:"hidden"},children:[(0,t.jsx)("div",{ref:S,className:"elementor-element elementor-element-7da6646 e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"7da6646","data-element_type":"container","data-e-type":"container","data-settings":'{"background_background":"classic"}',style:{backgroundPosition:"center 0px",backgroundImage:`url(${e})`,backgroundSize:"cover",backgroundRepeat:"no-repeat",position:"relative",zIndex:2,borderRadius:"25px 25px 0 0",overflow:"hidden"}}),(0,t.jsx)("div",{className:"elementor-element elementor-element-8b5d6e6 e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"8b5d6e6","data-element_type":"container","data-e-type":"container",children:(0,t.jsxs)("div",{className:"elementor-element elementor-element-1f766ea e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"1f766ea","data-element_type":"container","data-e-type":"container",children:[(0,t.jsxs)("div",{className:"elementor-element elementor-element-3b61435 e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"3b61435","data-element_type":"container","data-e-type":"container","data-settings":'{"background_background":"classic"}',children:[l&&(0,t.jsx)("div",{className:"elementor-element elementor-element-c364d1c elementor-widget elementor-widget-text-editor","data-id":"c364d1c","data-element_type":"widget","data-e-type":"widget","data-widget_type":"text-editor.default",children:(0,t.jsx)("div",{className:"elementor-widget-container",children:(0,t.jsx)("p",{children:l})})}),(0,t.jsx)("div",{className:"elementor-element elementor-element-239afbb elementor-widget elementor-widget-logico_heading","data-id":"239afbb","data-element_type":"widget","data-e-type":"widget","data-widget_type":"logico_heading.default",children:(0,t.jsx)("div",{className:"elementor-widget-container",children:(0,t.jsx)("h5",{className:"logico-title",children:c})})}),(0,t.jsx)("div",{className:"elementor-element elementor-element-0d307dd elementor-widget elementor-widget-text-editor","data-id":"0d307dd","data-element_type":"widget","data-e-type":"widget","data-widget_type":"text-editor.default",children:(0,t.jsx)("div",{className:"elementor-widget-container",children:(0,t.jsx)("p",{children:p})})})]}),(0,t.jsx)("div",{className:"elementor-element elementor-element-5aea22e e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"5aea22e","data-element_type":"container","data-e-type":"container","data-settings":'{"background_background":"classic"}'})]})}),(0,t.jsx)("section",{className:"evnd","aria-label":j??"EV-Native Design",children:(0,t.jsxs)("div",{className:"evnd__inner",children:[(0,t.jsx)("span",{className:"evnd__eyebrow",children:m}),(0,t.jsxs)("h2",{className:"evnd__title",children:[g,(0,t.jsx)("span",{className:"accent",children:u})]}),(0,t.jsxs)("div",{className:`evnd__grid${E?" evnd__grid--cards":""}`,children:[(0,t.jsx)("div",{className:"evnd__left",children:(0,t.jsxs)("div",{className:"evnd__media",children:[(0,t.jsx)("div",{className:"evnd__glow"}),(0,t.jsxs)("div",{className:`evnd__imgwrap${k?" evnd__imgwrap--media":""}`,children:[k||(0,t.jsx)("img",{className:"evnd__img",src:x,alt:v,decoding:"async"}),b[0]&&(0,t.jsxs)("div",{className:"evnd__badge evnd__badge--tl",children:[(0,t.jsx)("b",{children:b[0].value}),(0,t.jsx)("span",{children:b[0].label})]}),b[1]&&(0,t.jsxs)("div",{className:"evnd__badge evnd__badge--br",children:[(0,t.jsx)("b",{children:b[1].value}),(0,t.jsx)("span",{children:b[1].label})]})]})]})}),(0,t.jsx)("div",{className:"evnd__right",children:E?(0,t.jsx)(h,{slides:N,heading:z,theme:L}):(0,t.jsx)("div",{className:"evnd__features",children:f.map(e=>(0,t.jsxs)("div",{className:"evnd-feature",children:[(0,t.jsx)("div",{className:"evnd-feature__icon-container","aria-hidden":"true",children:e.icon}),(0,t.jsxs)("div",{className:"evnd-feature__body",children:[(0,t.jsx)("div",{className:"evnd-feature__title",children:e.title}),(0,t.jsx)("p",{className:"evnd-feature__desc",children:e.desc})]}),(0,t.jsx)("span",{className:"evnd-feature__arrow","aria-hidden":"true",children:"↗"})]},e.title))})})]}),(0,t.jsx)("div",{className:"evnd__bar",children:_.map(e=>(0,t.jsxs)("div",{className:"evnd__bar-item",children:[(0,t.jsx)("span",{className:"evnd__bar-label",children:e.label}),(0,t.jsx)(d,{value:e.value,decimals:e.decimals,suffix:e.suffix,className:"evnd__bar-val"})]},e.label))})]})})]})]})}])},58829,e=>{"use strict";var t=e.i(43476),n=e.i(71645);function a({from:e,to:i,duration:r=2e3,decimals:o=0,suffix:s=""}){let[d,l]=(0,n.useState)(e);return(0,n.useEffect)(()=>{let t=null,n=a=>{t||(t=a);let o=Math.min((a-t)/r,1);l(o*(i-e)+e),o<1&&window.requestAnimationFrame(n)};window.requestAnimationFrame(n)},[e,i,r]),(0,t.jsxs)(t.Fragment,{children:[d.toFixed(o),s]})}e.s(["default",0,function(){let[e,i]=(0,n.useState)(!1);return(0,n.useEffect)(()=>{requestAnimationFrame(()=>i(!0))},[]),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("style",{dangerouslySetInnerHTML:{__html:`
|
||
/* ── Hero wrapper: column layout, zero gap between hero + stats ── */
|
||
.miletruth-hero .elementor-element-86f3204 {
|
||
display: flex;
|
||
flex-direction: column;
|
||
gap: 0;
|
||
margin: 0;
|
||
padding: 0 20px;
|
||
}
|
||
|
||
/* ── Hero slider card ── */
|
||
.miletruth-hero-container {
|
||
background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.05) 0%, rgba(0, 0, 0, 0.15) 55%, rgba(0, 0, 0, 0.3) 100%), url('/images/miletruth-bg.png') !important;
|
||
background-size: cover !important;
|
||
background-position: center !important;
|
||
background-repeat: no-repeat !important;
|
||
/* Match the home page hero card (800px) so MileTruth has the same visual
|
||
presence on large desktop, MacBook M1/Pro, and standard laptops. */
|
||
min-height: 800px;
|
||
display: flex;
|
||
flex-direction: column;
|
||
justify-content: center;
|
||
border-radius: 25px 25px 0 0;
|
||
margin-top: 20px;
|
||
padding: 100px 40px;
|
||
}
|
||
.miletruth-hero-container::before {
|
||
display: none !important;
|
||
}
|
||
.miletruth-content {
|
||
position: relative;
|
||
z-index: 2;
|
||
width: 100%;
|
||
padding: 0 40px !important;
|
||
box-sizing: border-box;
|
||
}
|
||
.miletruth-hero .content-slider-item-heading,
|
||
.miletruth-hero .content-slider-item-heading .heading-content {
|
||
color: rgba(255, 255, 255, 0.96) !important;
|
||
font-family: var(--font-manrope), "Manrope", sans-serif !important;
|
||
font-size: clamp(34px, 5.5vw, 72px) !important;
|
||
font-weight: 850 !important;
|
||
line-height: 1.05 !important;
|
||
letter-spacing: -1.5px !important;
|
||
text-transform: uppercase !important;
|
||
text-align: center !important;
|
||
display: block;
|
||
}
|
||
.miletruth-hero .content-slider-item-text {
|
||
margin-top: 22px !important;
|
||
text-align: center !important;
|
||
}
|
||
.miletruth-hero .content-slider-item-text p {
|
||
color: rgba(255, 255, 255, 0.72) !important;
|
||
font-family: var(--font-manrope), "Manrope", sans-serif !important;
|
||
font-size: clamp(17px, 1.6vw, 23px) !important;
|
||
font-weight: 500 !important;
|
||
line-height: 1.65 !important;
|
||
margin: 0 auto !important;
|
||
max-width: 820px;
|
||
}
|
||
.miletruth-hero .slide-content {
|
||
display: flex !important;
|
||
flex-direction: column !important;
|
||
align-items: center !important;
|
||
justify-content: center !important;
|
||
text-align: center !important;
|
||
width: 100% !important;
|
||
height: 100% !important;
|
||
padding: 0 40px !important;
|
||
box-sizing: border-box !important;
|
||
}
|
||
.miletruth-hero .slide-content,
|
||
.miletruth-hero .slide-content-inner {
|
||
/* These carry inherited 20px padding from the slider theme with
|
||
content-box sizing, so width:100% + padding overflowed the viewport
|
||
by ~40px and pushed the hero off-center. Force border-box so the
|
||
padding is contained and the block stays centered. */
|
||
box-sizing: border-box !important;
|
||
}
|
||
.miletruth-hero .slide-content-inner {
|
||
display: flex !important;
|
||
flex-direction: column !important;
|
||
align-items: center !important;
|
||
justify-content: center !important;
|
||
text-align: center !important;
|
||
margin-left: auto !important;
|
||
margin-right: auto !important;
|
||
max-width: 1000px !important;
|
||
width: 100% !important;
|
||
}
|
||
.miletruth-hero .content-slider-item-heading,
|
||
.miletruth-hero .content-slider-item-heading .heading-content {
|
||
text-align: center !important;
|
||
display: block !important;
|
||
width: 100% !important;
|
||
margin-left: auto !important;
|
||
margin-right: auto !important;
|
||
}
|
||
.miletruth-hero .content-slider-item-text {
|
||
display: flex !important;
|
||
justify-content: center !important;
|
||
width: 100% !important;
|
||
margin-top: 23px !important;
|
||
text-align: center !important;
|
||
}
|
||
.miletruth-hero .text-content {
|
||
text-align: center !important;
|
||
max-width: 800px !important;
|
||
margin: 0 auto !important;
|
||
}
|
||
/* The "logico" slider reveal animation leaves these at opacity:0 until
|
||
its JS runs (absent in this rebuild), hiding the heading + subtitle.
|
||
Force them visible. */
|
||
.miletruth-hero .content-slider-item-heading,
|
||
.miletruth-hero .content-slider-item-text,
|
||
.miletruth-hero .logico-content-wrapper-1,
|
||
.miletruth-hero .logico-content-wrapper-2 {
|
||
opacity: 1 !important;
|
||
transform: none !important;
|
||
visibility: visible !important;
|
||
}
|
||
|
||
/* ══════════════════════════════════════════════════════════════════
|
||
Stats bar — dark rounded card overlapping the hero bottom
|
||
══════════════════════════════════════════════════════════════════ */
|
||
.miletruth-hero .elementor-element-8e5c81e {
|
||
display: flex !important;
|
||
flex-direction: column !important;
|
||
justify-content: center !important;
|
||
width: 100% !important;
|
||
margin: -25px 0 0 0 !important;
|
||
background-color: #1F1F1F !important;
|
||
border-radius: 25px !important;
|
||
padding: 40px 0 !important;
|
||
position: relative !important;
|
||
z-index: 1 !important;
|
||
}
|
||
.miletruth-hero .elementor-element-8e5c81e > .e-con-inner {
|
||
width: 100% !important;
|
||
max-width: 1440px !important;
|
||
height: auto !important;
|
||
margin: 0 auto !important;
|
||
padding: 0 40px !important;
|
||
flex-grow: 0 !important;
|
||
box-sizing: border-box !important;
|
||
}
|
||
|
||
/* 4-col grid for counter widgets — rows size to content (not 1fr of the
|
||
container) so the counters aren't parked at the top of a tall row. */
|
||
.miletruth-hero .elementor-element-628123a {
|
||
display: grid !important;
|
||
grid-template-columns: repeat(4, 1fr) !important;
|
||
grid-template-rows: auto !important;
|
||
height: auto !important;
|
||
gap: 40px !important;
|
||
width: 100% !important;
|
||
justify-items: start !important;
|
||
align-items: start !important;
|
||
align-content: start !important;
|
||
}
|
||
|
||
/* Counter: title on top, number below, left-aligned */
|
||
.miletruth-hero .elementor-counter {
|
||
display: flex !important;
|
||
flex-direction: column !important;
|
||
align-items: flex-start !important;
|
||
text-align: left !important;
|
||
}
|
||
|
||
/* Counter title — above the number */
|
||
.miletruth-hero .elementor-counter-title {
|
||
font-family: var(--font-manrope), "Manrope", sans-serif !important;
|
||
font-size: 20px !important;
|
||
font-weight: 600 !important;
|
||
line-height: 1.3em !important;
|
||
color: #FFFFFF !important;
|
||
margin-bottom: 12px !important;
|
||
text-transform: none !important;
|
||
}
|
||
|
||
/* Counter number wrapper — centered */
|
||
.miletruth-hero .elementor-counter-number-wrapper {
|
||
font-family: var(--font-space-grotesk), "Space Grotesk", var(--font-manrope), "Manrope", sans-serif !important;
|
||
font-size: clamp(48px, 6.5vw, 100px) !important;
|
||
font-weight: 700 !important;
|
||
line-height: 1em !important;
|
||
color: #C01227 !important;
|
||
letter-spacing: -0.03em !important;
|
||
display: flex !important;
|
||
align-items: baseline !important;
|
||
justify-content: flex-start !important;
|
||
}
|
||
.miletruth-hero .elementor-counter-number {
|
||
color: #C01227 !important;
|
||
font-size: inherit !important;
|
||
font-weight: inherit !important;
|
||
}
|
||
.miletruth-hero .elementor-counter-number-suffix {
|
||
color: #C01227 !important;
|
||
font-size: inherit !important;
|
||
font-weight: inherit !important;
|
||
letter-spacing: -0.03em !important;
|
||
}
|
||
|
||
/* ── Responsive ── */
|
||
@media (max-width: 1200px) {
|
||
.miletruth-hero .content-slider-item-heading,
|
||
.miletruth-hero .content-slider-item-heading .heading-content {
|
||
font-size: 60px !important;
|
||
}
|
||
}
|
||
@media (max-width: 1024px) {
|
||
.miletruth-hero-container {
|
||
min-height: 600px;
|
||
padding: 120px 0;
|
||
}
|
||
.miletruth-hero .elementor-element-8e5c81e {
|
||
padding: 40px 0 !important;
|
||
}
|
||
.miletruth-hero .elementor-element-628123a {
|
||
grid-template-columns: repeat(2, 1fr) !important;
|
||
gap: 50px 40px !important;
|
||
}
|
||
.miletruth-hero .content-slider-item-heading,
|
||
.miletruth-hero .content-slider-item-heading .heading-content {
|
||
font-size: 50px !important;
|
||
line-height: 1.1 !important;
|
||
}
|
||
}
|
||
@media (max-width: 768px) {
|
||
.miletruth-hero .content-slider-item-heading,
|
||
.miletruth-hero .content-slider-item-heading .heading-content {
|
||
font-size: 40px !important;
|
||
line-height: 1.12 !important;
|
||
}
|
||
.miletruth-hero .content-slider-item-text p {
|
||
font-size: 16px !important;
|
||
}
|
||
}
|
||
@media (max-width: 580px) {
|
||
.miletruth-hero-container {
|
||
min-height: 500px;
|
||
padding: 100px 0;
|
||
}
|
||
.miletruth-hero .elementor-element-86f3204 {
|
||
padding: 0 12px;
|
||
}
|
||
/* Collapse the nested horizontal padding (was 40px + 40px on top of the
|
||
12px wrapper) — at 320px that left only ~136px for text and the long
|
||
heading words overflowed, causing horizontal scroll + off-center look. */
|
||
.miletruth-content {
|
||
padding: 0 14px !important;
|
||
}
|
||
.miletruth-hero .slide-content {
|
||
padding: 0 !important;
|
||
}
|
||
.miletruth-hero .elementor-element-8e5c81e {
|
||
padding: 30px 0 !important;
|
||
border-radius: 20px !important;
|
||
}
|
||
.miletruth-hero .elementor-element-8e5c81e > .e-con-inner {
|
||
padding: 0 20px !important;
|
||
}
|
||
.miletruth-hero .elementor-element-628123a {
|
||
grid-template-columns: 1fr !important;
|
||
gap: 36px !important;
|
||
}
|
||
.miletruth-hero .content-slider-item-heading,
|
||
.miletruth-hero .content-slider-item-heading .heading-content {
|
||
font-size: clamp(26px, 8vw, 32px) !important;
|
||
letter-spacing: -0.5px !important;
|
||
/* never let a single long word push past the viewport */
|
||
overflow-wrap: break-word;
|
||
word-break: break-word;
|
||
}
|
||
}
|
||
`}}),(0,t.jsx)("div",{className:"elementor-63 miletruth-hero",children:(0,t.jsxs)("div",{className:"elementor-element elementor-element-86f3204 e-con-full e-flex cut-corner-no sticky-container-off e-con e-parent","data-id":"86f3204","data-element_type":"container","data-e-type":"container",children:[(0,t.jsx)("div",{className:"miletruth-hero-container",children:(0,t.jsx)("div",{className:"e-con-inner miletruth-content",children:(0,t.jsx)("div",{className:"logico-content-slider-widget",children:(0,t.jsx)("div",{className:"content-slider-wrapper",children:(0,t.jsx)("div",{className:"content-slider-container",children:(0,t.jsx)("div",{className:"content-slider owl-carousel owl-theme",children:(0,t.jsx)("div",{className:"content-item slider-item elementor-repeater-item-6867061 slide-style-standard",children:(0,t.jsx)("div",{className:"slide-content",style:{paddingLeft:0,paddingRight:0},children:(0,t.jsxs)("div",{className:"slide-content-inner",children:[(0,t.jsx)("h1",{className:"content-slider-item-heading logico-content-wrapper-1",children:(0,t.jsxs)("span",{className:"heading-content",children:["The Only AI Built",(0,t.jsx)("br",{}),"Exclusively for Logistics"]})}),(0,t.jsx)("div",{className:"content-slider-item-text logico-content-wrapper-2",children:(0,t.jsx)("div",{className:"text-content",children:(0,t.jsx)("p",{children:"Optimizes every stage of the delivery journey for maximum efficiency."})})})]})})})})})})})})}),(0,t.jsx)("div",{className:"elementor-element elementor-element-8e5c81e e-flex e-con-boxed cut-corner-no sticky-container-off e-con e-child","data-id":"8e5c81e","data-element_type":"container","data-e-type":"container","data-settings":'{"background_background":"classic"}',children:(0,t.jsx)("div",{className:"e-con-inner",children:(0,t.jsxs)("div",{className:"elementor-element elementor-element-628123a e-con-full e-grid cut-corner-no sticky-container-off e-con e-child","data-id":"628123a","data-element_type":"container","data-e-type":"container",children:[(0,t.jsx)("div",{className:"elementor-element elementor-element-1da88b5 elementor-widget elementor-widget-counter","data-id":"1da88b5","data-element_type":"widget","data-e-type":"widget","data-widget_type":"counter.default",children:(0,t.jsx)("div",{className:"elementor-widget-container",children:(0,t.jsxs)("div",{className:"elementor-counter",children:[(0,t.jsx)("div",{className:"elementor-counter-title",children:"SLA Compliance"}),(0,t.jsxs)("div",{className:"elementor-counter-number-wrapper",children:[(0,t.jsx)("span",{className:"elementor-counter-number",children:e?(0,t.jsx)(a,{from:1,to:99.9,decimals:1,suffix:""}):"1"}),(0,t.jsx)("span",{className:"elementor-counter-number-suffix",children:" %"})]})]})})}),(0,t.jsx)("div",{className:"elementor-element elementor-element-1da88b5 elementor-widget elementor-widget-counter","data-id":"1da88b5-2","data-element_type":"widget","data-e-type":"widget","data-widget_type":"counter.default",children:(0,t.jsx)("div",{className:"elementor-widget-container",children:(0,t.jsxs)("div",{className:"elementor-counter",children:[(0,t.jsx)("div",{className:"elementor-counter-title",children:"Distance Saved"}),(0,t.jsxs)("div",{className:"elementor-counter-number-wrapper",children:[(0,t.jsx)("span",{className:"elementor-counter-number",children:e?(0,t.jsx)(a,{from:1,to:42,decimals:0,suffix:""}):"1"}),(0,t.jsx)("span",{className:"elementor-counter-number-suffix",children:" %"})]})]})})}),(0,t.jsx)("div",{className:"elementor-element elementor-element-1da88b5 elementor-widget elementor-widget-counter","data-id":"1da88b5-3","data-element_type":"widget","data-e-type":"widget","data-widget_type":"counter.default",children:(0,t.jsx)("div",{className:"elementor-widget-container",children:(0,t.jsxs)("div",{className:"elementor-counter",children:[(0,t.jsx)("div",{className:"elementor-counter-title",children:"Fewer Vehicles"}),(0,t.jsxs)("div",{className:"elementor-counter-number-wrapper",children:[(0,t.jsx)("span",{className:"elementor-counter-number",children:e?(0,t.jsx)(a,{from:1,to:37,decimals:0,suffix:""}):"1"}),(0,t.jsx)("span",{className:"elementor-counter-number-suffix",children:" %"})]})]})})}),(0,t.jsx)("div",{className:"elementor-element elementor-element-a1cf3d4 elementor-widget elementor-widget-counter","data-id":"a1cf3d4","data-element_type":"widget","data-e-type":"widget","data-widget_type":"counter.default",children:(0,t.jsx)("div",{className:"elementor-widget-container",children:(0,t.jsxs)("div",{className:"elementor-counter",children:[(0,t.jsx)("div",{className:"elementor-counter-title",children:"Dispatch Latency"}),(0,t.jsxs)("div",{className:"elementor-counter-number-wrapper",children:[(0,t.jsx)("span",{className:"elementor-counter-number",children:e?(0,t.jsx)(a,{from:1,to:45,decimals:0,suffix:""}):"45"}),(0,t.jsx)("span",{className:"elementor-counter-number-suffix",children:"ms"})]})]})})})]})})})]})})]})}])},16971,e=>{"use strict";var t=e.i(43476),n=e.i(71645),a=e.i(70703);let i=(0,a.default)(()=>e.A(49712),{loadableGenerated:{modules:[29539]},ssr:!1}),r=(0,a.default)(()=>e.A(40999),{loadableGenerated:{modules:[39184]},ssr:!1}),o={optimization:"#020617",logistics:"#08080c"},s={optimization:{center:.78,amp:.14,speed:.5,still:.85},logistics:{center:.5,amp:.13,speed:.4,still:.52}};e.s(["default",0,function({variant:e,ariaLabel:a}){let d=(0,n.useRef)(null),l=(0,n.useRef)(s[e].still),[c,p]=(0,n.useState)(!1),[m,g]=(0,n.useState)(!1),[h,u]=(0,n.useState)(!1),[f,x]=(0,n.useState)(!1),[v,b]=(0,n.useState)(!1);return(0,n.useEffect)(()=>{let e=window.matchMedia("(max-width: 767px)"),t=window.matchMedia("(min-width: 768px) and (max-width: 1024px)"),n=window.matchMedia("(prefers-reduced-motion: reduce)"),a=()=>{u(e.matches),x(t.matches),b(n.matches)};return a(),e.addEventListener("change",a),t.addEventListener("change",a),n.addEventListener("change",a),()=>{e.removeEventListener("change",a),t.removeEventListener("change",a),n.removeEventListener("change",a)}},[]),(0,n.useEffect)(()=>{let e=d.current;if(!e)return;let t=new IntersectionObserver(e=>{e.some(e=>e.isIntersecting)&&(p(!0),g(!0),t.disconnect())},{rootMargin:"60% 0px"}),n=new IntersectionObserver(e=>g(e.some(e=>e.isIntersecting)),{rootMargin:"10% 0px"});return t.observe(e),n.observe(e),()=>{t.disconnect(),n.disconnect()}},[]),(0,n.useEffect)(()=>{let t=s[e];if(v){l.current=t.still;return}if(!m)return;let n=0,a=()=>{let e=performance.now()/1e3;l.current=t.center+Math.sin(e*t.speed)*t.amp,n=requestAnimationFrame(a)};return n=requestAnimationFrame(a),()=>cancelAnimationFrame(n)},[e,v,m]),(0,t.jsxs)("div",{ref:d,className:"wf-scene",role:"img","aria-label":a??"DoorMile 3D logistics scene",style:{background:o[e]},children:[(0,t.jsx)("style",{dangerouslySetInnerHTML:{__html:`
|
||
.wf-scene {
|
||
position: relative;
|
||
width: 100%;
|
||
/* Compact, fixed-ratio media panel — replaces the multi-viewport pinned
|
||
scroll experience so the workflow is dramatically shorter. */
|
||
aspect-ratio: 4 / 3;
|
||
border-radius: 16px;
|
||
overflow: hidden;
|
||
}
|
||
.wf-scene__canvas { position: absolute; inset: 0; }
|
||
.wf-scene__canvas canvas { display: block; width: 100% !important; height: 100% !important; }
|
||
@media (max-width: 991px) {
|
||
.wf-scene { aspect-ratio: 16 / 10; }
|
||
}
|
||
/* Phones: shorter scene panel (~17% less tall than the old 4/3) so the
|
||
card + KPI bar are reached sooner. The closer mobile camera framing
|
||
keeps the depot/routes/vehicles readable in the reduced height. */
|
||
@media (max-width: 480px) {
|
||
.wf-scene { aspect-ratio: 16 / 10; }
|
||
}
|
||
`}}),(0,t.jsx)("div",{className:"wf-scene__canvas",children:c&&("optimization"===e?(0,t.jsx)(i,{progress:l,reduced:v,isMobile:h,isTablet:f,active:m}):(0,t.jsx)(r,{progress:l,reduced:v,isMobile:h,active:m}))})]})}])},76756,e=>{"use strict";var t=e.i(43476),n=e.i(14224),a=e.i(16971);let i={accent:"#00E5FF",accent2:"#3B82F6",glow:"rgba(0,229,255,0.22)"},r=[{status:"Optimization Running",title:"Route Optimization",value:42,suffix:"%",metricLabel:"Distance Saved",kpis:["Route optimization active","37% fewer vehicles required","SLA compliance 99.9%"],desc:"AI selects the most efficient delivery paths across every zone, cutting unnecessary travel and fuel and battery consumption."},{status:"Fleet Balancing",title:"Distance Reduction",value:37,suffix:"%",metricLabel:"Fewer Vehicles",kpis:["Load balancing engaged","Same volume, leaner fleet","Lower maintenance & staffing"],desc:"Intelligent load balancing fulfils the same order volume with a leaner, better-utilised fleet — fewer miles, fewer vehicles."},{status:"Dispatch Active",title:"Fleet Efficiency",value:31,suffix:"%",metricLabel:"Lower Operating Cost",kpis:["Higher fleet utilisation","Predictable operations","Reduced fuel & overhead"],desc:"Smart grouping and dispatch keep operations smooth and predictable while reducing maintenance and staffing cost."},{status:"SLA Safe",title:"SLA Performance",value:99.9,decimals:1,suffix:"%",metricLabel:"On-Time Delivery",kpis:["Real-time route correction","Consistent delivery windows","100% order fulfilment"],desc:"Real-time routing keeps deliveries on time across all zones, sustaining high customer satisfaction and SLA performance."}],o=[{value:"-42%",label:"DISTANCE SAVED"},{value:"-37%",label:"FEWER VEHICLES"}],s=[{value:42,suffix:"%",label:"Distance Saved"},{value:28,suffix:"%",label:"Faster Routes"},{value:31,suffix:"%",label:"Lower Cost"},{value:99.9,decimals:1,suffix:"%",label:"On-Time"}];e.s(["default",0,function(){return(0,t.jsx)(n.default,{ariaLabel:"Workflow 1 — Performance",gapTop:!0,gapBottom:!0,bannerImage:"/images/home3-slide-1.jpg",cardTitle:"OPTIMIZE EVERY MILE",cardSubtitle:"Cut travel distance, reduce operating cost, and improve fleet productivity across every route.",eyebrow:"/ Performance /",titleLead:"SMARTER ROUTES. ",titleAccent:"LOWER COSTS.",mediaSlot:(0,t.jsx)(a.default,{variant:"optimization",ariaLabel:"Live route optimization engine"}),slides:r,cardsHeading:"Performance Insight",cardsTheme:i,badges:o,stats:s})}])},38730,e=>{"use strict";var t=e.i(43476),n=e.i(14224),a=e.i(16971);let i={accent:"#E2354A",accent2:"#F59E0B",glow:"rgba(226,53,74,0.24)"},r=[{status:"Generating Routes",title:"Generate Routes",value:6,suffix:" plans",metricLabel:"Route Plans Generated",kpis:["Parallel strategies explored","59 orders in scope","Real-time combinations"],desc:"The Parallel Universe Engine evaluates many routing strategies at once for every dispatch window, exploring route combinations in real time."},{status:"Constraints Passed",title:"Check Constraints",value:5,metricLabel:"Constraints Evaluated",kpis:["Battery aware","Capacity & distance checked","Powered by Google OR-Tools"],desc:"Battery, distance, capacity and time are first-class inputs — battery-aware simulation solves the EV routing challenge."},{status:"Scoring Routes",title:"Score & Compare",value:12,suffix:"+",metricLabel:"Strategies Compared",kpis:["Ranked by total cost","SLA protected","Real-time ETA validation"],desc:"Every plan is benchmarked in parallel and ranked by total cost, with sub-45ms inference at production scale."},{status:"Delivery Ready",title:"Select Best Plan",value:45,suffix:"ms",metricLabel:"Decision Latency",kpis:["Late plans rejected","Best plan locked in","Dispatched to the fleet"],desc:"Late plans are rejected automatically and the highest-performing, SLA-first plan is locked in and dispatched."}],o=[{value:"45ms",label:"INFERENCE"},{value:"100%",label:"SLA-FIRST"}],s=[{value:45,suffix:"ms",label:"Inference"},{value:12,suffix:"+",label:"Strategies"},{value:99.9,decimals:1,suffix:"%",label:"SLA Met"},{value:24,suffix:"/7",label:"Adaptive"}];e.s(["default",0,function(){return(0,t.jsx)(n.default,{ariaLabel:"Workflow 2 — Innovation",gapBottom:!0,bannerImage:"/images/mid-mile-approach.jpg",cardTitle:"CHOOSE THE BEST PLAN",cardSubtitle:"Analyze thousands of route possibilities and automatically select the most efficient delivery strategy.",eyebrow:"/ Innovation /",titleLead:"MANY STRATEGIES. ",titleAccent:"ONE BEST PLAN.",mediaSlot:(0,t.jsx)(a.default,{variant:"logistics",ariaLabel:"Live multi-route logistics brain"}),slides:r,cardsHeading:"AI Decision Engine",cardsTheme:i,badges:o,stats:s})}])},33016,e=>{"use strict";var t=e.i(43476),n=e.i(71645);let a=(0,e.i(70703).default)(()=>e.A(15756),{loadableGenerated:{modules:[55819]},ssr:!1,loading:()=>null});e.s(["default",0,function(){let e=(0,n.useRef)(null),[i,r]=(0,n.useState)(!1);return((0,n.useEffect)(()=>{let t=e.current;if(!t)return;let n=new IntersectionObserver(e=>{e.some(e=>e.isIntersecting)&&(r(!0),n.disconnect())},{rootMargin:"150% 0px"});return n.observe(t),()=>n.disconnect()},[]),i)?(0,t.jsx)("div",{ref:e,style:{display:"contents"},children:(0,t.jsx)(a,{})}):(0,t.jsx)("div",{ref:e,"aria-hidden":!0,style:{minHeight:"100vh"}})}])},49712,e=>{e.v(t=>Promise.all(["static/chunks/0ckcqe5on274m.js","static/chunks/0z6t9sni_7re~.js"].map(t=>e.l(t))).then(()=>t(29539)))},40999,e=>{e.v(t=>Promise.all(["static/chunks/04dzth4udk0lf.js","static/chunks/0z6t9sni_7re~.js","static/chunks/0-kxqnmnjtk7l.js"].map(t=>e.l(t))).then(()=>t(39184)))},15756,e=>{e.v(t=>Promise.all(["static/chunks/0-u0mnwn1ei4e.js","static/chunks/0w2vl4s.138yn.js"].map(t=>e.l(t))).then(()=>t(55819)))}]); |