/*




























 */
/* GitLab Design System Colors */
:root {
    /* Primary Colors */
    --gitlab-blue: #1068bf;
    --gitlab-purple: #6e49cb;
    --gitlab-red: #dd2b0e;
    --gitlab-orange: #fc6d26;
    --gitlab-gold: #fc9403;
    
    /* Neutral Colors */
    --gray-50: #fafafa;
    --gray-100: #f5f5f5;
    --gray-200: #eeeeee;
    --gray-300: #e0e0e0;
    --gray-400: #bdbdbd;
    --gray-500: #9e9e9e;
    --gray-600: #757575;
    --gray-700: #616161;
    --gray-800: #424242;
    --gray-900: #212121;
  
    /* Semantic Colors */
    --primary: var(--gitlab-purple);
    --primary-light: #8c6be0;
    --primary-dark: #5c3eb8;
    --secondary: var(--gitlab-blue);
    --danger: var(--gitlab-red);
    --warning: var(--gitlab-orange);
    --success: #2da160;
    
    /* Background Colors */
    --bg-body: var(--gray-50);
    --bg-card: #ffffff;
    --bg-header: var(--gray-900);
    --bg-accent: var(--gray-100);
  
    /* Text Colors */
    --text-primary: var(--gray-900);
    --text-secondary: var(--gray-700);
    --text-muted: var(--gray-500);
    --text-light: #ffffff;
  
    /* Border Colors */
    --border-light: var(--gray-200);
    --border-medium: var(--gray-300);
    --border-dark: var(--gray-400);
  
    /* Spacing */
    --spacing-xs: 0.25rem;   /* 4px */
    --spacing-sm: 0.5rem;    /* 8px */
    --spacing-md: 1rem;      /* 16px */
    --spacing-lg: 1.5rem;    /* 24px */
    --spacing-xl: 2rem;      /* 32px */
    --spacing-2xl: 3rem;     /* 48px */
  
    /* Border Radius */
    --radius-sm: 0.25rem;    /* 4px */
    --radius-md: 0.375rem;   /* 6px */
    --radius-lg: 0.5rem;     /* 8px */
    --radius-xl: 0.75rem;    /* 12px */
  
    /* Shadows */
    --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05);
    --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
    --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
  
    /* Font Sizes */
    --text-xs: 0.75rem;      /* 12px */
    --text-sm: 0.875rem;     /* 14px */
    --text-base: 1rem;       /* 16px */
    --text-lg: 1.125rem;     /* 18px */
    --text-xl: 1.25rem;      /* 20px */
    --text-2xl: 1.5rem;      /* 24px */
    --text-3xl: 1.875rem;    /* 30px */
  
    /* Transitions */
    --transition-base: all 0.2s ease;
    --transition-smooth: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  
    /* Z-index */
    --z-nav: 100;
    --z-modal: 200;
    --z-tooltip: 300;
  }
/* Base Styles and Reset */
*, *::before, *::after {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
  }
  
  html {
    font-size: 16px;
    -webkit-text-size-adjust: 100%;
  }
  
  body {
    font-family: 'Inter', system-ui, -apple-system, sans-serif;
    line-height: 1.5;
    color: var(--text-primary);
    background-color: var(--bg-body);
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
  }
  
  /* Typography */
  h1, h2, h3, h4, h5, h6 {
    font-weight: 600;
    line-height: 1.2;
    color: var(--text-primary);
    margin-bottom: var(--spacing-md);
  }
  
  h1 {
    font-size: var(--text-3xl);
  }
  
  h2 {
    font-size: var(--text-2xl);
  }
  
  h3 {
    font-size: var(--text-xl);
  }
  
  p {
    margin-bottom: var(--spacing-md);
  }
  
  a {
    color: var(--primary);
    text-decoration: none;
    transition: var(--transition-base);
  }
  
  a:hover {
    color: var(--primary-light);
  }
  
  /* Buttons */
  .button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: var(--spacing-sm) var(--spacing-lg);
    border-radius: var(--radius-md);
    font-weight: 500;
    font-size: var(--text-sm);
    line-height: 1.5;
    text-align: center;
    transition: var(--transition-base);
    cursor: pointer;
    border: none;
    background-color: var(--primary);
    color: var(--text-light);
  }
  
  .button:hover {
    background-color: var(--primary-light);
    color: var(--text-light);
  }
  
  .button-secondary {
    background-color: var(--secondary);
  }
  
  .button-secondary:hover {
    background-color: var(--gitlab-blue);
  }
  
  .button-danger {
    background-color: var(--danger);
  }
  
  .button-danger:hover {
    background-color: #ff3b1f;
  }
  
  .button-small {
    padding: var(--spacing-xs) var(--spacing-md);
    font-size: var(--text-xs);
  }
  
  /* Forms */
  .form-input {
    width: 100%;
    padding: var(--spacing-sm) var(--spacing-md);
    border: 1px solid var(--border-medium);
    border-radius: var(--radius-md);
    font-size: var(--text-base);
    transition: var(--transition-base);
    background-color: var(--bg-card);
  }
  
  .form-input:focus {
    outline: none;
    border-color: var(--primary);
    box-shadow: 0 0 0 3px rgba(110, 73, 203, 0.1);
  }
  
  .form-label {
    display: block;
    margin-bottom: var(--spacing-xs);
    font-weight: 500;
    color: var(--text-secondary);
  }

  /* ... existing base styles ... */

/* Trix Editor Styles */
trix-toolbar {
    background: var(--bg-accent);
    padding: var(--spacing-sm);
    border: 1px solid var(--border-medium);
    border-radius: var(--radius-md) var(--radius-md) 0 0;
  }
  
  trix-editor {
    min-height: 200px;
    background: var(--bg-card);
    color: var(--text-primary);
    padding: var(--spacing-md);
    border: 1px solid var(--border-medium);
    border-top: none;
    border-radius: 0 0 var(--radius-md) var(--radius-md);
  }
  
  trix-editor:focus {
    outline: none;
    border-color: var(--primary);
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
  }
  
  .trix-button-group {
    border: 1px solid var(--border-medium);
    border-radius: var(--radius-sm);
    margin-right: var(--spacing-xs);
  }
  
  .trix-button {
    color: var(--text-secondary);
  }
  
  .trix-button:hover {
    background: var(--bg-card);
  }
  
  .trix-button.trix-active {
    background: var(--primary);
    color: white;
  }
/* app/assets/stylesheets/components/_components.css */
/* Update or append this to your existing _components.css file */

.image-carousel {
  position: relative;
  width: 70%;
  max-width: 800px;
  height: 300px; /* Fixed height container */
  background: var(--bg-accent);
  border-radius: var(--radius-lg);
  overflow: hidden;
  margin: 0 auto;
}

.carousel-slide {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  transition: opacity 0.3s ease;
  pointer-events: none;
}

.carousel-slide.active {
  opacity: 1;
  z-index: 1;
  pointer-events: auto;
}

.carousel-image {
  max-width: 70%;
  max-height: 80%;
  width: auto;
  height: auto;
  object-fit: contain;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}

.carousel-nav {
  position: absolute;
  bottom: 15px;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  gap: 8px;
  z-index: 2;
}

.carousel-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background-color: rgba(255, 255, 255, 0.5);
  cursor: pointer;
  transition: background-color 0.3s ease;
  border: none;
}

.carousel-dot.active {
  background-color: white;
}

.carousel-prev,
.carousel-next {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  background: rgba(255, 255, 255, 0.7);
  color: var(--text-primary);
  border: none;
  width: 36px;
  height: 36px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: background-color 0.3s ease;
  z-index: 2;
}

.carousel-prev:hover,
.carousel-next:hover {
  background: white;
}

.carousel-prev {
  left: 15px;
}

.carousel-next {
  right: 15px;
}

/* Admin product form specific carousel */
.product-form .image-carousel {
  width: 300px;
  height: 200px;
  margin: 0 0 var(--spacing-md) 0;
}

.product-form .carousel-image {
  max-width: 80%;
  max-height: 70%;
}

/* Add to your _components.css or appropriate CSS file */

/* Fix spacing between product sections */
.product-info-section {
  margin-bottom: 40px; /* Increased from likely 20px */
  padding-bottom: 20px;
  border-bottom: 1px solid var(--border-light, #eee);
}

.product-info-section:last-child {
  border-bottom: none;
}

.product-info-section h2 {
  margin-bottom: 24px; /* Increased spacing below headings */
  font-size: 1.5rem;
  color: var(--text-primary, #333);
}

/* Ensure adequate spacing in the product detail sections */
.product-detail-sections {
  display: flex;
  flex-direction: column;
  gap: 40px; /* Increased gap between sections */
}

/* Improve product detail page spacing overall */
.product-detail-content {
  padding: 30px; /* Increased padding */
  background: var(--bg-card);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-sm);
}

.product-detail-header {
  margin-bottom: 40px; /* Increased spacing */
  padding-bottom: 20px;
  border-bottom: 1px solid var(--border-light, #eee);
}
/* app/assets/stylesheets/components/_simple_image_grid.css */

.simple-image-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    gap: var(--spacing-md);
    margin: var(--spacing-md) 0;
  }
  
  .image-card {
    background-color: var(--bg-card);
    border: 1px solid var(--border-light);
    border-radius: var(--radius-md);
    padding: var(--spacing-md);
    box-shadow: var(--shadow-sm);
    display: flex;
    flex-direction: column;
    align-items: center;
    transition: all 0.2s ease;
  }
  
  .image-card:hover {
    box-shadow: var(--shadow-md);
    transform: translateY(-2px);
    border-color: var(--border-medium);
  }
  
  .admin-image {
    width: 100%;
    height: 150px;
    object-fit: contain;
    border-radius: var(--radius-sm);
    margin-bottom: var(--spacing-md);
  }
  
  .delete-image-button {
    background-color: var(--danger);
    color: white;
    border: none;
    border-radius: var(--radius-md);
    padding: var(--spacing-sm) var(--spacing-md);
    cursor: pointer;
    font-size: var(--text-sm);
    transition: background-color 0.2s ease;
  }
  
  .delete-image-button:hover {
    background-color: #c82333;
  }
  
  /* Updated form spacing */
  .form-section {
    margin-bottom: var(--spacing-xl);
    background-color: var(--bg-card);
    border-radius: var(--radius-lg);
    padding: var(--spacing-lg);
    box-shadow: var(--shadow-sm);
  }
  
  .form-section h3 {
    margin-top: 0;
    margin-bottom: var(--spacing-md);
    font-size: var(--text-lg);
    color: var(--text-primary);
    border-bottom: 1px solid var(--border-light);
    padding-bottom: var(--spacing-sm);
  }
  
  /* Primary button styles */
  .primary-button {
    background-color: var(--primary);
    color: white;
    padding: var(--spacing-md) var(--spacing-xl);
    font-size: var(--text-md);
    font-weight: 600;
    transition: all 0.3s ease;
    box-shadow: var(--shadow-sm);
  }
  
  .primary-button:hover {
    background-color: var(--primary-dark);
    transform: translateY(-2px);
    box-shadow: var(--shadow-md);
  }
  
  .form-help {
    font-size: var(--text-sm);
    color: var(--text-secondary);
    margin-top: var(--spacing-xs);
  }
/* app/assets/stylesheets/components/_version_controls.css */

/* Version Controls */
.version-info-section {
    background-color: var(--bg-accent);
    padding: var(--spacing-lg);
    border-radius: var(--radius-lg);
    margin-bottom: var(--spacing-lg);
  }
  
  .version-info-section h3 {
    margin-top: 0;
    margin-bottom: var(--spacing-md);
    color: var(--text-primary);
    font-size: var(--text-lg);
    border-bottom: 1px solid var(--border-light);
    padding-bottom: var(--spacing-sm);
  }
  
  .version-inputs {
    display: flex;
    flex-wrap: wrap;
    gap: var(--spacing-lg);
    margin-bottom: var(--spacing-md);
  }
  
  .version-field {
    flex: 1;
    min-width: 200px;
  }
  
  .version-increment {
    flex: 2;
    min-width: 300px;
  }
  
  .version-buttons {
    display: flex;
    gap: var(--spacing-sm);
  }
  
  .version-checkbox {
    position: absolute;
    opacity: 0;
    width: 0;
    height: 0;
  }
  
  .version-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: var(--spacing-sm) var(--spacing-md);
    border-radius: var(--radius-md);
    font-weight: 500;
    font-size: var(--text-sm);
    cursor: pointer;
    background-color: white;
    border: 1px solid var(--border-medium);
    transition: all 0.2s ease;
  }
  
  .version-button:hover {
    border-color: var(--primary-light);
  }
  
  .version-checkbox:checked + .version-button {
    background-color: var(--primary);
    color: white;
    border-color: var(--primary-dark);
  }
  
  .version-button.major {
    color: var(--danger);
  }
  
  .version-button.minor {
    color: var(--warning);
  }
  
  .version-button.patch {
    color: var(--success);
  }
  
  .version-checkbox:checked + .version-button.major {
    background-color: var(--danger);
    border-color: var(--danger);
    color: white;
  }
  
  .version-checkbox:checked + .version-button.minor {
    background-color: var(--warning);
    border-color: var(--warning);
    color: white;
  }
  
  .version-checkbox:checked + .version-button.patch {
    background-color: var(--success);
    border-color: var(--success);
    color: white;
  }
  
  .release-notes-input {
    width: 100%;
    min-height: 100px;
    font-family: inherit;
    resize: vertical;
  }
  
  /* Responsive adjustments */
  @media (max-width: 768px) {
    .version-inputs {
      flex-direction: column;
      gap: var(--spacing-md);
    }
    
    .version-field, 
    .version-increment {
      width: 100%;
    }
  }
/* app/assets/stylesheets/components/_product_version.css */

/* Product header and version display */
.product-header-content {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    flex-wrap: wrap;
    margin-bottom: var(--spacing-md);
  }
  
  .product-header-content h1 {
    margin-bottom: 0;
    margin-right: var(--spacing-md);
    flex: 1;
  }
  
  .product-version {
    display: inline-flex;
    align-items: center;
    padding: var(--spacing-sm) var(--spacing-md);
    background-color: var(--bg-accent);
    border-radius: var(--radius-md);
    margin-bottom: var(--spacing-sm);
  }
  
  .version-label {
    color: var(--text-secondary);
    font-size: var(--text-sm);
    margin-right: var(--spacing-sm);
  }
  
  .version-number {
    color: var(--primary);
    font-weight: 600;
    font-family: monospace;
    font-size: var(--text-md);
  }
  
  /* Release notes section */
  .release-notes {
    background-color: var(--bg-accent);
    border-radius: var(--radius-md);
    padding: var(--spacing-md);
    margin-top: var(--spacing-md);
    margin-bottom: var(--spacing-lg);
    border-left: 3px solid var(--primary);
  }
  
  .release-notes h3 {
    color: var(--text-primary);
    font-size: var(--text-md);
    margin-top: 0;
    margin-bottom: var(--spacing-sm);
  }
  
  .release-notes-content {
    color: var(--text-secondary);
    font-size: var(--text-sm);
    line-height: 1.6;
  }
  
  .release-notes-content p:last-child {
    margin-bottom: 0;
  }
  
  /* Version badge for product index */
  .version-badge {
    display: inline-block;
    padding: 0.25rem 0.5rem;
    background-color: var(--bg-accent);
    color: var(--text-secondary);
    border-radius: var(--radius-md);
    font-family: monospace;
    font-weight: 500;
  }
  
  /* Responsive adjustments */
  @media (max-width: 640px) {
    .product-header-content {
      flex-direction: column;
    }
    
    .product-version {
      margin-top: var(--spacing-sm);
      align-self: flex-start;
    }
  }
/* app/assets/stylesheets/components/_form_spacing.css */

/* Improved form spacing */
.spaced-form {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xl);
  }
  
  .form-section {
    background-color: var(--bg-card);
    border-radius: var(--radius-lg);
    padding: var(--spacing-lg);
    box-shadow: var(--shadow-sm);
    margin-bottom: var(--spacing-lg);
  }
  
  /* Remove the bottom margin from the last section */
  .form-section:last-child {
    margin-bottom: 0;
  }
  
  /* Version section specific override */
  .version-info-section {
    background-color: var(--bg-accent);
    padding: var(--spacing-lg);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-sm);
    margin-bottom: var(--spacing-lg);
  }
  
  /* Section titles */
  .form-section h3 {
    margin-top: 0;
    margin-bottom: var(--spacing-md);
    padding-bottom: var(--spacing-sm);
    border-bottom: 1px solid var(--border-light);
    color: var(--text-primary);
    font-size: var(--text-lg);
  }
  
  /* Form actions section */
  .form-actions {
    padding-top: var(--spacing-lg);
    border-top: 1px solid var(--border-light);
    display: flex;
    gap: var(--spacing-md);
  }
  
  /* Spacing for nested form groups */
  .form-section .form-group {
    margin-bottom: var(--spacing-md);
  }
  
  .form-section .form-group:last-child {
    margin-bottom: 0;
  }
  
  /* Error messages */
  .error-messages {
    background-color: rgba(var(--danger-rgb, 221, 43, 14), 0.1);
    border-left: 4px solid var(--danger);
  }
  
  /* Add some CSS variables if needed */
  :root {
    --danger-rgb: 221, 43, 14;
  }
/* app/assets/stylesheets/components/_trix_overrides.css */

/* Disable file attachment tools in Trix editor */
.trix-button-group.trix-button-group--file-tools {
    display: none !important;
  }
  
  /* Alternative approach - hide just the attach button */
  .trix-button--icon-attach {
    display: none !important;
  }
