Files
hesu-JT/css/style.css
T

985 lines
31 KiB
CSS
Raw Normal View History

2026-08-27 11:54:26 +08:00
/* ============================================================
HESU — Homepage styles (hand-written CSS)
Sections: tokens · base · layout · header/nav · hero ·
business · presence · partner · news · footer ·
placeholders · animations · responsive
============================================================ */
/* ---------- Design tokens ---------- */
:root {
/* Ink / dark surfaces */
--ink-950: #060d1a;
--ink-900: #0a1424;
--ink-800: #0e1c30;
--ink-700: #13233c;
--ink-600: #1b2f4d;
--ink-500: #274063;
--bg-solid: #010F1E; /* header + footer */
/* Orange (deep → light) */
--orange-900: #c44400;
--orange-700: #ff6a00;
--orange-500: #ff8a1e;
--orange-300: #ffb15c;
--orange-100: #ffd9b0;
--grad-orange: linear-gradient(135deg, var(--orange-700), var(--orange-300));
--grad-orange-soft: linear-gradient(135deg, rgba(255,106,0,0.95), rgba(255,177,92,0.95));
/* Light surfaces */
--surface-light: #f4f6f9;
--surface-light-2: #ffffff;
--line: #e3e7ee;
/* Text */
--text-dark: #18222f;
--text-mid: #404040;
--text-light: #ffffff;
--text-light-80: rgba(255, 255, 255, 0.8);
--text-light-60: rgba(255, 255, 255, 0.6);
--text-light-40: rgba(255, 255, 255, 0.4);
/* Type */
/* --font-display: 'Archivo', 'Segoe UI', system-ui, sans-serif; */
--font-display: 'Inter', 'Segoe UI', system-ui, sans-serif;
--font-body: 'Inter', 'Segoe UI', system-ui, sans-serif;
/* Layout */
--container: min(92vw, 1440px);
--radius: 10px;
--radius-lg: 16px;
--header-h: 80px;
--ease: cubic-bezier(.2, .7, .2, 1);
}
/* ---------- Reset / base ---------- */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
body {
font-family: var(--font-body);
color: var(--text-light);
line-height: 1.6;
-webkit-font-smoothing: antialiased;
text-rendering: optimizeLegibility;
overflow-x: hidden;
}
a { color: inherit; text-decoration: none; }
ul { list-style: none; }
img { max-width: 100%; display: block; }
/* ---------- Layout helpers ---------- */
.container {
width: 100%;
max-width: var(--container);
margin-inline: auto;
padding-inline: 32px;
}
.page-content {
background: url(../image/home-bgs.png) no-repeat;
color: var(--text-light);
background-size: 100% 100%;
}
.page-content > section { background: transparent; }
.section-head { margin-bottom: 48px; }
.section-head.center { text-align: center; }
.section-head.center .section-lead { max-width: 850px; margin: 18px auto 28px; }
.section-title {
font-family: var(--font-display);
/* font-weight: 800; */
font-size: clamp(1.8rem, 3vw, 2.6rem);
letter-spacing: 0.01em;
line-height: 1.15;
text-transform: uppercase;
}
.section-title-d{
color: #202020;
}
.section-lead { color: var(--text-light-60); font-size: 1.02rem; }
.section-lead strong { color: var(--orange-500); }
/* ---------- Buttons ---------- */
.btn {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 8px;
font-family: var(--font-display);
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.12em;
font-size: 0.78rem;
border-radius: var(--radius);
cursor: pointer;
2026-09-02 14:24:54 +08:00
/* border: 1px solid transparent;*/
2026-08-27 11:54:26 +08:00
transition: transform .25s var(--ease), background .25s var(--ease), color .25s var(--ease), box-shadow .25s var(--ease);
}
.btn-contact {
background: linear-gradient(88.61deg, #FF6000 7.43%, #FFA557 98.82%);
padding: 8px 22px;
color: #fff;
}
.btn-contact:hover { transform: translateY(-2px);background: linear-gradient(88.61deg, rgba(255, 132, 17, 0.8) 7.43%, rgba(255, 207, 87, 0.8) 98.82%);
}
.btn-explore {
background: #000;
color: #fff;
padding: 13px 30px;
backdrop-filter: blur(6px);
}
.btn-explore:hover { background: rgba(8, 16, 30, 0.8); border-color: #fff; transform: translateY(-2px); }
.btn-outline {
background: transparent;
color: #fff;
border: 1px solid var(--orange-500);
padding: 12px 28px;
}
.btn-outline:hover { background: var(--orange-500); color: #1a0f00; }
/* ============================================================
HEADER
============================================================ */
.site-header {
position: fixed;
inset: 0 0 auto 0;
z-index: 50;
height: var(--header-h);
display: flex;
align-items: center;
background: var(--bg-solid);
transition: box-shadow .35s var(--ease), height .35s var(--ease);
}
.site-header.scrolled {
box-shadow: 0 6px 24px rgba(0,0,0,0.45);
}
.header-inner {
display: flex;
align-items: center;
justify-content: space-between;
gap: 24px;
width: 100%;
}
/* Logo (image/logo.png — light artwork, for the dark header/footer bars) */
.logo { display: inline-flex; align-items: center; }
.logo-img { display: block; height: 32px; width: auto; }
/* Nav */
.main-nav { display: flex; }
.nav-list { display: flex; align-items: center; gap: 36px; }
.nav-item { position: relative; }
.nav-item > a {
font-family: var(--font-display);
font-weight: 600;
font-size: 0.92rem;
letter-spacing: 0.04em;
color: var(--text-light-80);
padding: 8px 0;
display: inline-flex;
align-items: center;
gap: 6px;
transition: color .2s var(--ease);
}
.nav-item > a:hover { color: var(--orange-500); }
/* active page marker (orange underline) */
.nav-item > a.active { color: var(--orange-500); position: relative; }
.nav-item > a.active::after {
content: "";
position: absolute;
left: 0; right: 0; bottom: 0;
height: 2px;
background: var(--orange-700);
border-radius: 2px;
}
.caret {
width: 6px; height: 6px;
border-right: 2px solid currentColor;
border-bottom: 2px solid currentColor;
transform: rotate(45deg) translateY(-2px);
opacity: .7;
}
/* ============================================================
FULL-SCREEN MEGA MENU (desktop hover)
============================================================ */
.nav-item.mega-on > a { color: var(--orange-500); }
/* Contact Us lives in the header button on desktop; inside the drawer on mobile */
.nav-item.nav-contact { display: none; }
/* drawer logo is mobile-only (desktop keeps the header logo) */
.drawer-logo { display: none; }
.mega {
position: fixed;
top: var(--header-h);
left: 0; right: 0; bottom: 0;
background: linear-gradient(180deg, rgb(123 123 123 / 80%) 0%, rgba(255, 255, 255, 0.4) 50%, rgba(255, 255, 255, 0.01) 115.88%);
/* background: linear-gradient(180deg, rgb(255 255 255 / 80%) 0%, rgba(255, 255, 255, 0.4) 50%, rgba(255, 255, 255, 0.01) 115.88%); */
-webkit-backdrop-filter: blur(14px) saturate(120%);
backdrop-filter: blur(14px) saturate(120%);
z-index: 45;
overflow: hidden;
opacity: 0;
visibility: hidden;
pointer-events: none;
transition: opacity .3s var(--ease), visibility .3s;
}
.mega.open { opacity: 1; visibility: visible; pointer-events: auto; }
.mega-inner {
max-width: var(--container);
margin: 0 auto;
height: 100%;
display: flex;
gap: 48px;
padding: 44px 32px 36px;
}
.mega-left { flex: 0 0 280px; padding-top: 4px; }
.mega-title {
font-family: var(--font-display);
font-weight: 800;
font-size: clamp(1.3rem, 2vw, 1.85rem);
line-height: 1.15;
color: #fff;
margin-bottom: 14px;
}
/* right cards grid — 4 per row, multiple rows, scrolls on overflow */
.mega-right {
flex: 1;
min-width: 0;
min-height: 0;
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 18px;
align-content: start;
overflow-y: auto;
padding-right: 8px;
}
@media (max-width: 1180px) {
.mega-left { flex-basis: 230px; }
.mega-right { grid-template-columns: repeat(3, 1fr); }
}
@media (max-width: 980px) {
.mega-right { grid-template-columns: repeat(2, 1fr); }
}
.mega-card {
display: flex; flex-direction: column;
overflow: hidden;
text-decoration: none;
opacity: 0;
transform: translateY(16px);
transition: transform .3s var(--ease), border-color .3s, background .3s, opacity .3s;
}
.mega.open .mega-card { opacity: 1; transform: none; }
.mega.open .mega-card:nth-child(1) { transition-delay: .05s; }
.mega.open .mega-card:nth-child(2) { transition-delay: .10s; }
.mega.open .mega-card:nth-child(3) { transition-delay: .15s; }
.mega.open .mega-card:nth-child(4) { transition-delay: .20s; }
.mega-card:hover {
transform: translateY(-6px);
border-color: rgba(255,138,30,0.6);
background: rgba(255,138,30,0.06);
}
.mega-card-img { width: 100%; aspect-ratio: 4 / 3; position: relative; }
.mega-card-text { padding: 14px 12px 16px; text-align: center; }
.mega-card-text h4 {
font-family: var(--font-display);
font-weight: 700;
font-size: 0.92rem;
color: #fff;
line-height: 1.3;
}
.mega-card-text p { display: none; }
.header-right { display: flex; align-items: center; gap: 16px; }
/* Mobile toggle */
.menu-toggle {
display: none;
flex-direction: column;
justify-content: center;
gap: 5px;
width: 40px; height: 40px;
background: transparent; border: 0; cursor: pointer;
}
.menu-toggle span {
display: block; width: 24px; height: 2px; background: #fff;
transition: transform .3s var(--ease), opacity .3s;
}
.menu-toggle.open span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.menu-toggle.open span:nth-child(2) { opacity: 0; }
.menu-toggle.open span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }
/* ============================================================
HERO
============================================================ */
.hero {
position: relative;
min-height: 88vh;
display: flex;
flex-direction: column;
justify-content: center;
overflow: hidden;
margin-top: var(--header-h); /* banner starts BELOW the fixed nav */
}
.hero-bg {
position: absolute; inset: 0;
z-index: 0;
background-image: url(../image/home/banner.jpg);
background-size: cover;
background-position: center;
}
.hero-bg::before { display: none; } /* star field placeholder removed */
.hero-content {
position: relative;
z-index: 2;
text-align: center;
flex: 1;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
.hero-title {
font-family: var(--font-display);
font-weight: 900;
font-size: clamp(3.5rem, 10vw, 7rem);
letter-spacing: 0.3em;
line-height: 1;
margin-right: -0.3em; /* compensate trailing letterspacing for centering */
background: linear-gradient(180deg, #fff, #fff);
-webkit-background-clip: text; background-clip: text;
-webkit-text-fill-color: transparent;
}
.hero-sub {
font-family: var(--font-display);
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.14em;
font-size: clamp(0.95rem, 2vw, 2.35rem);
color: #fff;
margin-top: 18px;
}
.hero-tag {
color: var(--text-light-80);
font-size: 0.95rem;
margin-top: 10px;
}
.btn-explore { margin-top: 34px; }
/* Stats bar */
.hero-stats {
position: relative;
z-index: 2;
padding: 30px 0;
}
.stats-grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 24px;
text-align: center;
}
.stat { display: flex; flex-direction: column; gap: 6px; }
.stat-num {
font-family: var(--font-display);
font-weight: 900;
font-size: clamp(1.8rem, 4vw, 2.8rem);
line-height: 1;
background: linear-gradient(88.61deg, #E68735 7.43%, rgba(255, 96, 0, 0.98) 98.82%);
-webkit-background-clip: text; background-clip: text;
-webkit-text-fill-color: transparent;
}
.stat-label {
text-transform: uppercase;
letter-spacing: 0.14em;
font-size: 0.72rem;
}
/* ============================================================
BUSINESS (bento grid)
============================================================ */
.business { padding: 96px 0; }
.bento-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
/* row 1 = orange banner (short) · row 2 = Auto Export (tall) · row 3 = aftermarket/logistics */
grid-template-rows: 170px 340px 320px;
grid-auto-rows: 270px;
gap: 18px;
text-transform: uppercase;
}
.cell { position: relative; overflow: hidden; }
/* orange banner */
.cell-banner {
grid-column: 1 / 3;
grid-row: 1;
background: url(../image/home/Mask1.jpg) center/cover no-repeat;
display: flex;
flex-direction: column;
justify-content: center;
padding: 0 36px;
}
.banner-title {
font-family: var(--font-display); font-weight: 900;
font-size: clamp(2rem, 4vw, 3rem); letter-spacing: 0.04em; line-height: 1;
margin-top: 6px;
}
/* media cells */
.cell-media { box-shadow: 0 10px 30px rgba(16,24,40,0.08); }
.cell-media .cell-ph { position: absolute; inset: 0; }
.cell-media::after { /* dark veil for title legibility */
content: ""; position: absolute; inset: 0; z-index: 1;
transition: background .35s var(--ease);
}
.cell-media:hover::after { background: rgba(6,13,28,0.55); }
.cell-title {
position: absolute; left: 22px; bottom: 18px; z-index: 2;
font-family: var(--font-display); font-weight: 700;
font-size: 1.15rem; color: #fff;
}
.cell-materials { grid-column: 3; grid-row: 1 / 3; }
.cell-auto { grid-column: 1 / 3; grid-row: 2; }
.cell-aftermarket{ grid-column: 1; grid-row: 3; }
.cell-logistics { grid-column: 2 / 4; grid-row: 3; }
/* staggered scroll-in for bento cells */
.bento-grid .cell.reveal:nth-child(1) { transition-delay: 0s; }
.bento-grid .cell.reveal:nth-child(2) { transition-delay: .24s; }
.bento-grid .cell.reveal:nth-child(3) { transition-delay: .48s; }
.bento-grid .cell.reveal:nth-child(4) { transition-delay: .72s; }
.bento-grid .cell.reveal:nth-child(5) { transition-delay: .96s; }
/* ============================================================
GLOBAL PRESENCE
============================================================ */
.presence { padding: 96px 0; }
/* bg image + SVG overlay share one box and the 1219 × 661 map coordinate space */
.map-wrap {
position: relative;
width: 100%;
aspect-ratio: 1219 / 661;
overflow: hidden;
margin: 8px auto 24px;
}
.map-bg {
position: absolute;
inset: 0;
display: block;
width: 100%;
height: 100%;
object-fit: contain;
}
.map-overlay {
position: absolute;
inset: 0;
width: 100%;
height: 100%;
pointer-events: none;
}
/* location highlights — accumulating window cycled by main.js.
Entrance: overlapping sequence (label → curve draw → dot pop → double ripple).
Exit: elements reverse into their base states (line un-draws, dot shrinks,
label slides away) so leaving mirrors entering. Children own their hidden
base states; the group itself never toggles opacity. */
.map-wrap .location .label {
fill: #fff;
font-size: 12px;
font-weight: 700;
letter-spacing: .7px;
opacity: 0;
transform: translateY(5px);
transition: opacity .3s ease, transform .3s ease;
}
.map-wrap .location .line {
fill: none;
stroke: var(--orange-700);
stroke-width: 1.4;
stroke-linecap: round;
stroke-linejoin: round;
vector-effect: non-scaling-stroke;
/* non-active lines stay fully undrawn from frame one (no first-flash on large screens) */
stroke-dasharray: 1;
stroke-dashoffset: 1;
opacity: 0;
transition: stroke-dashoffset .55s ease-in .05s, opacity .25s ease .25s;
}
.map-wrap .location .dot {
fill: var(--orange-700);
transform-box: fill-box;
transform-origin: center;
opacity: 0;
transform: scale(.55);
transition: opacity .28s ease, transform .28s ease;
}
.map-wrap .location .halo {
fill: none;
stroke: var(--orange-700);
stroke-width: 1.2;
opacity: 0;
transform-box: fill-box;
transform-origin: center;
vector-effect: non-scaling-stroke;
transition: opacity .4s ease;
}
/* exit choreography — .out is added by main.js on deactivate; animations reverse
into the hidden base (transitions can't fire off animation removal) */
.map-wrap .location.out .label { animation: labelOut .3s ease both; }
.map-wrap .location.out .line { animation: lineOut .5s ease-in both; }
.map-wrap .location.out .dot { animation: dotOut .28s ease both; }
.map-wrap .location.out .halo { animation: haloOut .45s ease-out both; }
.map-wrap .location.active .label { animation: labelIn .28s .02s ease-out both; }
.map-wrap .location.active .line { animation: drawLine .55s .12s cubic-bezier(.3,.7,.2,1) both; }
.map-wrap .location.active .dot {
animation: dotIn .32s .5s cubic-bezier(.2,1.5,.35,1) both,
breatheR 3.4s 1s ease-in-out infinite;
}
.map-wrap .location.active .halo { animation: pulse .9s .62s ease-out infinite; }
.map-wrap .location.active .halo2 { animation-delay: 1.07s; }
@keyframes labelIn {
from { opacity: 0; transform: translateY(5px); }
to { opacity: 1; transform: translateY(0); }
}
@keyframes drawLine {
from { stroke-dashoffset: 1; opacity: 0; }
1% { opacity: 1; }
to { stroke-dashoffset: 0; opacity: 1; }
}
@keyframes dotIn {
from { opacity: 0; transform: scale(.25); }
to { opacity: 1; transform: scale(1); }
}
@keyframes pulse {
0% { opacity: .7; transform: scale(.5); }
70% { opacity: 0; transform: scale(2.2); }
100% { opacity: 0; transform: scale(2.2); }
}
@keyframes breatheR {
0%, 100% { r: 7.5px; }
50% { r: 8.3px; }
}
@keyframes labelOut {
from { opacity: 1; transform: translateY(0); }
to { opacity: 0; transform: translateY(5px); }
}
@keyframes lineOut {
from { stroke-dashoffset: 0; opacity: 1; }
to { stroke-dashoffset: 1; opacity: 0; }
}
@keyframes dotOut {
from { opacity: 1; transform: scale(1); }
to { opacity: 0; transform: scale(.55); }
}
@keyframes haloOut {
from { opacity: .5; }
to { opacity: 0; }
}
/* ============================================================
HESU GLOBAL NETWORK & LOCAL SERVICE — peek strip
Middle 2 cards fully visible; outer 2 ~3/4 with edge fade.
============================================================ */
.network { padding: 96px 0; background: var(--ink-900); }
.network-stage { position: relative; }
.network-strip {
width: 100%;
overflow: hidden;
-webkit-mask-image: linear-gradient(90deg, transparent 0%, #000 13%, #000 87%, transparent 100%);
mask-image: linear-gradient(90deg, transparent 0%, #000 13%, #000 87%, transparent 100%);
}
.network-track {
display: flex;
justify-content: flex-start;
align-items: stretch;
gap: 18px; /* must match GAP in main.js — card-step math depends on it */
padding: 6px 0;
transform: translateX(-120px); /* JS positions precisely (centered pair) */
transition: transform .5s var(--ease);
cursor: grab;
user-select: none;
touch-action: pan-y;
will-change: transform;
}
.network-track:active { cursor: grabbing; }
.network-track.dragging { transition: none; }
.network-card {
position: relative;
flex: 0 0 400px; /* fallback; JS sizes precisely per viewport */
height: 320px;
overflow: hidden;
-webkit-user-drag: none;
}
.network-card .cell-ph { position: absolute; inset: 0; transition: transform .6s var(--ease); }
.network-card:hover .cell-ph { transform: scale(1.06); }
.network-card::after {
content: ""; position: absolute; inset: 0;
background: linear-gradient(180deg, transparent 45%, rgba(6,13,28,0.88) 100%);
}
.hub-label {
position: absolute; left: 0; right: 0; bottom: 0; z-index: 2;
color: #fff;
text-align: center;
padding: 16px;
font-family: var(--font-display);
font-weight: 700;
letter-spacing: 0.1em;
text-transform: uppercase;
}
/* ============================================================
PARTNER
============================================================ */
.partner { padding: 110px 0 96px; background: var(--ink-900); }
.partner-inner { position: relative; display: flex; flex-direction: row; }
.partner-carousel {
position: relative;
width: 80%;
margin-left: auto;
margin-top: 100px;
aspect-ratio: 2 / 1;
overflow: hidden;
box-shadow: 0 24px 60px rgba(0,0,0,0.5);
}
.partner-carousel .slide {
position: absolute; inset: 0;
opacity: 0;
transition: opacity .7s var(--ease);
}
.partner-carousel .slide.is-active { opacity: 1; }
.partner-dots {
position: absolute;
right: 18px; bottom: 18px;
display: flex; align-items: center; gap: 8px;
z-index: 3;
}
.partner-dots button {
border: 0; cursor: pointer; padding: 0;
width: 9px; height: 9px; border-radius: 999px;
background: rgba(255,255,255,0.55);
transition: width .35s var(--ease), background .35s;
}
.partner-dots button.active {
width: 30px;
background: var(--orange-500);
border-radius: 999px;
}
/* orange overlay block */
.partner-overlay {
position: absolute;
left: 0; top: 0;
width: 50%;
background: linear-gradient(283.27deg, rgba(255, 174, 0, 0.32) 1.97%, #FF6000 100%);
color: #fff;
padding: 60px 38px;
border-radius: var(--radius);
box-shadow: 0 24px 60px rgba(255,106,0,0.3);
z-index: 4;
}
.partner-title {
font-family: var(--font-display);
/* font-weight: 900; */
font-size: clamp(1.3rem, 2.4vw, 1.9rem);
line-height: 1.18;
letter-spacing: 0.01em;
}
.partner-features {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 18px 10px;
margin-top: 32px;
}
.partner-features li {
display: flex; flex-direction: column; align-items: center;
text-align: center;
}
.pf-ico {
display: inline-flex; align-items: center; justify-content: center;
}
.pf-ico img { width: 80px; height: 80px; object-fit: contain; display: block; }
.partner-features strong { display: block; font-family: var(--font-display); font-weight: 700; font-size: 0.7rem; }
.partner-features em { display: none; }
/* ============================================================
NEWS
============================================================ */
.news { padding: 96px 0; }
.news-head {
display: flex; align-items: center; justify-content: space-between;
margin-bottom: 40px;
}
.view-more {
font-family: var(--font-display);
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.1em;
font-size: 0.85rem;
background: linear-gradient(88.61deg, #FF6000 7.43%, #FFA557 98.82%);
-webkit-background-clip: text;
background-clip: text;
-webkit-text-fill-color: transparent;
transition: color .2s;
}
.view-more .plus { color: var(--orange-700); margin-left: 4px; }
.view-more:hover { color: var(--orange-700); }
.news-grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 22px;
}
.news-card .news-img {
aspect-ratio: 4 / 3;
overflow: hidden;
margin-bottom: 16px;
position: relative;
}
.news-img .cell-ph { position: absolute; inset: 0; transition: transform .5s var(--ease); }
.news-card:hover .news-img .cell-ph { transform: scale(1.06); }
.news-title {
font-family: var(--font-display);
/* font-weight: 700; */
font-size: 1rem;
line-height: 1.35;
color: #fff;
transition: color .2s;
}
.news-card:hover .news-title { color: var(--orange-500); }
/* ============================================================
FOOTER
============================================================ */
.site-footer { position: relative;
z-index: 2;
margin-top: -25px;background: var(--bg-solid);color: var(--text-light-60);padding-top: 56px;border-radius: 30px 30px 0 0;}
.footer-top {
display: flex;
justify-content: space-between;
align-items: center;
gap: 24px;
flex-wrap: wrap;
}
.footer-social { display: flex; gap: 12px; }
.social { display: inline-flex; transition: transform .2s, opacity .2s; }
.social img { width: 28px; height: 28px; display: block; }
.social:hover { transform: translateY(-2px); opacity: .8; }
.footer-grid {
display: grid;
grid-template-columns: 35% 1fr 1fr 1fr 1fr;
gap: 36px;
padding: 48px 0;
width: 100%;
}
.footer-intro .footer-slogan { font-size: 1rem; line-height: 1.7; margin-bottom: 16px; font-weight: bold; color: #fff; }
.footer-intro .footer-contact { font-size: 0.85rem; line-height: 1.8; color: var(--text-light-60); }
.footer-col h4 {
color: #fff;
font-family: var(--font-display);
font-weight: 700;
font-size: 1rem;
margin-bottom: 18px;
letter-spacing: 0.04em;
}
.footer-col ul { display: flex; flex-direction: column; gap: 12px; font-size: 0.9rem; }
.footer-col a { transition: color .2s; }
.footer-col a:hover { color: var(--orange-500); }
.footer-bottom {
border-top: 1px solid #9F9F9F;
padding: 22px 0;
font-size: 0.82rem;
}
.footer-bottom .container {
display: flex;
justify-content: space-between;
align-items: center;
gap: 16px;
flex-wrap: wrap;
display:none;
}
.footer-links { display: flex; gap: 18px; }
.footer-links a:hover { color: var(--orange-500); }
/* ============================================================
PLACEHOLDER IMAGE TREATMENTS
(distinct gradients so each photo slot reads as a unique image.
Swap .cell-ph / .slide / .news-img backgrounds for real photos.)
============================================================ */
.ph {
background-size: cover;
background-position: center;
display: flex; align-items: flex-start; justify-content: flex-end;
}
/* themed gradients */
.ph-materials { background: url(../image/home/Businesses2.jpg) center/cover no-repeat; }
.ph-auto { background: url(../image/home/Businesses1.jpg) center/cover no-repeat; }
.ph-aftermarket { background: url(../image/home/Businesses3.jpg) center/cover no-repeat; }
.ph-logistics { background: url(../image/home/Businesses4.jpg) center/cover no-repeat; }
.ph-middleeast { background: url(../image/Company-History.jpg) center/cover no-repeat; }
.ph-easterneurope { background: url(../image/Company-Overview.jpg) center/cover no-repeat; }
.ph-africa { background: url(../image/home/Service4.jpg) center/cover no-repeat; }
.ph-warehouse { background: url(../image/home/Partner.jpg) center/cover no-repeat; }
.ph-warehouse1 { background: url(../image/home/Partner1.jpg) center/cover no-repeat; }
.ph-warehouse2 { background: url(../image/home/Partner2.jpg) center/cover no-repeat; }
.ph-warehouse3 { background: url(../image/home/Partner3.jpg) center/cover no-repeat; }
.ph-logistics2 { background: url(../image/home/Global-Logistics.jpg) center/cover no-repeat; }
.ph-exportcars { background: url(../image/home/Auto-Export.jpg) center/cover no-repeat; }
.ph-aboutlb1 { background: url(../image/about-us/lb1.jpg) center/cover no-repeat; }
.ph-aboutlb2 { background: url(../image/about-us/lb2.jpg) center/cover no-repeat; }
.ph-aboutlb3 { background: url(../image/about-us/lb3.jpg) center/cover no-repeat; }
.ph-aboutlb4 { background: url(../image/about-us/lb4.jpg) center/cover no-repeat; }
.ph-fair { background: url(../image/home/new1.png) center/cover no-repeat; }
.ph-dubai { background: url(../image/home/new2.png) center/cover no-repeat; }
.ph-factory { background: url(../image/home/new3.png) center/cover no-repeat; }
.ph-visit { background: url(../image/home/new4.png) center/cover no-repeat; }
.ph-service1 { background: url(../image/home/Service1.jpg) center/cover no-repeat; }
.ph-service2 { background: url(../image/home/Service2.jpg) center/cover no-repeat; }
.ph-service3 { background: url(../image/home/Service3.jpg) center/cover no-repeat; }
.ph-service4 { background: url(../image/home/Service4.jpg) center/cover no-repeat; }
/* ============================================================
SCROLL REVEAL
============================================================ */
.reveal { opacity: 0; transform: translateY(28px); transition: opacity .7s var(--ease), transform .7s var(--ease); }
.reveal.in { opacity: 1; transform: none; }
/* ============================================================
RESPONSIVE
============================================================ */
@media (max-width: 1024px) {
:root { --header-h: 68px; }
.container { padding-inline: 24px; }
.logo-img { height: 27px; }
.partner-carousel { width: 100%; margin-top: 0; }
.partner-overlay {
position: relative; top: 0;
width: 100%; margin-bottom: 18px;
padding: 30px 28px;
}
.partner-inner { display: flex; flex-direction: column; }
.footer-grid { grid-template-columns: 1fr 1fr; }
.footer-intro { grid-column: 1 / -1; }
}
@media (max-width: 860px) {
/* mobile nav */
.menu-toggle { display: flex; }
.header-right .btn-contact { display: none; }
.nav-item.nav-contact { display: block; }
/* company logo pinned at the top of the drawer, links home */
.drawer-logo {
display: block;
margin: 0 0 20px;
padding-bottom: 16px;
border-bottom: 1px solid rgba(255,255,255,0.08);
}
.drawer-logo .logo-img { height: 30px; }
.main-nav {
position: fixed;
flex-direction: column;
inset: 0 0 0 auto;
width: min(82vw, 360px);
background: var(--ink-900);
border-left: 1px solid rgba(255,255,255,0.08);
padding: calc(var(--header-h) + 16px) 26px 32px;
transform: translateX(100%);
transition: transform .35s var(--ease);
z-index: 49;
overflow-y: auto;
}
.main-nav.open { transform: translateX(0); box-shadow: -30px 0 60px rgba(0,0,0,0.5); }
.nav-list { flex-direction: column; align-items: stretch; gap: 6px; }
.nav-item > a { padding: 14px 6px; font-size: 1rem; border-bottom: 1px solid rgba(255,255,255,0.06); }
/* mega -> inline collapsible list on mobile */
.mega {
position: static; background: transparent;
opacity: 1; visibility: visible; pointer-events: auto;
display: none; overflow: visible; z-index: auto;
}
.nav-item.has-mega.open .mega { display: block; }
.mega-inner { display: block; min-height: 0; padding: 4px 0 2px 12px; gap: 0; }
.mega-left { display: none; }
.mega-right { display: block; }
.mega-card {
display: flex; flex-direction: row; align-items: center;
aspect-ratio: auto;
padding: 12px 4px;
opacity: 1;
transform: none;
}
.mega-card:hover { transform: none; background: transparent; }
.mega-card-img { display: none; }
.mega-card-text {
position: static; display: block; text-align: left;
background: none; padding: 0;
}
.mega-card-text p { display: none; }
.mega-card-text h4 { font-size: 0.98rem; color: var(--text-light-80); font-weight: 600; text-align: left; }
.nav-backdrop {
position: fixed; inset: 0; z-index: 48;
background: rgba(0,0,0,0.5); opacity: 0; visibility: hidden;
transition: opacity .3s, visibility .3s;
}
.nav-backdrop.show { opacity: 1; visibility: visible; }
/* hero */
.stats-grid { grid-template-columns: 1fr 1fr; gap: 28px 16px; }
.hero { min-height: 82vh; }
/* business bento -> 2-col friendly */
.bento-grid { grid-template-columns: repeat(2, 1fr); grid-auto-rows: 190px; }
.cell-banner { grid-column: 1 / 3; grid-row: auto; }
.cell-materials { grid-column: auto; grid-row: span 1; }
.cell-auto { grid-column: 1 / 3; grid-row: auto; }
.cell-aftermarket { grid-column: auto; grid-row: auto; }
.cell-logistics { grid-column: 1 / 3; grid-row: auto; }
.news-grid { grid-template-columns: 1fr 1fr; }
/* network carousel — same drag/loop system as desktop, mobile sizing */
.network { padding: 0px 0 70px; }
.network-track { gap: 12px; }
.network-card { height: 340px; }
.section-head { margin-bottom: 36px; }
.business, .presence, .news, .partner { padding: 72px 0; }
}
@media (max-width: 560px) {
.container { padding-inline: 18px; }
.bento-grid { grid-template-columns: 1fr; grid-auto-rows: 180px; }
.cell-banner, .cell-auto, .cell-logistics { grid-column: auto; }
.news-grid { grid-template-columns: 1fr; }
.network-card { flex: 0 0 84vw; height: 280px; }
.partner-features { grid-template-columns: repeat(2, 1fr);}
.pf-ico img { width: 50px; height: 50px; }
.footer-grid { grid-template-columns: 1fr; gap: 32px; }
}
/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
* { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
.reveal { opacity: 1; transform: none; }
}