@import url('https://fonts.googleapis.com/css2?family=Barlow+Condensed:wght@600;700&family=Barlow:wght@400;500;600&display=swap');

/* ============================================
   SportApp Modern — CSS Overlay v1
   Warm minimalista palette
   ============================================ */

/* --- Design Tokens --- */
:root {
  --font-family:   'Barlow', -apple-system, BlinkMacSystemFont, sans-serif;
  --font-display:  'Barlow Condensed', system-ui, sans-serif;

  /* Surfaces */
  --bg-primary:      oklch(98.5% 0.004 28);
  --bg-secondary:    oklch(94%   0.007 28);
  --bg-card:         oklch(100%  0     0);

  /* Text */
  --text-heading:    oklch(17%   0.010 28);
  --text-primary:    oklch(18.5% 0.011 28);
  --text-secondary:  oklch(42%   0.015 28);
  --text-muted:      oklch(62%   0.012 28);

  /* Accent — Coral (default) */
  --accent:          oklch(72.5% 0.11  28);
  --accent-hover:    oklch(66%   0.12  28);
  --accent-active:   oklch(61%   0.13  28);
  --accent-tint:     oklch(88%   0.055 28);

  /* Status */
  --success:         oklch(65%   0.17  150);
  --error:           oklch(55%   0.18  25);
  --warning:         oklch(65%   0.17  55);
  --info:            oklch(58%   0.17  250);

  --border-color:    oklch(90%   0.008 28);

  --radius-sm:       4px;
  --radius:          8px;
  --radius-lg:       14px;
  --radius-xl:       16px;
  --radius-pill:     9999px;

  /* Spacing — 4pt baseline */
  --space-3xs:  4px;
  --space-2xs:  8px;
  --space-xs:   12px;
  --space-sm:   16px;
  --space-md:   24px;
  --space-lg:   32px;
  --space-xl:   48px;
  --space-2xl:  72px;
  --space-3xl:  112px;

  --shadow-sm: 0 1px 3px  oklch(17% 0.010 28 / 0.06);
  --shadow-md: 0 8px 24px oklch(17% 0.010 28 / 0.08);
  --shadow-lg: 0 12px 36px oklch(17% 0.010 28 / 0.10);
  --shadow-xl: 0 24px 60px oklch(17% 0.010 28 / 0.14);
}



/* ============================================================
   Themes — override accent + surface tokens via <html> class.
   Default (Coral) lives in :root above.
   ============================================================ */

html.theme-ocean {
  --accent:        oklch(58%   0.17  250);
  --accent-hover:  oklch(53%   0.17  250);
  --accent-active: oklch(49%   0.17  250);
  --accent-tint:   oklch(92%   0.04  250);
  --bg-primary:    oklch(98%   0.004 250);
  --bg-secondary:  oklch(96%   0.015 250);
  --border-color:  oklch(90%   0.025 250);
}

html.theme-forest {
  --accent:        oklch(65%   0.17  150);
  --accent-hover:  oklch(57%   0.17  150);
  --accent-active: oklch(48%   0.17  150);
  --accent-tint:   oklch(95%   0.07  150);
  --bg-primary:    oklch(98.5% 0.004 150);
  --bg-secondary:  oklch(97%   0.025 150);
  --border-color:  oklch(93%   0.04  150);
}

html.theme-violet {
  --accent:        oklch(55%   0.22  290);
  --accent-hover:  oklch(49%   0.22  290);
  --accent-active: oklch(44%   0.22  290);
  --accent-tint:   oklch(90%   0.08  290);
  --bg-primary:    oklch(98.5% 0.005 290);
  --bg-secondary:  oklch(95%   0.02  290);
  --border-color:  oklch(88%   0.04  290);
}

html.theme-graphite {
  --accent:        oklch(42%   0.015 270);
  --accent-hover:  oklch(33%   0.015 270);
  --accent-active: oklch(23%   0.014 270);
  --accent-tint:   oklch(94%   0.005 270);
  --bg-primary:    oklch(98.5% 0     0);
  --bg-secondary:  oklch(95%   0.004 270);
  --border-color:  oklch(90%   0.006 270);
}

html.theme-amber {
  --accent:        oklch(65%   0.17  55);
  --accent-hover:  oklch(57%   0.17  55);
  --accent-active: oklch(50%   0.17  55);
  --accent-tint:   oklch(94%   0.055 70);
  --bg-primary:    oklch(99%   0.004 80);
  --bg-secondary:  oklch(97%   0.025 80);
  --border-color:  oklch(92%   0.07  80);
}

/* ============================================================
   Dark Mode — html.dark flips surface/text tokens.
   Accent stays from whichever color theme is active.
   Accent-tint overrides keep hover states readable on dark bg.
   ============================================================ */
html.dark {
  color-scheme: dark;
  --bg-primary:    oklch(14%   0.010 28);
  --bg-secondary:  oklch(20%   0.010 28);
  --bg-card:       oklch(22%   0.009 28);
  --text-heading:  oklch(96%   0.005 28);
  --text-primary:  oklch(93%   0.005 28);
  --text-secondary:oklch(78%   0.009 28);
  --text-muted:    oklch(59%   0.009 28);
  --border-color:  oklch(28%   0.010 28);
  --shadow-sm: 0 1px 3px  oklch(0% 0 0 / 0.40);
  --shadow-md: 0 8px 24px oklch(0% 0 0 / 0.50);
  --shadow-lg: 0 12px 36px oklch(0% 0 0 / 0.60);
  /* Coral default tint — semi-transparent so it works on dark surfaces */
  --accent-tint:   oklch(72.5% 0.11 28 / 0.18);
}

html.dark.theme-ocean    { --accent-tint: oklch(58%   0.17  250 / 0.18); }
html.dark.theme-forest   { --accent-tint: oklch(65%   0.17  150 / 0.18); }
html.dark.theme-violet   { --accent-tint: oklch(55%   0.22  290 / 0.18); }
html.dark.theme-graphite { --accent-tint: oklch(42%   0.015 270 / 0.22); }
html.dark.theme-amber    { --accent-tint: oklch(65%   0.17  55  / 0.18); }

/* Modal background — not covered by tokens in base CSS */
html.dark .modal-content {
  background-color: var(--bg-card);
}

/* Bootstrap dropdown menus hardcode white */
html.dark .dropdown-menu {
  background-color: var(--bg-card);
  border: 1px solid var(--border-color);
}

html.dark .dropdown-menu > li > a {
  color: var(--text-primary);
}

html.dark .dropdown-menu > li > a:hover {
  background-color: var(--accent-tint);
  color: var(--text-heading);
}

html.dark .dropdown-menu .divider {
  background-color: var(--border-color);
}

/* Bootstrap table striping hardcodes a light gray */
html.dark .table-striped > tbody > tr:nth-child(odd) > td,
html.dark .table-striped > tbody > tr:nth-child(odd) > th {
  background-color: var(--bg-secondary) !important;
}

/* Bootstrap .well */
html.dark .well {
  background-color: var(--bg-secondary);
  border-color: var(--border-color);
}

/* AdminLTE user dropdown header gradient */
html.dark .main-header .navbar .dropdown-menu .user-footer {
  background: var(--bg-secondary);
}

/* ============================================================
   Dark mode — Bootstrap .table / DataTable
   !important needed to beat inline style="background: white"
   on <tr> elements generated by JSP loops.
   ============================================================ */

html.dark .table > thead > tr > th,
html.dark .table > thead > tr > td {
  background-color: var(--bg-secondary) !important;
  color: var(--text-secondary) !important;
  border-color: var(--border-color) !important;
}

html.dark .table > tbody > tr {
  background-color: var(--bg-card) !important;
}

html.dark .table > tbody > tr > td,
html.dark .table > tbody > tr > th {
  background-color: var(--bg-card) !important;
  color: var(--text-primary) !important;
  border-color: var(--border-color) !important;
}

html.dark .table > tfoot > tr > td,
html.dark .table > tfoot > tr > th {
  background-color: var(--bg-secondary) !important;
  color: var(--text-secondary) !important;
  border-color: var(--border-color) !important;
}

html.dark .table-bordered {
  border-color: var(--border-color) !important;
}