/* Version History Styles */
.version-selector {
    margin-left: 1rem;
  }
  
  .version-select {
    padding: 0.25rem 0.5rem;
    border: 1px solid var(--border-medium);
    border-radius: var(--radius-md);
    background-color: var(--bg-card);
    font-size: 0.875rem;
  }
  
  .version-history-summary {
    margin-top: var(--spacing-lg);
    background-color: var(--bg-accent);
    border-radius: var(--radius-md);
    padding: var(--spacing-md);
  }
  
  .version-timeline {
    margin-top: var(--spacing-md);
  }
  
  .version-timeline-item {
    position: relative;
    padding-left: 2rem;
    padding-bottom: 1.5rem;
    border-left: 2px solid var(--border-medium);
    margin-left: 0.5rem;
  }
  
  .version-timeline-item:last-child {
    border-left: 2px solid transparent;
    padding-bottom: 0;
  }
  
  .version-timeline-badge {
    position: absolute;
    left: -0.5rem;
    top: 0;
    width: 1rem;
    height: 1rem;
    border-radius: 50%;
    background-color: var(--primary);
  }
  
  .version-timeline-item.major .version-timeline-badge {
    background-color: var(--danger);
  }
  
  .version-timeline-item.minor .version-timeline-badge {
    background-color: var(--warning);
  }
  
  .version-timeline-item.patch .version-timeline-badge {
    background-color: var(--success);
  }
  
  .version-timeline-content {
    background-color: var(--bg-card);
    border-radius: var(--radius-md);
    padding: var(--spacing-md);
    box-shadow: var(--shadow-sm);
  }
  
  .version-timeline-content h4 {
    margin: 0;
    display: flex;
    justify-content: space-between;
    align-items: center;
  }
  
  .version-timeline-date {
    font-size: 0.875rem;
    color: var(--text-muted);
    font-weight: normal;
  }
  
  .version-timeline-notes {
    margin-top: var(--spacing-sm);
    font-size: 0.875rem;
    color: var(--text-secondary);
  }
  
  /* Admin Specific Version Styles */
  .version-display {
    font-family: monospace;
    font-size: 1rem;
    font-weight: 600;
    padding: 0.5rem;
    background-color: var(--bg-accent);
    border-radius: var(--radius-md);
    text-align: center;
  }
  
  .version-example {
    font-family: monospace;
    font-size: 0.875rem;
    margin-top: 0.25rem;
  }
  
  .update-type-badge {
    display: inline-block;
    padding: 0.25rem 0.5rem;
    border-radius: var(--radius-md);
    font-size: 0.75rem;
    font-weight: 600;
  }
  
  .update-type-badge.major {
    background-color: rgba(221, 43, 14, 0.2);
    color: var(--danger);
  }
  
  .update-type-badge.minor {
    background-color: rgba(252, 109, 38, 0.2);
    color: var(--warning);
  }
  
  .update-type-badge.patch {
    background-color: rgba(45, 161, 96, 0.2);
    color: var(--success);
  }
  
  .update-type-badge.initial {
    background-color: rgba(110, 73, 203, 0.2);
    color: var(--primary);
  }
  
  .version-changes {
    margin: 0;
    padding-left: 1.25rem;
    font-size: 0.875rem;
  }
  
  .empty-state {
    padding: 2rem;
    text-align: center;
    color: var(--text-muted);
    background-color: var(--bg-accent);
    border-radius: var(--radius-md);
  }
  
  /* Historical Version View */
  .historical-version-banner {
    background-color: var(--warning);
    color: white;
    padding: 0.5rem 1rem;
    border-radius: var(--radius-md);
    margin-bottom: 1rem;
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-weight: 500;
  }
  
  .version-details {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
    margin-top: 1rem;
    margin-bottom: 1rem;
  }
  
  .version-details-item {
    background-color: var(--bg-accent);
    padding: 0.5rem 1rem;
    border-radius: var(--radius-md);
  }
  
  .version-details-label {
    font-size: 0.875rem;
    color: var(--text-muted);
    margin-bottom: 0.25rem;
  }
  
  .version-details-value {
    font-weight: 500;
  }
  
  .download-info-message {
    display: flex;
    align-items: center;
    gap: 1rem;
    padding: 1rem;
    background-color: var(--bg-accent);
    border-radius: var(--radius-md);
    color: var(--text-secondary);
  }
  
  .download-info-message svg {
    flex-shrink: 0;
    color: var(--warning);
  }
  
  .download-info-message p {
    margin: 0;
  }
  
  /* Version history in admin form */
  .version-section-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: var(--spacing-md);
  }
  
  .version-history-link {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.5rem 0.75rem;
    background-color: var(--bg-card);
    border: 1px solid var(--border-medium);
    border-radius: var(--radius-md);
    color: var(--primary);
    font-size: 0.875rem;
    text-decoration: none;
    transition: all 0.2s ease;
  }
  
  .version-history-link:hover {
    background-color: var(--primary);
    color: white;
    border-color: var(--primary-dark);
  }
  
  .version-history-summary {
    margin-top: var(--spacing-md);
    padding: var(--spacing-md);
    background-color: var(--bg-accent);
    border-radius: var(--radius-md);
  }
  
  .version-history-summary h4 {
    margin-top: 0;
    margin-bottom: var(--spacing-sm);
    font-size: 0.875rem;
    color: var(--text-secondary);
  }
  
  .version-history-list {
    list-style: none;
    padding: 0;
    margin: 0;
  }
  
  .version-history-item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.5rem 0;
    border-bottom: 1px solid var(--border-light);
  }
  
  .version-history-item:last-child {
    border-bottom: none;
  }
  
  .version-date {
    font-size: 0.875rem;
    color: var(--text-muted);
  }
  
  /* Version detail view */
  .version-info-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
    gap: 1.5rem;
  }
  
  .version-info-item {
    background-color: var(--bg-accent);
    padding: 1rem;
    border-radius: var(--radius-md);
  }
  
  .version-info-label {
    font-size: 0.875rem;
    color: var(--text-muted);
    margin-bottom: 0.5rem;
  }
  
  .version-info-value {
    font-weight: 500;
    word-break: break-word;
  }
  
  .release-notes-display {
    background-color: var(--bg-accent);
    padding: 1rem;
    border-radius: var(--radius-md);
    white-space: pre-line;
  }
  
  .description-display {
    background-color: var(--bg-accent);
    padding: 1rem;
    border-radius: var(--radius-md);
  }
  
  /* Version timeline current item highlight */
  .version-timeline-item.current .version-timeline-content {
    border: 2px solid var(--primary);
    box-shadow: 0 0 10px rgba(110, 73, 203, 0.1);
  }
  
  /* Version management on edit page */
  .version-inputs {
    display: flex;
    flex-wrap: wrap;
    gap: var(--spacing-lg);
    margin-bottom: var(--spacing-md);
  }
  
  .version-field {
    flex: 1;
    min-width: 200px;
  }
  
  .version-increment {
    flex: 2;
    min-width: 300px;
  }
  
  .version-buttons {
    display: flex;
    gap: var(--spacing-sm);
  }
  
  .version-checkbox {
    position: absolute;
    opacity: 0;
    width: 0;
    height: 0;
  }
  
  .version-button {
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    width: 100%;
    padding: var(--spacing-sm) var(--spacing-md);
    border-radius: var(--radius-md);
    font-weight: 500;
    font-size: var(--text-sm);
    cursor: pointer;
    background-color: white;
    border: 1px solid var(--border-medium);
    transition: all 0.2s ease;
  }
  
  .version-button:hover {
    border-color: var(--primary-light);
    transform: translateY(-2px);
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
  }
  
  .version-button.selected,
  .version-checkbox:checked + .version-button {
    background-color: rgba(110, 73, 203, 0.2);
    border-color: var(--primary);
    box-shadow: 0 0 0 2px rgba(110, 73, 203, 0.3);
    transform: translateY(-2px);
  }
  
  .version-checkbox:checked + .version-button.major,
  .version-button.major.selected {
    background-color: rgba(221, 43, 14, 0.2);
    border-color: var(--danger);
    box-shadow: 0 0 0 2px rgba(221, 43, 14, 0.3);
  }
  
  .version-checkbox:checked + .version-button.minor,
  .version-button.minor.selected {
    background-color: rgba(252, 109, 38, 0.2);
    border-color: var(--warning);
    box-shadow: 0 0 0 2px rgba(252, 109, 38, 0.3);
  }
  
  .version-checkbox:checked + .version-button.patch,
  .version-button.patch.selected {
    background-color: rgba(45, 161, 96, 0.2);
    border-color: var(--success);
    box-shadow: 0 0 0 2px rgba(45, 161, 96, 0.3);
  }
  
  .version-update-message {
    background-color: rgba(110, 73, 203, 0.1);
    padding: var(--spacing-md);
    border-radius: var(--radius-md);
    border-left: 4px solid var(--primary);
    margin: var(--spacing-md) 0;
  }
  
  .version-history-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: var(--spacing-sm);
  }
  
  .view-all-versions {
    font-size: 0.875rem;
    color: var(--primary);
    text-decoration: none;
  }
  
  .view-all-versions:hover {
    text-decoration: underline;
  }
  
  #version-actions {
    display: flex;
    gap: var(--spacing-md);
  }
  
  /* Improved disabled button styling */
  .button-disabled {
    opacity: 0.5 !important;
    cursor: not-allowed !important;
    pointer-events: none !important;
    background-color: #999 !important;
    border-color: #888 !important;
    color: #f5f5f5 !important;
    box-shadow: none !important;
  }
  
  /* Static version display on edit page */
  .version-display-section {
    margin-bottom: var(--spacing-lg);
  }
  
  .version-info-row {
    margin-bottom: var(--spacing-md);
  }
  
  /* Animations */
  @keyframes shake {
    0%, 100% { transform: translateX(0); }
    10%, 30%, 50%, 70%, 90% { transform: translateX(-5px); }
    20%, 40%, 60%, 80% { transform: translateX(5px); }
  }
  
  .shake-animation {
    animation: shake 0.5s cubic-bezier(.36,.07,.19,.97) both;
  }
  
  @keyframes pulse {
    0%, 100% { transform: scale(1); }
    50% { transform: scale(1.05); }
  }
  
  .version-button.selected {
    animation: pulse 1s cubic-bezier(0.4, 0, 0.6, 1) 1;
  }

  .historical-version-banner {
    background-color: var(--warning, #fc6d26);
    color: white;
    padding: 0.5rem 1rem;
    border-radius: 0.375rem;
    margin-bottom: 1rem;
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-weight: 500;
  }
  
  .version-details {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
    margin-top: 1rem;
    margin-bottom: 1rem;
  }
  
  .version-details-item {
    background-color: var(--bg-accent, #f5f5f5);
    padding: 0.5rem 1rem;
    border-radius: 0.375rem;
  }
  
  .version-details-label {
    font-size: 0.875rem;
    color: var(--text-muted, #9e9e9e);
    margin-bottom: 0.25rem;
  }
  
  .version-details-value {
    font-weight: 500;
  }
  
  .download-info-message {
    display: flex;
    align-items: center;
    gap: 1rem;
    padding: 1rem;
    background-color: var(--bg-accent, #f5f5f5);
    border-radius: 0.375rem;
    color: var(--text-secondary, #616161);
  }
  
  .download-info-message svg {
    flex-shrink: 0;
    color: var(--warning, #fc6d26);
  }
  
  .download-info-message p {
    margin: 0;
  }
  
  /* Version timeline current item highlight */
  .version-timeline-item.current .version-timeline-content {
    border: 2px solid var(--primary, #6e49cb);
    box-shadow: 0 0 10px rgba(110, 73, 203, 0.1);
  }

  # File: app/assets/stylesheets/components/_version_history.css
# Make sure these additional styles are present

/* Expandable section styles */
.expandable-section {
  border-radius: var(--radius-md, 6px);
  margin-top: var(--spacing-lg);
}

.expandable-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  cursor: pointer;
  padding: var(--spacing-md);
  background-color: var(--bg-accent);
  border-radius: var(--radius-md);
  transition: background-color 0.2s ease;
}

.expandable-header:hover {
  background-color: rgba(var(--primary-rgb, 110, 73, 203), 0.1);
}

.expandable-header h3 {
  margin: 0;
  font-size: 1.125rem;
  color: var(--text-primary);
}

.expand-toggle {
  background: none;
  border: none;
  padding: 0.25rem;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  color: var(--text-secondary);
  transition: all 0.2s ease;
}

.expand-toggle:hover {
  background-color: rgba(0, 0, 0, 0.05);
  color: var(--primary);
}

.chevron-icon {
  transition: transform 0.3s ease;
}

.expandable-content {
  padding: var(--spacing-md);
  animation: fadeIn 0.3s ease;
}

@keyframes fadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}
/* app/assets/stylesheets/components/_landing_page.css */

/* Reset and Base Styles */
* {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
  }
  
  html, body {
    height: 100%;
    margin: 0;
    padding: 0;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
    background-color: white;
    color: #333;
  }
  
  /* Main Container */
  .landing-container {
    min-height: 100vh;
    display: flex;
    flex-direction: column;
    background-color: white;
  }
  
  /* Main Content */
  .landing-content {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 3rem 1rem;
    max-width: 1200px;
    margin: 0 auto;
    width: 100%;
  }
  
  @media (min-width: 768px) {
    .landing-content {
      flex-direction: row;
      gap: 4rem;
      align-items: center;
      padding: 3rem 2rem;
    }
  }
  
  /* Content Section (Left) */
  .content-section {
    text-align: center;
    margin-bottom: 2rem;
  }
  
  @media (min-width: 768px) {
    .content-section {
      flex: 1;
      text-align: left;
      margin-bottom: 0;
    }
  }
  
  .logo-container {
    margin-bottom: 1.5rem;
  }
  
  .gitlab-logo {
    height: 50px;
  }
  
  .main-title {
    font-size: 2.25rem;
    font-weight: 700;
    margin-bottom: 1rem;
    color: #252525;
  }
  
  .main-subtitle {
    font-size: 1.25rem;
    color: #666;
    max-width: 500px;
    margin-left: auto;
    margin-right: auto;
    margin-bottom: 2rem;
  }
  
  @media (min-width: 768px) {
    .main-subtitle {
      margin-left: 0;
    }
  }
  
  /* View Accelerators Button */
  .content-actions {
    margin-top: 1.5rem;
  }
  
  .view-accelerators-button {
    padding: 0.75rem 1.5rem;
    background-color: #fff;
    color: #6e49cb;
    border: 1px solid #6e49cb;
    border-radius: 0.25rem;
    font-size: 1rem;
    font-weight: 500;
    cursor: pointer;
    transition: all 0.2s ease;
  }
  
  .view-accelerators-button:hover {
    background-color: rgba(110, 73, 203, 0.05);
    transform: translateY(-1px);
  }
  
  /* Form Section (Right) */
  .form-section {
    width: 100%;
    max-width: 400px;
  }
  
  .access-form-wrapper {
    background-color: #fff;
    padding: 1.5rem;
    border-radius: 0.5rem;
    box-shadow: 0 4px 15px rgba(0, 0, 0, 0.05);
    border: 1px solid #f5f5f5;
  }
  
  .access-form-wrapper h2 {
    font-size: 1.25rem;
    margin-bottom: 0.5rem;
    color: #252525;
  }
  
  .form-info {
    color: #666;
    margin-bottom: 1.25rem;
    font-size: 0.9rem;
  }
  
  .access-form {
    display: flex;
    flex-direction: column;
  }
  
  .access-input {
    width: 100%;
    padding: 0.75rem 1rem;
    border: 1px solid #e0e0e0;
    border-radius: 0.25rem;
    font-size: 1rem;
    margin-bottom: 1rem;
    transition: all 0.2s ease;
  }
  
  .access-input:focus {
    outline: none;
    border-color: #6e49cb;
    box-shadow: 0 0 0 2px rgba(110, 73, 203, 0.1);
  }
  
  .submit-button {
    width: 100%;
    padding: 0.75rem 1rem;
    background-color: #fc6d26;
    color: white;
    border: none;
    border-radius: 0.25rem;
    font-size: 1rem;
    font-weight: 500;
    cursor: pointer;
    transition: all 0.2s ease;
  }
  
  .submit-button:hover {
    background-color: #e45c1a;
  }
  
  .error-message {
    background-color: rgba(221, 43, 14, 0.05);
    border-left: 3px solid #fc6d26;
    color: #e45c1a;
    padding: 0.75rem 1rem;
    margin-bottom: 1rem;
    font-size: 0.9rem;
    border-radius: 0.25rem;
  }
  
  /* Footer */
  .landing-footer {
    padding: 1.5rem;
    text-align: center;
    margin-top: auto;
    border-top: 1px solid #f5f5f5;
  }
  
  .admin-link {
    display: inline-block;
    padding: 0.5rem 1rem;
    color: #6e49cb;
    text-decoration: none;
    font-size: 0.875rem;
    border-radius: 0.25rem;
    transition: all 0.2s ease;
  }
  
  .admin-link:hover {
    background-color: rgba(110, 73, 203, 0.05);
    text-decoration: underline;
  }
/* app/assets/stylesheets/components/_toggle_switch.css */

/* Modern Toggle Switch */
.checkbox-toggle {
    display: flex;
    align-items: center;
    margin-top: 0.75rem;
  }
  
  .toggle-checkbox {
    position: absolute;
    opacity: 0;
    width: 0;
    height: 0;
  }
  
  .toggle-label {
    display: flex;
    align-items: center;
    cursor: pointer;
  }
  
  .toggle-label::before {
    content: '';
    width: 2.5rem;
    height: 1.25rem;
    margin-right: 0.75rem;
    background-color: #d1d5db;
    border-radius: 9999px;
    transition: all 0.3s ease;
    position: relative;
  }
  
  .toggle-label::after {
    content: '';
    position: absolute;
    left: 0.25rem;
    width: 0.875rem;
    height: 0.875rem;
    background-color: white;
    border-radius: 50%;
    transition: all 0.3s ease;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
  }
  
  .toggle-checkbox:checked + .toggle-label::before {
    background-color: var(--success, #2da160);
  }
  
  .toggle-checkbox:checked + .toggle-label::after {
    transform: translateX(1.25rem);
  }
  
  .toggle-checkbox:focus + .toggle-label::before {
    box-shadow: 0 0 0 2px rgba(45, 161, 96, 0.2);
  }
  
  .toggle-text {
    font-size: 0.875rem;
    color: var(--text-secondary, #616161);
  }
  
  /* Updated Form Helper Text */
  .form-help {
    margin-top: 0.5rem;
    font-size: 0.75rem;
    color: var(--text-muted, #9e9e9e);
    line-height: 1.4;
  }
  
  /* Published Status Badges */
  .publish-status {
    display: inline-flex;
    align-items: center;
    gap: 0.375rem;
    padding: 0.25rem 0.5rem;
    border-radius: 9999px;
    font-size: 0.75rem;
    font-weight: 500;
  }
  
  .publish-status.published {
    background-color: #e3fcef;
    color: #2da160;
  }
  
  .publish-status.unpublished {
    background-color: #f5f5f5;
    color: #757575;
  }
  
  .publish-status svg {
    width: 0.75rem;
    height: 0.75rem;
  }
/* Admin Layout */
.admin-container {
    min-height: 100vh;
    background-color: var(--bg-body);
  }
  
  .admin-nav {
    background-color: var(--bg-header);
    padding: var(--spacing-md) var(--spacing-lg);
    display: flex;
    align-items: center;
    gap: var(--spacing-lg);
    position: sticky;
    top: 0;
    z-index: var(--z-nav);
    box-shadow: var(--shadow-sm);
  }
  
  .admin-main {
    padding: var(--spacing-xl);
    max-width: 1400px;
    margin: 0 auto;
  }
  
  /* Admin Header */
  .admin-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: var(--spacing-xl);
    background: var(--bg-card);
    padding: var(--spacing-lg);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-sm);
  }
  
  /* Marketplace Layout */
  .marketplace-container {
    max-width: 1200px;
    margin: 0 auto;
    padding: var(--spacing-xl);
  }
  
  .marketplace-header {
    background: var(--bg-card);
    padding: var(--spacing-xl);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-sm);
    margin-bottom: var(--spacing-xl);
  }
  
  .marketplace-content {
    background: var(--bg-card);
    padding: var(--spacing-xl);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-sm);
  }
  
  /* Product Layout */
  .product-detail-content {
    background: var(--bg-card);
    padding: var(--spacing-xl);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-sm);
  }
  
  .product-detail-header {
    margin-bottom: var(--spacing-xl);
    padding-bottom: var(--spacing-lg);
    border-bottom: 1px solid var(--border-light);
  }
  
  .product-detail-sections {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xl);
  }
  
  /* Auth Layouts */
  .auth-container {
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    background: linear-gradient(
      135deg,
      var(--gitlab-purple) 0%,
      var(--gitlab-blue) 100%
    );
    padding: var(--spacing-md);
  }
  
  .auth-box {
    background: var(--bg-card);
    padding: var(--spacing-xl);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-lg);
    width: 100%;
    max-width: 420px;
  }
  
  /* Grid Layouts */
  .grid {
    display: grid;
    gap: var(--spacing-lg);
  }
  
  .grid-2 {
    grid-template-columns: repeat(2, 1fr);
  }
  
  .grid-3 {
    grid-template-columns: repeat(3, 1fr);
  }
  
  .grid-4 {
    grid-template-columns: repeat(4, 1fr);
  }
  
  /* Responsive Adjustments */
  @media (max-width: 1024px) {
    .grid-4 {
      grid-template-columns: repeat(3, 1fr);
    }
  }
  
  @media (max-width: 768px) {
    .admin-main {
      padding: var(--spacing-md);
    }
  
    .marketplace-container {
      padding: var(--spacing-md);
    }
  
    .grid-3, .grid-4 {
      grid-template-columns: repeat(2, 1fr);
    }
  
    .admin-header {
      flex-direction: column;
      gap: var(--spacing-md);
      text-align: center;
    }
  }
  
  @media (max-width: 640px) {
    .grid-2, .grid-3, .grid-4 {
      grid-template-columns: 1fr;
    }
  }
/* Access Code Features */
.access-code-form {
  background: var(--bg-card);
  padding: var(--spacing-xl);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-md);
}

