/*
Theme Name: Nu-Vision Optics
Theme URI: https://nuvisionoptics.com
Author: Nu-Vision Optics
Description: Premium eyewear store theme with neumorphic design. Includes a fully backend-configurable WP-Admin login screen logo (Customizer → 🔐 WP-Admin Login Screen).
Version: 1.10.12
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: nuvision
Tags: e-commerce, optical, eyewear, neumorphic
*/

/* ===== HARD RESET — runs before everything ===== */
*, *::before, *::after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

html {
  width: 100%;
  overflow-x: hidden;
}

body {
  font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  color: #1f2937;
  background: #f1f5f4;
  min-height: 100vh;
  -webkit-font-smoothing: antialiased;
  width: 100% !important;
  max-width: 100% !important;
  margin: 0 !important;
  padding: 0 !important;
  overflow-x: hidden !important;
}

img  { max-width: 100%; height: auto; display: block; }
a    { text-decoration: none; color: inherit; }
ul   { list-style: none; }
button { cursor: pointer; border: none; background: none; font-family: inherit; }
input, select, textarea { font-family: inherit; }

/* ===== KILL ALL WORDPRESS LAYOUT WRAPPERS ===== */
/* These selectors cover every possible WP theme/block wrapper */
#page, #wrapper, #outer-wrapper,
.site, .site-content, #content,
.content-area, #primary,
.wp-site-blocks, .is-layout-flow,
.is-layout-constrained, .is-layout-flex,
[class*="wp-container"],
main, .main, #main,
.hentry, .entry, .entry-content,
.post-content, .page-content,
.single-content, .archive-content {
  max-width: 100% !important;
  width: 100% !important;
  padding-left:  0 !important;
  padding-right: 0 !important;
  margin-left:   0 !important;
  margin-right:  0 !important;
  float: none !important;
}

/* Hide sidebars unconditionally */
#secondary, .sidebar, .widget-area,
aside.sidebar, [class*="sidebar"] {
  display: none !important;
}

/* Admin bar offsets */
.admin-bar .nvo-header { top: 32px; }
@media screen and (max-width: 782px) {
  .admin-bar .nvo-header { top: 46px; }
}

/* ===== NEUMORPHIC UTILITIES ===== */
.nu-vision-optics-neu-card {
  background: linear-gradient(135deg, #f9fafb 0%, #f3f4f6 100%);
  box-shadow: 8px 8px 16px var(--nvo-shadow-dark), -8px -8px 16px var(--nvo-shadow-light);
}

.nu-vision-optics-neu-button {
  box-shadow: 6px 6px 12px var(--nvo-shadow-dark), -6px -6px 12px var(--nvo-shadow-light);
  transition: all 0.2s ease;
}

.nu-vision-optics-neu-button:hover {
  box-shadow: 4px 4px 8px var(--nvo-shadow-dark), -4px -4px 8px var(--nvo-shadow-light);
  transform: translateY(1px);
}

.nu-vision-optics-neu-button:active {
  box-shadow: inset 2px 2px 4px var(--nvo-shadow-dark), inset -2px -2px 4px var(--nvo-shadow-light);
  transform: translateY(2px);
}

.nu-vision-optics-neu-inset {
  box-shadow: inset 4px 4px 8px var(--nvo-shadow-dark), inset -4px -4px 8px var(--nvo-shadow-light);
}

.nu-vision-optics-neu-shadow {
  box-shadow: 8px 8px 16px var(--nvo-shadow-dark), -8px -8px 16px var(--nvo-shadow-light);
}

.nu-vision-optics-neu-shadow-lg {
  box-shadow: 12px 12px 24px var(--nvo-shadow-dark), -12px -12px 24px var(--nvo-shadow-light);
}

/* ===== GRADIENT TEXT ===== */
.nu-vision-optics-gradient-text {
  background: linear-gradient(to right, var(--nvo-amber), var(--nvo-amber-dark));
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}

/* ===== LAYOUT ===== */
.container {
  max-width: 1280px;
  margin: 0 auto;
  padding: 0 1rem;
}

/* ===== HEADER ===== */
#site-header {
  position: sticky;
  top: 0;
  z-index: 50;
  background: #fff;
}

.nu-vision-optics-header-inner {
  box-shadow: 12px 12px 24px var(--nvo-shadow-dark), -12px -12px 24px var(--nvo-shadow-light);
}

.nu-vision-optics-header-content {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 1rem;
}

.nu-vision-optics-site-logo img {
  height: 3rem;
  width: auto;
  object-fit: contain;
}

/* Desktop Nav */
.nu-vision-optics-primary-nav {
  display: none;
  align-items: center;
  gap: 1.5rem;
}

@media (min-width: 1024px) {
  .nu-vision-optics-primary-nav { display: flex; }
}

.nu-vision-optics-nav-link {
  color: #374151;
  font-weight: 500;
  font-size: 0.9375rem;
  transition: color 0.2s;
}

.nu-vision-optics-nav-link:hover { color: var(--nvo-amber); }