html.dark .table > tbody > tr:hover > td,
html.dark .table > tbody > tr:hover > th {
  background-color: var(--accent-tint) !important;
  color: var(--text-heading) !important;
}

/* DataTable controls */
html.dark .dataTables_wrapper .dataTables_filter input,
html.dark .dataTables_wrapper .dataTables_length select {
  background-color: var(--bg-secondary) !important;
  border-color: var(--border-color) !important;
  color: var(--text-primary) !important;
}

html.dark .dataTables_wrapper .dataTables_info,
html.dark .dataTables_wrapper .dataTables_length label,
html.dark .dataTables_wrapper .dataTables_filter label {
  color: var(--text-secondary) !important;
}

/* DataTable pagination */
html.dark .dataTables_paginate .paginate_button:not(.current) {
  color: var(--text-secondary) !important;
}

html.dark .dataTables_paginate .paginate_button:not(.current):hover {
  background: var(--bg-secondary) !important;
  border-color: var(--border-color) !important;
  color: var(--text-heading) !important;
}

html.dark .dataTables_paginate .paginate_button.current,
html.dark .dataTables_paginate .paginate_button.current:hover {
  background: var(--accent) !important;
  border-color: var(--accent) !important;
  color: #fff !important;
}

/* --- Theme picker swatch buttons --- */
.sa-theme-btn {
  width: 26px;
  height: 26px;
  border-radius: 50%;
  border: 2px solid rgba(255, 255, 255, 0.5);
  cursor: pointer;
  padding: 0;
  transition: transform 0.15s ease, box-shadow 0.15s ease;
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.22);
  display: inline-block;
}

.sa-theme-btn:hover {
  transform: scale(1.18);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.28);
}

/* --- Body & Base --- */
html, body {
  height: 100%;
}

body {
  font-family: var(--font-family);
  color: var(--text-primary);
  background-color: var(--bg-primary) !important;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

/* Force wrapper and sidebar to fill full viewport height */
.wrapper {
  min-height: 100vh !important;
}

.main-sidebar {
  min-height: 100vh !important;
}

/* Content area background */
.content-wrapper {
  background-color: var(--bg-primary);
}

/* --- Sidebar --- */
.main-sidebar {
  font-family: var(--font-family);
}

.sidebar-menu > li > a {
  padding: 12px 16px;
  border-left: 3px solid transparent;
}

.sidebar-menu > li.active > a {
  border-left-color: var(--accent);
  background-color: color-mix(in srgb, var(--accent) 8%, transparent);
}

.sidebar-menu > li > a > .fa,
.sidebar-menu > li > a > .ion,
.sidebar-menu > li > a > img {
  width: 20px;
  text-align: center;
  margin-right: 8px;
  opacity: 0.7;
}

.sidebar-menu > li.active > a > .fa,
.sidebar-menu > li.active > a > .ion {
  color: var(--accent);
  opacity: 1;
}

.sidebar-menu .treeview-menu {
  padding-left: 0;
}

.sidebar-menu .treeview-menu > li > a {
  padding: 10px 16px 10px 44px;
}

.sidebar-menu .treeview-menu > li.active > a {
  color: var(--accent);
}

.sidebar-menu > li > a > .pull-right {
  margin-top: 2px;
}

/* Sidebar user panel */
.user-panel {
  padding: 20px;
}

.user-panel .info p {
}

/* Sidebar search — hidden */
.sidebar-form {
  display: none !important;
}

.sidebar-form .input-group .form-control {
  border-radius: var(--radius) !important;
  background: var(--bg-secondary);
  border-color: var(--border-color);
}

.sidebar-form .input-group-btn > .btn {
  border-radius: 0 var(--radius) var(--radius) 0;
  background: var(--bg-secondary);
}

/* Sidebar header label */
.sidebar-menu .header {
  font-family: var(--font-display);
  font-size: 12px;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  padding: 16px 16px 8px;
  opacity: 0.5;
}

/* --- Header --- */
.main-header {
  background: color-mix(in srgb, var(--bg-primary) 85%, transparent);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  display: flex;
  align-items: stretch;
  position: sticky;
  top: 0;
  z-index: 1030;
}

.main-header .logo {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0 var(--space-sm);
  background: transparent;
  color: var(--text-heading) !important;
  border-bottom: 1px solid var(--border-color);
  /* Override AdminLTE's float + fixed height so flex-stretch takes over */
  float: none !important;
  flex-shrink: 0;
  height: auto !important;
}

.main-header .logo .logo-lg {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 16px;
  letter-spacing: -0.01em;
  color: var(--text-heading);
}

.main-header .logo .logo-mini img {
  width: 40px;
  height: 40px;
  object-fit: contain;
  border-radius: 8px;
  display: block;
  /* Reset AdminLTE .user-image side-effects */
  float: none !important;
  margin: 0 !important;
  vertical-align: unset;
}

.main-header .navbar {
  background: transparent;
  border-bottom: 1px solid var(--border-color);
  box-shadow: none;
  /* Override AdminLTE's margin-left: 230px (not needed with flexbox) */
  flex: 1;
  margin-left: 0 !important;
  margin-bottom: 0;
  float: none !important;
}

.main-header .navbar .sidebar-toggle {
  padding: 14px 16px;
  color: var(--text-secondary);
}

.main-header .navbar .sidebar-toggle:hover {
  color: var(--accent);
}

/* Dropdown menus in header */
.main-header .navbar .dropdown-menu {
  border: none;
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-lg);
  padding: 8px;
}

.main-header .navbar .dropdown-menu > li > a {
  border-radius: var(--radius-sm);
  padding: 8px 16px;
  color: var(--text-primary);
}

.main-header .navbar .dropdown-menu > li > a:hover {
  background-color: var(--accent-tint);
  color: var(--text-heading);
}

/* User dropdown header */
.main-header .navbar .dropdown-menu .user-header {
  background: var(--accent) !important;
  background-image: none !important;
  border-radius: var(--radius) var(--radius) 0 0;
  padding: 20px;
  text-align: center;
}

.main-header .navbar .dropdown-menu .user-header p {
  color: #fff !important;
  font-weight: 600;
  margin: 8px 0 0;
}

.main-header .navbar .dropdown-menu .user-header img {
  width: 64px;
  height: 64px;
  border: 3px solid rgba(255, 255, 255, 0.5);
  border-radius: 50%;
  object-fit: cover;
  background: rgba(255,255,255,0.2);
}

/* User dropdown footer — buttons row */
.main-header .navbar .dropdown-menu .user-footer {
  display: flex;
  gap: 8px;
  padding: 12px 16px;
  border-top: 1px solid var(--border-color);
  background: var(--bg-secondary);
  border-radius: 0 0 var(--radius) var(--radius);
}

.main-header .navbar .dropdown-menu .user-footer .pull-left,
.main-header .navbar .dropdown-menu .user-footer .pull-right {
  float: none !important;
  flex: 1;
}

.main-header .navbar .dropdown-menu .user-footer .btn {
  width: 100%;
  text-align: center;
  font-size: 13px;
  padding: 7px 12px;
  border-radius: var(--radius-sm);
}

/* "Perfil" — outlined style */
.main-header .navbar .dropdown-menu .user-footer .pull-left .btn {
  background: transparent;
  border: 1px solid var(--border-color);
  color: var(--text-primary);
}

.main-header .navbar .dropdown-menu .user-footer .pull-left .btn:hover {
  background: var(--bg-primary);
  border-color: var(--accent);
  color: var(--accent);
}

/* "Cerrar sesión" — filled accent style */
.main-header .navbar .dropdown-menu .user-footer .pull-right .btn {
  background: var(--accent);
  border: 1px solid var(--accent);
  color: #fff;
}

.main-header .navbar .dropdown-menu .user-footer .pull-right .btn:hover {
  background: var(--accent-hover);
  border-color: var(--accent-hover);
  color: #fff;
}

/* Navbar custom menu items */
.navbar-custom-menu > .nav > li > a {
  padding: 10px 12px;
  color: var(--text-secondary);
  background: transparent;
  display: flex;
  align-items: center;
  gap: 6px;
}

