/* Silicon Maze - Simple & Sleek Design System using CTFd Core Colors */

:root {
  --sm-font-mono: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
  
  /* CTFd Core Semantic Palette */
  --sm-primary: #1054c2;
  --sm-primary-rgb: 16, 84, 194;
  --sm-secondary: #6c757d;
  --sm-dark: #212529;
  --sm-light: #f8f9fa;
  --sm-border: #dee2e6;
  
  /* SIG Signatures using CTFd / Bootstrap Core Colors */
  --sm-algo: #0d6efd;          /* CTFd Primary Blue */
  --sm-algo-bg: rgba(13, 110, 253, 0.08);
  --sm-algo-border: rgba(13, 110, 253, 0.25);

  --sm-intel: #5c728f;         /* CTFd Custom Info Blue/Slate */
  --sm-intel-bg: rgba(92, 114, 143, 0.08);
  --sm-intel-border: rgba(92, 114, 143, 0.25);

  --sm-gdg: #198754;           /* CTFd Success Green */
  --sm-gdg-bg: rgba(25, 135, 84, 0.08);
  --sm-gdg-border: rgba(25, 135, 84, 0.25);

  --sm-systems: #495057;       /* CTFd Secondary / Dark Steel */
  --sm-systems-bg: rgba(73, 80, 87, 0.08);
  --sm-systems-border: rgba(73, 80, 87, 0.25);
}

/* ==========================================================================
   Hero Section - Clean CTFd Jumbotron Alignment
   ========================================================================== */

