/* Main Component Styles - Core UI components */

/* Button Components */
.bsp-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--spacing-2);
  padding: var(--spacing-3) var(--spacing-6);
  font-size: var(--font-size-base);
  font-weight: var(--font-weight-medium);
  line-height: 1;
  border-radius: var(--radius-lg);
  border: 1px solid transparent;
  cursor: pointer;
  transition: all var(--transition-fast);
  text-decoration: none;
  white-space: nowrap;
  user-select: none;
  outline: none;
}

.bsp-btn:focus {
  outline: 2px solid var(--primary-blue);
  outline-offset: 2px;
}

.bsp-btn:disabled {
  opacity: 0.5;
  cursor: not-allowed;
  pointer-events: none;
}

/* Button Variants */
.bsp-btn-primary {
  background-color: var(--primary-blue);
  color: var(--white);
  border-color: var(--primary-blue);
}

.bsp-btn-primary:hover {
  background-color: var(--primary-blue-dark);
  border-color: var(--primary-blue-dark);
}

.bsp-btn-secondary {
  background-color: transparent;
  color: var(--primary-blue);
  border-color: var(--primary-blue);
}

.bsp-btn-secondary:hover {
  background-color: var(--primary-blue);
  color: var(--white);
}

.bsp-btn-outline {
  background-color: transparent;
  color: var(--gray-700);
  border-color: var(--gray-300);
}

.bsp-btn-outline:hover {
  background-color: var(--gray-50);
  border-color: var(--gray-400);
}

.bsp-btn-ghost {
  background-color: transparent;
  color: var(--gray-700);
  border-color: transparent;
}

.bsp-btn-ghost:hover {
  background-color: var(--gray-100);
}

.bsp-btn-success {
  background-color: var(--success);
  color: var(--white);
  border-color: var(--success);
}

.bsp-btn-success:hover {
  background-color: #059669;
  border-color: #059669;
}

.bsp-btn-warning {
  background-color: var(--warning);
  color: var(--white);
  border-color: var(--warning);
}

.bsp-btn-warning:hover {
  background-color: #d97706;
  border-color: #d97706;
}

.bsp-btn-error {
  background-color: var(--error);
  color: var(--white);
  border-color: var(--error);
}

.bsp-btn-error:hover {
  background-color: #dc2626;
  border-color: #dc2626;
}

/* Button Sizes */
.bsp-btn-sm {
  padding: var(--spacing-2) var(--spacing-4);
  font-size: var(--font-size-sm);
}

.bsp-btn-lg {
  padding: var(--spacing-4) var(--spacing-8);
  font-size: var(--font-size-lg);
}

.bsp-btn-xl {
  padding: var(--spacing-5) var(--spacing-10);
  font-size: var(--font-size-xl);
}

/* Button with Icon */
.bsp-btn .bsp-icon {
  width: 1.25em;
  height: 1.25em;
}

.bsp-btn-sm .bsp-icon {
  width: 1em;
  height: 1em;
}

.bsp-btn-lg .bsp-icon {
  width: 1.5em;
  height: 1.5em;
}

/* Card Components */
.bsp-card {
  background-color: var(--white);
  border: 1px solid var(--gray-200);
  border-radius: var(--radius-xl);
  box-shadow: var(--shadow-sm);
  overflow: hidden;
  transition: box-shadow var(--transition-fast);
}

.bsp-card:hover {
  box-shadow: var(--shadow-md);
}

.bsp-card-header {
  padding: var(--spacing-6);
  border-bottom: 1px solid var(--gray-200);
  background-color: var(--gray-50);
}

.bsp-card-body {
  padding: var(--spacing-6);
}

.bsp-card-footer {
  padding: var(--spacing-6);
  border-top: 1px solid var(--gray-200);
  background-color: var(--gray-50);
}

/* Form Components */
.bsp-form-group {
  margin-bottom: var(--spacing-5);
}

.bsp-label {
  display: block;
  font-size: var(--font-size-sm);
  font-weight: var(--font-weight-medium);
  color: var(--gray-700);
  margin-bottom: var(--spacing-2);
}

.bsp-label-required::after {
  content: ' *';
  color: var(--error);
}

