/* ========================================
   CalProgs Prism Website Template System
   Copyright (c) 2025 CalProgs
   Template Version: 1.25.10081719
   File: portal/modules/gallery/common/styles.css
   ========================================
   Gallery Module-specific CSS classes
   Extracted from modules/common/styles.css for modular architecture
   ======================================== */

/* ========================================
   GALLERY MODULE STYLES
   ======================================== */

/* Gallery grid classes - ensure they're always included for dynamic content */
.grid-cols-3 {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.grid-cols-5 {
  grid-template-columns: repeat(5, minmax(0, 1fr));
}

.grid-cols-6 {
  grid-template-columns: repeat(6, minmax(0, 1fr));
}

/* Gallery widget specific styles */
.prism-gallery-container {
  display: grid;
  gap: 1rem;
  margin: 1rem 0;
}

.prism-gallery-item {
  position: relative;
  border-radius: 8px;
  overflow: hidden;
  transition: transform 0.2s ease;
  background-color: #ffffff;
  border: 2px solid #e5e7eb;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
  cursor: pointer;
}

.prism-gallery-item:hover {
  transform: scale(1.02);
  border-color: #3b82f6;
  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15);
}

.prism-gallery-image {
  width: 100%;
  height: auto;
  display: block;
  aspect-ratio: 1 / 1;
  object-fit: cover;
}

.prism-gallery-date {
  padding: 0.5rem 0;
  text-align: center;
}

.prism-gallery-date-text {
  font-size: 0.75rem;
  color: #6b7280;
  font-weight: 500;
}

/* Gallery photo badges */
.prism-gallery-badge {
  position: absolute;
  width: 1.25rem;
  height: 1.25rem;
  border-radius: 50%;
  color: white;
  font-size: 0.75rem;
  font-weight: bold;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 10;
}

.prism-gallery-badge-left {
  top: 0.25rem;
  left: 0.25rem;
}

.prism-gallery-badge-right {
  top: 0.25rem;
  right: 0.25rem;
}

.prism-gallery-badge-red {
  background-color: #dc2626;
}

.prism-gallery-badge-blue {
  background-color: #2563eb;
}

.prism-gallery-badge-green {
  background-color: #16a34a;
}

.prism-gallery-badge-yellow {
  background-color: #d97706;
}

/* Gallery grid layouts */
.prism-gallery-grid-2 {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1rem;
}

.prism-gallery-grid-3 {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1rem;
}

.prism-gallery-grid-4 {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 1rem;
}

.prism-gallery-grid-5 {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 1rem;
}

.prism-gallery-grid-6 {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 1rem;
}

/* Gallery grid layouts */
.prism-gallery-grid {
  display: grid;
  gap: 1rem;
}

/* Gallery column-specific classes (for widget compatibility) */
.prism-gallery-cols-1 {
  grid-template-columns: repeat(1, minmax(0, 1fr));
}

.prism-gallery-cols-2 {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.prism-gallery-cols-3 {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.prism-gallery-cols-4 {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}

.prism-gallery-cols-5 {
  grid-template-columns: repeat(5, minmax(0, 1fr));
}

.prism-gallery-cols-6 {
  grid-template-columns: repeat(6, minmax(0, 1fr));
}

/* ========================================
   GALLERY-SPECIFIC COMPONENTS
   ======================================== */

/* Container classes */
.prism-container {
  max-width: 1200px;
  margin: 0 auto;
}

/* Card variants for gallery */
.prism-card-transparent {
  background-color: rgba(255, 255, 255, 0.1);
  backdrop-filter: blur(4px);
  border-radius: 0.5rem;
  border: 1px solid rgba(255, 255, 255, 0.2);
}

.prism-card-glass {
  background-color: rgba(255, 255, 255, 0.05);
  backdrop-filter: blur(4px);
  border-radius: 0.5rem;
  box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
  border: 1px solid rgba(156, 163, 175, 0.3);
}

.prism-hover-card-light:hover {
  background-color: rgba(255, 255, 255, 0.15);
}

/* Aspect ratios */
.prism-aspect-square {
  aspect-ratio: 1 / 1;
}

.prism-aspect-video {
  aspect-ratio: 16 / 9;
}

/* Transform utilities */
.prism-group-hover-scale-105 {
  transition: transform 0.15s ease-in-out;
}

.prism-group:hover .prism-group-hover-scale-105 {
  transform: scale(1.05);
}

/* Shadow utilities */
.prism-shadow-lg {
  box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
}

.prism-group-hover-shadow-xl {
  transition: box-shadow 0.15s ease-in-out;
}

.prism-group:hover .prism-group-hover-shadow-xl {
  box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
}

/* Background gradients */
.prism-bg-gradient-blue-purple {
  background: linear-gradient(to bottom right, #60a5fa, #a855f7);
}

/* Line clamping */
.prism-line-clamp-2 {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

/* Responsive grid extensions */
@media (min-width: 768px) {
  .prism-md-grid-cols-3 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
  .prism-md-gap-6 {
    gap: 1.5rem;
  }
}

@media (min-width: 1024px) {
  .prism-lg-grid-cols-3 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
  .prism-lg-grid-cols-4 {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
}

/* Fractional padding */
.prism-p-1-5 {
  padding: 0.375rem;
}