/**
 * Accordion/Collapse Component
 * Expandable content sections for FAQs, documentation, and nested information
 * Part of Amphibious 2.0 Component Library
 */

/* ========================================
   BASE ACCORDION STRUCTURE
   ======================================== */

.aiab-accordion {
  border: 1px solid var(--color-gray-300);
  border-radius: 0.5rem;
  overflow: hidden;
  background: white;
}

.aiab-accordion--flush {
  border: none;
  border-radius: 0;
}

.aiab-accordion--separated .aiab-accordion-item {
  margin-bottom: 1rem;
  border: 1px solid var(--color-gray-300);
  border-radius: 0.5rem;
}

.aiab-accordion--separated .aiab-accordion-item:last-child {
  margin-bottom: 0;
}

/* ========================================
   ACCORDION ITEMS
   ======================================== */

.aiab-accordion-item {
  border-bottom: 1px solid var(--color-gray-300);
  background: white;
}

.aiab-accordion-item:last-child {
  border-bottom: none;
}

.aiab-accordion-item.aiab-active .aiab-accordion-header {
  background-color: #f9fafb;
  border-bottom: 1px solid var(--color-gray-300);
}

/* ========================================
   ACCORDION HEADER/TRIGGER
   ======================================== */

.aiab-accordion-header {
  position: relative;
  width: 100%;
  padding: 1rem 3rem 1rem 1.5rem;
  background: transparent;
  border: none;
  text-align: left;
  cursor: pointer;
  font-size: 1rem;
  font-weight: 500;
  color: #1f2937;
  transition: background-color 0.2s ease;
  display: flex;
  align-items: center;
  justify-content: space-between;
  line-height: 1.5;
}

.aiab-accordion-header:hover {
  background-color: #f9fafb;
}

.aiab-accordion-header:focus {
  outline: none;
  background-color: #f3f4f6;
}

.aiab-accordion-header:focus-visible {
  outline: 2px solid #2563eb;
  outline-offset: -2px;
}

/* Accordion icon/chevron */
.aiab-accordion-header::after {
  content: "";
  position: absolute;
  right: 1.5rem;
  top: 50%;
  transform: translateY(-50%) rotate(0);
  width: 0;
  height: 0;
  border-left: 0.375rem solid transparent;
  border-right: 0.375rem solid transparent;
  border-top: 0.5rem solid #6b7280;
  transition: transform 0.3s ease;
}

/* Alternative: Using SVG icon */
.aiab-accordion-icon {
  width: 1.25rem;
  height: 1.25rem;
  margin-left: auto;
  flex-shrink: 0;
  transition: transform 0.3s ease;
  color: #6b7280;
}

.aiab-accordion-item.aiab-active .aiab-accordion-header::after,
.aiab-accordion-header[aria-expanded="true"]::after {
  transform: translateY(-50%) rotate(180deg);
}

.aiab-accordion-item.aiab-active .aiab-accordion-icon,
.aiab-accordion-header[aria-expanded="true"] .aiab-accordion-icon {
  transform: rotate(180deg);
}

/* Plus/Minus variant */
.aiab-accordion--plus-minus .aiab-accordion-header::after {
  content: "+";
  border: none;
  font-size: 1.5rem;
  width: auto;
  height: auto;
  line-height: 1;
  color: #6b7280;
  transform: translateY(-50%);
}

.aiab-accordion--plus-minus .aiab-accordion-item.aiab-active .aiab-accordion-header::after,
.aiab-accordion--plus-minus .aiab-accordion-header[aria-expanded="true"]::after {
  content: "−";
  transform: translateY(-50%);
}

/* ========================================
   ACCORDION CONTENT
   ======================================== */

.aiab-accordion-content {
  padding: 0;
  max-height: 0;
  overflow: hidden;
  transition:
    max-height 0.3s ease,
    padding 0.3s ease;
}

.aiab-accordion-item.aiab-active .aiab-accordion-content,
.aiab-accordion-content[aria-hidden="false"] {
  padding: 1.5rem;
  max-height: 100vh; /* Will be set dynamically via JS */
}

/* No animation variant */
.aiab-accordion--no-animation .aiab-accordion-content {
  transition: none;
}

.aiab-accordion--no-animation .aiab-accordion-header::after,
.aiab-accordion--no-animation .aiab-accordion-icon {
  transition: none;
}

/* Content body */
.aiab-accordion-body {
  color: #4b5563;
  line-height: 1.6;
}

.aiab-accordion-body > *:first-child {
  margin-top: 0;
}

.aiab-accordion-body > *:last-child {
  margin-bottom: 0;
}

/* ========================================
   ACCORDION VARIANTS
   ======================================== */

/* Bordered variant */
.aiab-accordion--bordered {
  border: 2px solid var(--color-gray-300);
}