.access-info {
  background: var(--bg-accent);
  padding: var(--spacing-md);
  border-radius: var(--radius-md);
  margin-top: var(--spacing-md);
}

/* Product Features */
.product-row {
  background: var(--bg-card);
  border: 1px solid var(--border-light);
  border-radius: var(--radius-lg);
  padding: var(--spacing-lg);
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  transition: var(--transition-smooth);
  margin-bottom: var(--spacing-md);
}

.product-row:hover {
  border-color: var(--primary);
  transform: translateY(-2px);
  box-shadow: var(--shadow-md);
}

.product-main-content {
  flex: 1;
  margin-right: var(--spacing-xl);
}

.product-title {
  font-size: var(--text-xl);
  font-weight: 600;
  color: var(--text-primary);
  margin-bottom: var(--spacing-sm);
}

.product-description {
  color: var(--text-secondary);
  font-size: var(--text-sm);
  line-height: 1.6;
}

/* CICD Values Display */
.cicd-values-section {
  background: var(--bg-accent);
  padding: var(--spacing-lg);
  border-radius: var(--radius-lg);
  margin-bottom: var(--spacing-xl);
}

.cicd-value-item {
  background: var(--bg-card);
  border: 1px solid var(--border-light);
  border-radius: var(--radius-md);
  margin-bottom: var(--spacing-md);
  overflow: hidden;
}

.cicd-value-header {
  background: var(--bg-accent);
  padding: var(--spacing-md);
  font-weight: 500;
  border-bottom: 1px solid var(--border-light);
}

.cicd-value-content {
  padding: var(--spacing-md);
}

.cicd-value-code {
  font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace;
  font-size: var(--text-sm);
  background: var(--bg-accent);
  padding: var(--spacing-sm) var(--spacing-md);
  border-radius: var(--radius-sm);
  color: var(--text-secondary);
}

/* Video Container */
.video-container {
  position: relative;
  padding-bottom: 56.25%; /* 16:9 aspect ratio */
  height: 0;
  overflow: hidden;
  border-radius: var(--radius-lg);
  background: var(--bg-accent);
  margin: var(--spacing-md) 0;
}

.video-container iframe {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  border: none;
}

/* Downloads Section */
.download-container {
  margin: var(--spacing-md) 0;
}

.download-link {
  display: block;
  text-decoration: none;
  color: inherit;
}

.download-info {
  display: flex;
  align-items: center;
  padding: var(--spacing-md);
  background: var(--bg-accent);
  border: 1px solid var(--border-light);
  border-radius: var(--radius-md);
  transition: var(--transition-base);
}

.download-info:hover {
  background: var(--bg-card);
  border-color: var(--primary);
}

.download-icon {
  width: 2.5rem;
  height: 2.5rem;
  margin-right: var(--spacing-md);
  color: var(--primary);
}

.download-details {
  flex: 1;
}

.download-name {
  font-weight: 500;
  color: var(--text-primary);
  margin-bottom: var(--spacing-xs);
}

.download-size {
  font-size: var(--text-sm);
  color: var(--text-muted);
}

/* Rich Text Content */
.rich-text-content {
  color: var(--text-secondary);
  line-height: 1.6;
}

.rich-text-content h1,
.rich-text-content h2,
.rich-text-content h3 {
  color: var(--text-primary);
  margin-top: var(--spacing-xl);
  margin-bottom: var(--spacing-md);
}

.rich-text-content p {
  margin-bottom: var(--spacing-md);
}

.rich-text-content ul,
.rich-text-content ol {
  margin-bottom: var(--spacing-md);
  padding-left: var(--spacing-xl);
}

.rich-text-content img {
  max-width: 100%;
  height: auto;
  border-radius: var(--radius-md);
  margin: var(--spacing-md) 0;
}
/* Login/Welcome Page Container */
.login-container {
    min-height: 100vh;
    width: 100vw;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: var(--spacing-md);
    background: linear-gradient(
      135deg,
      var(--gitlab-purple) 0%,
      var(--primary-light) 33%,
      var(--gitlab-orange) 66%,
      var(--gitlab-red) 100%
    );
    background-size: 400% 400%;
    animation: gradientAnimation 15s ease infinite;
  }
  
  @keyframes gradientAnimation {
    0% { background-position: 0% 50%; }
    50% { background-position: 100% 50%; }
    100% { background-position: 0% 50%; }
  }
  
  /* Login Box Styles */
  .login-box,
  .signin-box {
    background: var(--bg-card);
    padding: var(--spacing-2xl);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-lg);
    width: 100%;
    max-width: 420px;
    text-align: center;
    backdrop-filter: blur(10px);
    position: relative;
    border: 1px solid rgba(255, 255, 255, 0.1);
  }
  
  .welcome-text {
    font-size: var(--text-2xl);
    font-weight: 600;
    color: var(--text-primary);
    margin-bottom: var(--spacing-md);
  }
  
  .welcome-subtext {
    color: var(--text-secondary);
    margin-bottom: var(--spacing-xl);
  }
  
  /* Access Form */
  .access-form {
    width: 100%;
  }
  
  .access-input {
    width: 100%;
    padding: var(--spacing-md);
    border: 2px solid var(--border-medium);
    border-radius: var(--radius-md);
    font-size: var(--text-base);
    margin-bottom: var(--spacing-lg);
    transition: var(--transition-base);
    background: var(--bg-card);
  }
  
  .access-input:focus {
    outline: none;
    border-color: var(--gitlab-purple);
    box-shadow: 0 0 0 3px rgba(110, 73, 203, 0.1);
  }
  
  .submit-button {
    width: 100%;
    padding: var(--spacing-md);
    background: var(--gitlab-purple);
    color: var(--text-light);
    border: none;
    border-radius: var(--radius-md);
    font-size: var(--text-base);
    font-weight: 500;
    cursor: pointer;
    transition: var(--transition-base);
  }
  
  .submit-button:hover {
    background: var(--primary-light);
    transform: translateY(-1px);
  }
  
  .submit-button:active {
    transform: translateY(0);
  }
  
  /* Admin Sign In Specific Styles */
  .admin-signin {
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    background: linear-gradient(
      135deg,
      var(--gitlab-purple) 0%,
      var(--gitlab-blue) 100%
    );
    padding: var(--spacing-md);
  }
  
  .admin-signin .signin-box {
    position: relative;
  }
  
  .signin-header {
    position: absolute;
    top: var(--spacing-md);
    left: var(--spacing-md);
  }
  
  .back-to-main {
    display: inline-flex;
    align-items: center;
    gap: var(--spacing-xs);
    color: var(--primary);
    font-size: var(--text-sm);
    padding: var(--spacing-xs) var(--spacing-sm);
    border-radius: var(--radius-md);
    transition: var(--transition-base);
  }
  
  .back-to-main:hover {
    background: rgba(110, 73, 203, 0.1);
  }
  
  .back-to-main svg {
    width: 16px;
    height: 16px;
  }
  
  .okta-signin-button {
    width: 100%;
    padding: var(--spacing-md);
    background: var(--gitlab-blue);
    color: var(--text-light);
    border: none;
    border-radius: var(--radius-md);
    font-size: var(--text-base);
    font-weight: 500;
    cursor: pointer;
    transition: var(--transition-base);
    text-decoration: none;
    display: inline-block;
    text-align: center;
    margin-top: var(--spacing-md);
  }
  
  .okta-signin-button:hover {
    background: var(--secondary);
    transform: translateY(-1px);
  }
  
  /* Error Messages */
  .error-message,
  .signin-error {
    background: rgba(221, 43, 14, 0.1);
    border: 1px solid var(--gitlab-red);
    color: var(--gitlab-red);
    padding: var(--spacing-md);
    border-radius: var(--radius-md);
    margin-bottom: var(--spacing-lg);
    font-size: var(--text-sm);
  }
  
  /* Admin Link in Welcome Page */
  .admin-link-container {
    margin-top: var(--spacing-xl);
    padding-top: var(--spacing-lg);
    border-top: 1px solid var(--border-light);
  }
  
  .admin-link {
    color: var(--primary);
    text-decoration: none;
    font-size: var(--text-sm);
    transition: var(--transition-base);
  }
  
  .admin-link:hover {
    color: var(--primary-light);
  }
  
  /* Development Mode Styles */
  .dev-info {
    margin-top: var(--spacing-xl);
    padding-top: var(--spacing-lg);
    border-top: 1px solid var(--border-light);
  }
  
  .dev-button {
    background: var(--success) !important;
  }
  
  .dev-notice {
    margin-top: var(--spacing-md);
    font-size: var(--text-sm);
    color: var(--text-muted);
  }
  
  /* Responsive Adjustments */
  @media (max-width: 640px) {
    .login-box,
    .signin-box {
      padding: var(--spacing-xl);
    }
  
    .welcome-text {
      font-size: var(--text-xl);
    }
  }
/* Marketplace and Product List Styles */
.products-list {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-lg);
  }
  
  .product-row {
    background: var(--bg-card);
    border: 1px solid var(--border-light);
    border-radius: var(--radius-lg);
    padding: var(--spacing-xl);
    transition: var(--transition-smooth);
    display: grid;
    grid-template-columns: 1fr auto;
    gap: var(--spacing-xl);
    align-items: start;
  }
  
  .product-row:hover {
    border-color: var(--primary);
    transform: translateY(-2px);
    box-shadow: var(--shadow-md);
  }
  
  .product-main-content {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
  }
  
  .product-header {
    display: flex;
    align-items: center;
    gap: var(--spacing-md);
    margin-bottom: var(--spacing-md);
  }
  
  .product-title {
    font-size: var(--text-xl);
    font-weight: 600;
    color: var(--text-primary);
    margin: 0;
  }
  
  .product-id {
    font-size: var(--text-sm);
    color: var(--text-muted);
    background: var(--bg-accent);
    padding: var(--spacing-xs) var(--spacing-sm);
    border-radius: var(--radius-sm);
  }
  
  .product-description {
    color: var(--text-secondary);
    font-size: var(--text-base);
    line-height: 1.6;
  }
  
  .product-actions {
    display: flex;
    gap: var(--spacing-md);
    align-items: center;
    justify-content: flex-end;
  }
  
  .view-details-btn {
    display: inline-flex;
    align-items: center;
    padding: var(--spacing-sm) var(--spacing-lg);
    background: var(--primary);
    color: var(--text-light);
    border: none;
    border-radius: var(--radius-md);
    font-size: var(--text-sm);
    font-weight: 500;
    text-decoration: none;
    transition: var(--transition-base);
    white-space: nowrap;
  }
  
  .view-details-btn:hover {
    background: var(--primary-light);
    transform: translateY(-1px);
    color: var(--text-light);
  }
  
  /* Header Section */
  .marketplace-header {
    margin-bottom: var(--spacing-xl);
  }
  
  .header-content {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: var(--spacing-lg);
  }
  
  .change-access-link {
    display: inline-flex;
    align-items: center;
    padding: var(--spacing-sm) var(--spacing-lg);
    background: transparent;
    color: var(--primary);
    border: 1px solid var(--primary);
    border-radius: var(--radius-md);
    font-size: var(--text-sm);
    font-weight: 500;
    text-decoration: none;
    transition: var(--transition-base);
  }
  
  .change-access-link:hover {
    background: var(--primary);
    color: var(--text-light);
  }
  
  .access-info {
    background: var(--bg-accent);
    padding: var(--spacing-lg);
    border-radius: var(--radius-md);
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: var(--spacing-lg);
  }
  
  .access-info p {
    margin: 0;
    color: var(--text-secondary);
  }
  
  /* Admin Access Codes List */
  .admin-table {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0;
    margin: var(--spacing-lg) 0;
  }
  
  .admin-table th {
    background: var(--bg-accent);
    text-align: left;
    padding: var(--spacing-md);
    font-weight: 600;
    color: var(--text-secondary);
    border-bottom: 1px solid var(--border-medium);
  }
  
  .admin-table td {
    padding: var(--spacing-md);
    border-bottom: 1px solid var(--border-light);
    vertical-align: middle;
  }
  
  .admin-table tr:last-child td {
    border-bottom: none;
  }
  
  .admin-table .actions {
    display: flex;
    gap: var(--spacing-sm);
    justify-content: flex-end;
  }
  
  .admin-table .button {
    margin: 0;
  }
  
  /* Responsive Adjustments */
  @media (max-width: 768px) {
    .product-row {
      grid-template-columns: 1fr;
      padding: var(--spacing-lg);
    }
  
    .product-actions {
      justify-content: flex-start;
    }
  
    .admin-table {
      display: block;
      overflow-x: auto;
    }
  
    .admin-table .actions {
      flex-direction: row;
      justify-content: flex-start;
    }
  }
  
  @media (max-width: 480px) {
    .header-content {
      flex-direction: column;
      gap: var(--spacing-md);
      text-align: center;
    }
  
    .access-info {
      grid-template-columns: 1fr;
    }
  }
/* app/assets/stylesheets/features/_product_detail.css */

