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": {
"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",
"SQLCommandTimeout": null,
"WithNoLock": false

View File

@ -7539,9 +7539,28 @@ html.lenis, html.lenis body {
============================================= */
.section-forklift {
position: relative;
overflow: hidden;
background: var(--dark);
min-height: 100vh;
background: #1d4223;
margin-bottom: 0;
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 {
@ -7561,15 +7580,19 @@ html.lenis, html.lenis body {
}
.forklift-visual {
flex: 1;
max-width: 500px;
flex: 1 1 50%;
max-width: 50%;
display: flex;
align-items: flex-end;
align-items: center;
justify-content: center;
height: 70vh;
position: relative;
}
#forkliftCanvas {
width: 100%;
height: auto;
}
.forklift-body {
position: relative;
width: 200px;
@ -7647,47 +7670,238 @@ html.lenis, html.lenis body {
}
.stats-panel {
flex: 1;
max-width: 500px;
flex: 1 1 40%;
max-width: 440px;
display: flex;
flex-direction: column;
gap: 40px;
gap: 48px;
}
.stat-item {
opacity: 0;
transform: translateY(40px);
position: relative;
padding-left: 24px;
border-left: 3px solid var(--active-color);
}
.stat-number {
font-family: 'Playfair Display', serif;
font-size: clamp(36px, 5vw, 64px);
font-size: clamp(40px, 5.5vw, 72px);
font-weight: 700;
color: var(--active-color);
color: #fff;
line-height: 1;
margin-bottom: 6px;
margin-bottom: 8px;
letter-spacing: -1px;
}
.stat-number .stat-counter {
color: var(--active-color);
}
.stat-label {
font-size: clamp(14px, 1.8vw, 18px);
color: rgba(255,255,255,0.6);
letter-spacing: 1px;
font-family: 'DM Sans', sans-serif;
font-size: clamp(14px, 1.6vw, 17px);
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);
position: relative;
z-index: 5;
padding: 60px 0 40px;
padding: 80px 0 100px;
}
/* Product cards need white bg to match photo backgrounds */
.homepage-products-section .item-box {
background: #fff;
.fb-categories-header {
text-align: center;
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);
}
/* Prevent horizontal scrollbar from slide-in animations */
.html-home-page .master-wrapper-content {
overflow-x: hidden;
}
/* =============================================
MOBILE VAULT + FORKLIFT
============================================= */
@ -8084,17 +8293,22 @@ html.lenis, html.lenis body {
}
.forklift-visual {
height: 40vh;
max-width: 300px;
flex: 1 1 100%;
max-width: 120%;
width: 120%;
margin-left: -10%;
margin-right: -10%;
}
.stats-panel {
gap: 24px;
text-align: center;
gap: 32px;
text-align: left;
max-width: 100%;
padding: 0 20px;
}
.forklift-body {
transform: scale(0.7);
.stat-item {
padding-left: 18px;
}
/* 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