/* Navbar user avatar (top-right dropdown trigger) */
.navbar-custom-menu .user-menu > a > img.user-image {
  width: 30px !important;
  height: 30px !important;
  border-radius: 50% !important;
  object-fit: cover !important;
  float: none !important;
  margin: 0 !important;
  border: 2px solid color-mix(in srgb, var(--accent) 40%, transparent);
  vertical-align: middle;
}

.navbar-custom-menu > .nav > li > a:hover {
  background: transparent;
  color: var(--accent);
}

/* --- Cards --- */
.box,
.box-primary,
.box-success,
.box-warning,
.box-danger,
.box-info {
  border-top: none !important;
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-sm);
  background: var(--bg-card);
  border: none;
}

.box-header {
  padding: var(--space-sm) var(--space-md) 0;
  border-bottom: none;
}

.box-header .box-title {
  font-family: var(--font-display);
  font-size: 15px;
  font-weight: 600;
  letter-spacing: -0.02em;
  color: var(--text-heading);
}

.box-body {
  padding: var(--space-md);
}

.box-footer {
  padding: var(--space-sm) var(--space-md);
  background: transparent;
  border-top: 1px solid var(--border-color);
  border-radius: 0 0 var(--radius-lg) var(--radius-lg);
}

.box-tools > .btn {
  border-radius: var(--radius-sm);
}

/* No-border variant cleanup */
.box.no-border {
  box-shadow: none;
  background: transparent;
}

/* --- Buttons --- */
.btn {
  border-radius: 6px;
  transition: all 0.2s cubic-bezier(0.16, 1, 0.3, 1);
  font-weight: 500;
  padding: 10px 20px;
  font-size: 16px;
}

.btn:active {
  transform: translateY(1px);
}

.btn-primary {
  background-color: var(--accent);
  border-color: var(--accent);
  color: #fff;
  border-radius: var(--radius-pill) !important;
  font-family: var(--font-display);
  font-weight: 700;
  letter-spacing: -0.01em;
}

.btn-primary:hover,
.btn-primary:focus {
  background-color: var(--accent-hover) !important;
  border-color: var(--accent-hover) !important;
  box-shadow: none;
}

.btn-primary:active {
  background-color: var(--accent-active) !important;
  border-color: var(--accent-active) !important;
}

.btn-success {
  background-color: transparent !important;
  border-color: var(--accent) !important;
  color: var(--accent) !important;
}

.btn-success:hover,
.btn-success:active,
.btn-success:focus {
  background-color: var(--accent-tint) !important;
  border-color: var(--accent) !important;
  color: var(--accent) !important;
}

.btn-danger {
  background-color: var(--error);
  border-color: var(--error);
  border-radius: var(--radius-pill) !important;
}

.btn-warning {
  border-radius: var(--radius-pill) !important;
}

.bg-purple {
  border-radius: var(--radius-pill) !important;
}

.btn-danger:hover,
.btn-danger:active,
.btn-danger:focus {
  background-color: oklch(45% 0.18 25) !important;
  border-color: oklch(45% 0.18 25) !important;
}

.btn-default {
  color: var(--text-primary);
  background-color: transparent;
  border: 1.5px solid var(--border-color);
}

.btn-default:hover {
  background-color: var(--bg-secondary);
  border-color: var(--text-muted);
  color: var(--text-heading);
}

.btn-default:active,
.btn-default.active {
  background-color: var(--bg-card);
  border-color: var(--text-secondary);
}

.btn-flat {
  border-radius: 6px;
  -webkit-border-radius: 6px;
}

.btn-flat:hover {
  box-shadow: var(--shadow-sm);
}

.btn-lg {
  padding: 12px 24px;
  font-size: 15px;
}

.btn-sm {
  padding: 6px 12px;
  font-size: 14px;
}

.btn-xs {
  padding: 4px 8px;
  font-size: 13px;
}

.btn-block {
  border-radius: 6px;
}

/* --- Tables --- */
.table {
  margin-bottom: 0;
}

.table > thead > tr > th {
  border-bottom: 2px solid var(--border-color);
  border-top: none;
  color: var(--text-secondary);
  font-weight: 600;
  padding: 6px 10px;
  background: transparent;
}

.table > tbody > tr > td {
  border-top: none;
  border-bottom: 1px solid var(--border-color);
  padding: 6px 10px;
  color: var(--text-primary);
  vertical-align: middle;
}

.table > tbody > tr:hover > td {
  background-color: color-mix(in srgb, var(--accent) 6%, transparent);
}

.table-bordered {
  border: none;
}

.table-bordered > thead > tr > th,
.table-bordered > tbody > tr > td {
  border-left: none;
  border-right: none;
}

/* --- Forms --- */
.form-control {
  border: 1px solid var(--border-color);
  border-radius: 6px;
  color: var(--text-primary);
  background-color: var(--bg-primary);
  box-shadow: none;
  transition: border-color 0.2s cubic-bezier(0.16, 1, 0.3, 1), box-shadow 0.2s cubic-bezier(0.16, 1, 0.3, 1);
}

.form-control:focus {
  border-color: var(--accent);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 15%, transparent);
  outline: none;
}

.form-control::placeholder {
  color: var(--text-muted);
  opacity: 1;
}

.form-control[readonly],
.form-control[disabled] {
  background-color: var(--bg-secondary) !important;
  color: var(--text-secondary) !important;
  cursor: default;
}

select.form-control {
  -webkit-appearance: none;
  appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%238D8482' d='M6 8L1 3h10z'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 12px center;
  padding-right: 32px;
  line-height: 1.4;
}

/* Flexbox replaces Bootstrap's table-cell layout so addon stretches to input height */
.input-group {
  display: flex !important;
  align-items: stretch;
}

.input-group .form-control {
  flex: 1 1 auto;
  width: 1% !important;
}

.input-group .form-control:first-child {
  border-radius: 6px 0 0 6px;
}

.input-group .form-control:last-child {
  border-radius: 0 6px 6px 0;
}

.input-group-addon {
  display: flex;
  align-items: center;
  background-color: var(--bg-secondary);
  border: 1px solid var(--border-color);
  color: var(--text-secondary);
  border-radius: 6px;
  padding: 0 14px;
  white-space: nowrap;
}

.input-group-addon:first-child {
  border-right: none;
  border-radius: 6px 0 0 6px;
}

.input-group-addon:last-child {
  border-left: none;
  border-radius: 0 6px 6px 0;
}

.form-group {
  margin-bottom: 16px;
}

label {
  font-weight: 500;
  color: var(--text-secondary);
  font-size: 15px;
  margin-bottom: 6px;
}

/* Checkbox / Radio iCheck override */
.icheckbox_flat-blue,
.iradio_flat-blue {
  background-color: var(--bg-primary) !important;
  border: 1px solid var(--border-color) !important;
  border-radius: 3px !important;
}

.icheckbox_flat-blue.checked {
  background-color: var(--accent) !important;
  border-color: var(--accent) !important;
}

/* --- Modals --- */
.modal-content {
  border-radius: var(--radius-lg);
  border: none;
  box-shadow: var(--shadow-lg);
}

.modal-header {
  padding: var(--space-md) var(--space-md) 0;
  border-bottom: none;
}

.modal-header .close {
  font-size: 24px;
  color: var(--text-muted);
  opacity: 0.7;
}

.modal-header .close:hover {
  opacity: 1;
}

.modal-body {
  padding: var(--space-md);
}

.modal-footer {
  padding: var(--space-sm) var(--space-md);
  border-top: 1px solid var(--border-color);
  border-radius: 0 0 var(--radius-lg) var(--radius-lg);
}

.modal-title {
  font-family: var(--font-display);
  font-weight: 600;
  font-size: 15px;
  letter-spacing: -0.02em;
}

/* --- Alerts --- */
.alert {
  border-radius: var(--radius);
  border: none;
}

.alert-success {
  background-color: color-mix(in srgb, var(--success) 10%, transparent);
  color: var(--success);
}

.alert-error,
.alert-danger {
  background-color: color-mix(in srgb, var(--error) 10%, transparent);
  color: var(--error);
}

.alert-info {
  background-color: color-mix(in srgb, var(--info) 10%, transparent);
  color: var(--info);
}

