/**
 * BloodCrimes Design System - Main Stylesheet
 * Neo-Noir Crime RPG Theme
 * 
 * Architecture:
 * 1. Tokens (CSS custom properties)
 * 2. Bootstrap overrides (dark theme)
 * 3. BloodCrimes components (.bc-*)
 * 4. Utilities
 */

@import 'tokens.css';

/* ==================== */
/* BOOTSTRAP OVERRIDES */
/* ==================== */

/* Body */
body {
  background: linear-gradient(180deg, var(--bc-bg-950) 0%, var(--bc-bg-900) 100%) !important;
  color: var(--bc-text-primary) !important;
}

/* Text */
.text-white, .text-dark { color: var(--bc-text-primary) !important; }
.text-muted { color: var(--bc-text-muted) !important; }

/* Backgrounds */
.bg-white, .bg-light, .bg-dark { background-color: var(--bc-surface-800) !important; }
.bg-primary { background-color: var(--bc-surface-700) !important; }

/* Borders */
.border, .border-light, .border-dark { border-color: var(--bc-border) !important; }

/* ==================== */
/* BUTTONS */
/* ==================== */

.btn {
  border-radius: var(--bc-radius-md) !important;
  font-weight: 500;
  transition: all var(--bc-transition);
}

.btn-primary {
  background-color: var(--bc-crimson-600) !important;
  border-color: var(--bc-crimson-600) !important;
  color: #fff !important;
}
.btn-primary:hover {
  background-color: var(--bc-crimson-500) !important;
  border-color: var(--bc-crimson-500) !important;
}

.btn-secondary {
  background-color: var(--bc-surface-700) !important;
  border-color: var(--bc-border-strong) !important;
  color: var(--bc-text-primary) !important;
}
.btn-secondary:hover {
  background-color: var(--bc-surface-600) !important;
}

.btn-success { background-color: var(--bc-success) !important; border-color: var(--bc-success) !important; }
.btn-danger { background-color: var(--bc-danger) !important; border-color: var(--bc-danger) !important; }
.btn-warning { background-color: var(--bc-warning) !important; border-color: var(--bc-warning) !important; }
.btn-info { background-color: var(--bc-info) !important; border-color: var(--bc-info) !important; }
.btn-light { background-color: var(--bc-surface-600) !important; border-color: var(--bc-surface-600) !important; color: var(--bc-text-primary) !important; }

.btn-outline-light {
  border-color: var(--bc-border-strong) !important;
  color: var(--bc-text-secondary) !important;
}
.btn-outline-light:hover {
  background-color: var(--bc-surface-700) !important;
  color: var(--bc-text-primary) !important;
}

.btn-outline-dark {
  border-color: var(--bc-border) !important;
  color: var(--bc-text-secondary) !important;
}
.btn-outline-dark:hover {
  background-color: var(--bc-surface-700) !important;
  color: var(--bc-text-primary) !important;
}

/* Ghost button */
.btn-ghost {
  background: transparent !important;
  border: 1px solid var(--bc-border-strong) !important;
  color: var(--bc-text-secondary) !important;
}

.btn-ghost:hover {
  background: var(--bc-surface-700) !important;
  border-color: var(--bc-border-strong) !important;
  color: var(--bc-text-primary) !important;
}

/* ==================== */
/* CARDS */
/* ==================== */

.card {
  background-color: var(--bc-surface-800) !important;
  border: 1px solid var(--bc-border) !important;
  border-radius: var(--bc-radius-lg) !important;
  color: var(--bc-text-primary) !important;
}

.card-header {
  background-color: var(--bc-surface-700) !important;
  border-bottom: 1px solid var(--bc-border) !important;
  color: var(--bc-text-primary) !important;
}

.card-header.bg-primary {
  background-color: var(--bc-surface-700) !important;
}

.card-body { background-color: transparent !important; }
.card-footer { background-color: var(--bc-surface-700) !important; border-top: 1px solid var(--bc-border) !important; }

/* ==================== */
/* FORMS */
/* ==================== */

.form-control {
  background-color: var(--bc-surface-700) !important;
  border: 1px solid var(--bc-border) !important;
  color: var(--bc-text-primary) !important;
  border-radius: var(--bc-radius-md) !important;
}
.form-control:focus {
  border-color: var(--bc-crimson-500) !important;
  box-shadow: 0 0 0 3px rgba(159,18,57,0.3) !important;
}
.form-control::placeholder { color: var(--bc-text-muted) !important; }