.sm-hero {
  background-color: var(--bs-tertiary-bg, #f8f9fa);
  border-bottom: 1px solid var(--bs-border-color, #dee2e6);
  padding: 3rem 1rem 2.25rem;
  margin-bottom: 2rem;
}

[data-bs-theme="dark"] .sm-hero {
  background-color: #1a1d21;
  border-bottom-color: #2b3035;
}

.sm-kicker {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  padding: 0.25rem 0.75rem;
  border-radius: 50rem;
  background-color: rgba(var(--bs-primary-rgb, 16, 84, 194), 0.1);
  color: var(--bs-primary, #0d6efd);
  border: 1px solid rgba(var(--bs-primary-rgb, 16, 84, 194), 0.2);
  margin-bottom: 0.75rem;
}

.sm-title {
  font-size: 2.25rem;
  font-weight: 700;
  letter-spacing: -0.02em;
  color: var(--bs-body-color, #212529);
  margin-bottom: 0.5rem;
}

@media (min-width: 768px) {
  .sm-title {
    font-size: 2.75rem;
  }
}

.sm-subtitle {
  font-size: 1rem;
  color: var(--bs-secondary-color, #6c757d);
  max-width: 640px;
  margin: 0 auto;
  line-height: 1.5;
}

/* User Summary Pill in Hero */
.sm-user-pill {
  display: inline-flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.75rem 1rem;
  padding: 0.4rem 1rem;
  border-radius: 50rem;
  background-color: var(--bs-card-bg, #ffffff);
  border: 1px solid var(--bs-border-color, #dee2e6);
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
  margin-top: 1.25rem;
}

.sm-user-pill .sm-score-badge {
  font-family: var(--sm-font-mono);
  font-weight: 600;
  font-size: 0.85rem;
  color: #b45309;
  background-color: rgba(245, 158, 11, 0.12);
  border: 1px solid rgba(245, 158, 11, 0.25);
  padding: 0.15rem 0.55rem;
  border-radius: 50rem;
}

/* ==========================================================================
   Cards & Tiles - Sleek, Uncluttered Containers
   ========================================================================== */

.sm-card {
  background-color: var(--bs-card-bg, #ffffff);
  border: 1px solid var(--bs-border-color, #dee2e6);
  border-radius: 0.5rem;
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
  overflow: hidden;
}

.sm-card:hover {
  border-color: var(--bs-secondary-color, #adb5bd);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.06);
}

[data-bs-theme="dark"] .sm-card {
  background-color: #212529;
  border-color: #343a40;
}

[data-bs-theme="dark"] .sm-card:hover {
  border-color: #495057;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25);
}

/* Clean Top Accent on SIG Cards */
.sm-tile-algo { border-top: 3px solid var(--sm-algo); }
.sm-tile-intel { border-top: 3px solid var(--sm-intel); }
.sm-tile-gdg { border-top: 3px solid var(--sm-gdg); }
.sm-tile-systems { border-top: 3px solid var(--sm-systems); }

/* Icon Boxes */
.sm-icon-box {
  width: 40px;
  height: 40px;
  border-radius: 0.4rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 1.1rem;
  margin-bottom: 0.75rem;
}

.sm-icon-algo { background-color: var(--sm-algo-bg); color: var(--sm-algo); border: 1px solid var(--sm-algo-border); }
.sm-icon-intel { background-color: var(--sm-intel-bg); color: var(--sm-intel); border: 1px solid var(--sm-intel-border); }
.sm-icon-gdg { background-color: var(--sm-gdg-bg); color: var(--sm-gdg); border: 1px solid var(--sm-gdg-border); }
.sm-icon-systems { background-color: var(--sm-systems-bg); color: var(--sm-systems); border: 1px solid var(--sm-systems-border); }

/* Typography Helpers */
.sm-text-algo { color: var(--sm-algo) !important; }
.sm-text-intel { color: var(--sm-intel) !important; }
.sm-text-gdg { color: var(--sm-gdg) !important; }
.sm-text-systems { color: var(--sm-systems) !important; }

.sm-mono {
  font-family: var(--sm-font-mono);
  font-variant-numeric: tabular-nums;
}

/* Inner content boxes */
.sm-inner-box {
  background-color: var(--bs-tertiary-bg, #f8f9fa);
  border: 1px solid var(--bs-border-color, #dee2e6);
  border-radius: 0.4rem;
}

[data-bs-theme="dark"] .sm-inner-box {
  background-color: #1a1d21;
  border-color: #2b3035;
}

/* ==========================================================================
   Filter Switcher / Nav Pills
   ========================================================================== */

.sm-segmented-nav {
  display: inline-flex;
  background-color: var(--bs-tertiary-bg, #f1f3f5);
  padding: 0.25rem;
  border-radius: 0.5rem;
  border: 1px solid var(--bs-border-color, #dee2e6);
  gap: 0.25rem;
  max-width: 100%;
  overflow-x: auto;
}

[data-bs-theme="dark"] .sm-segmented-nav {
  background-color: #1a1d21;
  border-color: #2b3035;
}

.sm-segmented-nav .nav-link {
  font-size: 0.85rem;
  font-weight: 500;
  color: var(--bs-secondary-color, #6c757d);
  padding: 0.4rem 0.85rem;
  border-radius: 0.35rem;
  text-decoration: none !important;
  transition: all 0.15s ease;
  white-space: nowrap;
}

.sm-segmented-nav .nav-link:hover {
  color: var(--bs-body-color, #212529);
  background-color: rgba(0, 0, 0, 0.04);
}

[data-bs-theme="dark"] .sm-segmented-nav .nav-link:hover {
  color: #fff;
  background-color: rgba(255, 255, 255, 0.05);
}

.sm-segmented-nav .nav-link.active {
  color: #ffffff !important;
  background-color: var(--bs-primary, #0d6efd) !important;
  font-weight: 600;
}

/* ==========================================================================
   Leaderboard Table
   ========================================================================== */

.sm-table-container {
  background-color: var(--bs-card-bg, #ffffff);
  border-radius: 0.5rem;
  border: 1px solid var(--bs-border-color, #dee2e6);
  overflow: hidden;
}

[data-bs-theme="dark"] .sm-table-container {
  background-color: #212529;
  border-color: #343a40;
}

.sm-table {
  margin-bottom: 0;
  width: 100%;
}

.sm-table th {
  background-color: var(--bs-tertiary-bg, #f8f9fa);
  color: var(--bs-secondary-color, #6c757d);
  font-size: 0.75rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  padding: 0.75rem 1rem;
  border-bottom: 1px solid var(--bs-border-color, #dee2e6);
  white-space: nowrap;
}

[data-bs-theme="dark"] .sm-table th {
  background-color: #1a1d21;
  border-bottom-color: #2b3035;
}

.sm-table td {
  padding: 0.85rem 1rem;
  vertical-align: middle;
  border-bottom: 1px solid var(--bs-border-color, #dee2e6);
  color: var(--bs-body-color, #212529);
  font-size: 0.9rem;
}

[data-bs-theme="dark"] .sm-table td {
  border-bottom-color: #2b3035;
  color: #e9ecef;
}

.sm-table tbody tr:hover td {
  background-color: rgba(0, 0, 0, 0.02);
}

[data-bs-theme="dark"] .sm-table tbody tr:hover td {
  background-color: rgba(255, 255, 255, 0.03);
}

.sm-table tbody tr:last-child td {
  border-bottom: none;
}

/* Current user row highlight */
.sm-user-row td {
  background-color: rgba(13, 110, 253, 0.06) !important;
}

.sm-user-row td:first-child {
  border-left: 3px solid var(--bs-primary, #0d6efd);
}

/* Rank Badges */
.sm-rank-pill {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 30px;
  height: 26px;
  padding: 0 0.35rem;
  border-radius: 4px;
  font-family: var(--sm-font-mono);
  font-weight: 600;
  font-size: 0.82rem;
}

.sm-rank-gold {
  color: #92400e;
  background-color: #fef3c7;
  border: 1px solid #fde68a;
}

.sm-rank-silver {
  color: #475569;
  background-color: #f1f5f9;
  border: 1px solid #cbd5e1;
}

.sm-rank-bronze {
  color: #b45309;
  background-color: #ffedd5;
  border: 1px solid #fed7aa;
}

[data-bs-theme="dark"] .sm-rank-gold {
  color: #fef08a;
  background-color: rgba(234, 179, 8, 0.2);
  border-color: rgba(234, 179, 8, 0.3);
}

[data-bs-theme="dark"] .sm-rank-silver {
  color: #e2e8f0;
  background-color: rgba(148, 163, 184, 0.2);
  border-color: rgba(148, 163, 184, 0.3);
}

[data-bs-theme="dark"] .sm-rank-bronze {
  color: #fdba74;
  background-color: rgba(249, 115, 22, 0.2);
  border-color: rgba(249, 115, 22, 0.3);
}

.sm-rank-default {
  color: var(--bs-secondary-color, #6c757d);
  font-weight: 500;
}

/* Score Pill */
.sm-score-tag {
  display: inline-block;
  font-family: var(--sm-font-mono);
  font-weight: 600;
  font-size: 0.85rem;
  color: var(--bs-body-color, #212529);
  background-color: var(--bs-tertiary-bg, #e9ecef);
  border: 1px solid var(--bs-border-color, #dee2e6);
  padding: 0.25rem 0.65rem;
  border-radius: 4px;
}

[data-bs-theme="dark"] .sm-score-tag {
  color: #f8f9fa;
  background-color: #2b3035;
  border-color: #343a40;
}

/* Live Pulse Indicator */
.sm-live-badge {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  font-size: 0.8rem;
  color: var(--bs-secondary-color, #6c757d);
}

.sm-pulse-indicator {
  display: inline-block;
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background-color: #198754;
}

/* Minimal tags */
.sm-tag {
  font-size: 0.7rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  padding: 0.2rem 0.5rem;
  border-radius: 4px;
  background-color: var(--bs-tertiary-bg, #f1f3f5);
  color: var(--bs-secondary-color, #6c757d);
  border: 1px solid var(--bs-border-color, #dee2e6);
}

[data-bs-theme="dark"] .sm-tag {
  background-color: #2b3035;
  border-color: #343a40;
  color: #adb5bd;
}

.sm-status-live {
  background-color: rgba(25, 135, 84, 0.1);
  color: #198754;
  border-color: rgba(25, 135, 84, 0.25);
}

.sm-status-upcoming {
  background-color: rgba(13, 110, 253, 0.1);
  color: #0d6efd;
  border-color: rgba(13, 110, 253, 0.25);
}

.sm-status-locked {
  background-color: rgba(220, 53, 69, 0.1);
  color: #dc3545;
  border-color: rgba(220, 53, 69, 0.25);
}

.sm-status-concluded {
  background-color: rgba(108, 117, 125, 0.1);
  color: #6c757d;
  border-color: rgba(108, 117, 125, 0.25);
}

/* ==========================================================================
   Scoreboard Dark Theme Alignment (CTFd Core Tokens)
   ========================================================================== */

[data-bs-theme="dark"] #scoreboard table {
  --bs-table-color: #dee2e6;
  --bs-table-striped-color: #dee2e6;
}

[data-bs-theme="dark"] #scoreboard table th,
[data-bs-theme="dark"] #scoreboard table td {
  color: #dee2e6;
}

[data-bs-theme="dark"] #scoreboard table td a {
  color: var(--bs-link-color, #6ea8fe) !important;
  font-weight: 500;
}

[data-bs-theme="dark"] #scoreboard table td a:hover {
  color: var(--bs-link-hover-color, #8bb9fe) !important;
  text-decoration: underline !important;
}