.alert-warning {
  background-color: color-mix(in srgb, var(--warning) 10%, transparent);
  color: var(--warning);
}

.alert-dismissable .close {
  color: currentColor;
  opacity: 0.5;
}

/* --- Labels --- */
.label {
  border-radius: 4px;
  font-weight: 500;
  padding: 3px 8px;
}

.label-success {
  background-color: color-mix(in srgb, var(--success) 15%, transparent);
  color: var(--success);
}

.label-danger {
  background-color: color-mix(in srgb, var(--error) 15%, transparent);
  color: var(--error);
}

.label-warning {
  background-color: color-mix(in srgb, var(--warning) 15%, transparent);
  color: var(--warning);
}

.label-info {
  background-color: color-mix(in srgb, var(--info) 15%, transparent);
  color: var(--info);
}

.label-primary {
  background-color: color-mix(in srgb, var(--accent) 15%, transparent);
  color: var(--accent);
}

/* --- Info Box (Dashboard) --- */
.info-box {
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-sm);
  border: none;
  background: var(--bg-card);
  min-height: 90px;
  overflow: hidden;
}

.info-box-icon {
  border-radius: var(--radius-lg) 0 0 var(--radius-lg);
  background: var(--accent-tint) !important;
}

.info-box-icon > i {
  color: var(--accent) !important;
}

.info-box-icon > img {
  filter: none;
}

.info-box-content {
  padding: var(--space-xs) var(--space-sm);
}

.info-box-text {
  font-size: 15px;
  color: var(--text-secondary);
  text-transform: uppercase;
  letter-spacing: 0.3px;
}

.info-box-number {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: clamp(1.25rem, 2vw + 0.25rem, 1.625rem);
  letter-spacing: -0.02em;
  color: var(--text-heading);
}

/* --- Small boxes --- */
.small-box {
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-sm);
}

/* Box variant overrides (box-success, box-info, etc) */
.box-success,
.box-info,
.box-warning,
.box-danger {
  border-top: none !important;
}

.box-success > .box-header,
.box-info > .box-header,
.box-warning > .box-header,
.box-danger > .box-header {
  color: var(--text-heading);
}

/* skin-green sidebar — light background, dark text */
.skin-green .main-sidebar {
  background: var(--bg-primary) !important;
  border-right: 1px solid var(--border-color);
}

.skin-green .sidebar-menu > li > a {
  color: var(--text-primary);
}

.skin-green .sidebar-menu > li.active > a {
  border-left-color: var(--accent);
  background: var(--accent-tint);
  color: var(--accent);
}

.skin-green .sidebar-menu > li > a:hover {
  background: var(--bg-secondary);
  color: var(--accent);
}

.skin-green .sidebar-menu .treeview-menu > li > a {
  color: var(--text-secondary);
}

.skin-green .sidebar-menu > li.active > a > .fa,
.skin-green .sidebar-menu > li.active > a > .ion {
  color: var(--accent) !important;
}

/* --- Breadcrumb --- */
.content-header {
  padding: var(--space-sm) var(--space-md) 0;
}

.content-header > h1 {
  font-family: var(--font-display);
  font-size: clamp(1.25rem, 2vw + 0.5rem, 1.5rem);
  font-weight: 600;
  letter-spacing: -0.025em;
  color: var(--text-heading);
}

.content-header > h1 > small {
  font-size: 15px;
  color: var(--text-muted);
  font-weight: 400;
  margin-left: 8px;
}

.breadcrumb {
  background: transparent;
  padding: 0;
  margin-top: 4px;
}

.breadcrumb > li {
  font-size: 15px;
  color: var(--text-muted);
}

.breadcrumb > li > a {
  color: var(--text-secondary);
}

.breadcrumb > li > a:hover {
  color: var(--accent);
}

/* --- Footer --- */
.main-footer {
  background: transparent;
  border-top: 1px solid var(--border-color);
  color: var(--text-muted);
  font-size: 14px;
  padding: var(--space-sm) var(--space-md);
}

.main-footer a {
  color: var(--text-secondary);
}

/* --- Login Page --- */
.login-page {
  background-color: var(--bg-secondary) !important;
}

.login-box {
  background: var(--bg-primary);
  border-radius: var(--radius-xl);
  box-shadow: var(--shadow-lg);
  padding: 0;
  overflow: hidden;
  width: 340px;
}

.login-logo {
  padding: 32px 32px 0;
  text-align: center;
}

.login-logo img {
  max-height: 65px;
}

.login-box-body {
  background: transparent !important;
  padding: 29px 32px 32px;
}

.login-box-body .form-control {
  font-size: 13px !important;
  padding: 11px 36px 11px 13px;
  height: auto;
}

.login-box-body .form-control-feedback {
  width: 36px;
  height: 40px;
  line-height: 40px;
  font-size: 13px;
}

.login-box-body .btn {
  font-size: 13px !important;
  padding: 10px 16px;
  white-space: nowrap;
}

.login-box-body .row .col-xs-8:first-child {
  display: none;
}

.login-box-body .row .col-xs-4 {
  width: 100%;
}

.login-box-body a {
  font-size: 13px;
  display: inline-block;
  margin-top: 10px;
}

.login-box-msg {
  font-family: var(--font-display);
  margin: 0 0 20px;
  padding: 0;
  color: var(--text-heading);
  font-size: clamp(1.12rem, 2.43vw + 0.41rem, 1.42rem);
  font-weight: 700;
  letter-spacing: -0.025em;
  text-align: center;
}

/* Dark mode: logo band stays light so dark-colored logo image remains legible */
html.dark .login-logo {
  background: oklch(96% 0.006 28);
  border-radius: var(--radius-xl) var(--radius-xl) 0 0;
  padding-bottom: 20px;
}

html.dark .login-box-msg {
  color: var(--text-heading);
}

/* --- Page Loader --- */
.content-wrapper > .loading-overlay {
  background: var(--bg-primary) !important;
}

/* --- Timeline / Calendar specific --- */
.fc-toolbar h2 {
  font-size: 15px;
  font-weight: 600;
}

.fc-day-header {
  font-weight: 500;
  padding: 8px 0 !important;
}

/* --- Modals with confirm delete --- */
.modal-info .modal-content {
  background: var(--bg-primary);
}

/* Fix modal backdrop for z-index */
.modal-backdrop {
  background: oklch(17% 0.010 28 / 0.5);
}

.modal-backdrop.in {
  opacity: 0.6;
}

/* --- Pagination --- */
.pagination > li > a,
.pagination > li > span {
  color: var(--text-secondary);
  border-color: var(--border-color);
  border-radius: var(--radius-sm) !important;
  margin: 0 2px;
}

.pagination > li > a:hover {
  color: var(--accent);
  border-color: var(--accent);
  background: var(--accent-tint);
}

.pagination > .active > a {
  background: var(--accent);
  border-color: var(--accent);
  color: #fff;
}

/* --- Dropdown menus general --- */
.dropdown-menu {
  border: none;
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-lg);
}

.dropdown-menu > li > a {
  padding: 8px 16px;
  color: var(--text-primary);
}

.dropdown-menu > li > a:hover {
  background: var(--accent-tint);
}

/* --- Progress bars --- */
.progress {
  border-radius: 4px;
  box-shadow: none;
  background: var(--bg-secondary);
}

.progress-bar {
  box-shadow: none;
}

/* --- Tabs --- */
.nav-tabs {
  border-bottom-color: var(--border-color);
}

.nav-tabs > li > a {
  color: var(--text-secondary);
  border: none;
  border-radius: 0;
  padding: 10px 16px;
  font-weight: 500;
}

.nav-tabs > li > a:hover {
  background: transparent;
  color: var(--accent);
  border-bottom: 2px solid var(--accent-tint);
}

.nav-tabs > li.active > a,
.nav-tabs > li.active > a:hover,
.nav-tabs > li.active > a:focus {
  border: none;
  border-bottom: 2px solid var(--accent);
  color: var(--accent);
  background: transparent;
}

/* --- Treeview (sidebar submenu animation) --- */
.sidebar-menu .treeview-menu {
  padding-bottom: 4px;
}

