/* ============================================================

   VoltaFlask Agri-Tourism Hub — Main Stylesheet

   Stack: Bootstrap 5 base + custom VoltaFlask theme

   ============================================================ */



/* ------------------------------------------------------------

   CSS Custom Properties (Design Tokens)

   ------------------------------------------------------------ */

:root {

    --vf-green-dark:   #1a6b3c;

    --vf-green:        #2d8653;

    --vf-green-light:  #e8f5ee;

    --vf-gold:         #f59e0b;

    --vf-gold-light:   #fef3c7;

    --vf-navy:         #0f2744;

    --vf-text:         #1a1a1a;

    --vf-text-muted:   #6b7280;

    --vf-border:       #e5e7eb;

    --vf-surface:      #f9fafb;

    --vf-white:        #ffffff;

    --vf-radius:       10px;

    --vf-radius-lg:    16px;

    --vf-shadow-sm:    0 1px 3px rgba(0,0,0,0.08);

    --vf-shadow:       0 4px 12px rgba(0,0,0,0.10);

    --vf-shadow-lg:    0 8px 24px rgba(0,0,0,0.12);

    --vf-transition:   0.18s ease;

    --vf-carousel-interval: {{ carousel_interval|default(6000) }};

}



/* ------------------------------------------------------------

   Base Reset & Body

   ------------------------------------------------------------ */

*, *::before, *::after { box-sizing: border-box; }



body {

    font-family: 'Plus Jakarta Sans', 'Segoe UI', system-ui, -apple-system, sans-serif;

    color: var(--vf-text);

    background: var(--vf-surface);

    line-height: 1.6;

    -webkit-font-smoothing: antialiased;

    -moz-osx-font-smoothing: grayscale;

}

h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 {

    font-family: 'Plus Jakarta Sans', 'Segoe UI', system-ui, sans-serif;

    letter-spacing: -0.01em;

}



a { color: var(--vf-green); text-decoration: none; }

a:hover { color: var(--vf-green-dark); }



img { max-width: 100%; height: auto; }



/* ------------------------------------------------------------

   Navbar

   ------------------------------------------------------------ */

.vf-navbar {

    background: var(--vf-green-dark);

    padding: 0.6rem 0;

    box-shadow: 0 2px 8px rgba(0,0,0,0.15);

}



.vf-navbar .navbar-brand { font-size: 1.1rem; letter-spacing: -0.01em; }

.vf-brand-icon { color: var(--vf-gold); font-size: 1.3rem; }

.vf-brand-text { font-weight: 600; }

.vf-brand-market {

    font-family: Georgia, "Times New Roman", serif;

    font-style: italic;

    font-weight: 700;

    color: var(--vf-gold);

    letter-spacing: 0.01em;

}



.vf-search-form { width: clamp(200px, 35%, 420px); }



.vf-search-input {

    background: rgba(255,255,255,0.12);

    border: 1px solid rgba(255,255,255,0.2);

    color: white;

    border-right: none;

    border-radius: var(--vf-radius) 0 0 var(--vf-radius) !important;

    transition: var(--vf-transition);

}

.vf-search-input::placeholder { color: rgba(255,255,255,0.5); }

.vf-search-input:focus {

    background: rgba(255,255,255,0.2);

    border-color: var(--vf-gold);

    color: white;

    box-shadow: none;

}



.vf-search-btn {

    background: var(--vf-gold);

    border: none;

    color: var(--vf-navy);

    border-radius: 0 var(--vf-radius) var(--vf-radius) 0 !important;

    font-weight: 600;

    padding: 0 1rem;

}