.nu-vision-optics-nav-cta {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  background: linear-gradient(to right, #f59e0b, var(--nvo-amber));
  color: #fff;
  padding: 0.5rem 1.5rem;
  border-radius: 0.75rem;
  font-weight: 700;
  box-shadow: 6px 6px 12px var(--nvo-shadow-dark), -6px -6px 12px var(--nvo-shadow-light);
  transition: all 0.2s;
}

.nu-vision-optics-nav-cta:hover {
  background: linear-gradient(to right, var(--nvo-amber), #b45309);
  color: #fff;
  transform: translateY(1px);
}

/* Mobile Menu Toggle */
.nu-vision-optics-menu-toggle {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0.75rem;
  border-radius: 0.75rem;
  box-shadow: 6px 6px 12px var(--nvo-shadow-dark), -6px -6px 12px var(--nvo-shadow-light);
}

@media (min-width: 1024px) { .nu-vision-optics-menu-toggle { display: none; } }

/* Mobile Menu */
.nu-vision-optics-mobile-menu {
  display: none;
  margin-top: 1rem;
  border-radius: 1rem;
  padding: 1rem;
  background: #fff;
  box-shadow: 8px 8px 16px var(--nvo-shadow-dark), -8px -8px 16px var(--nvo-shadow-light);
}

.nu-vision-optics-mobile-menu.is-open { display: block; }

.nu-vision-optics-mobile-menu a {
  display: block;
  padding: 0.75rem 1rem;
  border-radius: 0.75rem;
  color: #374151;
  font-weight: 500;
  transition: all 0.2s;
  margin-bottom: 0.25rem;
}

.nu-vision-optics-mobile-menu a:hover,
.nu-vision-optics-mobile-menu a.active {
  background: linear-gradient(to right, #f59e0b, var(--nvo-amber));
  color: #fff;
}

/* ===== HERO SECTION ===== */
.nu-vision-optics-hero-section {
  padding: 5rem 1rem;
  overflow: hidden;
  position: relative;
}

.nu-vision-optics-hero-grid {
  display: grid;
  gap: 3rem;
  align-items: center;
}

@media (min-width: 1024px) {
  .nu-vision-optics-hero-grid { grid-template-columns: 1fr 1fr; }
}

.nu-vision-optics-hero-badge {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  background: linear-gradient(to right, #f59e0b, var(--nvo-amber));
  color: #fff;
  padding: 0.5rem 1rem;
  border-radius: 9999px;
  font-size: 0.875rem;
  font-weight: 600;
  box-shadow: 6px 6px 12px var(--nvo-shadow-dark), -6px -6px 12px var(--nvo-shadow-light);
}

.nu-vision-optics-hero-title {
  font-size: clamp(2.5rem, 6vw, 3.75rem);
  font-weight: 700;
  line-height: 1.15;
  margin-top: 1.5rem;
}

.nu-vision-optics-hero-title .block { display: block; }

.nu-vision-optics-hero-desc {
  font-size: 1.125rem;
  color: #4b5563;
  line-height: 1.7;
  margin-top: 1rem;
}

.nu-vision-optics-hero-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
  margin-top: 1.5rem;
}

.nu-vision-optics-btn-primary {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  background: var(--nvo-accent);
  color: #000;
  padding: 1rem 2rem;
  border-radius: 0.75rem;
  font-weight: 700;
  box-shadow: 6px 6px 12px var(--nvo-shadow-dark), -6px -6px 12px var(--nvo-shadow-light);
  transition: all 0.2s;
}

.nu-vision-optics-btn-primary:hover { background: var(--nvo-accent2); transform: translateY(1px); }

.nu-vision-optics-btn-secondary {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  padding: 1rem 2rem;
  border-radius: 0.75rem;
  font-weight: 700;
  box-shadow: 6px 6px 12px var(--nvo-shadow-dark), -6px -6px 12px var(--nvo-shadow-light);
  transition: all 0.2s;
  color: #1f2937;
}

.nu-vision-optics-btn-secondary:hover { background: #f3f4f6; transform: translateY(1px); }

.nu-vision-optics-btn-gradient {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  background: linear-gradient(to right, #f59e0b, var(--nvo-amber));
  color: #fff;
  padding: 1rem 2rem;
  border-radius: 0.75rem;
  font-weight: 700;
  box-shadow: 6px 6px 12px var(--nvo-shadow-dark), -6px -6px 12px var(--nvo-shadow-light);
  transition: all 0.2s;
}

.nu-vision-optics-btn-gradient:hover { background: linear-gradient(to right, var(--nvo-amber), #b45309); color: #fff; transform: translateY(1px); }

/* Hero Image */
.nu-vision-optics-hero-image-wrap {
  position: relative;
}

.nu-vision-optics-hero-img-card {
  border-radius: 1.5rem;
  padding: 2rem;
  transition: transform 0.5s ease;
  background: linear-gradient(135deg, #f9fafb 0%, #f3f4f6 100%);
  box-shadow: 8px 8px 16px var(--nvo-shadow-dark), -8px -8px 16px var(--nvo-shadow-light);
}

.nu-vision-optics-hero-img-card:hover { transform: scale(1.05); }
.nu-vision-optics-hero-img-card img { border-radius: 1rem; width: 100%; }

.nu-vision-optics-hero-badge-float {
  position: absolute;
  bottom: -1.5rem;
  right: -1.5rem;
  background: #fff;
  border-radius: 1rem;
  padding: 1rem;
  display: flex;
  align-items: center;
  gap: 0.75rem;
  box-shadow: 8px 8px 16px var(--nvo-shadow-dark), -8px -8px 16px var(--nvo-shadow-light);
}

.nu-vision-optics-hero-badge-icon {
  border-radius: 50%;
  padding: 0.75rem;
  background: linear-gradient(to right, #22c55e, #16a34a);
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 6px 6px 12px var(--nvo-shadow-dark), -6px -6px 12px var(--nvo-shadow-light);
}

.nu-vision-optics-hero-badge-icon svg { width: 1.5rem; height: 1.5rem; color: #fff; }
.nu-vision-optics-hero-badge-title { font-weight: 700; font-size: 0.875rem; }
.nu-vision-optics-hero-badge-sub { font-size: 0.75rem; color: #6b7280; }

/* ===== FEATURES SECTION ===== */
.nu-vision-optics-features-section { padding: 4rem 1rem; }

.nu-vision-optics-features-grid {
  display: grid;
  gap: 2rem;
}

@media (min-width: 768px) { .nu-vision-optics-features-grid { grid-template-columns: repeat(3, 1fr); } }

.nu-vision-optics-feature-card {
  border-radius: 1rem;
  padding: 2rem;
  text-align: center;
  transition: transform 0.3s;
  background: linear-gradient(135deg, #f9fafb 0%, #f3f4f6 100%);
  box-shadow: 8px 8px 16px var(--nvo-shadow-dark), -8px -8px 16px var(--nvo-shadow-light);
}

.nu-vision-optics-feature-card:hover { transform: scale(1.05); }

.nu-vision-optics-feature-icon {
  width: 4rem;
  height: 4rem;
  border-radius: 50%;
  margin: 0 auto 1rem;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 6px 6px 12px var(--nvo-shadow-dark), -6px -6px 12px var(--nvo-shadow-light);
}

.nu-vision-optics-feature-icon svg { width: 2rem; height: 2rem; }
.nu-vision-optics-icon-yellow { background: linear-gradient(to right, #f59e0b, var(--nvo-amber)); }
.nu-vision-optics-icon-yellow svg { color: #000; }
.nu-vision-optics-icon-green { background: linear-gradient(to right, #22c55e, #16a34a); }
.nu-vision-optics-icon-green svg { color: #fff; }
.nu-vision-optics-icon-gold { background: linear-gradient(to right, var(--nvo-accent), var(--nvo-accent2)); }
.nu-vision-optics-icon-gold svg { color: #000; }

.nu-vision-optics-feature-title { font-size: 1.25rem; font-weight: 700; margin-bottom: 0.5rem; color: #000; }
.nu-vision-optics-feature-desc { font-size: 0.875rem; color: #374151; }

/* ===== COLLECTIONS SECTION ===== */
.nu-vision-optics-collections-section { padding: 4rem 1rem; }

.nu-vision-optics-section-header {
  text-align: center;
  margin-bottom: 3rem;
}

.nu-vision-optics-section-title {
  font-size: 2.25rem;
  font-weight: 700;
  margin-bottom: 1rem;
}

.nu-vision-optics-section-desc { color: #6b7280; max-width: 42rem; margin: 0 auto; }

.nu-vision-optics-collection-group { margin-bottom: 4rem; }

.nu-vision-optics-collection-header {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  margin-bottom: 2rem;
  gap: 0.75rem;
}

.nu-vision-optics-collection-title {
  font-size: 2rem;
  font-weight: 700;
  color: #000;
}

.nu-vision-optics-explore-btn {
  padding: 0.5rem 1.5rem;
  border-radius: 0.75rem;
  font-size: 0.875rem;
  font-weight: 600;
  box-shadow: 6px 6px 12px var(--nvo-shadow-dark), -6px -6px 12px var(--nvo-shadow-light);
  transition: all 0.2s;
  color: #1f2937;
}

.nu-vision-optics-explore-btn:hover {
  background: linear-gradient(to right, #f59e0b, var(--nvo-amber));
  color: #fff;
}

/* ===== PRODUCT GRID ===== */
.nu-vision-optics-products-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.5rem;
}

@media (min-width: 640px) { .nu-vision-optics-products-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .nu-vision-optics-products-grid { grid-template-columns: repeat(4, 1fr); } }
@media (min-width: 768px) { .nu-vision-optics-products-grid-3 { grid-template-columns: repeat(3, 1fr); } }

/* ===== PRODUCT CARD ===== */
.nu-vision-optics-product-card {
  border-radius: 1rem;
  padding: 1.5rem;
  transition: all 0.3s;
  background: linear-gradient(135deg, #f9fafb 0%, #f3f4f6 100%);
  box-shadow: 8px 8px 16px var(--nvo-shadow-dark), -8px -8px 16px var(--nvo-shadow-light);
  cursor: pointer;
}

.nu-vision-optics-product-card:hover { transform: scale(1.05); }

.nu-vision-optics-product-image-wrap {
  position: relative;
  overflow: hidden;
  border-radius: 0.75rem;
  margin-bottom: 1rem;
  aspect-ratio: 1 / 1;
}

.nu-vision-optics-product-image-wrap img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: all 0.5s;
}

.nu-vision-optics-badge-low-stock {
  position: absolute;
  top: 0.75rem;
  right: 0.75rem;
  background: linear-gradient(to right, #ef4444, #dc2626);
  color: #fff;
  padding: 0.25rem 0.75rem;
  border-radius: 9999px;
  font-size: 0.75rem;
  font-weight: 700;
  display: flex;
  align-items: center;
  gap: 0.25rem;
  animation: pulse 2s infinite;
  box-shadow: 6px 6px 12px var(--nvo-shadow-dark), -6px -6px 12px var(--nvo-shadow-light);
}

.nu-vision-optics-badge-featured {
  position: absolute;
  top: 0.75rem;
  left: 0.75rem;
  background: linear-gradient(to right, #3b82f6, #2563eb);
  color: #fff;
  padding: 0.25rem 0.75rem;
  border-radius: 9999px;
  font-size: 0.75rem;
  font-weight: 700;
  box-shadow: 6px 6px 12px var(--nvo-shadow-dark), -6px -6px 12px var(--nvo-shadow-light);
}

@keyframes pulse {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.6; }
}

.nu-vision-optics-product-name { font-weight: 700; font-size: 1.125rem; color: #000; }
.nu-vision-optics-product-style { font-size: 0.875rem; color: #374151; margin-top: 0.25rem; }

.nu-vision-optics-product-price {
  font-size: 1.5rem;
  font-weight: 700;
  color: var(--nvo-price);
  margin-top: 0.5rem;
}

.nu-vision-optics-product-desc {
  font-size: 0.875rem;
  color: #1f2937;
  margin-top: 0.5rem;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.nu-vision-optics-lens-badge {
  box-shadow: inset 4px 4px 8px var(--nvo-shadow-dark), inset -4px -4px 8px var(--nvo-shadow-light);
  border-radius: 0.5rem;
  padding: 0.5rem 0.75rem;
  font-size: 0.75rem;
  color: #374151;
  margin-top: 0.5rem;
}

.nu-vision-optics-product-actions {
  display: flex;
  gap: 0.5rem;
  margin-top: 1rem;
}

.nu-vision-optics-btn-tryon {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  background: var(--nvo-accent);
  color: #000;
  padding: 0.75rem;
  border-radius: 0.75rem;
  font-weight: 700;
  font-size: 0.875rem;
  box-shadow: 6px 6px 12px var(--nvo-shadow-dark), -6px -6px 12px var(--nvo-shadow-light);
  transition: all 0.2s;
  cursor: pointer;
  border: none;
}

.nu-vision-optics-btn-tryon:hover { background: var(--nvo-accent2); transform: translateY(1px); }

.nu-vision-optics-btn-reserve {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  background: linear-gradient(to right, #f59e0b, var(--nvo-amber));
  color: #fff;
  padding: 0.75rem;
  border-radius: 0.75rem;
  font-weight: 700;
  font-size: 0.875rem;
  box-shadow: 6px 6px 12px var(--nvo-shadow-dark), -6px -6px 12px var(--nvo-shadow-light);
  transition: all 0.2s;
  cursor: pointer;
  border: none;
}

.nu-vision-optics-btn-reserve:hover { background: linear-gradient(to right, var(--nvo-amber), #b45309); transform: translateY(1px); }

/* ===== CTA SECTION ===== */
.nu-vision-optics-cta-section { padding: 4rem 1rem; }

.nu-vision-optics-cta-card {
  border-radius: 1.5rem;
  padding: 3rem;
  text-align: center;
  max-width: 56rem;
  margin: 0 auto;
  background: linear-gradient(135deg, #f9fafb 0%, #f3f4f6 100%);
  box-shadow: 8px 8px 16px var(--nvo-shadow-dark), -8px -8px 16px var(--nvo-shadow-light);
}

.nu-vision-optics-cta-title { font-size: 1.875rem; font-weight: 700; margin-bottom: 1rem; }
.nu-vision-optics-cta-desc { color: #6b7280; margin-bottom: 2rem; max-width: 42rem; margin-left: auto; margin-right: auto; }

.nu-vision-optics-cta-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
  justify-content: center;
}

/* ===== FOOTER ===== */
#site-footer {
  background: linear-gradient(135deg, #f3f4f6, #e5e7eb);
  margin-top: 5rem;
}

.nu-vision-optics-footer-inner {
  box-shadow: 12px 12px 24px var(--nvo-shadow-dark), -12px -12px 24px var(--nvo-shadow-light);
}

.nu-vision-optics-footer-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 2rem;
  padding: 3rem 1rem;
}

@media (min-width: 768px) { .nu-vision-optics-footer-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .nu-vision-optics-footer-grid { grid-template-columns: repeat(4, 1fr); } }

.nu-vision-optics-footer-logo img { height: 2.5rem; width: auto; object-fit: contain; margin-bottom: 1rem; }
.nu-vision-optics-footer-tagline { font-size: 0.875rem; color: #6b7280; margin-bottom: 1rem; }

.nu-vision-optics-social-links { display: flex; gap: 0.75rem; }
.nu-vision-optics-social-link {
  padding: 0.5rem;
  border-radius: 0.5rem;
  color: #374151;
  transition: color 0.2s;
  box-shadow: 6px 6px 12px var(--nvo-shadow-dark), -6px -6px 12px var(--nvo-shadow-light);
}

.nu-vision-optics-social-link:hover { color: var(--nvo-amber); }
.nu-vision-optics-social-link svg { width: 1.25rem; height: 1.25rem; }

.nu-vision-optics-footer-heading { font-weight: 700; color: #1f2937; margin-bottom: 1rem; }

.nu-vision-optics-footer-links li { margin-bottom: 0.5rem; }
.nu-vision-optics-footer-links a { font-size: 0.875rem; color: #6b7280; transition: color 0.2s; }
.nu-vision-optics-footer-links a:hover { color: var(--nvo-amber); }

.nu-vision-optics-footer-contact li {
  display: flex;
  align-items: flex-start;
  gap: 0.5rem;
  font-size: 0.875rem;
  color: #6b7280;
  margin-bottom: 0.75rem;
}

.nu-vision-optics-footer-contact svg { width: 1rem; height: 1rem; color: var(--nvo-amber); flex-shrink: 0; margin-top: 0.125rem; }
.nu-vision-optics-footer-contact a { color: #6b7280; transition: color 0.2s; }
.nu-vision-optics-footer-contact a:hover { color: var(--nvo-amber); }

.nu-vision-optics-footer-bottom {
  border-top: 1px solid #d1d5db;
  padding: 1.5rem 1rem;
  text-align: center;
  font-size: 0.875rem;
  color: #6b7280;
}

/* ===== FOOTER WIDGET AREAS (Appearance → Widgets) =====
   The theme's own footer content is styled with inline style="" on every
   element (see footer.php), so it always matches the site regardless of
   this stylesheet. A widget dropped into one of the 3 footer widget areas
   — especially a Custom HTML widget, which is just raw pasted markup with
   no styling of its own — has none of that, so without these rules it
   would render in the browser's default black serif text on the footer's
   dark background instead of matching the rest of the site. These rules
   give any widget's contents the same font, colour and sizing as the
   footer text around it automatically, so pasted HTML "just works"
   without needing hand-written inline styles to match. */
.nvo-footer-widget {
  font-family: inherit; /* follows the site font, incl. the Customizer's font picker */
  color: #fff;
  font-size: .875rem;
  line-height: 1.7;
}
.nvo-footer-widget h1, .nvo-footer-widget h2, .nvo-footer-widget h3,
.nvo-footer-widget h4, .nvo-footer-widget h5, .nvo-footer-widget h6 {
  font-family: inherit;
  color: #fff;
  font-weight: 700;
  font-size: 1rem;
  line-height: 1.3;
  margin: 0 0 .875rem;
}
.nvo-footer-widget p { margin: 0 0 .75rem; }
.nvo-footer-widget p:last-child { margin-bottom: 0; }
.nvo-footer-widget a { color: #fff; text-decoration: none; transition: color .15s; }
.nvo-footer-widget a:hover { color: #f2c006; }
.nvo-footer-widget ul, .nvo-footer-widget ol { list-style: none; padding: 0; margin: 0; }
.nvo-footer-widget li { margin-bottom: .4rem; }
.nvo-footer-widget strong, .nvo-footer-widget b { font-weight: 700; }
.nvo-footer-widget img { max-width: 100%; height: auto; }

/* ===== WHATSAPP BUTTON ===== */
.nu-vision-optics-whatsapp-btn {
  position: fixed;
  bottom: 1.5rem;
  right: 1.5rem;
  z-index: 50;
  background: linear-gradient(to right, #22c55e, #16a34a);
  color: #fff;
  padding: 1rem;
  border-radius: 50%;
  box-shadow: 6px 6px 12px var(--nvo-shadow-dark), -6px -6px 12px var(--nvo-shadow-light);
  transition: all 0.2s;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
}

.nu-vision-optics-whatsapp-btn:hover {
  background: linear-gradient(to right, #16a34a, #15803d);
  transform: translateY(-2px);
}

.nu-vision-optics-whatsapp-btn svg { width: 1.5rem; height: 1.5rem; transition: transform 0.2s; }
.nu-vision-optics-whatsapp-btn:hover svg { transform: scale(1.1); }

.nu-vision-optics-whatsapp-dot {
  position: absolute;
  top: -0.25rem;
  right: -0.25rem;
  width: 0.75rem;
  height: 0.75rem;
  background: #ef4444;
  border-radius: 50%;
  animation: pulse 2s infinite;
}

/* ===== MODALS ===== */
.nu-vision-optics-modal-overlay {
  position: fixed;
  inset: 0;
  z-index: 100;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 1rem;
  background: rgba(0,0,0,0.5);
  backdrop-filter: blur(4px);
}

.nu-vision-optics-modal-box {
  border-radius: 1.5rem;
  max-width: 42rem;
  width: 100%;
  max-height: 90vh;
  overflow-y: auto;
  background: linear-gradient(135deg, #f9fafb 0%, #f3f4f6 100%);
  box-shadow: 8px 8px 16px var(--nvo-shadow-dark), -8px -8px 16px var(--nvo-shadow-light);
}

.nu-vision-optics-modal-header {
  position: sticky;
  top: 0;
  background: linear-gradient(135deg, #f9fafb 0%, #f3f4f6 100%);
  padding: 1.5rem;
  border-bottom: 1px solid #e5e7eb;
  display: flex;
  align-items: center;
  justify-content: space-between;
  border-radius: 1.5rem 1.5rem 0 0;
}

.nu-vision-optics-modal-title { font-size: 1.5rem; font-weight: 700; }
.nu-vision-optics-modal-close {
  padding: 0.5rem;
  border-radius: 0.75rem;
  box-shadow: 6px 6px 12px var(--nvo-shadow-dark), -6px -6px 12px var(--nvo-shadow-light);
  transition: all 0.2s;
  cursor: pointer;
  border: none;
  background: none;
}

.nu-vision-optics-modal-close:hover { background: #ef4444; color: #fff; }
.nu-vision-optics-modal-close svg { width: 1.5rem; height: 1.5rem; }

.nu-vision-optics-modal-body { padding: 1.5rem; }

.nu-vision-optics-modal-product-preview {
  box-shadow: inset 4px 4px 8px var(--nvo-shadow-dark), inset -4px -4px 8px var(--nvo-shadow-light);
  border-radius: 1rem;
  padding: 1.5rem;
  margin-bottom: 1.5rem;
  display: flex;
  align-items: flex-start;
  gap: 1rem;
}

.nu-vision-optics-modal-product-preview img {
  width: 6rem;
  height: 6rem;
  border-radius: 0.75rem;
  object-fit: cover;
  flex-shrink: 0;
}

.nu-vision-optics-modal-product-preview h3 { font-weight: 700; font-size: 1.125rem; }
.nu-vision-optics-modal-product-preview .style { font-size: 0.875rem; color: #6b7280; }
.nu-vision-optics-modal-product-preview .price { font-size: 1.25rem; font-weight: 700; color: var(--nvo-price); margin-top: 0.5rem; }

/* Form Fields */
.nu-vision-optics-form-group { margin-bottom: 1rem; }
.nu-vision-optics-form-label { display: block; font-size: 0.875rem; font-weight: 600; color: #374151; margin-bottom: 0.5rem; }

.nu-vision-optics-input-wrap {
  box-shadow: inset 4px 4px 8px var(--nvo-shadow-dark), inset -4px -4px 8px var(--nvo-shadow-light);
  border-radius: 0.75rem;
  overflow: hidden;
}

.nu-vision-optics-input-prefix {
  display: flex;
  align-items: center;
}

.nu-vision-optics-input-prefix-text {
  padding: 0.75rem 1rem;
  background: #e5e7eb;
  color: #374151;
  font-weight: 600;
}

.nu-vision-optics-input-wrap input,
.nu-vision-optics-input-wrap select,
.nu-vision-optics-input-wrap textarea {
  width: 100%;
  padding: 0.75rem 1rem;
  background: transparent;
  border: none;
  outline: none;
  font-size: 1rem;
  color: #1f2937;
}

.nu-vision-optics-input-wrap select { cursor: pointer; }
.nu-vision-optics-input-wrap textarea { resize: none; }
.nu-vision-optics-input-prefix input { flex: 1; width: auto; }

.nu-vision-optics-alert-box {
  display: flex;
  align-items: flex-start;
  gap: 0.75rem;
  padding: 1rem;
  border-radius: 0.75rem;
  margin-bottom: 1rem;
  box-shadow: inset 4px 4px 8px var(--nvo-shadow-dark), inset -4px -4px 8px var(--nvo-shadow-light);
}

.nu-vision-optics-alert-amber { background: #fffbeb; color: #78350f; }
.nu-vision-optics-alert-red { background: #fef2f2; color: #991b1b; }
.nu-vision-optics-alert-green { background: #f0fdf4; color: #14532d; }
.nu-vision-optics-alert-blue { background: #eff6ff; color: #1e3a8a; }

.nu-vision-optics-alert-box svg { flex-shrink: 0; margin-top: 0.125rem; width: 1.25rem; height: 1.25rem; }
.nu-vision-optics-alert-box .nu-vision-optics-alert-title { font-weight: 600; margin-bottom: 0.25rem; font-size: 0.875rem; }
.nu-vision-optics-alert-box p { font-size: 0.875rem; }

/* Date selector radio buttons */
.nu-vision-optics-date-options { display: flex; flex-direction: column; gap: 0.75rem; }

.nu-vision-optics-date-option {
  border-radius: 0.75rem;
  padding: 1rem;
  cursor: pointer;
  transition: all 0.2s;
  display: flex;
  align-items: center;
  justify-content: space-between;
  box-shadow: 6px 6px 12px var(--nvo-shadow-dark), -6px -6px 12px var(--nvo-shadow-light);
  font-weight: 600;
}

.nu-vision-optics-date-option.selected {
  background: linear-gradient(to right, #f59e0b, var(--nvo-amber));
  color: #fff;
}

.nu-vision-optics-date-option svg { width: 1.25rem; height: 1.25rem; }

/* VTO modal styles */
.nu-vision-optics-vto-camera-area {
  background: #000;
  border-radius: 1rem;
  overflow: hidden;
  aspect-ratio: 4/3;
  position: relative;
  margin-bottom: 1rem;
}

.nu-vision-optics-vto-camera-area video {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.nu-vision-optics-vto-overlay-canvas {
  position: absolute;
  inset: 0;
  pointer-events: none;
}

.vto-instructions {
  text-align: center;
  padding: 2rem;
  color: #6b7280;
}

.nu-vision-optics-vto-placeholder {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  height: 100%;
  color: #9ca3af;
  gap: 1rem;
}

.nu-vision-optics-vto-placeholder svg { width: 4rem; height: 4rem; }

.nu-vision-optics-btn-start-camera {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  background: linear-gradient(to right, #f59e0b, var(--nvo-amber));
  color: #fff;
  padding: 0.75rem 1.5rem;
  border-radius: 0.75rem;
  font-weight: 700;
  cursor: pointer;
  border: none;
  box-shadow: 6px 6px 12px var(--nvo-shadow-dark), -6px -6px 12px var(--nvo-shadow-light);
  transition: all 0.2s;
  margin: 1rem auto;
}

.nu-vision-optics-btn-start-camera:hover { background: linear-gradient(to right, var(--nvo-amber), #b45309); }

/* Success state */
.nu-vision-optics-success-card {
  text-align: center;
  padding: 2rem;
  border-radius: 1rem;
  background: linear-gradient(135deg, #f0fdf4, #dcfce7);
  box-shadow: inset 4px 4px 8px var(--nvo-shadow-dark), inset -4px -4px 8px var(--nvo-shadow-light);
  margin-bottom: 1.5rem;
}

.nu-vision-optics-success-icon {
  width: 5rem;
  height: 5rem;
  border-radius: 50%;
  background: linear-gradient(to right, #22c55e, #16a34a);
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0 auto 1rem;
  box-shadow: 6px 6px 12px var(--nvo-shadow-dark), -6px -6px 12px var(--nvo-shadow-light);
}

.nu-vision-optics-success-icon svg { width: 2.5rem; height: 2.5rem; color: #fff; }
.nu-vision-optics-success-title { font-size: 1.5rem; font-weight: 700; color: #14532d; margin-bottom: 0.5rem; }

.nu-vision-optics-reservation-details {
  text-align: left;
  background: #fff;
  border-radius: 0.75rem;
  padding: 1rem;
  margin-top: 1rem;
  box-shadow: inset 4px 4px 8px var(--nvo-shadow-dark), inset -4px -4px 8px var(--nvo-shadow-light);
}

.nu-vision-optics-reservation-details p { font-size: 0.875rem; margin-bottom: 0.25rem; }
.nu-vision-optics-reservation-details strong { font-weight: 600; }

.nu-vision-optics-btn-close-modal {
  width: 100%;
  background: linear-gradient(to right, #6b7280, #4b5563);
  color: #fff;
  padding: 0.75rem;
  border-radius: 0.75rem;
  font-weight: 600;
  cursor: pointer;
  border: none;
  box-shadow: 6px 6px 12px var(--nvo-shadow-dark), -6px -6px 12px var(--nvo-shadow-light);
  transition: all 0.2s;
}

.nu-vision-optics-btn-close-modal:hover { background: linear-gradient(to right, #4b5563, #374151); }

/* ===== PAGE TEMPLATES ===== */

/* Page Hero */
.nu-vision-optics-page-hero {
  padding: 4rem 1rem;
  background: linear-gradient(135deg, #fffbeb, #fef3c7);
}

.nu-vision-optics-page-hero.nu-vision-optics-blue-hero {
  background: linear-gradient(135deg, #eff6ff, #dbeafe);
}

.nu-vision-optics-page-hero h1 {
  font-size: clamp(2rem, 5vw, 3rem);
  font-weight: 700;
  margin-bottom: 1rem;
}

.nu-vision-optics-page-hero p {
  font-size: 1.125rem;
  color: #6b7280;
  max-width: 42rem;
  margin: 0 auto;
}

.nu-vision-optics-page-hero .icon { font-size: 4rem; margin-bottom: 1rem; }

/* Category Filter Bar */
.nu-vision-optics-filter-bar {
  padding: 1rem;
  position: sticky;
  top: 4rem;
  z-index: 40;
  background: linear-gradient(135deg, #f3f4f6, #e5e7eb);
}

.nu-vision-optics-filter-card {
  border-radius: 1rem;
  padding: 1rem;
  background: linear-gradient(135deg, #f9fafb 0%, #f3f4f6 100%);
  box-shadow: 8px 8px 16px var(--nvo-shadow-dark), -8px -8px 16px var(--nvo-shadow-light);
}

.nu-vision-optics-filter-inner {
  display: flex;
  align-items: center;
  gap: 1rem;
  overflow-x: auto;
}

.nu-vision-optics-filter-label {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  font-size: 0.875rem;
  font-weight: 600;
  color: #6b7280;
  white-space: nowrap;
}

.nu-vision-optics-filter-btn {
  padding: 0.5rem 1.5rem;
  border-radius: 0.75rem;
  font-weight: 600;
  white-space: nowrap;
  cursor: pointer;
  border: none;
  font-size: 0.9rem;
  transition: all 0.2s;
  box-shadow: 6px 6px 12px var(--nvo-shadow-dark), -6px -6px 12px var(--nvo-shadow-light);
  background: transparent;
  color: #1f2937;
}

.nu-vision-optics-filter-btn:hover { background: #e5e7eb; }
.nu-vision-optics-filter-btn.active {
  background: linear-gradient(to right, #3b82f6, #2563eb);
  color: #fff;
  box-shadow: 8px 8px 16px var(--nvo-shadow-dark), -8px -8px 16px var(--nvo-shadow-light);
}

/* ===== ABOUT PAGE ===== */
.nu-vision-optics-about-grid {
  display: grid;
  gap: 3rem;
  align-items: center;
  padding: 4rem 1rem;
}

@media (min-width: 1024px) { .nu-vision-optics-about-grid { grid-template-columns: 1fr 1fr; } }

/* About page — Our Vision text/stats + store photo (page-about.php).
   Mobile-first: single column by default, so on narrow/tablet
   viewports the text and the 3 stat cards stack in one full-width
   column above the photo (each stat card spans the full row)
   instead of being squeezed into a cramped half next to it. Only
   switches to the side-by-side layout once there's enough width. */
.nvo-about-grid {
  grid-template-columns: 1fr;
}
@media (min-width: 1024px) {
  .nvo-about-grid { grid-template-columns: 1fr 1fr; }
}

/* About page — "What to add here" widget area (Custom HTML widget an
   admin pastes content/images into, e.g. "Nu-vision's journey" + the
   store-front photo). That content is authored outside the theme, so
   it can't be guaranteed to be mobile-responsive on its own — this
   forces every element inside it to respect the container width
   instead of overflowing and causing horizontal scroll on mobile. */
.nvo-about-widget-content,
.nvo-about-widget-content * {
  max-width: 100% !important;
  box-sizing: border-box;
}
.nvo-about-widget-content img,
.nvo-about-widget-content iframe,
.nvo-about-widget-content video,
.nvo-about-widget-content table {
  height: auto;
  width: 100% !important;
}
.nvo-about-widget-content pre {
  overflow-x: auto;
  white-space: pre-wrap;
  word-wrap: break-word;
}

/* About page — "Why Choose Us" cards (page-about.php). Was hard-coded
   to 3 columns with no responsive breakpoint at all, so on mobile the
   cards were squeezed to a fraction of their intended width (visible
   as clipped/cut-off cards and horizontal overflow). Mobile-first:
   single column by default, 2 columns once there's room, 3 only on
   desktop-width screens. */
.nvo-why-grid {
  grid-template-columns: 1fr !important;
}
@media (min-width: 640px) {
  .nvo-why-grid { grid-template-columns: repeat(2, 1fr) !important; }
}
@media (min-width: 1024px) {
  .nvo-why-grid { grid-template-columns: repeat(3, 1fr) !important; }
}

/* Contact page — branch/store cards (page-contact.php). The details
   card and the map card were forced into 2 equal columns at every
   viewport width, which crushed them on mobile and made the "Visit
   Our Store" heading inside the card look misaligned against the
   branch-name heading above it (the card's own padding vs. the
   section's padding no longer lined up once the column got that
   narrow). Stacking to one column on mobile fixes both the squeeze
   and the alignment — with both columns full-width, the card heading
   and the branch-name heading sit at the same left edge. Also widens
   the vertical gap between one branch's whole section and the next
   on mobile, since the branches only had border-top as a divider. */
.nvo-store-grid {
  grid-template-columns: 1fr !important;
}
@media (min-width: 768px) {
  .nvo-store-grid { grid-template-columns: 1fr 1fr !important; }
}
.nvo-branch-section + .nvo-branch-section {
  margin-top: 0;
}
@media (max-width: 767px) {
  .nvo-branch-section {
    padding-top: 3rem !important;
    padding-bottom: 3rem !important;
  }
}

/* Map card's own branch-name heading — only needed on desktop where
   the two cards sit side by side (so the map card needs its own
   label); redundant on mobile once the cards stack, since the
   section's branch-name heading right above the "Visit Our Store"
   card already shows the same name. */
.nvo-map-card-heading {
  display: none;
}
@media (min-width: 768px) {
  .nvo-map-card-heading { display: block; }
}

.nu-vision-optics-stats-row {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
  margin-top: 1.5rem;
}

.nu-vision-optics-stat-card {
  flex: 1;
  min-width: 120px;
  border-radius: 1rem;
  padding: 1.5rem;
  background: linear-gradient(135deg, #f9fafb 0%, #f3f4f6 100%);
  box-shadow: 8px 8px 16px var(--nvo-shadow-dark), -8px -8px 16px var(--nvo-shadow-light);
}

.nu-vision-optics-stat-number { font-size: 1.875rem; font-weight: 700; margin-bottom: 0.25rem; }
.nu-vision-optics-stat-label { font-size: 0.875rem; color: #6b7280; }

.nu-vision-optics-why-choose-grid {
  display: grid;
  gap: 2rem;
  padding: 4rem 1rem;
}

@media (min-width: 768px) { .nu-vision-optics-why-choose-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .nu-vision-optics-why-choose-grid { grid-template-columns: repeat(3, 1fr); } }

.nu-vision-optics-team-grid {
  display: grid;
  gap: 2rem;
  margin-top: 2rem;
}

@media (min-width: 768px) { .nu-vision-optics-team-grid { grid-template-columns: repeat(3, 1fr); } }

.nu-vision-optics-team-card {
  text-align: center;
  padding: 1.5rem;
  border-radius: 1rem;
  box-shadow: inset 4px 4px 8px var(--nvo-shadow-dark), inset -4px -4px 8px var(--nvo-shadow-light);
}

.nu-vision-optics-team-avatar {
  width: 6rem;
  height: 6rem;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #fff;
  font-size: 1.5rem;
  font-weight: 700;
  margin: 0 auto 1rem;
  box-shadow: 6px 6px 12px var(--nvo-shadow-dark), -6px -6px 12px var(--nvo-shadow-light);
}

.nu-vision-optics-team-name { font-weight: 700; margin-bottom: 0.25rem; }
.nu-vision-optics-team-role { font-size: 0.875rem; color: #6b7280; margin-bottom: 0.25rem; }
.nu-vision-optics-team-exp { font-size: 0.75rem; color: #9ca3af; }

/* ===== CONTACT PAGE ===== */
.nu-vision-optics-contact-grid {
  display: grid;
  gap: 3rem;
  padding: 4rem 1rem;
}

@media (min-width: 1024px) { .nu-vision-optics-contact-grid { grid-template-columns: 1fr 1fr; } }

.nu-vision-optics-contact-info-item {
  display: flex;
  align-items: flex-start;
  gap: 1rem;
  margin-bottom: 1.5rem;
}

.nu-vision-optics-contact-icon {
  padding: 0.75rem;
  border-radius: 0.75rem;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  box-shadow: 6px 6px 12px var(--nvo-shadow-dark), -6px -6px 12px var(--nvo-shadow-light);
}

.nu-vision-optics-contact-icon svg { width: 1.5rem; height: 1.5rem; color: #fff; }

.nu-vision-optics-contact-label { font-weight: 700; color: #1f2937; margin-bottom: 0.25rem; }
.nu-vision-optics-contact-value { font-size: 0.875rem; color: #6b7280; }
.nu-vision-optics-contact-value a { color: var(--nvo-amber); transition: color 0.2s; }
.nu-vision-optics-contact-value a:hover { color: #b45309; }

.nu-vision-optics-map-embed { border-radius: 1.5rem; overflow: hidden; }
.nu-vision-optics-map-embed iframe { display: block; }

/* ===== BOOK EYE TEST ===== */
.nu-vision-optics-book-section { min-height: 100vh; padding: 4rem 1rem; }
.nu-vision-optics-book-container { max-width: 42rem; margin: 0 auto; }

.nu-vision-optics-book-form-card {
  border-radius: 1.5rem;
  padding: 2rem;
  background: linear-gradient(135deg, #f3f4f6, #e5e7eb);
  box-shadow: 8px 8px 16px var(--nvo-shadow-dark), -8px -8px 16px var(--nvo-shadow-light);
}

.nu-vision-optics-expect-list { list-style: none; space-y: 0.75rem; }
.nu-vision-optics-expect-list li {
  display: flex;
  align-items: flex-start;
  gap: 0.75rem;
  color: #374151;
  margin-bottom: 0.75rem;
}

.nu-vision-optics-expect-dot {
  box-shadow: inset 4px 4px 8px var(--nvo-shadow-dark), inset -4px -4px 8px var(--nvo-shadow-light);
  border-radius: 50%;
  padding: 0.5rem;
  margin-top: 0.125rem;
  flex-shrink: 0;
}

.nu-vision-optics-expect-dot-inner {
  width: 0.5rem;
  height: 0.5rem;
  background: #2563eb;
  border-radius: 50%;
}

.nu-vision-optics-btn-book {
  width: 100%;
  background: linear-gradient(to right, #2563eb, #1d4ed8);
  color: #fff;
  padding: 1rem;
  border-radius: 0.75rem;
  font-size: 1.125rem;
  font-weight: 600;
  cursor: pointer;
  border: none;
  box-shadow: 6px 6px 12px var(--nvo-shadow-dark), -6px -6px 12px var(--nvo-shadow-light);
  transition: all 0.2s;
}

.nu-vision-optics-btn-book:hover { background: linear-gradient(to right, #1d4ed8, #1e40af); }

/* ===== PRIVACY / TERMS ===== */
.nu-vision-optics-legal-page { padding: 4rem 1rem; max-width: 56rem; margin: 0 auto; }
.nu-vision-optics-legal-page h1 { font-size: 2.25rem; font-weight: 700; margin-bottom: 0.5rem; }
.nu-vision-optics-legal-page .nu-vision-optics-last-updated { color: #6b7280; font-size: 0.875rem; margin-bottom: 2rem; }
.nu-vision-optics-legal-page h2 { font-size: 1.25rem; font-weight: 700; margin: 2rem 0 0.75rem; color: #1f2937; }
.nu-vision-optics-legal-page p { color: #6b7280; line-height: 1.7; margin-bottom: 1rem; }
.nu-vision-optics-legal-page ul { list-style: disc; padding-left: 1.5rem; color: #6b7280; margin-bottom: 1rem; }
.nu-vision-optics-legal-page ul li { margin-bottom: 0.5rem; line-height: 1.7; }

/* ===== NO PRODUCTS / LOADING ===== */
.nu-vision-optics-no-products {
  text-align: center;
  padding: 5rem 1rem;
}

.nu-vision-optics-no-products-card {
  border-radius: 1.5rem;
  padding: 3rem;
  max-width: 28rem;
  margin: 0 auto;
  background: linear-gradient(135deg, #f9fafb 0%, #f3f4f6 100%);
  box-shadow: 8px 8px 16px var(--nvo-shadow-dark), -8px -8px 16px var(--nvo-shadow-light);
}

.nu-vision-optics-no-products svg { width: 4rem; height: 4rem; color: #9ca3af; margin: 0 auto 1rem; }

/* ===== LOADING SPINNER ===== */
.loading-spinner {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 5rem;
}

.spinner {
  width: 3rem;
  height: 3rem;
  border: 4px solid #e5e7eb;
  border-top-color: var(--nvo-amber);
  border-radius: 50%;
  animation: spin 0.8s linear infinite;
}

@keyframes spin { to { transform: rotate(360deg); } }

/* ===== UTILITIES ===== */
.nu-vision-optics-text-center { text-align: center; }
.hidden { display: none !important; }
.mt-2 { margin-top: 0.5rem; }
.mt-4 { margin-top: 1rem; }
.mt-6 { margin-top: 1.5rem; }
.mt-8 { margin-top: 2rem; }
.mb-2 { margin-bottom: 0.5rem; }
.mb-4 { margin-bottom: 1rem; }
.mb-8 { margin-bottom: 2rem; }
.nu-vision-optics-w-full { width: 100%; }

/* ══════════════════════════════════════════════════════════
   CONSENT CHECKBOX (Contact page + Book Eye Test page)
   Custom-styled checkbox — native browser checkboxes render
   inconsistently (some browsers/OS themes show a bare tick with
   no visible box). appearance:none + an explicit border/background
   plus a CSS-drawn tick on :checked guarantees consistent, clearly
   unchecked-by-default rendering everywhere.
   ══════════════════════════════════════════════════════════ */
.nvo-consent-label {
  display: flex;
  align-items: flex-start;
  gap: .6rem;
  cursor: pointer;
}
.nvo-consent-checkbox,
.nvo-consent-checkbox[type="checkbox"] {
  -webkit-appearance: none !important;
  -moz-appearance: none !important;
  appearance: none !important;
  -webkit-print-color-adjust: exact;
  print-color-adjust: exact;
  margin: .15rem 0 0;
  width: 1.15rem;
  height: 1.15rem;
  flex-shrink: 0;
  border: 2px solid #9ca3af;
  border-radius: .25rem;
  background-color: #fff;
  background-image: none !important;
  outline: none;
  position: relative;
  cursor: pointer;
  transition: background-color .15s, border-color .15s;
}
/* Belt-and-braces: explicitly blank any native check glyph some
   browser engines still paint via ::before on a checkbox even with
   appearance:none applied. */
.nvo-consent-checkbox::before {
  content: none !important;
}
.nvo-consent-checkbox:hover {
  border-color: var(--nvo-primary, #00ae80);
}
.nvo-consent-checkbox:checked {
  background: var(--nvo-primary, #00ae80);
  border-color: var(--nvo-primary, #00ae80);
}
.nvo-consent-checkbox:checked::after {
  content: "";
  position: absolute;
  left: 50%;
  top: 42%;
  width: .3rem;
  height: .55rem;
  border: solid #fff;
  border-width: 0 2px 2px 0;
  transform: translate(-50%, -50%) rotate(45deg);
}
.nvo-consent-checkbox:focus-visible {
  outline: 2px solid var(--nvo-primary, #00ae80);
  outline-offset: 2px;
}
.nvo-consent-text {
  font-size: .8125rem;
  line-height: 1.5;
  color: var(--nvo-muted-text, #6b7280);
}

/* ══════════════════════════════════════════════════════════
   FOOTER "CONNECT WITH US" SOCIAL ROW
   Sits above the copyright divider. Only rendered when at
   least one social icon is enabled in Customizer.
   ══════════════════════════════════════════════════════════ */
.nvo-footer-connect {
  text-align: center;
  margin-top: 2rem;
  padding-top: 1.75rem;
  border-top: 1px solid rgba(255,255,255,.2);
}
.nvo-footer-connect-title {
  color: #fff;
  font-size: .9375rem;
  font-weight: 700;
  margin: 0 0 .9rem;
  letter-spacing: .02em;
}
.nvo-footer-connect-icons {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: .6rem;
  flex-wrap: wrap;
}