/* --- Datetime pickers (datepicker, daterangepicker) --- */
.datepicker table tr td.active.active {
  background-color: var(--accent) !important;
  border-color: var(--accent) !important;
}

.daterangepicker td.active {
  background-color: var(--accent) !important;
}

.daterangepicker td.in-range {
  background-color: var(--accent-tint) !important;
}

/* ============================================================
   Tabla de Posiciones — admin/tabla.jsp
   header.jsp injects dark tablesorter CSS (#2f2f2f rows, #fbfbfb text)
   and yellow active color (#f4ba51) when active-tablageneral-css is set.
   All rules here use !important to beat those inline <style> blocks.
   ============================================================ */

/* --- Tablesorter table base --- */
.tablesorter {
  font-family: var(--font-family) !important;
  font-size: 13px !important;
  color: var(--text-primary) !important;
  border: 1px solid var(--border-color) !important;
  border-radius: var(--radius-md) !important;
  border-collapse: separate !important;
  border-spacing: 0 !important;
  width: 100% !important;
  overflow: hidden;
}

/* --- Header row (th and tr:first-child td) --- */
.tablesorter th {
  background-color: var(--bg-secondary) !important;
  color: var(--text-secondary) !important;
  border-color: var(--border-color) !important;
  font-family: var(--font-family) !important;
  font-size: 11px !important;
  font-weight: 600 !important;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  padding: 10px 8px !important;
}

.tablesorter tr:first-child td {
  background-color: var(--bg-secondary) !important;
  color: var(--text-secondary) !important;
  border-color: var(--border-color) !important;
  font-weight: 600 !important;
  font-size: 11px !important;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

/* --- Body rows: override the dark #2f2f2f background --- */
.tablesorter tr {
  background-color: var(--bg-primary) !important;
}

.tablesorter tbody tr:nth-child(even) {
  background-color: var(--bg-secondary) !important;
}

.tablesorter tbody tr:hover {
  background-color: var(--accent-tint) !important;
}

/* --- Cells --- */
.tablesorter td {
  background-color: transparent !important;
  color: var(--text-primary) !important;
  border-color: var(--border-color) !important;
  border-style: solid !important;
  border-width: 0 0 1px 0 !important;
  font-family: var(--font-family) !important;
  font-size: 13px !important;
  padding: 9px 8px !important;
  text-align: center !important;
}

/* Team name cell: left-align */
#tabla_posiciones td:nth-child(2) {
  text-align: left !important;
  font-weight: 500;
}

/* Last row: no bottom border */
.tablesorter tr:last-child td {
  border-bottom-width: 0 !important;
}

/* Demoted zone row (last): subtle muted style */
#tabla_posiciones tr:last-child td a {
  color: var(--text-muted) !important;
}

/* --- Liga menu: replace yellow (#f4ba51) active/hover with coral accent --- */
ul#menu li a,
.menu li a {
  color: var(--text-secondary) !important;
  text-decoration: none;
  transition: color 0.15s ease;
}

ul#menu li a:hover,
ul#menu li a:active,
ul#menu li a.active,
ul#menu li.active > a {
  color: var(--accent) !important;
  text-decoration: none;
}

/* Override the broad .active { color: #f4ba51 !important } from tabla.jsp inline style */
.content-wrapper section.content ul#menu .active,
.content-wrapper section.content ul#menu li.active {
  color: var(--accent) !important;
}

/* --- Accordion headers (jornadas list) --- */
.accordion-header {
  background: var(--bg-secondary) !important;
  color: var(--text-primary) !important;
  border: 1px solid var(--border-color) !important;
  border-radius: var(--radius-sm) !important;
  font-size: 14px !important;
  padding: 8px 16px !important;
  margin-top: 4px !important;
  cursor: pointer;
  transition: background 0.15s ease;
}

.accordion-header:hover,
.active-header,
.active-header:hover {
  background: var(--accent-tint) !important;
  color: var(--accent) !important;
  border-color: var(--accent) !important;
  background-image: none !important;
}

.inactive-header,
.inactive-header:hover {
  background: var(--bg-secondary) !important;
  color: var(--text-secondary) !important;
  border-color: var(--border-color) !important;
  background-image: none !important;
}

/* --- Box-primary left accent: use coral instead of AdminLTE blue --- */
.box.box-primary {
  border-top-color: var(--accent) !important;
}

/* --- Liga grid: responsive flex wrap --- */
#box_ligas_temps .box-body {
  overflow-x: auto;
}

ul#menu.menu {
  display: flex !important;
  flex-wrap: wrap;
  gap: 8px 16px;
  padding: 0;
  margin: 0;
  list-style: none;
}

ul#menu.menu li {
  display: flex !important;
  flex-direction: column;
  align-items: center;
  padding-right: 0 !important;
  font-size: inherit !important;
}

/* --- Tabla de Posiciones box-body: use auto scroll, not hidden overflow --- */
#tabla_posiciones {
  width: 100% !important;
}

/* --- DataTables override --- */
table.dataTable {
  border-color: var(--border-color) !important;
}

table.dataTable thead th {
  border-bottom: 2px solid var(--border-color) !important;
}

.dataTables_wrapper .dataTables_filter input {
  border: 1px solid var(--border-color);
  border-radius: 6px;
  padding: 8px 12px;
}

/* --- Light sidebar (skin-independent) --- */
.main-sidebar {
  background: var(--bg-primary) !important;
  border-right: 1px solid var(--border-color);
}

.sidebar-menu > li > a {
  color: var(--text-primary);
}

.sidebar-menu > li > a:hover {
  background: var(--bg-secondary);
  color: var(--accent);
}

.sidebar-menu .treeview-menu > li > a {
  color: var(--text-secondary);
}

.sidebar-menu > li.active > a {
  border-left-color: var(--accent);
  background: var(--accent-tint);
  color: var(--accent);
}

.sidebar-menu > li.active > a > .fa,
.sidebar-menu > li.active > a > .ion {
  color: var(--accent);
  opacity: 1;
}

.user-panel .info p {
  color: var(--text-primary);
}

.user-panel .info a {
  color: var(--text-muted);
}

.sidebar-menu .header {
  color: var(--text-muted);
}

/* ============================================================
   v2 Enhancements — polished look
   ============================================================ */

/* --- Content section --- */
.content {
  padding: 16px 20px 24px;
}

/* --- Content header: add bottom separator --- */
.content-header {
  padding: 20px 20px 0;
  margin-bottom: 0;
}

/* --- Action toolbar buttons (btn-block inside .box.no-border) --- */
.box.no-border {
  padding: 0;
  margin-bottom: 0;
}

.box.no-border .btn-block {
  border-radius: 10px;
  box-shadow: var(--shadow-sm);
  letter-spacing: 0.2px;
  transition: transform 0.15s ease, box-shadow 0.15s ease;
  margin-bottom: 8px;
}

.box.no-border .btn-block:hover {
  transform: translateY(-2px);
  box-shadow: var(--shadow-md);
}

.box.no-border .btn-block:active {
  transform: translateY(0);
  box-shadow: none;
}

/* Action toolbar secondary button: outlined accent instead of green */
.box.no-border .btn-block.btn-success {
  background: transparent !important;
  color: var(--accent) !important;
  border: 1.5px solid var(--accent) !important;
}
.box.no-border .btn-block.btn-success:hover {
  background: var(--accent-tint) !important;
}

/* --- DataTable export buttons --- */
div.dt-buttons {
  display: inline-flex;
  gap: 5px;
  margin-bottom: 12px;
}

div.dt-buttons .btn-default[class*="buttons-"] {
  background: var(--bg-secondary) !important;
  background-image: none !important;
  border: 1px solid var(--border-color) !important;
  border-radius: var(--radius-sm) !important;
  color: var(--text-secondary) !important;
  font-size: 13px !important;
  font-weight: 500 !important;
  padding: 5px 14px !important;
  box-shadow: none !important;
  line-height: 1.5 !important;
  transition: all 0.15s ease !important;
  text-shadow: none !important;
}

div.dt-buttons .btn-default[class*="buttons-"]:hover {
  background: var(--bg-primary) !important;
  border-color: var(--accent) !important;
  color: var(--accent) !important;
  box-shadow: none !important;
}

