/* Custom CSS Variables */
:root {
  --background: 35 30% 96%;
  --foreground: 25 40% 15%;
  --card: 35 25% 98%;
  --card-foreground: 25 40% 15%;
  --primary: 28 85% 55%;
  --primary-foreground: 0 0% 100%;
  --secondary: 25 45% 25%;
  --secondary-foreground: 35 30% 96%;
  --muted: 35 20% 90%;
  --muted-foreground: 25 30% 40%;
  --accent: 28 70% 60%;
  --accent-foreground: 0 0% 100%;
  --destructive: 0 84% 60%;
  --destructive-foreground: 0 0% 100%;
  --border: 25 20% 85%;
  --input: 25 20% 85%;
  --radius: 0.5rem;
}

/* Tailwind config is set in index.html */

/* Page Transition Classes */
.page-transition-enter {
  opacity: 0;
  transform: translateY(10px);
  transition: opacity 0.3s ease-out, transform 0.3s ease-out;
}

.page-transition-enter-active {
  opacity: 1;
  transform: translateY(0);
}

.page-transition-exit {
  opacity: 1;
  transform: translateY(0);
  transition: opacity 0.2s ease-in, transform 0.2s ease-in;
}

.page-transition-exit-active {
  opacity: 0;
  transform: translateY(-10px);
}

/* Custom Classes */
.btn-gradient {
  background: linear-gradient(to right, hsl(var(--primary)), hsl(var(--accent)));
  color: hsl(var(--primary-foreground));
  font-weight: 600;
  transition: all 0.3s ease;
}

/* Hide scrollbar but allow scrolling */
.scrollbar-hide {
  -ms-overflow-style: none;  /* IE and Edge */
  scrollbar-width: none;  /* Firefox */
}

.scrollbar-hide::-webkit-scrollbar {
  display: none;  /* Chrome, Safari and Opera */
}

/* Category filters - scrollable on all screen sizes, centered on desktop when content fits */
.category-filters-container {
  position: relative;
  width: 100%;
}

.category-filters-wrapper {
  width: 100%;
  max-width: 100%;
  overflow-x: auto;
  overflow-y: hidden;
  -webkit-overflow-scrolling: touch;
  scroll-behavior: smooth;
  scrollbar-width: none; /* Hide scrollbar for Firefox */
  -ms-overflow-style: none; /* Hide scrollbar for IE and Edge */
  padding-left: 1rem;
  padding-right: 1rem;
  margin-left: -1rem;
  margin-right: -1rem;
  position: relative;
  text-align: center;
}

.category-filters-wrapper::-webkit-scrollbar {
  display: none; /* Hide scrollbar for Chrome, Safari, Opera */
}

.category-filters {
  display: inline-flex;
  width: max-content;
  gap: 0.5rem;
  box-sizing: border-box;
  padding-left: 0.5rem;
  padding-right: 0.5rem;
  flex-shrink: 0;
}

@media (min-width: 640px) {
  .category-filters-wrapper {
    margin-left: 0;
    margin-right: 0;
    padding-left: 1rem;
    padding-right: 1rem;
    overflow-x: auto;
    width: 100%;
    max-width: 100%;
    text-align: center;
  }
  
  .category-filters {
    display: inline-flex;
    width: max-content;
    padding-left: 1rem;
    padding-right: 1rem;
  }
}

/* Subcategory filters - always scrollable on all screen sizes */
.subcategory-filters-container {
  position: relative;
  width: 100%;
  overflow: visible; /* Ensure container doesn't clip content */
}

.subcategory-filters-scroll-wrapper {
  width: 100%;
  max-width: 100%;
  overflow-x: auto;
  overflow-y: hidden;
  -webkit-overflow-scrolling: touch;
  scroll-behavior: smooth;
  scrollbar-width: none; /* Hide scrollbar for Firefox */
  -ms-overflow-style: none; /* Hide scrollbar for IE and Edge */
  position: relative;
  /* Ensure proper scrolling on mobile - match category wrapper padding exactly */
  padding-left: 1rem;
  padding-right: 1rem;
  margin-left: -1rem;
  margin-right: -1rem;
  min-width: 0;
  flex-shrink: 0;
  /* Ensure content doesn't get clipped on the right */
  box-sizing: border-box;
}

.subcategory-filters-scroll-wrapper::-webkit-scrollbar {
  display: none; /* Hide scrollbar for Chrome, Safari, Opera */
}

.subcategory-filters-scroll {
  display: inline-flex;
  width: max-content;
  gap: 0.5rem;
  box-sizing: border-box;
  /* Match category-filters padding exactly */
  padding-left: 0.5rem;
  padding-right: 0.5rem;
  flex-shrink: 0;
}