.product-detail-container {
    min-height: 100vh;
    display: flex;
    flex-direction: column;
    background-color: #f9f9f9;
  }
  
  /* Header */
  .product-detail-header {
    background-color: white;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
    padding: 1rem 2rem;
    position: sticky;
    top: 0;
    z-index: 100;
  }
  
  .header-content {
    display: flex;
    justify-content: space-between;
    align-items: center;
    max-width: 1200px;
    margin: 0 auto;
    width: 100%;
  }
  
  .header-navigation {
    display: flex;
    align-items: center;
    gap: 1.5rem;
  }
  
  .back-link {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    color: #6e49cb;
    text-decoration: none;
    font-size: 0.875rem;
    font-weight: 500;
    transition: all 0.2s ease;
  }
  
  .back-link:hover {
    color: #5d3eb5;
  }
  
  .back-link svg {
    transition: transform 0.2s ease;
  }
  
  .back-link:hover svg {
    transform: translateX(-3px);
  }
  
  .access-info-mini {
    font-size: 0.875rem;
    color: #666;
  }
  
  .access-id {
    padding: 0.25rem 0.5rem;
    background-color: #f5f5f5;
    border-radius: 0.25rem;
    font-family: monospace;
  }
  
  /* Product Version Selector */
  .product-version-selector {
    display: flex;
    align-items: center;
    gap: 1rem;
  }
  
  .historical-version-badge {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.25rem 0.75rem;
    background-color: #fff3e0;
    color: #f57c00;
    border-radius: 2rem;
    font-size: 0.75rem;
    font-weight: 500;
  }
  
  .version-dropdown {
    position: relative;
  }
  
  .version-select {
    padding: 0.25rem 0.5rem;
    border: 1px solid #e0e0e0;
    border-radius: 0.25rem;
    background-color: white;
    font-size: 0.875rem;
    color: #333;
    cursor: pointer;
    appearance: none;
    padding-right: 1.5rem;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23666' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 0.5rem center;
    background-size: 16px;
  }
  
  .version-select:focus {
    outline: none;
    border-color: #6e49cb;
    box-shadow: 0 0 0 3px rgba(110, 73, 203, 0.1);
  }
  
  /* Main Content */
  .product-detail-main {
    flex: 1;
    max-width: 1200px;
    width: 100%;
    margin: 0 auto;
    padding: 2rem;
  }
  
  /* Product Hero Section */
  .product-hero {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 2rem;
    margin-bottom: 2.5rem;
  }
  
  .product-media {
    background-color: white;
    border-radius: 0.5rem;
    overflow: hidden;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
  }
  
  .product-carousel {
    width: 100%;
  }
  
  .carousel-main-container {
    position: relative;
    height: 350px;
    background-color: #f5f5f5;
    display: flex;
    align-items: center;
    justify-content: center;
  }
  
  .carousel-image-wrapper {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1rem;
    transition: opacity 0.3s ease;
  }
  
  .carousel-main-image {
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
  }
  
  .carousel-nav-btn {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    width: 36px;
    height: 36px;
    border-radius: 50%;
    background-color: rgba(255, 255, 255, 0.8);
    border: none;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    z-index: 10;
    transition: all 0.2s ease;
    color: #666;
  }
  
  .carousel-nav-btn:hover {
    background-color: white;
    color: #333;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
  }
  
  .carousel-prev-btn {
    left: 1rem;
  }
  
  .carousel-next-btn {
    right: 1rem;
  }
  
  .carousel-thumbnails {
    display: flex;
    gap: 0.5rem;
    padding: 0.75rem;
    background-color: white;
    overflow-x: auto;
    scrollbar-width: thin;
  }
  
  .carousel-thumbnails::-webkit-scrollbar {
    height: 6px;
  }
  
  .carousel-thumbnails::-webkit-scrollbar-track {
    background: #f1f1f1;
    border-radius: 3px;
  }
  
  .carousel-thumbnails::-webkit-scrollbar-thumb {
    background: #ccc;
    border-radius: 3px;
  }
  
  .carousel-thumbnail-wrapper {
    width: 60px;
    height: 60px;
    border-radius: 0.25rem;
    overflow: hidden;
    cursor: pointer;
    border: 2px solid transparent;
    transition: all 0.2s ease;
    flex-shrink: 0;
  }
  
  .carousel-thumbnail-wrapper.active {
    border-color: #6e49cb;
  }
  
  .carousel-thumbnail-image {
    width: 100%;
    height: 100%;
    object-fit: cover;
  }
  
  .product-placeholder {
    height: 350px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    background-color: #f5f5f5;
    color: #aaa;
    gap: 1rem;
  }
  
  .product-placeholder p {
    font-size: 0.875rem;
  }
  
  /* Product Info */
  .product-info {
    display: flex;
    flex-direction: column;
  }
  
  .product-title {
    font-size: 1.75rem;
    font-weight: 600;
    color: #333;
    margin: 0 0 1rem 0;
  }
  
  .product-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
    margin-bottom: 1.5rem;
  }
  
  .version-badge {
    padding: 0.25rem 0.75rem;
    background-color: #f0f0f0;
    color: #555;
    border-radius: 2rem;
    font-size: 0.875rem;
    font-weight: 500;
  }
  
  .release-date {
    color: #666;
    font-size: 0.875rem;
  }
  
  .release-notes {
    background-color: #f5f5f5;
    border-radius: 0.5rem;
    padding: 1.25rem;
    margin-bottom: 1.5rem;
  }
  
  .release-notes h3 {
    font-size: 1rem;
    font-weight: 600;
    color: #333;
    margin: 0 0 0.75rem 0;
  }
  
  .release-notes-content {
    color: #555;
    font-size: 0.875rem;
    line-height: 1.6;
  }
  
  .download-section {
    margin-top: auto;
    padding-top: 1.5rem;
  }
  
  .download-button {
    display: inline-flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.75rem 1.25rem;
    background-color: #6e49cb;
    color: white;
    border-radius: 0.375rem;
    font-size: 0.875rem;
    font-weight: 600;
    text-decoration: none;
    transition: all 0.2s ease;
    border: none;
    cursor: pointer;
  }
  
  .download-button:hover {
    background-color: #5d3eb5;
  }
  
  .download-info {
    margin-top: 0.75rem;
    color: #666;
    font-size: 0.875rem;
  }
  
  /* Product Content Tabs */
  .product-content {
    background-color: white;
    border-radius: 0.5rem;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
    margin-bottom: 2rem;
    overflow: hidden;
  }
  
  .product-tabs {
    display: flex;
    border-bottom: 1px solid #eee;
    background-color: #fafafa;
    overflow-x: auto;
    scrollbar-width: none;
  }
  
  .product-tabs::-webkit-scrollbar {
    display: none;
  }
  
  .tab-button {
    padding: 1rem 1.5rem;
    background: none;
    border: none;
    cursor: pointer;
    font-size: 0.875rem;
    font-weight: 500;
    color: #666;
    transition: all 0.2s ease;
    border-bottom: 2px solid transparent;
    white-space: nowrap;
  }
  
  .tab-button:hover {
    color: #333;
    background-color: #f5f5f5;
  }
  
  .tab-button.active {
    color: #6e49cb;
    border-bottom-color: #6e49cb;
    background-color: white;
  }
  
  .tab-content {
    min-height: 300px;
  }
  
  .tab-pane {
    display: none;
    padding: 2rem;
  }
  
  .tab-pane.active {
    display: block;
  }
  
  /* Tab Content Styles */
  .rich-text-content {
    color: #333;
    line-height: 1.6;
  }
  
  .rich-text-content h1,
  .rich-text-content h2,
  .rich-text-content h3 {
    margin-top: 1.5rem;
    margin-bottom: 0.75rem;
    color: #333;
  }
  
  .rich-text-content p {
    margin-bottom: 1rem;
  }
  
  .rich-text-content ul,
  .rich-text-content ol {
    margin-bottom: 1rem;
    padding-left: 1.5rem;
  }
  
  .rich-text-content img {
    max-width: 100%;
    height: auto;
    border-radius: 0.25rem;
    margin: 1rem 0;
  }
  
  .rich-text-content a {
    color: #6e49cb;
    text-decoration: none;
    transition: color 0.2s ease;
  }
  
  .rich-text-content a:hover {
    color: #5d3eb5;
    text-decoration: underline;
  }
  
  /* Configuration Values Tab */
  .cicd-values-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
    gap: 1rem;
  }
  
  .cicd-value-item {
    background-color: #f5f5f5;
    border-radius: 0.5rem;
    overflow: hidden;
    border: 1px solid #eee;
  }
  
  .cicd-value-header {
    padding: 0.75rem 1rem;
    background-color: #f0f0f0;
    border-bottom: 1px solid #eee;
  }
  
  .cicd-value-key {
    font-weight: 500;
    color: #555;
    font-size: 0.875rem;
  }
  
  .cicd-value-content {
    padding: 1rem;
  }
  
  .cicd-value-wrapper {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
    background-color: white;
    padding: 0.5rem 0.75rem;
    border-radius: 0.25rem;
    border: 1px solid #eee;
  }
  
  .cicd-value-code {
    font-family: monospace;
    color: #333;
    font-size: 0.875rem;
    overflow-x: auto;
    white-space: nowrap;
    flex: 1;
  }
  
  .copy-button {
    background: none;
    border: none;
    color: #6e49cb;
    cursor: pointer;
    padding: 0.25rem;
    transition: all 0.2s ease;
    display: flex;
    align-items: center;
    justify-content: center;
  }
  
  .copy-button:hover {
    color: #5d3eb5;
    background-color: rgba(110, 73, 203, 0.1);
    border-radius: 0.25rem;
  }
  
  .copy-button.copied {
    color: #2e7d32;
  }
  
  /* Version History Tab */
  .version-timeline {
    padding: 0.5rem 0 0.5rem 1rem;
  }
  
  .version-timeline-item {
    position: relative;
    padding-left: 1.5rem;
    padding-bottom: 1.5rem;
    border-left: 2px solid #e0e0e0;
  }
  
  .version-timeline-item:last-child {
    border-left: 2px solid transparent;
    padding-bottom: 0;
  }
  
  .version-timeline-badge {
    position: absolute;
    left: -0.5rem;
    top: 0;
    width: 1rem;
    height: 1rem;
    border-radius: 50%;
    background-color: #6e49cb;
  }
  
  .version-timeline-item.major .version-timeline-badge {
    background-color: #f44336;
  }
  
  .version-timeline-item.minor .version-timeline-badge {
    background-color: #ff9800;
  }
  
  .version-timeline-item.patch .version-timeline-badge {
    background-color: #4caf50;
  }
  
  .version-timeline-content {
    background-color: #f5f5f5;
    border-radius: 0.5rem;
    padding: 1rem;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
  }
  
  .version-timeline-item.current .version-timeline-content {
    border: 2px solid #6e49cb;
    background-color: white;
  }
  
  .version-timeline-content h4 {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin: 0 0 0.5rem 0;
    font-size: 1rem;
  }
  
  .version-timeline-content a {
    color: #333;
    text-decoration: none;
    transition: color 0.2s ease;
  }
  
  .version-timeline-content a:hover {
    color: #6e49cb;
  }
  
  .version-timeline-date {
    color: #666;
    font-size: 0.75rem;
    font-weight: normal;
  }
  
  .version-timeline-notes {
    color: #555;
    font-size: 0.875rem;
    line-height: 1.5;
  }
  
  /* Video Tab */
  .video-container {
    position: relative;
    padding-bottom: 56.25%; /* 16:9 aspect ratio */
    height: 0;
    overflow: hidden;
  }
  
  .video-container iframe {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    border: none;
  }
  
  /* Footer */
  .product-detail-footer {
    background-color: white;
    padding: 1.5rem 2rem;
    border-top: 1px solid #eee;
    margin-top: auto;
  }
  
  .footer-content {
    display: flex;
    justify-content: space-between;
    align-items: center;
    max-width: 1200px;
    margin: 0 auto;
    width: 100%;
  }
  
  .footer-content p {
    font-size: 0.875rem;
    color: #666;
    margin: 0;
  }
  
  .footer-links {
    display: flex;
    gap: 1.5rem;
  }
  
  .footer-links a {
    font-size: 0.875rem;
    color: #6e49cb;
    text-decoration: none;
    transition: color 0.2s ease;
  }
  
  .footer-links a:hover {
    color: #5d3eb5;
    text-decoration: underline;
  }
  
  /* Responsive Adjustments */
  @media (max-width: 1024px) {
    .product-hero {
      grid-template-columns: 1fr;
    }
    
    .product-media {
      max-width: 600px;
      margin: 0 auto;
    }
  }
  
  @media (max-width: 768px) {
    .product-detail-header {
      padding: 1rem;
    }
    
    .product-detail-main {
      padding: 1.5rem 1rem;
    }
    
    .header-content {
      flex-direction: column;
      align-items: flex-start;
      gap: 0.75rem;
    }
    
    .tab-button {
      padding: 0.75rem 1rem;
    }
    
    .tab-pane {
      padding: 1.5rem 1rem;
    }
    
    .footer-content {
      flex-direction: column;
      gap: 1rem;
      text-align: center;
    }
    
    .footer-links {
      justify-content: center;
    }
  }
/* app/assets/stylesheets/features/_catalog.css */

.catalog-container {
    min-height: 100vh;
    display: flex;
    flex-direction: column;
    background-color: #f9f9f9;
  }
  
  /* Header */
  .catalog-header {
    background-color: white;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
    padding: 1.5rem 2rem;
  }
  
  .header-content {
    display: flex;
    justify-content: space-between;
    align-items: center;
    max-width: 1200px;
    margin: 0 auto;
    width: 100%;
  }
  
  .catalog-logo {
    display: flex;
    align-items: center;
    gap: 1rem;
  }
  
  .gitlab-icon {
    height: 32px;
  }
  
  .catalog-logo h1 {
    font-size: 1.5rem;
    font-weight: 600;
    color: #333;
    margin: 0;
  }
  
  .header-actions {
    display: flex;
    gap: 1rem;
  }
  
  .header-button {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.5rem 1rem;
    background-color: #f5f5f5;
    color: #333;
    border-radius: 0.375rem;
    font-size: 0.875rem;
    font-weight: 500;
    text-decoration: none;
    transition: all 0.2s ease;
    border: 1px solid #e0e0e0;
  }
  
  .header-button:hover {
    background-color: #e9e9e9;
    color: #111;
  }
  
  .header-button svg {
    color: #6e49cb;
  }
  
  /* Main Content */
  .catalog-main {
    flex: 1;
    max-width: 1200px;
    width: 100%;
    margin: 0 auto;
    padding: 2rem;
  }
  
  .catalog-intro {
    margin-bottom: 2.5rem;
  }
  
  .catalog-intro h2 {
    font-size: 1.75rem;
    font-weight: 600;
    color: #333;
    margin-bottom: 0.75rem;
  }
  
  .intro-text {
    color: #555;
    max-width: 800px;
    line-height: 1.6;
  }
  
  /* Products Grid */
  .catalog-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
    gap: 1.5rem;
    margin-bottom: 3rem;
  }
  
  .catalog-card {
    background-color: white;
    border-radius: 0.5rem;
    padding: 1.5rem;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
    transition: all 0.3s ease;
    border-left: 4px solid #6e49cb;
  }
  
  .catalog-card:hover {
    transform: translateY(-3px);
    box-shadow: 0 8px 16px rgba(0, 0, 0, 0.1);
  }
  
  .product-name {
    font-size: 1.125rem;
    font-weight: 600;
    color: #333;
    margin: 0 0 0.5rem 0;
  }
  
  .version-tag {
    display: inline-block;
    padding: 0.25rem 0.5rem;
    background-color: #f0f0f0;
    color: #555;
    border-radius: 3rem;
    font-size: 0.75rem;
    font-weight: 500;
  }
  
  /* Contact Section */
  .contact-section {
    background-color: white;
    border-radius: 0.5rem;
    padding: 2rem;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
    text-align: center;
    margin-top: 2rem;
    border-top: 4px solid #6e49cb;
  }
  
  .contact-section h3 {
    font-size: 1.25rem;
    font-weight: 600;
    color: #333;
    margin-bottom: 1rem;
  }
  
  .contact-section p {
    color: #555;
    max-width: 600px;
    margin: 0 auto;
  }
  
  .contact-link {
    color: #6e49cb;
    font-weight: 500;
    text-decoration: none;
    transition: color 0.2s ease;
  }
  
  .contact-link:hover {
    color: #5d3eb5;
    text-decoration: underline;
  }
  
  /* No Products State */
  .no-products {
    text-align: center;
    padding: 4rem 2rem;
    background-color: white;
    border-radius: 0.5rem;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
    color: #666;
  }
  
  .no-products svg {
    margin-bottom: 1.5rem;
    color: #bbb;
  }
  
  .no-products h3 {
    font-size: 1.25rem;
    color: #333;
    margin-bottom: 0.75rem;
  }
  
  /* Footer */
  .catalog-footer {
    background-color: white;
    padding: 1.5rem 2rem;
    border-top: 1px solid #eee;
    margin-top: auto;
  }
  
  .footer-content {
    display: flex;
    justify-content: space-between;
    align-items: center;
    max-width: 1200px;
    margin: 0 auto;
    width: 100%;
  }
  
  .footer-content p {
    font-size: 0.875rem;
    color: #666;
    margin: 0;
  }
  
  .footer-links {
    display: flex;
    gap: 1.5rem;
  }
  
  .footer-links a {
    font-size: 0.875rem;
    color: #6e49cb;
    text-decoration: none;
    transition: color 0.2s ease;
  }
  
  .footer-links a:hover {
    color: #5d3eb5;
    text-decoration: underline;
  }
  
  /* Responsive Adjustments */
  @media (max-width: 768px) {
    .header-content {
      flex-direction: column;
      align-items: flex-start;
      gap: 1rem;
    }
    
    .catalog-grid {
      grid-template-columns: 1fr;
    }
    
    .footer-content {
      flex-direction: column;
      gap: 1rem;
      text-align: center;
    }
    
    .footer-links {
      justify-content: center;
    }
  }
  
  @media (max-width: 480px) {
    .catalog-header {
      padding: 1rem;
    }
    
    .catalog-main {
      padding: 1.5rem 1rem;
    }
  }