.bsp-input {
  display: block;
  width: 100%;
  padding: var(--spacing-3);
  font-size: var(--font-size-base);
  line-height: var(--line-height-normal);
  color: var(--gray-900);
  background-color: var(--white);
  border: 1px solid var(--gray-300);
  border-radius: var(--radius-lg);
  transition:
    border-color var(--transition-fast),
    box-shadow var(--transition-fast);
}

.bsp-input:focus {
  outline: none;
  border-color: var(--primary-blue);
  box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);
}

.bsp-input:disabled {
  background-color: var(--gray-100);
  color: var(--gray-500);
  cursor: not-allowed;
}

.bsp-input.bsp-input-error {
  border-color: var(--error);
}

.bsp-input.bsp-input-error:focus {
  border-color: var(--error);
  box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.1);
}

.bsp-textarea {
  display: block;
  width: 100%;
  min-height: 120px;
  padding: var(--spacing-3);
  font-size: var(--font-size-base);
  line-height: var(--line-height-normal);
  color: var(--gray-900);
  background-color: var(--white);
  border: 1px solid var(--gray-300);
  border-radius: var(--radius-lg);
  resize: vertical;
  transition:
    border-color var(--transition-fast),
    box-shadow var(--transition-fast);
}

.bsp-textarea:focus {
  outline: none;
  border-color: var(--primary-blue);
  box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);
}

.bsp-select {
  display: block;
  width: 100%;
  padding: var(--spacing-3);
  font-size: var(--font-size-base);
  line-height: var(--line-height-normal);
  color: var(--gray-900);
  background-color: var(--white);
  border: 1px solid var(--gray-300);
  border-radius: var(--radius-lg);
  transition: border-color var(--transition-fast);
  cursor: pointer;
}

.bsp-select:focus {
  outline: none;
  border-color: var(--primary-blue);
  box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);
}

.bsp-form-error {
  display: block;
  margin-top: var(--spacing-1);
  font-size: var(--font-size-sm);
  color: var(--error);
}

.bsp-form-help {
  display: block;
  margin-top: var(--spacing-1);
  font-size: var(--font-size-sm);
  color: var(--gray-500);
}

/* Checkbox and Radio */
.bsp-checkbox,
.bsp-radio {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: var(--spacing-2);
  cursor: pointer;
  user-select: none;
}

.bsp-checkbox input,
.bsp-radio input {
  position: absolute;
  opacity: 0;
  cursor: pointer;
}

.bsp-checkbox-indicator,
.bsp-radio-indicator {
  width: 20px;
  height: 20px;
  border: 2px solid var(--gray-300);
  background-color: var(--white);
  transition: all var(--transition-fast);
}

.bsp-checkbox-indicator {
  border-radius: var(--radius);
}

.bsp-radio-indicator {
  border-radius: var(--radius-full);
}

.bsp-checkbox input:checked + .bsp-checkbox-indicator,
.bsp-radio input:checked + .bsp-radio-indicator {
  background-color: var(--primary-blue);
  border-color: var(--primary-blue);
}

.bsp-checkbox input:checked + .bsp-checkbox-indicator::after {
  content: '';
  position: absolute;
  left: 6px;
  top: 2px;
  width: 6px;
  height: 10px;
  border: solid var(--white);
  border-width: 0 2px 2px 0;
  transform: rotate(45deg);
}

.bsp-radio input:checked + .bsp-radio-indicator::after {
  content: '';
  position: absolute;
  top: 50%;
  left: 50%;
  width: 8px;
  height: 8px;
  border-radius: var(--radius-full);
  background-color: var(--white);
  transform: translate(-50%, -50%);
}

/* Table Components */
.bsp-table {
  width: 100%;
  border-collapse: collapse;
  border-spacing: 0;
  font-size: var(--font-size-sm);
}

.bsp-table th,
.bsp-table td {
  padding: var(--spacing-3);
  text-align: left;
  border-bottom: 1px solid var(--gray-200);
}

.bsp-table th {
  background-color: var(--gray-50);
  font-weight: var(--font-weight-semibold);
  color: var(--gray-900);
}

.bsp-table tbody tr:hover {
  background-color: var(--gray-50);
}