@media (min-width: 640px) {
  .subcategory-filters-container {
    overflow: visible;
  }
  
  .subcategory-filters-scroll-wrapper {
    overflow-x: auto;
    width: 100%;
    max-width: 100%;
    margin-left: 0;
    margin-right: 0;
    padding-left: 1rem;
    padding-right: 1rem;
    min-width: 0;
    box-sizing: border-box;
  }
  
  .subcategory-filters-scroll {
    display: inline-flex;
    width: max-content;
    padding-left: 1rem;
    padding-right: 1rem;
  }
}

/* Category showcase on home page - horizontally scrollable */
.category-showcase-container {
  position: relative;
  width: 100%;
}

.category-showcase-wrapper {
  width: 100%;
  max-width: 100%;
  overflow-x: auto;
  overflow-y: hidden;
  -webkit-overflow-scrolling: touch;
  scroll-behavior: smooth;
  scrollbar-width: thin;
  scrollbar-color: rgba(0, 0, 0, 0.2) transparent;
  -ms-overflow-style: -ms-autohiding-scrollbar;
  padding-left: 1rem;
  padding-right: 1rem;
  margin-left: -1rem;
  margin-right: -1rem;
  position: relative;
  /* Optimize for smooth scrolling */
  will-change: scroll-position;
  transform: translateZ(0);
  -webkit-transform: translateZ(0);
}

.category-showcase-wrapper::-webkit-scrollbar {
  height: 4px;
}

.category-showcase-wrapper::-webkit-scrollbar-track {
  background: transparent;
}

.category-showcase-wrapper::-webkit-scrollbar-thumb {
  background: rgba(0, 0, 0, 0.2);
  border-radius: 2px;
}

.category-showcase-scroll {
  display: inline-flex;
  width: max-content;
  gap: 1.5rem;
  box-sizing: border-box;
  padding-left: 0.5rem;
  padding-right: 0.5rem;
  flex-shrink: 0;
  /* Optimize for smooth scrolling */
  will-change: transform;
  transform: translateZ(0);
  -webkit-transform: translateZ(0);
}

.category-showcase-card {
  width: 280px;
  min-width: 280px;
  max-width: 280px;
}

/* Navigation arrows for category showcase */
.category-showcase-nav {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  z-index: 10;
  width: 48px;
  height: 48px;
  border-radius: 50%;
  background: hsl(var(--card));
  border: 2px solid hsl(var(--border));
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: all 0.3s ease;
  box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
  color: hsl(var(--foreground));
}

.category-showcase-nav:hover:not(:disabled) {
  background: hsl(var(--primary));
  color: hsl(var(--primary-foreground));
  border-color: hsl(var(--primary));
  transform: translateY(-50%) scale(1.1);
  box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
}

.category-showcase-nav:active:not(:disabled) {
  transform: translateY(-50%) scale(0.95);
}

.category-showcase-nav:disabled {
  opacity: 0.3;
  cursor: not-allowed;
  pointer-events: none;
}

.category-showcase-nav-left {
  left: -24px;
}

.category-showcase-nav-right {
  right: -24px;
}

@media (min-width: 640px) {
  .category-showcase-wrapper {
    margin-left: 0;
    margin-right: 0;
    padding-left: 1rem;
    padding-right: 1rem;
  }
  
  .category-showcase-scroll {
    padding-left: 1rem;
    padding-right: 1rem;
  }
  
  .category-showcase-card {
    width: 300px;
    min-width: 300px;
    max-width: 300px;
  }
  
  .category-showcase-nav-left {
    left: -32px;
  }
  
  .category-showcase-nav-right {
    right: -32px;
  }
}

@media (min-width: 1024px) {
  .category-showcase-card {
    width: 320px;
    min-width: 320px;
    max-width: 320px;
  }
  
  .category-showcase-nav {
    width: 56px;
    height: 56px;
  }
}

/* Category and Subcategory navigation arrows on Products page */
.category-nav,
.subcategory-nav {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  z-index: 10;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background: hsl(var(--card));
  border: 2px solid hsl(var(--border));
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: all 0.3s ease;
  box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
  color: hsl(var(--foreground));
}

.category-nav:hover:not(:disabled),
.subcategory-nav:hover:not(:disabled) {
  background: hsl(var(--primary));
  color: hsl(var(--primary-foreground));
  border-color: hsl(var(--primary));
  transform: translateY(-50%) scale(1.1);
  box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
}

.category-nav:active:not(:disabled),
.subcategory-nav:active:not(:disabled) {
  transform: translateY(-50%) scale(0.95);
}

.category-nav:disabled,
.subcategory-nav:disabled {
  opacity: 0.3;
  cursor: not-allowed;
  pointer-events: none;
}