.aiab-accordion--bordered .aiab-accordion-item {
  border-bottom: 2px solid var(--color-gray-300);
}

/* Shadow variant */
.aiab-accordion--shadow {
  border: none;
  box-shadow:
    0 1px 3px 0 rgba(0, 0, 0, 0.1),
    0 1px 2px 0 rgba(0, 0, 0, 0.06);
}

.aiab-accordion--shadow .aiab-accordion-item {
  border-bottom: 1px solid #f3f4f6;
}

/* Compact variant */
.aiab-accordion--compact .aiab-accordion-header {
  padding: 0.75rem 2.5rem 0.75rem 1rem;
  font-size: 0.875rem;
}

.aiab-accordion--compact .aiab-accordion-content {
  padding: 1rem;
}

.aiab-accordion--compact .aiab-accordion-header::after {
  right: 1rem;
}

/* Large variant */
.aiab-accordion--large .aiab-accordion-header {
  padding: 1.25rem 3.5rem 1.25rem 2rem;
  font-size: 1.125rem;
}

.aiab-accordion--large .aiab-accordion-item.aiab-active .aiab-accordion-content {
  padding: 2rem;
}

/* ========================================
   COLOR VARIANTS
   ======================================== */

/* Primary */
.aiab-accordion--primary .aiab-accordion-header {
  color: #a65e00;
}

.aiab-accordion--primary .aiab-accordion-header::after,
.aiab-accordion--primary .aiab-accordion-icon {
  color: #a65e00;
}

.aiab-accordion--primary .aiab-accordion-item.aiab-active .aiab-accordion-header {
  background-color: #fff3e0;
  color: #a65e00;
}

/* Success */
.aiab-accordion--success .aiab-accordion-item.aiab-active .aiab-accordion-header {
  background-color: #dcfce7;
  color: #16a34a;
}

/* Info */
.aiab-accordion--info .aiab-accordion-item.aiab-active .aiab-accordion-header {
  background-color: #dbeafe;
  color: #2563eb;
}

/* Warning */
.aiab-accordion--warning .aiab-accordion-item.aiab-active .aiab-accordion-header {
  background-color: #fef3c7;
  color: #d97706;
}

/* Danger */
.aiab-accordion--danger .aiab-accordion-item.aiab-active .aiab-accordion-header {
  background-color: #fee2e2;
  color: #dc2626;
}

/* ========================================
   NESTED ACCORDIONS
   ======================================== */

.aiab-accordion .aiab-accordion {
  margin: 1rem 0;
  border-radius: 0.375rem;
}

.aiab-accordion .aiab-accordion .aiab-accordion-header {
  padding-left: 1rem;
  font-size: 0.9375rem;
}

.aiab-accordion .aiab-accordion .aiab-accordion-content {
  padding-left: 1rem;
  padding-right: 1rem;
}

/* ========================================
   ACCESSIBILITY
   ======================================== */

/* Screen reader only */
.aiab-accordion-sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* Focus management */
.aiab-accordion-header:focus-visible {
  outline: 2px solid #2563eb;
  outline-offset: -2px;
  border-radius: 0.25rem;
}

/* High contrast mode */
@media (prefers-contrast: high) {
  .aiab-accordion {
    border: 2px solid;
  }

  .aiab-accordion-header:focus-visible {
    outline: 3px solid;
  }
}

/* ========================================
   RESPONSIVE DESIGN
   ======================================== */

@media (--bp-sm-down) {
  .aiab-accordion-header {
    padding: 0.875rem 2.5rem 0.875rem 1rem;
    font-size: 0.9375rem;
  }

  .aiab-accordion-item.aiab-active .aiab-accordion-content {
    padding: 1rem;
  }

  .aiab-accordion-header::after {
    right: 1rem;
  }
}

/* ========================================
   PRINT STYLES
   ======================================== */

@media print {
  .aiab-accordion-item .aiab-accordion-content {
    max-height: none;
    padding: 1rem;
    display: block;
  }

  .aiab-accordion-header::after {
    display: none;
  }

  .aiab-accordion-header {
    cursor: default;
    font-weight: 600;
  }
}

/* ========================================
   DARK MODE SUPPORT
   ======================================== */

@media (prefers-color-scheme: dark) {
  .aiab-accordion {
    background: #1f2937;
    border-color: #374151;
  }

  .aiab-accordion-item {
    background: #1f2937;
    border-color: #374151;
  }

  .aiab-accordion-header {
    color: #f3f4f6;
  }

  .aiab-accordion-header:hover {
    background-color: #374151;
  }

  .aiab-accordion-item.aiab-active .aiab-accordion-header {
    background-color: #374151;
    border-color: #4b5563;
  }

  .aiab-accordion-body {
    color: #d1d5db;
  }

  .aiab-accordion-header::after,
  .aiab-accordion-icon {
    color: #9ca3af;
  }
}