/* app/assets/stylesheets/features/_product_detail_extensions.css */

/* Styling for the "Change" access code link */
.access-code-link {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.25rem 0.5rem;
    border-radius: 0.375rem;
    transition: all 0.2s ease;
    text-decoration: none;
  }
  
  .access-code-link:hover {
    background-color: rgba(110, 73, 203, 0.1);
  }
  
  .access-id {
    padding: 0.25rem 0.5rem;
    background-color: #f5f5f5;
    border-radius: 0.25rem;
    font-family: monospace;
    color: #333;
  }
  
  .change-code-label {
    font-size: 0.75rem;
    color: #6e49cb;
    font-weight: 500;
  }
  
  .access-code-link:hover .change-code-label {
    text-decoration: underline;
  }

  /* app/assets/stylesheets/features/_product_detail_extensions.css */

/* Styling for the "Change" access code link */
.access-code-link {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.25rem;
    border-radius: 0.375rem;
    transition: all 0.2s ease;
    text-decoration: none;
  }
  
  .access-code-link:hover {
    background-color: rgba(110, 73, 203, 0.1);
  }
  
  .access-id {
    font-family: monospace;
    color: #333;
  }
  
  .change-code-label {
    font-size: 0.75rem;
    color: #6e49cb;
    font-weight: 500;
  }
  
  .access-code-link:hover .change-code-label {
    text-decoration: underline;
  }
/* app/assets/stylesheets/features/_admin_signin.css */

.admin-signin-container {
    min-height: 100vh;
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    background: white;
    padding: var(--spacing-md);
    position: relative;
    z-index: 1;
  }
  
  .admin-signin-card {
    background: var(--bg-card);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-md);
    width: 100%;
    max-width: 420px;
    position: relative;
    border: 1px solid var(--border-light);
    overflow: hidden;
  }
  
  .admin-signin-header {
    position: absolute;
    top: var(--spacing-md);
    left: var(--spacing-md);
    z-index: 10;
  }
  
  .back-to-main {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    color: var(--primary);
    text-decoration: none;
    font-size: 0.875rem;
    padding: 0.5rem;
    margin: -0.5rem;
    border-radius: var(--radius-md);
    transition: all 0.2s ease;
  }
  
  .back-to-main:hover {
    background: rgba(119, 89, 194, 0.1);
    color: var(--primary-light);
  }
  
  .admin-signin-content {
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: var(--spacing-2xl);
    text-align: center;
  }
  
  .brand-logo {
    margin-bottom: var(--spacing-md);
  }
  
  .admin-signin-content h1 {
    font-size: var(--text-2xl);
    font-weight: 600;
    color: var(--text-primary);
    margin-bottom: var(--spacing-sm);
  }
  
  .signin-description {
    color: var(--text-secondary);
    margin-bottom: var(--spacing-xl);
    font-size: var(--text-base);
  }
  
  .signin-error {
    background-color: rgba(221, 43, 14, 0.1);
    border-left: 3px solid var(--danger);
    color: var(--danger);
    padding: var(--spacing-md);
    border-radius: var(--radius-md);
    margin-bottom: var(--spacing-lg);
    font-size: var(--text-sm);
    text-align: left;
    width: 100%;
  }
  
  .okta-signin-button {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.75rem;
    width: 100%;
    padding: var(--spacing-md);
    background: var(--primary);
    color: var(--text-light);
    border: none;
    border-radius: var(--radius-md);
    font-size: var(--text-base);
    font-weight: 500;
    cursor: pointer;
    transition: all 0.2s ease;
    text-decoration: none;
  }
  
  .okta-signin-button:hover {
    background: var(--primary-light);
    transform: translateY(-1px);
    box-shadow: var(--shadow-md);
  }
  
  .okta-signin-button svg {
    flex-shrink: 0;
  }
  
  /* Development mode styles */
  .dev-info {
    margin-top: var(--spacing-xl);
    padding-top: var(--spacing-lg);
    border-top: 1px solid var(--border-light);
    width: 100%;
  }
  
  .dev-button {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    padding: var(--spacing-md);
    background: var(--success);
    color: var(--text-light);
    border: none;
    border-radius: var(--radius-md);
    font-size: var(--text-base);
    font-weight: 500;
    cursor: pointer;
    transition: all 0.2s ease;
    text-decoration: none;
  }
  
  .dev-button:hover {
    background: #249251;
    transform: translateY(-1px);
    box-shadow: var(--shadow-md);
  }
  
  .dev-notice {
    margin-top: var(--spacing-sm);
    font-size: var(--text-sm);
    color: var(--text-muted);
  }
/* app/assets/stylesheets/overrides/_auth_overrides.css */

/* Override any existing styles that might create the blue/purple box */
.admin-signin {
    display: none !important;
    background: none !important;
    min-height: 0 !important;
  }
  
  .login-container {
    display: none !important;
    background: none !important;
    min-height: 0 !important;
  }
  
  /* Remove any background colors or gradients */
  body.admin-signin-page {
    background: white !important;
  }
  
  /* Ensure our new container takes precedence */
  .admin-signin-container {
    position: fixed !important;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 9999;
    background: white !important;
  }
/* app/assets/stylesheets/overrides/_admin_button_overrides.css */

/**
 * Targeted overrides for admin UI buttons to match the rest of the application.
 * This uses the outlined style rather than solid backgrounds.
 */