/* DataTable search input */
.dataTables_filter input {
  border: 1px solid var(--border-color) !important;
  border-radius: var(--radius) !important;
  padding: 6px 12px !important;
  font-size: 14px !important;
  background: var(--bg-primary) !important;
  color: var(--text-primary) !important;
  outline: none !important;
  margin-left: 6px !important;
}

.dataTables_filter input:focus {
  border-color: var(--accent) !important;
  box-shadow: 0 0 0 3px var(--accent-tint) !important;
}

.dataTables_filter label {
  font-size: 14px;
  color: var(--text-secondary);
  display: flex;
  align-items: center;
}

/* DataTable info text */
.dataTables_info {
  font-size: 14px;
  color: var(--text-muted);
  padding-top: 10px !important;
}

/* DataTable Bootstrap integration: pagination is <ul class="pagination"> > <li class="paginate_button"> > <a>
   The <li> containers are 22px inline elements — styling them creates blank border boxes.
   Target the <a> inside each <li> instead. */
.dataTables_paginate .paginate_button {
  border: none !important;
  background: transparent !important;
  padding: 0 !important;
  margin: 0 !important;
}

.dataTables_paginate .pagination > li > a,
.dataTables_paginate .pagination > li > span {
  border-radius: var(--radius-sm) !important;
  padding: 5px 11px !important;
  font-size: 13px !important;
  border: 1px solid var(--border-color) !important;
  color: var(--text-secondary) !important;
  background: var(--bg-primary) !important;
  transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease;
  margin: 0 1px !important;
  box-shadow: none !important;
}

.dataTables_paginate .pagination > li > a:hover,
.dataTables_paginate .pagination > li > span:hover {
  background: var(--accent-tint) !important;
  border-color: var(--accent) !important;
  color: var(--accent) !important;
  box-shadow: none !important;
}

.dataTables_paginate .pagination > li.active > a,
.dataTables_paginate .pagination > li.active > a:hover {
  background: var(--accent) !important;
  border-color: var(--accent) !important;
  color: #fff !important;
  font-weight: 600;
  box-shadow: none !important;
}

.dataTables_paginate .pagination > li.disabled > a,
.dataTables_paginate .pagination > li.disabled > a:hover {
  color: var(--text-muted) !important;
  background: transparent !important;
  border-color: var(--border-color) !important;
  cursor: default;
}

/* --- Dashboard info-box hover lift --- */
.info-box {
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.info-box:hover {
  transform: translateY(-3px);
  box-shadow: var(--shadow-md) !important;
}

/* --- League badge pills in table --- */
.label.btn-primary,
td .label-primary,
td .label.label-primary {
  background: color-mix(in srgb, var(--accent) 12%, transparent) !important;
  color: var(--accent) !important;
  border: 1px solid color-mix(in srgb, var(--accent) 30%, transparent) !important;
  border-radius: 20px !important;
  padding: 4px 10px !important;
  font-size: 12px !important;
  font-weight: 500 !important;
  display: inline-block;
}

/* --- Table action icon buttons (only links containing an icon, not text links) --- */
.table td > a:has(.fa),
.table td > a:has(.ion) {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  border-radius: var(--radius-sm);
  transition: background 0.15s ease, color 0.15s ease;
  color: var(--text-muted);
  font-size: 15px;
}

.table td > a:has(.fa):hover,
.table td > a:has(.ion):hover {
  color: var(--accent);
  background: var(--accent-tint);
}

.table td > a[id*="delete"]:hover,
.table td > a[title*="Eliminar"]:hover,
.table td > a[title*="eliminar"]:hover {
  color: var(--error) !important;
  background: color-mix(in srgb, var(--error) 10%, transparent) !important;
}

/* --- Sidebar search form (dark bg context) --- */
.sidebar-form .input-group .form-control {
  background: rgba(255, 255, 255, 0.07) !important;
  border: 1px solid rgba(255, 255, 255, 0.1) !important;
  border-right: none !important;
  color: rgba(255, 255, 255, 0.75) !important;
  font-size: 14px;
  padding: 8px 12px;
  height: auto;
}

.sidebar-form .input-group .form-control::placeholder {
  color: rgba(255, 255, 255, 0.3) !important;
}

.sidebar-form .input-group-btn > .btn {
  background: rgba(255, 255, 255, 0.07) !important;
  border: 1px solid rgba(255, 255, 255, 0.1) !important;
  border-left: none !important;
  color: rgba(255, 255, 255, 0.45) !important;
  padding: 8px 12px;
  height: auto;
}

.sidebar-form .input-group-btn > .btn:hover {
  background: rgba(255, 255, 255, 0.12) !important;
  color: rgba(255, 255, 255, 0.8) !important;
}

/* --- Sidebar user panel: refined --- */
.user-panel {
  padding: 14px 16px 14px 20px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.06);
  margin-bottom: 4px;
}

.user-panel .image img {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  border: 2px solid color-mix(in srgb, var(--accent) 35%, transparent);
  object-fit: cover;
}

.user-panel .info p {
  font-size: 13px;
  font-weight: 600;
  margin-bottom: 2px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 132px;
}

.user-panel .info a {
  font-size: 12px;
  color: rgba(255, 255, 255, 0.38) !important;
}

.user-panel .info a .text-success {
  font-size: 9px !important;
}

/* --- Sidebar active treeview submenu --- */
.sidebar-menu .treeview-menu > li.active > a {
  color: var(--accent) !important;
  font-weight: 500;
}

/* --- Active treeview chevron animation --- */
.sidebar-menu > li.menu-open > a > .fa-angle-left {
  transform: rotate(-90deg);
}

.sidebar-menu > li > a > .fa-angle-left {
  transition: transform 0.2s ease;
  opacity: 0.4;
}

/* --- Navbar: league name in center --- */
.navbar-custom-menu.pull-left > .nav > .messages-menu > a > span {
  font-weight: 500;
  color: var(--text-secondary);
  letter-spacing: -0.1px;
}

/* --- Box header separator line --- */
.box-header {
  border-bottom: 1px solid var(--border-color);
  padding-bottom: 12px;
  margin-bottom: 0;
}

.box-body {
  padding-top: 16px;
}

/* --- Input group prepend labels (form with addon pattern) --- */
.input-group .input-group-addon {
  min-width: 110px;
  text-align: right;
  font-weight: 500;
  color: var(--text-secondary);
  background: var(--bg-secondary);
  border-color: var(--border-color);
}

/* --- Better form-group spacing in forms --- */
.form-horizontal .form-group,
.form-group {
  margin-bottom: 14px;
}

/* --- Small box (dashboard variant) --- */
.small-box:hover {
  transform: translateY(-2px);
  box-shadow: var(--shadow-md);
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}

/* --- Tighter card top row when used as action bar --- */
.content > .row:first-child {
  margin-bottom: 4px;
}

/* --- Scrollable table wrapper --- */
.box-body[style*="overflow"] {
  border-radius: 0 0 var(--radius) var(--radius);
}

/* --- Logo mini in sidebar top --- */
.main-sidebar .logo-mini img {
  width: 30px;
  height: 30px;
  border-radius: 6px;
}

/* --- Table inline action buttons (btn-xs in liga/jornada tables) --- */
.table td > a.btn.btn-xs {
  border-radius: var(--radius-sm);
  border-color: var(--border-color);
  color: var(--text-secondary);
  background: var(--bg-secondary);
  font-size: 13px;
  font-weight: 500;
  transition: all 0.15s ease;
  box-shadow: none;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 4px 10px;
  /* reset the icon-only flex sizing from earlier rule */
  width: auto;
  height: auto;
}

.table td > a.btn.btn-xs:hover {
  background: var(--accent-tint);
  border-color: var(--accent);
  color: var(--accent);
  box-shadow: none;
}

.table td > a.btn.btn-xs[id*="delete"]:hover,
.table td > a.btn.btn-xs[title*="Eliminar"]:hover,
.table td > a.btn.btn-xs[title*="eliminar"]:hover {
  background: color-mix(in srgb, var(--error) 8%, transparent) !important;
  border-color: var(--error) !important;
  color: var(--error) !important;
}

