Files
doormilebuild/build/_next/static/chunks/04syu-h-mffeu.js
2026-06-08 16:39:29 +05:30

1056 lines
71 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
(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 512% 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, 911s) */
.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, 390480px).
Tighter spacing, smaller typography and a 2-line-clamped
description so the card stays ~380480px 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)))}]);