.category-nav-left {
  left: -20px;
}

.category-nav-right {
  right: -20px;
}

.subcategory-nav-left {
  left: -20px;
}

.subcategory-nav-right {
  right: -20px;
}

@media (min-width: 640px) {
  .category-nav,
  .subcategory-nav {
    width: 44px;
    height: 44px;
  }
  
  .category-nav-left {
    left: -24px;
  }
  
  .category-nav-right {
    right: -24px;
  }
  
  .subcategory-nav-left {
    left: -24px;
  }
  
  .subcategory-nav-right {
    right: -24px;
  }
}

@media (min-width: 1024px) {
  .category-nav,
  .subcategory-nav {
    width: 48px;
    height: 48px;
  }
  
  .category-nav-left {
    left: -28px;
  }
  
  .category-nav-right {
    right: -28px;
  }
  
  .subcategory-nav-left {
    left: -28px;
  }
  
  .subcategory-nav-right {
    right: -28px;
  }
  
  .category-showcase-nav {
    width: 56px;
    height: 56px;
  }
  
  .category-showcase-nav-left {
    left: -40px;
  }
  
  .category-showcase-nav-right {
    right: -40px;
  }
}

/* Admin Panel Modals - Always centered in viewport (not page) */
[id$="-modal"]:not(#hero-quote-modal):not(.hidden) {
  position: fixed !important;
  top: 0 !important;
  left: 0 !important;
  right: 0 !important;
  bottom: 0 !important;
  width: 100vw !important;
  height: 100vh !important;
  margin: 0 !important;
  padding: 1rem !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  z-index: 9999 !important;
  overflow-y: auto !important;
  overflow-x: hidden !important;
  /* Ensure modal is always visible in viewport - prevent any page scroll interference */
  scroll-behavior: auto !important;
  transform: translateZ(0) !important;
  /* Ensure it's positioned relative to viewport, not document */
  will-change: transform !important;
  /* Force viewport positioning */
  inset: 0 !important;
}

/* Ensure hidden modals are actually hidden */
[id$="-modal"]:not(#hero-quote-modal).hidden {
  display: none !important;
}

/* Constrain the modal content wrapper - ensure it doesn't expand to full screen */
[id$="-modal"]:not(#hero-quote-modal):not(.hidden) > div:first-child {
  width: auto !important;
  max-width: 48rem !important; /* Increased from 42rem for more space */
  min-width: 28rem !important;
  max-height: 90vh !important; /* Limit height to viewport */
  margin: auto !important; /* Center vertically and horizontally */
  flex-shrink: 1 !important;
  flex-grow: 0 !important;
  align-self: center !important;
  box-sizing: border-box !important;
  position: relative !important;
  overflow-y: auto !important; /* Add inner scroll */
  overflow-x: hidden !important;
  display: flex !important;
  flex-direction: column !important;
}

/* Category modal should be wider */
#category-modal:not(.hidden) > div:first-child {
  width: 90% !important;
  max-width: 90rem !important; /* Much wider for categories */
  min-width: 70rem !important;
}

/* Ensure the inner content div (p-6) also scrolls properly */
[id$="-modal"]:not(#hero-quote-modal):not(.hidden) > div:first-child > div {
  flex: 1 1 auto !important;
  overflow-y: auto !important;
  overflow-x: hidden !important;
  min-height: 0 !important;
}

/* Ensure form and all children stay within modal bounds */
[id$="-modal"]:not(.hidden) form {
  width: 100% !important;
  max-width: 100% !important;
  box-sizing: border-box !important;
}

/* Ensure flex containers don't force buttons to expand */
[id$="-modal"]:not(.hidden) .flex,
[id$="-modal"]:not(.hidden) div[class*="flex"] {
  width: 100% !important;
  max-width: 100% !important;
  box-sizing: border-box !important;
  flex-wrap: wrap !important;
  justify-content: flex-end !important;
  align-items: center !important;
}

/* Override for checkbox containers - ensure horizontal layout */
[id$="-modal"]:not(.hidden) .flex.flex-row,
[id$="-modal"]:not(.hidden) div[class*="flex"][class*="flex-row"] {
  flex-direction: row !important;
  justify-content: flex-start !important;
}

.btn-gradient:hover {
  box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1);
  transform: scale(1.05);
}

.card-warm {
  background: hsl(var(--card));
  border-radius: 0.5rem;
  border: 1px solid hsl(var(--border));
  box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
  transition: transform 0.3s ease, box-shadow 0.3s ease;
}

.card-warm:hover {
  transform: translateY(-4px);
  box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1);
}

.section-padding {
  padding: 4rem 1rem;
}