.form-select {
  background-color: var(--bc-surface-700) !important;
  border: 1px solid var(--bc-border) !important;
  color: var(--bc-text-primary) !important;
}
.form-select:focus {
  border-color: var(--bc-crimson-500) !important;
  box-shadow: 0 0 0 3px rgba(159,18,57,0.3) !important;
}

.input-group-text {
  background-color: var(--bc-surface-600) !important;
  border-color: var(--bc-border) !important;
  color: var(--bc-text-muted) !important;
}

label { color: var(--bc-text-secondary) !important; }

/* ==================== */
/* TABLES */
/* ==================== */

.table {
  color: var(--bc-text-primary) !important;
  background-color: var(--bc-surface-800) !important;
}

.table-dark { background-color: var(--bc-surface-800) !important; }
.table-dark th, .table-dark td { border-color: var(--bc-border) !important; }
.table-light { background-color: var(--bc-surface-700) !important; }

.table th {
  background-color: var(--bc-surface-700) !important;
  color: var(--bc-text-secondary) !important;
  text-transform: uppercase;
  font-size: 0.75rem;
  letter-spacing: 0.05em;
}

.table td { border-color: var(--bc-border) !important; }

.table-hover tbody tr:hover { background-color: var(--bc-surface-700) !important; }

/* Rank colors */
.rank-1 { color: var(--bc-gold-500) !important; font-weight: bold; }
.rank-2 { color: #C0C0C0 !important; }
.rank-3 { color: #CD7F32 !important; }

/* ==================== */
/* NAVIGATION */
/* ==================== */

.navbar {
  background-color: var(--bc-surface-800) !important;
  border-bottom: 1px solid var(--bc-border) !important;
  padding: 0.5rem 1rem !important;
}

.navbar-dark .navbar-brand { color: var(--bc-text-primary) !important; }
.navbar-dark .nav-link { color: var(--bc-text-secondary) !important; }
.navbar-dark .nav-link:hover { color: var(--bc-text-primary) !important; }
.navbar-dark .nav-link.active { color: var(--bc-crimson-500) !important; }
.navbar-dark .navbar-toggler {
  border-color: var(--bc-border) !important;
  color: var(--bc-text-secondary) !important;
}

.navbar-toggler-icon {
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='%23a1a1aa' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e") !important;
}

/* Mobile breakpoint */
@media (max-width: 767.98px) {
  /* Desktop navbar becomes full mobile menu */
  .navbar-expand-md {
    display: block !important;
    padding: 0 !important;
  }

  .navbar-expand-md .navbar-collapse {
    display: block !important;
    max-height: none !important;
    overflow: visible !important;
    position: static !important;
    background: var(--bc-surface-800) !important;
    border: none !important;
    padding: 0 !important;
  }

  .navbar-expand-md .navbar-nav {
    flex-direction: row !important;
    flex-wrap: wrap !important;
    justify-content: center !important;
    gap: 4px !important;
    padding: 8px !important;
  }

  .navbar-expand-md .nav-item {
    margin: 0 !important;
    flex: 0 0 auto !important;
  }

  .navbar-expand-md .nav-link {
    padding: 6px 10px !important;
    font-size: 11px !important;
    text-align: center !important;
    white-space: nowrap !important;
    border-radius: var(--bc-radius-sm) !important;
  }

  .navbar-expand-md .nav-link i {
    display: block !important;
    font-size: 16px !important;
    margin-bottom: 2px !important;
  }

  .navbar-expand-md .nav-link br {
    display: none !important;
  }

  .navbar-expand-md .navbar-toggler {
    display: none !important;
  }

  /* Hide bottom nav on mobile */
  .bc-mobile-nav {
    display: none !important;
  }
}

@media (min-width: 768px) {
  /* Hide bottom nav on desktop */
  .bc-mobile-nav {
    display: none !important;
  }
}

/* Mobile nav */
.bc-mobile-nav {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  background: var(--bc-surface-800);
  border-top: 1px solid var(--bc-border);
  padding: 8px 0;
  padding-bottom: calc(8px + env(safe-area-inset-bottom, 0));
  z-index: 1000;
  display: none; /* Hidden by default, shown via media query */
}

.bc-mobile-nav.is-visible {
  display: flex !important;
}

.bc-mobile-nav-inner {
  display: flex;
  justify-content: space-around;
  max-width: 500px;
  margin: 0 auto;
}

.bc-mobile-nav-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
  padding: 4px 8px;
  color: var(--bc-text-muted);
  text-decoration: none;
  font-size: 10px;
  transition: color var(--bc-transition);
}

.bc-mobile-nav-item i { font-size: 20px; }
.bc-mobile-nav-item:hover,
.bc-mobile-nav-item.is-active { color: var(--bc-crimson-500) !important; }

/* ==================== */
/* ALERTS */
/* ==================== */

.alert {
  border-radius: var(--bc-radius-md) !important;
  border: 1px solid transparent !important;
  border-left-width: 4px !important;
  background-color: var(--bc-surface-800) !important;
  color: var(--bc-text-primary) !important;
}

.alert-light { border-left-color: var(--bc-border-strong) !important; }
.alert-dark { border-left-color: var(--bc-surface-600) !important; }
.alert-primary { border-left-color: var(--bc-crimson-600) !important; }
.alert-success { border-left-color: var(--bc-success) !important; }
.alert-danger { border-left-color: var(--bc-danger) !important; }
.alert-warning { border-left-color: var(--bc-warning) !important; }
.alert-info { border-left-color: var(--bc-info) !important; }

/* ==================== */
/* BADGES */
/* ==================== */

.badge {
  font-weight: 500;
}

.badge-light { background-color: var(--bc-surface-600) !important; color: var(--bc-text-secondary) !important; }
.badge-dark { background-color: var(--bc-surface-700) !important; color: var(--bc-text-primary) !important; }
.badge-primary { background-color: var(--bc-crimson-600) !important; color: #fff !important; }
.badge-success { background-color: var(--bc-success) !important; color: #000 !important; }
.badge-danger { background-color: var(--bc-danger) !important; color: #fff !important; }
.badge-warning { background-color: var(--bc-warning) !important; color: #000 !important; }

/* ==================== */
/* PROGRESS BARS */
/* ==================== */

.progress {
  background-color: var(--bc-surface-700) !important;
  height: 8px;
  border-radius: 4px;
}

.progress-bar {
  background-color: var(--bc-crimson-600) !important;
}

.progress-bar.bg-success { background-color: var(--bc-success) !important; }
.progress-bar.bg-warning { background-color: var(--bc-warning) !important; }
.progress-bar.bg-danger { background-color: var(--bc-danger) !important; }
.progress-bar.bg-primary { background-color: var(--bc-crimson-600) !important; }

/* ==================== */
/* MODALS */
/* ==================== */

.modal-content {
  background-color: var(--bc-surface-800) !important;
  border: 1px solid var(--bc-border) !important;
  border-radius: var(--bc-radius-lg) !important;
}

.modal-header {
  background-color: var(--bc-surface-700) !important;
  border-bottom-color: var(--bc-border) !important;
}

.modal-title { color: var(--bc-text-primary) !important; }
.modal-body { color: var(--bc-text-primary) !important; }
.modal-footer { background-color: var(--bc-surface-700) !important; border-top-color: var(--bc-border) !important; }

.modal-backdrop { background-color: rgba(0,0,0,0.8) !important; }
.btn-close { filter: invert(1) grayscale(100%) brightness(200%); }

/* ==================== */
/* DROPDOWNS */
/* ==================== */

.dropdown-menu {
  background-color: var(--bc-surface-800) !important;
  border-color: var(--bc-border) !important;
}

.dropdown-item {
  color: var(--bc-text-secondary) !important;
}
.dropdown-item:hover {
  background-color: var(--bc-surface-700) !important;
  color: var(--bc-text-primary) !important;
}
.dropdown-item.active {
  background-color: var(--bc-surface-600) !important;
  color: var(--bc-crimson-500) !important;
}

.dropdown-divider { border-color: var(--bc-border) !important; }

/* ==================== */
/* TABS & NAVS */
/* ==================== */

.nav-tabs {
  border-bottom-color: var(--bc-border) !important;
}

.nav-tabs .nav-link {
  color: var(--bc-text-secondary) !important;
  border-color: transparent !important;
}
.nav-tabs .nav-link:hover {
  border-color: var(--bc-border) !important;
  color: var(--bc-text-primary) !important;
}
.nav-tabs .nav-link.active {
  background-color: var(--bc-surface-800) !important;
  border-color: var(--bc-border) !important;
  border-bottom-color: var(--bc-surface-800) !important;
  color: var(--bc-crimson-500) !important;
}

.nav-pills .nav-link {
  color: var(--bc-text-secondary) !important;
}
.nav-pills .nav-link:hover {
  background-color: var(--bc-surface-700) !important;
  color: var(--bc-text-primary) !important;
}
.nav-pills .nav-link.active {
  background-color: var(--bc-crimson-600) !important;
  color: #fff !important;
}

/* ==================== */
/* LIST GROUP */
/* ==================== */

.list-group-item {
  background-color: var(--bc-surface-800) !important;
  border-color: var(--bc-border) !important;
  color: var(--bc-text-primary) !important;
}
.list-group-item:hover { background-color: var(--bc-surface-700) !important; }
.list-group-item.active {
  background-color: var(--bc-crimson-600) !important;
  border-color: var(--bc-crimson-600) !important;
}

/* ==================== */
/* PAGINATION */
/* ==================== */

.page-link {
  background-color: var(--bc-surface-800) !important;
  border-color: var(--bc-border) !important;
  color: var(--bc-text-secondary) !important;
}
.page-link:hover {
  background-color: var(--bc-surface-700) !important;
  border-color: var(--bc-border-strong) !important;
  color: var(--bc-text-primary) !important;
}
.page-item.active .page-link {
  background-color: var(--bc-crimson-600) !important;
  border-color: var(--bc-crimson-600) !important;
}
.page-item.disabled .page-link {
  background-color: var(--bc-surface-600) !important;
  border-color: var(--bc-border) !important;
  color: var(--bc-text-muted) !important;
}

/* ==================== */
/* FOOTER */
/* ==================== */

.footer {
  background-color: var(--bc-surface-800) !important;
  border-top: 1px solid var(--bc-border) !important;
  color: var(--bc-text-secondary) !important;
}

/* ==================== */
/* HR */
/* ==================== */

hr {
  border-color: var(--bc-border) !important;
}

/* ==================== */
/* BLOODCRIMES SPECIFIC COMPONENTS */
/* ==================== */

/* Resource display */
.bc-resource {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 0.875rem;
}

.bc-resource-money { color: var(--bc-gold-500); }
.bc-resource-energy { color: var(--bc-text-primary); }
.bc-resource-health { color: var(--bc-success); }
.bc-resource-nerve { color: var(--bc-crimson-500); }

/* Shell / Dashboard */
.bc-shell {
  background: var(--bc-surface-800);
  border: 1px solid var(--bc-border);
  border-radius: var(--bc-radius-lg);
  padding: var(--bc-space-4, 16px);
}

.bc-shell-brand {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 12px;
}

.bc-shell-metrics {
  display: flex;
  gap: 16px;
  flex-wrap: wrap;
}

.bc-shell-metric {
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.bc-shell-metric span {
  font-size: 0.75rem;
  color: var(--bc-text-muted);
}

.bc-shell-metric strong {
  font-size: 1rem;
  color: var(--bc-text-primary);
}

/* Crime cards */
.bc-crime-card {
  background: var(--bc-surface-800);
  border: 1px solid var(--bc-border);
  border-radius: var(--bc-radius-lg);
  padding: 16px;
  margin-bottom: 16px;
}

.bc-crime-card:hover {
  border-color: var(--bc-border-strong);
}

.bc-crime-reward {
  color: var(--bc-gold-500);
}

/* Heat indicator */
.bc-heat {
  display: inline-flex;
  align-items: center;
  gap: 4px;
}

.bc-heat-low { color: var(--bc-text-muted); }
.bc-heat-medium { color: var(--bc-warning); }
.bc-heat-high { color: var(--bc-crimson-500); }

/* Risk pills */
.bc-risk-low { color: var(--bc-success); }
.bc-risk-medium { color: var(--bc-warning); }
.bc-risk-high { color: var(--bc-danger); }

/* Auth card */
.bc-auth-card {
  background: var(--bc-surface-800) !important;
  border: 1px solid var(--bc-border) !important;
}

/* ==================== */
/* UTILITIES */
/* ==================== */

.text-crimson { color: var(--bc-crimson-500) !important; }
.text-gold { color: var(--bc-gold-500) !important; }
.text-success { color: var(--bc-success) !important; }
.text-danger { color: var(--bc-danger) !important; }
.text-warning { color: var(--bc-warning) !important; }

.bg-crimson { background-color: var(--bc-crimson-600) !important; }
.bg-surface { background-color: var(--bc-surface-800) !important; }

.border-crimson { border-color: var(--bc-crimson-600) !important; }
.border-gold { border-color: var(--bc-gold-500) !important; }

/* Focus visible */
:focus-visible {
  outline: 2px solid var(--bc-crimson-500);
  outline-offset: 2px;
}

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    transition-duration: 0.01ms !important;
  }
}
