/* ==========================================================================
   APEXFORGE GYM — ADMIN PORTAL & DASHBOARD STYLES
   ========================================================================== */

/* Auth Barrier Screen (For unauthenticated / non-admin visitors) */
.admin-barrier-screen {
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 2rem;
  background: radial-gradient(circle at 50% 30%, rgba(57, 255, 20, 0.06) 0%, #080808 70%);
}

.barrier-card {
  background: var(--bg-surface-2);
  border: 1px solid var(--border-strong);
  border-radius: var(--radius-lg);
  max-width: 520px;
  width: 100%;
  padding: 3rem 2.5rem;
  text-align: center;
  box-shadow: var(--shadow-elevation);
}

.barrier-icon-badge {
  width: 64px;
  height: 64px;
  background: var(--bg-surface-1);
  border: 1px solid var(--border-green);
  border-radius: 50%;
  margin: 0 auto 1.5rem;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.8rem;
  color: var(--accent-green);
  box-shadow: 0 0 25px rgba(57, 255, 20, 0.2);
}

.barrier-title {
  font-size: 1.8rem;
  font-weight: 800;
  margin-bottom: 0.5rem;
}

.barrier-sub {
  font-size: 0.95rem;
  color: var(--text-muted);
  margin-bottom: 2rem;
}

.barrier-form {
  display: flex;
  flex-direction: column;
  gap: 1.2rem;
  text-align: left;
  margin-bottom: 2rem;
}

.barrier-quick-login {
  border-top: 1px dashed var(--border-strong);
  padding-top: 1.5rem;
}
.barrier-quick-title {
  display: block;
  font-size: 0.8rem;
  font-weight: 700;
  color: var(--accent-green);
  margin-bottom: 0.8rem;
}

/* ==========================================
   ADMIN APP LAYOUT (Sidebar + Main)
   ========================================== */
.admin-app-layout {
  display: flex;
  min-height: 100vh;
  background-color: #080808;
}

/* Sidebar */
.admin-sidebar {
  width: 260px;
  background-color: #0E0E0E;
  border-right: 1px solid var(--border-subtle);
  display: flex;
  flex-direction: column;
  flex-shrink: 0;
  position: sticky;
  top: 0;
  height: 100vh;
  z-index: 100;
}

.admin-sidebar-header {
  padding: 1.5rem 1.25rem;
  border-bottom: 1px solid var(--border-subtle);
}
.admin-sidebar-logo {
  display: flex;
  align-items: center;
  gap: 0.6rem;
}
.admin-portal-tag {
  font-size: 0.65rem;
  font-weight: 800;
  color: var(--accent-green);
  letter-spacing: 0.15em;
}

.admin-sidebar-nav {
  padding: 1.5rem 0.8rem;
  display: flex;
  flex-direction: column;
  gap: 0.3rem;
  flex-grow: 1;
  overflow-y: auto;
}

.admin-sidebar-link {
  display: flex;
  align-items: center;
  gap: 0.8rem;
  padding: 0.75rem 1rem;
  border-radius: var(--radius-sm);
  color: var(--text-muted);
  font-weight: 600;
  font-size: 0.92rem;
  cursor: pointer;
  transition: all 0.2s ease;
  border-left: 3px solid transparent;
}
.admin-sidebar-link:hover {
  color: #fff;
  background-color: var(--bg-surface-2);
}
.admin-sidebar-link.active {
  color: var(--accent-green);
  background-color: var(--accent-green-dim);
  border-left-color: var(--accent-green);
}
.sidebar-link-icon {
  font-size: 1.1rem;
}

.admin-sidebar-footer {
  padding: 1.25rem;
  border-top: 1px solid var(--border-subtle);
  display: flex;
  flex-direction: column;
  gap: 0.8rem;
}
.btn-sidebar-ext {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  color: var(--text-muted);
  font-size: 0.85rem;
  padding: 0.4rem 0.6rem;
  border-radius: var(--radius-sm);
}
.btn-sidebar-ext:hover { color: #fff; background: var(--bg-surface-2); }
.btn-sidebar-logout {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  background: rgba(255, 77, 77, 0.1);
  color: #FF4D4D;
  border: 1px solid rgba(255, 77, 77, 0.2);
  padding: 0.6rem 0.8rem;
  border-radius: var(--radius-sm);
  font-size: 0.85rem;
  font-weight: 600;
  cursor: pointer;
  width: 100%;
}
.btn-sidebar-logout:hover { background: #FF4D4D; color: #fff; }

/* Main Admin Workspace */
.admin-main-workspace {
  flex-grow: 1;
  display: flex;
  flex-direction: column;
  overflow-x: hidden;
}

.admin-topbar {
  background-color: #0E0E0E;
  border-bottom: 1px solid var(--border-subtle);
  padding: 1rem 2rem;
  display: flex;
  justify-content: space-between;
  align-items: center;
  position: sticky;
  top: 0;
  z-index: 90;
}

.admin-topbar-left {
  display: flex;
  align-items: center;
  gap: 1rem;
}
.admin-badge-count {
  background: rgba(57, 255, 20, 0.15);
  border: 1px solid var(--accent-green-border);
  color: var(--accent-green);
  font-size: 0.78rem;
  font-weight: 700;
  padding: 0.25rem 0.75rem;
  border-radius: var(--radius-full);
}

.admin-topbar-right {
  display: flex;
  align-items: center;
  gap: 1rem;
}
.admin-user-pill {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  background: var(--bg-surface-2);
  border: 1px solid var(--border-subtle);
  padding: 0.4rem 0.9rem;
  border-radius: var(--radius-full);
  font-size: 0.82rem;
}
.status-indicator-live {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background-color: var(--accent-green);
  box-shadow: 0 0 6px var(--accent-green);
}

.admin-content-viewport {
  padding: 2rem;
  flex-grow: 1;
}

/* ==========================================
   ADMIN STATS & CARDS
   ========================================== */
.admin-stats-row {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  gap: 1rem;
  margin-bottom: 2rem;
}
@media (max-width: 1400px) {
  .admin-stats-row { grid-template-columns: repeat(3, 1fr); }
}
@media (max-width: 768px) {
  .admin-stats-row { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 480px) {
  .admin-stats-row { grid-template-columns: 1fr; }
}

.admin-stat-box {
  background: var(--bg-surface-2);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-md);
  padding: 1.25rem;
  display: flex;
  align-items: center;
  gap: 1rem;
}
.admin-stat-box.highlight-revenue {
  border-color: rgba(57, 255, 20, 0.4);
  background: linear-gradient(135deg, rgba(57, 255, 20, 0.12) 0%, #171717 100%);
  box-shadow: 0 4px 20px rgba(57, 255, 20, 0.1);
}
.admin-stat-box.highlight-traffic {
  border-color: rgba(56, 189, 248, 0.4);
  background: linear-gradient(135deg, rgba(56, 189, 248, 0.12) 0%, #171717 100%);
  box-shadow: 0 4px 20px rgba(56, 189, 248, 0.1);
}

.stat-icon-circle {
  width: 44px;
  height: 44px;
  border-radius: var(--radius-sm);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.stat-icon-circle.green { background: rgba(57, 255, 20, 0.12); }
.stat-icon-circle.blue { background: rgba(56, 189, 248, 0.12); }
.stat-icon-circle.yellow { background: rgba(251, 191, 36, 0.12); }
.stat-icon-circle.orange { background: rgba(251, 146, 60, 0.12); }
.stat-icon-circle.purple { background: rgba(168, 85, 247, 0.12); }
.stat-icon-circle.green-dark { background: rgba(57, 255, 20, 0.2); }

.stat-val-group {
  display: flex;
  flex-direction: column;
}
.stat-number {
  font-family: var(--font-display);
  font-size: 1.5rem;
  font-weight: 800;
  color: #fff;
  line-height: 1.1;
}
.stat-label {
  font-size: 0.75rem;
  color: var(--text-muted);
  font-weight: 500;
}

/* Charts Grid */
.admin-charts-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 1.5rem;
  margin-bottom: 2rem;
}
@media (max-width: 1100px) {
  .admin-charts-grid { grid-template-columns: 1fr; }
}

.chart-card {
  background: var(--bg-surface-2);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-md);
  padding: 1.5rem;
  display: flex;
  flex-direction: column;
}
.chart-card-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 1.25rem;
}
.chart-title {
  font-size: 1.1rem;
  font-weight: 700;
}
.chart-tag {
  font-size: 0.72rem;
  color: var(--accent-green);
  background: var(--accent-green-dim);
  padding: 0.2rem 0.5rem;
  border-radius: var(--radius-sm);
  font-weight: 700;
}
.chart-canvas-wrap {
  position: relative;
  height: 250px;
  width: 100%;
}

/* ==========================================
   ADMIN TABLES & FILTERS
   ========================================== */
.tab-title-row {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  margin-bottom: 1.5rem;
  flex-wrap: wrap;
  gap: 1rem;
}
.tab-main-title {
  font-size: 1.8rem;
  font-weight: 800;
  margin-bottom: 0.2rem;
}
.tab-main-sub {
  font-size: 0.9rem;
  color: var(--text-muted);
}

/* Filter Controls Bar */
.admin-filters-bar {
  background: var(--bg-surface-2);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-md);
  padding: 1rem 1.25rem;
  display: flex;
  align-items: center;
  gap: 1.2rem;
  margin-bottom: 1.5rem;
  flex-wrap: wrap;
}
.filter-group {
  display: flex;
  align-items: center;
  gap: 0.5rem;
}
.filter-group label {
  font-size: 0.82rem;
  font-weight: 600;
  color: var(--text-muted);
}
.search-group {
  flex-grow: 1;
  min-width: 240px;
  background: var(--bg-surface-1);
  border: 1px solid var(--border-strong);
  border-radius: var(--radius-sm);
  padding: 0 0.8rem;
}
.search-group input {
  background: transparent;
  border: none;
  padding: 0.6rem 0.5rem;
  color: #fff;
  font-size: 0.88rem;
  width: 100%;
  outline: none;
}
.filter-select, .filter-input-date {
  padding: 0.5rem 0.8rem;
  font-size: 0.85rem;
  background: var(--bg-surface-1);
  border: 1px solid var(--border-strong);
  color: #fff;
  border-radius: var(--radius-sm);
  outline: none;
}
.btn-clear-filters {
  background: transparent;
  border: 1px solid var(--border-strong);
  color: var(--text-muted);
  padding: 0.5rem 0.8rem;
  border-radius: var(--radius-sm);
  font-size: 0.82rem;
  cursor: pointer;
}
.btn-clear-filters:hover { color: #fff; border-color: var(--accent-green); }

/* Table Wrapper */
.admin-card-table-wrap, .recent-table-card {
  background: var(--bg-surface-2);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-md);
  overflow-x: auto;
}

.admin-table {
  width: 100%;
  border-collapse: collapse;
  text-align: left;
  font-size: 0.88rem;
}
.admin-table th {
  background: #111111;
  color: var(--text-muted);
  font-size: 0.78rem;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  font-weight: 700;
  padding: 1rem 1.2rem;
  border-bottom: 1px solid var(--border-strong);
}
.admin-table td {
  padding: 1rem 1.2rem;
  border-bottom: 1px solid var(--border-subtle);
  color: var(--text-light);
  vertical-align: middle;
}
.admin-table tr:hover td {
  background-color: rgba(255, 255, 255, 0.02);
}

.client-name-cell {
  display: flex;
  align-items: center;
  gap: 0.8rem;
}
.avatar-tiny {
  width: 32px;
  height: 32px;
  border-radius: 50%;
  background: var(--accent-green-dim);
  color: var(--accent-green);
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 700;
  font-size: 0.85rem;
}

.table-actions {
  display: flex;
  gap: 0.4rem;
}
.btn-icon-action {
  width: 30px;
  height: 30px;
  border-radius: var(--radius-sm);
  background: var(--bg-surface-3);
  border: 1px solid var(--border-subtle);
  color: var(--text-light);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  font-size: 0.82rem;
  transition: all 0.2s ease;
}
.btn-icon-action:hover { transform: scale(1.1); }
.btn-confirm:hover { background: var(--accent-green); color: #000; }
.btn-reject:hover, .btn-delete:hover { background: #FF4D4D; color: #fff; }
.btn-complete:hover { background: #38BDF8; color: #000; }
.btn-cancel:hover { background: #FBBF24; color: #000; }

/* Pagination */
.admin-pagination-bar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 1rem 1.25rem;
  border-top: 1px solid var(--border-subtle);
  font-size: 0.85rem;
  color: var(--text-muted);
}
.pagination-buttons {
  display: flex;
  align-items: center;
  gap: 0.5rem;
}
.page-btn {
  background: var(--bg-surface-3);
  border: 1px solid var(--border-strong);
  color: var(--text-light);
  padding: 0.35rem 0.75rem;
  border-radius: var(--radius-sm);
  font-size: 0.8rem;
  cursor: pointer;
}
.page-btn:disabled { opacity: 0.4; cursor: not-allowed; }
.page-current { font-weight: 700; color: #fff; }

/* ==========================================
   ADMIN TRAINER & SERVICE CARDS
   ========================================== */
.admin-trainers-cards-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.5rem;
}
@media (max-width: 1200px) {
  .admin-trainers-cards-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 768px) {
  .admin-trainers-cards-grid { grid-template-columns: 1fr; }
}

.admin-trainer-card {
  background: var(--bg-surface-2);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-md);
  padding: 1.5rem;
  display: flex;
  flex-direction: column;
}
.trainer-card-top-row {
  display: flex;
  gap: 1rem;
  margin-bottom: 1rem;
}
.admin-trainer-avatar {
  width: 72px;
  height: 72px;
  border-radius: var(--radius-sm);
  object-fit: cover;
}
.admin-trainer-name { font-size: 1.2rem; font-weight: 800; }
.admin-trainer-spec { font-size: 0.82rem; color: var(--accent-green); font-weight: 600; display: block; }
.admin-trainer-exp { font-size: 0.75rem; color: var(--text-muted); }
.admin-trainer-bio { font-size: 0.82rem; color: var(--text-muted); margin-bottom: 1rem; }
.admin-trainer-detail-box, .admin-trainer-schedule-box {
  background: var(--bg-surface-1);
  padding: 0.8rem;
  border-radius: var(--radius-sm);
  margin-bottom: 0.8rem;
  font-size: 0.78rem;
}
.services-mini-tags { display: flex; flex-wrap: wrap; gap: 0.3rem; margin-top: 0.4rem; }
.service-pill-tag { background: var(--bg-surface-3); color: var(--accent-green); padding: 0.2rem 0.5rem; border-radius: var(--radius-full); font-size: 0.72rem; }
.admin-card-actions-footer { display: flex; gap: 0.5rem; margin-top: auto; }
.admin-card-actions-footer button { flex: 1; }

/* Admin Services Grid */
.admin-services-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.5rem;
}
@media (max-width: 1200px) {
  .admin-services-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 768px) {
  .admin-services-grid { grid-template-columns: 1fr; }
}

.admin-service-card {
  background: var(--bg-surface-2);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-md);
  overflow: hidden;
  display: flex;
  flex-direction: column;
}
.admin-service-img { height: 140px; background-size: cover; background-position: center; padding: 0.8rem; }
.service-cat-pill { background: rgba(0,0,0,0.8); color: var(--accent-green); font-size: 0.75rem; font-weight: 700; padding: 0.2rem 0.6rem; border-radius: var(--radius-sm); }
.admin-service-body { padding: 1.25rem; display: flex; flex-direction: column; flex-grow: 1; }
.service-title-price-row { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 0.5rem; }
.admin-srv-name { font-size: 1.15rem; font-weight: 800; }
.admin-srv-price { color: var(--accent-green); font-weight: 800; font-size: 1rem; }
.admin-srv-desc { font-size: 0.82rem; color: var(--text-muted); margin-bottom: 1rem; flex-grow: 1; }
.srv-meta-row { display: flex; justify-content: space-between; font-size: 0.8rem; color: var(--text-light); margin-bottom: 0.8rem; }
.assigned-coaches-list { font-size: 0.78rem; background: var(--bg-surface-1); padding: 0.5rem 0.8rem; border-radius: var(--radius-sm); margin-bottom: 1rem; }
.coaches-lbl { color: var(--text-muted); display: block; }
.coaches-val { color: #fff; font-weight: 600; }
.admin-srv-actions { display: flex; gap: 0.5rem; margin-top: auto; }
.admin-srv-actions button { flex: 1; }

/* ==========================================
   SCHEDULES & DEMO SETTINGS
   ========================================== */
.schedules-layout-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 2rem;
}
@media (max-width: 992px) {
  .schedules-layout-grid { grid-template-columns: 1fr; }
}

.admin-card {
  background: var(--bg-surface-2);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-md);
  padding: 2rem;
}
.card-heading { font-size: 1.3rem; font-weight: 800; margin-bottom: 0.4rem; }
.card-sub { font-size: 0.88rem; color: var(--text-muted); margin-bottom: 1.5rem; }

.slot-tester-controls {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1rem;
  margin-bottom: 1.5rem;
}
.slot-preview-area {
  background: var(--bg-surface-1);
  border: 1px solid var(--border-strong);
  border-radius: var(--radius-sm);
  padding: 1rem;
  min-height: 180px;
}
.preview-off-notice {
  color: #FF4D4D;
  text-align: center;
  padding: 2rem 0;
  font-size: 0.95rem;
}
.preview-meta {
  display: flex;
  justify-content: space-between;
  font-size: 0.82rem;
  color: var(--text-muted);
  margin-bottom: 0.8rem;
  border-bottom: 1px solid var(--border-subtle);
  padding-bottom: 0.4rem;
}
.preview-slots-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 0.5rem;
}
.preview-slot-pill {
  padding: 0.5rem;
  border-radius: var(--radius-sm);
  text-align: center;
  display: flex;
  flex-direction: column;
  font-size: 0.78rem;
}
.preview-slot-pill.status-available { background: var(--accent-green-dim); border: 1px solid var(--border-green); color: var(--accent-green); }
.preview-slot-pill.status-booked { background: rgba(255, 77, 77, 0.15); border: 1px solid rgba(255, 77, 77, 0.3); color: #FF4D4D; }
.preview-slot-pill.status-unavailable { background: #111; color: #666; border: 1px solid #222; }

.demo-actions-box {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  margin-top: 1.5rem;
}
