feat: refine responsive automotive storefront
@@ -158,13 +158,22 @@ img {
|
||||
text-decoration: none;
|
||||
line-height: 1.2;
|
||||
cursor: pointer;
|
||||
transition: opacity 180ms ease, background-color 180ms ease, border-color 180ms ease;
|
||||
transition:
|
||||
opacity 180ms ease,
|
||||
color 180ms ease,
|
||||
background-color 180ms ease,
|
||||
border-color 180ms ease,
|
||||
transform 180ms ease;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.btn:hover {
|
||||
opacity: 0.85;
|
||||
transform: none;
|
||||
transform: translateY(-2px);
|
||||
}
|
||||
|
||||
.btn:active {
|
||||
transform: translateY(0);
|
||||
}
|
||||
|
||||
.btn:focus-visible {
|
||||
@@ -267,7 +276,16 @@ img {
|
||||
border-bottom: 1px solid var(--b2b-line-light);
|
||||
backdrop-filter: blur(12px);
|
||||
-webkit-backdrop-filter: blur(12px);
|
||||
transition: border-color 180ms ease;
|
||||
transition:
|
||||
background-color 240ms ease,
|
||||
border-color 240ms ease,
|
||||
box-shadow 240ms ease;
|
||||
}
|
||||
|
||||
.b2b-header.sticky {
|
||||
background: rgba(250, 250, 248, 0.98);
|
||||
border-color: rgba(28, 28, 26, 0.12);
|
||||
box-shadow: 0 8px 24px rgba(28, 28, 26, 0.06);
|
||||
}
|
||||
|
||||
.b2b-header .navbar {
|
||||
@@ -339,7 +357,14 @@ img {
|
||||
min-height: 85vh;
|
||||
padding: 8rem 0 5rem;
|
||||
align-items: center;
|
||||
background: var(--b2b-surface);
|
||||
background:
|
||||
linear-gradient(
|
||||
90deg,
|
||||
rgba(250, 250, 248, 0.98) 0%,
|
||||
rgba(250, 250, 248, 0.92) 42%,
|
||||
rgba(250, 250, 248, 0.28) 100%
|
||||
),
|
||||
url("../images/hero-car.jpg") center 58% / cover no-repeat;
|
||||
}
|
||||
|
||||
.b2b-hero h1 {
|
||||
@@ -593,9 +618,22 @@ img {
|
||||
max-width: 520px;
|
||||
}
|
||||
|
||||
.cta-section .btn-b2b-primary {
|
||||
color: var(--b2b-ink);
|
||||
background: var(--b2b-surface);
|
||||
border-color: var(--b2b-surface);
|
||||
}
|
||||
|
||||
.cta-section .btn-b2b-primary:hover,
|
||||
.cta-section .btn-b2b-primary:focus {
|
||||
color: var(--b2b-ink);
|
||||
background: var(--b2b-mist);
|
||||
border-color: var(--b2b-mist);
|
||||
}
|
||||
|
||||
/* ---- FAQ Section ---- */
|
||||
.faq-section {
|
||||
background: var(--b2b-surface);
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
.faq-section .accordion,
|
||||
@@ -628,11 +666,26 @@ img {
|
||||
.faq-section .accordion-button::after {
|
||||
filter: none;
|
||||
opacity: 0.4;
|
||||
transition: opacity 220ms ease, transform 220ms ease;
|
||||
}
|
||||
|
||||
.faq-section .accordion-button:hover::after,
|
||||
.faq-section .accordion-button:not(.collapsed)::after {
|
||||
opacity: 0.75;
|
||||
}
|
||||
|
||||
.faq-section .accordion-body {
|
||||
padding: 0 0 1.5rem;
|
||||
color: var(--b2b-ink-soft);
|
||||
opacity: 0;
|
||||
transform: translateY(-4px);
|
||||
transition: opacity 220ms ease, transform 220ms ease;
|
||||
}
|
||||
|
||||
.faq-section .accordion-collapse.collapsing .accordion-body,
|
||||
.faq-section .accordion-collapse.show .accordion-body {
|
||||
opacity: 1;
|
||||
transform: translateY(0);
|
||||
}
|
||||
|
||||
/* ---- Factory / Store Environment ---- */
|
||||
@@ -676,10 +729,88 @@ img {
|
||||
grid-row: span 2;
|
||||
}
|
||||
|
||||
.factory-gallery-extra {
|
||||
grid-column: 1 / -1;
|
||||
height: 220px;
|
||||
}
|
||||
|
||||
.factory-gallery img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover;
|
||||
transition: transform 500ms ease;
|
||||
}
|
||||
|
||||
.factory-gallery figure:hover img {
|
||||
transform: scale(1.03);
|
||||
}
|
||||
|
||||
/* ---- Store Credentials ---- */
|
||||
.credentials-section {
|
||||
background: var(--b2b-elevated);
|
||||
}
|
||||
|
||||
.credentials-section .section-lead {
|
||||
margin-right: auto;
|
||||
margin-left: auto;
|
||||
}
|
||||
|
||||
.credentials-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, minmax(0, 1fr));
|
||||
gap: 1px;
|
||||
background: var(--b2b-line);
|
||||
}
|
||||
|
||||
.credential-card {
|
||||
min-width: 0;
|
||||
background: var(--b2b-surface);
|
||||
}
|
||||
|
||||
.credential-media {
|
||||
display: block;
|
||||
overflow: hidden;
|
||||
aspect-ratio: 4 / 3;
|
||||
background: var(--b2b-mist);
|
||||
}
|
||||
|
||||
.credential-media img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover;
|
||||
transition: transform 500ms ease;
|
||||
}
|
||||
|
||||
.credential-media:hover {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.credential-media:hover img {
|
||||
transform: scale(1.03);
|
||||
}
|
||||
|
||||
.credential-media.is-contain {
|
||||
padding: 1rem;
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
.credential-media.is-contain img {
|
||||
object-fit: contain;
|
||||
}
|
||||
|
||||
.credential-body {
|
||||
padding: 1.5rem;
|
||||
}
|
||||
|
||||
.credential-body h3 {
|
||||
margin-bottom: 0.75rem;
|
||||
font-size: 1.15rem;
|
||||
}
|
||||
|
||||
.credential-body p {
|
||||
margin: 0;
|
||||
color: var(--b2b-ink-soft);
|
||||
font-size: 0.9rem;
|
||||
}
|
||||
|
||||
/* ---- Factory Video ---- */
|
||||
@@ -914,6 +1045,21 @@ textarea:focus-visible {
|
||||
padding-top: 8.5rem;
|
||||
}
|
||||
|
||||
.b2b-section.about-intro {
|
||||
position: relative;
|
||||
color: #fff;
|
||||
background:
|
||||
linear-gradient(90deg, rgba(16, 17, 15, 0.7), rgba(16, 17, 15, 0.42)),
|
||||
url("../images/store/storefront.jpg") center 42% / cover no-repeat;
|
||||
}
|
||||
|
||||
.about-intro .section-heading,
|
||||
.about-intro .section-eyebrow,
|
||||
.about-intro h1,
|
||||
.about-intro .about-content {
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
.page-content {
|
||||
padding-bottom: 5rem;
|
||||
}
|
||||
@@ -964,101 +1110,200 @@ textarea:focus-visible {
|
||||
}
|
||||
|
||||
/* ---- Contact Page ---- */
|
||||
.contact-info-card {
|
||||
padding: 2.5rem 2rem;
|
||||
.contact-section {
|
||||
padding-top: 0;
|
||||
background: var(--b2b-surface);
|
||||
border: 1px solid var(--b2b-line);
|
||||
}
|
||||
|
||||
.contact-info-item {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
gap: 1rem;
|
||||
padding: 1.25rem 0;
|
||||
}
|
||||
|
||||
.contact-info-item + .contact-info-item {
|
||||
border-top: 1px solid var(--b2b-line-light);
|
||||
}
|
||||
|
||||
.contact-info-icon {
|
||||
flex-shrink: 0;
|
||||
width: 44px;
|
||||
height: 44px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
background: var(--b2b-mist);
|
||||
}
|
||||
|
||||
.contact-info-body h3 {
|
||||
font-size: 0.9rem;
|
||||
margin-bottom: 0.2rem;
|
||||
color: var(--b2b-ink-muted);
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.contact-info-body p,
|
||||
.contact-info-body a {
|
||||
font-size: 1rem;
|
||||
font-weight: 500;
|
||||
color: var(--b2b-ink);
|
||||
text-decoration: none;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.contact-info-body a:hover {
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
.contact-info-body .whatsapp-link {
|
||||
display: inline-block;
|
||||
margin-top: 0.25rem;
|
||||
padding: 0.375rem 1rem;
|
||||
background: var(--b2b-ink);
|
||||
color: var(--b2b-surface);
|
||||
font-size: 0.85rem;
|
||||
font-weight: 500;
|
||||
text-decoration: none;
|
||||
letter-spacing: 0.04em;
|
||||
}
|
||||
|
||||
.contact-info-body .whatsapp-link:hover {
|
||||
opacity: 0.85;
|
||||
color: var(--b2b-surface);
|
||||
}
|
||||
|
||||
/* Map card */
|
||||
.contact-map-card {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
min-height: 320px;
|
||||
padding: 3rem 2rem;
|
||||
background: var(--b2b-mist);
|
||||
border: 1px solid var(--b2b-line);
|
||||
text-align: center;
|
||||
text-decoration: none;
|
||||
transition: background 180ms ease;
|
||||
}
|
||||
|
||||
.contact-map-card:hover {
|
||||
.contact-hero-grid {
|
||||
min-height: 520px;
|
||||
background: var(--b2b-elevated);
|
||||
}
|
||||
|
||||
.contact-hero-copy {
|
||||
display: flex;
|
||||
height: 100%;
|
||||
min-height: 520px;
|
||||
padding: clamp(2.5rem, 5vw, 5rem);
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.contact-hero-copy h1 {
|
||||
margin-bottom: 1.5rem;
|
||||
font-family: var(--b2b-font-display);
|
||||
font-size: clamp(2.7rem, 5vw, 4.8rem);
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
.contact-hero-lead {
|
||||
max-width: 440px;
|
||||
margin-bottom: 0;
|
||||
color: var(--b2b-ink-soft);
|
||||
font-size: 1.05rem;
|
||||
line-height: 1.8;
|
||||
}
|
||||
|
||||
.contact-hero-actions {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 0.75rem;
|
||||
margin-top: 2rem;
|
||||
}
|
||||
|
||||
.contact-store-media {
|
||||
position: relative;
|
||||
height: 100%;
|
||||
min-height: 520px;
|
||||
margin: 0;
|
||||
overflow: hidden;
|
||||
background: var(--b2b-mist);
|
||||
}
|
||||
|
||||
.contact-store-media img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover;
|
||||
transition: transform 700ms cubic-bezier(0.2, 0.7, 0.2, 1);
|
||||
}
|
||||
|
||||
.contact-store-media:hover img {
|
||||
transform: scale(1.025);
|
||||
}
|
||||
|
||||
.contact-store-media figcaption {
|
||||
position: absolute;
|
||||
right: 1.25rem;
|
||||
bottom: 1.25rem;
|
||||
padding: 0.55rem 0.8rem;
|
||||
color: #fff;
|
||||
background: rgba(16, 17, 15, 0.72);
|
||||
font-size: 0.74rem;
|
||||
letter-spacing: 0.08em;
|
||||
}
|
||||
|
||||
.contact-details-section {
|
||||
background: var(--b2b-mist);
|
||||
}
|
||||
|
||||
.contact-detail-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, minmax(0, 1fr));
|
||||
gap: 1px;
|
||||
background: var(--b2b-line);
|
||||
}
|
||||
|
||||
.contact-detail-grid.has-hours {
|
||||
grid-template-columns: repeat(4, minmax(0, 1fr));
|
||||
}
|
||||
|
||||
.contact-detail-card {
|
||||
min-width: 0;
|
||||
padding: 2rem;
|
||||
background: var(--b2b-surface);
|
||||
}
|
||||
|
||||
.contact-detail-label {
|
||||
margin-bottom: 1.5rem;
|
||||
color: var(--b2b-ink-muted);
|
||||
font-size: 0.72rem;
|
||||
font-weight: 500;
|
||||
letter-spacing: 0.12em;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.contact-detail-card h3,
|
||||
.contact-detail-card h3 a {
|
||||
margin: 0;
|
||||
color: var(--b2b-ink);
|
||||
font-size: clamp(1.05rem, 1.8vw, 1.35rem);
|
||||
font-weight: 400;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.contact-map-icon {
|
||||
color: var(--b2b-ink-soft);
|
||||
margin-bottom: 1rem;
|
||||
.contact-detail-card h3 a:hover {
|
||||
opacity: 0.65;
|
||||
}
|
||||
|
||||
.contact-map-address {
|
||||
font-size: 1rem;
|
||||
font-weight: 500;
|
||||
color: var(--b2b-ink);
|
||||
.contact-detail-empty {
|
||||
margin: 0;
|
||||
max-width: 320px;
|
||||
color: var(--b2b-ink-muted);
|
||||
}
|
||||
|
||||
.contact-map-section {
|
||||
background: var(--b2b-surface);
|
||||
}
|
||||
|
||||
.contact-map-heading {
|
||||
display: flex;
|
||||
align-items: flex-end;
|
||||
justify-content: space-between;
|
||||
gap: 2rem;
|
||||
margin-bottom: 2rem;
|
||||
}
|
||||
|
||||
.contact-map-heading h2 {
|
||||
margin-bottom: 0.75rem;
|
||||
}
|
||||
|
||||
.contact-map-heading p:last-child {
|
||||
color: var(--b2b-ink-soft);
|
||||
}
|
||||
|
||||
.contact-map-panel {
|
||||
position: relative;
|
||||
min-height: 520px;
|
||||
overflow: hidden;
|
||||
background:
|
||||
linear-gradient(rgba(28, 28, 26, 0.06) 1px, transparent 1px),
|
||||
linear-gradient(90deg, rgba(28, 28, 26, 0.06) 1px, transparent 1px),
|
||||
var(--b2b-mist);
|
||||
background-size: 48px 48px;
|
||||
border: 1px solid var(--b2b-line);
|
||||
}
|
||||
|
||||
.contact-map-panel iframe {
|
||||
display: block;
|
||||
width: 100%;
|
||||
min-height: 520px;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
.contact-map-placeholder {
|
||||
display: flex;
|
||||
min-height: 520px;
|
||||
padding: 2rem;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
flex-direction: column;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.contact-map-placeholder span {
|
||||
margin-bottom: 1rem;
|
||||
font-size: 2rem;
|
||||
}
|
||||
|
||||
.contact-map-placeholder p {
|
||||
margin: 0;
|
||||
color: var(--b2b-ink-soft);
|
||||
}
|
||||
|
||||
/* ---- Reveal Motion ---- */
|
||||
.motion-ready .reveal-item {
|
||||
opacity: 0;
|
||||
transform: translateY(var(--reveal-distance, 18px));
|
||||
transition:
|
||||
opacity 550ms cubic-bezier(0.2, 0.7, 0.2, 1),
|
||||
transform 550ms cubic-bezier(0.2, 0.7, 0.2, 1);
|
||||
transition-delay: var(--reveal-delay, 0ms);
|
||||
will-change: opacity, transform;
|
||||
}
|
||||
|
||||
.motion-ready .reveal-item.is-visible {
|
||||
opacity: 1;
|
||||
transform: translateY(0);
|
||||
will-change: auto;
|
||||
}
|
||||
|
||||
/* ---- Reduced Motion ---- */
|
||||
@@ -1070,6 +1315,11 @@ textarea:focus-visible {
|
||||
animation-iteration-count: 1 !important;
|
||||
transition-duration: 0.01ms !important;
|
||||
}
|
||||
|
||||
.motion-ready .reveal-item {
|
||||
opacity: 1 !important;
|
||||
transform: none !important;
|
||||
}
|
||||
}
|
||||
|
||||
/* ============================================================
|
||||
@@ -1127,6 +1377,29 @@ textarea:focus-visible {
|
||||
.b2b-header .offcanvas .nav-item {
|
||||
border-bottom: 1px solid var(--b2b-line-light);
|
||||
width: 100%;
|
||||
opacity: 0;
|
||||
transform: translateX(8px);
|
||||
transition:
|
||||
opacity 320ms cubic-bezier(0.2, 0.7, 0.2, 1),
|
||||
transform 320ms cubic-bezier(0.2, 0.7, 0.2, 1);
|
||||
}
|
||||
|
||||
.b2b-header .offcanvas.showing .nav-item,
|
||||
.b2b-header .offcanvas.show .nav-item {
|
||||
opacity: 1;
|
||||
transform: translateX(0);
|
||||
}
|
||||
|
||||
.b2b-header .offcanvas .nav-item:nth-child(2) { transition-delay: 40ms; }
|
||||
.b2b-header .offcanvas .nav-item:nth-child(3) { transition-delay: 80ms; }
|
||||
.b2b-header .offcanvas .nav-item:nth-child(4) { transition-delay: 120ms; }
|
||||
.b2b-header .offcanvas .nav-item:nth-child(5) { transition-delay: 160ms; }
|
||||
.b2b-header .offcanvas .nav-item:nth-child(6) { transition-delay: 200ms; }
|
||||
|
||||
.b2b-header .offcanvas.hiding .nav-item {
|
||||
opacity: 0;
|
||||
transform: translateX(4px);
|
||||
transition-delay: 0ms;
|
||||
}
|
||||
|
||||
.b2b-header .offcanvas .nav-link {
|
||||
@@ -1182,13 +1455,29 @@ textarea:focus-visible {
|
||||
margin-top: 1.5rem;
|
||||
}
|
||||
|
||||
.credentials-grid {
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
}
|
||||
|
||||
.factory-video-section {
|
||||
padding-bottom: 5rem;
|
||||
}
|
||||
|
||||
.contact-map-card {
|
||||
min-height: 220px;
|
||||
padding: 2rem 1.5rem;
|
||||
.contact-hero-grid,
|
||||
.contact-hero-copy,
|
||||
.contact-store-media {
|
||||
min-height: 420px;
|
||||
}
|
||||
|
||||
.contact-detail-grid,
|
||||
.contact-detail-grid.has-hours {
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
}
|
||||
|
||||
.contact-map-panel,
|
||||
.contact-map-panel iframe,
|
||||
.contact-map-placeholder {
|
||||
min-height: 420px;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1209,6 +1498,9 @@ textarea:focus-visible {
|
||||
|
||||
.b2b-hero {
|
||||
padding-top: 6.5rem;
|
||||
background:
|
||||
linear-gradient(rgba(250, 250, 248, 0.84), rgba(250, 250, 248, 0.84)),
|
||||
url("../images/hero-car.jpg") 62% center / cover no-repeat;
|
||||
}
|
||||
|
||||
.b2b-hero h1 {
|
||||
@@ -1265,6 +1557,35 @@ textarea:focus-visible {
|
||||
padding-bottom: 4rem;
|
||||
}
|
||||
|
||||
.contact-section {
|
||||
padding-top: 0;
|
||||
}
|
||||
|
||||
.contact-hero-copy {
|
||||
min-height: auto;
|
||||
padding: 3rem 2rem;
|
||||
}
|
||||
|
||||
.contact-store-media {
|
||||
min-height: 360px;
|
||||
}
|
||||
|
||||
.contact-detail-grid,
|
||||
.contact-detail-grid.has-hours {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
|
||||
.contact-map-heading {
|
||||
align-items: flex-start;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.contact-map-panel,
|
||||
.contact-map-panel iframe,
|
||||
.contact-map-placeholder {
|
||||
min-height: 360px;
|
||||
}
|
||||
|
||||
.about-cta {
|
||||
padding: 4rem 0;
|
||||
}
|
||||
@@ -1279,13 +1600,23 @@ textarea:focus-visible {
|
||||
.factory-gallery {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr;
|
||||
grid-template-rows: repeat(4, 200px);
|
||||
grid-template-rows: none;
|
||||
grid-auto-rows: 200px;
|
||||
}
|
||||
|
||||
.factory-gallery figure:first-child {
|
||||
grid-row: auto;
|
||||
}
|
||||
|
||||
.factory-gallery-extra {
|
||||
grid-column: auto;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
.credentials-grid {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
|
||||
.capability-body {
|
||||
padding: 1.25rem;
|
||||
}
|
||||
@@ -1294,7 +1625,8 @@ textarea:focus-visible {
|
||||
padding: 1.25rem 1rem;
|
||||
}
|
||||
|
||||
.contact-map-card {
|
||||
min-height: 180px;
|
||||
.contact-hero-actions .btn,
|
||||
.contact-map-heading .btn {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
# Image attribution
|
||||
|
||||
- `hero-car.jpg` — Photo by Quentin Martinez on [Pexels](https://www.pexels.com/photo/sleek-profile-of-a-luxury-sports-car-in-studio-lighting-33345481/), downloaded on 2026-07-25 and used under the [Pexels License](https://www.pexels.com/license/).
|
||||
|
After Width: | Height: | Size: 86 KiB |
|
After Width: | Height: | Size: 301 KiB |
|
After Width: | Height: | Size: 276 KiB |
|
After Width: | Height: | Size: 232 KiB |
|
After Width: | Height: | Size: 95 KiB |
|
After Width: | Height: | Size: 318 KiB |
|
After Width: | Height: | Size: 296 KiB |
|
After Width: | Height: | Size: 504 KiB |
@@ -25,9 +25,93 @@
|
||||
});
|
||||
}
|
||||
|
||||
function initRevealMotion() {
|
||||
var reducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
|
||||
var compactMotion = window.matchMedia('(max-width: 768px)').matches;
|
||||
if (reducedMotion || !('IntersectionObserver' in window)) return;
|
||||
|
||||
var revealItems = [];
|
||||
|
||||
function prepareGroup(containerSelector, itemSelector, delayStep) {
|
||||
document.querySelectorAll(containerSelector).forEach(function (container) {
|
||||
container.querySelectorAll(itemSelector).forEach(function (item, index) {
|
||||
var effectiveStep = compactMotion ? 40 : delayStep;
|
||||
var maximumDelay = compactMotion ? 200 : 300;
|
||||
var delay = Math.min(index * effectiveStep, maximumDelay);
|
||||
item.classList.add('reveal-item');
|
||||
item.style.setProperty('--reveal-delay', delay + 'ms');
|
||||
revealItems.push(item);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
prepareGroup(
|
||||
'.b2b-hero',
|
||||
'.section-eyebrow, h1, .b2b-hero-lead, .d-flex.flex-wrap, .hero-proof-list',
|
||||
80
|
||||
);
|
||||
prepareGroup('.trust-strip .row', '.trust-metric', 60);
|
||||
prepareGroup('.capability-grid', '.capability-card', 60);
|
||||
prepareGroup('.case-grid', '.case-card', 60);
|
||||
prepareGroup('.factory-gallery', 'figure', 60);
|
||||
prepareGroup('.credentials-grid', '.credential-card', 60);
|
||||
prepareGroup('.document-grid', 'article', 60);
|
||||
prepareGroup('.contact-detail-grid', '.contact-detail-card', 60);
|
||||
prepareGroup('.service-content, .case-content', ':scope > *', 40);
|
||||
|
||||
document.querySelectorAll(
|
||||
[
|
||||
'.section-heading',
|
||||
'.factory-proof .col-lg-5',
|
||||
'.factory-video-card',
|
||||
'.faq-section .col-lg-4',
|
||||
'.faq-section .accordion',
|
||||
'.contact-hero-copy',
|
||||
'.contact-store-media',
|
||||
'.contact-map-heading',
|
||||
'.contact-map-panel',
|
||||
'.cta-section .container',
|
||||
'.about-cta .container',
|
||||
'.page-header'
|
||||
].join(', ')
|
||||
).forEach(function (item) {
|
||||
if (item.classList.contains('reveal-item')) return;
|
||||
item.classList.add('reveal-item');
|
||||
item.style.setProperty('--reveal-delay', '0ms');
|
||||
revealItems.push(item);
|
||||
});
|
||||
|
||||
if (!revealItems.length) return;
|
||||
|
||||
document.documentElement.classList.add('motion-ready');
|
||||
|
||||
var observer = new IntersectionObserver(
|
||||
function (entries) {
|
||||
entries.forEach(function (entry) {
|
||||
if (!entry.isIntersecting) return;
|
||||
entry.target.classList.add('is-visible');
|
||||
observer.unobserve(entry.target);
|
||||
});
|
||||
},
|
||||
{
|
||||
threshold: 0.12,
|
||||
rootMargin: '0px'
|
||||
}
|
||||
);
|
||||
|
||||
window.requestAnimationFrame(function () {
|
||||
window.requestAnimationFrame(function () {
|
||||
revealItems.forEach(function (item) {
|
||||
observer.observe(item);
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function initTheme() {
|
||||
initStickyHeader();
|
||||
initNavigation();
|
||||
initRevealMotion();
|
||||
}
|
||||
|
||||
if (document.readyState === 'loading') {
|
||||
|
||||