/* Status display badges (not-clickable btn-xs used as status indicators) */
.table td > a.btn.btn-xs:has(.fa-check),
.table td > a.btn.btn-xs:has(.fa-close) {
  pointer-events: none;
  cursor: default;
  border-radius: 20px;
  padding: 3px 10px;
  font-size: 12px;
}

.table td > a.btn.btn-xs:has(.fa-check) {
  color: var(--success);
  background: color-mix(in srgb, var(--success) 8%, transparent);
  border-color: color-mix(in srgb, var(--success) 25%, transparent);
}

.table td > a.btn.btn-xs:has(.fa-close) {
  color: var(--text-muted);
  background: var(--bg-secondary);
  border-color: var(--border-color);
}

/* Drag handle column */
.table td [class*="fa-bars"],
.table td .fa-bars {
  color: var(--text-muted);
  opacity: 0.4;
  cursor: move;
}

/* --- Bootstrap Switch — use accent palette --- */
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary,
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success,
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info {
  background-color: var(--accent) !important;
  border-color: var(--accent) !important;
}

.bootstrap-switch.bootstrap-switch-wrapper {
  border-radius: 20px !important;
  border-color: var(--border-color) !important;
}

.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default {
  background-color: var(--bg-secondary) !important;
  color: var(--text-muted) !important;
}

.bootstrap-switch .bootstrap-switch-handle-on {
  border-radius: 18px 0 0 18px;
  font-size: 13px;
  font-weight: 600;
  color: #fff;
}

.bootstrap-switch .bootstrap-switch-handle-off {
  border-radius: 0 18px 18px 0;
  font-size: 13px;
  font-weight: 500;
}


/* --- DataTable search label alignment (player panel / other contexts) --- */
.dataTables_filter {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  margin-bottom: 8px;
}

.dataTables_filter label {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 0;
  font-size: 14px;
  color: var(--text-secondary);
  font-weight: 400;
}

/* --- dataTables_wrapper top toolbar --- */
.dataTables_wrapper > .row:first-child {
  display: flex;
  align-items: center;
  margin-bottom: 8px;
}

/* ============================================================
   Mobile Optimizations — ≤767px
   ============================================================ */

@media (max-width: 767px) {

  /* --- Base: smaller font, tighter rhythm --- */
  body {
    font-size: 15px;
  }

  /* --- Content header --- */
  .content-header {
    padding: 10px 14px 0;
  }

  .content-header > h1 > small {
    font-size: 12px;
  }

  /* --- Content padding --- */
  .content {
    padding: 10px 14px 16px;
  }

  /* --- Action toolbar: 2-column grid on mobile --- */
  .content > .row:has(.box.no-border .btn-block) {
    display: grid !important;
    grid-template-columns: 1fr 1fr;
    gap: 8px;
    margin: 0 0 8px !important;
  }

  .content > .row:has(.box.no-border .btn-block)::before,
  .content > .row:has(.box.no-border .btn-block)::after {
    display: none !important;
  }

  .content > .row:has(.box.no-border .btn-block) > [class*="col-"] {
    width: auto !important;
    float: none !important;
    padding: 0 !important;
    margin-bottom: 0;
  }

  /* --- Action buttons: make slightly smaller --- */
  .box.no-border .btn-block {
    font-size: 14px;
    padding: 10px 14px;
  }

  /* --- Table: force horizontal scroll instead of overflow/clip --- */
  .box-body {
    overflow-x: auto !important;
    -webkit-overflow-scrolling: touch;
  }

  .dataTables_wrapper {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }

  /* Prevent table cells from wrapping so the scroll is useful */
  .table > thead > tr > th,
  .table > tbody > tr > td {
    white-space: nowrap;
    font-size: 14px;
    padding: 10px 8px;
  }

  /* --- DataTable controls: stack filter below buttons --- */
  .dataTables_wrapper .dataTables_filter {
    justify-content: flex-start;
    margin-top: 6px;
  }

  div.dt-buttons {
    flex-wrap: wrap;
  }

  div.dt-buttons .btn-default[class*="buttons-"] {
    font-size: 12px !important;
    padding: 4px 10px !important;
  }

  /* --- Pagination: wrap cleanly and center --- */
  .dataTables_paginate {
    display: flex !important;
    flex-wrap: wrap;
    justify-content: center;
    gap: 2px;
    padding-top: 10px;
  }

  .dataTables_paginate .paginate_button {
    padding: 4px 9px !important;
    font-size: 13px !important;
    margin: 1px !important;
    min-width: 34px;
    text-align: center;
    border-radius: var(--radius-sm) !important;
  }

  /* --- Dashboard info boxes: 2 per row --- */
  .info-box {
    min-height: 64px;
    margin-bottom: 10px;
  }

  .info-box-icon {
    width: 56px;
    height: 64px;
    line-height: 64px;
    font-size: 26px;
  }

  .info-box-text {
    font-size: 12px;
  }

  .info-box-content {
    padding: 8px 12px;
  }

  /* --- Form inputs: min 16px prevents iOS auto-zoom --- */
  .form-control,
  .login-box-body .form-control {
    font-size: 16px !important;
  }

  /* --- Input group labels: narrower on mobile --- */
  .input-group .input-group-addon {
    min-width: 80px;
  }

  /* --- Login box: contained on mobile --- */
  .login-box {
    width: auto !important;
    max-width: 100% !important;
    margin: 12px !important;
    border-radius: var(--radius-lg) !important;
  }

  .login-box-body {
    padding: 16px 20px 20px;
  }

  .login-logo {
    padding: 20px 20px 0;
  }

  .login-logo img {
    max-height: 52px;
  }

  .login-box-msg {
    font-size: 1.25rem;
    margin-bottom: 16px;
  }

  /* --- Modals: edge-to-edge on mobile --- */
  .modal-dialog {
    margin: 8px;
  }

  /* --- Box header title: smaller --- */
  .box-header .box-title {
    font-size: 15px;
  }

  /* --- Footer: compact --- */
  .main-footer {
    font-size: 12px;
    padding: 10px 14px;
    text-align: center;
  }

  /* --- Breadcrumb: smaller --- */
  .breadcrumb > li {
    font-size: 12px;
  }

  /* --- Sidebar: full height in overlay mode --- */
  .main-sidebar {
    min-height: 100vh !important;
    z-index: 9999;
  }

  /* --- Navbar user info: hide broken image text on mobile --- */
  .navbar-custom-menu > .nav > li.user > a > .user-image,
  .navbar-custom-menu img.user-image {
    display: none !important;
  }

  /* --- Table inline btn-xs: smaller gap --- */
  .table td > a.btn.btn-xs {
    padding: 3px 7px;
    font-size: 12px;
  }

  /* --- Dashboard stat boxes: CSS Grid 2-column --- */
  .content > .row:has(.info-box) {
    display: grid !important;
    grid-template-columns: 1fr 1fr;
    gap: 8px;
    padding: 0 4px;
  }

  /* Bootstrap .row::before clearfix becomes a ghost grid item — kill it */
  .content > .row:has(.info-box)::before,
  .content > .row:has(.info-box)::after {
    display: none !important;
  }

  .content > .row:has(.info-box) > [class*="col-"] {
    width: auto !important;
    float: none !important;
    padding: 0 !important;
    margin-bottom: 0;
  }

  /* Allow stat label text to wrap instead of truncating */
  .info-box-text {
    white-space: normal !important;
    overflow: visible !important;
    text-overflow: unset !important;
    font-size: 11px !important;
    line-height: 1.3;
  }

  /* --- Pagination: single scrollable row --- */
  .dataTables_paginate {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    padding-bottom: 6px;
  }

  .dataTables_paginate .pagination {
    display: flex !important;
    flex-wrap: nowrap !important;
    width: max-content;
    margin: 0;
  }

  .dataTables_paginate .pagination > li > a,
  .dataTables_paginate .pagination > li > span {
    padding: 5px 9px !important;
    font-size: 13px !important;
  }

  /* --- DataTable horizontal scroll: remove AdminLTE box clipping --- */
  /* AdminLTE sets overflow:hidden on .box which blocks overflow-x:auto on .box-body */
  .box {
    overflow: visible !important;
  }

  /* DataTables sets inline width="" on <th> elements, squeezing columns to fit the viewport.
     min-width: max-content on <th> prevents columns from being narrower than their header text.
     Wide-column tables (arbitro, jugador) will overflow and become scrollable.
     Narrow-column tables (equipo, liga) still fit without a scrollbar. */
  table.dataTable thead th {
    min-width: max-content !important;
    white-space: nowrap !important;
  }
  table.dataTable tbody td {
    white-space: nowrap !important;
  }

  /* Ensure the wrapper and box-body are the scroll containers */
  .dataTables_wrapper {
    overflow-x: auto !important;
    -webkit-overflow-scrolling: touch;
  }

  .box-body {
    overflow-x: auto !important;
    -webkit-overflow-scrolling: touch;
  }

  /* --- Mobile header: stack logo above navbar (reset desktop flex) --- */
  .main-header {
    display: block;
  }

  /* On mobile, AdminLTE shows .logo as a separate bar above the navbar.
     Style it to match the navbar so both bars read as one cohesive header. */
  .main-header .logo {
    height: 50px;
    line-height: 50px;
    padding: 0 12px;
    border-bottom: none !important;
  }

  .main-header .logo .logo-lg {
    font-size: 16px;
    font-weight: 700;
    letter-spacing: 0.02em;
    color: var(--accent) !important;
  }

  .main-header .navbar {
    border-top: none !important;
    min-height: 50px;
  }

  /* Truncate long client names in the navbar to prevent overflow */
  .navbar-custom-menu.pull-left .nav li a span {
    max-width: calc(100vw - 120px);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    display: inline-block;
    vertical-align: middle;
  }

  /* --- Input groups: reduce addon width on mobile so select has more room --- */
  .input-group .input-group-addon {
    min-width: 70px !important;
    font-size: 12px;
    padding: 8px 8px;
  }

  /* --- cpanel registro: tab content panes are 50% wide on desktop; go full-width on mobile --- */
  [id="tab"],
  [id="tab4"] {
    width: 100% !important;
  }

  /* --- Nav-tabs: allow tabs to wrap on narrow screens so they don't overflow --- */
  .nav-tabs {
    flex-wrap: wrap !important;
    display: flex !important;
  }

  .nav-tabs > li {
    float: none !important;
  }

  .nav-tabs > li > a {
    padding: 8px 12px !important;
    font-size: 13px !important;
  }
}

