This commit is contained in:
Adam 2026-03-10 18:10:04 +01:00
parent a82f93c556
commit e642d196e9
123 changed files with 485 additions and 78 deletions

View File

@ -1,6 +1,6 @@
{ {
"ConnectionStrings": { "ConnectionStrings": {
"ConnectionString": "Data Source=195.26.231.218;Initial Catalog=FruitBank_PROD;Integrated Security=False;Persist Security Info=False;User ID=sa;Password=v6f_?xNfg9N1;Trust Server Certificate=True", "ConnectionString": "Data Source=195.26.231.218;Initial Catalog=FruitBank_DEV;Integrated Security=False;Persist Security Info=False;User ID=sa;Password=v6f_?xNfg9N1;Trust Server Certificate=True",
"DataProvider": "sqlserver", "DataProvider": "sqlserver",
"SQLCommandTimeout": null, "SQLCommandTimeout": null,
"WithNoLock": false "WithNoLock": false

View File

@ -7539,9 +7539,28 @@ html.lenis, html.lenis body {
============================================= */ ============================================= */
.section-forklift { .section-forklift {
position: relative; position: relative;
overflow: hidden; background: #1d4223;
background: var(--dark); margin-bottom: 0;
min-height: 100vh; overflow-x: clip;
}
/* Kill default nopCommerce spacing after forklift so it touches the footer */
.html-home-page .page.home-page {
margin-bottom: 0;
}
.html-home-page .center-1 {
margin-bottom: 0;
}
.html-home-page .page-body {
margin-bottom: 0;
padding-bottom: 0;
}
.html-home-page .master-wrapper-content {
margin-bottom: 0;
padding-bottom: 0;
}
.html-home-page .master-column-wrapper {
margin-bottom: 0;
} }
.forklift-scroll-container { .forklift-scroll-container {
@ -7561,15 +7580,19 @@ html.lenis, html.lenis body {
} }
.forklift-visual { .forklift-visual {
flex: 1; flex: 1 1 50%;
max-width: 500px; max-width: 50%;
display: flex; display: flex;
align-items: flex-end; align-items: center;
justify-content: center; justify-content: center;
height: 70vh;
position: relative; position: relative;
} }
#forkliftCanvas {
width: 100%;
height: auto;
}
.forklift-body { .forklift-body {
position: relative; position: relative;
width: 200px; width: 200px;
@ -7647,47 +7670,238 @@ html.lenis, html.lenis body {
} }
.stats-panel { .stats-panel {
flex: 1; flex: 1 1 40%;
max-width: 500px; max-width: 440px;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
gap: 40px; gap: 48px;
} }
.stat-item { .stat-item {
opacity: 0; opacity: 0;
transform: translateY(40px); transform: translateY(40px);
position: relative;
padding-left: 24px;
border-left: 3px solid var(--active-color);
} }
.stat-number { .stat-number {
font-family: 'Playfair Display', serif; font-family: 'Playfair Display', serif;
font-size: clamp(36px, 5vw, 64px); font-size: clamp(40px, 5.5vw, 72px);
font-weight: 700; font-weight: 700;
color: var(--active-color); color: #fff;
line-height: 1; line-height: 1;
margin-bottom: 6px; margin-bottom: 8px;
letter-spacing: -1px;
}
.stat-number .stat-counter {
color: var(--active-color);
} }
.stat-label { .stat-label {
font-size: clamp(14px, 1.8vw, 18px); font-family: 'DM Sans', sans-serif;
color: rgba(255,255,255,0.6); font-size: clamp(14px, 1.6vw, 17px);
letter-spacing: 1px; color: rgba(255,255,255,0.45);
letter-spacing: 2px;
text-transform: uppercase;
} }
/* ============================================= /* =============================================
HOMEPAGE PRODUCTS SECTION (warm bg) IMPORT CATEGORIES SECTION
============================================= */ ============================================= */
.homepage-products-section { .fb-categories {
background: var(--warm-bg); background: var(--warm-bg);
position: relative; position: relative;
z-index: 5; z-index: 5;
padding: 60px 0 40px; padding: 80px 0 100px;
} }
/* Product cards need white bg to match photo backgrounds */ .fb-categories-header {
.homepage-products-section .item-box { text-align: center;
background: #fff; margin-bottom: 50px;
padding: 0 20px;
}
.fb-categories-header h2 {
font-family: 'Playfair Display', serif;
font-size: clamp(28px, 4vw, 48px);
font-weight: 700;
color: var(--dark);
margin-bottom: 12px;
}
.fb-categories-header h2 em {
color: var(--theme-color);
font-style: italic;
}
.fb-categories-header p {
font-size: clamp(15px, 1.8vw, 18px);
color: var(--text-muted);
}
/* 3×2 grid */
.fb-cat-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 20px;
max-width: 1600px;
margin: 0 auto;
padding: 0 clamp(20px, 3vw, 48px);
}
/* Individual card */
.fb-cat-card {
position: relative;
border-radius: 16px;
overflow: hidden;
aspect-ratio: 4 / 3;
display: block;
cursor: pointer;
text-decoration: none;
}
.fb-cat-card img {
width: 100%;
height: 100%;
object-fit: cover;
display: block;
transition: transform 0.6s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}
.fb-cat-card:hover img {
transform: scale(1.08);
}
/* Bottom label — always visible */
.fb-cat-label {
position: absolute;
bottom: 0;
left: 0;
right: 0;
padding: 20px 24px;
background: linear-gradient(to top, rgba(0,0,0,0.7) 0%, rgba(0,0,0,0) 100%);
transition: opacity 0.35s ease;
}
.fb-cat-label h3 {
font-family: 'Playfair Display', serif;
font-size: clamp(18px, 2vw, 24px);
font-weight: 600;
color: #fff;
line-height: 1.3;
}
.fb-cat-label h3 span {
display: block;
font-family: 'DM Sans', sans-serif;
font-size: 12px;
font-weight: 500;
letter-spacing: 2px;
text-transform: uppercase;
color: var(--active-color);
margin-top: 4px;
}
/* Hover overlay with product list */
.fb-cat-hover {
position: absolute;
inset: 0;
background: rgba(26, 60, 34, 0.92);
display: flex;
flex-direction: column;
justify-content: center;
padding: 28px 32px;
opacity: 0;
transition: opacity 0.35s ease;
}
.fb-cat-card:hover .fb-cat-hover {
opacity: 1;
}
.fb-cat-card:hover .fb-cat-label {
opacity: 0;
}
.fb-cat-hover h3 {
font-family: 'Playfair Display', serif;
font-size: clamp(18px, 2vw, 24px);
font-weight: 600;
color: #fff;
margin-bottom: 16px;
line-height: 1.3;
}
.fb-cat-hover h3 span {
display: block;
font-family: 'DM Sans', sans-serif;
font-size: 11px;
font-weight: 500;
letter-spacing: 2px;
text-transform: uppercase;
color: var(--active-color);
margin-top: 4px;
}
.fb-cat-hover ul {
list-style: none;
padding: 0;
margin: 0;
display: flex;
flex-direction: column;
gap: 6px;
}
.fb-cat-hover ul li {
font-family: 'DM Sans', sans-serif;
font-size: 14px;
color: rgba(255,255,255,0.7);
padding-left: 16px;
position: relative;
}
.fb-cat-hover ul li::before {
content: '';
position: absolute;
left: 0;
top: 50%;
width: 6px;
height: 6px;
border-radius: 50%;
background: var(--active-color);
transform: translateY(-50%);
}
/* Tablet: 2 columns */
@media (max-width: 1024px) {
.fb-cat-grid {
grid-template-columns: repeat(2, 1fr);
gap: 16px;
}
}
/* Mobile: 1 column, taller cards */
@media (max-width: 600px) {
.fb-cat-grid {
grid-template-columns: 1fr;
gap: 14px;
padding: 0 16px;
}
.fb-cat-card {
aspect-ratio: 16 / 10;
}
.fb-categories {
padding: 60px 0 70px;
}
.fb-categories-header {
margin-bottom: 32px;
}
} }
/* ============================================= /* =============================================
@ -8047,11 +8261,6 @@ html.lenis, html.lenis body {
transform: translateY(50px); transform: translateY(50px);
} }
/* Prevent horizontal scrollbar from slide-in animations */
.html-home-page .master-wrapper-content {
overflow-x: hidden;
}
/* ============================================= /* =============================================
MOBILE VAULT + FORKLIFT MOBILE VAULT + FORKLIFT
============================================= */ ============================================= */
@ -8084,17 +8293,22 @@ html.lenis, html.lenis body {
} }
.forklift-visual { .forklift-visual {
height: 40vh; flex: 1 1 100%;
max-width: 300px; max-width: 120%;
width: 120%;
margin-left: -10%;
margin-right: -10%;
} }
.stats-panel { .stats-panel {
gap: 24px; gap: 32px;
text-align: center; text-align: left;
max-width: 100%;
padding: 0 20px;
} }
.forklift-body { .stat-item {
transform: scale(0.7); padding-left: 18px;
} }
/* Product cards mobile */ /* Product cards mobile */

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 165 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 165 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 179 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 167 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 167 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 167 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 168 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 168 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 168 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 168 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 167 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 167 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 165 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 165 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 163 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 160 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 159 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 157 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 156 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 155 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 154 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 154 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 156 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 154 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 155 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 155 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 155 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 154 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 153 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 152 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 152 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 150 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 149 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 150 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 KiB

Some files were not shown because too many files have changed in this diff Show More