/* common/components.css — shared UX utilities & component polish */

/* ── Skip link (keyboard a11y) ── */
.skip-link {
  position: absolute;
  top: -100%;
  left: var(--space-4);
  z-index: calc(var(--z-tooltip) + 1);
  padding: var(--space-2) var(--space-4);
  background: var(--capk-green);
  color: #fff;
  font-size: var(--text-sm);
  font-weight: 600;
  border-radius: var(--radius-md);
  text-decoration: none;
  transition: top var(--transition-fast);
}

.skip-link:focus {
  top: var(--space-4);
  outline: none;
  box-shadow: var(--focus-ring);
}

/* ── Page shell (optional content constraint) ── */
.page-shell {
  width: 100%;
  max-width: var(--content-max-width);
  margin-inline: auto;
}

/* ── Touch-friendly controls on coarse pointers ── */
@media (pointer: coarse) {
  .btn,
  .form-control,
  .form-select,
  .header-btn,
  .header-toggle,
  .nav-item-link {
    min-height: var(--touch-target-min);
  }

  .btn-sm {
    min-height: 38px;
  }
}

/* ── Form UX ── */
.form-control,
.form-select {
  border-radius: var(--radius-md);
  border-color: var(--border-color);
  transition: border-color var(--transition-fast), box-shadow var(--transition-fast);
}

.form-control:focus,
.form-select:focus {
  border-color: var(--capk-green);
  box-shadow: var(--focus-ring);
}

.form-label {
  font-weight: 500;
  color: var(--gray-700);
  margin-bottom: var(--space-2);
}

.form-text {
  color: var(--gray-500);
}

/* ── Table scroll on small screens ── */
.table-responsive-card {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}

.table-card .table-responsive-card,
.table-card .table-responsive {
  margin: 0;
}

/* ── Page header polish ── */
.page-header {
  transition: box-shadow var(--transition-fast);
}

.page-header .breadcrumb {
  margin-bottom: var(--space-3);
}

/* ── Alert polish ── */
.alert {
  border-radius: var(--radius-lg);
  border: 1px solid transparent;
}

.alert .btn-close {
  padding: var(--space-4);
}

/* ── Dropdown polish ── */
.dropdown-menu {
  border-radius: var(--radius-lg);
  border-color: var(--border-color);
  padding: var(--space-2);
}

.dropdown-item {
  border-radius: var(--radius-md);
  padding: var(--space-2) var(--space-3);
}

.dropdown-item:active {
  background-color: var(--capk-green-light);
  color: var(--capk-green-dark);
}

/* ── Reduced motion ── */
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }

  .stat-card:hover,
  .hover-lift:hover {
    transform: none;
  }
}

/* ── Data Tables ── */
.datatable-wrapper .datatable-search input {
  border: 1.5px solid var(--border-color);
  border-radius: var(--radius-md);
  padding: var(--space-2) var(--space-3);
  font-size: var(--text-sm);
}

/* ── Print Styles ── */
@media print {
  .app-sidebar,
  .app-header,
  .header-search-mobile,
  .skip-link,
  .btn,
  .pagination,
  .sidebar-overlay {
    display: none !important;
  }

  .app-main {
    margin-left: 0 !important;
  }

  .app-content {
    padding: 0 !important;
  }

  .card {
    box-shadow: none !important;
    border: 1px solid #ddd !important;
  }
}
