/* ==========================================================================
   Seat Map & Bus Visual Layout Stylesheet
   ========================================================================== */

/* O'rindiq holatlari (band joy — shtrixli, rangdan tashqari ham ajralib turadi) */
:root {
  --seat-taken-bg: #dbe5ee;
  --seat-taken-border: #b4c6d6;
  --seat-taken-fg: #7d92aa;
  --seat-hatch: rgba(0, 16, 45, 0.08);
}

[data-theme="dark"] {
  --seat-taken-bg: #0d2850;
  --seat-taken-border: #1c3866;
  --seat-taken-fg: #54709a;
  --seat-hatch: rgba(193, 212, 224, 0.1);
}

.seat-modal-body {
  display: grid;
  grid-template-columns: 1.4fr 1fr;
  gap: 28px;
  align-items: start;
}

/* Legend */
.seat-legend {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  gap: 8px 20px;
  margin-bottom: 20px;
  padding: 10px 16px;
  background: var(--surface-muted);
  border-radius: var(--radius-md);
}

.legend-item {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 0.82rem;
  font-weight: 600;
  color: var(--text-body);
}

.legend-box {
  width: 18px;
  height: 18px;
  border-radius: 4px;
}

.legend-box.available {
  background: var(--surface-card);
  border: 1.5px solid var(--primary-500);
}

.legend-box.selected {
  background: var(--primary-600);
  border: 1.5px solid var(--primary-700);
}

.legend-box.taken {
  background: var(--seat-taken-bg);
  border: 1.5px solid var(--seat-taken-border);
  background-image: repeating-linear-gradient(135deg, transparent 0 4px, var(--seat-hatch) 4px 5px);
}

.legend-box.held {
  background: var(--warning-50);
  border: 1.5px dashed var(--warning-600);
}

/* Bus Container */
.bus-container {
  background: var(--surface-card);
  border: 2px solid var(--ticket-line);
  border-radius: 36px 36px 18px 18px;
  box-shadow: inset 0 2px 6px rgba(0, 0, 0, 0.04), var(--shadow-sm);
  padding: 24px 20px 20px;
  position: relative;
  max-width: 360px;
  margin: 0 auto;
}

/* Seat Grid (2-2 configuration with aisle) */
.bus-seats-grid {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

/* Hamma qator bir xil 5 ustunli to'r: chap juft | yo'lak | o'ng juft.
   Orqa skameyka (5 o'rin) ham shu ustunlarda turadi — o'rindiqlar cho'zilmaydi, o'lchami bir xil. */
.seat-row {
  display: grid;
  grid-template-columns: repeat(5, 44px);
  gap: 8px;
  justify-content: center;
  align-items: center;
}

.seat-pair {
  display: contents;
}

.seat-aisle {
  width: 44px;
  height: 44px;
}

/* Bo'sh joy (o'rindiq yo'q) — qator tekisligini saqlaydi */
.seat-gap {
  width: 44px;
  height: 44px;
}

/* Single Seat Button */
.seat-btn {
  width: 44px;
  height: 44px;
  border-radius: 8px;
  font-family: var(--font-display);
  font-size: 1.1rem;
  font-weight: 700;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  position: relative;
  transition: all var(--transition-fast);
  user-select: none;
  border: 1.5px solid transparent;
}

/* Available State */
.seat-btn.available {
  background: var(--surface-card);
  border-color: var(--primary-400);
  color: var(--text-main);
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
}

@media (hover: hover) {
  .seat-btn.available:not(.selected):hover {
    background: var(--primary-50);
    border-color: var(--primary-600);
    transform: translateY(-2px);
    box-shadow: 0 3px 8px rgba(var(--primary-rgb), 0.25);
  }
}

/* Selected State — Har doim ko'k rangda, hover/focus/active holatida ham yo'qolmaydi */
.seat-btn.selected,
.seat-btn.selected:focus,
.seat-btn.selected:active,
.seat-btn.available.selected,
.seat-btn.available.selected:focus,
.seat-btn.available.selected:active {
  background: var(--primary-600) !important;
  border-color: var(--primary-700) !important;
  color: var(--on-primary) !important;
  transform: scale(1.06);
  box-shadow: 0 4px 14px rgba(var(--primary-rgb), 0.45);
  animation: seatPulse 1s infinite alternate;
}

@media (hover: hover) {
  .seat-btn.selected:hover,
  .seat-btn.available.selected:hover {
    background: var(--primary-700) !important;
    border-color: var(--primary-800) !important;
    color: var(--on-primary) !important;
    transform: scale(1.08);
    box-shadow: 0 5px 16px rgba(var(--primary-rgb), 0.55);
  }
}

@keyframes seatPulse {
  from { box-shadow: 0 0 0 0 rgba(var(--primary-rgb), 0.5); }
  to { box-shadow: 0 0 0 6px rgba(var(--primary-rgb), 0); }
}

/* Taken / Occupied State */
.seat-btn.taken {
  background: var(--seat-taken-bg);
  background-image: repeating-linear-gradient(135deg, transparent 0 5px, var(--seat-hatch) 5px 6px);
  border-color: var(--seat-taken-border);
  color: var(--seat-taken-fg);
  cursor: not-allowed;
}

/* Held State — to'lov kutilmoqda: vaqtincha band, to'lanmasa bo'shaydi. Rangdan tashqari ham ajralishi uchun
   "uzuq" chegara va ochiq fon (sotilgan joy — to'ldirilgan shtrixli) */
.seat-btn.held {
  background: var(--warning-50);
  border: 1.5px dashed var(--warning-600);
  color: var(--warning-700);
  cursor: not-allowed;
}

.seat-btn.held:disabled {
  opacity: 1;
}

.seat-legend-note {
  margin: -8px 0 16px;
  font-size: 0.8rem;
  line-height: 1.4;
  color: var(--text-muted);
  text-align: center;
}

/* Booking Sidebar */
.booking-sidebar {
  background: var(--surface-bg);
  border: 1px solid var(--surface-border);
  border-radius: var(--radius-lg);
  padding: 24px;
}

.sidebar-title {
  font-size: 1.15rem;
  margin-bottom: 16px;
  color: var(--text-main);
}

.booking-summary-box {
  display: flex;
  flex-direction: column;
  gap: 10px;
  background: var(--surface-card);
  border-radius: var(--radius-md);
  padding: 16px;
  border: 1px solid var(--surface-border);
  margin-bottom: 20px;
}

.summary-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  font-size: 0.9rem;
}

.summary-row span {
  color: var(--text-muted);
}

.summary-row strong {
  font-weight: 600;
  color: var(--text-main);
}

.summary-row .text-primary {
  color: var(--primary-600);
}

.summary-row .text-success {
  color: var(--primary-600);
  font-size: 1.3rem;
  font-family: var(--font-display);
}

.booking-alert {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 12px 14px;
  border-radius: var(--radius-md);
  font-size: 0.82rem;
  line-height: 1.4;
  margin-bottom: 20px;
}

.booking-alert.info {
  background: var(--primary-50);
  border: 1px solid var(--primary-100);
  color: var(--primary-800);
}

.booking-alert.info svg {
  flex-shrink: 0;
  margin-top: 2px;
  color: var(--primary-600);
}

/* Responsive */
@media (max-width: 820px) {
  .seat-modal-body {
    grid-template-columns: 1fr;
  }
}