/* Admin area button style overrides */
.admin-container .button, 
.admin-container button[type="submit"],
.admin-container input[type="submit"],
.admin-container .btn {
  /* Match the outlined button style from the main application */
  background-color: transparent;
  border: 1px solid var(--primary, #6e49cb);
  color: var(--primary, #6e49cb);
  font-weight: 500;
  font-size: 0.875rem;
  padding: 0.5rem 1rem;
  border-radius: 0.375rem;
  cursor: pointer;
  transition: all 0.2s ease;
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  line-height: 1.5;
}

.admin-container .button:hover, 
.admin-container button[type="submit"]:hover,
.admin-container input[type="submit"]:hover,
.admin-container .btn:hover {
  background-color: rgba(110, 73, 203, 0.05);
  border-color: var(--primary-dark, #5c3eb8);
  color: var(--primary-dark, #5c3eb8);
  transform: translateY(-1px);
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
}

/* Secondary buttons */
.admin-container .button-secondary,
.admin-container .btn-secondary {
  background-color: transparent;
  border: 1px solid var(--border-medium, #e0e0e0);
  color: var(--text-secondary, #616161);
}

.admin-container .button-secondary:hover,
.admin-container .btn-secondary:hover {
  background-color: rgba(0, 0, 0, 0.02);
  border-color: var(--border-dark, #bdbdbd);
  color: var(--text-primary, #424242);
}

/* Danger buttons */
.admin-container .button-danger,
.admin-container .btn-danger {
  background-color: transparent;
  border: 1px solid var(--danger, #dd2b0e);
  color: var(--danger, #dd2b0e);
}

.admin-container .button-danger:hover,
.admin-container .btn-danger:hover {
  background-color: rgba(221, 43, 14, 0.05);
  border-color: #c82333;
  color: #c82333;
}

/* Small button adjustments */
.admin-container .button-small,
.admin-container .btn-small {
  padding: 0.3rem 0.6rem;
  font-size: 0.75rem;
}

/* Fix button alignment in tables */
.admin-container .admin-table .actions {
  display: flex;
  gap: 0.5rem;
  justify-content: flex-end;
}

/* Add appropriate spacing between buttons */
.admin-container .form-actions .button:not(:last-child),
.admin-container .form-actions button:not(:last-child),
.admin-container .form-actions input[type="submit"]:not(:last-child) {
  margin-right: 0.75rem;
}
/* app/assets/stylesheets/overrides/_admin_forms_overrides.css */

/**
 * Overrides for admin form layouts
 * Ensures content fits properly within its container
 */

/* Form Container Improvements */
.admin-container .form-container,
.admin-container .spaced-form {
  max-width: 100%;
  overflow-x: hidden;
}

/* Ensure form sections don't overflow */
.admin-container .form-section {
  box-sizing: border-box;
  max-width: 100%;
  overflow-x: hidden;
  margin-bottom: 1.5rem;
  border-radius: 0.5rem;
  background-color: white;
  padding: 1.5rem;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
}

/* Fix for form titles */
.admin-container .form-section h3 {
  margin-top: 0;
  margin-bottom: 1.25rem;
  font-size: 1.125rem;
  font-weight: 600;
  color: #333;
  padding-bottom: 0.75rem;
  border-bottom: 1px solid #f0f0f0;
}

/* Fix input width issues */
.admin-container .form-group {
  max-width: 100%;
  margin-bottom: 1.25rem;
}

.admin-container .form-input {
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
}

/* Form layout improvements */
.admin-container .form-label {
  display: block;
  margin-bottom: 0.5rem;
  font-weight: 500;
  color: var(--text-secondary, #616161);
}

/* Special fixes for CICD value rows */
.admin-container .form-row {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 1rem;
  align-items: flex-start;
}

/* CICD values specific fixes */
.admin-container .cicd-value-fields {
  padding: 1rem;
  background-color: #fafafa;
  border-radius: 0.375rem;
  margin-bottom: 1rem;
  border: 1px solid #f0f0f0;
}

.admin-container .cicd-values {
  margin-bottom: 1rem;
}

.admin-container .cicd-actions {
  margin-top: 1rem;
}

/* Better checkbox positioning */
.admin-container .checkbox-item {
  display: flex;
  align-items: flex-start;
  margin-bottom: 0.5rem;
}

.admin-container .checkbox-item input[type="checkbox"] {
  margin-top: 0.25rem;
  margin-right: 0.5rem;
}

/* Products section grid */
.admin-container .checkbox-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  gap: 0.5rem;
  margin-bottom: 1rem;
}

/* Ensure checkbox fields align properly */
.admin-container .checkbox-toggle {
  display: flex;
  align-items: flex-start;
}

.admin-container .toggle-checkbox {
  margin-top: 0.25rem;
  margin-right: 0.5rem;
}

/* Make sure inputs don't exceed their containers */
.admin-container textarea.form-input {
  max-width: 100%;
  min-height: 100px;
}

/* Ensure select dropdowns are fully visible */
.admin-container select.form-input {
  width: 100%;
  max-width: 100%;
}

/* Adjustments for various screen sizes */
@media (min-width: 768px) {
  .admin-container .form-row {
    grid-template-columns: 1fr 1fr 1fr auto;
  }
}

@media (max-width: 767px) {
  .admin-container .form-row {
    grid-template-columns: 1fr;
  }
  
  .admin-container .actions {
    text-align: left;
    margin-top: 0.5rem;
  }
  
  .admin-container .admin-header {
    flex-direction: column;
    align-items: flex-start;
    gap: 1rem;
  }
  
  .admin-container .admin-header h1 {
    margin-bottom: 0.5rem;
  }
  
  .admin-container .admin-header .button {
    align-self: flex-start;
  }
}
/* app/assets/stylesheets/overrides/_admin_table_overrides.css */

/* Ensure that all table cells in a row have the same background on hover */
.admin-container .admin-table tr:hover td {
    background-color: #f9f9f9;
  }
  
  /* Fix specifically for the actions column */
  .admin-container .admin-table td.actions {
    background-color: inherit; /* Inherit from the parent tr */
  }
/* app/assets/stylesheets/overrides/_product_editor_overrides.css */

/* Make error messages more prominent */
.admin-container .error-messages {
    background-color: #ffebee;
    border-left: 4px solid #d32f2f;
    padding: 1rem;
    margin-bottom: 1.5rem;
    border-radius: 0.25rem;
  }
  
  .admin-container .error-messages h2 {
    color: #d32f2f;
    font-size: 1rem;
    font-weight: 600;
    margin-top: 0;
    margin-bottom: 0.5rem;
  }
  
  .admin-container .error-messages ul {
    color: #d32f2f;
    margin: 0;
    padding-left: 1.5rem;
  }
  
  .admin-container .error-messages li {
    margin-bottom: 0.25rem;
  }
  
  /* Completely reset and rebuild the checkbox toggle styling */
  .admin-container .checkbox-toggle {
    margin-top: 0.5rem;
    position: relative;
    display: block;
  }
  
  /* Hide the actual checkbox but keep it accessible */
  .admin-container .toggle-checkbox {
    position: absolute;
    opacity: 0;
    width: 1px;
    height: 1px;
    overflow: hidden;
  }
  
  /* Style the custom toggle appearance */
  .admin-container .toggle-label {
    display: block;
    position: relative;
    padding-left: 2.5rem; /* Space for the visual toggle */
    cursor: pointer;
    font-size: 0.95rem;
    font-weight: normal;
    color: #333;
    line-height: 1.5;
  }
  
  /* Create the toggle background */
  .admin-container .toggle-label::before {
    content: '';
    position: absolute;
    left: 0;
    top: 0.2rem;
    width: 2rem;
    height: 1rem;
    background-color: #e0e0e0;
    border-radius: 1rem;
    transition: background-color 0.2s ease;
  }
  
  /* Create the toggle knob */
  .admin-container .toggle-label::after {
    content: '';
    position: absolute;
    left: 0.1rem;
    top: 0.3rem;
    width: 0.8rem;
    height: 0.8rem;
    background-color: white;
    border-radius: 50%;
    transition: transform 0.2s ease, background-color 0.2s ease;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
  }
  
  /* Toggle checked state */
  .admin-container .toggle-checkbox:checked + .toggle-label::before {
    background-color: #2da160;
  }
  
  .admin-container .toggle-checkbox:checked + .toggle-label::after {
    transform: translateX(1rem);
  }
  
  /* Custom focus styles */
  .admin-container .toggle-checkbox:focus + .toggle-label::before {
    box-shadow: 0 0 0 2px rgba(45, 161, 96, 0.2);
  }
  
  /* Help text positioning */
  .admin-container .checkbox-toggle .form-help {
    margin-top: 0.5rem;
    margin-left: 2.5rem;
    font-size: 0.75rem;
    color: #666;
  }
  
  /* Fix for Trix editor toolbar buttons */
  .admin-container trix-toolbar .trix-button {
    border: none !important;
    background: transparent !important;
    outline: none !important;
    box-shadow: none !important;
  }
  
  .admin-container trix-toolbar .trix-button:hover {
    background-color: #f5f5f5 !important;
  }
  
  .admin-container trix-toolbar .trix-button.trix-active {
    background-color: #e0e0e0 !important;
  }
  
  .admin-container trix-toolbar .trix-button-group {
    border: 1px solid #ddd !important;
    border-radius: 3px !important;
    margin: 0 0.25rem !important;
  }
  
  /* Ensure the form layout is clean and aligned */
  .admin-container .form-group {
    margin-bottom: 1.5rem;
  }
  
  .admin-container .description-group {
    margin-bottom: 2rem;
  }
  
  /* Fix specificity of the form input styles */
  .admin-container .trix-content {
    border: 1px solid #ddd;
    border-radius: 0.375rem;
    min-height: 150px;
  }
  
  .admin-container trix-editor {
    min-height: 150px;
    border-radius: 0 0 0.375rem 0.375rem;
  }
trix-editor {
  border: 1px solid #bbb;
  border-radius: 3px;
  margin: 0;
  padding: 0.4em 0.6em;
  min-height: 5em;
  outline: none; }

trix-toolbar * {
  box-sizing: border-box; }

trix-toolbar .trix-button-row {
  display: flex;
  flex-wrap: nowrap;
  justify-content: space-between;
  overflow-x: auto; }

trix-toolbar .trix-button-group {
  display: flex;
  margin-bottom: 10px;
  border: 1px solid #bbb;
  border-top-color: #ccc;
  border-bottom-color: #888;
  border-radius: 3px; }
  trix-toolbar .trix-button-group:not(:first-child) {
    margin-left: 1.5vw; }
    @media (max-width: 768px) {
      trix-toolbar .trix-button-group:not(:first-child) {
        margin-left: 0; } }

trix-toolbar .trix-button-group-spacer {
  flex-grow: 1; }
  @media (max-width: 768px) {
    trix-toolbar .trix-button-group-spacer {
      display: none; } }

trix-toolbar .trix-button {
  position: relative;
  float: left;
  color: rgba(0, 0, 0, 0.6);
  font-size: 0.75em;
  font-weight: 600;
  white-space: nowrap;
  padding: 0 0.5em;
  margin: 0;
  outline: none;
  border: none;
  border-bottom: 1px solid #ddd;
  border-radius: 0;
  background: transparent; }
  trix-toolbar .trix-button:not(:first-child) {
    border-left: 1px solid #ccc; }
  trix-toolbar .trix-button.trix-active {
    background: #cbeefa;
    color: black; }
  trix-toolbar .trix-button:not(:disabled) {
    cursor: pointer; }
  trix-toolbar .trix-button:disabled {
    color: rgba(0, 0, 0, 0.125); }
  @media (max-width: 768px) {
    trix-toolbar .trix-button {
      letter-spacing: -0.01em;
      padding: 0 0.3em; } }

trix-toolbar .trix-button--icon {
  font-size: inherit;
  width: 2.6em;
  height: 1.6em;
  max-width: calc(0.8em + 4vw);
  text-indent: -9999px; }
  @media (max-width: 768px) {
    trix-toolbar .trix-button--icon {
      height: 2em;
      max-width: calc(0.8em + 3.5vw); } }
  trix-toolbar .trix-button--icon::before {
    display: inline-block;
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    opacity: 0.6;
    content: "";
    background-position: center;
    background-repeat: no-repeat;
    background-size: contain; }
    @media (max-width: 768px) {
      trix-toolbar .trix-button--icon::before {
        right: 6%;
        left: 6%; } }
  trix-toolbar .trix-button--icon.trix-active::before {
    opacity: 1; }
  trix-toolbar .trix-button--icon:disabled::before {
    opacity: 0.125; }

trix-toolbar .trix-button--icon-attach::before {
  background-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M10.5%2018V7.5c0-2.25%203-2.25%203%200V18c0%204.125-6%204.125-6%200V7.5c0-6.375%209-6.375%209%200V18%22%20stroke%3D%22%23000%22%20stroke-width%3D%222%22%20stroke-miterlimit%3D%2210%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%2F%3E%3C%2Fsvg%3E");
  top: 8%;
  bottom: 4%; }

trix-toolbar .trix-button--icon-bold::before {
  background-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M6.522%2019.242a.5.5%200%200%201-.5-.5V5.35a.5.5%200%200%201%20.5-.5h5.783c1.347%200%202.46.345%203.24.982.783.64%201.216%201.562%201.216%202.683%200%201.13-.587%202.129-1.476%202.71a.35.35%200%200%200%20.049.613c1.259.56%202.101%201.742%202.101%203.22%200%201.282-.483%202.334-1.363%203.063-.876.726-2.132%201.12-3.66%201.12h-5.89ZM9.27%207.347v3.362h1.97c.766%200%201.347-.17%201.733-.464.38-.291.587-.716.587-1.27%200-.53-.183-.928-.513-1.198-.334-.273-.838-.43-1.505-.43H9.27Zm0%205.606v3.791h2.389c.832%200%201.448-.177%201.853-.497.399-.315.614-.786.614-1.423%200-.62-.22-1.077-.63-1.385-.418-.313-1.053-.486-1.905-.486H9.27Z%22%20fill%3D%22%23000%22%2F%3E%3C%2Fsvg%3E"); }

trix-toolbar .trix-button--icon-italic::before {
  background-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M9%205h6.5v2h-2.23l-2.31%2010H13v2H6v-2h2.461l2.306-10H9V5Z%22%20fill%3D%22%23000%22%2F%3E%3C%2Fsvg%3E"); }

trix-toolbar .trix-button--icon-link::before {
  background-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M18.948%205.258a4.337%204.337%200%200%200-6.108%200L11.217%206.87a.993.993%200%200%200%200%201.41c.392.39%201.027.39%201.418%200l1.623-1.613a2.323%202.323%200%200%201%203.271%200%202.29%202.29%200%200%201%200%203.251l-2.393%202.38a3.021%203.021%200%200%201-4.255%200l-.05-.049a1.007%201.007%200%200%200-1.418%200%20.993.993%200%200%200%200%201.41l.05.049a5.036%205.036%200%200%200%207.091%200l2.394-2.38a4.275%204.275%200%200%200%200-6.072Zm-13.683%2013.6a4.337%204.337%200%200%200%206.108%200l1.262-1.255a.993.993%200%200%200%200-1.41%201.007%201.007%200%200%200-1.418%200L9.954%2017.45a2.323%202.323%200%200%201-3.27%200%202.29%202.29%200%200%201%200-3.251l2.344-2.331a2.579%202.579%200%200%201%203.631%200c.392.39%201.027.39%201.419%200a.993.993%200%200%200%200-1.41%204.593%204.593%200%200%200-6.468%200l-2.345%202.33a4.275%204.275%200%200%200%200%206.072Z%22%20fill%3D%22%23000%22%2F%3E%3C%2Fsvg%3E"); }

trix-toolbar .trix-button--icon-strike::before {
  background-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M6%2014.986c.088%202.647%202.246%204.258%205.635%204.258%203.496%200%205.713-1.728%205.713-4.463%200-.275-.02-.536-.062-.781h-3.461c.398.293.573.654.573%201.123%200%201.035-1.074%201.787-2.646%201.787-1.563%200-2.773-.762-2.91-1.924H6ZM6.432%2010h3.763c-.632-.314-.914-.715-.914-1.273%200-1.045.977-1.739%202.432-1.739%201.475%200%202.52.723%202.617%201.914h2.764c-.05-2.548-2.11-4.238-5.39-4.238-3.145%200-5.392%201.719-5.392%204.316%200%20.363.04.703.12%201.02ZM4%2011a1%201%200%201%200%200%202h15a1%201%200%201%200%200-2H4Z%22%20fill%3D%22%23000%22%2F%3E%3C%2Fsvg%3E"); }

trix-toolbar .trix-button--icon-quote::before {
  background-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M4.581%208.471c.44-.5%201.056-.834%201.758-.995C8.074%207.17%209.201%207.822%2010%208.752c1.354%201.578%201.33%203.555.394%205.277-.941%201.731-2.788%203.163-4.988%203.56a.622.622%200%200%201-.653-.317c-.113-.205-.121-.49.16-.764.294-.286.567-.566.791-.835.222-.266.413-.54.524-.815.113-.28.156-.597.026-.908-.128-.303-.39-.524-.72-.69a3.02%203.02%200%200%201-1.674-2.7c0-.905.283-1.59.72-2.088Zm9.419%200c.44-.5%201.055-.834%201.758-.995%201.734-.306%202.862.346%203.66%201.276%201.355%201.578%201.33%203.555.395%205.277-.941%201.731-2.789%203.163-4.988%203.56a.622.622%200%200%201-.653-.317c-.113-.205-.122-.49.16-.764.294-.286.567-.566.791-.835.222-.266.412-.54.523-.815.114-.28.157-.597.026-.908-.127-.303-.39-.524-.72-.69a3.02%203.02%200%200%201-1.672-2.701c0-.905.283-1.59.72-2.088Z%22%20fill%3D%22%23000%22%2F%3E%3C%2Fsvg%3E"); }

trix-toolbar .trix-button--icon-heading-1::before {
  background-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M21.5%207.5v-3h-12v3H14v13h3v-13h4.5ZM9%2013.5h3.5v-3h-10v3H6v7h3v-7Z%22%20fill%3D%22%23000%22%2F%3E%3C%2Fsvg%3E"); }

trix-toolbar .trix-button--icon-code::before {
  background-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M3.293%2011.293a1%201%200%200%200%200%201.414l4%204a1%201%200%201%200%201.414-1.414L5.414%2012l3.293-3.293a1%201%200%200%200-1.414-1.414l-4%204Zm13.414%205.414%204-4a1%201%200%200%200%200-1.414l-4-4a1%201%200%201%200-1.414%201.414L18.586%2012l-3.293%203.293a1%201%200%200%200%201.414%201.414Z%22%20fill%3D%22%23000%22%2F%3E%3C%2Fsvg%3E"); }

trix-toolbar .trix-button--icon-bullet-list::before {
  background-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M5%207.5a1.5%201.5%200%201%200%200-3%201.5%201.5%200%200%200%200%203ZM8%206a1%201%200%200%201%201-1h11a1%201%200%201%201%200%202H9a1%201%200%200%201-1-1Zm1%205a1%201%200%201%200%200%202h11a1%201%200%201%200%200-2H9Zm0%206a1%201%200%201%200%200%202h11a1%201%200%201%200%200-2H9Zm-2.5-5a1.5%201.5%200%201%201-3%200%201.5%201.5%200%200%201%203%200ZM5%2019.5a1.5%201.5%200%201%200%200-3%201.5%201.5%200%200%200%200%203Z%22%20fill%3D%22%23000%22%2F%3E%3C%2Fsvg%3E"); }

trix-toolbar .trix-button--icon-number-list::before {
  background-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M3%204h2v4H4V5H3V4Zm5%202a1%201%200%200%201%201-1h11a1%201%200%201%201%200%202H9a1%201%200%200%201-1-1Zm1%205a1%201%200%201%200%200%202h11a1%201%200%201%200%200-2H9Zm0%206a1%201%200%201%200%200%202h11a1%201%200%201%200%200-2H9Zm-3.5-7H6v1l-1.5%202H6v1H3v-1l1.667-2H3v-1h2.5ZM3%2017v-1h3v4H3v-1h2v-.5H4v-1h1V17H3Z%22%20fill%3D%22%23000%22%2F%3E%3C%2Fsvg%3E"); }

trix-toolbar .trix-button--icon-undo::before {
  background-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M3%2014a1%201%200%200%200%201%201h6a1%201%200%201%200%200-2H6.257c2.247-2.764%205.151-3.668%207.579-3.264%202.589.432%204.739%202.356%205.174%205.405a1%201%200%200%200%201.98-.283c-.564-3.95-3.415-6.526-6.825-7.095C11.084%207.25%207.63%208.377%205%2011.39V8a1%201%200%200%200-2%200v6Zm2-1Z%22%20fill%3D%22%23000%22%2F%3E%3C%2Fsvg%3E"); }

trix-toolbar .trix-button--icon-redo::before {
  background-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M21%2014a1%201%200%200%201-1%201h-6a1%201%200%201%201%200-2h3.743c-2.247-2.764-5.151-3.668-7.579-3.264-2.589.432-4.739%202.356-5.174%205.405a1%201%200%200%201-1.98-.283c.564-3.95%203.415-6.526%206.826-7.095%203.08-.513%206.534.614%209.164%203.626V8a1%201%200%201%201%202%200v6Zm-2-1Z%22%20fill%3D%22%23000%22%2F%3E%3C%2Fsvg%3E"); }

trix-toolbar .trix-button--icon-decrease-nesting-level::before {
  background-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M5%206a1%201%200%200%201%201-1h12a1%201%200%201%201%200%202H6a1%201%200%200%201-1-1Zm4%205a1%201%200%201%200%200%202h9a1%201%200%201%200%200-2H9Zm-3%206a1%201%200%201%200%200%202h12a1%201%200%201%200%200-2H6Zm-3.707-5.707a1%201%200%200%200%200%201.414l2%202a1%201%200%201%200%201.414-1.414L4.414%2012l1.293-1.293a1%201%200%200%200-1.414-1.414l-2%202Z%22%20fill%3D%22%23000%22%2F%3E%3C%2Fsvg%3E"); }

trix-toolbar .trix-button--icon-increase-nesting-level::before {
  background-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M5%206a1%201%200%200%201%201-1h12a1%201%200%201%201%200%202H6a1%201%200%200%201-1-1Zm4%205a1%201%200%201%200%200%202h9a1%201%200%201%200%200-2H9Zm-3%206a1%201%200%201%200%200%202h12a1%201%200%201%200%200-2H6Zm-2.293-2.293%202-2a1%201%200%200%200%200-1.414l-2-2a1%201%200%201%200-1.414%201.414L3.586%2012l-1.293%201.293a1%201%200%201%200%201.414%201.414Z%22%20fill%3D%22%23000%22%2F%3E%3C%2Fsvg%3E"); }

trix-toolbar .trix-dialogs {
  position: relative; }

trix-toolbar .trix-dialog {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  font-size: 0.75em;
  padding: 15px 10px;
  background: #fff;
  box-shadow: 0 0.3em 1em #ccc;
  border-top: 2px solid #888;
  border-radius: 5px;
  z-index: 5; }

trix-toolbar .trix-input--dialog {
  font-size: inherit;
  font-weight: normal;
  padding: 0.5em 0.8em;
  margin: 0 10px 0 0;
  border-radius: 3px;
  border: 1px solid #bbb;
  background-color: #fff;
  box-shadow: none;
  outline: none;
  -webkit-appearance: none;
  -moz-appearance: none; }
  trix-toolbar .trix-input--dialog.validate:invalid {
    box-shadow: #F00 0px 0px 1.5px 1px; }

trix-toolbar .trix-button--dialog {
  font-size: inherit;
  padding: 0.5em;
  border-bottom: none; }

trix-toolbar .trix-dialog--link {
  max-width: 600px; }

trix-toolbar .trix-dialog__link-fields {
  display: flex;
  align-items: baseline; }
  trix-toolbar .trix-dialog__link-fields .trix-input {
    flex: 1; }
  trix-toolbar .trix-dialog__link-fields .trix-button-group {
    flex: 0 0 content;
    margin: 0; }

trix-editor [data-trix-mutable]:not(.attachment__caption-editor) {
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none; }

trix-editor [data-trix-mutable]::-moz-selection,
trix-editor [data-trix-cursor-target]::-moz-selection, trix-editor [data-trix-mutable] ::-moz-selection {
  background: none; }

trix-editor [data-trix-mutable]::selection,
trix-editor [data-trix-cursor-target]::selection, trix-editor [data-trix-mutable] ::selection {
  background: none; }

trix-editor .attachment__caption-editor:focus[data-trix-mutable]::-moz-selection {
  background: highlight; }

trix-editor .attachment__caption-editor:focus[data-trix-mutable]::selection {
  background: highlight; }

trix-editor [data-trix-mutable].attachment.attachment--file {
  box-shadow: 0 0 0 2px highlight;
  border-color: transparent; }

trix-editor [data-trix-mutable].attachment img {
  box-shadow: 0 0 0 2px highlight; }

trix-editor .attachment {
  position: relative; }
  trix-editor .attachment:hover {
    cursor: default; }

trix-editor .attachment--preview .attachment__caption:hover {
  cursor: text; }

trix-editor .attachment__progress {
  position: absolute;
  z-index: 1;
  height: 20px;
  top: calc(50% - 10px);
  left: 5%;
  width: 90%;
  opacity: 0.9;
  transition: opacity 200ms ease-in; }
  trix-editor .attachment__progress[value="100"] {
    opacity: 0; }

trix-editor .attachment__caption-editor {
  display: inline-block;
  width: 100%;
  margin: 0;
  padding: 0;
  font-size: inherit;
  font-family: inherit;
  line-height: inherit;
  color: inherit;
  text-align: center;
  vertical-align: top;
  border: none;
  outline: none;
  -webkit-appearance: none;
  -moz-appearance: none; }

trix-editor .attachment__toolbar {
  position: absolute;
  z-index: 1;
  top: -0.9em;
  left: 0;
  width: 100%;
  text-align: center; }

trix-editor .trix-button-group {
  display: inline-flex; }

trix-editor .trix-button {
  position: relative;
  float: left;
  color: #666;
  white-space: nowrap;
  font-size: 80%;
  padding: 0 0.8em;
  margin: 0;
  outline: none;
  border: none;
  border-radius: 0;
  background: transparent; }
  trix-editor .trix-button:not(:first-child) {
    border-left: 1px solid #ccc; }
  trix-editor .trix-button.trix-active {
    background: #cbeefa; }
  trix-editor .trix-button:not(:disabled) {
    cursor: pointer; }

trix-editor .trix-button--remove {
  text-indent: -9999px;
  display: inline-block;
  padding: 0;
  outline: none;
  width: 1.8em;
  height: 1.8em;
  line-height: 1.8em;
  border-radius: 50%;
  background-color: #fff;
  border: 2px solid highlight;
  box-shadow: 1px 1px 6px rgba(0, 0, 0, 0.25); }
  trix-editor .trix-button--remove::before {
    display: inline-block;
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    opacity: 0.7;
    content: "";
    background-image: url("data:image/svg+xml,%3Csvg%20height%3D%2224%22%20width%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M19%206.41%2017.59%205%2012%2010.59%206.41%205%205%206.41%2010.59%2012%205%2017.59%206.41%2019%2012%2013.41%2017.59%2019%2019%2017.59%2013.41%2012z%22%2F%3E%3Cpath%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%2F%3E%3C%2Fsvg%3E");
    background-position: center;
    background-repeat: no-repeat;
    background-size: 90%; }
  trix-editor .trix-button--remove:hover {
    border-color: #333; }
    trix-editor .trix-button--remove:hover::before {
      opacity: 1; }

trix-editor .attachment__metadata-container {
  position: relative; }

trix-editor .attachment__metadata {
  position: absolute;
  left: 50%;
  top: 2em;
  transform: translate(-50%, 0);
  max-width: 90%;
  padding: 0.1em 0.6em;
  font-size: 0.8em;
  color: #fff;
  background-color: rgba(0, 0, 0, 0.7);
  border-radius: 3px; }
  trix-editor .attachment__metadata .attachment__name {
    display: inline-block;
    max-width: 100%;
    vertical-align: bottom;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap; }
  trix-editor .attachment__metadata .attachment__size {
    margin-left: 0.2em;
    white-space: nowrap; }

.trix-content {
  line-height: 1.5;
  overflow-wrap: break-word;
  word-break: break-word; }
  .trix-content * {
    box-sizing: border-box;
    margin: 0;
    padding: 0; }
  .trix-content h1 {
    font-size: 1.2em;
    line-height: 1.2; }
  .trix-content blockquote {
    border: 0 solid #ccc;
    border-left-width: 0.3em;
    margin-left: 0.3em;
    padding-left: 0.6em; }
  .trix-content [dir=rtl] blockquote,
  .trix-content blockquote[dir=rtl] {
    border-width: 0;
    border-right-width: 0.3em;
    margin-right: 0.3em;
    padding-right: 0.6em; }
  .trix-content li {
    margin-left: 1em; }
  .trix-content [dir=rtl] li {
    margin-right: 1em; }
  .trix-content pre {
    display: inline-block;
    width: 100%;
    vertical-align: top;
    font-family: monospace;
    font-size: 0.9em;
    padding: 0.5em;
    white-space: pre;
    background-color: #eee;
    overflow-x: auto; }
  .trix-content img {
    max-width: 100%;
    height: auto; }
  .trix-content .attachment {
    display: inline-block;
    position: relative;
    max-width: 100%; }
    .trix-content .attachment a {
      color: inherit;
      text-decoration: none; }
      .trix-content .attachment a:hover, .trix-content .attachment a:visited:hover {
        color: inherit; }
  .trix-content .attachment__caption {
    text-align: center; }
    .trix-content .attachment__caption .attachment__name + .attachment__size::before {
      content: ' \2022 '; }
  .trix-content .attachment--preview {
    width: 100%;
    text-align: center; }
    .trix-content .attachment--preview .attachment__caption {
      color: #666;
      font-size: 0.9em;
      line-height: 1.2; }
  .trix-content .attachment--file {
    color: #333;
    line-height: 1;
    margin: 0 2px 2px 2px;
    padding: 0.4em 1em;
    border: 1px solid #bbb;
    border-radius: 5px; }
  .trix-content .attachment-gallery {
    display: flex;
    flex-wrap: wrap;
    position: relative; }
    .trix-content .attachment-gallery .attachment {
      flex: 1 0 33%;
      padding: 0 0.5em;
      max-width: 33%; }
    .trix-content .attachment-gallery.attachment-gallery--2 .attachment, .trix-content .attachment-gallery.attachment-gallery--4 .attachment {
      flex-basis: 50%;
      max-width: 50%; }
/*
 * Provides a drop-in pointer for the default Trix stylesheet that will format the toolbar and
 * the trix-editor content (whether displayed or under editing). Feel free to incorporate this
 * inclusion directly in any other asset bundle and remove this file.
 *

*/

/*
 * We need to override trix.css’s image gallery styles to accommodate the
 * <action-text-attachment> element we wrap around attachments. Otherwise,
 * images in galleries will be squished by the max-width: 33%; rule.
*/
.trix-content .attachment-gallery > action-text-attachment,
.trix-content .attachment-gallery > .attachment {
  flex: 1 0 33%;
  padding: 0 0.5em;
  max-width: 33%;
}

.trix-content .attachment-gallery.attachment-gallery--2 > action-text-attachment,
.trix-content .attachment-gallery.attachment-gallery--2 > .attachment, .trix-content .attachment-gallery.attachment-gallery--4 > action-text-attachment,
.trix-content .attachment-gallery.attachment-gallery--4 > .attachment {
  flex-basis: 50%;
  max-width: 50%;
}

.trix-content action-text-attachment .attachment {
  padding: 0 !important;
  max-width: 100% !important;
}
/* Update styles in signin.css */

.back-to-main {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  color: #7759C2;
  text-decoration: none;
  font-size: 0.875rem;
  padding: 0.5rem;
  margin: -0.5rem;
  border-radius: 0.375rem;
  transition: all 0.2s ease;
}

.back-to-main:hover {
  background: rgba(119, 89, 194, 0.1);
  color: #A989F5;
}

.signin-header {
  margin-bottom: 2rem;
}

.signin-box h1 {
  margin-bottom: 2rem;
  font-size: 1.875rem;
  font-weight: 600;
}

.dev-button {
  background-color: #22c55e !important;
  margin-top: 1rem;
  text-decoration: none;
}

.dev-notice {
  margin-top: 1rem;
  font-size: 0.875rem;
  color: #666;
}
/* app/assets/stylesheets/components/_admin_carousel.css */

/* Admin-specific carousel styles */
.admin-carousel {
    margin-bottom: var(--spacing-lg);
    box-shadow: var(--shadow-md);
    border-radius: var(--radius-lg);
    overflow: hidden;
    background-color: var(--bg-card);
  }
  
  .admin-carousel .carousel-main-container {
    position: relative;
    width: 100%;
    height: 300px;
    background-color: var(--bg-accent);
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
  }
  
  .admin-carousel .carousel-image-wrapper {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: opacity 0.3s ease-in-out;
    padding: var(--spacing-sm);
  }
  
  .admin-carousel .carousel-main-image {
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
    border-radius: var(--radius-md);
  }
  
  /* Delete button */
  .admin-carousel .delete-image-btn {
    position: absolute;
    top: var(--spacing-sm);
    right: var(--spacing-sm);
    background-color: var(--danger);
    color: white;
    border: none;
    width: 30px;
    height: 30px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    opacity: 0.8;
    transition: all 0.2s ease;
    z-index: 5;
  }
  
  .admin-carousel .delete-image-btn:hover {
    opacity: 1;
    transform: scale(1.1);
  }
  
  /* Navigation Buttons */
  .admin-carousel .carousel-nav-btn {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    background-color: rgba(255, 255, 255, 0.8);
    color: var(--text-secondary);
    border: none;
    border-radius: 50%;
    width: 40px;
    height: 40px;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: all 0.2s ease;
    z-index: 10;
    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
  }
  
  .admin-carousel .carousel-nav-btn:hover {
    background-color: white;
    color: var(--text-primary);
    box-shadow: 0 3px 8px rgba(0, 0, 0, 0.15);
  }
  
  .admin-carousel .carousel-prev-btn {
    left: var(--spacing-md);
  }
  
  .admin-carousel .carousel-next-btn {
    right: var(--spacing-md);
  }
  
  /* Thumbnail Navigation */
  .admin-carousel .carousel-thumbnails {
    display: flex;
    overflow-x: auto;
    padding: var(--spacing-sm);
    background-color: var(--bg-card);
    border-top: 1px solid var(--border-light);
    gap: var(--spacing-sm);
    -ms-overflow-style: none;  /* Hide scrollbar in IE and Edge */
    scrollbar-width: none;  /* Hide scrollbar in Firefox */
  }
  
  .admin-carousel .carousel-thumbnails::-webkit-scrollbar {
    display: none; /* Hide scrollbar in Chrome, Safari and Opera */
  }
  
  .admin-carousel .carousel-thumbnail-wrapper {
    flex: 0 0 auto;
    width: 60px;
    height: 60px;
    border-radius: var(--radius-md);
    overflow: hidden;
    border: 2px solid transparent;
    cursor: pointer;
    opacity: 0.7;
    transition: all 0.2s ease;
    display: flex;
    align-items: center;
    justify-content: center;
    background-color: var(--bg-accent);
  }
  
  .admin-carousel .carousel-thumbnail-wrapper:hover {
    opacity: 0.9;
  }
  
  .admin-carousel .carousel-thumbnail-wrapper.active {
    border-color: var(--primary);
    opacity: 1;
  }
  
  .admin-carousel .carousel-thumbnail-image {
    max-width: 100%;
    max-height: 100%;
    object-fit: cover;
  }
  
  /* Empty state placeholder */
  .empty-image-placeholder {
    width: 100%;
    height: 220px;
    background-color: var(--bg-accent);
    border-radius: var(--radius-md);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    color: var(--text-muted);
    margin-bottom: var(--spacing-md);
  }
  
  .placeholder-icon {
    margin-bottom: var(--spacing-sm);
    opacity: 0.5;
  }
  
  .placeholder-text {
    font-size: var(--text-sm);
  }
  
  /* Loading States */
  .admin-carousel.carousel-loading .carousel-image-wrapper {
    opacity: 0.5;
  }
  
  .admin-carousel.carousel-loading::after {
    content: "";
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 40px;
    height: 40px;
    border-radius: 50%;
    border: 3px solid rgba(0, 0, 0, 0.1);
    border-top-color: var(--primary);
    animation: carousel-spin 1s linear infinite;
    z-index: 20;
  }
  
  @keyframes carousel-spin {
    to { transform: translate(-50%, -50%) rotate(360deg); }
  }
  
  /* Keep version control styles separate */
  .version-info-section {
    /* Version info styles */
  }
/* app/assets/stylesheets/components/_carousel.css */

/* Modern Image Carousel Styles */
.modern-carousel {
  margin-bottom: var(--spacing-lg);
  box-shadow: var(--shadow-md);
  border-radius: var(--radius-lg);
  overflow: hidden;
  background-color: var(--bg-card);
}

/* Main Image Container */
.carousel-main-container {
  position: relative;
  width: 100%;
  height: 300px;
  background-color: var(--bg-accent);
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}

.carousel-image-wrapper {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: opacity 0.3s ease-in-out;
  padding: var(--spacing-sm);
}

.carousel-main-image {
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
  border-radius: var(--radius-md);
}

/* Delete Image Button */
.delete-image-btn {
  position: absolute;
  top: var(--spacing-sm);
  right: var(--spacing-sm);
  background-color: var(--danger);
  color: white;
  border: none;
  width: 30px;
  height: 30px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  opacity: 0.8;
  transition: all 0.2s ease;
  z-index: 5;
}

.delete-image-btn:hover {
  opacity: 1;
  transform: scale(1.1);
}

/* Navigation Buttons */
.carousel-nav-btn {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  background-color: rgba(255, 255, 255, 0.8);
  color: var(--text-secondary);
  border: none;
  border-radius: 50%;
  width: 40px;
  height: 40px;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: all 0.2s ease;
  z-index: 10;
  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
}

.carousel-nav-btn:hover {
  background-color: white;
  color: var(--text-primary);
  box-shadow: 0 3px 8px rgba(0, 0, 0, 0.15);
}

.carousel-prev-btn {
  left: var(--spacing-md);
}

.carousel-next-btn {
  right: var(--spacing-md);
}

/* Thumbnail Navigation */
.carousel-thumbnails {
  display: flex;
  overflow-x: auto;
  padding: var(--spacing-sm);
  background-color: var(--bg-card);
  border-top: 1px solid var(--border-light);
  gap: var(--spacing-sm);
  -ms-overflow-style: none;  /* Hide scrollbar in IE and Edge */
  scrollbar-width: none;  /* Hide scrollbar in Firefox */
}

.carousel-thumbnails::-webkit-scrollbar {
  display: none; /* Hide scrollbar in Chrome, Safari and Opera */
}

.carousel-thumbnail-wrapper {
  flex: 0 0 auto;
  width: 60px;
  height: 60px;
  border-radius: var(--radius-md);
  overflow: hidden;
  border: 2px solid transparent;
  cursor: pointer;
  opacity: 0.7;
  transition: all 0.2s ease;
  display: flex;
  align-items: center;
  justify-content: center;
  background-color: var(--bg-accent);
}

.carousel-thumbnail-wrapper:hover {
  opacity: 0.9;
}

.carousel-thumbnail-wrapper.active {
  border-color: var(--primary);
  opacity: 1;
}

.carousel-thumbnail-image {
  max-width: 100%;
  max-height: 100%;
  object-fit: cover;
}

/* Empty state placeholder */
.empty-image-placeholder {
  width: 100%;
  height: 220px;
  background-color: var(--bg-accent);
  border-radius: var(--radius-md);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  color: var(--text-muted);
  margin-bottom: var(--spacing-md);
}

.placeholder-icon {
  margin-bottom: var(--spacing-sm);
  opacity: 0.5;
}

.placeholder-text {
  font-size: var(--text-sm);
}

/* Loading States */
.carousel-loading .carousel-image-wrapper {
  opacity: 0.5;
}

.carousel-loading::after {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 40px;
  height: 40px;
  border-radius: 50%;
  border: 3px solid rgba(0, 0, 0, 0.1);
  border-top-color: var(--primary);
  animation: spin 1s linear infinite;
  z-index: 20;
}

@keyframes spin {
  to { transform: translate(-50%, -50%) rotate(360deg); }
}

/* Responsive adjustments */
@media (max-width: 640px) {
  .carousel-main-container {
    height: 220px;
  }
  
  .carousel-nav-btn {
    width: 32px;
    height: 32px;
  }
  
  .carousel-thumbnail-wrapper {
    width: 50px;
    height: 50px;
  }
}
/* app/assets/stylesheets/components/_image_management.css */

/* Image Management */
.image-thumbnails-list {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
    gap: var(--spacing-md);
    margin-bottom: var(--spacing-md);
  }
  
  .image-thumbnail-item {
    display: flex;
    flex-direction: column;
    align-items: center;
    background-color: var(--bg-accent);
    border-radius: var(--radius-md);
    padding: var(--spacing-sm);
    position: relative;
  }
  
  .admin-thumbnail {
    width: 100px;
    height: 100px;
    object-fit: cover;
    border-radius: var(--radius-sm);
    margin-bottom: var(--spacing-sm);
  }
  
  .admin-delete-btn {
    background-color: var(--danger);
    color: white;
    border: none;
    border-radius: var(--radius-sm);
    padding: var(--spacing-xs) var(--spacing-sm);
    cursor: pointer;
    font-size: var(--text-xs);
    transition: background-color 0.2s;
    font-weight: 500;
  }
  
  .admin-delete-btn:hover {
    background-color: #c82333;
  }
  
  /* Helper text */
  .helper-text {
    background-color: #f8f9fa;
    border-left: 4px solid var(--primary);
    padding: var(--spacing-md);
    border-radius: var(--radius-sm);
    margin-top: var(--spacing-sm);
  }
  
  .helper-text p {
    margin: 0;
    font-size: var(--text-sm);
    color: var(--text-secondary);
  }
  
  .helper-text strong {
    color: var(--text-primary);
  }
  
  /* Display container for carousel */
  .image-display-container {
    margin-bottom: var(--spacing-md);
  }
  
  /* Primary update button enhancement */
  .primary-button {
    background-color: var(--primary);
    color: white;
    padding: var(--spacing-md) var(--spacing-xl);
    font-size: var(--text-md);
    font-weight: 600;
    transition: all 0.3s ease;
  }
  
  .primary-button:hover {
    background-color: var(--primary-dark);
    transform: translateY(-2px);
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
  }
  
  .primary-button:active {
    transform: translateY(0);
  }
/* app/assets/stylesheets/components/_js_image_management.css */

/* Image Manager */
#image-manager {
    margin-bottom: var(--spacing-lg);
  }
  
  .current-images {
    margin-bottom: var(--spacing-lg);
  }
  
  .current-images h4 {
    margin-top: 0;
    margin-bottom: var(--spacing-md);
    color: var(--text-primary);
    font-size: var(--text-md);
  }
  
  .image-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
    gap: var(--spacing-md);
  }
  
  .image-item {
    background-color: var(--bg-accent);
    border-radius: var(--radius-md);
    padding: var(--spacing-sm);
    text-align: center;
    transition: all 0.3s ease;
    display: flex;
    flex-direction: column;
  }
  
  .image-preview {
    width: 100%;
    height: 120px;
    object-fit: cover;
    border-radius: var(--radius-sm);
    margin-bottom: var(--spacing-sm);
  }
  
  .remove-image-btn {
    background-color: var(--danger);
    color: white;
    border: none;
    border-radius: var(--radius-sm);
    padding: var(--spacing-xs) var(--spacing-sm);
    cursor: pointer;
    font-size: var(--text-xs);
    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--spacing-xs);
    transition: all 0.2s ease;
  }
  
  .remove-image-btn:hover {
    background-color: #c82333;
  }
  
  .remove-image-btn svg {
    flex-shrink: 0;
  }
  
  /* Marked for removal state */
  .marked-for-removal {
    opacity: 0.5;
    position: relative;
  }
  
  .marked-for-removal::after {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: rgba(0, 0, 0, 0.3);
    border-radius: var(--radius-md);
    display: flex;
    align-items: center;
    justify-content: center;
  }
  
  .marked-for-removal .image-preview {
    filter: grayscale(100%);
  }
  
  .undo-button {
    background-color: var(--success) !important;
  }
  
  .undo-button:hover {
    background-color: #218838 !important;
  }
  
  /* Version buttons */
  .version-buttons {
    display: flex;
    gap: var(--spacing-sm);
  }
  
  .version-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: var(--spacing-sm) var(--spacing-md);
    border-radius: var(--radius-md);
    font-weight: 500;
    font-size: var(--text-sm);
    cursor: pointer;
    background-color: white;
    border: 1px solid var(--border-medium);
    transition: all 0.2s ease;
  }
  
  .version-btn:hover {
    border-color: var(--primary-light);
  }
  
  .version-btn.active {
    border-color: var(--primary);
    background-color: rgba(110, 73, 203, 0.1);
  }
  
  .version-btn.major {
    color: var(--danger);
  }
  
  .version-btn.minor {
    color: var(--warning);
  }
  
  .version-btn.patch {
    color: var(--success);
  }
  
  .version-btn.major.active {
    background-color: rgba(221, 43, 14, 0.1);
    border-color: var(--danger);
  }
  
  .version-btn.minor.active {
    background-color: rgba(252, 109, 38, 0.1);
    border-color: var(--warning);
  }
  
  .version-btn.patch.active {
    background-color: rgba(45, 161, 96, 0.1);
    border-color: var(--success);
  }
/* app/assets/stylesheets/features/_marketplace.css */

/* Main Container */
.marketplace-container {
    min-height: 100vh;
    display: flex;
    flex-direction: column;
    background-color: #f9f9f9;
  }
  
  /* Header */
  .marketplace-header {
    background-color: white;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
    padding: 1.5rem 2rem;
  }
  
  .header-content {
    display: flex;
    justify-content: space-between;
    align-items: center;
    max-width: 1200px;
    margin: 0 auto;
    width: 100%;
  }
  
  .marketplace-logo {
    display: flex;
    align-items: center;
    gap: 1rem;
  }
  
  .gitlab-icon {
    height: 32px;
  }
  
  .marketplace-logo h1 {
    font-size: 1.5rem;
    font-weight: 600;
    color: #333;
    margin: 0;
  }
  
  .header-actions {
    display: flex;
    gap: 1rem;
  }
  
  .header-button {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.5rem 1rem;
    background-color: #f5f5f5;
    color: #333;
    border-radius: 0.375rem;
    font-size: 0.875rem;
    font-weight: 500;
    text-decoration: none;
    transition: all 0.2s ease;
    border: 1px solid #e0e0e0;
  }
  
  .header-button:hover {
    background-color: #e9e9e9;
    color: #111;
  }
  
  .header-button svg {
    color: #6e49cb;
  }
  
  .access-info {
    background-color: #f5f5f5;
    border-radius: 0.5rem;
    padding: 1rem 2rem;
    margin-top: 1.5rem;
    display: flex;
    flex-wrap: wrap;
    gap: 2rem;
    max-width: 1200px;
    margin-left: auto;
    margin-right: auto;
  }
  
  .access-info-item {
    display: flex;
    flex-direction: column;
  }
  
  .info-label {
    font-size: 0.75rem;
    color: #666;
    margin-bottom: 0.25rem;
  }
  
  .info-value {
    font-size: 0.875rem;
    font-weight: 500;
    color: #333;
  }
  
  /* Main Content */
  .marketplace-main {
    flex: 1;
    max-width: 1200px;
    width: 100%;
    margin: 0 auto;
    padding: 2rem;
  }
  
  .marketplace-intro {
    margin-bottom: 2.5rem;
  }
  
  .marketplace-intro h2 {
    font-size: 1.75rem;
    font-weight: 600;
    color: #333;
    margin-bottom: 0.75rem;
  }
  
  .intro-text {
    color: #555;
    max-width: 800px;
    line-height: 1.6;
  }
  
  /* Product Grid */
  .products-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
    gap: 1.5rem;
  }
  
  .product-card {
    background-color: white;
    border-radius: 0.5rem;
    overflow: hidden;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
    transition: all 0.3s ease;
    display: flex;
    flex-direction: column;
    height: 100%;
  }
  
  .product-card:hover {
    transform: translateY(-3px);
    box-shadow: 0 8px 16px rgba(0, 0, 0, 0.1);
  }
  
  .product-image {
    height: 160px;
    background-color: #f5f5f5;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
  }
  
  .product-image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
  }
  
  .placeholder-image {
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #bbb;
    background-color: #f0f0f0;
  }
  
  .product-info {
    padding: 1.25rem;
    display: flex;
    flex-direction: column;
    flex: 1;
  }
  
  .product-title {
    font-size: 1.25rem;
    font-weight: 600;
    color: #333;
    margin: 0 0 0.5rem 0;
  }
  
  .product-meta {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin-bottom: 0.75rem;
  }
  
  .version-tag {
    padding: 0.25rem 0.5rem;
    background-color: #f0f0f0;
    color: #555;
    border-radius: 3rem;
    font-size: 0.75rem;
    font-weight: 500;
  }
  
  .product-description {
    color: #666;
    font-size: 0.875rem;
    line-height: 1.5;
    margin-bottom: 1.25rem;
    flex: 1;
  }
  
  .view-details-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    padding: 0.625rem 1rem;
    background-color: #6e49cb;
    color: white;
    border-radius: 0.375rem;
    font-size: 0.875rem;
    font-weight: 500;
    text-decoration: none;
    transition: all 0.2s ease;
    align-self: flex-start;
    margin-top: auto;
  }
  
  .view-details-btn:hover {
    background-color: #5d3eb5;
  }
  
  .view-details-btn svg {
    transition: transform 0.2s ease;
  }
  
  .view-details-btn:hover svg {
    transform: translateX(3px);
  }
  
  /* No Products State */
  .no-products {
    text-align: center;
    padding: 4rem 2rem;
    background-color: white;
    border-radius: 0.5rem;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
    color: #666;
  }
  
  .no-products svg {
    margin-bottom: 1.5rem;
    color: #bbb;
  }
  
  .no-products h3 {
    font-size: 1.25rem;
    color: #333;
    margin-bottom: 0.75rem;
  }
  
  /* Footer */
  .marketplace-footer {
    background-color: white;
    padding: 1.5rem 2rem;
    border-top: 1px solid #eee;
    margin-top: auto;
  }
  
  .footer-content {
    display: flex;
    justify-content: space-between;
    align-items: center;
    max-width: 1200px;
    margin: 0 auto;
    width: 100%;
  }
  
  .footer-content p {
    font-size: 0.875rem;
    color: #666;
    margin: 0;
  }
  
  .footer-links {
    display: flex;
    gap: 1.5rem;
  }
  
  .footer-links a {
    font-size: 0.875rem;
    color: #6e49cb;
    text-decoration: none;
    transition: color 0.2s ease;
  }
  
  .footer-links a:hover {
    color: #5d3eb5;
    text-decoration: underline;
  }
  
  /* Responsive Adjustments */
  @media (max-width: 768px) {
    .header-content {
      flex-direction: column;
      align-items: flex-start;
      gap: 1rem;
    }
    
    .access-info {
      flex-direction: column;
      gap: 1rem;
    }
    
    .products-grid {
      grid-template-columns: 1fr;
    }
    
    .footer-content {
      flex-direction: column;
      gap: 1rem;
      text-align: center;
    }
    
    .footer-links {
      justify-content: center;
    }
  }
  
  @media (max-width: 480px) {
    .marketplace-header {
      padding: 1rem;
    }
    
    .marketplace-main {
      padding: 1.5rem 1rem;
    }
    
    .product-card {
      margin-bottom: 1rem;
    }
  }
/* app/assets/stylesheets/components/_navbar_fix.css */
/* Restore navbar styles that might have been affected */

.nav {
    background-color: var(--bg-header, #212121);
    padding: 1rem 0;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
    position: sticky;
    top: 0;
    z-index: 100;
  }
  
  .nav-content {
    display: flex;
    align-items: center;
    justify-content: space-between;
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 1rem;
  }
  
  .nav-brand {
    font-size: 1.125rem;
    font-weight: 600;
    color: white;
    text-decoration: none;
  }
  
  .nav-links {
    display: flex;
    gap: 1rem;
  }
  
  .nav-link {
    color: white;
    padding: 0.25rem 0.5rem;
    border-radius: 0.25rem;
    transition: all 0.2s ease;
    text-decoration: none;
  }
  
  .nav-link:hover {
    background-color: rgba(255, 255, 255, 0.1);
  }
  
  /* Admin navbar fixes */
  .admin-nav {
    background-color: var(--bg-header, #212121); 
    padding: 1rem;
    display: flex;
    align-items: center;
    gap: 1.5rem;
    position: sticky;
    top: 0;
    z-index: 100;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
  }
  
  .admin-nav .nav-brand {
    color: white;
    font-weight: 600;
  }
  
  .admin-nav .nav-link {
    color: white;
    text-decoration: none;
    padding: 0.5rem 0.75rem;
    border-radius: 0.25rem;
    transition: all 0.2s ease;
  }
  
  .admin-nav .nav-link:hover {
    background-color: rgba(255, 255, 255, 0.1);
  }
/* app/assets/stylesheets/components/_product_carousel.css */

/* Product View Carousel - Enhanced styles for the customer-facing view */
.product-view-carousel {
    margin-bottom: var(--spacing-xl);
    box-shadow: var(--shadow-md);
    border-radius: var(--radius-lg);
    overflow: hidden;
    background-color: var(--bg-card);
  }
  
  /* Main Image Container - larger for product view */
  .product-view-carousel .carousel-main-container {
    position: relative;
    width: 100%;
    height: 400px;
    background-color: var(--bg-accent);
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
  }
  
  @media (min-width: 768px) {
    .product-view-carousel .carousel-main-container {
      height: 500px;
    }
  }
  
  .product-view-carousel .carousel-image-wrapper {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: opacity 0.4s ease-in-out;
    padding: var(--spacing-md);
  }
  
  .product-view-carousel .carousel-main-image {
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
    border-radius: var(--radius-md);
  }
  
  /* Navigation Buttons - larger for product view */
  .product-view-carousel .carousel-nav-btn {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    background-color: rgba(255, 255, 255, 0.8);
    color: var(--text-secondary);
    border: none;
    border-radius: 50%;
    width: 48px;
    height: 48px;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: all 0.2s ease;
    z-index: 10;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
  }
  
  .product-view-carousel .carousel-nav-btn:hover {
    background-color: white;
    color: var(--text-primary);
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
    transform: translateY(-50%) scale(1.05);
  }
  
  .product-view-carousel .carousel-prev-btn {
    left: var(--spacing-lg);
  }
  
  .product-view-carousel .carousel-next-btn {
    right: var(--spacing-lg);
  }
  
  /* Thumbnail Navigation - larger with more spacing for product view */
  .product-view-carousel .carousel-thumbnails {
    display: flex;
    overflow-x: auto;
    padding: var(--spacing-md);
    background-color: var(--bg-card);
    border-top: 1px solid var(--border-light);
    gap: var(--spacing-md);
    -ms-overflow-style: none;  /* Hide scrollbar in IE and Edge */
    scrollbar-width: none;  /* Hide scrollbar in Firefox */
    justify-content: center;
  }
  
  .product-view-carousel .carousel-thumbnails::-webkit-scrollbar {
    display: none; /* Hide scrollbar in Chrome, Safari and Opera */
  }
  
  .product-view-carousel .carousel-thumbnail-wrapper {
    flex: 0 0 auto;
    width: 80px;
    height: 80px;
    border-radius: var(--radius-md);
    overflow: hidden;
    border: 2px solid transparent;
    cursor: pointer;
    opacity: 0.7;
    transition: all 0.2s ease;
    display: flex;
    align-items: center;
    justify-content: center;
    background-color: var(--bg-accent);
  }
  
  .product-view-carousel .carousel-thumbnail-wrapper:hover {
    opacity: 0.9;
    transform: translateY(-2px);
  }
  
  .product-view-carousel .carousel-thumbnail-wrapper.active {
    border-color: var(--primary);
    opacity: 1;
    box-shadow: 0 2px 8px rgba(110, 73, 203, 0.25);
  }
  
  .product-view-carousel .carousel-thumbnail-image {
    max-width: 100%;
    max-height: 100%;
    object-fit: cover;
  }
  
  /* Loading States - with slightly different styling for the product view */
  .product-view-carousel.carousel-loading .carousel-image-wrapper {
    opacity: 0.5;
  }
  
  .product-view-carousel.carousel-loading::after {
    content: "";
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 48px;
    height: 48px;
    border-radius: 50%;
    border: 4px solid rgba(0, 0, 0, 0.1);
    border-top-color: var(--primary);
    animation: spin 1s linear infinite;
    z-index: 20;
  }
  
  @keyframes spin {
    to { transform: translate(-50%, -50%) rotate(360deg); }
  }
  
  /* Responsive adjustments */
  @media (max-width: 768px) {
    .product-view-carousel .carousel-main-container {
      height: 320px;
    }
    
    .product-view-carousel .carousel-nav-btn {
      width: 40px;
      height: 40px;
    }
    
    .product-view-carousel .carousel-thumbnail-wrapper {
      width: 64px;
      height: 64px;
    }
  }
  
  @media (max-width: 480px) {
    .product-view-carousel .carousel-main-container {
      height: 240px;
    }
    
    .product-view-carousel .carousel-nav-btn {
      width: 36px;
      height: 36px;
    }
    
    .product-view-carousel .carousel-thumbnail-wrapper {
      width: 56px;
      height: 56px;
    }
    
    .product-view-carousel .carousel-prev-btn {
      left: var(--spacing-sm);
    }
    
    .product-view-carousel .carousel-next-btn {
      right: var(--spacing-sm);
    }
  }
/* app/assets/stylesheets/components/_section_spacing.css */
/* Improved spacing for product sections */

/* Product section spacing */
.product-info-section {
    margin-bottom: 40px;
    padding-bottom: 20px;
  }
  
  .product-info-section:last-child {
    margin-bottom: 0;
    padding-bottom: 0;
    border-bottom: none;
  }
  
  .product-info-section h2 {
    margin-bottom: 24px;
    font-size: 1.5rem;
    color: var(--text-primary, #333);
  }
  
  /* Ensure product detail sections have adequate spacing */
  .product-detail-sections {
    display: flex;
    flex-direction: column;
    gap: 30px;
  }
  
  /* Section dividers */
  .section-divider {
    height: 1px;
    background-color: var(--border-light, #eee);
    margin: 30px 0;
  }
/* app/assets/stylesheets/features/_admin_ui.css */

/* ====== ADMIN UI IMPROVEMENTS ====== */

/* Base Admin Container */
.admin-container {
    min-height: 100vh;
    background-color: #f9f9f9;
    display: flex;
    flex-direction: column;
  }
  
  /* Admin Navigation Bar */
  .admin-nav {
    background-color: #333;
    padding: 0.75rem 1.5rem;
    display: flex;
    align-items: center;
    gap: 1.5rem;
    position: sticky;
    top: 0;
    z-index: 100;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
  }
  
  .nav-brand {
    color: white;
    font-weight: 600;
    font-size: 1.25rem;
  }
  
  .nav-link {
    color: rgba(255, 255, 255, 0.8);
    text-decoration: none;
    padding: 0.5rem 0.75rem;
    border-radius: 0.25rem;
    transition: all 0.2s ease;
    font-size: 0.95rem;
  }
  
  .nav-link:hover {
    background-color: rgba(255, 255, 255, 0.1);
    color: white;
  }
  
  /* Admin Header Section */
  .admin-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 1.5rem;
    background: white;
    padding: 1.5rem;
    border-radius: 0.5rem;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
  }
  
  .admin-header h1 {
    font-size: 1.5rem;
    margin: 0;
    color: #333;
  }
  
  /* Admin Main Content */
  .admin-main {
    padding: 1.5rem;
    max-width: 1400px;
    margin: 0 auto;
    width: 100%;
  }
  
  /* Admin Tables */
  .admin-table {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0;
    background: white;
    border-radius: 0.5rem;
    overflow: hidden;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
  }
  
  .admin-table th {
    background: #f5f5f5;
    text-align: left;
    padding: 0.75rem 1rem;
    font-weight: 600;
    color: #555;
    border-bottom: 1px solid #eee;
    font-size: 0.9rem;
  }
  
  .admin-table td {
    padding: 0.75rem 1rem;
    border-bottom: 1px solid #f5f5f5;
    font-size: 0.95rem;
    color: #333;
  }
  
  .admin-table tr:last-child td {
    border-bottom: none;
  }
  
  .admin-table tr:hover td {
    background-color: #fafafa;
  }
  
  /* Admin Form Container */
  .form-container {
    background: white;
    padding: 1.5rem;
    border-radius: 0.5rem;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
  }
  
  /* Buttons - COMPLETELY STANDARDIZED */
  .button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0.5rem 1rem;
    border-radius: 0.375rem;
    font-size: 0.875rem;
    font-weight: 500;
    cursor: pointer;
    transition: all 0.2s ease;
    text-decoration: none;
    border: none;
    background-color: #6e49cb; /* Primary purple */
    color: white;
  }
  
  .button:hover {
    background-color: #5d3eb5;
    transform: translateY(-1px);
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
  }
  
  .button-secondary {
    background-color: #f5f5f5;
    color: #333;
    border: 1px solid #e0e0e0;
  }
  
  .button-secondary:hover {
    background-color: #e9e9e9;
    color: #111;
  }
  
  .button-danger {
    background-color: #dd2b0e;
    color: white;
  }
  
  .button-danger:hover {
    background-color: #c82333;
  }
  
  .button-small {
    padding: 0.25rem 0.5rem;
    font-size: 0.75rem;
  }
  
  /* Form inputs */
  .form-group {
    margin-bottom: 1.25rem;
  }
  
  .form-label {
    display: block;
    margin-bottom: 0.5rem;
    font-weight: 500;
    color: #555;
    font-size: 0.95rem;
  }
  
  .form-input {
    width: 100%;
    padding: 0.625rem 0.75rem;
    border: 1px solid #ddd;
    border-radius: 0.375rem;
    font-size: 0.95rem;
    transition: all 0.2s ease;
  }
  
  .form-input:focus {
    outline: none;
    border-color: #6e49cb;
    box-shadow: 0 0 0 3px rgba(110, 73, 203, 0.1);
  }
  
  .form-input.error {
    border-color: #dd2b0e;
  }
  
  .error-text {
    color: #dd2b0e;
    font-size: 0.85rem;
    margin-top: 0.5rem;
  }
  
  /* Form Actions */
  .form-actions {
    display: flex;
    gap: 1rem;
    margin-top: 1.5rem;
    padding-top: 1.5rem;
    border-top: 1px solid #f5f5f5;
  }
  
  /* Notices */
  .notice {
    background-color: #e3fcef;
    color: #2da160;
    padding: 0.75rem 1rem;
    border-radius: 0.375rem;
    margin-bottom: 1.5rem;
    display: flex;
    align-items: center;
    border-left: 3px solid #2da160;
  }
  
  /* Product List Customizations */
  .product-list {
    list-style-type: none;
    padding: 0;
    margin: 0;
  }
  
  .product-list li {
    padding: 0.25rem 0;
  }
  
  /* CICD Value Fields */
  .cicd-value-fields {
    padding: 1rem;
    background-color: #f9f9f9;
    border-radius: 0.375rem;
    margin-bottom: 1rem;
    border: 1px solid #f0f0f0;
  }
  
  .cicd-values-section h3 {
    margin-bottom: 1rem;
  }
  
  .form-row {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr auto;
    gap: 1rem;
    align-items: flex-end;
  }
  
  /* Style Improvements for Select Fields */
  select.form-input {
    appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23666' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 0.75rem center;
    background-size: 16px;
    padding-right: 2.5rem;
  }
  
  /* Utility classes */
  .text-muted {
    color: #777;
  }
  
  .invisible {
    visibility: hidden;
  }
  
  /* Badge Styling */
  .badge {
    display: inline-block;
    padding: 0.25rem 0.5rem;
    border-radius: 0.25rem;
    font-size: 0.75rem;
    font-weight: 500;
    text-align: center;
  }
  
  .badge-success {
    background-color: #e3fcef;
    color: #2da160;
  }
  
  .badge-secondary {
    background-color: #f0f0f0;
    color: #757575;
  }
  
  .badge-info {
    background-color: #e3f2fd;
    color: #1068bf;
    text-decoration: none;
  }
  
  .badge-info:hover {
    background-color: #d0e8fc;
    text-decoration: underline;
  }
  
  /* Responsive Adjustments */
  @media (max-width: 768px) {
    .form-row {
      grid-template-columns: 1fr;
      gap: 0.75rem;
    }
    
    .admin-header {
      flex-direction: column;
      align-items: flex-start;
      gap: 1rem;
    }
  }