@media (min-width: 768px) {
  .section-padding {
    padding: 6rem 2rem;
  }
}

.container-wide {
  max-width: 1280px;
  margin-left: auto;
  margin-right: auto;
}

.animate-fade-up {
  animation: fadeUp 0.6s ease-out forwards;
}

@keyframes fadeUp {
  from {
    opacity: 0;
    transform: translateY(20px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.animate-pulse {
  animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
}

@keyframes pulse {
  0%, 100% {
    opacity: 1;
  }
  50% {
    opacity: 0.5;
  }
}

/* Utility Classes */
.font-display {
  font-family: 'Playfair Display', serif;
}

.font-body {
  font-family: 'Source Sans 3', sans-serif;
}

/* Notification Styles */
#notification-container {
  pointer-events: none;
}

#notification-container > * {
  pointer-events: auto;
}

/* CRITICAL: Force modal content wrapper to not be full screen - must be at end for highest priority */
/* Target when modal is visible (not hidden) */
#product-modal:not(.hidden) > div:first-child,
#location-modal:not(.hidden) > div:first-child,
#step-modal:not(.hidden) > div:first-child,
#add-comment-modal:not(.hidden) > div:first-child,
#manage-cart-items-modal:not(.hidden) > div:first-child {
  width: auto !important;
  max-width: 48rem !important;
  min-width: 28rem !important;
  max-height: 90vh !important;
  margin: auto !important;
  flex-shrink: 1 !important;
  flex-grow: 0 !important;
  align-self: center !important;
  box-sizing: border-box !important;
  position: relative !important;
  overflow-y: auto !important;
  overflow-x: hidden !important;
}

/* Category modal should be wider - override all other rules */
#category-modal:not(.hidden) > div:first-child {
  width: 90% !important; /* Use percentage for responsiveness */
  max-width: 90rem !important;
  min-width: 70rem !important; /* Increased min-width */
  max-height: 90vh !important;
  margin: auto !important;
  flex-shrink: 1 !important;
  flex-grow: 0 !important;
  align-self: center !important;
  box-sizing: border-box !important;
  position: relative !important;
  overflow-y: auto !important;
  overflow-x: hidden !important;
}

/* Smaller modals */
#item-modal:not(.hidden) > div:first-child {
  width: auto !important;
  max-width: 32rem !important;
  min-width: 24rem !important;
  max-height: 90vh !important;
  margin: auto !important;
  overflow-y: auto !important;
  overflow-x: hidden !important;
}

/* Also target by class to catch any variations */
[id$="-modal"]:not(.hidden) > div.bg-\[hsl\(var\(--card\)\)\] {
  width: auto !important;
  max-width: 48rem !important;
  min-width: 28rem !important;
  max-height: 90vh !important;
  overflow-y: auto !important;
  overflow-x: hidden !important;
}

/* CRITICAL FIX: Buttons in modal flex containers must NOT expand and must be clickable */
[id$="-modal"]:not(.hidden) .flex > button,
[id$="-modal"]:not(.hidden) div[class*="flex"] > button,
[id$="-modal"]:not(.hidden) .flex button,
[id$="-modal"]:not(.hidden) div[class*="flex"] button,
[id$="-modal"]:not(.hidden) button[type="submit"],
[id$="-modal"]:not(.hidden) button[type="button"] {
  flex: none !important;
  flex-shrink: 0 !important;
  flex-grow: 0 !important;
  flex-basis: auto !important;
  width: auto !important;
  min-width: 0 !important;
  max-width: fit-content !important;
  height: auto !important;
  min-height: 0 !important;
  max-height: none !important;
  line-height: normal !important;
  position: relative !important;
  z-index: 10000 !important; /* Higher z-index to ensure clickability */
  pointer-events: auto !important;
  display: inline-block !important;
  box-sizing: border-box !important;
  cursor: pointer !important;
}

/* Specifically target cancel button to ensure it's normal size and clickable */
[id$="-modal"]:not(.hidden) #cancel-modal,
[id$="-modal"]:not(.hidden) #cancel-item-modal,
[id$="-modal"]:not(.hidden) button[id*="cancel"] {
  flex: none !important;
  width: auto !important;
  max-width: fit-content !important;
  height: auto !important;
  max-height: none !important;
  position: relative !important;
  z-index: 10000 !important;
  pointer-events: auto !important;
  cursor: pointer !important;
  display: inline-block !important;
  box-sizing: border-box !important;
}

/* Ensure modal content is above backdrop and clickable */
[id$="-modal"]:not(.hidden) > div:first-child {
  z-index: 10001 !important;
  pointer-events: auto !important;
}

[id$="-modal"]:not(.hidden) > div:first-child > * {
  pointer-events: auto !important;
}