.vf-search-btn:hover { background: #e08d00; color: white; }



.vf-navbar .nav-link {

    color: rgba(255,255,255,0.82) !important;

    font-size: 0.9rem;

    padding: 0.45rem 0.75rem;

    border-radius: var(--vf-radius);

    transition: var(--vf-transition);

}

.vf-navbar .nav-link:hover,

.vf-navbar .nav-link.active {

    color: white !important;

    background: rgba(255,255,255,0.12);

}



.vf-btn-register {

    background: var(--vf-gold);

    color: var(--vf-navy) !important;

    border-radius: var(--vf-radius);

    font-size: 0.88rem;

    font-weight: 600;

    padding: 0.45rem 1rem;

    transition: var(--vf-transition);

}

.vf-btn-register:hover {

    background: #d97706;

    color: white !important;

    transform: translateY(-1px);

}



.vf-dropdown {

    border: 1px solid var(--vf-border);

    border-radius: var(--vf-radius);

    box-shadow: var(--vf-shadow);

    min-width: 200px;

}

.vf-dropdown .dropdown-item { font-size: 0.9rem; padding: 0.55rem 1rem; }

.vf-dropdown .dropdown-item:hover { background: var(--vf-green-light); color: var(--vf-green-dark); }



/* ------------------------------------------------------------

   Flash Alerts

   ------------------------------------------------------------ */

.vf-alert {

    border-radius: var(--vf-radius);

    font-size: 0.92rem;

    border-left-width: 4px;

}



/* ------------------------------------------------------------

   Hero Section

   ------------------------------------------------------------ */

.vf-hero {

    background: linear-gradient(135deg, var(--vf-green-dark) 0%, #0f4a2a 60%, #0d3d23 100%);

    color: white;

    padding: 1.5rem 0 1rem;

    position: relative;

    overflow: hidden;

}



.vf-hero::before {

    content: '';

    position: absolute;

    inset: 0;

    background: url("data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cg fill='%23ffffff' fill-opacity='0.03'%3E%3Ccircle cx='30' cy='30' r='2'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");

    pointer-events: none;

}



.vf-hero h1 { font-size: clamp(1.8rem, 4vw, 2.8rem); font-weight: 700; letter-spacing: -0.02em; }

.vf-hero p.lead { color: rgba(255,255,255,0.8); font-size: 1.05rem; }



.vf-hero-search .form-control {

    border: 2px solid rgba(255,255,255,0.2);

    background: rgba(255,255,255,0.1);

    color: white;

    border-radius: var(--vf-radius) 0 0 var(--vf-radius) !important;

    padding: 0.75rem 1rem;

    font-size: 1rem;

    transition: var(--vf-transition);

}

.vf-hero-search .form-control::placeholder { color: rgba(255,255,255,0.5); }

.vf-hero-search .form-control:focus {

    background: rgba(255,255,255,0.2);

    border-color: var(--vf-gold);

    box-shadow: 0 0 0 3px rgba(245,158,11,0.25);

    color: white;

}



.vf-hero-search .form-select {

    background-color: rgba(255,255,255,0.1);

    border: 2px solid rgba(255,255,255,0.2);

    color: white;

    border-left: none;

    border-radius: 0 !important;

}

.vf-hero-search .form-select option { color: var(--vf-text); background: white; }



.vf-hero-search-btn {

    background: var(--vf-gold);

    border: none;

    color: var(--vf-navy);

    font-weight: 700;

    padding: 0.75rem 1.5rem;

    border-radius: 0 var(--vf-radius) var(--vf-radius) 0 !important;

    transition: var(--vf-transition);

}

.vf-hero-search-btn:hover { background: #d97706; transform: translateX(1px); }



/* Hero stats strip */

.vf-hero-stats { margin-top: 2.5rem; }

.vf-stat-item { text-align: center; }

.vf-stat-number { font-size: 1.8rem; font-weight: 700; color: var(--vf-gold); }

.vf-stat-label { font-size: 0.8rem; color: rgba(255,255,255,0.6); text-transform: uppercase; letter-spacing: 0.05em; }



/* ------------------------------------------------------------

   Category Filter Pills

   ------------------------------------------------------------ */

.vf-categories { padding: 0.5rem 0; background: white; border-bottom: 1px solid var(--vf-border); }



.vf-cat-pill {

    display: inline-flex;

    align-items: center;

    gap: 6px;

    padding: 0.4rem 1rem;

    border-radius: 50px;

    border: 1.5px solid var(--vf-border);

    background: white;

    color: var(--vf-text-muted);

    font-size: 0.85rem;

    font-weight: 500;

    cursor: pointer;

    transition: var(--vf-transition);

    text-decoration: none;

    white-space: nowrap;

}

.vf-cat-pill:hover {

    border-color: var(--vf-green);

    color: var(--vf-green);

    background: var(--vf-green-light);

}

.vf-cat-pill.active {

    border-color: var(--vf-green-dark);

    background: var(--vf-green-dark);

    color: white;

}



/* ------------------------------------------------------------

   Business Cards

   ------------------------------------------------------------ */

.vf-card {

    background: white;

    border: 1px solid var(--vf-border);

    border-radius: var(--vf-radius-lg);

    overflow: hidden;

    transition: var(--vf-transition);

    display: flex;

    flex-direction: column;

    height: 100%;

}

.vf-card:hover {

    box-shadow: var(--vf-shadow);

    transform: translateY(-3px);

    border-color: #d1d5db;

}



/* Carousel */

.vf-card .carousel { height: 260px; background: #f3f4f6; flex-shrink: 0; }

.vf-card .carousel-item { height: 260px; }

.vf-card .carousel-item img {

    width: 100%;

    height: 200px;

    object-fit: cover;

}

.vf-card-img-placeholder {

    width: 100%;

    height: 200px;

    display: flex;

    align-items: center;

    justify-content: center;

    background: linear-gradient(135deg, var(--vf-green-light), #d1fae5);

    font-size: 3rem;

}



.vf-card-body { padding: 1rem; flex: 1; display: flex; flex-direction: column; }



.vf-card-category {

    font-size: 0.72rem;

    font-weight: 600;

    color: var(--vf-green-dark);

    text-transform: uppercase;

    letter-spacing: 0.06em;

    margin-bottom: 0.25rem;

}



.vf-card-title {

    font-size: 0.95rem;

    font-weight: 600;

    color: var(--vf-text);

    margin-bottom: 0.25rem;

    display: -webkit-box;

    -webkit-line-clamp: 2;

    -webkit-box-orient: vertical;

    overflow: hidden;

}



.vf-card-district {

    font-size: 0.8rem;

    color: var(--vf-text-muted);

    margin-bottom: 0.5rem;

}

.vf-card-district i { color: var(--vf-green); }



.vf-stars { color: var(--vf-gold); font-size: 0.78rem; }

.vf-rating-count { font-size: 0.78rem; color: var(--vf-text-muted); }



/* Sidebar attribute filter chips */

.vf-filter-group-label {

    font-size: 10px;

    font-weight: 700;

    text-transform: uppercase;

    letter-spacing: .06em;

    color: #6b7280;

    margin-bottom: 5px;

}

.vf-attr-chip {

    display: inline-flex;

    align-items: center;

    padding: 3px 10px;

    margin: 2px 3px 2px 0;

    border-radius: 14px;

    font-size: 11.5px;

    font-weight: 500;

    border: 1.5px solid #e2e8f0;

    background: #fff;

    color: #374151;

    text-decoration: none;

    transition: all .12s;

    white-space: nowrap;

}

.vf-attr-chip:hover {

    border-color: #1a4d2e;

    color: #1a4d2e;

    background: #f0faf5;

    text-decoration: none;

}

.vf-attr-chip.active {

    background: #1a4d2e;

    color: #fff;

    border-color: #1a4d2e;

}



.vf-card-footer-strip {

    margin-top: auto;

    padding-top: 0.5rem;

    border-top: 1px solid var(--vf-border);

    display: flex;

    align-items: center;

    justify-content: space-between;

    margin-top: 0.5rem;

}

.vf-price {

    font-size: 1rem;

    font-weight: 700;

    color: #1a4d2e;

    line-height: 1.2;

}

.vf-footer-heart {

    background: none;

    border: none;

    padding: 4px 6px;

    cursor: pointer;

    color: #d1d5db;

    font-size: 1.1rem;

    line-height: 1;

    transition: color .15s, transform .15s;

    display: flex;

    align-items: center;

    justify-content: center;

    border-radius: 50%;

    flex-shrink: 0;

}

.vf-footer-heart:hover { color: #ef4444; transform: scale(1.15); }

.vf-footer-heart.active { color: #ef4444; }



.vf-price-range { font-size: 0.8rem; color: var(--vf-text-muted); }

.vf-price-range.budget::before { content: '₵'; }

.vf-price-range.mid::before { content: '₵₵'; }

.vf-price-range.premium::before { content: '₵₵₵'; }

.vf-price-range.luxury::before { content: '₵₵₵₵'; }



.vf-btn-view {

    font-size: 0.8rem;

    padding: 0.3rem 0.8rem;

    border-radius: var(--vf-radius);

    background: var(--vf-green-dark);

    color: white;

    border: none;

    transition: var(--vf-transition);

}

.vf-btn-view:hover { background: var(--vf-green); color: white; }



.vf-featured-badge {

    position: absolute;

    top: 10px;

    left: 10px;

    background: var(--vf-gold);

    color: var(--vf-navy);

    font-size: 0.7rem;

    font-weight: 700;

    padding: 3px 8px;

    border-radius: 4px;

    text-transform: uppercase;

    letter-spacing: 0.05em;

}



.vf-favorite-btn {

    position: absolute;

    top: 10px;

    right: 10px;

    background: rgba(255,255,255,0.9);

    border: none;

    border-radius: 50%;

    width: 34px;

    height: 34px;

    display: flex;

    align-items: center;

    justify-content: center;

    cursor: pointer;

    transition: var(--vf-transition);

    color: #d1d5db;

}

.vf-favorite-btn:hover { color: #ef4444; transform: scale(1.1); }

.vf-favorite-btn.active { color: #ef4444; }



/* ------------------------------------------------------------

   Map Section

   ------------------------------------------------------------ */

#vf-map { height: 450px; border-radius: var(--vf-radius-lg); border: 1px solid var(--vf-border); }



/* ------------------------------------------------------------

   Section Headings

   ------------------------------------------------------------ */

.vf-section-title {

    font-size: 1.4rem;

    font-weight: 700;

    color: var(--vf-text);

    margin-bottom: 0.25rem;

}

.vf-section-sub { font-size: 0.9rem; color: var(--vf-text-muted); }

.vf-section-divider {

    width: 48px;

    height: 3px;

    background: var(--vf-green-dark);

    border-radius: 2px;

    margin: 0.35rem 0 0.6rem;

}



/* ------------------------------------------------------------

   Pagination

   ------------------------------------------------------------ */

.vf-pagination .page-link {

    border-radius: var(--vf-radius) !important;

    margin: 0 2px;

    color: var(--vf-green-dark);

    border: 1px solid var(--vf-border);

    font-size: 0.88rem;

}

.vf-pagination .page-item.active .page-link {

    background: var(--vf-green-dark);

    border-color: var(--vf-green-dark);

    color: white;

}

.vf-pagination .page-link:hover { background: var(--vf-green-light); border-color: var(--vf-green); }



/* ------------------------------------------------------------

   Filter Sidebar

   ------------------------------------------------------------ */

.vf-filter-card {

    background: white;

    border: 1px solid var(--vf-border);

    border-radius: var(--vf-radius-lg);

    padding: 1.25rem;

    position: sticky;

    top: 80px;

}

.vf-filter-title { font-size: 0.9rem; font-weight: 700; color: var(--vf-text); text-transform: uppercase; letter-spacing: 0.05em; margin-bottom: 0.75rem; }



/* ------------------------------------------------------------

   Status Badges

   ------------------------------------------------------------ */

.badge-pending   { background: #fef3c7; color: #92400e; }

.badge-approved  { background: #d1fae5; color: #065f46; }

.badge-rejected  { background: #fee2e2; color: #991b1b; }

.badge-suspended { background: #f3f4f6; color: #374151; }



/* ------------------------------------------------------------

   Footer

   ------------------------------------------------------------ */

.vf-footer {

    background: var(--vf-navy);

    padding-top: 3rem;

}

.vf-brand-icon-footer { color: var(--vf-gold); font-size: 1.4rem; }

.vf-footer-links { margin: 0; }

.vf-footer-links li { margin-bottom: 0.4rem; }

.vf-footer-links a { color: rgba(255,255,255,0.55); font-size: 0.88rem; transition: var(--vf-transition); }

.vf-footer-links a:hover { color: var(--vf-gold); }

.vf-footer-divider { border-color: rgba(255,255,255,0.1); }

.vf-social-link { transition: var(--vf-transition); }

.vf-social-link:hover { color: var(--vf-gold) !important; }

.vf-district-badge {

    background: rgba(255,255,255,0.08);

    color: rgba(255,255,255,0.6) !important;

    border: 1px solid rgba(255,255,255,0.12);

    font-size: 0.75rem;

    font-weight: 400;

    text-decoration: none;

    transition: var(--vf-transition);

}

.vf-district-badge:hover { background: var(--vf-green); color: white !important; }



/* ------------------------------------------------------------

   Utility Classes

   ------------------------------------------------------------ */

.vf-text-green { color: var(--vf-green-dark); }

.vf-text-gold  { color: var(--vf-gold); }

.vf-bg-green   { background: var(--vf-green-dark); }

.vf-bg-gold    { background: var(--vf-gold); }



.vf-spinner-overlay {

    position: fixed; inset: 0;

    background: rgba(255,255,255,0.8);

    display: flex; align-items: center; justify-content: center;

    z-index: 9999;

}



/* ------------------------------------------------------------

   Responsive Adjustments

   ------------------------------------------------------------ */

@media (max-width: 991.98px) {

    .vf-search-form { width: 100%; margin: 0.5rem 0; }

    .vf-hero { padding: 2.5rem 0 2rem; }

}



@media (max-width: 575.98px) {

    .vf-card .carousel,

    .vf-card .carousel-item,

    .vf-card-img-placeholder { height: 200px; }

    .vf-card .carousel-item img { height: 200px; }

}

/* ==========================================================================

   Mobile bottom tab bar (Jiji-style)                         [added: bottom-nav]

   Vector icons + safe-area inset + backdrop blur. Shown only on phones;

   desktop keeps the top navbar. Body gets bottom padding on mobile so fixed

   content never hides behind the bar.

   ========================================================================== */

.vf-bottomnav {

    position: fixed; left: 0; right: 0; bottom: 0; z-index: 1040;

    display: none;                      /* -> flex on mobile only */

    align-items: flex-end; justify-content: space-around;

    height: 62px;

    padding: 6px 6px calc(6px + env(safe-area-inset-bottom, 0px));

    background: rgba(255, 255, 255, 0.94);

    -webkit-backdrop-filter: saturate(180%) blur(14px);

    backdrop-filter: saturate(180%) blur(14px);

    border-top: 1px solid var(--vf-border);

    box-shadow: 0 -2px 14px rgba(15, 39, 68, 0.07);

}

@media (max-width: 1024.98px) {   /* phones + tablets / iPad */

    .vf-bottomnav { display: flex; }

    body { padding-bottom: calc(66px + env(safe-area-inset-bottom, 0px)); }

}

.vf-tab > span:last-child { white-space: nowrap; }   /* 6 tabs: no wrap */

@media (max-width: 360px) { .vf-tab { font-size: 0.62rem; } }



.vf-tab {

    flex: 1 1 0; min-width: 0;

    display: flex; flex-direction: column; align-items: center; justify-content: flex-end;

    gap: 3px; padding: 4px 2px;

    color: var(--vf-text-muted); text-decoration: none;

    font-size: 0.68rem; font-weight: 600; letter-spacing: 0.01em; line-height: 1;

    border-radius: 12px; -webkit-tap-highlight-color: transparent;

    transition: color var(--vf-transition), transform var(--vf-transition);

}

.vf-tab svg {

    width: 24px; height: 24px; stroke-width: 1.9;

    shape-rendering: geometricPrecision;      /* crisp vector edges */

}

.vf-tab span:last-child { transform: translateZ(0); }   /* sharper text on mobile */

.vf-tab:active { transform: scale(0.93); }

.vf-tab:hover { color: var(--vf-green); }

.vf-tab.active { color: var(--vf-green); }

.vf-tab.active svg { stroke-width: 2.3; }



/* Raised centre "Sell" action */

.vf-tab-sell { color: var(--vf-green-dark); }

.vf-tab-sell .vf-sell-btn {

    width: 52px; height: 52px; margin-top: -20px; border-radius: 50%;

    display: flex; align-items: center; justify-content: center;

    background: linear-gradient(135deg, var(--vf-green) 0%, var(--vf-green-dark) 100%);

    box-shadow: 0 6px 16px rgba(26, 107, 60, 0.42), 0 0 0 4px var(--vf-white);

    transition: transform var(--vf-transition), box-shadow var(--vf-transition);

}

.vf-tab-sell .vf-sell-btn svg { width: 26px; height: 26px; stroke: #fff; stroke-width: 2.6; }

.vf-tab-sell:active .vf-sell-btn { transform: scale(0.92); box-shadow: 0 3px 10px rgba(26,107,60,0.4), 0 0 0 4px var(--vf-white); }



/* Unread badge on the Messages tab */

.vf-icon-wrap { position: relative; display: inline-flex; }

.vf-icon-wrap .vf-badge {

    position: absolute; top: -5px; right: -8px;

    min-width: 16px; height: 16px; padding: 0 4px;

    display: inline-flex; align-items: center; justify-content: center;

    font-size: 0.6rem; font-weight: 800; line-height: 1; color: #fff;

    background: #e02424; border: 2px solid var(--vf-white); border-radius: 999px;

}





/* ==========================================================================

   Mobile top-right: notification bell / auth buttons (replaces hamburger)

   ========================================================================== */

.vf-topbell {

    position: relative; display: inline-flex; align-items: center; justify-content: center;

    width: 42px; height: 42px; border-radius: 12px;

    color: #fff; font-size: 1.25rem; text-decoration: none;

    transition: background var(--vf-transition);

}

.vf-topbell:hover, .vf-topbell:focus { background: rgba(255,255,255,0.12); color: #fff; }

.vf-topbell:active { transform: scale(0.94); }

.vf-topbell-badge {

    position: absolute; top: 3px; right: 1px;

    min-width: 16px; height: 16px; padding: 0 4px;

    display: inline-flex; align-items: center; justify-content: center;

    font-size: 0.6rem; font-weight: 800; line-height: 1; color: #fff;

    background: #e02424; border: 2px solid var(--vf-green-dark); border-radius: 999px;

}

.vf-topauth { display: flex; align-items: center; gap: 0.5rem; }

.vf-topauth-btn {

    font-size: 0.82rem; font-weight: 700; text-decoration: none;

    padding: 0.42rem 0.85rem; border-radius: 10px; white-space: nowrap;

    transition: background var(--vf-transition), filter var(--vf-transition);

}

.vf-topauth-btn.login { color: #fff; border: 1px solid rgba(255,255,255,0.55); }

.vf-topauth-btn.login:hover { background: rgba(255,255,255,0.14); color: #fff; }

.vf-topauth-btn.signup { color: var(--vf-green-dark); background: var(--vf-gold); }

.vf-topauth-btn.signup:hover { filter: brightness(1.06); color: var(--vf-green-dark); }

/* ===================================================================

   Publishing Hub (Phase A) — premium card chooser

   =================================================================== */

.pub-wrap { max-width: 1040px; margin: 0 auto; padding: 2.5rem 1rem 4rem; }

.pub-head { text-align: center; margin-bottom: 2.25rem; }

.pub-head h1 {

    font-size: clamp(1.6rem, 3.5vw, 2.4rem); font-weight: 800;

    color: var(--vf-green-dark); letter-spacing: -0.02em; margin-bottom: .5rem;

}

.pub-head p { color: var(--vf-text-muted); font-size: 1.05rem; max-width: 620px; margin: 0 auto; }



.pub-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1.5rem; }

@media (max-width: 720px) { .pub-grid { grid-template-columns: 1fr; } }



.pub-card {

    position: relative; display: flex; flex-direction: column;

    background: var(--vf-white); border: 1px solid var(--vf-border);

    border-radius: var(--vf-radius-lg); overflow: hidden;

    box-shadow: var(--vf-shadow-sm); text-decoration: none; color: inherit;

    transition: transform .28s cubic-bezier(.2,.7,.2,1), box-shadow .28s, border-color .28s;

}

.pub-card:hover {

    transform: translateY(-6px);

    box-shadow: 0 18px 40px rgba(16,45,30,0.16);

    border-color: var(--vf-green);

}

.pub-card.is-soon { opacity: .96; }



.pub-illus {

    position: relative; height: 168px; display: flex; align-items: center; justify-content: center;

    background: linear-gradient(135deg, var(--vf-green-dark), var(--vf-green));

    overflow: hidden;

}

.pub-illus.alt   { background: linear-gradient(135deg, #0f2744, #1e4d73); }

.pub-illus.event { background: linear-gradient(135deg, #7c2d12, var(--vf-gold)); }

.pub-illus.job   { background: linear-gradient(135deg, #164e3b, #2d8653); }

.pub-illus::after {

    content: ""; position: absolute; inset: 0;

    background: radial-gradient(120% 120% at 15% 10%, rgba(255,255,255,.18), transparent 45%);

}

.pub-illus i { font-size: 3.4rem; color: rgba(255,255,255,.95); z-index: 1;

    transition: transform .35s cubic-bezier(.2,.7,.2,1); }

.pub-card:hover .pub-illus i { transform: scale(1.12) rotate(-3deg); }



.pub-body { padding: 1.35rem 1.4rem 1.5rem; display: flex; flex-direction: column; gap: .45rem; flex: 1; }

.pub-body h3 { font-size: 1.22rem; font-weight: 700; color: var(--vf-text); margin: 0; }

.pub-body p  { color: var(--vf-text-muted); font-size: .95rem; margin: 0; line-height: 1.5; flex: 1; }



.pub-cta {

    margin-top: .9rem; align-self: flex-start;

    display: inline-flex; align-items: center; gap: .5rem;

    padding: .6rem 1.1rem; border-radius: var(--vf-radius); font-weight: 600; font-size: .95rem;

    background: var(--vf-green); color: #fff; transition: background .2s, gap .2s;

}

.pub-card:hover .pub-cta { background: var(--vf-green-dark); gap: .8rem; }

.pub-cta.ghost { background: var(--vf-green-light); color: var(--vf-green-dark); }



.pub-badge {

    position: absolute; top: 14px; right: 14px; z-index: 2;

    background: var(--vf-gold); color: #3a2a00; font-weight: 800; font-size: .72rem;

    letter-spacing: .04em; padding: .32rem .6rem; border-radius: 999px;

    box-shadow: 0 4px 10px rgba(245,158,11,.4);

}

.pub-soon-tag {

    position: absolute; top: 14px; left: 14px; z-index: 2;

    background: rgba(255,255,255,.9); color: var(--vf-text-muted);

    font-weight: 700; font-size: .68rem; letter-spacing: .05em; text-transform: uppercase;

    padding: .28rem .55rem; border-radius: 999px;

}



.pub-back { display: inline-flex; align-items: center; gap: .4rem; color: var(--vf-text-muted);

    text-decoration: none; font-size: .92rem; margin-bottom: 1rem; }

.pub-back:hover { color: var(--vf-green-dark); }



/* bundle count selector */

.pub-bundle-panel { max-width: 520px; margin: 1.5rem auto 0; background: var(--vf-white);

    border: 1px solid var(--vf-border); border-radius: var(--vf-radius-lg); padding: 1.75rem;

    box-shadow: var(--vf-shadow-sm); }

.pub-bundle-panel label { font-weight: 600; color: var(--vf-text); display: block; margin-bottom: .5rem; }

.pub-count-select { width: 100%; padding: .7rem .9rem; border: 1px solid var(--vf-border);

    border-radius: var(--vf-radius); font-size: 1.05rem; }



/* ===================================================================

   Reusable auto-sliding carousel (hub + homepage promos)

   =================================================================== */

.vf-carousel { position: relative; overflow: hidden; cursor: grab; }

.vf-carousel.is-dragging { cursor: grabbing; }

.vf-carousel.is-dragging, .vf-carousel.is-dragging * { user-select: none; }

.vf-track { display: flex; transition: transform .55s cubic-bezier(.22,.61,.36,1);

    will-change: transform; touch-action: pan-y; }

.vf-slide { flex: 0 0 50%; max-width: 50%; padding: 0 .6rem; }   /* gap via padding (border-box) */

.vf-slide > .pub-card { width: 100%; height: 100%; }

@media (max-width: 559px) { .vf-slide { flex: 0 0 100% !important; max-width: 100% !important; } }

.vf-dots { display: flex; justify-content: center; gap: .5rem; margin-top: 1.4rem; }

.vf-dot { width: 9px; height: 9px; border-radius: 999px; border: 0; padding: 0;

    background: rgba(0,0,0,.18); cursor: pointer; transition: all .25s; }

.vf-dot.active { background: var(--vf-gold); width: 26px; }



/* homepage promo cards use a taller image banner */

.vf-promo .pub-illus { height: 150px; }

.vf-promo-section { padding: 1.5rem 0 .5rem; }

.vf-promo-section .pub-card { min-height: 100%; }



/* ===================================================================

   Split hero + photo cards (homepage) — matches promo mockup

   =================================================================== */

.vf-hero-split { padding-bottom: 2.5rem; }

.vf-hero-grid { display: grid; grid-template-columns: 1fr; gap: 2rem; align-items: center; }

@media (min-width: 992px) { .vf-hero-grid { grid-template-columns: .85fr 1.5fr; } }



.vf-hero-copy h1 { font-size: clamp(2rem, 4.5vw, 3.2rem); font-weight: 800; line-height: 1.05;

    color: #fff; margin-bottom: .75rem; white-space: normal; }

.vf-hero-copy .hero-accent { color: var(--vf-gold); display: block; }

.vf-hero-copy .lead { color: rgba(255,255,255,.9); margin-bottom: 1.25rem; }



/* photo card */

.vf-photo-card {

    position: relative; display: block; height: 340px; border-radius: var(--vf-radius-lg);

    overflow: hidden; color: #fff; text-decoration: none;

    background-size: cover; background-position: center; background-repeat: no-repeat;

    box-shadow: 0 10px 26px rgba(0,0,0,.28);

    transition: transform .3s cubic-bezier(.2,.7,.2,1), box-shadow .3s;

}

.vf-photo-card:hover { transform: translateY(-6px); box-shadow: 0 20px 44px rgba(0,0,0,.4); }

/* layered background: dark overlay (top) + photo (--photo) + brand gradient fallback (bottom) */

.vf-photo-card.pc-market  { background-image: linear-gradient(165deg, rgba(20,83,45,.15) 0%, rgba(6,28,16,.92) 100%), var(--photo, none), radial-gradient(120% 90% at 20% 12%, #2f9e5f 0%, #14532d 46%, #08301b 100%); }

.vf-photo-card.pc-event   { background-image: linear-gradient(165deg, rgba(124,45,18,.15) 0%, rgba(30,10,4,.92) 100%), var(--photo, none), radial-gradient(120% 90% at 20% 12%, #f59e0b 0%, #b45309 38%, #431407 100%); }

.vf-photo-card.pc-charter { background-image: linear-gradient(165deg, rgba(15,39,68,.15) 0%, rgba(6,18,34,.92) 100%), var(--photo, none), radial-gradient(120% 90% at 20% 12%, #2f6fa8 0%, #1e4d73 42%, #0a1c33 100%); }

.vf-photo-card.pc-job     { background-image: linear-gradient(165deg, rgba(22,78,59,.15) 0%, rgba(6,28,16,.92) 100%), var(--photo, none), radial-gradient(120% 90% at 20% 12%, #3fb27a 0%, #16704b 44%, #08301b 100%); }



.vf-photo-badge {

    position: absolute; top: 1.1rem; left: 1.1rem;

    width: 52px; height: 52px; border-radius: 50%; background: var(--vf-green);

    display: flex; align-items: center; justify-content: center;

    font-size: 1.35rem; color: #fff; box-shadow: 0 4px 14px rgba(0,0,0,.35); z-index: 1;

}

.vf-photo-body { position: absolute; left: 0; right: 0; bottom: 0; padding: 1.2rem 1.25rem 1.4rem; z-index: 1; }

.vf-photo-body h3 { font-size: 1.35rem; font-weight: 800; line-height: 1.1; margin: 0; }

.vf-photo-underline { width: 44px; height: 4px; background: var(--vf-gold); border-radius: 2px; margin: .55rem 0 .7rem; }

.vf-photo-body p { font-size: .92rem; opacity: .93; margin: 0 0 1rem; }

.vf-photo-cta {

    display: inline-flex; align-items: center; gap: .5rem;

    background: var(--vf-gold); color: #3a2a00; font-weight: 700; font-size: .92rem;

    padding: .55rem 1.05rem; border-radius: 999px; transition: gap .2s, filter .2s;

}

.vf-photo-card:hover .vf-photo-cta { gap: .8rem; filter: brightness(1.05); }



/* ===================================================================

   Hero — pixel-spec refinement (container, type, cards to exact sizes)

   =================================================================== */

.vf-hero.vf-hero-split { max-width: 1440px; margin: 0 auto; min-height: 640px;

    padding: 70px 55px; display: flex; align-items: center; }

.vf-hero.vf-hero-split > .container { max-width: 100%; padding: 0; width: 100%; }

.vf-hero-split .vf-hero-grid { grid-template-columns: 42% 58%; gap: 42px; align-items: center; }



.vf-hero-copy h1 { font-size: 72px; font-weight: 900; letter-spacing: -2px; line-height: .95; margin-bottom: 1.1rem; }

.vf-hero-copy .lead { font-size: 22px; line-height: 1.6; max-width: 520px; color: rgba(255,255,255,.88); margin-bottom: 1.5rem; }

.vf-hero-split .vf-hero-search .form-control,

.vf-hero-split .vf-hero-search .form-select { height: 64px; border-radius: 14px; }

.vf-hero-split .vf-hero-search-btn { min-width: 125px; border-radius: 14px; }



/* feature panels to spec */

.vf-photo-card { height: 455px; border-radius: 22px; border: 1px solid rgba(255,255,255,.08);

    background-color: #14532D; box-shadow: 0 18px 45px rgba(0,0,0,.28); }

.vf-photo-badge { width: 64px; height: 64px; font-size: 1.6rem; top: 1rem; left: 1rem; }

.vf-photo-body { padding: 20px; }

.vf-photo-body h3 { font-size: 24px; font-weight: 800; line-height: 1.12; }

.vf-photo-underline { width: 56px; height: 4px; margin: .6rem 0 .75rem; }

.vf-photo-body p { font-size: 17px; opacity: .88; margin-bottom: 1rem; }

.vf-photo-cta { height: 54px; width: 100%; justify-content: center; font-size: 18px; font-weight: 700; border-radius: 999px; }



@media (max-width: 1200px) { .vf-hero-copy h1 { font-size: 58px; } }

@media (max-width: 991px) {

    .vf-hero.vf-hero-split { padding: 44px 22px; min-height: 0; }

    .vf-hero-split .vf-hero-grid { grid-template-columns: 1fr; gap: 26px; }

    .vf-photo-card { height: 430px; }

}

@media (max-width: 560px) {

    .vf-hero-copy h1 { font-size: 42px; letter-spacing: -1px; }

    .vf-hero-copy .lead { font-size: 18px; }

    .vf-photo-card { height: 360px; }

}



/* ===================================================================

   Hero 2x2 image-led "destination" cards  (replaces the card carousel)

   =================================================================== */

.vf-hero-split .vf-hero-grid { grid-template-columns: 1fr; gap: 34px; align-items: center; }

@media (min-width: 992px) { .vf-hero-split .vf-hero-grid { grid-template-columns: 40% 60%; gap: 44px; } }



.vf-hero-cards-2x2 { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }

@media (max-width: 991px) { .vf-hero-cards-2x2 { max-width: 680px; margin: 0 auto; width: 100%; } }



.vf-dcard {

    position: relative; display: block; height: 300px; border-radius: 20px;

    overflow: hidden; text-decoration: none; color: #fff; isolation: isolate;

    box-shadow: 0 16px 40px rgba(0,0,0,.3);

    transition: transform .35s cubic-bezier(.2,.7,.2,1), box-shadow .35s;

}

.vf-dcard::before {                 /* image layer + gradient fallback */

    content: ""; position: absolute; inset: 0; z-index: -2;

    background-size: cover; background-position: center; background-repeat: no-repeat;

    transition: transform .5s cubic-bezier(.2,.7,.2,1);

}

.vf-dcard::after {                  /* legibility overlay */

    content: ""; position: absolute; inset: 0; z-index: -1;

    background: linear-gradient(180deg, rgba(0,0,0,.05) 26%, rgba(6,28,16,.86) 100%);

}

.vf-dcard:hover { transform: translateY(-6px); box-shadow: 0 26px 60px rgba(0,0,0,.45); }

.vf-dcard:hover::before { transform: scale(1.06); }



.vf-dcard.pc-market::before  { background-image: var(--photo, none), radial-gradient(120% 90% at 25% 15%, #2f9e5f 0%, #14532d 46%, #08301b 100%); }

.vf-dcard.pc-event::before   { background-image: var(--photo, none), radial-gradient(120% 90% at 25% 15%, #f59e0b 0%, #b45309 38%, #431407 100%); }

.vf-dcard.pc-charter::before { background-image: var(--photo, none), radial-gradient(120% 90% at 25% 15%, #2f6fa8 0%, #1e4d73 42%, #0a1c33 100%); }

.vf-dcard.pc-job::before     { background-image: var(--photo, none), radial-gradient(120% 90% at 25% 15%, #3fb27a 0%, #16704b 44%, #08301b 100%); }



.vf-dcard-badge {

    position: absolute; top: 16px; left: 16px; z-index: 1;

    width: 52px; height: 52px; border-radius: 50%; background: var(--vf-green);

    display: flex; align-items: center; justify-content: center;

    font-size: 1.35rem; color: #fff; box-shadow: 0 4px 14px rgba(0,0,0,.35);

}

.vf-dcard-body { position: absolute; left: 0; right: 0; bottom: 0; z-index: 1; padding: 20px; }

.vf-dcard-body h3 { font-size: 1.5rem; font-weight: 800; line-height: 1.1; margin: 0; }

.vf-dcard-rule { display: block; width: 48px; height: 4px; background: var(--vf-gold); border-radius: 2px; margin: .5rem 0 .65rem; }

.vf-dcard-body p { font-size: 1rem; line-height: 1.45; opacity: .92; margin: 0 0 .95rem; }

.vf-dcard-cta {

    display: inline-flex; align-items: center; gap: .5rem;

    background: var(--vf-gold); color: #3a2a00; font-weight: 700; font-size: .95rem;

    padding: .55rem 1.05rem; border-radius: 999px; transition: gap .2s, filter .2s;

}

.vf-dcard:hover .vf-dcard-cta { gap: .8rem; filter: brightness(1.05); }



@media (max-width: 1200px) { .vf-dcard { height: 268px; } .vf-dcard-body h3 { font-size: 1.3rem; } }

@media (max-width: 991px)  { .vf-dcard { height: 300px; } }

@media (max-width: 560px)  {

    .vf-hero-cards-2x2 { gap: 12px; }

    .vf-dcard { height: 200px; }

    .vf-dcard-body { padding: 14px; }

    .vf-dcard-body h3 { font-size: 1.02rem; }

    .vf-dcard-rule { margin: .35rem 0 .45rem; }

    .vf-dcard-body p { display: none; }

    .vf-dcard-badge { width: 40px; height: 40px; font-size: 1rem; top: 12px; left: 12px; }

    .vf-dcard-cta { padding: .4rem .8rem; font-size: .82rem; }

}



/* ===================================================================

   Homepage listing cards — vf-lc (matches shop page sh-card design)

   4 columns desktop/tablet · 2 columns mobile

   =================================================================== */

.vf-listing-grid {

    column-count: 4;

    column-gap: 1rem;

}

.vf-listing-grid > .vf-lc {

    break-inside: avoid;

    -webkit-column-break-inside: avoid;

    page-break-inside: avoid;

    margin-bottom: 1rem;

    width: 100%;

    /* Green / gold alternating edge on every device */

    border: 1.5px solid var(--vf-green);

}

.vf-listing-grid > .vf-lc:nth-child(even) { border-color: var(--vf-gold); }

@media (max-width: 991px) { .vf-listing-grid { column-count: 3; } }

@media (max-width: 599px)  {

    /* Pull the grid a little toward the screen edges so cards (and their

       images) are wider on phones. Stays within the container padding. */

    .vf-listing-grid { column-count: 2; column-gap: .5rem; margin-left: -.5rem; margin-right: -.5rem; }

    .vf-lc-name { font-size: .82rem; -webkit-line-clamp: 2; }

    .vf-listing-grid > .vf-lc { margin-bottom: .5rem; }

    /* Taller image on phones so listings read bigger */

    .vf-lc-media { aspect-ratio: 4 / 5; }

    /* Mobile: show a single (random) attribute so the card stays compact and

       the image reads larger. Desktop/tablet still show up to two. */

    .vf-lc-attrs .vf-lc-attr:nth-child(n+2) { display: none; }

}



.vf-lc {

    background: var(--vf-white);

    border: 1px solid var(--vf-border);

    border-radius: var(--vf-radius-lg);

    overflow: hidden;

    box-shadow: var(--vf-shadow-sm);

    display: flex;

    flex-direction: column;

    transition: transform var(--vf-transition), box-shadow var(--vf-transition);

}

.vf-lc:hover {

    transform: translateY(-4px);

    box-shadow: 0 12px 32px rgba(0,0,0,.13);

}



/* Image */

.vf-lc-media {

    aspect-ratio: 4/3;

    background: var(--vf-green-light);

    position: relative;

    overflow: hidden;

}

.vf-lc-media img {

    width: 100%; height: 100%;

    object-fit: cover; display: block;

    transition: transform .4s ease;

}

.vf-lc:hover .vf-lc-media img { transform: scale(1.04); }

.vf-lc-ph {

    width: 100%; height: 100%;

    display: flex; align-items: center; justify-content: center;

    color: var(--vf-green); font-size: 2rem; opacity: .35;

}



/* Featured badge */

.vf-lc-featured {

    position: absolute; top: .55rem; left: .55rem;

    background: var(--vf-gold); color: #3a2a00;

    font-size: .7rem; font-weight: 700;

    padding: .22rem .6rem; border-radius: 999px;

    letter-spacing: .03em;

}



/* Rating badge (single gold star + average) top-right over the image */

.vf-lc-rating {

    position: absolute; top: .55rem; right: .55rem;

    display: inline-flex; align-items: center; gap: .25rem;

    background: rgba(255,255,255,.94); color: var(--vf-text);

    font-size: .78rem; font-weight: 800;

    padding: .2rem .5rem; border-radius: 999px;

    box-shadow: 0 1px 5px rgba(0,0,0,.18);

}

.vf-lc-rating i { color: var(--vf-gold); font-size: .74rem; }



/* Body */

.vf-lc-body {

    padding: .75rem .85rem .9rem;

    flex: 1; display: flex; flex-direction: column; gap: .3rem;

}

.vf-lc-cat {

    font-size: .68rem; font-weight: 700; letter-spacing: .04em;

    text-transform: uppercase; color: var(--vf-green);

}

.vf-lc-name {

    font-size: 0.9rem; font-weight: 600;

    color: var(--vf-text); margin: 0;

    display: -webkit-box; -webkit-line-clamp: 2;

    -webkit-box-orient: vertical; overflow: hidden;

}

.vf-lc-loc {

    font-size: .78rem; color: var(--vf-text-muted); margin: 0;

}

.vf-lc-loc i { color: var(--vf-green); }

.vf-lc-stars {

    color: var(--vf-gold); font-size: .72rem;

    display: flex; align-items: center; gap: .15rem;

}

.vf-lc-rating-val {

    color: var(--vf-text-muted); font-size: .72rem; margin-left: .25rem;

}



/* Footer strip */

.vf-lc-footer {

    margin-top: auto;

    padding-top: .6rem;

    display: flex; justify-content: space-between; align-items: center;

}

.vf-lc-price {

    font-size: 1.22rem; font-weight: 800; color: var(--vf-green-dark);

    letter-spacing: .02em; line-height: 1.15;

}



/* Tighter on very small screens */

@media (max-width: 380px) {

    .vf-lc-body { padding: .55rem .6rem .7rem; }

    .vf-lc-name { font-size: .86rem; }

    .vf-lc-btn  { padding: .22rem .5rem; font-size: .7rem; }

}



/* ===================================================================

   Clean homepage hero — headline + search only (destination cards removed)

   Full hero redesign comes later with photos.

   =================================================================== */

.vf-hero-headline {

    font-size: clamp(2rem, 5vw, 3.5rem);

    font-weight: 900;

    color: #fff;

    line-height: 1.05;

    margin-bottom: .5rem;

}

.vf-hero-sub {

    font-size: 1.1rem;

    color: rgba(255,255,255,.85);

    max-width: 540px;

    margin-bottom: 1.5rem;

}

/* === eBay-style top search: district BEFORE a narrow, round-ended search bar === */

.vf-hero-search--top { margin-bottom: 1.75rem; }



.vf-search-row {

    display: flex; align-items: center; flex-wrap: wrap; gap: .5rem;

}



/* District: eBay "Shop by category" style — plain two-line text + small caret, NOT a pill.

   Transparent native <select> overlays the text to open the dropdown / submit `district`. */

.vf-district {

    position: relative;

    display: inline-flex;

    align-items: center;

    gap: .28rem;

    flex: 0 0 auto;

    align-self: center;

    cursor: pointer;

    padding: 0 .15rem;

}

.vf-district-text {

    font-size: .74rem;

    font-weight: 600;

    line-height: 1.08;

    color: #fff;

    white-space: nowrap;

}

.vf-district-caret {

    font-size: .55rem;

    line-height: 1;

    color: #fff;

    opacity: .9;

}

.vf-district-native {

    position: absolute;

    inset: 0;

    width: 100%; height: 100%;

    margin: 0; padding: 0;

    border: 0; background: transparent;

    opacity: 0; cursor: pointer;

    -webkit-appearance: none; appearance: none;

}

.vf-district-native option { color: var(--vf-text); background: #fff; }



/* Narrow search capsule with very round ends (eBay-like) */

.vf-search-bar { max-width: 380px; flex: 1 1 260px; }

.vf-search-bar .form-control {

    border-radius: 999px 0 0 999px !important;

    padding-left: 1.25rem;

}

.vf-hero-search--top .vf-hero-search-btn {

    border-radius: 0 999px 999px 0 !important;

    min-width: 104px;

}



/* Mobile: mirror eBay's DESKTOP search row — "Shop by district" + bar inline on ONE line.

   (Desktop rules above are left untouched.) */

@media (max-width: 575.98px) {

    .vf-search-row { flex-wrap: nowrap; gap: .45rem; align-items: center; }

    .vf-district-text { font-size: .7rem; }

    .vf-search-bar { flex: 1 1 auto; max-width: none; min-width: 0; }

    .vf-search-bar .form-control { min-width: 0; padding-left: 1rem; font-size: .85rem; }

    .vf-hero-search--top .vf-hero-search-btn {

        min-width: 0; padding: .5rem .8rem; font-size: .85rem; white-space: nowrap;

    }

}



/* Listing card attributes + blurb */

.vf-lc-attrs {

    display: flex; flex-wrap: wrap; gap: .3rem .5rem;

    margin: .2rem 0;

}

.vf-lc-attr {

    font-size: .72rem; color: var(--vf-text-muted);

    background: var(--vf-green-light);

    padding: .18rem .5rem; border-radius: .35rem;

    white-space: nowrap;

}

.vf-lc-attr-label { font-weight: 700; color: var(--vf-text); }

.vf-lc-blurb {

    font-size: .78rem; color: var(--vf-text-muted); margin: .1rem 0;

    display: -webkit-box; -webkit-line-clamp: 2;

    -webkit-box-orient: vertical; overflow: hidden;

}

/* Footer strip — price only now, no View button */

.vf-lc-footer { border-top: 1px solid var(--vf-border); padding-top: .5rem; margin-top: auto; }



/* === Desktop/tablet: search bar lifted into the top navbar (between logo & nav) === */

.vf-navsearch { max-width: 440px; width: 100%; min-width: 0; }

.vf-navsearch .vf-search-row { width: 100%; gap: .5rem; }

.vf-navsearch .vf-search-bar { max-width: 340px; flex: 1 1 200px; min-width: 0; }

.vf-navsearch .form-control {

    border: 2px solid rgba(255,255,255,0.25);

    background: rgba(255,255,255,0.12);

    color: #fff;

    border-radius: 999px 0 0 999px !important;

    padding: .45rem 1rem .45rem 1.15rem;

    font-size: .9rem;

}

.vf-navsearch .form-control::placeholder { color: rgba(255,255,255,0.6); }

.vf-navsearch .form-control:focus {

    background: rgba(255,255,255,0.2);

    border-color: var(--vf-gold);

    box-shadow: 0 0 0 3px rgba(245,158,11,0.25);

    color: #fff;

}

.vf-navsearch .vf-hero-search-btn {

    border-radius: 0 999px 999px 0 !important;

    padding: .45rem 1.1rem;

    min-width: 90px;

}

.vf-navsearch .vf-district-text { font-size: .68rem; }

.vf-navsearch .vf-district-caret { font-size: .5rem; }

/* =========================================================================
   Shop by Category — desktop/tablet mega-menu
   ========================================================================= */
.vf-megacat-nav { position: static; }

.vf-megacat-trigger {
    display: inline-flex; align-items: center;
    background: transparent; border: 0; cursor: pointer; font: inherit;
    color: #fff; padding: .45rem .75rem; border-radius: var(--vf-radius);
    transition: background var(--vf-transition);
}
.vf-megacat-trigger:hover,
.vf-megacat-trigger[aria-expanded="true"] { background: rgba(255,255,255,.14); }
.vf-megacat-caret { font-size: .7rem; transition: transform var(--vf-transition); }
.vf-megacat-trigger[aria-expanded="true"] .vf-megacat-caret { transform: rotate(180deg); }

.vf-megamenu {
    position: absolute; top: 100%; left: 50%; right: auto; transform: translateX(-50%); z-index: 1050;
    width: max-content; max-width: 96vw;
    background: rgba(255, 255, 255, 0.85);
    -webkit-backdrop-filter: blur(10px) saturate(1.05);
    backdrop-filter: blur(10px) saturate(1.05);
    border: 1px solid var(--vf-border);
    border-top: 3px solid var(--vf-gold);
    border-radius: 0 0 var(--vf-radius-lg) var(--vf-radius-lg);
    box-shadow: var(--vf-shadow-lg);
    overflow: hidden;
    animation: vfMegaIn .16s ease;
}
.vf-megamenu[hidden] { display: none; }
@keyframes vfMegaIn { from { opacity: 0; transform: translateX(-50%) translateY(-6px); } to { opacity: 1; transform: translateX(-50%) translateY(0); } }

.vf-megamenu-inner {
    display: grid; grid-template-columns: 260px 700px;
    min-height: 0;
}

.vf-megamenu-cats {
    list-style: none; margin: 0; padding: .5rem;
    border-right: 1px solid var(--vf-border);
    background: transparent;
    max-height: 460px; overflow-y: auto;
}
.vf-megacat-item {
    display: flex; align-items: center; gap: .65rem;
    padding: .6rem .75rem; border-radius: var(--vf-radius);
    color: var(--vf-text); font-weight: 500; font-size: .92rem;
    transition: background var(--vf-transition), color var(--vf-transition);
}
.vf-megacat-item > i:first-child { width: 1.15rem; text-align: center; color: var(--vf-green); }
.vf-megacat-label { flex: 1 1 auto; }
.vf-megacat-chev { font-size: .7rem; color: var(--vf-text-muted); opacity: 0; transition: opacity var(--vf-transition); }
.vf-megacat-item:hover,
.vf-megacat-item:focus-visible,
.vf-megacat-item.is-active { background: var(--vf-green-light); color: var(--vf-green-dark); outline: none; }
.vf-megacat-item:focus-visible { box-shadow: 0 0 0 2px var(--vf-green); }
.vf-megacat-item.is-active { font-weight: 700; }
.vf-megacat-item.is-active > i:first-child { color: var(--vf-green-dark); }
.vf-megacat-item:hover .vf-megacat-chev,
.vf-megacat-item.is-active .vf-megacat-chev { opacity: 1; }

.vf-megamenu-subs { padding: 1.25rem 1.5rem; position: relative; }
.vf-megasub { display: none; }
.vf-megasub.is-active { display: block; }
.vf-megasub-head {
    font-size: 1.05rem; font-weight: 700; color: var(--vf-green-dark);
    margin-bottom: .9rem; padding-bottom: .55rem; border-bottom: 1px solid var(--vf-border);
}
.vf-megasub-head i { color: var(--vf-gold); margin-right: .35rem; }
.vf-megasub-list { list-style: none; margin: 0 0 1rem; padding: 0; columns: 3; column-gap: 1.5rem; }
.vf-megasub-list li { break-inside: avoid; margin-bottom: .5rem; }
.vf-megasub-list a { color: var(--vf-text); font-size: .9rem; display: inline-block; padding: .15rem 0; transition: color var(--vf-transition); }
.vf-megasub-list a:hover { color: var(--vf-green); text-decoration: underline; }
.vf-megasub-empty { color: var(--vf-text-muted); font-size: .9rem; max-width: 48ch; }
.vf-megasub-all { display: inline-flex; align-items: center; gap: .4rem; font-weight: 600; color: var(--vf-green); font-size: .9rem; }
.vf-megasub-all:hover { color: var(--vf-green-dark); }
.vf-megasub-all i { transition: transform var(--vf-transition); }
.vf-megasub-all:hover i { transform: translateX(3px); }

.vf-megamenu-foot { border-top: 1px solid var(--vf-border); background: transparent; }
.vf-megamenu-viewall {
    display: flex; align-items: center; justify-content: center; gap: .45rem;
    max-width: 1200px; margin: 0 auto; padding: .8rem 1rem;
    font-weight: 700; color: var(--vf-green-dark);
}
.vf-megamenu-viewall:hover { color: var(--vf-green); background: var(--vf-green-light); }

@media (max-width: 991.98px) { .vf-megamenu { display: none !important; } }

/* =========================================================================
   Shop by District — dropdown panel
   ========================================================================= */
.vf-megadist-nav { position: static; }
.vf-megadist .vf-megadist-inner { width: 700px; max-width: 96vw; padding: 1.25rem 1.5rem; }
.vf-megadist-search { position: relative; margin-bottom: 1rem; max-width: 360px; }
.vf-megadist-search > i { position: absolute; left: .8rem; top: 50%; transform: translateY(-50%); color: var(--vf-text-muted); font-size: .85rem; }
.vf-megadist-input {
    width: 100%; padding: .55rem .8rem .55rem 2.1rem;
    border: 1px solid var(--vf-border); border-radius: var(--vf-radius);
    font-size: .92rem; background: var(--vf-surface);
}
.vf-megadist-input:focus { outline: none; border-color: var(--vf-green); box-shadow: 0 0 0 3px var(--vf-green-light); background: #fff; }
.vf-megadist-grid {
    list-style: none; margin: 0; padding: 0;
    display: grid; grid-template-columns: repeat(3, 1fr); gap: .35rem .75rem;
    max-height: 60vh; overflow-y: auto;
}
.vf-megadist-item {
    display: flex; align-items: center; gap: .55rem;
    padding: .5rem .65rem; border-radius: var(--vf-radius);
    color: var(--vf-text); font-size: .9rem;
    transition: background var(--vf-transition), color var(--vf-transition);
}
.vf-megadist-item > i { color: var(--vf-green); font-size: .8rem; }
.vf-megadist-item:hover, .vf-megadist-item:focus-visible { background: var(--vf-green-light); color: var(--vf-green-dark); outline: none; }
.vf-megadist-empty { color: var(--vf-text-muted); font-size: .9rem; margin: .5rem 0 0; }
@media (max-width: 1199.98px) { .vf-megadist-grid { grid-template-columns: repeat(2, 1fr); } }

/* =========================================================================
   Mobile header navigation — Shop by Category / District (collapsed menu)
   ========================================================================= */
.vf-mnav { padding: .25rem 0 .5rem; border-bottom: 1px solid rgba(255,255,255,.15); margin-bottom: .5rem; }
.vf-mnav-toggle, .vf-mnav-cat, .vf-mnav-sub, .vf-mnav-back {
    display: flex; align-items: center; justify-content: space-between; gap: .5rem;
    width: 100%; text-align: left; background: transparent; border: 0;
    color: #fff; font: inherit; padding: .7rem .25rem; cursor: pointer;
    text-decoration: none;
}
.vf-mnav-toggle { font-weight: 700; }
.vf-mnav-toggle .fa-chevron-down { transition: transform var(--vf-transition); }
.vf-mnav-toggle.is-open .fa-chevron-down { transform: rotate(180deg); }
.vf-mnav-panel { background: rgba(0,0,0,.14); border-radius: var(--vf-radius); padding: .25rem .5rem; margin-bottom: .5rem; }
.vf-mnav-panel[hidden] { display: none; }
.vf-mnav-screen { display: none; }
.vf-mnav-screen.is-active { display: block; }
.vf-mnav-cat { font-weight: 500; border-bottom: 1px solid rgba(255,255,255,.08); }
.vf-mnav-cat:last-child { border-bottom: 0; }
.vf-mnav-sub { color: rgba(255,255,255,.9); font-size: .92rem; justify-content: flex-start; padding: .55rem .25rem; border-bottom: 1px solid rgba(255,255,255,.06); }
.vf-mnav-sub:last-child { border-bottom: 0; }
.vf-mnav-toggle:hover, .vf-mnav-cat:hover, .vf-mnav-sub:hover, .vf-mnav-back:hover,
.vf-mnav-toggle:focus-visible, .vf-mnav-cat:focus-visible, .vf-mnav-sub:focus-visible, .vf-mnav-back:focus-visible {
    color: var(--vf-gold); outline: none;
}
.vf-mnav-back { font-weight: 600; color: var(--vf-gold); justify-content: flex-start; }
.vf-mnav-subhead { font-weight: 700; padding: .4rem .25rem; opacity: .85; text-transform: uppercase; font-size: .72rem; letter-spacing: .04em; }
.vf-mnav-search { position: relative; margin: .4rem 0; }
.vf-mnav-search > i { position: absolute; left: .6rem; top: 50%; transform: translateY(-50%); color: rgba(255,255,255,.6); font-size: .8rem; }
.vf-mnav-dsearch { width: 100%; padding: .5rem .6rem .5rem 1.9rem; border: 1px solid rgba(255,255,255,.25); border-radius: var(--vf-radius); background: rgba(255,255,255,.1); color: #fff; font-size: .9rem; }
.vf-mnav-dsearch::placeholder { color: rgba(255,255,255,.6); }
.vf-mnav-dsearch:focus { outline: none; border-color: var(--vf-gold); }
.vf-mnav-dlist { max-height: 45vh; overflow-y: auto; }

/* =========================================================================
   Secondary header bar — Shop by Category / District triggers
   ========================================================================= */
/* Let the sub-bar wrap onto its own full-width row inside the sticky navbar,
   while the top row (brand / search / nav) stays on a single line. */
.vf-navbar { flex-wrap: wrap; }
.vf-navbar > .container { flex-wrap: nowrap; }

.vf-subnav {
    flex: 0 0 100%; width: 100%;
    background: var(--vf-green-dark);
    border-top: 1px solid rgba(255,255,255,.10);
}
.vf-subnav-inner {
    max-width: 1200px; margin: 0 auto;
    display: flex; align-items: stretch; gap: .25rem; padding: 0 .75rem;
}
.vf-subnav-item { display: flex; }
.vf-subnav-trigger {
    display: inline-flex; align-items: center; gap: .5rem;
    background: transparent; border: 0; cursor: pointer; font: inherit;
    color: #fff; font-weight: 600; font-size: .95rem;
    padding: .7rem 1rem; border-bottom: 3px solid transparent;
    transition: background var(--vf-transition), border-color var(--vf-transition);
}
.vf-subnav-trigger:hover,
.vf-subnav-trigger[aria-expanded="true"] {
    background: rgba(255,255,255,.10); border-bottom-color: var(--vf-gold);
}
.vf-subnav-trigger .vf-megacat-caret { font-size: .7rem; transition: transform var(--vf-transition); }
.vf-subnav-trigger[aria-expanded="true"] .vf-megacat-caret { transform: rotate(180deg); }

/* =========================================================================
   Contact page channel cards
   ========================================================================= */
.vf-contact-card {
    display: flex; align-items: center; gap: .9rem;
    padding: 1rem 1.1rem; border: 1px solid var(--vf-border);
    border-radius: var(--vf-radius-lg); background: var(--vf-white);
    color: var(--vf-text); text-decoration: none; height: 100%;
    transition: box-shadow var(--vf-transition), transform var(--vf-transition), border-color var(--vf-transition);
}
.vf-contact-card:hover { box-shadow: var(--vf-shadow-lg); transform: translateY(-2px); border-color: var(--vf-green); color: var(--vf-text); }
.vf-contact-card > i { font-size: 1.5rem; color: var(--vf-green); width: 2rem; text-align: center; }
.vf-contact-label { display: block; font-size: .78rem; text-transform: uppercase; letter-spacing: .04em; color: var(--vf-text-muted); }
.vf-contact-value { display: block; font-weight: 600; }

/* =========================================================================
   PWA install banner
   ========================================================================= */
.vf-pwa-install {
    position: fixed; left: 10px; right: 10px;
    top: calc(70px + env(safe-area-inset-top, 0px));
    z-index: 1055; display: flex; align-items: center; gap: .75rem;
    background: #fff; border: 1px solid var(--vf-border); border-radius: 14px;
    box-shadow: 0 10px 34px rgba(16,24,40,.20); padding: .7rem .8rem;
    animation: vfPwaDrop .25s ease;
}
.vf-pwa-install[hidden] { display: none; }
@keyframes vfPwaDrop { from { opacity: 0; transform: translateY(-12px); } to { opacity: 1; transform: none; } }
@media (min-width: 992px) {
    .vf-pwa-install { left: auto; right: 16px; top: 76px; max-width: 380px; }
}
.vf-pwa-icon { width: 42px; height: 42px; border-radius: 10px; flex-shrink: 0; }
.vf-pwa-text { flex: 1; min-width: 0; line-height: 1.25; }
.vf-pwa-text strong { display: block; font-size: .92rem; color: var(--vf-text); }
.vf-pwa-sub { font-size: .78rem; color: var(--vf-text-muted); }
.vf-pwa-btn { flex-shrink: 0; background: var(--vf-green); color: #fff; border: 0;
    border-radius: 8px; padding: .5rem .95rem; font-weight: 700; font-size: .85rem; cursor: pointer; }
.vf-pwa-btn:hover { background: var(--vf-green-dark); }
.vf-pwa-close { flex-shrink: 0; background: transparent; border: 0; color: var(--vf-text-muted);
    font-size: 1.4rem; line-height: 1; cursor: pointer; padding: 0 .15rem; }