/* Badge Components */
.bsp-badge {
  display: inline-flex;
  align-items: center;
  padding: var(--spacing-1) var(--spacing-3);
  font-size: var(--font-size-xs);
  font-weight: var(--font-weight-medium);
  border-radius: var(--radius-full);
  text-transform: uppercase;
  letter-spacing: 0.025em;
}

.bsp-badge-primary {
  background-color: rgba(37, 99, 235, 0.1);
  color: var(--primary-blue);
}

.bsp-badge-success {
  background-color: rgba(16, 185, 129, 0.1);
  color: var(--success);
}

.bsp-badge-warning {
  background-color: rgba(245, 158, 11, 0.1);
  color: var(--warning);
}

.bsp-badge-error {
  background-color: rgba(239, 68, 68, 0.1);
  color: var(--error);
}

.bsp-badge-neutral {
  background-color: var(--gray-100);
  color: var(--gray-600);
}

/* Alert Components */
.bsp-alert {
  padding: var(--spacing-4);
  border-radius: var(--radius-lg);
  border: 1px solid;
  margin-bottom: var(--spacing-4);
}

.bsp-alert-success {
  background-color: rgba(16, 185, 129, 0.1);
  border-color: var(--success);
  color: #047857;
}

.bsp-alert-warning {
  background-color: rgba(245, 158, 11, 0.1);
  border-color: var(--warning);
  color: #92400e;
}

.bsp-alert-error {
  background-color: rgba(239, 68, 68, 0.1);
  border-color: var(--error);
  color: #991b1b;
}

.bsp-alert-info {
  background-color: rgba(59, 130, 246, 0.1);
  border-color: var(--info);
  color: #1e40af;
}

/* Loading Spinner */
.bsp-spinner {
  display: inline-block;
  width: 20px;
  height: 20px;
  border: 2px solid var(--gray-200);
  border-top: 2px solid var(--primary-blue);
  border-radius: 50%;
  animation: bsp-spin 1s linear infinite;
}

@keyframes bsp-spin {
  0% {
    transform: rotate(0deg);
  }
  100% {
    transform: rotate(360deg);
  }
}

.bsp-spinner-lg {
  width: 32px;
  height: 32px;
  border-width: 3px;
}

/* Icon */
.bsp-icon {
  display: inline-block;
  width: 1.25rem;
  height: 1.25rem;
  stroke: currentColor;
  fill: none;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.bsp-icon-sm {
  width: 1rem;
  height: 1rem;
}

.bsp-icon-lg {
  width: 1.5rem;
  height: 1.5rem;
}

.bsp-icon-xl {
  width: 2rem;
  height: 2rem;
}

/* Text-based Icon Circles */
.bsp-icon-circle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.5rem;
  height: 2.5rem;
  border-radius: 50%;
  background-color: var(--primary-blue);
  color: white;
  font-weight: 600;
  font-size: 1rem;
  text-transform: uppercase;
}

.bsp-icon-circle-sm {
  width: 1.5rem;
  height: 1.5rem;
  font-size: 0.75rem;
}

.bsp-icon-circle-lg {
  width: 3rem;
  height: 3rem;
  font-size: 1.25rem;
}

.bsp-icon-circle-xl {
  width: 4rem;
  height: 4rem;
  font-size: 1.5rem;
}

/* Empty State Icons */
.bsp-empty-icon {
  display: flex;
  justify-content: center;
  margin-bottom: 1rem;
}

.bsp-empty-icon .bsp-icon-circle {
  width: 4rem;
  height: 4rem;
  font-size: 1.5rem;
  background-color: var(--gray-200);
  color: var(--gray-600);
}

/* Team Avatar Styles */
.bsp-team-avatar {
  width: 4rem;
  height: 4rem;
  border-radius: 50%;
  background-color: var(--primary-blue);
  color: white;
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 600;
  font-size: 1.25rem;
  margin: 0 auto 1rem auto;
  text-transform: uppercase;
}

/* Value Icon Styles */
.bsp-value-icon {
  width: 3rem;
  height: 3rem;
  border-radius: 50%;
  background-color: var(--success);
  color: white;
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 600;
  font-size: 1.125rem;
  margin-bottom: 1rem;
  text-transform: uppercase;
}
