/* ============================================================
   MrVivazayi - Global Theme (modern refresh)
   Colors: Green #2E7D32 | Yellow #F9A825 | White | Light Gray
   ============================================================ */
@import url('https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&display=swap');
@import url('https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css');

:root {
  --green: #2E7D32;
  --green-dark: #1B5E20;
  --green-deep: #123F16;
  --green-light: #E8F5E9;
  --yellow: #F9A825;
  /* RGB triplets of the brand colours, so translucent surfaces (navbar glass, shadows,
     tinted borders) can be themed too. applyTheme() rewrites these at runtime. */
  --brand-rgb: 46, 125, 50;
  --brand-deep-rgb: 18, 63, 22;
  --accent-rgb: 249, 168, 37;
  --yellow-light: #FFF8E1;
  --gray-bg: #F6F7F5;
  --text: #22302A;
  --radius: 20px;
  --shadow-sm: 0 4px 18px rgba(var(--brand-deep-rgb), .07);
  --shadow-md: 0 14px 34px rgba(var(--brand-deep-rgb), .13);
}

/* Soft mesh backdrop on <html> so translucent (glass) surfaces have something to refract */
html {
  min-height: 100%;
  background:
    radial-gradient(900px 500px at 90% -10%, rgba(var(--accent-rgb), .13), transparent 60%),
    radial-gradient(800px 500px at -10% 110%, rgba(var(--brand-rgb), .16), transparent 55%),
    linear-gradient(160deg, #F5F8F4, #EDF4EC);
  background-attachment: fixed;
}
body {
  font-family: 'Plus Jakarta Sans', 'Segoe UI', Arial, sans-serif;
  color: var(--text);
  background: transparent;
  letter-spacing: .1px;
}
h1, h2, h3, h4, h5, h6 { font-family: 'Plus Jakarta Sans', 'Segoe UI', Arial, sans-serif; }

/* ---------- Buttons ---------- */
/* Every button is a pill with a consistent weight, smooth hover lift, and a
   crisp focus ring — so table action buttons (Track/Invoice/Cancel/Edit/Delete)
   all read as one coherent set regardless of their Bootstrap colour variant. */
.btn {
  --btn-lift: -2px;
  border-radius: 100px;
  font-weight: 600;
  transition: transform .18s ease, box-shadow .18s ease, background .18s ease, color .18s ease, border-color .18s ease;
}
.btn:hover { transform: translateY(var(--btn-lift)); }
.btn:active { transform: translateY(0) scale(.98); }
.btn:focus-visible { box-shadow: 0 0 0 .2rem rgba(var(--brand-rgb), .22); }
.btn-sm { padding: .3rem .95rem; border-width: 1.5px; }

/* Solid brand buttons */
.btn-green {
  background: linear-gradient(135deg, var(--green), var(--green-dark));
  color: #fff; border: none;
  box-shadow: 0 6px 16px rgba(var(--brand-rgb), .28);
}
.btn-green:hover { color: #fff; box-shadow: 0 10px 22px rgba(var(--brand-rgb), .38); }
.btn-yellow {
  background: linear-gradient(135deg, var(--yellow), var(--yellow));
  color: #212121; border: none; font-weight: 700;
  box-shadow: 0 6px 16px rgba(var(--accent-rgb), .35);
}
.btn-yellow:hover { background: linear-gradient(135deg, var(--yellow), var(--yellow)); color: #fff; box-shadow: 0 10px 22px rgba(var(--accent-rgb), .45); }

/* Outline set — 1.5px ring, fills with its colour + soft glow on hover */
.btn-outline-green { border: 1.5px solid var(--green); color: var(--green); background: transparent; }
.btn-outline-green:hover, .btn-outline-green:focus {
  background: var(--green); color: #fff; border-color: var(--green);
  box-shadow: 0 6px 16px rgba(var(--brand-rgb), .28);
}
.btn-outline-secondary {
  border: 1.5px solid #cfd6cf; color: #5a6b5c; background: transparent;
}
.btn-outline-secondary:hover, .btn-outline-secondary:focus {
  background: #5a6b5c; color: #fff; border-color: #5a6b5c;
  box-shadow: 0 6px 16px rgba(90, 107, 92, .25);
}
.btn-outline-danger {
  border: 1.5px solid #E57373; color: #D32F2F; background: transparent;
}
.btn-outline-danger:hover, .btn-outline-danger:focus {
  background: #D32F2F; color: #fff; border-color: #D32F2F;
  box-shadow: 0 6px 16px rgba(211, 47, 47, .26);
}
.btn-outline-dark {
  border: 1.5px solid #b8c2b9; color: #37474F; background: transparent;
}
.btn-outline-dark:hover, .btn-outline-dark:focus {
  background: #37474F; color: #fff; border-color: #37474F;
  box-shadow: 0 6px 16px rgba(55, 71, 79, .26);
}
.btn-outline-light:hover, .btn-outline-light:focus { box-shadow: 0 6px 16px rgba(0, 0, 0, .12); }

/* Solid danger / secondary (modals, cancel actions) */
.btn-danger {
  background: linear-gradient(135deg, #EF5350, #D32F2F); border: none; color: #fff;
  box-shadow: 0 6px 16px rgba(211, 47, 47, .26);
}
.btn-danger:hover { color: #fff; box-shadow: 0 10px 22px rgba(211, 47, 47, .36); }
.btn-secondary {
  background: linear-gradient(135deg, #78867a, #5a6b5c); border: none; color: #fff;
  box-shadow: 0 6px 16px rgba(90, 107, 92, .22);
}
.btn-secondary:hover { color: #fff; box-shadow: 0 10px 22px rgba(90, 107, 92, .3); }

/* Buttons that pair with an input inside an input-group keep a clean squared join */
.input-group > .btn { border-radius: 0 12px 12px 0; }
.input-group > .btn:not(:last-child) { border-radius: 0; }
.btn-link { text-decoration: none; }
.btn-link:hover { text-decoration: underline; }

.text-green { color: var(--green) !important; }
.text-yellow { color: var(--yellow) !important; }
.bg-green { background: var(--green) !important; }
.bg-green-light { background: var(--green-light) !important; }
.bg-gray { background: rgba(233, 240, 232, .45) !important; } /* translucent so the mesh backdrop shows through */

/* ---------- Navbar (floating glass pill) ---------- */
.navbar-fff {
  background: rgba(var(--brand-deep-rgb), .88);
  backdrop-filter: blur(16px) saturate(1.4);
  -webkit-backdrop-filter: blur(16px) saturate(1.4);
  margin: 10px 14px 0;
  border-radius: 28px;
  border: 1px solid rgba(255, 255, 255, .14);
  box-shadow: 0 10px 30px rgba(var(--brand-deep-rgb), .22), inset 0 1px 0 rgba(255, 255, 255, .16);
  top: 10px; /* keep the floating gap while sticky */
  /* Sit above other .sticky-top page content (Bootstrap gives both 1020, so a later-in-DOM
     card - e.g. the Order Summary on checkout/cart/products - would otherwise paint over
     the open Products mega-menu). Stays below modals (1050+), toasts and the idle overlay. */
  z-index: 1035;
}
.navbar-fff .navbar-brand { color: #fff; font-weight: 800; font-size: 1.35rem; letter-spacing: -.3px; }
@media (max-width: 575.98px) {
  .navbar-fff .navbar-brand { font-size: 1.15rem; }
  .navbar-fff .site-logo { height: 36px; }
}
.navbar-fff .nav-link { color: var(--green-light); font-weight: 500; border-radius: 100px; padding-left: 14px !important; padding-right: 14px !important; }
.navbar-fff .nav-link:hover { color: var(--yellow); }
.navbar-fff .nav-link.active { color: #fff; background: rgba(255, 255, 255, .14); }
.cart-badge {
  position: absolute; top: 0; right: -8px;
  background: var(--yellow); color: #212121;
  border-radius: 50%; font-size: .7rem; font-weight: 700;
  min-width: 18px; height: 18px; line-height: 18px; text-align: center;
}

/* ---------- Products mega-menu ---------- */
.mega-menu {
  border: 1px solid rgba(255, 255, 255, .6); border-radius: 18px;
  background: rgba(255, 255, 255, .94);
  backdrop-filter: blur(18px) saturate(1.4); -webkit-backdrop-filter: blur(18px) saturate(1.4);
  box-shadow: 0 20px 44px rgba(var(--brand-deep-rgb), .24) !important;
  min-width: 300px; margin-top: 10px; overflow: visible;
}
.mega-search .input-group { border: 1px solid rgba(var(--brand-rgb), .2); border-radius: 100px; overflow: hidden; }
.mega-search .input-group-text, .mega-search .form-control { border: none; background: #fff; }
.mega-search .form-control:focus { box-shadow: none; }
.mega-search .btn { border-radius: 0 100px 100px 0; }
.mega-body { padding: 6px; border-top: 1px solid rgba(0, 0, 0, .05); }
.mega-all {
  display: flex; align-items: center; font-weight: 600; color: var(--green);
  padding: 10px 12px; border-radius: 12px; text-decoration: none;
}
.mega-all:hover { background: var(--green-light); color: var(--green-dark); }
.mega-cat { position: relative; }
.mega-cat-link {
  display: flex; align-items: center; gap: 10px;
  padding: 10px 12px; border-radius: 12px; color: var(--text); text-decoration: none; font-weight: 500;
}
.mega-cat-link i:first-child { color: var(--green); font-size: 1.05rem; width: 20px; text-align: center; }
.mega-cat-link:hover { background: var(--green-light); color: var(--green-dark); }
.mega-count {
  background: var(--green-light); color: var(--green); font-weight: 700;
  font-size: .68rem; padding: 2px 9px; border-radius: 100px;
}
/* Opens to the LEFT of the category list — the Products menu sits on the right
   side of the page, so a right-opening flyout would clip off-screen. */
.mega-flyout {
  position: absolute; top: -6px; right: 100%; margin-right: 8px;
  width: 290px; padding: 12px;
  background: rgba(255, 255, 255, .97);
  backdrop-filter: blur(18px) saturate(1.4); -webkit-backdrop-filter: blur(18px) saturate(1.4);
  border: 1px solid rgba(255, 255, 255, .6); border-radius: 16px;
  box-shadow: 0 20px 44px rgba(var(--brand-deep-rgb), .22);
  opacity: 0; visibility: hidden; transform: translateX(6px);
  transition: opacity .18s ease, transform .18s ease, visibility .18s;
  z-index: 5;
}
.mega-cat:hover > .mega-flyout { opacity: 1; visibility: visible; transform: translateX(0); }
.mega-flyout-title { font-weight: 700; color: var(--green); padding: 2px 6px 8px; border-bottom: 1px solid rgba(0,0,0,.06); margin-bottom: 6px; }
.mega-flyout-list { max-height: 320px; overflow-y: auto; }
.mega-prod {
  display: flex; align-items: center; gap: 10px;
  padding: 7px 6px; border-radius: 10px; color: var(--text); text-decoration: none; font-size: .88rem;
}
.mega-prod img { width: 38px; height: 38px; object-fit: cover; border-radius: 8px; flex-shrink: 0; }
.mega-prod:hover { background: var(--green-light); }
.mega-price { font-weight: 700; color: var(--green); font-size: .82rem; white-space: nowrap; }
.mega-viewall {
  display: block; text-align: center; margin-top: 6px; padding: 8px;
  font-weight: 600; color: var(--green); border-radius: 10px; text-decoration: none; font-size: .85rem;
}
.mega-viewall:hover { background: var(--green); color: #fff; }
/* Desktop: open on hover */
@media (min-width: 992px) {
  .mega-nav:hover > .mega-menu { display: block; }
  .mega-menu { max-height: 78vh; overflow-y: auto; }
  /* Keep the hover-driven Products mega-menu and the click-driven account dropdown
     from ever being open at the same time (see wireNavbarDropdownConflict in app.js). */
  .navbar-nav.user-menu-open .mega-nav:hover > .mega-menu { display: none; }
}
/* Mobile: show inline inside the collapsed menu; flyouts become simple category links */
@media (max-width: 991.98px) {
  .mega-nav .mega-menu { display: block; position: static; border: none; box-shadow: none !important; background: transparent; backdrop-filter: none; margin: 0; min-width: 0; }
  .mega-nav .mega-search { padding: 8px 0 !important; }
  .mega-nav .mega-flyout { display: none; }
  .mega-nav .mega-cat-link, .mega-nav .mega-all { color: #E8F5E9; }
  .mega-nav .mega-cat-link:hover, .mega-nav .mega-all:hover { background: rgba(255,255,255,.12); color: #fff; }
  .mega-nav .mega-count { background: rgba(255,255,255,.16); color: #fff; }
}

/* ---------- Autocomplete search ---------- */
.ac-wrap { position: relative; }
.ac-input-group { border-radius: 100px; overflow: hidden; border: 1.5px solid rgba(var(--brand-rgb), .18); background: #fff; }
.ac-input-group:focus-within { border-color: var(--green); box-shadow: 0 0 0 .2rem rgba(var(--brand-rgb), .12); }
.ac-input-group .form-control { background: transparent; }
.ac-dropdown {
  position: absolute; top: calc(100% + 8px); left: 0; right: 0; z-index: 30;
  background: rgba(255, 255, 255, .97);
  backdrop-filter: blur(18px) saturate(1.4); -webkit-backdrop-filter: blur(18px) saturate(1.4);
  border: 1px solid rgba(255, 255, 255, .6); border-radius: 16px;
  box-shadow: 0 20px 44px rgba(var(--brand-deep-rgb), .2);
  padding: 6px; max-height: 60vh; overflow-y: auto;
  opacity: 0; visibility: hidden; transform: translateY(-6px);
  transition: opacity .18s ease, transform .18s ease, visibility .18s;
}
.ac-dropdown.show { opacity: 1; visibility: visible; transform: translateY(0); }
.ac-item { display: flex; align-items: center; gap: 12px; padding: 9px 10px; border-radius: 12px; color: var(--text); text-decoration: none; }
.ac-item:hover { background: var(--green-light); }
.ac-item img { width: 46px; height: 46px; object-fit: cover; border-radius: 10px; flex-shrink: 0; }
.ac-text { display: flex; flex-direction: column; min-width: 0; flex: 1; }
.ac-name { font-weight: 600; }
.ac-cat { font-size: .78rem; color: #6b7d6d; }
.ac-cat i { color: var(--green); }
.ac-price { font-weight: 700; color: var(--green); white-space: nowrap; }
.ac-empty { padding: 22px; text-align: center; color: #8a978b; }
mark.search-hl { background: rgba(var(--accent-rgb), .35); color: inherit; padding: 0 1px; border-radius: 3px; }

/* ---------- Hero (floating rounded panel, matches the pill navbar) ---------- */
.hero {
  position: relative;
  overflow: hidden;
  color: #fff;
  padding: 84px 0 118px;
  margin: 12px 14px 0;
  border-radius: 28px;
  border: 1px solid rgba(255, 255, 255, .12);
  box-shadow: 0 18px 44px rgba(var(--brand-deep-rgb), .25), inset 0 1px 0 rgba(255, 255, 255, .12);
  background:
    radial-gradient(1000px 520px at 85% 0%, rgba(var(--accent-rgb), .22), transparent 60%),
    radial-gradient(820px 480px at -8% 112%, rgba(var(--brand-rgb), .26), transparent 55%),
    linear-gradient(140deg, var(--green-deep) 0%, var(--green-dark) 45%, var(--green) 100%);
}
.hero::before, .hero::after {
  content: ''; position: absolute; border-radius: 50%;
  filter: blur(90px); opacity: .32; pointer-events: none;
}
.hero::before { width: 420px; height: 420px; background: var(--yellow); top: -180px; right: -140px; }
.hero::after { width: 360px; height: 360px; background: var(--green); bottom: -160px; left: -140px; }
.hero .container { position: relative; z-index: 1; }
.hero h1 { font-size: clamp(2.2rem, 4.6vw, 3.4rem); font-weight: 800; letter-spacing: -1px; line-height: 1.12; }
.hero .highlight {
  background: linear-gradient(92deg, #FFE082, var(--yellow));
  -webkit-background-clip: text; background-clip: text; color: transparent;
}
.hero .lead { color: #DCEDC8; max-width: 560px; }
.hero-eyebrow {
  display: inline-flex; align-items: center; gap: 8px;
  background: rgba(255, 255, 255, .12); border: 1px solid rgba(255, 255, 255, .22);
  backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px);
  padding: 8px 18px; border-radius: 100px;
  font-weight: 600; font-size: .85rem; letter-spacing: .4px;
}
.hero-brand { font-weight: 700; text-transform: uppercase; letter-spacing: 3px; color: var(--yellow); font-size: .85rem; }
.hero-trust { display: flex; gap: 10px 26px; flex-wrap: wrap; margin-top: 30px; font-size: .9rem; color: #E8F5E9; font-weight: 500; }
.hero-emoji { font-size: 9rem; animation: heroFloat 5s ease-in-out infinite; filter: drop-shadow(0 26px 28px rgba(0, 0, 0, .35)); }
@keyframes heroFloat { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-18px); } }
.hero-wave { position: absolute; bottom: -1px; left: 0; right: 0; line-height: 0; z-index: 1; }
.hero-wave svg { width: 100%; height: 74px; display: block; }
#heroCarousel { box-shadow: 0 24px 50px rgba(0, 0, 0, .35); }

/* ---------- Section headings ---------- */
.section-eyebrow {
  display: inline-block; background: var(--green-light); color: var(--green);
  font-weight: 700; font-size: .74rem; letter-spacing: 2.5px; text-transform: uppercase;
  padding: 7px 18px; border-radius: 100px;
}
.section-title { font-weight: 800; letter-spacing: -.6px; font-size: clamp(1.55rem, 3vw, 2.2rem); }
.section-title::after {
  content: ''; display: block; width: 64px; height: 4px;
  background: linear-gradient(90deg, var(--yellow), #FB8C00);
  border-radius: 2px; margin-top: 10px;
}
.section-title.text-center::after { margin-left: auto; margin-right: auto; }

/* ---------- Cards (liquid glass) ---------- */
/* Every card surface is translucent frosted glass over the mesh backdrop, with a
   water-drop specular sheen. box-shadow carries the hairline border + top highlight
   with !important so it survives Bootstrap's .border-0/.shadow-sm utility classes. */
.card {
  background: rgba(255, 255, 255, .68);
  backdrop-filter: blur(16px) saturate(1.35);
  -webkit-backdrop-filter: blur(16px) saturate(1.35);
  border-radius: var(--radius);
  box-shadow: 0 10px 30px rgba(var(--brand-deep-rgb), .08),
              inset 0 1px 0 rgba(255, 255, 255, .65),
              inset 0 0 0 1px rgba(255, 255, 255, .45) !important;
}
.product-card {
  border: none; border-radius: var(--radius); overflow: hidden;
  background: rgba(255, 255, 255, .74);
  backdrop-filter: blur(16px) saturate(1.35);
  -webkit-backdrop-filter: blur(16px) saturate(1.35);
  box-shadow: 0 10px 30px rgba(var(--brand-deep-rgb), .08),
              inset 0 1px 0 rgba(255, 255, 255, .65),
              inset 0 0 0 1px rgba(255, 255, 255, .45) !important;
  transition: transform .25s ease, box-shadow .25s ease;
  height: 100%;
  position: relative;
}
.product-card:hover {
  transform: translateY(-8px);
  box-shadow: 0 18px 40px rgba(var(--brand-deep-rgb), .15),
              inset 0 1px 0 rgba(255, 255, 255, .7),
              inset 0 0 0 1px rgba(255, 255, 255, .5) !important;
}
.product-card .card-img-top { height: 200px; object-fit: cover; background: var(--green-light); transition: transform .4s ease; }
.product-card:hover .card-img-top { transform: scale(1.05); }
.badge-category { background: var(--green-light); color: var(--green); font-weight: 600; }
.badge-discount { background: var(--yellow); color: #212121; font-weight: 700; }
.price-old { text-decoration: line-through; color: #9e9e9e; font-size: .9rem; }
.price-new { color: var(--green); font-weight: 800; font-size: 1.2rem; }

.feature-card {
  border-radius: var(--radius); padding: 32px 24px; height: 100%;
  text-align: center; position: relative; overflow: hidden;
  background: rgba(255, 255, 255, .66);
  backdrop-filter: blur(16px) saturate(1.35);
  -webkit-backdrop-filter: blur(16px) saturate(1.35);
  border: none;
  box-shadow: 0 10px 30px rgba(var(--brand-deep-rgb), .08),
              inset 0 1px 0 rgba(255, 255, 255, .65),
              inset 0 0 0 1px rgba(255, 255, 255, .45) !important;
  transition: transform .25s ease, box-shadow .25s ease;
}
.feature-card::after {  /* water-drop sheen */
  content: ''; position: absolute; top: -60%; left: -20%;
  width: 90%; height: 90%; border-radius: 50%;
  background: radial-gradient(ellipse at center, rgba(255, 255, 255, .55), transparent 70%);
  pointer-events: none;
}
.feature-card:hover { transform: translateY(-6px); box-shadow: 0 18px 40px rgba(var(--brand-deep-rgb), .14), inset 0 1px 0 rgba(255, 255, 255, .7) !important; }
.feature-card .icon {
  width: 66px; height: 66px; margin: 0 auto 14px;
  display: flex; align-items: center; justify-content: center;
  font-size: 1.9rem; border-radius: 20px;
  background: linear-gradient(135deg, var(--green-light), var(--yellow-light));
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .8);
}
.feature-card .icon i { font-size: 1.7rem; color: var(--green); }

.review-card {
  border-radius: var(--radius); padding: 28px; height: 100%; position: relative;
  background: rgba(255, 255, 255, .66);
  backdrop-filter: blur(16px) saturate(1.35);
  -webkit-backdrop-filter: blur(16px) saturate(1.35);
  border: none;
  box-shadow: 0 10px 30px rgba(var(--brand-deep-rgb), .08),
              inset 0 1px 0 rgba(255, 255, 255, .65),
              inset 0 0 0 1px rgba(255, 255, 255, .45) !important;
}
.review-card::before {
  content: '\201C'; position: absolute; top: 2px; right: 22px;
  font-size: 4.4rem; font-family: Georgia, serif; color: rgba(var(--accent-rgb), .3);
  line-height: 1; pointer-events: none;
}
.review-avatar {
  width: 42px; height: 42px; border-radius: 50%; flex: 0 0 42px;
  background: linear-gradient(135deg, var(--green), #43A047); color: #fff;
  font-weight: 700; display: flex; align-items: center; justify-content: center;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .4);
}
.stars { color: var(--yellow); letter-spacing: 2px; }

.stat-chip {
  border-radius: 18px; padding: 18px 10px; height: 100%;
  background: rgba(255, 255, 255, .6);
  backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px);
  box-shadow: 0 6px 18px rgba(var(--brand-deep-rgb), .07),
              inset 0 1px 0 rgba(255, 255, 255, .7),
              inset 0 0 0 1px rgba(255, 255, 255, .45);
  border: none;
}

.video-card {
  background: rgba(255, 255, 255, .7); padding-bottom: 6px;
  backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px);
  transition: transform .25s ease, box-shadow .25s ease;
}
.video-card:hover { transform: translateY(-5px); box-shadow: var(--shadow-md); }

/* Glass slide-in panels, modals & inputs */
.offcanvas {
  background: rgba(255, 255, 255, .82);
  backdrop-filter: blur(22px) saturate(1.4);
  -webkit-backdrop-filter: blur(22px) saturate(1.4);
  border-left: 1px solid rgba(255, 255, 255, .6);
}
.modal-content {
  background: rgba(255, 255, 255, .88);
  backdrop-filter: blur(20px) saturate(1.4);
  -webkit-backdrop-filter: blur(20px) saturate(1.4);
  border: 1px solid rgba(255, 255, 255, .6);
}
.form-control, .form-select {
  background: rgba(255, 255, 255, .72);
  border: 1px solid rgba(var(--brand-rgb), .16);
  border-radius: 12px;
}
.form-control:focus, .form-select:focus {
  background: rgba(255, 255, 255, .92);
  border-color: var(--green);
  box-shadow: 0 0 0 .2rem rgba(var(--brand-rgb), .12);
}

/* ---------- Icon hover micro-animations ---------- */
i.bi { display: inline-block; transition: transform .28s cubic-bezier(.34, 1.56, .64, 1); }
a:hover > i.bi, a:hover > span > i.bi,
button:hover > i.bi,
.btn:hover i.bi,
.nav-link:hover i.bi,
.dropdown-item:hover i.bi { transform: translateY(-2px) scale(1.18); }
/* Social circles get a playful wiggle */
.rounded-circle:hover i.bi { animation: iconWiggle .5s ease; }
@keyframes iconWiggle {
  0%, 100% { transform: rotate(0) scale(1.15); }
  30% { transform: rotate(-12deg) scale(1.2); }
  60% { transform: rotate(10deg) scale(1.2); }
}
/* Feature tiles: icon pops and the tile glows on hover */
.feature-card .icon { transition: transform .3s cubic-bezier(.34, 1.56, .64, 1), box-shadow .3s ease; }
.feature-card:hover .icon {
  transform: translateY(-4px) scale(1.08) rotate(-4deg);
  box-shadow: 0 10px 22px rgba(var(--brand-rgb), .22), inset 0 1px 0 rgba(255, 255, 255, .8);
}
.feature-card:hover .icon i { animation: iconWiggle .5s ease; }
/* Trust chips in the hero */
.hero-trust i.bi { transition: transform .28s cubic-bezier(.34, 1.56, .64, 1); }
.hero-trust span:hover i.bi { transform: translateY(-3px) scale(1.25); }

/* ---------- Scroll reveal ---------- */
.reveal { opacity: 0; transform: translateY(28px); transition: opacity .7s ease, transform .7s ease; }
.reveal.visible { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) {
  .reveal { opacity: 1; transform: none; transition: none; }
  .hero-emoji { animation: none; }
}

/* ---------- Order tracking timeline ---------- */
.track-progress { height: 10px; border-radius: 6px; background: #e0e0e0; }
.track-progress .progress-bar { background: var(--green); }
.timeline { list-style: none; padding-left: 0; }
.timeline li { position: relative; padding: 0 0 24px 34px; border-left: 3px solid #e0e0e0; margin-left: 10px; }
.timeline li:last-child { border-left-color: transparent; }
.timeline li::before {
  content: ''; position: absolute; left: -11px; top: 0;
  width: 19px; height: 19px; border-radius: 50%;
  background: #e0e0e0; border: 4px solid #fff;
}
.timeline li.done { border-left-color: var(--green); }
.timeline li.done::before { background: var(--green); }
.timeline li.current::before { background: var(--yellow); box-shadow: 0 0 0 4px rgba(249,168,37,.3); }

/* Status step pills (horizontal) */
.status-steps { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 6px; }
.status-step { flex: 1; min-width: 90px; text-align: center; font-size: .78rem; color: #9e9e9e; }
.status-step .dot {
  width: 26px; height: 26px; margin: 0 auto 6px; border-radius: 50%;
  background: #e0e0e0; color: #fff; line-height: 26px; font-weight: 700;
}
.status-step.done { color: var(--green); font-weight: 600; }
.status-step.done .dot { background: var(--green); }

/* ---------- Footer ---------- */
footer.fff-footer {
  position: relative;
  background: linear-gradient(160deg, var(--green-deep), var(--green-dark));
  color: #B7D4B9;
  border-radius: 32px 32px 0 0;
  margin: 40px 14px 0;
  overflow: hidden;
}
footer.fff-footer::before {  /* soft glow accent, top-right */
  content: ''; position: absolute; top: -120px; right: -80px;
  width: 320px; height: 320px; border-radius: 50%;
  background: radial-gradient(circle, rgba(var(--accent-rgb), .18), transparent 70%);
  pointer-events: none;
}
footer.fff-footer .container { position: relative; z-index: 1; }
footer.fff-footer a { color: #B7D4B9; text-decoration: none; transition: color .2s, transform .2s; }
footer.fff-footer a:hover { color: var(--yellow); }
.footer-about { color: #A5C4A7; line-height: 1.6; }
.footer-title {
  color: #fff; font-weight: 700; margin-bottom: 16px; position: relative; padding-bottom: 10px;
}
.footer-title::after {
  content: ''; position: absolute; left: 0; bottom: 0;
  width: 32px; height: 3px; border-radius: 2px; background: var(--yellow);
}
.footer-links li { margin-bottom: 9px; }
.footer-links a { display: inline-flex; align-items: center; gap: 6px; }
.footer-links a i { font-size: .7rem; color: var(--yellow); transition: transform .2s; }
.footer-links a:hover { transform: translateX(3px); }
.footer-contact i { color: var(--yellow); margin-top: 2px; }
.footer-badge {
  color: #fff; font-weight: 600; font-size: .85rem;
  background: rgba(255, 255, 255, .08); border: 1px solid rgba(255, 255, 255, .14);
  padding: 6px 14px; border-radius: 100px;
}
.footer-badge:hover { color: var(--yellow); background: rgba(255, 255, 255, .12); }
.social-btn {
  width: 40px; height: 40px; border-radius: 50%;
  display: inline-flex; align-items: center; justify-content: center;
  color: #fff !important; font-size: 1.05rem;
  background: rgba(255, 255, 255, .08); border: 1px solid rgba(255, 255, 255, .16);
  transition: transform .25s cubic-bezier(.34, 1.56, .64, 1), background .25s, box-shadow .25s;
}
.social-btn:hover { background: var(--yellow); color: var(--green-dark) !important; transform: translateY(-4px) scale(1.08); box-shadow: 0 8px 18px rgba(var(--accent-rgb), .35); }
.footer-rule { border-color: rgba(255, 255, 255, .12); margin: 32px 0 18px; }
.footer-tagline { color: var(--yellow); font-weight: 600; }
@media (max-width: 576px) { footer.fff-footer { margin: 30px 8px 0; border-radius: 24px 24px 0 0; } }

/* ---------- User menu dropdown (glass) ---------- */
.navbar-fff .user-toggle { border-radius: 100px; padding: 4px 12px 4px 4px !important; }
.navbar-fff .user-toggle:hover { background: rgba(255, 255, 255, .12); }
.user-avatar-initial { background: linear-gradient(135deg, var(--yellow), var(--yellow)); color: var(--green-dark); font-weight: 700; }
.navbar-fff .user-avatar { border: 2px solid rgba(255, 255, 255, .5); }
.user-menu {
  border: 1px solid rgba(255, 255, 255, .6); border-radius: 18px;
  background: rgba(255, 255, 255, .9);
  backdrop-filter: blur(18px) saturate(1.4); -webkit-backdrop-filter: blur(18px) saturate(1.4);
  box-shadow: 0 18px 40px rgba(var(--brand-deep-rgb), .22) !important;
  padding: 6px; min-width: 240px; margin-top: 10px;
}
.user-menu-head .user-avatar { border: 2px solid var(--green-light); }
.user-menu .dropdown-item { border-radius: 12px; padding: 9px 12px; font-weight: 500; transition: background .18s; }
.user-menu .dropdown-item:hover { background: var(--green-light); }
.user-menu .dropdown-item.text-danger:hover { background: #FDECEA; }

/* ---------- Cart panel items ---------- */
.cart-item {
  background: rgba(255, 255, 255, .7); border: 1px solid rgba(var(--brand-rgb), .1);
  border-radius: 16px; padding: 10px; transition: box-shadow .2s;
}
.cart-item:hover { box-shadow: 0 6px 18px rgba(var(--brand-deep-rgb), .08); }
.cart-item .min-w-0 { min-width: 0; }
.cart-remove { font-size: .6rem; opacity: .5; transition: opacity .2s, transform .2s; }
.cart-remove:hover { opacity: 1; transform: scale(1.2); }
.qty-stepper { border: 1px solid rgba(var(--brand-rgb), .25); border-radius: 100px; overflow: hidden; background: #fff; }
.qty-stepper button {
  border: none; background: transparent; color: var(--green);
  width: 30px; height: 28px; display: inline-flex; align-items: center; justify-content: center;
  transition: background .18s;
}
.qty-stepper button:hover { background: var(--green-light); }
.qty-stepper span { min-width: 26px; text-align: center; font-weight: 700; font-size: .85rem; }

/* ---------- Dashboard / tables ---------- */
.dash-tab { cursor: pointer; }
.dash-nav .dash-tab {
  color: var(--text); border-radius: 12px; font-weight: 500;
  padding: 10px 14px; transition: background .18s, color .18s, transform .18s;
}
.dash-nav .dash-tab i { transition: transform .22s cubic-bezier(.34, 1.56, .64, 1); }
.dash-nav .dash-tab:hover { background: var(--green-light); transform: translateX(3px); }
.dash-nav .dash-tab:hover i { transform: scale(1.2); }
.dash-nav .dash-tab.active {
  background: linear-gradient(135deg, var(--green), var(--green-dark));
  color: #fff !important; box-shadow: 0 6px 16px rgba(var(--brand-rgb), .28);
}
.dash-tab.active { background: var(--green); color: #fff !important; border-radius: 8px; }
.table { --bs-table-bg: transparent; }
.table thead { background: rgba(var(--brand-rgb), .10); }

/* Avatar upload button on the profile card */
.avatar-edit-btn {
  position: absolute; bottom: 2px; right: 2px;
  width: 34px; height: 34px; border-radius: 50%;
  background: linear-gradient(135deg, var(--green), var(--green-dark)); color: #fff;
  display: flex; align-items: center; justify-content: center; cursor: pointer;
  border: 3px solid #fff; box-shadow: 0 3px 10px rgba(0, 0, 0, .18);
  transition: transform .2s;
}
.avatar-edit-btn:hover { transform: scale(1.12); }

/* ---------- Misc ---------- */
.toast-container { z-index: 2000; }
.min-vh-60 { min-height: 60vh; }
.thumb { width: 70px; height: 70px; object-fit: cover; border-radius: 10px; cursor: pointer; border: 2px solid transparent; }
.thumb.active { border-color: var(--green); }
.offer-banner {
  background: linear-gradient(110deg, #FFB300, var(--yellow) 45%, #FB8C00);
  border-radius: 24px; color: #201400;
  position: relative; overflow: hidden;
  box-shadow: 0 16px 40px rgba(var(--accent-rgb), .3);
}
.offer-banner::after {
  content: ''; position: absolute; top: -60%; right: -10%;
  width: 240px; height: 240px; border-radius: 50%;
  background: rgba(255, 255, 255, .25); filter: blur(10px); pointer-events: none;
}

@media (max-width: 576px) {
  .hero { padding: 56px 0 96px; margin: 10px 10px 0; border-radius: 22px; }
  .hero h1 { font-size: 1.9rem; }
  .hero-trust { gap: 8px 16px; font-size: .8rem; }
  .navbar-fff { margin: 8px 10px 0; top: 8px; }
}

/* ---------------- Inactivity auto-logout warning overlay ---------------- */
.idle-warn-overlay {
  position: fixed; inset: 0; z-index: 20000;
  display: none; align-items: center; justify-content: center; padding: 16px;
  background: rgba(0, 0, 0, .5); backdrop-filter: blur(2px);
}
.idle-warn-card {
  max-width: 380px; width: 100%; background: #fff; border-radius: 18px;
  padding: 26px 24px; text-align: center; box-shadow: 0 20px 60px rgba(0, 0, 0, .3);
}
.idle-warn-icon {
  width: 56px; height: 56px; margin: 0 auto 12px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  background: rgba(var(--brand-rgb), .12); color: var(--green); font-size: 1.6rem;
}
