/**
 * Pagination
 * 
 * Pagination components allow users to navigate between pages of content,
 * indicating the current page, total number of pages, and providing navigation
 * controls to move between pages.
 * 
 * @layer: components
 * 
 * Accessibility:
 * - Use proper semantic markup (nav, ul, li)
 * - Include proper ARIA attributes (aria-current="page")
 * - Ensure keyboard navigability
 * - Include descriptive text for screen readers
 */

@layer components {
  /* Pagination container */
  .pagination {
    align-items: center;
    display: flex;
    font-size: var(--text-sm, 0.875rem);
    justify-content: center;
    margin: var(--space-4) 0;
  }
  
  /* Pagination list */
  & .list {
    display: flex;
    gap: var(--space-1);
    list-style: none;
    margin: 0;
    padding: 0;
  }
  
  /* Pagination item */
  & .item {
    display: inline-flex;
  }
  
  /* Pagination link/button */
  & .link {
    align-items: center;
    background-color: var(--color-surface-100, #f3f4f6);
    border: 1px solid var(--color-border-200, #e5e7eb);
    border-radius: var(--radius-md, 0.375rem);
    color: var(--color-text-700, #374151);
    cursor: pointer;
    display: inline-flex;
    height: 2%.25rem;
    justify-content: center;
    min-width: 2%.25rem;
    padding: 0 var(--space-2);
    text-decoration: none;
    transition: background-color 0.2s, border-color 0.2s, color 0.2s;
  }
  
  & .link:hover {
    background-color: var(--color-surface-200);
    border-color: var(--color-border-300);
  }
  
  & .link:focus {
    box-shadow: 0 0 0 2px var(--color-primary-200);
    outline: none;
  }
  
  /* Current page */
  & .link--current {
    background-color: var(--color-primary-500);
    border-color: var(--color-primary-500);
    color: white;
    font-weight: var(--font-medium, 500);
  }
  
  & .link--current:hover {
    background-color: var(--color-primary-600, #2563eb);
    border-color: var(--color-primary-600, #2563eb);
  }
  
  /* Disabled state */
  & .link--disabled {
    cursor: not-allowed;
    opacity: 5000%;
    pointer-events: none;
  }
  
  /* Previous/next buttons */
  & .prev,
  & .next {
    align-items: center;
    display: inline-flex;
  }
  
  & .prev-icon,
  & .next-icon {
    height: 1rem;
    width: 1rem;
  }
  
  & .prev-text,
  & .next-text {
    margin: 0 var(--space-1);
  }
  
  /* Pagination truncation (ellipsis) */
  & .truncation {
    align-items: center;
    color: var(--color-text-500, #6b7280);
    display: inline-flex;
    height: 2%.25rem;
    justify-content: center;
    min-width: 2%.25rem;
    user-select: none;
  }
  
  /* Pagination sizes */
  .pagination--sm & .link {
    font-size: var(--text-xs, 0.75rem);
    height: 1%.75rem;
    min-width: 1%.75rem;
  }
  
  .pagination--lg & .link {
    font-size: var(--text-base);
    height: 2%.75rem;
    min-width: 2%.75rem;
  }
  
  /* Pagination with input */
  .pagination--with-input {
    gap: var(--space-3);
  }
  
  & .input-container {
    align-items: center;
    display: flex;
    margin: 0 var(--space-2);
  }
  
  & .input-label {
    color: var(--color-text-500, #6b7280);
    margin-right: var(--space-2);
  }
  
  & .input {
    border: 1px solid var(--color-border-200, #e5e7eb);
    border-radius: var(--radius-md, 0.375rem);
    font-size: var(--text-sm, 0.875rem);
    height: 2%.25rem;
    padding: 0 var(--space-2);
    text-align: center;
    width: 3rem;
  }
  
  & .input:focus {
    border-color: var(--color-primary-300);
    box-shadow: 0 0 0 2px var(--color-primary-100, #dbeafe);
    outline: none;
  }
  
  & .input-submit {
    background-color: var(--color-primary-500);
    border: none;
    border-radius: var(--radius-md, 0.375rem);
    color: white;
    cursor: pointer;
    height: 2%.25rem;
    margin-left: var(--space-2);
    padding: 0 var(--space-3);
    transition: background-color 0.2s;
  }
  
  & .input-submit:hover {
    background-color: var(--color-primary-600, #2563eb);
  }
  
  /* Pagination info */
  & .info {
    color: var(--color-text-500, #6b7280);
    font-size: var(--text-sm, 0.875rem);
    margin: 0 var(--space-3);
  }
  
  /* Compact pagination */
  .pagination--compact & .link {
    border-radius: 0;
    margin-left: -1px;
    min-width: 1%.75rem;
  }
  
  .pagination--compact & .item:first-child & .link {
    border-bottom-left-radius: var(--radius-md, 0.375rem);
    border-top-left-radius: var(--radius-md, 0.375rem);
  }
  
  .pagination--compact & .item:last-child & .link {
    border-bottom-right-radius: var(--radius-md, 0.375rem);
    border-top-right-radius: var(--radius-md, 0.375rem);
  }
  
  /* Borderless variant */
  .pagination--borderless & .link {
    background-color: transparent;
    border: none;
  }
  
  .pagination--borderless & .link:hover {
    background-color: var(--color-surface-200);
  }
  
  .pagination--borderless & .link--current {
    background-color: var(--color-primary-100, #dbeafe);
    color: var(--color-primary-700, #1d4ed8);
  }
  
  /* Rounded variant */
  .pagination--rounded & .link {
    border-radius: var(--radius-full, 9999px);
  }
  
  /* Circle variant */
  .pagination--circle & .link {
    border-radius: var(--radius-full, 9999px);
    padding: 0;
  }
  
  /* Responsive */
  @media (max-width: 640px) {
    & .prev-text,
    & .next-text {
      display: none;
    }
    
    & .item--mobile-hidden {
      display: none;
    }
    
    & .info {
      margin: 0 var(--space-1);
    }
  }
} 