/* ============================================
VSITA INTERNATIONAL - STYLES
Black & Green Theme
============================================ */
/* ---- CSS VARIABLES ---- */
:root {
--green-100: #e8f5e9;
--green-200: #a5d6a7;
--green-300: #66bb6a;
--green-400: #43a047;
--green-500: #2e7d32;
--green-600: #1b5e20;
--green-700: #145214;
--green-accent: #00e676;
--green-glow: rgba(0, 230, 118, 0.3);
--black-100: #2a2a2a;
--black-200: #1e1e1e;
--black-300: #171717;
--black-400: #121212;
--black-500: #0a0a0a;
--white: #ffffff;
--gray-100: #f5f5f5;
--gray-200: #e0e0e0;
--gray-300: #bdbdbd;
--gray-400: #9e9e9e;
--gray-500: #757575;
--gray-600: #616161;
--gray-700: #424242;
--text-primary: #ffffff;
--text-secondary: #b0bec5;
--text-muted: #78909c;
--danger: #ef5350;
--warning: #ffa726;
--success: #66bb6a;
--shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.3);
--shadow-md: 0 4px 16px rgba(0, 0, 0, 0.4);
--shadow-lg: 0 8px 32px rgba(0, 0, 0, 0.5);
--shadow-glow: 0 0 20px rgba(0, 230, 118, 0.15);
--radius-sm: 8px;
--radius-md: 12px;
--radius-lg: 16px;
--radius-xl: 24px;
--transition: all 0.3s ease;
--transition-fast: all 0.15s ease;
--header-height: 72px;
--container-max: 1280px;
}
/* ---- RESET & BASE ---- */
*,
*::before,
*::after {
margin: 0;
padding: 0;
box-sizing: border-box;
}
html {
scroll-behavior: smooth;
scroll-padding-top: var(--header-height);
}
body {
font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
background-color: var(--black-400);
color: var(--text-primary);
line-height: 1.6;
overflow-x: hidden;
-webkit-font-smoothing: antialiased;
}
a {
color: var(--green-300);
text-decoration: none;
transition: var(--transition);
}
a:hover {
color: var(--green-accent);
}
img {
max-width: 100%;
display: block;
}
.container {
max-width: var(--container-max);
margin: 0 auto;
padding: 0 20px;
}
/* ---- BUTTONS ---- */
.btn {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 8px;
padding: 12px 28px;
border: none;
border-radius: var(--radius-sm);
font-family: inherit;
font-size: 0.95rem;
font-weight: 600;
cursor: pointer;
transition: var(--transition);
text-decoration: none;
white-space: nowrap;
}
.btn-primary {
background: linear-gradient(135deg, var(--green-500), var(--green-400));
color: var(--white);
box-shadow: 0 4px 15px rgba(46, 125, 50, 0.4);
}
.btn-primary:hover {
background: linear-gradient(135deg, var(--green-400), var(--green-300));
transform: translateY(-2px);
box-shadow: 0 6px 20px rgba(46, 125, 50, 0.5);
color: var(--white);
}
.btn-outline {
background: transparent;
color: var(--green-300);
border: 2px solid var(--green-400);
}
.btn-outline:hover {
background: var(--green-500);
color: var(--white);
border-color: var(--green-500);
transform: translateY(-2px);
}
.btn-full {
width: 100%;
}
.btn-sm {
padding: 8px 18px;
font-size: 0.85rem;
}
.package-select,
.product-card-package select {
width: 100%;
max-width: 140px;
padding: 10px 12px;
border-radius: var(--radius-sm);
border: 1px solid rgba(46, 125, 50, 0.25);
background: rgba(232, 245, 233, 0.95);
color: #0f3d1e;
font-size: 0.95rem;
transition: var(--transition);
appearance: none;
-webkit-appearance: none;
-moz-appearance: none;
accent-color: var(--green-500);
}
.package-select:hover,
.product-card-package select:hover {
border-color: var(--green-400);
background: rgba(200, 230, 201, 0.95);
}
.package-select:focus,
.product-card-package select:focus {
border-color: var(--green-500);
background: #dcedc8;
box-shadow: 0 0 0 3px rgba(76, 175, 80, 0.18);
outline: none;
}
.package-select option,
.product-card-package select option {
background: #e8f5e9 !important;
color: #0f3d1e !important;
}
.package-select option:hover,
.product-card-package select option:hover,
.package-select option:focus,
.product-card-package select option:focus,
.package-select option:checked,
.product-card-package select option:checked {
background: #c8e6c9 !important;
color: #0f3d1e !important;
}
.product-card-package,
.modal-package {
display: flex;
flex-direction: column;
gap: 8px;
margin: 12px 0 10px;
}
.product-card-package label,
.modal-package label {
font-size: 0.85rem;
color: var(--text-secondary);
font-weight: 600;
}
.cart-item-size {
font-size: 0.85rem;
color: var(--gray-300);
margin-top: 6px;
}
/* ============================================
HEADER
============================================ */
.header {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: var(--header-height);
background: linear-gradient(135deg, #0a2e1a, #14532d, #0f3d1e);
backdrop-filter: blur(20px);
border-bottom: 2px solid rgba(0, 230, 118, 0.25);
z-index: 1000;
transition: var(--transition);
}
.header.scrolled {
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.35);
border-bottom-color: rgba(0, 230, 118, 0.45);
}
.header-container {
max-width: var(--container-max);
margin: 0 auto;
padding: 0 20px;
height: 100%;
display: flex;
align-items: center;
justify-content: space-between;
position: relative;
}
/* Logo Section */
.logo-left {
flex-shrink: 0;
display: flex;
align-items: center;
gap: 10px;
}
.header-title {
display: flex;
flex-direction: column;
line-height: 1.1;
}
.header-title-top {
font-size: 1.2rem;
font-weight: 700;
color: var(--green-accent);
letter-spacing: 3px;
font-family: 'Playfair Display', serif;
}
.header-title-bottom {
font-size: 0.7rem;
font-weight: 500;
color: rgba(255, 255, 255, 0.7);
letter-spacing: 4px;
text-transform: uppercase;
}
.header-title-former {
font-size: 0.5rem;
font-weight: 400;
color: rgba(255, 255, 255, 0.55);
letter-spacing: 1px;
font-style: italic;
}
.header-right {
display: flex;
align-items: center;
gap: 14px;
flex-shrink: 0;
}
.logo-img {
height: calc(var(--header-height) - 16px);
width: calc(var(--header-height) - 16px);
object-fit: contain;
border-radius: 50%;
background: var(--white);
padding: 6px;
border: 2px solid rgba(255, 255, 255, 0.3);
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
transition: var(--transition);
}
.logo-img-old {
height: calc(var(--header-height) - 20px);
width: calc(var(--header-height) - 20px);
opacity: 0.8;
}
.logo-img-new {
height: calc(var(--header-height) - 12px);
width: calc(var(--header-height) - 12px);
padding: 7px;
border-color: rgba(0, 230, 118, 0.4);
box-shadow: 0 2px 12px rgba(0, 230, 118, 0.25);
}
/* Navigation */
.main-nav {
flex: 1;
display: flex;
justify-content: center;
}
.nav-links {
list-style: none;
display: flex;
gap: 8px;
}
/* Prevent transition flash on page load and resize */
.main-nav:not(.active) {
transition: none;
}
@media (min-width: 769px) {
.main-nav {
position: static !important;
transform: none !important;
background: transparent !important;
padding: 0 !important;
border: none !important;
box-shadow: none !important;
width: auto !important;
}
.nav-links {
flex-direction: row !important;
}
.mobile-menu-btn {
display: none !important;
}
}
.nav-link {
padding: 8px 18px;
color: rgba(255, 255, 255, 0.8);
font-size: 0.9rem;
font-weight: 600;
border-radius: var(--radius-sm);
transition: var(--transition);
position: relative;
display: block;
box-sizing: border-box;
}
.nav-link:hover {
color: var(--green-accent);
background: rgba(255, 255, 255, 0.08);
}
.nav-link.active {
color: var(--white);
background: rgba(0, 230, 118, 0.2);
}
.nav-link.active::after {
content: '';
position: absolute;
bottom: 0;
left: 50%;
transform: translateX(-50%);
width: 20px;
height: 2px;
background: var(--green-accent);
border-radius: 2px;
}
/* Header Actions */
.cart-icon {
position: relative;
width: 44px;
height: 44px;
display: flex;
align-items: center;
justify-content: center;
border-radius: 50%;
background: rgba(0, 230, 118, 0.15);
color: var(--green-accent);
cursor: pointer;
transition: var(--transition);
font-size: 1.1rem;
}
.cart-icon:hover {
background: rgba(0, 230, 118, 0.3);
transform: scale(1.05);
}
.cart-count {
position: absolute;
top: -2px;
right: -2px;
background: var(--danger);
color: var(--white);
font-size: 0.65rem;
font-weight: 700;
width: 20px;
height: 20px;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
border: 2px solid #0a2e1a;
transition: var(--transition);
}
.cart-count.bump {
animation: cartBump 0.3s ease;
}
@keyframes cartBump {
0% { transform: scale(1); }
50% { transform: scale(1.4); }
100% { transform: scale(1); }
}
/* Mobile Menu Button */
.mobile-menu-btn {
display: none;
width: 40px;
height: 40px;
border: none;
background: transparent;
cursor: pointer;
position: relative;
}
.hamburger,
.hamburger::before,
.hamburger::after {
width: 24px;
height: 2px;
background: var(--white);
border-radius: 2px;
transition: var(--transition);
display: block;
}
.hamburger::before,
.hamburger::after {
content: '';
position: absolute;
left: 8px;
}
.hamburger::before {
top: 12px;
}
.hamburger::after {
bottom: 12px;
}
.mobile-menu-btn.active .hamburger {
background: transparent;
}
.mobile-menu-btn.active .hamburger::before {
top: 50%;
transform: translateY(-50%) rotate(45deg);
}
.mobile-menu-btn.active .hamburger::after {
bottom: auto;
top: 50%;
transform: translateY(-50%) rotate(-45deg);
}
/* ============================================
HERO SECTION
============================================ */
.hero-section {
position: relative;
min-height: 100vh;
display: flex;
align-items: center;
justify-content: center;
padding: calc(var(--header-height) + 40px) 20px 60px;
background:
radial-gradient(ellipse at 20% 50%, rgba(46, 125, 50, 0.15) 0%, transparent 50%),
radial-gradient(ellipse at 80% 20%, rgba(0, 230, 118, 0.08) 0%, transparent 50%),
radial-gradient(ellipse at 50% 80%, rgba(46, 125, 50, 0.1) 0%, transparent 50%),
var(--black-400);
overflow: hidden;
}
.hero-section::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-image:
radial-gradient(circle at 25% 25%, rgba(0, 230, 118, 0.03) 2px, transparent 2px),
radial-gradient(circle at 75% 75%, rgba(0, 230, 118, 0.03) 2px, transparent 2px);
background-size: 60px 60px;
pointer-events: none;
}
.hero-content {
text-align: center;
max-width: 800px;
position: relative;
z-index: 2;
animation: fadeInUp 0.8s ease;
}
@keyframes fadeInUp {
from {
opacity: 0;
transform: translateY(30px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.hero-badge {
display: inline-flex;
align-items: center;
gap: 8px;
padding: 8px 20px;
background: rgba(46, 125, 50, 0.15);
border: 1px solid rgba(46, 125, 50, 0.3);
border-radius: 50px;
color: var(--green-300);
font-size: 0.85rem;
font-weight: 500;
margin-bottom: 24px;
}
.hero-title {
font-family: 'Playfair Display', serif;
font-size: clamp(2.5rem, 6vw, 4rem);
font-weight: 700;
line-height: 1.2;
margin-bottom: 20px;
color: var(--white);
}
.hero-title .highlight {
background: linear-gradient(135deg, var(--green-300), var(--green-accent));
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
.hero-subtitle {
font-size: 1.1rem;
color: var(--text-secondary);
margin-bottom: 36px;
max-width: 600px;
margin-left: auto;
margin-right: auto;
line-height: 1.7;
}
.hero-actions {
display: flex;
gap: 16px;
justify-content: center;
flex-wrap: wrap;
margin-bottom: 48px;
}
.hero-features {
display: flex;
gap: 32px;
justify-content: center;
flex-wrap: wrap;
}
.hero-feature {
display: flex;
align-items: center;
gap: 8px;
color: var(--text-muted);
font-size: 0.9rem;
}
.hero-feature i {
color: var(--green-400);
font-size: 1rem;
}
.hero-scroll-indicator {
position: absolute;
bottom: 30px;
left: 50%;
transform: translateX(-50%);
z-index: 2;
}
.hero-scroll-indicator a {
color: var(--green-400);
font-size: 1.4rem;
animation: bounce 2s infinite;
}
@keyframes bounce {
0%, 100% { transform: translateY(0); }
50% { transform: translateY(10px); }
}
/* ============================================
PROMO BANNER
============================================ */
.promo-banner {
background: linear-gradient(135deg, var(--green-700), var(--green-600));
padding: 20px 0;
border-top: 1px solid rgba(0, 230, 118, 0.2);
border-bottom: 1px solid rgba(0, 230, 118, 0.2);
}
.promo-content {
display: flex;
justify-content: space-around;
flex-wrap: wrap;
gap: 20px;
}
.promo-item {
display: flex;
align-items: center;
gap: 12px;
color: var(--white);
}
.promo-item i {
font-size: 1.4rem;
color: var(--green-accent);
}
.promo-item strong {
display: block;
font-size: 0.9rem;
}
.promo-item span {
font-size: 0.75rem;
color: var(--green-200);
}
/* ============================================
SECTION COMMON
============================================ */
.section-header {
text-align: center;
margin-bottom: 48px;
}
.section-title {
font-family: 'Playfair Display', serif;
font-size: clamp(1.8rem, 4vw, 2.5rem);
font-weight: 700;
margin-bottom: 12px;
position: relative;
display: inline-block;
}
.section-title::after {
content: '';
position: absolute;
bottom: -8px;
left: 50%;
transform: translateX(-50%);
width: 60px;
height: 3px;
background: linear-gradient(90deg, var(--green-400), var(--green-accent));
border-radius: 3px;
}
.section-desc {
color: var(--text-secondary);
font-size: 1.05rem;
max-width: 600px;
margin: 16px auto 0;
}
/* ============================================
PRODUCTS SECTION
============================================ */
.products-section {
padding: 80px 0;
background:
radial-gradient(ellipse at 80% 50%, rgba(46, 125, 50, 0.05) 0%, transparent 50%),
var(--black-400);
}
/* Category Tabs */
.category-tabs {
display: flex;
justify-content: center;
flex-wrap: wrap;
gap: 10px;
margin-bottom: 40px;
}
.cat-tab {
display: inline-flex;
align-items: center;
gap: 6px;
padding: 10px 22px;
border: 1px solid var(--gray-700);
background: var(--black-300);
color: var(--text-secondary);
border-radius: 50px;
font-family: inherit;
font-size: 0.85rem;
font-weight: 500;
cursor: pointer;
transition: var(--transition);
}
.cat-tab:hover {
border-color: var(--green-400);
color: var(--green-300);
background: rgba(46, 125, 50, 0.1);
}
.cat-tab.active {
background: linear-gradient(135deg, var(--green-500), var(--green-400));
color: var(--white);
border-color: var(--green-400);
box-shadow: 0 4px 15px rgba(46, 125, 50, 0.3);
}
/* Products Grid */
.products-grid {
display: flex;
flex-direction: column;
gap: 0;
}
/* Category Divider Stripe */
.category-divider {
display: flex;
align-items: center;
gap: 16px;
padding: 20px 0 12px;
margin-top: 16px;
}
.category-divider:first-child {
margin-top: 0;
padding-top: 0;
}
.divider-line {
flex: 1;
height: 2px;
background: linear-gradient(90deg, transparent, rgba(0, 230, 118, 0.3), transparent);
}
.divider-label {
display: flex;
align-items: center;
gap: 10px;
padding: 8px 24px;
background: linear-gradient(135deg, var(--green-600), var(--green-500));
border-radius: 50px;
white-space: nowrap;
box-shadow: 0 2px 12px rgba(46, 125, 50, 0.3);
}
.divider-label i {
color: var(--green-accent);
font-size: 0.9rem;
}
.divider-label span {
color: var(--white);
font-size: 1rem;
font-weight: 700;
letter-spacing: 1.5px;
text-transform: uppercase;
font-family: 'Playfair Display', serif;
}
/* Category Products Wrapper */
.category-products {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
gap: 24px;
padding: 16px 0;
}
/* Product Card */
.product-card {
background: var(--black-300);
border: 1px solid rgba(255, 255, 255, 0.06);
border-radius: var(--radius-md);
overflow: hidden;
transition: var(--transition);
position: relative;
cursor: pointer;
}
.product-card:hover {
transform: translateY(-6px);
border-color: rgba(46, 125, 50, 0.3);
box-shadow: var(--shadow-glow);
}
.product-card-image {
position: relative;
height: 220px;
background: linear-gradient(135deg, var(--black-200), var(--black-100));
display: flex;
align-items: center;
justify-content: center;
overflow: hidden;
}
.product-card-image .product-emoji {
font-size: 5rem;
filter: drop-shadow(0 4px 8px rgba(0,0,0,0.3));
transition: var(--transition);
}
.product-card-image .product-img {
width: 100%;
height: 100%;
object-fit: cover;
transition: var(--transition);
}
.product-card:hover .product-emoji {
transform: scale(1.1);
}
.product-card:hover .product-img {
transform: scale(1.05);
}
.product-badge {
position: absolute;
top: 12px;
left: 12px;
padding: 4px 12px;
border-radius: 50px;
font-size: 0.7rem;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.5px;
}
.badge-discount {
background: var(--danger);
color: var(--white);
}
.badge-new {
background: var(--green-accent);
color: var(--black-500);
}
.badge-popular {
background: var(--warning);
color: var(--black-500);
}
.product-card-body {
padding: 18px;
}
.product-card-category {
font-size: 0.7rem;
color: var(--green-400);
text-transform: uppercase;
letter-spacing: 1px;
font-weight: 600;
margin-bottom: 6px;
}
.product-card-title {
font-size: 1.05rem;
font-weight: 600;
color: var(--white);
margin-bottom: 4px;
line-height: 1.3;
}
.product-card-weight {
font-size: 0.8rem;
color: var(--text-muted);
margin-bottom: 8px;
}
.product-card-desc {
font-size: 0.8rem;
color: var(--text-secondary);
margin-bottom: 12px;
line-height: 1.5;
display: -webkit-box;
-webkit-line-clamp: 2;
line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden;
}
.product-card-pricing {
display: flex;
align-items: center;
gap: 10px;
margin-bottom: 14px;
}
.product-price {
font-size: 1.3rem;
font-weight: 700;
color: var(--green-300);
}
.product-original-price {
font-size: 0.9rem;
color: var(--gray-500);
text-decoration: line-through;
}
.product-card-actions {
display: flex;
gap: 8px;
}
.btn-add-cart {
flex: 1;
display: flex;
align-items: center;
justify-content: center;
gap: 6px;
padding: 10px 16px;
background: linear-gradient(135deg, var(--green-500), var(--green-400));
color: var(--white);
border: none;
border-radius: var(--radius-sm);
font-family: inherit;
font-size: 0.85rem;
font-weight: 600;
cursor: pointer;
transition: var(--transition);
}
.btn-add-cart:hover {
background: linear-gradient(135deg, var(--green-400), var(--green-300));
box-shadow: 0 4px 12px rgba(46, 125, 50, 0.3);
}
.btn-view {
width: 42px;
height: 42px;
display: flex;
align-items: center;
justify-content: center;
background: rgba(255, 255, 255, 0.06);
border: 1px solid rgba(255, 255, 255, 0.1);
border-radius: var(--radius-sm);
color: var(--text-secondary);
cursor: pointer;
transition: var(--transition);
font-size: 0.9rem;
}
.btn-view:hover {
background: rgba(46, 125, 50, 0.2);
border-color: var(--green-400);
color: var(--green-300);
}
/* ============================================
ABOUT SECTION
============================================ */
.about-section {
padding: 80px 0;
background:
radial-gradient(ellipse at 20% 80%, rgba(46, 125, 50, 0.08) 0%, transparent 50%),
var(--black-500);
}
.about-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 40px;
align-items: start;
}
.about-story {
background: var(--black-300);
border: 1px solid rgba(255, 255, 255, 0.06);
border-radius: var(--radius-md);
padding: 28px;
margin-bottom: 24px;
}
.about-story h3 {
font-size: 1.2rem;
color: var(--green-300);
margin-bottom: 14px;
display: flex;
align-items: center;
gap: 10px;
}
.about-story p {
color: var(--text-secondary);
font-size: 0.95rem;
margin-bottom: 12px;
line-height: 1.7;
}
.about-stats {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 16px;
}
.stat-item {
background: var(--black-300);
border: 1px solid rgba(46, 125, 50, 0.2);
border-radius: var(--radius-md);
padding: 20px 12px;
text-align: center;
}
.stat-number {
display: block;
font-size: 1.6rem;
font-weight: 700;
color: var(--green-accent);
font-family: 'Playfair Display', serif;
}
.stat-label {
font-size: 0.75rem;
color: var(--text-muted);
text-transform: uppercase;
letter-spacing: 0.5px;
margin-top: 4px;
display: block;
}
.about-image-card {
background: linear-gradient(135deg, var(--black-300), var(--black-200));
border: 1px solid rgba(46, 125, 50, 0.2);
border-radius: var(--radius-lg);
padding: 40px 30px;
text-align: center;
margin-bottom: 24px;
}
.about-icon-large {
width: 80px;
height: 80px;
border-radius: 50%;
background: linear-gradient(135deg, var(--green-500), var(--green-400));
display: flex;
align-items: center;
justify-content: center;
font-size: 2rem;
color: var(--white);
margin: 0 auto 16px;
box-shadow: 0 0 30px rgba(0, 230, 118, 0.3);
}
.about-image-card h4 {
font-size: 1.3rem;
font-family: 'Playfair Display', serif;
color: var(--green-300);
margin-bottom: 4px;
}
.about-image-card > p {
color: var(--text-muted);
font-size: 0.85rem;
margin-bottom: 20px;
}
.about-logos {
display: flex;
align-items: center;
justify-content: center;
gap: 16px;
margin-bottom: 16px;
}
.about-logo {
height: 70px;
width: 70px;
object-fit: contain;
border-radius: 50%;
background: var(--white);
padding: 6px;
border: 2px solid rgba(255, 255, 255, 0.2);
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
}
.about-logo.new {
border-color: rgba(0, 230, 118, 0.4);
box-shadow: 0 2px 12px rgba(0, 230, 118, 0.2);
}
.about-logo.old {
opacity: 0.8;
}
.about-logo-arrow {
color: var(--green-accent);
font-size: 1.2rem;
}
.about-badges {
display: flex;
flex-wrap: wrap;
gap: 8px;
justify-content: center;
}
.badge {
display: inline-flex;
align-items: center;
gap: 6px;
padding: 6px 14px;
background: rgba(46, 125, 50, 0.15);
border: 1px solid rgba(46, 125, 50, 0.3);
border-radius: 50px;
color: var(--green-200);
font-size: 0.75rem;
font-weight: 500;
}
.about-why {
background: var(--black-300);
border: 1px solid rgba(255, 255, 255, 0.06);
border-radius: var(--radius-md);
padding: 28px;
}
.about-why h3 {
font-size: 1.2rem;
color: var(--green-300);
margin-bottom: 16px;
}
.why-list {
list-style: none;
}
.why-list li {
display: flex;
align-items: center;
gap: 10px;
padding: 8px 0;
color: var(--text-secondary);
font-size: 0.9rem;
}
.why-list li i {
color: var(--green-400);
font-size: 0.8rem;
flex-shrink: 0;
}
/* ============================================
GALLERY SECTION
============================================ */
.gallery-section {
padding: 80px 0;
background:
radial-gradient(ellipse at 30% 30%, rgba(46, 125, 50, 0.08) 0%, transparent 50%),
var(--black-500);
}
.gallery-grid {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 20px;
margin-bottom: 40px;
}
.gallery-card {
background: var(--black-300);
border: 1px solid rgba(255, 255, 255, 0.06);
border-radius: var(--radius-lg);
overflow: hidden;
min-height: 220px;
display: flex;
align-items: center;
justify-content: center;
}
.gallery-image {
width: 100%;
height: 100%;
object-fit: cover;
transition: var(--transition);
}
.gallery-card:hover .gallery-image {
transform: scale(1.03);
}
.gallery-video {
display: grid;
grid-template-columns: 1.6fr 1fr;
gap: 28px;
align-items: start;
}
.video-wrapper {
background: var(--black-300);
border: 1px solid rgba(255, 255, 255, 0.06);
border-radius: var(--radius-lg);
overflow: hidden;
box-shadow: var(--shadow-sm);
display: flex;
flex-direction: column;
}
.video-poster-card {
position: relative;
overflow: hidden;
}
.video-poster {
width: 100%;
display: block;
object-fit: cover;
}
.video-play-btn {
position: absolute;
bottom: 16px;
left: 50%;
transform: translateX(-50%);
display: inline-flex;
align-items: center;
gap: 10px;
padding: 10px 18px;
background: rgba(0, 0, 0, 0.7);
border-radius: 999px;
color: var(--white);
font-weight: 700;
text-decoration: none;
transition: var(--transition);
}
.video-play-btn:hover {
background: rgba(46, 125, 50, 0.95);
}
.video-wrapper iframe {
width: 100%;
min-height: 360px;
display: block;
}
.gallery-video-meta {
padding: 24px;
background: var(--black-300);
border: 1px solid rgba(255, 255, 255, 0.06);
border-radius: var(--radius-lg);
}
.gallery-video-meta h3 {
font-size: 1.4rem;
color: var(--green-300);
margin-bottom: 12px;
}
.gallery-video-meta p {
color: var(--text-secondary);
line-height: 1.8;
}

/* ============================================
TESTIMONIALS SECTION
============================================ */
.testimonials-section {
padding: 80px 0;
background:
radial-gradient(ellipse at 30% 50%, rgba(46, 125, 50, 0.08) 0%, transparent 50%),
var(--black-500);
overflow: hidden;
}
.testimonials-slider {
display: flex;
gap: 24px;
overflow-x: auto;
scroll-snap-type: x mandatory;
scroll-behavior: smooth;
padding: 8px 0 24px;
-ms-overflow-style: none;
scrollbar-width: none;
}
.testimonials-slider::-webkit-scrollbar {
display: none;
}
.testimonial-card {
min-width: 340px;
max-width: 400px;
flex-shrink: 0;
scroll-snap-align: center;
background: var(--black-300);
border: 1px solid rgba(255, 255, 255, 0.06);
border-radius: var(--radius-lg);
padding: 28px;
display: flex;
flex-direction: column;
gap: 16px;
transition: var(--transition);
}
.testimonial-card:hover {
border-color: rgba(46, 125, 50, 0.3);
box-shadow: var(--shadow-glow);
transform: translateY(-4px);
}
.testimonial-stars {
display: flex;
gap: 3px;
color: #ffc107;
font-size: 0.9rem;
}
.testimonial-text {
color: var(--text-secondary);
font-size: 0.92rem;
line-height: 1.7;
font-style: italic;
flex: 1;
position: relative;
padding-left: 16px;
border-left: 3px solid rgba(0, 230, 118, 0.3);
}
.testimonial-author {
display: flex;
align-items: center;
gap: 12px;
padding-top: 8px;
border-top: 1px solid rgba(255, 255, 255, 0.06);
}
.testimonial-avatar {
width: 42px;
height: 42px;
border-radius: 50%;
background: linear-gradient(135deg, var(--green-600), var(--green-500));
display: flex;
align-items: center;
justify-content: center;
color: var(--white);
font-size: 1rem;
flex-shrink: 0;
}
.testimonial-author strong {
display: block;
color: var(--white);
font-size: 0.9rem;
}
.testimonial-author span {
color: var(--text-muted);
font-size: 0.75rem;
}
.testimonial-controls {
display: flex;
align-items: center;
justify-content: center;
gap: 16px;
margin-top: 8px;
}
.testimonial-btn {
width: 40px;
height: 40px;
border-radius: 50%;
border: 1px solid rgba(255, 255, 255, 0.1);
background: var(--black-300);
color: var(--text-secondary);
font-size: 0.9rem;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
transition: var(--transition);
}
.testimonial-btn:hover {
background: var(--green-500);
border-color: var(--green-500);
color: var(--white);
}
.testimonial-dots {
display: flex;
gap: 8px;
}
.testimonial-dot {
width: 10px;
height: 10px;
border-radius: 50%;
background: var(--gray-700);
cursor: pointer;
transition: var(--transition);
}
.testimonial-dot.active {
background: var(--green-accent);
box-shadow: 0 0 8px rgba(0, 230, 118, 0.4);
}
@media (max-width: 768px) {
.testimonial-card {
min-width: 280px;
max-width: 320px;
padding: 22px;
}
.gallery-grid {
grid-template-columns: 1fr;
}
.gallery-video {
grid-template-columns: 1fr;
}
.video-wrapper iframe {
height: 240px;
}
}
/* ============================================
CONTACT SECTION
============================================ */
.contact-section {
padding: 80px 0;
background:
radial-gradient(ellipse at 70% 30%, rgba(46, 125, 50, 0.06) 0%, transparent 50%),
var(--black-400);
}
.contact-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 40px;
}
.contact-info {
display: flex;
flex-direction: column;
gap: 16px;
}
.contact-card {
background: var(--black-300);
border: 1px solid rgba(255, 255, 255, 0.06);
border-radius: var(--radius-md);
padding: 20px;
display: flex;
align-items: flex-start;
gap: 16px;
transition: var(--transition);
}
.contact-card:hover {
border-color: rgba(46, 125, 50, 0.3);
}
.contact-card-icon {
width: 44px;
height: 44px;
border-radius: 50%;
background: rgba(46, 125, 50, 0.15);
display: flex;
align-items: center;
justify-content: center;
color: var(--green-400);
font-size: 1.1rem;
flex-shrink: 0;
}
.contact-card h4 {
font-size: 0.95rem;
color: var(--white);
margin-bottom: 4px;
}
.contact-card p {
color: var(--text-secondary);
font-size: 0.85rem;
line-height: 1.5;
}
.contact-card a {
color: var(--green-300);
}
.map-container {
border-radius: var(--radius-md);
overflow: hidden;
border: 1px solid rgba(255, 255, 255, 0.06);
}
/* Contact Form */
.contact-form-wrapper {
background: var(--black-300);
border: 1px solid rgba(255, 255, 255, 0.06);
border-radius: var(--radius-lg);
padding: 32px;
}
.contact-form-wrapper h3 {
font-size: 1.2rem;
color: var(--green-300);
margin-bottom: 24px;
display: flex;
align-items: center;
gap: 10px;
}
.form-group {
margin-bottom: 18px;
}
.form-group label {
display: block;
font-size: 0.85rem;
font-weight: 500;
color: var(--text-secondary);
margin-bottom: 6px;
}
.form-group input,
.form-group select,
.form-group textarea {
width: 100%;
padding: 12px 16px;
background: var(--black-400);
border: 1px solid rgba(255, 255, 255, 0.1);
border-radius: var(--radius-sm);
color: var(--white);
font-family: inherit;
font-size: 0.9rem;
transition: var(--transition);
}
.form-group input:focus,
.form-group select:focus,
.form-group textarea:focus {
outline: none;
border-color: var(--green-400);
box-shadow: 0 0 0 3px rgba(46, 125, 50, 0.15);
}
.form-group textarea {
resize: vertical;
min-height: 100px;
}
.form-group select {
cursor: pointer;
appearance: auto;
}
.form-group select option {
background: var(--black-400);
color: var(--white);
}
/* ============================================
FOOTER
============================================ */
.footer {
background: var(--black-500);
border-top: 1px solid rgba(46, 125, 50, 0.2);
padding: 60px 0 0;
}
.footer-grid {
display: grid;
grid-template-columns: 2fr 1fr 1fr 1.5fr;
gap: 40px;
padding-bottom: 40px;
}
.footer-logo {
display: flex;
align-items: center;
gap: 12px;
margin-bottom: 16px;
}
.footer-logo i {
font-size: 1.8rem;
color: var(--green-400);
}
.footer-brand-name {
display: block;
font-size: 1.1rem;
font-weight: 700;
color: var(--green-300);
}
.footer-brand-sub {
font-size: 0.7rem;
color: var(--text-muted);
}
.footer-brand > p {
color: var(--text-secondary);
font-size: 0.85rem;
margin-bottom: 20px;
line-height: 1.6;
}
.social-links {
display: flex;
gap: 10px;
}
.social-links a {
width: 40px;
height: 40px;
border-radius: 50%;
background: rgba(255, 255, 255, 0.06);
border: 1px solid rgba(255, 255, 255, 0.1);
display: flex;
align-items: center;
justify-content: center;
color: var(--text-secondary);
font-size: 1rem;
transition: var(--transition);
}
.social-links a:hover {
background: var(--green-500);
border-color: var(--green-500);
color: var(--white);
}
.footer-links-col h4 {
font-size: 1rem;
font-weight: 600;
color: var(--white);
margin-bottom: 16px;
position: relative;
padding-bottom: 10px;
}
.footer-links-col h4::after {
content: '';
position: absolute;
bottom: 0;
left: 0;
width: 30px;
height: 2px;
background: var(--green-400);
border-radius: 2px;
}
.footer-links-col ul {
list-style: none;
}
.footer-links-col ul li {
margin-bottom: 10px;
}
.footer-links-col ul li a {
color: var(--text-secondary);
font-size: 0.85rem;
transition: var(--transition);
}
.footer-links-col ul li a:hover {
color: var(--green-300);
padding-left: 6px;
}
.footer-contact li {
display: flex;
align-items: center;
gap: 10px;
}
.footer-contact li i {
color: var(--green-400);
width: 16px;
font-size: 0.85rem;
}
.footer-bottom {
border-top: 1px solid rgba(255, 255, 255, 0.06);
padding: 20px 0;
text-align: center;
}
.footer-bottom p {
color: var(--text-muted);
font-size: 0.8rem;
}
/* ============================================
CART SIDEBAR
============================================ */
.cart-overlay {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.6);
backdrop-filter: blur(4px);
z-index: 1500;
opacity: 0;
visibility: hidden;
transition: var(--transition);
}
.cart-overlay.active {
opacity: 1;
visibility: visible;
}
.cart-sidebar {
position: fixed;
top: 0;
right: -420px;
width: 400px;
max-width: 100vw;
height: 100%;
background: var(--black-300);
border-left: 1px solid rgba(46, 125, 50, 0.2);
z-index: 1600;
display: flex;
flex-direction: column;
transition: right 0.35s ease;
}
.cart-sidebar.active {
right: 0;
}
.cart-header {
display: flex;
align-items: center;
justify-content: space-between;
padding: 20px;
border-bottom: 1px solid rgba(255, 255, 255, 0.06);
}
.cart-header h3 {
display: flex;
align-items: center;
gap: 10px;
color: var(--green-300);
font-size: 1.1rem;
}
.cart-close {
width: 36px;
height: 36px;
border: none;
background: rgba(255, 255, 255, 0.06);
border-radius: 50%;
color: var(--text-secondary);
font-size: 1rem;
cursor: pointer;
transition: var(--transition);
display: flex;
align-items: center;
justify-content: center;
}
.cart-close:hover {
background: var(--danger);
color: var(--white);
}
.cart-body {
flex: 1;
overflow-y: auto;
padding: 20px;
}
.cart-empty {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
height: 100%;
color: var(--text-muted);
gap: 16px;
}
.cart-empty i {
font-size: 3rem;
color: var(--gray-600);
}
.cart-items {
display: flex;
flex-direction: column;
gap: 14px;
}
.cart-item {
display: flex;
gap: 14px;
background: var(--black-400);
border: 1px solid rgba(255, 255, 255, 0.06);
border-radius: var(--radius-sm);
padding: 14px;
position: relative;
}
.cart-item-image {
width: 60px;
height: 60px;
border-radius: var(--radius-sm);
background: var(--black-200);
display: flex;
align-items: center;
justify-content: center;
font-size: 2rem;
flex-shrink: 0;
}
.cart-item-info {
flex: 1;
min-width: 0;
}
.cart-item-name {
font-size: 0.9rem;
font-weight: 600;
color: var(--white);
margin-bottom: 2px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.cart-item-price {
font-size: 0.85rem;
color: var(--green-300);
font-weight: 600;
}
.cart-item-controls {
display: flex;
align-items: center;
gap: 8px;
margin-top: 8px;
}
.cart-qty-btn {
width: 28px;
height: 28px;
border: 1px solid rgba(255, 255, 255, 0.1);
background: var(--black-300);
color: var(--white);
border-radius: 6px;
cursor: pointer;
font-size: 0.85rem;
display: flex;
align-items: center;
justify-content: center;
transition: var(--transition);
}
.cart-qty-btn:hover {
border-color: var(--green-400);
color: var(--green-300);
}
.cart-qty-value {
font-size: 0.9rem;
font-weight: 600;
color: var(--white);
min-width: 24px;
text-align: center;
}
.cart-item-remove {
position: absolute;
top: 10px;
right: 10px;
width: 24px;
height: 24px;
border: none;
background: transparent;
color: var(--gray-500);
cursor: pointer;
font-size: 0.8rem;
display: flex;
align-items: center;
justify-content: center;
border-radius: 50%;
transition: var(--transition);
}
.cart-item-remove:hover {
background: rgba(239, 83, 80, 0.2);
color: var(--danger);
}
/* Cart Footer */
.cart-footer {
border-top: 1px solid rgba(255, 255, 255, 0.06);
padding: 20px;
display: flex;
flex-direction: column;
gap: 12px;
}
.cart-total {
display: flex;
justify-content: space-between;
align-items: center;
font-size: 1.1rem;
font-weight: 700;
}
.cart-total span:last-child {
color: var(--green-accent);
font-size: 1.3rem;
}
/* ============================================
PRODUCT MODAL
============================================ */
.modal-overlay {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.7);
backdrop-filter: blur(8px);
z-index: 2000;
display: flex;
align-items: center;
justify-content: center;
padding: 20px;
opacity: 0;
visibility: hidden;
transition: var(--transition);
}
.modal-overlay.active {
opacity: 1;
visibility: visible;
}
.modal-content {
background: var(--black-300);
border: 1px solid rgba(46, 125, 50, 0.3);
border-radius: var(--radius-lg);
max-width: 700px;
width: 100%;
max-height: 90vh;
overflow-y: auto;
position: relative;
transform: scale(0.9);
transition: transform 0.3s ease;
}
.modal-overlay.active .modal-content {
transform: scale(1);
}
.modal-close {
position: absolute;
top: 16px;
right: 16px;
width: 36px;
height: 36px;
border: none;
background: rgba(255, 255, 255, 0.1);
border-radius: 50%;
color: var(--white);
cursor: pointer;
font-size: 1rem;
z-index: 10;
display: flex;
align-items: center;
justify-content: center;
transition: var(--transition);
}
.modal-close:hover {
background: var(--danger);
}
.modal-body {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 0;
}
.modal-image {
background: linear-gradient(135deg, var(--black-200), var(--black-100));
display: flex;
align-items: center;
justify-content: center;
min-height: 300px;
font-size: 6rem;
border-radius: var(--radius-lg) 0 0 var(--radius-lg);
}
.modal-details {
padding: 32px;
}
.modal-category {
font-size: 0.7rem;
color: var(--green-400);
text-transform: uppercase;
letter-spacing: 1.5px;
font-weight: 600;
}
.modal-details h2 {
font-family: 'Playfair Display', serif;
font-size: 1.5rem;
margin: 8px 0 12px;
color: var(--white);
}
.modal-desc {
color: var(--text-secondary);
font-size: 0.9rem;
line-height: 1.6;
margin-bottom: 16px;
}
.modal-weight {
color: var(--text-muted);
font-size: 0.85rem;
margin-bottom: 16px;
}
.modal-pricing {
display: flex;
align-items: center;
gap: 12px;
margin-bottom: 20px;
flex-wrap: wrap;
}
.modal-price {
font-size: 1.6rem;
font-weight: 700;
color: var(--green-300);
}
.modal-original-price {
font-size: 1rem;
color: var(--gray-500);
text-decoration: line-through;
}
.modal-discount-badge {
padding: 3px 10px;
background: var(--danger);
color: var(--white);
font-size: 0.7rem;
font-weight: 700;
border-radius: 50px;
display: none;
}
.modal-qty {
display: flex;
align-items: center;
gap: 16px;
margin-bottom: 20px;
}
.modal-qty label {
font-size: 0.9rem;
color: var(--text-secondary);
font-weight: 500;
}
.qty-control {
display: flex;
align-items: center;
gap: 4px;
background: var(--black-400);
border: 1px solid rgba(255, 255, 255, 0.1);
border-radius: var(--radius-sm);
padding: 4px;
}
.qty-btn {
width: 34px;
height: 34px;
border: none;
background: rgba(255, 255, 255, 0.06);
color: var(--white);
border-radius: 6px;
cursor: pointer;
font-size: 1rem;
font-weight: 600;
display: flex;
align-items: center;
justify-content: center;
transition: var(--transition);
}
.qty-btn:hover {
background: var(--green-500);
}
.qty-value {
min-width: 36px;
text-align: center;
font-size: 1rem;
font-weight: 600;
color: var(--white);
}
/* ============================================
WHATSAPP FLOAT
============================================ */
.whatsapp-float {
position: fixed;
bottom: 24px;
left: 24px;
width: 56px;
height: 56px;
background: #25d366;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
color: var(--white);
font-size: 1.6rem;
box-shadow: 0 4px 20px rgba(37, 211, 102, 0.4);
z-index: 999;
transition: var(--transition);
animation: whatsappPulse 2s infinite;
}
.whatsapp-float:hover {
transform: scale(1.1);
color: var(--white);
box-shadow: 0 6px 25px rgba(37, 211, 102, 0.6);
}
@keyframes whatsappPulse {
0%, 100% { box-shadow: 0 4px 20px rgba(37, 211, 102, 0.4); }
50% { box-shadow: 0 4px 30px rgba(37, 211, 102, 0.6); }
}
/* ============================================
TOAST NOTIFICATIONS
============================================ */
.toast-container {
position: fixed;
top: calc(var(--header-height) + 16px);
right: 16px;
z-index: 3000;
display: flex;
flex-direction: column;
gap: 10px;
}
.toast {
display: flex;
align-items: center;
gap: 12px;
padding: 14px 20px;
background: var(--black-300);
border: 1px solid rgba(46, 125, 50, 0.3);
border-radius: var(--radius-sm);
box-shadow: var(--shadow-md);
color: var(--white);
font-size: 0.9rem;
min-width: 280px;
max-width: 400px;
animation: toastIn 0.3s ease;
transition: var(--transition);
}
.toast.removing {
animation: toastOut 0.3s ease forwards;
}
.toast i {
font-size: 1.1rem;
flex-shrink: 0;
}
.toast.success i { color: var(--success); }
.toast.error i { color: var(--danger); }
.toast.info i { color: var(--green-300); }
@keyframes toastIn {
from { transform: translateX(100%); opacity: 0; }
to { transform: translateX(0); opacity: 1; }
}
@keyframes toastOut {
from { transform: translateX(0); opacity: 1; }
to { transform: translateX(100%); opacity: 0; }
}
/* ============================================
SCROLLBAR
============================================ */
::-webkit-scrollbar {
width: 8px;
}
::-webkit-scrollbar-track {
background: var(--black-400);
}
::-webkit-scrollbar-thumb {
background: var(--gray-700);
border-radius: 4px;
}
::-webkit-scrollbar-thumb:hover {
background: var(--gray-600);
}
/* ============================================
RESPONSIVE DESIGN
============================================ */
/* Tablet */
@media (max-width: 1024px) {
.about-grid {
grid-template-columns: 1fr;
}
.contact-grid {
grid-template-columns: 1fr;
}
.footer-grid {
grid-template-columns: 1fr 1fr;
gap: 30px;
}
.about-stats {
grid-template-columns: repeat(4, 1fr);
}
.modal-body {
grid-template-columns: 1fr;
}
.modal-image {
min-height: 200px;
border-radius: var(--radius-lg) var(--radius-lg) 0 0;
}
}
@media (max-width: 768px) {
:root {
--header-height: 80px;
}
/* Header Mobile */
.main-nav {
position: fixed;
top: var(--header-height);
left: 0;
width: 100%;
background: linear-gradient(180deg, #14532d, #0a2e1a);
backdrop-filter: blur(20px);
padding: 20px;
border-bottom: 2px solid rgba(0, 230, 118, 0.25);
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.3);
transform: translateY(-120%);
transition: transform 0.3s ease;
z-index: 999;
}
.main-nav.active {
transform: translateY(0);
}
.nav-links {
flex-direction: column;
gap: 6px;
}
.nav-link {
padding: 12px 18px;
font-size: 1rem;
border-radius: var(--radius-sm);
text-align: center;
}
.nav-link.active::after {
display: none;
}
.mobile-menu-btn {
display: block;
}
/* Mobile header layout - use flexbox, no absolute */
.header-container {
justify-content: space-between;
padding: 0 12px;
}
.logo-left {
display: flex;
align-items: center;
}
.header-title {
display: none;
}
.logo-img-old {
height: 54px;
width: 54px;
padding: 4px;
}
.header-right {
gap: 8px;
}
.logo-img-new {
height: 54px;
width: 54px;
padding: 4px;
}
.cart-icon {
width: 36px;
height: 36px;
font-size: 0.95rem;
}
/* Hero */
.hero-actions {
flex-direction: column;
align-items: center;
}
.hero-features {
flex-direction: column;
align-items: center;
gap: 12px;
}
/* Promo */
.promo-content {
flex-direction: column;
align-items: center;
text-align: center;
}
/* Products */
.category-products {
grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
gap: 16px;
}
.category-tabs {
gap: 6px;
}
.cat-tab {
padding: 8px 16px;
font-size: 0.8rem;
}
/* About */
.about-stats {
grid-template-columns: repeat(2, 1fr);
}
/* Footer */
.footer-grid {
grid-template-columns: 1fr;
gap: 30px;
}
/* Cart */
.cart-sidebar {
width: 100%;
right: -100%;
}
/* Modal */
.modal-content {
max-width: 95vw;
}
.modal-details {
padding: 24px;
}
.modal-details h2 {
font-size: 1.2rem;
}
}
@media (max-width: 480px) {
.category-products {
grid-template-columns: 1fr;
}
.hero-title {
font-size: 2rem;
}
.hero-subtitle {
font-size: 0.95rem;
}
.section-title {
font-size: 1.6rem;
}
.cart-footer {
padding: 16px;
}
.modal-details {
padding: 20px;
}
}