diff --git a/public/images/card 1.png b/public/images/card 1.png
new file mode 100644
index 0000000..7e7c9cf
Binary files /dev/null and b/public/images/card 1.png differ
diff --git a/public/images/card 2.png b/public/images/card 2.png
new file mode 100644
index 0000000..864f4d3
Binary files /dev/null and b/public/images/card 2.png differ
diff --git a/public/images/card 3.png b/public/images/card 3.png
new file mode 100644
index 0000000..ec145b8
Binary files /dev/null and b/public/images/card 3.png differ
diff --git a/public/images/card4.png b/public/images/card4.png
new file mode 100644
index 0000000..90e4dd2
Binary files /dev/null and b/public/images/card4.png differ
diff --git a/public/images/card5.png b/public/images/card5.png
new file mode 100644
index 0000000..39adac1
Binary files /dev/null and b/public/images/card5.png differ
diff --git a/public/images/card6.png b/public/images/card6.png
new file mode 100644
index 0000000..825ff3a
Binary files /dev/null and b/public/images/card6.png differ
diff --git a/public/videos/fleet.mp4 b/public/videos/fleet.mp4
new file mode 100644
index 0000000..dc8c334
Binary files /dev/null and b/public/videos/fleet.mp4 differ
diff --git a/src/app/globals.css b/src/app/globals.css
index c7b1fe5..0bd857c 100644
--- a/src/app/globals.css
+++ b/src/app/globals.css
@@ -153,16 +153,21 @@ body {
#masthead .elementor-element.elementor-element-0b7bf6f > .elementor-widget-container {
padding: 0 42px !important;
border-radius: 22px !important;
+ height: 58px !important;
+ display: flex !important;
+ align-items: center !important;
}
#masthead .elementor-element.elementor-element-0b7bf6f .header-menu-container .main-menu > li > a {
- padding-top: 15px !important;
- padding-bottom: 16px !important;
+ padding-top: 6px !important;
+ padding-bottom: 6px !important;
padding-left: 14px !important;
padding-right: 14px !important;
font-size: 15px !important;
line-height: 1.2 !important;
white-space: nowrap !important;
+ min-height: auto !important;
+ height: auto !important;
}
#masthead .header-menu-container .main-menu {
@@ -966,18 +971,30 @@ body {
/* ============================================================
SHARED PAGE CONTENT CONTAINER
- Mirrors the site's e-con-boxed > e-con-inner system: 1480px
- max-width centred with fluid horizontal padding identical to the
- Industry Solutions / OurTeam override above. Apply this class to
- any section's inner container div to guarantee that content edges
- line up with every other page section (Home, About, Solutions…).
+ Matches the Hero/Header/Footer's real rendered OUTER edge, not the
+ Footer's narrower inner text column. The Hero card
+ (.owl-stage-outer, via .wings-hero-page.elementor-element-741f56c)
+ and the Footer's outer band (.elementor-element-b29b8fc) both sit a
+ fixed, uncapped 20px in from the viewport edge at every desktop
+ width (verified 1280px-2400px — no max-width ever kicks in). Apply
+ this class to any Wings-page section's content wrapper to guarantee
+ its cards/timeline/grid hug those same edges instead of sitting
+ narrower and more centered.
============================================================ */
.dm-section-container {
- max-width: 1480px;
+ width: 100%;
margin-left: auto;
margin-right: auto;
box-sizing: border-box;
- width: 100%;
+ padding-left: 20px;
+ padding-right: 20px;
+}
+
+@media (max-width: 1024px) {
+ .dm-section-container {
+ padding-left: var(--dm-mobile-gutter, 10px);
+ padding-right: var(--dm-mobile-gutter, 10px);
+ }
}
/* Doormile Wings hero frame: the generic vendor CSS assigns 32px padding to
@@ -1197,3 +1214,24 @@ body {
margin-top: var(--space-section) !important;
}
}
+
+/* Global Desktop Hero Formatting (Matches live site) */
+@media (min-width: 1025px) {
+ /* Give every hero wrapper a consistent gap from the top and sides */
+ .elementor-element.elementor-element-741f56c,
+ .custom-standard-hero-container,
+ .miletruth-hero-container {
+ padding: 20px 24px !important;
+ margin-top: 8px !important;
+ }
+
+ /* Ensure all inner dark hero cards have elegant rounded corners */
+ .elementor-element.elementor-element-741f56c .owl-carousel.owl-theme .content-item,
+ .elementor-element.elementor-element-741f56c .content-item,
+ .custom-standard-hero-card,
+ .miletruth-hero .slide-content,
+ .miletruth-hero .miletruth-hero-container {
+ border-radius: 24px !important;
+ overflow: hidden !important;
+ }
+}
diff --git a/src/components/layout/Header.tsx b/src/components/layout/Header.tsx
index c69e564..435c6c7 100644
--- a/src/components/layout/Header.tsx
+++ b/src/components/layout/Header.tsx
@@ -797,11 +797,13 @@ export default function Header() {
grid-template-columns: 1fr auto 1fr !important;
align-items: center !important;
column-gap: clamp(16px, 2vw, 32px) !important;
- /* Equal left/right safe areas pull the logo and Contact
- button inward off the viewport edges. Because the inset
- is symmetric, the 1fr side columns shrink equally and the
+ /* Fixed 20px safe area on both sides — matches the Hero
+ card and Footer's outer band exactly (both use a flat
+ 20px inset, uncapped, at every desktop width), so the
+ header aligns with the rest of the page instead of
+ drifting wider on large screens. Symmetric, so the
centred nav does not shift. */
- padding-inline: clamp(24px, 3vw, 48px) !important;
+ padding-inline: 20px !important;
/* Consistent top/bottom breathing room inside the bar; with
align-items:center every section stays vertically centred. */
padding-block: clamp(8px, 1vw, 16px) !important;
@@ -833,9 +835,13 @@ export default function Header() {
align-items: center !important;
}
- /* navbar-right: Contact button, aligned to the right edge. */
+ /* navbar-right: Contact button, aligned to the right edge.
+ The vendor kit's own --margin-right:3% (site.css) would add
+ extra drift off the grid's 20px safe area — zero it so the
+ button's true right edge lands flush with that 20px inset. */
#masthead .elementor-element.elementor-element-f961133 {
justify-self: end !important;
+ margin-right: 0 !important;
}
}
diff --git a/src/components/sections/TheDoormileWay.module.css b/src/components/sections/TheDoormileWay.module.css
new file mode 100644
index 0000000..c4231f4
--- /dev/null
+++ b/src/components/sections/TheDoormileWay.module.css
@@ -0,0 +1,62 @@
+/* "The Doormile Way" — eyebrow + hairline divider + a huge display/graphic
+ headline (transparent fill, thin red stroke), composed as a poster-scale
+ typographic element rather than a plain large heading. Font, scale, and
+ line length are deliberately tuned to the reference composition, not
+ derived from a generic fluid-fill formula. */
+
+.header {
+ display: flex;
+ flex-direction: column;
+ align-items: flex-start;
+ width: 100%;
+}
+
+.kicker {
+ display: flex;
+ flex-direction: column;
+ align-items: flex-start;
+ width: 100%;
+}
+
+.eyebrow {
+ margin: 0 0 18px 0;
+ font-size: 13px;
+ font-weight: 700;
+ letter-spacing: 2.5px;
+ text-transform: uppercase;
+ color: rgba(23, 20, 15, 0.6);
+}
+
+.divider {
+ width: 100%;
+ height: 1px;
+ margin: 0 0 40px 0;
+ border: none;
+ background-color: rgba(23, 20, 15, 0.16);
+}
+
+.headingWrap {
+ width: 100%;
+}
+
+/* !important beats the sitewide `.elementor-kit-5 h2` rule
+ (public/css/site.css:48-56, specificity 0-1-1 > this single class). */
+.heading {
+ margin: 0;
+ max-width: 1220px;
+ font-family: var(--font-syne), "Syne", sans-serif !important;
+ font-weight: 800 !important;
+ font-style: normal !important;
+ letter-spacing: -0.03em !important;
+ line-height: 0.86 !important;
+ text-transform: none !important;
+ color: transparent !important;
+ -webkit-text-stroke: 2px #c01227;
+ font-size: clamp(72px, 14vw, 240px) !important;
+}
+
+@media (max-width: 640px) {
+ .heading {
+ -webkit-text-stroke-width: 1.5px;
+ }
+}
diff --git a/src/components/sections/TheDoormileWay.tsx b/src/components/sections/TheDoormileWay.tsx
index 23a1888..9d65455 100644
--- a/src/components/sections/TheDoormileWay.tsx
+++ b/src/components/sections/TheDoormileWay.tsx
@@ -2,6 +2,7 @@
import React from "react";
import { ScrollReveal, StaggerChildren } from "@/animations/Reveal";
+import styles from "./TheDoormileWay.module.css";
export default function TheDoormileWay() {
return (
@@ -10,29 +11,15 @@ export default function TheDoormileWay() {
-
-
-
-
/ Doormile Approach /
-
-
-
-
-
-
+
+
+ / Doormile Approach /
+
+
+
+ The Doormile Way
+
+
diff --git a/src/components/sections/WingsFeatureGrid.tsx b/src/components/sections/WingsFeatureGrid.tsx
index 34e8cae..2bbb972 100644
--- a/src/components/sections/WingsFeatureGrid.tsx
+++ b/src/components/sections/WingsFeatureGrid.tsx
@@ -54,7 +54,7 @@ export default function WingsFeatureGrid() {
__html: `
.wfg-section {
background: #ffffff;
- padding: var(--space-section-lg, 80px) clamp(20px, 5vw, 40px);
+ padding: var(--space-section-lg, 80px) 0;
}
.wfg-header {
@@ -82,9 +82,12 @@ export default function WingsFeatureGrid() {
margin: 0;
}
- .wfg-grid {
- max-width: 1280px;
+ .wfg-inner {
+ max-width: 1380px;
margin: 0 auto;
+ }
+
+ .wfg-grid {
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
gap: 20px;
@@ -145,20 +148,24 @@ export default function WingsFeatureGrid() {
/>
-
- / Why Businesses Choose Doormile Wings /
- Built to be depended on
-
+
+
+
+ / Why Businesses Choose Doormile Wings /
+ Built to be depended on
+
-
- {FEATURES.map((f) => (
-
-
{f.icon}
-
{f.title}
-
{f.desc}
-
- ))}
-
+
+ {FEATURES.map((f) => (
+
+
{f.icon}
+
{f.title}
+
{f.desc}
+
+ ))}
+
+
+
>
);
diff --git a/src/components/sections/WingsFinalCTA.tsx b/src/components/sections/WingsFinalCTA.tsx
index 5642c7e..6015982 100644
--- a/src/components/sections/WingsFinalCTA.tsx
+++ b/src/components/sections/WingsFinalCTA.tsx
@@ -6,6 +6,15 @@ export default function WingsFinalCTA() {
-
+
diff --git a/src/components/sections/WingsFleetStrategy.tsx b/src/components/sections/WingsFleetStrategy.tsx
index b220287..12e15d1 100644
--- a/src/components/sections/WingsFleetStrategy.tsx
+++ b/src/components/sections/WingsFleetStrategy.tsx
@@ -61,29 +61,29 @@ export default function WingsFleetStrategy() {
metrics={METRICS}
cardsHeading="FLEET SPECIFICATIONS"
cardsTheme={{ accent: "#c8102e", accent2: "#ff6a3d", glow: "rgba(200,16,46,0.22)" }}
+ gapTop
+ gapBottom
badges={[
{ value: "3", label: "Phase 1 Aircraft" },
{ value: "25", label: "Phase 2 Vision" },
]}
mediaSlot={
-
- {/* Placeholder — swap for sourced ATR72/Q400 photography or a
- designed illustration once available. */}
-
-
+
+
}
ariaLabel="Doormile Wings fleet strategy"
/>
diff --git a/src/components/sections/WingsHero.tsx b/src/components/sections/WingsHero.tsx
index 13f1311..21660f0 100644
--- a/src/components/sections/WingsHero.tsx
+++ b/src/components/sections/WingsHero.tsx
@@ -36,23 +36,29 @@ export default function WingsHero() {
return;
}
- gsap.fromTo(
- heading,
- { y: 55, opacity: 0, scale: 0.95 },
- { y: 0, opacity: 1, scale: 1, duration: 1.1, ease: "power4.out" }
- );
+ if (heading) {
+ gsap.fromTo(
+ heading,
+ { y: 55, opacity: 0, scale: 0.95 },
+ { y: 0, opacity: 1, scale: 1, duration: 1.1, ease: "power4.out" }
+ );
+ }
- gsap.fromTo(
- text,
- { y: 30, opacity: 0 },
- { y: 0, opacity: 1, duration: 0.95, ease: "power3.out", delay: 0.25 }
- );
+ if (text) {
+ gsap.fromTo(
+ text,
+ { y: 30, opacity: 0 },
+ { y: 0, opacity: 1, duration: 0.95, ease: "power3.out", delay: 0.25 }
+ );
+ }
- gsap.fromTo(
- actions,
- { y: 24, opacity: 0 },
- { y: 0, opacity: 1, duration: 0.85, ease: "power3.out", delay: 0.38 }
- );
+ if (actions) {
+ gsap.fromTo(
+ actions,
+ { y: 24, opacity: 0 },
+ { y: 0, opacity: 1, duration: 0.85, ease: "power3.out", delay: 0.38 }
+ );
+ }
}, [activeSlide]);
const handleDotClick = (index: number) => {
@@ -72,14 +78,14 @@ export default function WingsHero() {
__html: `
.wings-hero-bg.elementor-repeater-item-3264830,
.wings-hero-bg.elementor-repeater-item-6867061 {
- background-image: linear-gradient(rgba(0, 0, 0, 0.62), rgba(0, 0, 0, 0.16)), url('/images/wings-heroslider3.png') !important;
+ background-image: linear-gradient(rgba(0, 0, 0, 0.38), rgba(0, 0, 0, 0.06)), url('/images/wings-heroslider3.png') !important;
background-position: center !important;
background-repeat: no-repeat !important;
background-size: cover !important;
}
.wings-hero-bg.elementor-repeater-item-6867061 {
- background-image: linear-gradient(rgba(0, 0, 0, 0.62), rgba(0, 0, 0, 0.16)), url('/images/wings-heroslide2.png') !important;
+ background-image: linear-gradient(rgba(0, 0, 0, 0.38), rgba(0, 0, 0, 0.06)), url('/images/wings-heroslide2.png') !important;
}
#doormile-wings,
@@ -125,7 +131,7 @@ export default function WingsHero() {
align-items: center !important;
text-align: center !important;
width: 100% !important;
- max-width: 1040px !important;
+ max-width: 1000px !important;
margin: 0 auto !important;
box-sizing: border-box !important;
}
@@ -157,7 +163,7 @@ export default function WingsHero() {
.wings-hero-page .text-content {
text-align: center !important;
- max-width: 760px !important;
+ max-width: 680px !important;
width: 100% !important;
margin: 0 auto !important;
padding-left: 15px !important;
@@ -222,12 +228,15 @@ export default function WingsHero() {
@media (min-width: 1025px) {
.wings-hero-page.elementor-element-741f56c {
- padding: 20px !important;
+ padding: 20px 24px !important;
+ margin-top: 8px !important;
}
.wings-hero-page .owl-carousel.owl-theme .content-item {
height: 800px !important;
min-height: 800px !important;
+ border-radius: 24px !important;
+ overflow: hidden !important;
}
}
@@ -245,19 +254,19 @@ export default function WingsHero() {
}
.wings-hero-page .owl-stage-outer {
- height: 620px !important;
+ height: 600px !important;
}
.wings-hero-page .owl-carousel.owl-theme .content-item {
width: 100% !important;
- min-height: 620px !important;
- height: 620px !important;
+ min-height: 600px !important;
+ height: 600px !important;
border-radius: 25px !important;
overflow: hidden !important;
}
.wings-hero-page .slide-content {
- min-height: 620px !important;
+ min-height: 600px !important;
padding-left: 0 !important;
padding-right: 0 !important;
}
@@ -284,13 +293,13 @@ export default function WingsHero() {
}
.wings-hero-page .owl-stage-outer {
- height: 560px !important;
+ height: 520px !important;
}
.wings-hero-page .owl-carousel.owl-theme .content-item,
.wings-hero-page .slide-content {
- min-height: 560px !important;
- height: 560px !important;
+ min-height: 520px !important;
+ height: 520px !important;
border-radius: 22px !important;
}
@@ -303,7 +312,7 @@ export default function WingsHero() {
.wings-hero-page .content-slider-item-heading {
max-width: 100% !important;
- font-size: clamp(24px, 7.2vw, 32px) !important;
+ font-size: clamp(20px, 7vw, 32px) !important;
line-height: 1.12 !important;
}
diff --git a/src/components/sections/WingsHowItWorks.module.css b/src/components/sections/WingsHowItWorks.module.css
new file mode 100644
index 0000000..3ecfd05
--- /dev/null
+++ b/src/components/sections/WingsHowItWorks.module.css
@@ -0,0 +1,264 @@
+/* Premium editorial "How It Works" — bright warm-white surface, huge uppercase
+ display headline, top-right slide counter, and a five-column process row
+ divided by hairlines with oversized outlined numerals pinned to the top and
+ copy pinned to the bottom, echoing a tall, breathing editorial layout. */
+
+.section {
+ background: linear-gradient(180deg, #fbfaf7 0%, #f5f2ec 100%);
+ padding: clamp(56px, 7vw, 96px) 0 clamp(80px, 8vw, 120px);
+ margin-bottom: 40px;
+ margin-right: 24px;
+ margin-left: 24px;
+ border-radius: 30px;
+ position: relative;
+ overflow: hidden;
+}
+
+.sectionShell {
+ width: 100%;
+ max-width: 1420px;
+ margin: 0 auto;
+ padding: 0 5vw;
+ box-sizing: border-box;
+ position: relative;
+}
+
+@media (max-width: 1024px) {
+ .sectionShell {
+ padding: 0 24px;
+ }
+}
+
+/* ---------- Header: eyebrow + giant display headline, counter top-right ---------- */
+
+.headerRow {
+ display: flex;
+ align-items: flex-start;
+ justify-content: space-between;
+ gap: 32px;
+ margin-bottom: clamp(48px, 6vw, 88px);
+}
+
+.header {
+ text-align: left;
+ max-width: 780px;
+ margin: 0;
+}
+
+.eyebrow {
+ font-size: 12px;
+ font-weight: 700;
+ letter-spacing: 1.5px;
+ text-transform: lowercase;
+ color: rgba(20, 18, 15, 0.5);
+ margin-bottom: 22px;
+}
+
+.title {
+ font-size: clamp(32px, 4.6vw, 68px) !important;
+ font-weight: 800 !important;
+ letter-spacing: -0.01em !important;
+ line-height: 1.02 !important;
+ text-transform: uppercase !important;
+ color: #17140f !important;
+ margin: 0;
+}
+
+.progress {
+ flex-shrink: 0;
+ display: flex;
+ flex-direction: column;
+ align-items: flex-end;
+ gap: 10px;
+ margin-top: 4px;
+}
+
+.progressCount {
+ font-size: 13px;
+ font-weight: 700;
+ letter-spacing: 0.5px;
+ color: #17140f;
+ white-space: nowrap;
+}
+
+.progressTrack {
+ position: relative;
+ width: 110px;
+ height: 2px;
+ border-radius: 2px;
+ background: rgba(23, 20, 15, 0.12);
+ overflow: hidden;
+}
+
+.progressFill {
+ position: absolute;
+ top: 0;
+ left: 0;
+ height: 100%;
+ background: #c8102e;
+ transition: width 0.5s cubic-bezier(0.16, 1, 0.3, 1);
+}
+
+/* ---------- Process row: hairline-divided columns, numeral up top, copy at the bottom ---------- */
+
+.flow {
+ width: 100%;
+ display: flex;
+ align-items: stretch;
+}
+
+.step {
+ position: relative;
+ flex: 1 1 0;
+ min-width: 0;
+ min-height: clamp(200px, 18vw, 260px);
+ display: grid;
+ grid-template-rows: auto 1fr auto;
+ padding: 0 32px;
+ border-left: 1px solid rgba(23, 20, 15, 0.14);
+ cursor: pointer;
+}
+
+.step:first-child {
+ padding-left: 0;
+ border-left: none;
+}
+
+.step:last-child {
+ padding-right: 0;
+}
+
+.step:focus-visible {
+ outline: 2px solid rgba(200, 16, 46, 0.55);
+ outline-offset: 8px;
+ border-radius: 4px;
+}
+
+.stepTop {
+ display: flex;
+ align-items: flex-start;
+ gap: 8px;
+}
+
+.stepNum {
+ font-size: clamp(44px, 5.1vw, 92px);
+ font-weight: 800;
+ line-height: 0.85;
+ letter-spacing: -0.02em;
+ color: transparent;
+ -webkit-text-stroke: 1.5px rgba(23, 20, 15, 0.22);
+ transition: -webkit-text-stroke-color 0.4s ease, filter 0.4s ease;
+}
+
+.stepActive .stepNum {
+ -webkit-text-stroke-color: #c8102e;
+ filter: drop-shadow(0 0 14px rgba(200, 16, 46, 0.18));
+}
+
+.stepTag {
+ display: flex;
+ align-items: center;
+ gap: 6px;
+ margin-top: 6px;
+ font-size: 10.5px;
+ font-weight: 700;
+ letter-spacing: 2px;
+ text-transform: uppercase;
+ color: rgba(23, 20, 15, 0.4);
+ transition: color 0.4s ease;
+}
+
+.stepIcon {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ color: inherit;
+}
+
+.stepActive .stepTag {
+ color: #c8102e;
+}
+
+.stepBottom {
+ align-self: end;
+ max-width: 280px;
+}
+
+.stepTitle {
+ font-size: 19px !important;
+ font-weight: 700 !important;
+ line-height: 1.3 !important;
+ text-transform: none !important;
+ color: #17140f !important;
+ margin: 0 0 10px 0 !important;
+}
+
+.stepDesc {
+ font-size: 13.5px;
+ line-height: 1.65;
+ color: rgba(23, 20, 15, 0.55);
+ margin: 0;
+}
+
+@media (max-width: 1024px) {
+ .headerRow {
+ flex-direction: column;
+ align-items: flex-start;
+ gap: 24px;
+ }
+
+ .progress {
+ align-items: flex-start;
+ }
+
+ .flow {
+ display: grid;
+ grid-template-columns: repeat(2, minmax(0, 1fr));
+ gap: 40px 28px;
+ }
+
+ .step {
+ flex: none;
+ border-left: none;
+ padding: 0;
+ min-height: 0;
+ display: block;
+ }
+
+ .stepBottom {
+ max-width: none;
+ margin-top: 24px;
+ }
+
+ .step:nth-child(n + 3) {
+ border-top: 1px solid rgba(23, 20, 15, 0.14);
+ padding-top: 28px;
+ }
+
+ .flow > .step:last-child {
+ grid-column: 1 / -1;
+ }
+}
+
+@media (max-width: 600px) {
+ .flow {
+ display: flex;
+ flex-direction: column;
+ }
+
+ .step {
+ padding: 28px 0;
+ }
+
+ .step:first-child {
+ padding-top: 0;
+ }
+
+ .step:not(:first-child) {
+ border-top: 1px solid rgba(23, 20, 15, 0.14);
+ }
+
+ .step:last-child {
+ padding-bottom: 0;
+ }
+}
diff --git a/src/components/sections/WingsHowItWorks.tsx b/src/components/sections/WingsHowItWorks.tsx
index e202af8..35d1b8b 100644
--- a/src/components/sections/WingsHowItWorks.tsx
+++ b/src/components/sections/WingsHowItWorks.tsx
@@ -1,14 +1,15 @@
"use client";
import { useState } from "react";
-import { ScrollReveal } from "@/animations/Reveal";
+import { ScrollReveal, StaggerChildren } from "@/animations/Reveal";
+import styles from "./WingsHowItWorks.module.css";
const STEPS = [
{
label: "Local Pickup",
desc: "Fast, on-demand first-mile logistics dispatched by electric vehicle.",
icon: (
-