1122 lines
75 KiB
JavaScript
1122 lines
75 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 a}});let i=e.r(32061);function a({reason:e,children:t}){if("u"<typeof window)throw Object.defineProperty(new i.BailoutToCSRError(e),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return t}},9885,(e,t,n)=>{"use strict";function i(e){return e.split("/").map(e=>encodeURIComponent(e)).join("/")}Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"encodeURIPath",{enumerable:!0,get:function(){return i}})},52157,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"PreloadChunks",{enumerable:!0,get:function(){return s}});let i=e.r(43476),a=e.r(74080),r=e.r(63599),o=e.r(9885),d=e.r(43369);function s({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 i=t.reactLoadableManifest;for(let t of e){if(!i[t])continue;let e=i[t].files;n.push(...e)}}if(0===n.length)return null;let l=(0,d.getAssetTokenQuery)();return(0,i.jsx)(i.Fragment,{children:n.map(e=>{let n=`${t.assetPrefix}/_next/${(0,o.encodeURIPath)(e)}${l}`;return e.endsWith(".css")?(0,i.jsx)("link",{precedence:"dynamic",href:n,rel:"stylesheet",as:"style",nonce:t.nonce},e):((0,a.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 i=e.r(43476),a=e.r(71645),r=e.r(67585),o=e.r(52157);function d(e){return{default:e&&"default"in e?e.default:e}}let s={loader:()=>Promise.resolve(d(()=>null)),loading:null,ssr:!0},l=function(e){let t={...s,...e},n=(0,a.lazy)(()=>t.loader().then(d)),l=t.loading;function c(e){let d=l?(0,i.jsx)(l,{isLoading:!0,pastDelay:!0,error:null}):null,s=!t.ssr||!!t.loading,c=s?a.Suspense:a.Fragment,p=t.ssr?(0,i.jsxs)(i.Fragment,{children:["u"<typeof window?(0,i.jsx)(o.PreloadChunks,{moduleIds:t.modules}):null,(0,i.jsx)(n,{...e})]}):(0,i.jsx)(r.BailoutToCSR,{reason:"next/dynamic",children:(0,i.jsx)(n,{...e})});return(0,i.jsx)(c,{...s?{fallback:d}:{},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 a}});let i=e.r(55682)._(e.r(69093));function a(e,t){let n={};"function"==typeof e&&(n.loader=e);let a={...n,...t};return(0,i.default)({...a,modules:a.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)},5074,e=>{"use strict";var t=e.i(43476),n=e.i(71645);let i=[[[.04,.2],[.1,.12],[.18,.1],[.24,.13],[.29,.12],[.3,.18],[.27,.22],[.26,.28],[.22,.3],[.2,.38],[.17,.44],[.15,.4],[.16,.32],[.12,.3],[.09,.26],[.06,.24]],[[.21,.5],[.27,.48],[.31,.52],[.31,.6],[.29,.66],[.27,.74],[.24,.82],[.22,.8],[.22,.7],[.205,.62],[.2,.55]],[[.45,.16],[.5,.13],[.55,.15],[.57,.19],[.55,.24],[.5,.27],[.47,.25],[.455,.2]],[[.46,.34],[.53,.32],[.58,.36],[.585,.44],[.56,.52],[.53,.6],[.5,.66],[.47,.62],[.46,.52],[.45,.44],[.45,.38]],[[.56,.14],[.64,.1],[.74,.1],[.84,.14],[.9,.2],[.92,.26],[.86,.3],[.8,.3],[.74,.34],[.7,.34],[.66,.3],[.6,.3],[.575,.24],[.565,.18]],[[.81,.66],[.87,.64],[.92,.68],[.92,.74],[.86,.77],[.81,.74],[.8,.7]]],a=[[.115,.3],[.265,.255],[.285,.66],[.475,.185],[.605,.345],[.655,.4],[.745,.5],[.815,.275],[.865,.715]],r=[[0,1],[1,3],[3,4],[4,5],[5,6],[6,7],[7,8],[1,2],[3,7],[0,7]];e.s(["default",0,function({accent:e="#ef4444"}){let o=(0,n.useRef)(null);return(0,n.useEffect)(()=>{let[t,n,d]=function(e){let t=/^#?([0-9a-f]{6})$/i.exec(e.trim());if(!t)return[239,68,68];let n=parseInt(t[1],16);return[n>>16&255,n>>8&255,255&n]}(e),s=e=>`rgba(${t},${n},${d},${e})`,l=`rgb(${t},${n},${d})`,c=o.current,p=c?.parentElement;if(!c||!p)return;let m=c.getContext("2d");if(!m)return;let h=window.matchMedia?.("(prefers-reduced-motion: reduce)").matches,g=0,x=0,u=[],f=0,v=0,b=()=>{let e=p.getBoundingClientRect();g=Math.max(1,e.width),x=Math.max(1,e.height);let t=Math.min(window.devicePixelRatio||1,2);c.width=Math.round(g*t),c.height=Math.round(x*t),c.style.width=g+"px",c.style.height=x+"px",m.setTransform(t,0,0,t,0,0),(()=>{u=[];let e=Math.max(11,Math.min(17,g/70));for(let t=e/2;t<g;t+=e)for(let n=e/2;n<x;n+=e){let e=t/g,a=n/x;for(let r of i)if(function(e,t,n){let i=!1;for(let a=0,r=n.length-1;a<n.length;r=a++){let o=n[a][0],d=n[a][1],s=n[r][0],l=n[r][1];d>t!=l>t&&e<(s-o)*(t-d)/(l-d)+o&&(i=!i)}return i}(e,a,r)){u.push({x:t,y:n});break}}})()},w=(e,t)=>({x:(e.x+t.x)/2,y:(e.y+t.y)/2-.28*Math.hypot(t.x-e.x,t.y-e.y)}),_=(e,t,n,i)=>{let a=1-i;return{x:a*a*e.x+2*a*i*t.x+i*i*n.x,y:a*a*e.y+2*a*i*t.y+i*i*n.y}},y=e=>{for(let e of(m.clearRect(0,0,g,x),m.fillStyle="rgba(120,122,130,0.55)",u))m.beginPath(),m.arc(e.x,e.y,1.15,0,2*Math.PI),m.fill();let t=a.map(([e,t])=>({x:e*g,y:t*x}));for(let[e,n]of(m.save(),m.setLineDash([4,7]),m.lineWidth=1,m.strokeStyle=s(.13),r)){let i=w(t[e],t[n]);m.beginPath(),m.moveTo(t[e].x,t[e].y),m.quadraticCurveTo(i.x,i.y,t[n].x,t[n].y),m.stroke()}m.restore(),m.save();for(let n=0;n<r.length;n++){let[i,a]=r[n],o=w(t[i],t[a]),d=((.11*e+.137*n)%1+1)%1,c=_(t[i],o,t[a],d),p=Math.max(0,d-.04),h=_(t[i],o,t[a],p),g=m.createLinearGradient(h.x,h.y,c.x,c.y);g.addColorStop(0,s(0)),g.addColorStop(1,s(.5)),m.strokeStyle=g,m.lineWidth=2,m.beginPath(),m.moveTo(h.x,h.y),m.lineTo(c.x,c.y),m.stroke(),m.shadowColor=l,m.shadowBlur=12,m.fillStyle=l,m.beginPath(),m.arc(c.x,c.y,2.6,0,2*Math.PI),m.fill(),m.shadowBlur=0}for(let n of(m.restore(),t)){for(let t=0;t<2;t++){let i=((e+2.6*t/2)%2.6+2.6)%2.6/2.6,a=3+24*i,r=(1-i)*.45;m.beginPath(),m.strokeStyle=s(r),m.lineWidth=1.5,m.arc(n.x,n.y,a,0,2*Math.PI),m.stroke()}m.fillStyle=l,m.shadowColor=l,m.shadowBlur=8,m.beginPath(),m.arc(n.x,n.y,2.6,0,2*Math.PI),m.fill(),m.shadowBlur=0}},j=e=>{v||(v=e),y((e-v)/1e3),f=requestAnimationFrame(j)};b(),h?y(0):f=requestAnimationFrame(j);let k=new ResizeObserver(()=>{b(),h&&y(0)});return k.observe(p),()=>{cancelAnimationFrame(f),k.disconnect()}},[e]),(0,t.jsx)("canvas",{ref:o,className:"ind__map","aria-hidden":"true"})}])},14224,e=>{"use strict";var t=e.i(43476),n=e.i(71645),i=e.i(89970),a=e.i(83495),r=e.i(5074);i.default.registerPlugin(a.ScrollTrigger);let o=[{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."}],d=[{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 l({value:e,decimals:i=0,suffix:a="",duration:r=1700,className:o}){let[d,s]=(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(()=>s(e));let n=new IntersectionObserver(t=>{for(let i of t)if(i.isIntersecting&&!p.current){p.current=!0;let t=performance.now(),i=e=>1-Math.pow(1-e,3),a=n=>{let o=Math.min(1,(n-t)/r);s(e*i(o)),o<1?requestAnimationFrame(a):s(e)};requestAnimationFrame(a),n.disconnect()}},{threshold:.2});return n.observe(t),()=>n.disconnect()},[e,r]),(0,t.jsxs)("b",{ref:c,className:o,children:[d.toFixed(i),a]})}function c({accent:e}){return(0,t.jsx)("div",{className:"evnd__map","aria-hidden":"true",children:(0,t.jsx)(r.default,{accent:e})})}function p({metrics:e,features:n,heading:i,theme:a}){let r=a?{"--ca":a.accent,"--ca2":a.accent2,"--cg":a.glow}:void 0;return(0,t.jsxs)("div",{className:"evnd__dash",style:r,children:[i&&(0,t.jsxs)("div",{className:"evnd__dash-head",children:[(0,t.jsxs)("span",{className:"evnd__dash-live",children:[(0,t.jsx)("span",{className:"evnd__dash-livedot"}),i]}),(0,t.jsx)("span",{className:"evnd__dash-sys",children:"AI ENGINE"})]}),(0,t.jsx)("div",{className:"evnd__dash-kpis",children:e.map(e=>(0,t.jsxs)("div",{className:"evnd__kpi",children:[(0,t.jsx)(l,{value:e.value,decimals:e.decimals,suffix:e.suffix,className:"evnd__kpi-val"}),(0,t.jsx)("span",{className:"evnd__kpi-label",children:e.label})]},e.label))}),(0,t.jsx)("div",{className:"evnd__dash-feats",children:n.map(e=>(0,t.jsxs)("div",{className:"evnd__dfeat",children:[(0,t.jsx)("span",{className:"evnd__dfeat-ico","aria-hidden":"true",children:e.icon}),(0,t.jsxs)("div",{className:"evnd__dfeat-body",children:[(0,t.jsx)("span",{className:"evnd__dfeat-title",children:e.title}),(0,t.jsx)("p",{className:"evnd__dfeat-desc",children:e.desc})]})]},e.title))})]})}e.s(["default",0,function({bannerImage:e="/images/bg-header-5.webp",cardNumber:r="",cardTitle:m="EV Logistics",cardSubtitle:h="Cleaner miles, lower costs",eyebrow:g="/ EV-Native Design /",titleLead:x="BUILT FOR ELECTRIC. ",titleAccent:u="NOT ADAPTED.",features:f=o,image:v="/images/premium-ev-van.webp",imageAlt:b="DoorMile electric delivery van",badges:w=d,stats:_=s,gapTop:y=!1,gapBottom:j=!1,ariaLabel:k,mediaSlot:N,metrics:z,cardsHeading:S,cardsTheme:M}){let E=(0,n.useRef)(null),T=!!z&&z.length>0,P=T&&M?{"--ca":M.accent,"--ca2":M.accent2,"--cg":M.glow}:void 0;(0,n.useEffect)(()=>{let e=E.current;if(!e)return;let t=a.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;i.default.set(e,{backgroundPosition:`center ${.3*(t-n)}px`})}else i.default.set(e,{backgroundPosition:""})}});return()=>t?.kill()},[]);let I="elementor-element elementor-element-bbc6760 e-con-full e-flex cut-corner-no sticky-container-off e-con e-parent"+(T?" evnd-workflow-shell":"")+(y?" evnd-gap-top":"")+(j?" evnd-gap-bottom":"");return(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);
|
||
}
|
||
/* ---- Tighten the space below the KPI bar (WF1/WF2 only) ----
|
||
The base section reserves a tall padding-bottom (up to 80px) plus a
|
||
margin-bottom (up to 64px) that renders as a #0d0d0d band inside the
|
||
rounded container — together ~144px of empty space after the KPI bar.
|
||
The workflows end at the bar, so trim both: the bar now sits close to
|
||
the section's bottom edge, and the outer .evnd-gap-bottom (40px) still
|
||
provides clean separation to the next section. Scoped to .evnd--cards
|
||
(specificity beats the base + responsive .evnd rules at every
|
||
breakpoint) so the homepage EV section keeps its original spacing. */
|
||
.evnd.evnd--cards {
|
||
padding-bottom: clamp(28px, 3vw, 40px);
|
||
margin-bottom: clamp(8px, 1vw, 14px);
|
||
}
|
||
/* ---- Tighten the banner → black-section transition (≥768px) ----
|
||
From 768px up the floating title card overlaps with a FIXED budget
|
||
(margin-top:-298px into the banner, -70px into this section). The
|
||
workflow cards carry longer subtitles than the homepage card, so they
|
||
run taller than that budget and the overflow shows as a dark #0d0d0d
|
||
spacer between the hero image and this black section. Pull the section
|
||
up under the banner to swallow that strip — the card (z-index 2) stays
|
||
on top, so the overlapping card design is preserved. The flat top tucks
|
||
cleanly behind the banner. Not applied ≤767px, where the card sits
|
||
inline (no overlap) and no spacer exists — so mobile is unchanged. */
|
||
@media (min-width: 768px) {
|
||
.evnd { margin-top: -60px; }
|
||
}
|
||
/* ---- Floating card sizing: content-driven, not container-driven ----
|
||
The exported Elementor card reserves a lot of vertical space that the
|
||
short title + subtitle don't fill: the red text block (3b61435) carried
|
||
64px/73px top/bottom padding and the empty white footer strip (5aea22e)
|
||
a 70px min-height. Trim both so the card height tracks the text, while
|
||
keeping the two-tone red/white design, the 25px corner radius, and the
|
||
typography untouched. These rules live in the (body) inline <style> so
|
||
they override site.css at equal specificity; values tighten on mobile.
|
||
Applies to every workflow card (shared element IDs) for consistency. */
|
||
.elementor-element.elementor-element-3b61435 {
|
||
--padding-top: 46px;
|
||
--padding-bottom: 38px;
|
||
}
|
||
.elementor-element.elementor-element-5aea22e {
|
||
--min-height: 38px;
|
||
--padding-top: 14px;
|
||
--padding-bottom: 14px;
|
||
}
|
||
@media (max-width: 1020px) {
|
||
.elementor-element.elementor-element-3b61435 {
|
||
--padding-top: 34px;
|
||
--padding-bottom: 28px;
|
||
}
|
||
.elementor-element.elementor-element-5aea22e {
|
||
--min-height: 32px;
|
||
--padding-top: 12px;
|
||
--padding-bottom: 12px;
|
||
}
|
||
}
|
||
@media (max-width: 660px) {
|
||
/* Mobile: trim more aggressively so there is no large empty area
|
||
below the paragraph. */
|
||
.elementor-element.elementor-element-3b61435 {
|
||
--padding-top: 26px;
|
||
--padding-bottom: 22px;
|
||
}
|
||
.elementor-element.elementor-element-5aea22e {
|
||
--min-height: 24px;
|
||
--padding-top: 10px;
|
||
--padding-bottom: 10px;
|
||
}
|
||
}
|
||
/* 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 compact dashboard column
|
||
carries enough weight to balance the Three.js scene. align-items:
|
||
stretch lets the dashboard 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 dashboard share one row height.
|
||
A min-height floor on the scene column sets the baseline row height;
|
||
both columns stretch to the row via grid align-items: stretch. The
|
||
dashboard uses min-height:100% and its feature list grows (flex:1) to
|
||
fill any extra height so the panel always matches the scene. */
|
||
@media (min-width: 992px) {
|
||
.evnd__grid--cards .evnd__left {
|
||
min-height: clamp(560px, 40vw, 620px);
|
||
}
|
||
.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__dash { min-height: 100%; }
|
||
/* Static-image media (Workflow 2): cap the image height with a fixed
|
||
max-height so it sits at roughly the dashboard's row height instead
|
||
of towering hundreds of px below it. width:auto keeps the aspect
|
||
ratio (no stretch, no crop) and the frame hugs the image
|
||
(fit-content), so it stays centred with no side bands. The cap is
|
||
kept below the dashboard height so the image never inflates the row.
|
||
Scoped to the non-scene wrapper; desktop only, mobile untouched. */
|
||
.evnd__grid--cards .evnd__imgwrap:not(.evnd__imgwrap--media):not(.evnd__imgwrap--video) {
|
||
width: fit-content;
|
||
max-width: 100%;
|
||
margin-inline: auto;
|
||
}
|
||
.evnd__grid--cards .evnd__imgwrap:not(.evnd__imgwrap--media):not(.evnd__imgwrap--video) .evnd__img {
|
||
width: auto;
|
||
height: auto;
|
||
max-height: clamp(520px, 46vw, 670px);
|
||
max-width: 100%;
|
||
}
|
||
}
|
||
|
||
@media (min-width: 1200px) {
|
||
.evnd__grid--cards .evnd__imgwrap--video {
|
||
width: 100%;
|
||
height: 100%;
|
||
min-height: 100%;
|
||
}
|
||
.evnd__grid--cards .evnd__imgwrap--video .evnd__video {
|
||
width: 100%;
|
||
height: 100%;
|
||
object-fit: cover;
|
||
}
|
||
}
|
||
|
||
.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__video {
|
||
display: block;
|
||
width: 100%;
|
||
height: 100%;
|
||
object-fit: contain;
|
||
}
|
||
.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; }
|
||
|
||
/* ---- Homepage feature cards (default, no-dashboard mode) ---- */
|
||
.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); }
|
||
|
||
/* ============================================================
|
||
COMPACT DASHBOARD (MileTruth workflow right column).
|
||
A small KPI row over compact feature cards, on the animated network
|
||
backdrop. Themed per-workflow via CSS vars (--ca accent \xb7 --ca2
|
||
secondary \xb7 --cg glow). Falls back to the section red.
|
||
============================================================ */
|
||
.evnd__dash {
|
||
--ca: #ef4444;
|
||
--ca2: #f59e0b;
|
||
--cg: rgba(239,68,68,0.22);
|
||
position: relative;
|
||
display: flex;
|
||
flex-direction: column;
|
||
gap: 18px;
|
||
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: 24px;
|
||
overflow: hidden;
|
||
isolation: isolate;
|
||
}
|
||
.evnd__dash-head,
|
||
.evnd__dash-kpis,
|
||
.evnd__dash-feats { position: relative; z-index: 1; }
|
||
|
||
/* dashboard header row */
|
||
.evnd__dash-head {
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: space-between;
|
||
gap: 12px;
|
||
}
|
||
.evnd__dash-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__dash-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__dash-sys {
|
||
color: rgba(255,255,255,0.4) !important;
|
||
font-weight: 700;
|
||
font-size: 11px;
|
||
letter-spacing: 0.18em;
|
||
text-transform: uppercase;
|
||
}
|
||
|
||
/* ---- Compact KPI row ---- */
|
||
.evnd__dash-kpis {
|
||
display: grid;
|
||
grid-template-columns: repeat(2, 1fr);
|
||
gap: 12px;
|
||
}
|
||
.evnd__kpi {
|
||
display: flex;
|
||
flex-direction: column;
|
||
gap: 5px;
|
||
padding: 14px 16px;
|
||
background: rgba(255,255,255,0.025);
|
||
border: 1px solid rgba(255,255,255,0.06);
|
||
border-radius: 14px;
|
||
}
|
||
.evnd__kpi-val {
|
||
color: #fff !important;
|
||
font-weight: 800;
|
||
font-size: clamp(26px, 3vw, 34px);
|
||
line-height: 1;
|
||
letter-spacing: -0.02em;
|
||
background: linear-gradient(120deg, #fff 0%, var(--ca) 135%);
|
||
-webkit-background-clip: text;
|
||
background-clip: text;
|
||
-webkit-text-fill-color: transparent;
|
||
}
|
||
.evnd__kpi-label {
|
||
color: rgba(255,255,255,0.6) !important;
|
||
font-weight: 600;
|
||
font-size: 12.5px;
|
||
letter-spacing: 0.01em;
|
||
}
|
||
|
||
/* ============================================================
|
||
Large-screen layout balance (WF1/WF2 dashboard only, ≥1440px).
|
||
Root cause of the empty space is an oversized dashboard column, not
|
||
the KPI cards: give the Three.js scene more of the row (≈66/34, up to
|
||
68/32 on ultra-wide) and pin the dashboard panel to a compact fixed
|
||
max-width, centred in its column — so the KPI cards and feature rows
|
||
stop stretching and read as content-sized. Card heights, typography,
|
||
card styling, animations and the scene itself are untouched; only the
|
||
column proportions, panel width and KPI content alignment change.
|
||
(.evnd__inner caps at 1280px, so one ratio step covers all 1440+
|
||
widths; the 1600/1920 steps tighten the split further on very wide
|
||
displays.) Everything is scoped to .evnd__grid--cards and ≥1440px, so
|
||
the homepage EV section and tablet/laptop/mobile layouts are unchanged.
|
||
============================================================ */
|
||
@media (min-width: 1440px) {
|
||
/* Let the content area grow past the 1280px base cap so the scene
|
||
can get wider on large screens (scoped to WF1/WF2 — the homepage
|
||
EV section keeps its 1280px inner). Viewport/padding still limit
|
||
this at smaller widths; it mainly pays off at ~1600px+. */
|
||
.evnd__inner--cards { max-width: 1560px; }
|
||
/* Dashboard pinned to a fixed 600px track; the scene (1fr) absorbs
|
||
ALL the extra width, so growing the inner widens the scene only. */
|
||
.evnd__grid--cards { grid-template-columns: 1fr 600px; }
|
||
.evnd__grid--cards .evnd__dash {
|
||
max-width: 600px;
|
||
margin-left: auto;
|
||
margin-right: auto;
|
||
}
|
||
/* Centre the KPI value/label so the cards read balanced rather than
|
||
left-hugging (height/type/styling unchanged). */
|
||
.evnd__grid--cards .evnd__kpi {
|
||
align-items: center;
|
||
text-align: center;
|
||
}
|
||
}
|
||
@media (min-width: 1920px) {
|
||
/* Ultra-wide: give the scene even more room (dashboard stays 600px). */
|
||
.evnd__inner--cards { max-width: 1720px; }
|
||
}
|
||
/* ---- Static-image workflow (Workflow 2) layout, 1440px+ ----
|
||
The asset is PORTRAIT, so it can't fill the wide scene column without
|
||
cropping. To show the WHOLE image (no missing content) it's hugged to
|
||
its own width via the ≥992 rules (fit-content frame + height cap) and
|
||
centred next to the 600px dashboard (same width as Workflow 1) with the
|
||
pair centred in a tightened inner — full image, no crop, no dead space.
|
||
It therefore sits a little narrower than the dashboard; filling the
|
||
column edge-to-edge would need a landscape source image. */
|
||
@media (min-width: 1440px) {
|
||
.evnd__inner--cards.evnd__inner--img { max-width: 1200px; }
|
||
.evnd__grid--cards.evnd__grid--img {
|
||
grid-template-columns: auto 600px;
|
||
justify-content: center;
|
||
gap: clamp(40px, 3vw, 56px);
|
||
}
|
||
}
|
||
|
||
/* ---- Compact feature cards ---- */
|
||
.evnd__dash-feats {
|
||
display: flex;
|
||
flex-direction: column;
|
||
gap: 12px;
|
||
flex: 1 0 auto;
|
||
}
|
||
.evnd__dfeat {
|
||
display: grid;
|
||
grid-template-columns: 38px minmax(0, 1fr);
|
||
gap: 14px;
|
||
align-items: center;
|
||
padding: 13px 16px;
|
||
background: rgba(255,255,255,0.02);
|
||
border: 1px solid rgba(255,255,255,0.06);
|
||
border-radius: 14px;
|
||
transition: background-color 0.35s ease, border-color 0.35s ease, transform 0.35s cubic-bezier(.25,1,.5,1);
|
||
}
|
||
.evnd__dfeat:hover {
|
||
background: color-mix(in srgb, var(--ca) 5%, transparent);
|
||
border-color: color-mix(in srgb, var(--ca) 28%, transparent);
|
||
transform: translateY(-2px);
|
||
}
|
||
.evnd__dfeat-ico {
|
||
width: 38px; height: 38px;
|
||
display: flex; align-items: center; justify-content: center;
|
||
color: var(--ca);
|
||
background: color-mix(in srgb, var(--ca) 12%, transparent);
|
||
border: 1px solid color-mix(in srgb, var(--ca) 30%, transparent);
|
||
border-radius: 10px;
|
||
}
|
||
.evnd__dfeat-ico svg { width: 19px; height: 19px; display: block; }
|
||
.evnd__dfeat-body { min-width: 0; }
|
||
.evnd__dfeat-title {
|
||
display: block;
|
||
color: #fff !important;
|
||
font-weight: 700;
|
||
font-size: 14px;
|
||
text-transform: uppercase;
|
||
letter-spacing: 0.04em;
|
||
margin-bottom: 3px;
|
||
}
|
||
.evnd__dfeat-desc {
|
||
color: rgba(255,255,255,0.6) !important;
|
||
font-weight: 400 !important;
|
||
font-size: 13px !important;
|
||
line-height: 1.45 !important;
|
||
margin: 0 !important;
|
||
}
|
||
|
||
/* ============================================================
|
||
Shared global-network backdrop (WF1/WF2) — the dotted world-map
|
||
silhouette + animated hub network reused VERBATIM from the Women
|
||
Empowerment section (IndustryWorldMap canvas), tinted to the workflow
|
||
accent. Full-bleed, behind the .evnd__inner content (z 0 vs z 1),
|
||
pointer-events free, held to a subtle 5–10% opacity so the KPI cards,
|
||
feature cards and insight content stay the primary focus.
|
||
============================================================ */
|
||
.evnd__map {
|
||
position: absolute;
|
||
inset: 0;
|
||
z-index: 0;
|
||
/* Matches the Women Empowerment section's .ws-map treatment (flat
|
||
opacity, no mask — same implementation). On this darker #080808
|
||
background the grey dots are already very low contrast, so this
|
||
sits subtle while keeping the world-map silhouette readable. */
|
||
opacity: 0.5;
|
||
pointer-events: none;
|
||
overflow: hidden;
|
||
}
|
||
.evnd__map canvas { display: block; width: 100%; height: 100%; }
|
||
|
||
/* ---- BOTTOM BAR (homepage / default mode) ---- */
|
||
.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; }
|
||
/* Stacked: KPI row can spread to 4-up since it now has full width. */
|
||
.evnd__dash-kpis { grid-template-columns: repeat(4, 1fr); }
|
||
}
|
||
@media (max-width: 767px) {
|
||
.elementor.elementor-61 .elementor-element.elementor-element-bbc6760,
|
||
.elementor-element.elementor-element-bbc6760.evnd-workflow-shell {
|
||
width: calc(100% - 20px) !important;
|
||
margin-left: 10px !important;
|
||
margin-right: 10px !important;
|
||
padding-left: 0px !important;
|
||
padding-right: 0px !important;
|
||
box-sizing: border-box !important;
|
||
}
|
||
.evnd-gap-top { margin-top: 24px !important; }
|
||
.evnd-gap-bottom { margin-bottom: 24px !important; }
|
||
.evnd { padding-inline: 0; }
|
||
.evnd__heading {
|
||
padding-left: 26px;
|
||
padding-right: 26px;
|
||
box-sizing: border-box;
|
||
margin-bottom: 28px;
|
||
display: flow-root;
|
||
}
|
||
.evnd__inner {
|
||
padding-left: 4px;
|
||
padding-right: 4px;
|
||
box-sizing: border-box;
|
||
}
|
||
.evnd__dash {
|
||
padding-left: 12px !important;
|
||
padding-right: 12px !important;
|
||
}
|
||
.evnd__bar {
|
||
grid-template-columns: repeat(2, 1fr);
|
||
gap: 24px 0;
|
||
width: calc(100% - 8px);
|
||
max-width: calc(100% - 8px);
|
||
margin: 32px auto 0;
|
||
padding: 24px 0;
|
||
box-sizing: border-box;
|
||
}
|
||
.evnd.evnd--cards {
|
||
padding-bottom: 20px;
|
||
margin-bottom: 0;
|
||
}
|
||
.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 covers the route visualization, so it is removed. The
|
||
remaining badge is scaled down (~0.72) so it never dominates. */
|
||
.evnd__badge--br { display: none !important; }
|
||
.evnd__badge--tl { transform: scale(0.72); transform-origin: top left; }
|
||
|
||
/* ---- Horizontal alignment (WF1 / WF2 only) ----
|
||
minmax(0,1fr) + min-width:0 let the scene/panel columns shrink to
|
||
the container so the scene, panel and content share one symmetric
|
||
width and centre perfectly. Scoped to .evnd__grid--cards 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__dash {
|
||
min-width: 0;
|
||
width: 100% !important;
|
||
max-width: 100% !important;
|
||
box-sizing: border-box !important;
|
||
}
|
||
/* Keep the KPI row a tidy 2x2 on phones. */
|
||
.evnd__dash-kpis { grid-template-columns: repeat(2, 1fr); }
|
||
/* Workflow feature cards: distribute content like the Women stats
|
||
rows so the icon balances the right side instead of everything
|
||
clustering at the left edge. */
|
||
.evnd-workflow-shell .evnd__dash-feats { gap: 10px; }
|
||
.evnd-workflow-shell .evnd__dfeat {
|
||
grid-template-columns: minmax(0, 1fr) 36px;
|
||
gap: 12px;
|
||
padding: 12px 14px;
|
||
}
|
||
.evnd-workflow-shell .evnd__dfeat-ico {
|
||
grid-column: 2;
|
||
grid-row: 1;
|
||
justify-self: end;
|
||
width: 36px;
|
||
height: 36px;
|
||
}
|
||
.evnd-workflow-shell .evnd__dfeat-body {
|
||
grid-column: 1;
|
||
grid-row: 1;
|
||
}
|
||
|
||
/* ---- Mobile-only overrides for Hero Image & EV Logistics Card ---- */
|
||
.elementor-element.elementor-element-7da6646 {
|
||
width: calc(100% - 16px) !important;
|
||
margin-left: 8px !important;
|
||
margin-right: 8px !important;
|
||
border-radius: 18px !important;
|
||
margin-top: 15px !important;
|
||
margin-bottom: -50px !important;
|
||
box-sizing: border-box !important;
|
||
}
|
||
.elementor-element.elementor-element-8b5d6e6 {
|
||
padding-left: 8px !important;
|
||
padding-right: 8px !important;
|
||
margin-left: 0px !important;
|
||
margin-right: 0px !important;
|
||
width: 100% !important;
|
||
max-width: 100% !important;
|
||
box-sizing: border-box !important;
|
||
}
|
||
.elementor-element.elementor-element-1f766ea {
|
||
padding-left: 0px !important;
|
||
padding-right: 0px !important;
|
||
margin-left: auto !important;
|
||
margin-right: auto !important;
|
||
width: 100% !important;
|
||
max-width: 100% !important;
|
||
}
|
||
}
|
||
@media (max-width: 480px) {
|
||
.evnd { padding: 40px 16px 48px; }
|
||
.evnd { padding-inline: 0; }
|
||
.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; }
|
||
|
||
/* feature cards (homepage): 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; }
|
||
.evnd-feature__arrow { position: absolute; top: 16px; right: 16px; margin: 0; }
|
||
|
||
/* ---- Compact dashboard (phones) ---- */
|
||
.evnd__dash { padding-top: 18px !important; padding-bottom: 18px !important; gap: 14px; }
|
||
.evnd__dash-sys { display: none; }
|
||
.evnd__dash-kpis { gap: 10px; }
|
||
.evnd__kpi { padding: 12px 14px; gap: 4px; }
|
||
.evnd__kpi-val { font-size: clamp(24px, 8vw, 30px); }
|
||
.evnd__kpi-label { font-size: 12px; }
|
||
.evnd-workflow-shell .evnd__dfeat { padding: 11px 12px; gap: 10px; grid-template-columns: minmax(0, 1fr) 34px; }
|
||
.evnd__dfeat-ico { width: 34px; height: 34px; border-radius: 9px; }
|
||
.evnd__dfeat-ico svg { width: 17px; height: 17px; }
|
||
.evnd__dfeat-title { font-size: 13.5px; }
|
||
.evnd__dfeat-desc { font-size: 12.5px !important; }
|
||
}
|
||
`}}),(0,t.jsxs)("div",{className:I,"data-id":"bbc6760","data-element_type":"container","data-e-type":"container","aria-label":k,style:{backgroundColor:"#0d0d0d",width:"calc(100% - 40px)",marginLeft:"20px",marginRight:"20px",borderRadius:"25px",overflow:"hidden"},children:[(0,t.jsx)("div",{ref:E,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:[r&&(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:r})})}),(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:m})})}),(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:h})})})]}),(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.jsxs)("section",{className:`evnd${T?" evnd--cards":""}`,"aria-label":k??"EV-Native Design",style:P,children:[T&&M&&(0,t.jsx)(c,{accent:M.accent}),(0,t.jsxs)("div",{className:`evnd__inner${T?" evnd__inner--cards":""}${T&&!N?" evnd__inner--img":""}`,children:[(0,t.jsxs)("div",{className:"evnd__heading",children:[(0,t.jsx)("span",{className:"evnd__eyebrow",children:g}),(0,t.jsxs)("h2",{className:"evnd__title",children:[x,(0,t.jsx)("span",{className:"accent",children:u})]})]}),(0,t.jsxs)("div",{className:`evnd__grid${T?" evnd__grid--cards":""}${T&&!N?" evnd__grid--img":""}`,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${N?" evnd__imgwrap--media":""}${v.endsWith(".mp4")?" evnd__imgwrap--video":""}`,children:[N||(v.endsWith(".mp4")?(0,t.jsx)("video",{className:"evnd__video",autoPlay:!0,muted:!0,loop:!0,playsInline:!0,"aria-label":b,children:(0,t.jsx)("source",{src:v,type:"video/mp4"})}):(0,t.jsx)("img",{className:"evnd__img",src:v,alt:b,decoding:"async"})),w[0]&&(0,t.jsxs)("div",{className:"evnd__badge evnd__badge--tl",children:[(0,t.jsx)("b",{children:w[0].value}),(0,t.jsx)("span",{children:w[0].label})]}),w[1]&&(0,t.jsxs)("div",{className:"evnd__badge evnd__badge--br",children:[(0,t.jsx)("b",{children:w[1].value}),(0,t.jsx)("span",{children:w[1].label})]})]})]})}),(0,t.jsx)("div",{className:"evnd__right",children:T?(0,t.jsx)(p,{metrics:z,features:f,heading:S,theme:M}):(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:(T?z:_).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)(l,{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 i({from:e,to:a,duration:r=2e3,decimals:o=0,suffix:d=""}){let[s,l]=(0,n.useState)(e);return(0,n.useEffect)(()=>{let t=null,n=i=>{t||(t=i);let o=Math.min((i-t)/r,1);l(o*(a-e)+e),o<1&&window.requestAnimationFrame(n)};window.requestAnimationFrame(n)},[e,a,r]),(0,t.jsxs)(t.Fragment,{children:[s.toFixed(o),d]})}e.s(["default",0,function(){let[e,a]=(0,n.useState)(!1);return(0,n.useEffect)(()=>{requestAnimationFrame(()=>a(!0))},[]),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("link",{rel:"preload",as:"image",href:"/images/miletruth-bg.webp"}),(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.webp') !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 0;
|
||
}
|
||
.miletruth-hero-container::before {
|
||
display: none !important;
|
||
}
|
||
.miletruth-content {
|
||
position: relative;
|
||
z-index: 2;
|
||
width: 100%;
|
||
padding: 0 !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 15px !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 .elementor-element-86f3204 {
|
||
padding: 0 10px !important;
|
||
}
|
||
.miletruth-hero-container {
|
||
min-height: 600px;
|
||
padding: 80px 0 !important;
|
||
}
|
||
.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: 60px 0 !important;
|
||
}
|
||
.miletruth-hero .elementor-element-86f3204 {
|
||
padding: 0 10px !important;
|
||
}
|
||
/* 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 !important;
|
||
}
|
||
.miletruth-hero .slide-content {
|
||
padding: 0 15px !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;
|
||
/* Single column on mobile → center each stat in the card */
|
||
justify-items: center !important;
|
||
}
|
||
.miletruth-hero .elementor-counter {
|
||
align-items: center !important;
|
||
text-align: center !important;
|
||
}
|
||
.miletruth-hero .elementor-counter-number-wrapper {
|
||
justify-content: center !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)(i,{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)(i,{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)(i,{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)(i,{from:1,to:45,decimals:0,suffix:""}):"45"}),(0,t.jsx)("span",{className:"elementor-counter-number-suffix",children:"ms"})]})]})})})]})})})]})})]})}])},76756,e=>{"use strict";var t=e.i(43476),n=e.i(14224),i=e.i(71645),a=e.i(70703);let r=(0,a.default)(()=>e.A(49712),{loadableGenerated:{modules:[29539]},ssr:!1}),o=(0,a.default)(()=>e.A(40999),{loadableGenerated:{modules:[39184]},ssr:!1}),d={optimization:"#020617",logistics:"#08080c"},s={optimization:{center:.78,amp:.14,speed:.5,still:.85},logistics:{center:.5,amp:.13,speed:.4,still:.52}};function l({variant:e,ariaLabel:n}){let a=(0,i.useRef)(null),c=(0,i.useRef)(s[e].still),[p,m]=(0,i.useState)(!1),[h,g]=(0,i.useState)(!1),[x,u]=(0,i.useState)(!1),[f,v]=(0,i.useState)(!1),[b,w]=(0,i.useState)(!1);return(0,i.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)"),i=()=>{u(e.matches),v(t.matches),w(n.matches)};return i(),e.addEventListener("change",i),t.addEventListener("change",i),n.addEventListener("change",i),()=>{e.removeEventListener("change",i),t.removeEventListener("change",i),n.removeEventListener("change",i)}},[]),(0,i.useEffect)(()=>{let e=a.current;if(!e)return;let t=new IntersectionObserver(e=>{e.some(e=>e.isIntersecting)&&(m(!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,i.useEffect)(()=>{let t=s[e];if(b){c.current=t.still;return}if(!h)return;let n=0,i=()=>{let e=performance.now()/1e3;c.current=t.center+Math.sin(e*t.speed)*t.amp,n=requestAnimationFrame(i)};return n=requestAnimationFrame(i),()=>cancelAnimationFrame(n)},[e,b,h]),(0,t.jsxs)("div",{ref:a,className:"wf-scene",role:"img","aria-label":n??"DoorMile 3D logistics scene",style:{background:d[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:p&&("optimization"===e?(0,t.jsx)(r,{progress:c,reduced:b,isMobile:x,isTablet:f,active:h}):(0,t.jsx)(o,{progress:c,reduced:b,isMobile:x,active:h}))})]})}let c={accent:"#00E5FF",accent2:"#14B8A6",glow:"rgba(0,229,255,0.18)"},p=[{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"}],m=e=>(0,t.jsx)("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:e}),h=[{icon:m((0,t.jsx)("polygon",{points:"3 11 22 2 13 21 11 13 3 11"})),title:"Route Optimization",desc:"AI selects the most efficient path across every zone."},{icon:m((0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("polyline",{points:"22 17 13.5 8.5 8.5 13.5 2 7"}),(0,t.jsx)("polyline",{points:"16 17 22 17 22 11"})]})),title:"Distance Reduction",desc:"Same volume delivered with a leaner, better-used fleet."},{icon:m((0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("path",{d:"M12 14l4-4"}),(0,t.jsx)("path",{d:"M3.34 19a10 10 0 1 1 17.32 0"})]})),title:"Fleet Efficiency",desc:"Higher utilisation and lower operating cost."},{icon:m((0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("path",{d:"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"}),(0,t.jsx)("polyline",{points:"9 12 11 14 15 10"})]})),title:"SLA Performance",desc:"Real-time correction keeps deliveries on time."}],g=[{value:"-42%",label:"DISTANCE SAVED"},{value:"-37%",label:"FEWER VEHICLES"}];e.s(["default",0,function(){return(0,t.jsx)(n.default,{ariaLabel:"Workflow 1 — Performance",gapTop:!0,gapBottom:!0,bannerImage:"/images/mile-1.webp",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)(l,{variant:"optimization",ariaLabel:"Live route optimization engine"}),metrics:p,features:h,cardsHeading:"Performance Insight",cardsTheme:c,badges:g})}],76756)},38730,e=>{"use strict";var t=e.i(43476),n=e.i(14224);let i={accent:"#E2354A",accent2:"#C01227",glow:"rgba(226,53,74,0.2)"},a=[{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"}],r=e=>(0,t.jsx)("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:e}),o=[{icon:r((0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("polygon",{points:"12 2 2 7 12 12 22 7 12 2"}),(0,t.jsx)("polyline",{points:"2 17 12 22 22 17"}),(0,t.jsx)("polyline",{points:"2 12 12 17 22 12"})]})),title:"Generate Routes",desc:"Many strategies explored per dispatch window."},{icon:r((0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("path",{d:"M22 11.08V12a10 10 0 1 1-5.93-9.14"}),(0,t.jsx)("polyline",{points:"22 4 12 14.01 9 11.01"})]})),title:"Check Constraints",desc:"Battery, capacity, distance and time validated."},{icon:r((0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("line",{x1:"6",y1:"20",x2:"6",y2:"14"}),(0,t.jsx)("line",{x1:"12",y1:"20",x2:"12",y2:"4"}),(0,t.jsx)("line",{x1:"18",y1:"20",x2:"18",y2:"10"})]})),title:"Score & Compare",desc:"Plans ranked by total cost in parallel."},{icon:r((0,t.jsx)("polygon",{points:"13 2 3 14 12 14 11 22 21 10 12 10 13 2"})),title:"Select Best Plan",desc:"SLA-first plan locked in and dispatched."}],d=[{value:"45ms",label:"INFERENCE"},{value:"100%",label:"SLA-FIRST"}];e.s(["default",0,function(){return(0,t.jsx)(n.default,{ariaLabel:"Workflow 2 — Innovation",gapBottom:!0,bannerImage:"/images/mid-mile-approach.webp",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.",image:"/videos/workflow-2-routing.mp4",imageAlt:"AI route-planning engine selecting the best delivery plan",metrics:a,features:o,cardsHeading:"AI Decision Engine",cardsTheme:i,badges:d})}])},33016,e=>{"use strict";var t=e.i(43476),n=e.i(71645);let i=(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),[a,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()},[]),a)?(0,t.jsx)("div",{ref:e,style:{display:"contents"},children:(0,t.jsx)(i,{})}):(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/04uib0xi8_zof.js","static/chunks/0e.~6vil2~4uy.js"].map(t=>e.l(t))).then(()=>t(29539)))},40999,e=>{e.v(t=>Promise.all(["static/chunks/15p8tu-h65hwr.js","static/chunks/0-kxqnmnjtk7l.js","static/chunks/04uib0xi8_zof.js","static/chunks/0e.~6vil2~4uy.js"].map(t=>e.l(t))).then(()=>t(39184)))},15756,e=>{e.v(t=>Promise.all(["static/chunks/02yb1bweq81yo.js","static/chunks/0ttyt4lfj9cya.js"].map(t=>e.l(t))).then(()=>t(55819)))}]); |