/* ============================================================
   Root login-family pages (reset, registro, mylogin, sign-up)
   ============================================================ */

/* Pull-right submit buttons inside login-box-body: make full width */
.login-box-body input[type="submit"].btn,
.login-box-body button.btn:not(.close) {
  display: block !important;
  width: 100% !important;
  margin-top: 10px;
}

/* sign-up / registro forms: card-style wrapper */
.login-page .login-box {
  max-width: 700px;
}

/* sign-up wide-form Continuar button: fill its col container */
.login-page .box-body .btn.btn-primary {
  display: block !important;
  width: 100% !important;
}

/* sign-up inline domain suffix label */
.login-page .input-group-addon {
  background: var(--bg-secondary);
  border-color: var(--border-color);
  color: var(--text-secondary);
  font-size: 15px;
}

/* registro/mylogin form labels */
.login-box-body .control-label,
.login-box-body label {
  font-size: 15px;
  font-weight: 500;
  color: var(--text-secondary);
}

/* ============================================================
   cpanel — factory administration panel
   ============================================================ */

/* Sidebar full height in cpanel (skin-blue).
   AdminLTE uses position:absolute by default; force fixed so height is viewport-based. */
body.skin-blue .main-sidebar {
  position: fixed !important;
  top: 0 !important;
  left: 0 !important;
  height: 100vh !important;
  overflow-y: auto !important;
  overflow-x: hidden !important;
}

body.skin-blue .wrapper {
  min-height: 100vh !important;
}

/* Status badges in clients table */
.cp-badge {
  display: inline-block;
  padding: 3px 10px;
  border-radius: 20px;
  font-size: 13px;
  font-weight: 500;
  white-space: nowrap;
}

.cp-badge-activo {
  background: color-mix(in srgb, var(--success) 10%, transparent);
  color: var(--success);
  border: 1px solid color-mix(in srgb, var(--success) 30%, transparent);
}

.cp-badge-inactivo {
  background: var(--bg-secondary);
  color: var(--text-muted);
  border: 1px solid var(--border-color);
}

.cp-badge-moroso {
  background: color-mix(in srgb, var(--error) 10%, transparent);
  color: var(--error);
  border: 1px solid color-mix(in srgb, var(--error) 30%, transparent);
}

.cp-badge-suspendido {
  background: color-mix(in srgb, var(--warning) 10%, transparent);
  color: var(--warning);
  border: 1px solid color-mix(in srgb, var(--warning) 30%, transparent);
}

/* btn-mini (Bootstrap 2 legacy) used for table chip buttons */
.btn.btn-mini {
  border-radius: var(--radius-sm) !important;
  font-size: 13px !important;
  padding: 3px 10px !important;
  background: var(--bg-secondary) !important;
  border: 1px solid var(--border-color) !important;
  color: var(--text-secondary) !important;
  box-shadow: none !important;
  transition: all 0.15s ease;
  font-family: var(--font-family) !important;
}

.btn.btn-mini:hover {
  background: var(--accent-tint) !important;
  border-color: var(--accent) !important;
  color: var(--accent) !important;
}

/* Detalles button in last column — accent outline */
#tabla-ligas td:last-child .btn.btn-mini {
  background: transparent !important;
  border-color: var(--accent) !important;
  color: var(--accent) !important;
}

#tabla-ligas td:last-child .btn.btn-mini:hover {
  background: var(--accent-tint) !important;
}

/* ============================================================
   btn-info — override Bootstrap blue with coral
   ============================================================ */
.btn-info {
  background-color: var(--accent) !important;
  border-color: var(--accent-hover) !important;
  color: #fff !important;
  box-shadow: none !important;
}

.btn-info:hover,
.btn-info:focus,
.btn-info:active,
.btn-info.active {
  background-color: var(--accent-hover) !important;
  border-color: var(--accent-active) !important;
  color: #fff !important;
}

/* ============================================================
   FullCalendar v2 button theming
   ============================================================ */
.fc-button {
  background: var(--bg-secondary) !important;
  background-image: none !important;
  border: 1px solid var(--border-color) !important;
  color: var(--text-secondary) !important;
  box-shadow: none !important;
  text-shadow: none !important;
  border-radius: var(--radius-sm) !important;
  font-family: var(--font-family) !important;
  font-size: 13px !important;
  transition: all 0.15s ease;
  padding: 6px 12px !important;
  line-height: 1.4 !important;
}

.fc-button:hover {
  background: var(--accent-tint) !important;
  border-color: var(--accent) !important;
  color: var(--accent) !important;
}

.fc-button.fc-state-active,
.fc-button.fc-state-down {
  background: var(--accent) !important;
  border-color: var(--accent-hover) !important;
  color: #fff !important;
}

.fc-button.fc-state-disabled {
  opacity: 0.5 !important;
  cursor: not-allowed !important;
}

/* Today cell highlight */
.fc-today {
  background: var(--accent-tint) !important;
}

/* ============================================================
   Legacy Bootstrap 2 pages — .content as direct wrapper child
   These pages use <div class="content"> instead of .content-wrapper,
   so they miss AdminLTE's 230px sidebar offset.
   The > combinator ensures section.content inside .content-wrapper is untouched.
   ============================================================ */
.wrapper > .content {
  margin-left: 230px !important;
  padding: 10px 15px;
  min-height: calc(100vh - 101px);
}

/* ============================================================
   Tablet tweaks — 768px–991px
   ============================================================ */

@media (max-width: 991px) and (min-width: 768px) {
  body {
    font-size: 16px;
  }

}

/* --- Reduced Motion --- */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    transition-duration: 150ms !important;
    animation-duration: 150ms !important;
  }
  .info-box:hover,
  .small-box:hover,
  .btn:active {
    transform: none !important;
  }
}



