/* ============================================================
   ONE WAY · DASHBOARD SKIN v3 (2026-05-20)
   Targets dashboard-pro.css `.pro-*` classes EXACTAMENTE.
   Override agresivo: neutraliza los gradients tutifruti y alinea
   con paleta Geist indigo del inicio.

   Carga DESPUÉS de style.css, oneway-navbar.css, dashboard-pro.css,
   oneway-overrides.css (el último link en <head>).
   ============================================================ */

/* ─── TOKEN REWRITE: kill the rainbow at the source ─── */
:root {
  /* Original (kept for reference):
     --pro-grad-1: blue→purple→pink   ← welcome banner
     --pro-grad-warn: amber→red       ← Warns btn
     --pro-grad-strike: red→darkred
     --pro-grad-bl: black→darkred
     --pro-grad-clan: green→blue      ← Clanes btn
     Below: neutralize to semantic surface accents. */

  --pro-grad-1: linear-gradient(135deg, rgba(91, 140, 255, 0.14) 0%, rgba(111, 224, 255, 0.06) 100%) !important;
  --pro-grad-2: linear-gradient(135deg, rgba(91, 140, 255, 0.18) 0%, rgba(91, 140, 255, 0.06) 100%) !important;
  --pro-grad-warn:    linear-gradient(135deg, rgba(245, 158, 11, 0.12), rgba(245, 158, 11, 0.04)) !important;
  --pro-grad-strike:  linear-gradient(135deg, rgba(239, 68, 68, 0.12), rgba(239, 68, 68, 0.04)) !important;
  --pro-grad-bl:      linear-gradient(135deg, rgba(239, 68, 68, 0.14), rgba(239, 68, 68, 0.04)) !important;
  --pro-grad-clan:    linear-gradient(135deg, rgba(34, 197, 94, 0.12), rgba(34, 197, 94, 0.04)) !important;
  --pro-grad-success: linear-gradient(135deg, rgba(34, 197, 94, 0.14), rgba(34, 197, 94, 0.04)) !important;

  /* Token primarios (forzar paleta inicio aunque alguien los redefina) */
  --primary: #5B8CFF !important;
  --primary-rgb: 91, 140, 255 !important;
  --secondary: #6FE0FF !important;
  --accent: #6FE0FF !important;
}

/* ─── WELCOME BANNER (pro-hero) ─── */
.pro-hero {
  background: linear-gradient(135deg, rgba(91, 140, 255, 0.12) 0%, rgba(111, 224, 255, 0.04) 70%) !important;
  border: 1px solid rgba(91, 140, 255, 0.18) !important;
  border-radius: 18px !important;
  box-shadow: 0 8px 24px -10px rgba(91, 140, 255, 0.20) !important;
}
.pro-hero::before, .pro-hero::after {
  /* Si tiene blob morado/pink decorativo, escóndelo */
  display: none !important;
}
.pro-hero-title {
  background: linear-gradient(135deg, #FFFFFF 0%, #C7D2FE 100%) !important;
  -webkit-background-clip: text !important;
  background-clip: text !important;
  color: transparent !important;
  font-weight: 800 !important;
  letter-spacing: -0.03em !important;
}
.pro-hero-sub, .pro-hero-subtitle, .pro-hero-description {
  color: rgba(255, 255, 255, 0.75) !important;
}

/* Welcome pills (GLOBAL ADMIN / @user / ID / BANNER ACTIVO) */
.pro-hero-pill, .pro-pill, .pro-badge,
.pro-hero [class*="pill"], .pro-hero [class*="badge"] {
  background: rgba(255, 255, 255, 0.06) !important;
  border: 1px solid rgba(255, 255, 255, 0.10) !important;
  color: rgba(255, 255, 255, 0.85) !important;
  border-radius: 999px !important;
  padding: 5px 12px !important;
  font-size: 12px !important;
  font-weight: 600 !important;
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  letter-spacing: 0.02em !important;
  text-transform: none !important;
}

/* ─── STAT CARDS (608 / 380 / 0 / 0 / 13 / 44) ─── */
.pro-stat, .pro-stat-card {
  background: rgba(15, 17, 22, 0.78) !important;
  border: 1px solid rgba(255, 255, 255, 0.07) !important;
  border-radius: 16px !important;
  padding: 20px !important;
  backdrop-filter: blur(8px) !important;
  -webkit-backdrop-filter: blur(8px) !important;
  transition: border-color .2s ease, transform .2s ease, box-shadow .2s ease !important;
  box-shadow: none !important;
}
.pro-stat:hover, .pro-stat-card:hover {
  border-color: rgba(255, 255, 255, 0.14) !important;
  transform: translateY(-2px) !important;
  box-shadow: 0 12px 32px -12px rgba(0, 0, 0, 0.5) !important;
}
.pro-stat::before, .pro-stat-card::before,
.pro-stat::after, .pro-stat-card::after {
  display: none !important;
}
.pro-stat-icon {
  width: 42px !important;
  height: 42px !important;
  border-radius: 12px !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  font-size: 18px !important;
  background: rgba(91, 140, 255, 0.10) !important;
  border: 1px solid rgba(91, 140, 255, 0.18) !important;
  color: #6FE0FF !important;
  margin-bottom: 12px !important;
  background-image: none !important;
}
.pro-stat-value, .pro-stat .value, .pro-stat-card .value {
  background: linear-gradient(135deg, #FFFFFF 0%, #C7D2FE 100%) !important;
  -webkit-background-clip: text !important;
  background-clip: text !important;
  color: transparent !important;
  font-size: 32px !important;
  font-weight: 800 !important;
  letter-spacing: -0.03em !important;
  font-variant-numeric: tabular-nums !important;
}
.pro-stat-label, .pro-stat .label {
  font-size: 11px !important;
  font-weight: 700 !important;
  letter-spacing: 0.10em !important;
  text-transform: uppercase !important;
  color: rgba(255, 255, 255, 0.50) !important;
  margin-top: 4px !important;
}
.pro-stat-sub, .pro-stat-hint, .pro-stat .sub {
  font-size: 12.5px !important;
  color: rgba(255, 255, 255, 0.55) !important;
  font-weight: 500 !important;
  margin-top: 4px !important;
}

/* ─── ACCIONES RÁPIDAS — kill the rainbow ─── */
.pro-actions, .pro-actions-card, .pro-quick-actions {
  background: rgba(15, 17, 22, 0.78) !important;
  border: 1px solid rgba(255, 255, 255, 0.07) !important;
  border-radius: 18px !important;
  padding: 20px !important;
}
.pro-actions-title, .pro-actions h2, .pro-actions h3 {
  font-size: 16px !important;
  font-weight: 700 !important;
  letter-spacing: -0.01em !important;
  color: #F4F5F7 !important;
  margin-bottom: 14px !important;
}

/* The big colored buttons → uniform surface + semantic left border */
.pro-btn, .pro-action-btn,
.pro-btn-warn, .pro-btn-strike, .pro-btn-bl, .pro-btn-clan,
.pro-btn-search, .pro-btn-users, .pro-btn-primary {
  background: rgba(26, 30, 40, 0.85) !important;
  background-image: none !important;
  border: 1px solid rgba(255, 255, 255, 0.08) !important;
  border-left: 3px solid rgba(255, 255, 255, 0.15) !important;
  color: #F4F5F7 !important;
  border-radius: 12px !important;
  padding: 14px 18px !important;
  font-weight: 600 !important;
  font-size: 14px !important;
  letter-spacing: -0.005em !important;
  text-shadow: none !important;
  box-shadow: none !important;
  transition: all .15s ease !important;
  display: flex !important;
  align-items: center !important;
  justify-content: flex-start !important;
  gap: 12px !important;
  text-align: left !important;
  cursor: pointer !important;
}
.pro-btn:hover, .pro-action-btn:hover,
.pro-btn-warn:hover, .pro-btn-strike:hover, .pro-btn-bl:hover, .pro-btn-clan:hover,
.pro-btn-search:hover, .pro-btn-users:hover, .pro-btn-primary:hover {
  background: rgba(35, 40, 52, 0.95) !important;
  border-color: rgba(255, 255, 255, 0.14) !important;
  transform: translateY(-1px) !important;
  box-shadow: 0 8px 18px -8px rgba(0, 0, 0, 0.5) !important;
}

/* Semantic left-border per action */
.pro-btn-warn   { border-left-color: #F59E0B !important; }
.pro-btn-strike { border-left-color: #F59E0B !important; }
.pro-btn-bl, .pro-btn-blacklist { border-left-color: #EF4444 !important; }
.pro-btn-clan, .pro-btn-clanes  { border-left-color: #22C55E !important; }
.pro-btn-search, .pro-btn-users { border-left-color: #5B8CFF !important; }

/* Icons inside the action buttons */
.pro-btn > span:first-child, .pro-action-btn > span:first-child,
.pro-btn-warn > span:first-child, .pro-btn-strike > span:first-child,
.pro-btn-bl > span:first-child, .pro-btn-clan > span:first-child,
.pro-btn-search > span:first-child, .pro-btn-users > span:first-child {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  font-size: 16px !important;
  width: 24px !important;
  height: 24px !important;
  flex-shrink: 0 !important;
}

/* ─── ANY ELEMENT using a `--pro-grad-*` var → kill the rainbow ─── */
/* Catches dynamically-built elements that inline the gradient via var() */
[style*="--pro-grad-1"],
[style*="--pro-grad-warn"],
[style*="--pro-grad-strike"],
[style*="--pro-grad-bl"],
[style*="--pro-grad-clan"] {
  /* var() ya está reescrita arriba, esto está acá por seguridad */
}

/* Kill inline tutifruti gradients */
[style*="linear-gradient(135deg, #5865F2"][style*="#EC4899"],
[style*="linear-gradient(135deg, #F59E0B"][style*="#EF4444"],
[style*="linear-gradient(135deg, #EF4444"][style*="#B91C1C"],
[style*="linear-gradient(135deg, #18181B"][style*="#7F1D1D"],
[style*="linear-gradient(135deg, #10B981"][style*="#5865F2"] {
  background: var(--surface-2, rgba(26, 30, 40, 0.85)) !important;
  background-image: none !important;
}

/* ─── SIDEBAR / PANEL ─── */
.sidebar, aside.sidebar, .pro-sidebar, [class*="dashboard-sidebar"] {
  background: rgba(15, 17, 22, 0.86) !important;
  border-right: 1px solid rgba(255, 255, 255, 0.07) !important;
  backdrop-filter: blur(16px) saturate(140%) !important;
  -webkit-backdrop-filter: blur(16px) saturate(140%) !important;
  padding: 20px 16px !important;
}

.sidebar h2, .sidebar h3, .sidebar-title, .pro-sidebar-title {
  font-size: 11px !important;
  font-weight: 700 !important;
  letter-spacing: 0.12em !important;
  text-transform: uppercase !important;
  color: rgba(255, 255, 255, 0.45) !important;
  margin-bottom: 16px !important;
}

/* Profile row in sidebar (ijezko + power icon) */
.sidebar-profile, .sidebar .profile-row, .sidebar .user-row {
  display: flex !important;
  align-items: center !important;
  gap: 12px !important;
  padding: 12px !important;
  background: rgba(26, 30, 40, 0.8) !important;
  border: 1px solid rgba(255, 255, 255, 0.07) !important;
  border-radius: 14px !important;
  transition: border-color .2s ease !important;
}
.sidebar-profile:hover { border-color: rgba(91, 140, 255, 0.25) !important; }
.sidebar-profile-name, .sidebar .username {
  font-weight: 600 !important;
  color: #F4F5F7 !important;
  font-size: 14px !important;
}
.sidebar-profile-role, .sidebar .role {
  font-size: 11.5px !important;
  color: rgba(255, 255, 255, 0.50) !important;
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  letter-spacing: 0.02em !important;
}

/* Power off button */
.sidebar .logout-btn, .sidebar [class*="logout"], .sidebar [class*="power"] {
  background: transparent !important;
  border: 1px solid rgba(255, 255, 255, 0.08) !important;
  color: rgba(255, 255, 255, 0.55) !important;
  border-radius: 10px !important;
  padding: 8px 10px !important;
  font-size: 14px !important;
  transition: all .15s ease !important;
}
.sidebar .logout-btn:hover, .sidebar [class*="logout"]:hover {
  background: rgba(239, 68, 68, 0.14) !important;
  color: #EF4444 !important;
  border-color: rgba(239, 68, 68, 0.3) !important;
}

/* Server selector slots (sidebar primary, topbar fallback) */
#sidebar-guild-selector,
#guild-selector-header, #ow-guild-selector-slot,
.guild-selector, [class*="server-select"], [class*="guild-select"] {
  position: relative !important;
}
#sidebar-guild-selector {
  margin: 4px 0 12px !important;
  padding: 0 4px !important;
}
#sidebar-guild-selector #btn-guild-sel {
  width: 100% !important;
  min-width: 0 !important;
}
#sidebar-guild-selector #guild-dropdown-menu {
  /* Anchor inside sidebar, fit within width — was overflowing on the right
     so the right corner-radius was cut off. */
  left: 0 !important;
  right: 0 !important;
  width: auto !important;
  min-width: 100% !important;
  max-width: none !important;
  top: calc(100% + 6px) !important;
  transform-origin: top left !important;
  box-sizing: border-box !important;
}
#guild-selector-header #btn-guild-sel,
#ow-guild-selector-slot #btn-guild-sel,
#sidebar-guild-selector #btn-guild-sel {
  background: rgba(26, 30, 40, 0.85) !important;
  border: 1px solid rgba(255, 255, 255, 0.10) !important;
  border-radius: 12px !important;
  padding: 9px 14px !important;
  color: #F4F5F7 !important;
  cursor: pointer !important;
  transition: all .15s ease !important;
  min-width: 200px !important;
}
#guild-selector-header #btn-guild-sel:hover,
#ow-guild-selector-slot #btn-guild-sel:hover,
#sidebar-guild-selector #btn-guild-sel:hover {
  border-color: rgba(91, 140, 255, 0.45) !important;
  background: rgba(35, 40, 52, 0.95) !important;
}
#guild-dropdown-menu {
  background: rgba(15, 17, 22, 0.96) !important;
  border: 1px solid rgba(255, 255, 255, 0.10) !important;
  backdrop-filter: blur(18px) saturate(160%) !important;
  -webkit-backdrop-filter: blur(18px) saturate(160%) !important;
}
.guild-drop-item:hover {
  background: rgba(91, 140, 255, 0.10) !important;
}
.sidebar.collapsed #sidebar-guild-selector { display: none !important; }

/* ─── Sidebar nav items ─── */
/* Hard override: oneway-navbar.css ships a global `nav { display: none !important }`
   killer rule (intended for legacy navbars). We bump specificity to win.            */
.sidebar-nav,
aside.sidebar .sidebar-nav,
.sidebar > .sidebar-nav,
nav.sidebar-nav,
#sidebar #sidebar-nav { display: flex !important; flex-direction: column !important; gap: 2px !important; padding: 8px 0 !important; }
/* SIDEBAR-FLAT-V13 (2026-05-30): fuente ÚNICA del estado EXPANDIDO (este archivo
   carga último → manda). Items PLANOS: fondo transparente, sin borde, sin sombra.
   hover = fondo accent muy sutil + texto claro. active = fondo accent sutil +
   barra accent a la izquierda + ícono/texto accent. Accent = --primary (indigo),
   no el viejo #5B8CFF. Sin cápsulas, look Linear/Vercel. */
.sidebar-nav .nav-item,
.sidebar .nav-item {
  position: relative !important;
  display: flex !important;
  align-items: center !important;
  gap: 12px !important;
  padding: 10px 14px !important;
  border-radius: 10px !important;
  color: var(--text-muted) !important;
  font-size: 13.5px !important;
  font-weight: 500 !important;
  cursor: pointer !important;
  /* SIDEBAR-ANIM-V16 (2026-05-31): width CONCRETO (no flex `auto`) para que el
     item pueda INTERPOLAR su ancho al colapsar (auto↔44px NO es animable; un
     length↔length sí). box-sizing border-box → calc(100% - 16px) deja 8px de
     margin a cada lado. Y la transición incluye la geometría (width/margin/
     padding/border-radius) en ESTE estado expandido — que es el "from" del
     colapso —, no solo en .collapsed, para que el encogimiento sea fluido y
     sincronizado con el rail. */
  width: calc(100% - 16px) !important;
  box-sizing: border-box !important;
  margin: 2px 8px !important;
  transition: background-color .16s ease, color .16s ease,
              width .34s cubic-bezier(.4,0,.2,1),
              margin .34s cubic-bezier(.4,0,.2,1),
              padding .34s cubic-bezier(.4,0,.2,1),
              border-radius .34s cubic-bezier(.4,0,.2,1) !important;
  border: 1px solid transparent !important;
  background: transparent !important;
  box-shadow: none !important;
  transform: none !important;
}
.sidebar-nav .nav-item:hover,
.sidebar .nav-item:hover {
  background: rgba(var(--primary-rgb), 0.08) !important;
  color: var(--text-main) !important;
  border-color: transparent !important;
  box-shadow: none !important;
  transform: none !important;
}
.sidebar-nav .nav-item.active,
.sidebar .nav-item.active {
  background: rgba(var(--primary-rgb), 0.12) !important;
  color: var(--text-main) !important;
  border-color: transparent !important;
  box-shadow: none !important;
  font-weight: 600 !important;
}
.sidebar-nav .nav-item.active::before,
.sidebar .nav-item.active::before {
  content: '' !important;
  position: absolute !important;
  left: 0 !important;
  top: 50% !important;
  transform: translateY(-50%) !important;
  height: 20px !important;
  width: 3px !important;
  background: var(--primary) !important;
  border-radius: 0 3px 3px 0 !important;
}
.sidebar-nav .nav-item-icon,
.sidebar .nav-item-icon {
  font-size: 16px !important;
  display: inline-flex !important;
  width: 22px !important;
  flex-shrink: 0 !important;
  justify-content: center !important;
}
/* SIDEBAR-FLAT-V13: ícono accent en el item activo (expandido). */
.sidebar-nav .nav-item.active .nav-item-icon,
.sidebar .nav-item.active .nav-item-icon {
  color: var(--primary) !important;
  filter: none !important;
}
.sidebar-nav .nav-item-text,
.sidebar .nav-item-text {
  flex: 1 !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
}
.sidebar.collapsed .nav-item-text,
.sidebar.collapsed .sidebar-user-info,
.sidebar.collapsed .sidebar-brand { display: none !important; }

/* ════════════════════════════════════════════════════════════════════
   SIDEBAR-COLLAPSED-V14 (2026-05-30): FUENTE ÚNICA del layout colapsado en
   DESKTOP. Este archivo carga último → manda; lo envolvemos en
   @media (min-width:1025px) para NO tocar el drawer mobile (≤1024). Antes
   había una regla huérfana `.sidebar.collapsed .nav-item{padding:10px}` que
   peleaba con style.css (48px box) y, sin flex-shrink, los items se
   aplastaban a ~42px → "tira apretada". Acá: slot 44px cuadrado, flex-shrink:0
   (cero aplastamiento), gap parejo 6px, ícono 1.35rem centrado, hover/active
   = cuadradito accent suave + barra accent a la izquierda. Look Linear/Vercel,
   aireado y centrado. Todo transparente en reposo (correcto, NO tocar). */
@media (min-width: 1025px) {
  /* HEADER-CENTER-FIX (2026-05-31): el botón ☰/◂ del header quedaba descentrado
     (pegado a la izquierda) en colapsado. Centramos el header (solo queda el
     toggle; el brand está display:none) y forzamos el toggle a 44px centrado,
     alineado con la columna de íconos del nav (que son 44px centrados). */
  .sidebar.collapsed .sidebar-header,
  aside.sidebar.collapsed .sidebar-header {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    padding: 14px 0 10px !important;
    width: 100% !important;
    box-sizing: border-box !important;
  }
  .sidebar.collapsed .sidebar-toggle,
  aside.sidebar.collapsed .sidebar-toggle,
  .sidebar.collapsed #sidebar-collapse-btn-sidebar,
  aside.sidebar.collapsed #sidebar-collapse-btn-sidebar {
    margin: 0 auto !important;
    width: 44px !important;
    height: 44px !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
  }

  /* Ancho cómodo y nav respirado. Selectores con id/aside para ganarle al
     `82px !important` de style.css y al `#sidebar #sidebar-nav` de este archivo. */
  .sidebar.collapsed,
  aside.sidebar.collapsed,
  #sidebar.collapsed,
  body .sidebar.collapsed,
  body aside.sidebar.collapsed {
    width: 80px !important;
    /* SIDEBAR-ANIM-V16 (2026-05-31): NO clavar min/max-width a 80px. Eran
       `80px !important` SIN transición → al colapsar clampeaban el rail a 80
       de GOLPE en el frame 1, anulando la transición `width .34s` del <aside>
       (que SÍ disparaba, pero el valor usado quedaba pisado por max-width:80).
       Resultado: el rail (y con él los items) SALTABA en vez de deslizar.
       Como no se puede transicionar min/max desde auto/none, la solución es
       quitar el clamp y dejar que `width:80px` (length, transicionable) defina
       el ancho. El <aside> es flex-child de .dashboard sin flex-grow, así que
       width:80px lo asienta exacto en reposo sin clamp. */
    min-width: 0 !important;
    max-width: none !important;
    padding-left: 0 !important;
    padding-right: 0 !important;
    transition: width .34s cubic-bezier(.4,0,.2,1) !important;
  }
  .sidebar.collapsed .sidebar-nav,
  .sidebar.collapsed #sidebar-nav,
  #sidebar.collapsed #sidebar-nav,
  aside.sidebar.collapsed #sidebar-nav {
    display: flex !important;
    flex-direction: column !important;
    align-items: center !important;
    justify-content: flex-start !important;
    gap: 6px !important;
    padding: 12px 0 !important;
    width: 100% !important;
    box-sizing: border-box !important;
    /* SIDEBAR-SCROLL-FIX (2026-05-31): un owner ve ~24 items → NO entran sin
       scroll. El nav toma el espacio (flex:1, min-height:0) y SCROLLEA vertical;
       el perfil/user de abajo queda FIJO (hermano del nav, flex-shrink:0).
       overflow-y:auto + overflow-x:clip (no 'visible', que forzaría ambos a
       auto). El tooltip flotante se sacrifica a favor de scroll+perfil; el
       data-label sigue como title nativo. */
    flex: 1 1 auto !important;
    min-height: 0 !important;
    overflow-y: auto !important;
    overflow-x: clip !important;
    scrollbar-width: none !important;
  }
  .sidebar.collapsed .sidebar-nav::-webkit-scrollbar { width: 0 !important; display: none !important; }
  /* Contenedor sidebar NO scrollea él mismo (lo hace el nav); header+user fijos */
  .sidebar.collapsed,
  aside.sidebar.collapsed { overflow: hidden !important; }
  /* Perfil/user SIEMPRE visible abajo (no se desborda con el scroll del nav) */
  .sidebar.collapsed .sidebar-user,
  aside.sidebar.collapsed .sidebar-user {
    flex-shrink: 0 !important;
    margin-top: auto !important;
  }

  /* Slot 44px cuadrado, centrado, sin aplastarse */
  .sidebar.collapsed .nav-item,
  .sidebar.collapsed .sidebar-nav .nav-item,
  aside.sidebar.collapsed .sidebar-nav .nav-item {
    position: relative !important;
    display: flex !important;
    flex: 0 0 auto !important;
    flex-shrink: 0 !important;
    align-items: center !important;
    justify-content: center !important;
    width: 44px !important;
    /* SIDEBAR-ANIM-V16 (2026-05-31): min/max-width SIN clavar a 44px (eran
       `44px !important` sin transición → clampeaban el item a 44 en el frame 1
       y anulaban la transición `width .34s`, igual que pasaba con el rail).
       Con min:0/max:none, `width:44px` (length) interpola desde el
       calc(100% - 16px) del estado expandido → el item ENCOGE parejo con el
       rail. margin CONCRETO `3px 18px` (no `0 auto`: auto NO es animable) →
       18+44+18 = 80px, centra el slot en el rail y permite transición. */
    min-width: 0 !important;
    max-width: none !important;
    height: 44px !important;
    min-height: 44px !important;
    margin: 3px 18px !important;
    padding: 0 !important;
    gap: 0 !important;
    border-radius: 13px !important;
    border: 1px solid transparent !important;
    background: transparent !important;
    box-shadow: none !important;
    transform: none !important;
    overflow: visible !important;
    /* Transicionar TAMBIÉN la geometría (width/margin/padding/radius) para que
       al colapsar/expandir el item ENCOJA suave en vez de saltar. */
    transition: background-color .18s ease, color .18s ease,
                width .34s cubic-bezier(.4,0,.2,1),
                margin .34s cubic-bezier(.4,0,.2,1),
                padding .34s cubic-bezier(.4,0,.2,1),
                border-radius .34s cubic-bezier(.4,0,.2,1) !important;
  }

  /* HOVER: cuadradito accent muy sutil detrás del ícono */
  .sidebar.collapsed .nav-item:hover,
  .sidebar.collapsed .sidebar-nav .nav-item:hover,
  aside.sidebar.collapsed .sidebar-nav .nav-item:hover {
    background: rgba(var(--primary-rgb), 0.10) !important;
    border-color: transparent !important;
    box-shadow: none !important;
    transform: none !important;
  }

  /* ACTIVE: accent sutil + barra a la izquierda (::before) */
  .sidebar.collapsed .nav-item.active,
  .sidebar.collapsed .sidebar-nav .nav-item.active,
  aside.sidebar.collapsed .sidebar-nav .nav-item.active {
    background: rgba(var(--primary-rgb), 0.16) !important;
    border-color: transparent !important;
    box-shadow: none !important;
    transform: none !important;
  }

  /* Barra accent del activo — anclada al borde IZQUIERDO del slot, centrada vert. */
  .sidebar.collapsed .nav-item.active::before,
  .sidebar.collapsed .sidebar-nav .nav-item.active::before {
    content: '' !important;
    position: absolute !important;
    left: -15px !important;        /* slot inset 18px → barra a ~3px del borde del rail */
    top: 50% !important;
    transform: translateY(-50%) !important;
    width: 3px !important;
    height: 22px !important;
    border-radius: 0 3px 3px 0 !important;
    background: var(--primary) !important;
    box-shadow: none !important;
  }

  /* Ícono centrado y de buen tamaño */
  .sidebar.collapsed .nav-item-icon,
  .sidebar.collapsed .sidebar-nav .nav-item-icon {
    font-size: 1.35rem !important;
    width: 24px !important;
    min-width: 24px !important;
    height: 24px !important;
    margin: 0 !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    line-height: 1 !important;
    color: var(--text-muted) !important;
    transition: color .18s ease !important;
  }
  .sidebar.collapsed .nav-item:hover .nav-item-icon { color: var(--text-main) !important; }
  .sidebar.collapsed .nav-item.active .nav-item-icon { color: var(--primary) !important; filter: none !important; }
}

/* Sidebar header (PANEL + toggle) */
.sidebar-header {
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  padding: 4px 8px 14px !important;
  margin-bottom: 6px !important;
  border-bottom: 1px solid rgba(255, 255, 255, 0.06) !important;
}
.sidebar-brand {
  font-size: 11px !important;
  font-weight: 700 !important;
  letter-spacing: 0.18em !important;
  text-transform: uppercase !important;
  color: rgba(255, 255, 255, 0.45) !important;
}
.sidebar-toggle {
  background: transparent !important;
  border: 1px solid rgba(255, 255, 255, 0.10) !important;
  color: rgba(255, 255, 255, 0.65) !important;
  border-radius: 8px !important;
  padding: 4px 8px !important;
  font-size: 13px !important;
  cursor: pointer !important;
}
.sidebar-toggle:hover { border-color: rgba(91, 140, 255, 0.35) !important; color: #F4F5F7 !important; }

/* Sidebar user row (avatar + name + logout) */
.sidebar-user {
  display: flex !important;
  align-items: center !important;
  gap: 10px !important;
  padding: 10px 12px !important;
  margin-top: auto !important;
  flex-shrink: 0 !important; /* SIDEBAR-SCROLL-FIX: con ~24 items, el perfil NO se comprime */
  background: rgba(26, 30, 40, 0.85) !important;
  border: 1px solid rgba(255, 255, 255, 0.07) !important;
  border-radius: 12px !important;
}
.sidebar-user-avatar {
  width: 36px !important;
  height: 36px !important;
  border-radius: 10px !important;
  object-fit: cover !important;
  flex-shrink: 0 !important;
}
.sidebar-user-info { flex: 1 !important; min-width: 0 !important; }
.sidebar-user-name {
  font-size: 13px !important;
  font-weight: 600 !important;
  color: #F4F5F7 !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
}
.sidebar-user-role {
  font-size: 10.5px !important;
  color: rgba(255, 255, 255, 0.50) !important;
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  letter-spacing: 0.04em !important;
  text-transform: uppercase !important;
}
#btn-logout {
  background: transparent !important;
  border: 1px solid rgba(255, 255, 255, 0.10) !important;
  color: rgba(255, 255, 255, 0.55) !important;
  border-radius: 8px !important;
  padding: 5px 9px !important;
  cursor: pointer !important;
}
#btn-logout:hover {
  background: rgba(239, 68, 68, 0.14) !important;
  color: #EF4444 !important;
  border-color: rgba(239, 68, 68, 0.30) !important;
}

/* ─── Top navbar — keep slightly transparent ─── */
.top-navbar {
  background: rgba(10, 12, 16, 0.78) !important;
  backdrop-filter: blur(20px) saturate(160%) !important;
  -webkit-backdrop-filter: blur(20px) saturate(160%) !important;
  border-bottom: 1px solid rgba(255, 255, 255, 0.07) !important;
}

/* ─── Reciente / Activity card ─── */
.pro-recent, .pro-recent-card, .pro-activity, [class*="moderation-recent"] {
  background: rgba(15, 17, 22, 0.78) !important;
  border: 1px solid rgba(255, 255, 255, 0.07) !important;
  border-radius: 18px !important;
  backdrop-filter: blur(8px) !important;
}

/* ─── Generic buttons cleanup ─── */
.btn, .btn-pop, .btn-ios, .widget-btn {
  background-image: none !important;
  border-radius: 10px !important;
  font-weight: 600 !important;
  transition: all .15s ease !important;
}
.btn-primary, button.btn-primary {
  background: #FFFFFF !important;
  background-image: none !important;
  color: #08090C !important;
  border: 1px solid #FFFFFF !important;
}
.btn-primary:hover {
  filter: none !important;
  transform: translateY(-1px);
  box-shadow: 0 8px 24px -10px rgba(0, 0, 0, 0.5);
}
.btn-ghost, button.btn-ghost {
  background: transparent !important;
  border: 1px solid rgba(255, 255, 255, 0.14) !important;
  color: #F4F5F7 !important;
}
.btn-ghost:hover {
  background: rgba(255, 255, 255, 0.06) !important;
  border-color: rgba(255, 255, 255, 0.20) !important;
}

/* ─── Aurora bg (subtle, no pink) ─── */
.bg-aurora {
  background:
    radial-gradient(900px 600px at 12% 8%, rgba(91, 140, 255, 0.08), transparent 60%),
    radial-gradient(700px 500px at 88% 92%, rgba(111, 224, 255, 0.05), transparent 65%) !important;
  opacity: 0.85 !important;
}

/* ─── Stagger animations on stat cards ─── */
@media (prefers-reduced-motion: no-preference) {
  .pro-stat, .pro-stat-card {
    animation: skinPop .55s cubic-bezier(.2,.7,.2,1) both;
  }
  .pro-stat:nth-child(1), .pro-stat-card:nth-child(1) { animation-delay: 0s; }
  .pro-stat:nth-child(2), .pro-stat-card:nth-child(2) { animation-delay: .06s; }
  .pro-stat:nth-child(3), .pro-stat-card:nth-child(3) { animation-delay: .12s; }
  .pro-stat:nth-child(4), .pro-stat-card:nth-child(4) { animation-delay: .18s; }
  .pro-stat:nth-child(5), .pro-stat-card:nth-child(5) { animation-delay: .24s; }
  .pro-stat:nth-child(6), .pro-stat-card:nth-child(6) { animation-delay: .30s; }
}
@keyframes skinPop {
  from { opacity: 0; transform: translateY(10px) scale(.98); }
  to   { opacity: 1; transform: translateY(0) scale(1); }
}
[data-perf="lite"] .pro-stat, [data-perf="lite"] .pro-stat-card { animation: none !important; }

/* ─── Mobile ─── */
@media (max-width: 768px) {
  .pro-hero { padding: 20px !important; }
  .pro-hero-title { font-size: 28px !important; }
  .pro-stat-value { font-size: 26px !important; }
}

/* End dashboard-skin.css v3 */

/* ════════════════════════════════════════════════════════════
   MOBILE RESPONSIVE (2026-05-20)
   Sidebar collapses to hamburger, modals adapt, cards stack.
   ════════════════════════════════════════════════════════════ */

/* Hamburger button — show only on small screens */
@media (max-width: 920px) {
  /* Sidebar becomes a slide-in drawer */
  .sidebar, aside.sidebar {
    position: fixed !important;
    top: 0 !important;
    left: 0 !important;
    bottom: 0 !important;
    width: 280px !important;
    transform: translateX(-100%) !important;
    transition: transform .25s cubic-bezier(.2,.8,.2,1) !important;
    z-index: 9000 !important;
    box-shadow: 0 0 60px rgba(0,0,0,0.6) !important;
    overflow-y: auto !important;
  }
  .sidebar.show {
    transform: translateX(0) !important;
  }
  .sidebar.show::after {
    content: '';
    position: fixed;
    top: 0;
    left: 280px;
    right: 0;
    bottom: 0;
    background: rgba(2,6,14,0.65);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    z-index: -1;
  }

  /* Main content takes full width */
  .main-content, #main-content {
    margin-left: 0 !important;
    padding: 12px !important;
  }

  /* Top navbar adjustments */
  .top-navbar, #top-navbar {
    padding: 8px 12px !important;
  }
  .nav-links {
    display: none !important; /* hidden on mobile, accessed via shared navbar hamburger */
  }
  .nav-brand-name {
    font-size: 1.05rem !important;
  }

  /* Welcome banner / pro-hero on mobile */
  .pro-hero {
    padding: 18px 14px !important;
    border-radius: 14px !important;
  }
  .pro-hero-title {
    font-size: 1.55rem !important;
  }
  .pro-hero-sub {
    font-size: 0.85rem !important;
  }

  /* Stat cards: 2 columns on mobile */
  .pro-stats, [class*="pro-stat-grid"], [class*="stats-grid"] {
    grid-template-columns: repeat(2, 1fr) !important;
    gap: 8px !important;
  }
  .pro-stat, .pro-stat-card {
    padding: 14px 12px !important;
  }
  .pro-stat-value {
    font-size: 1.5rem !important;
  }
  .pro-stat-icon {
    width: 32px !important;
    height: 32px !important;
    font-size: 14px !important;
  }

  /* Acciones rapidas: stack */
  .pro-actions, .pro-actions-card {
    padding: 14px !important;
  }
  .pro-actions [class*="grid"], .pro-actions [class*="row"] {
    grid-template-columns: 1fr 1fr !important;
    gap: 8px !important;
  }

  /* Cards & grids: single column */
  .pro-mod-grid {
    grid-template-columns: 1fr !important;
    gap: 12px !important;
  }
  .pro-mod-card {
    border-radius: 14px !important;
  }

  /* Tournament dashboard cards: single column too */
  .pro-mod-card .pro-mod-body {
    padding: 12px 16px !important;
  }
  .pro-mod-card .pro-mod-card-header {
    padding: 12px 16px !important;
  }

  /* Modals: fill screen with margin */
  #tn-modal-backdrop {
    padding: 12px !important;
    align-items: flex-end !important;  /* Slide up from bottom */
  }
  #tn-modal {
    max-width: 100% !important;
    max-height: 92vh !important;
    border-radius: 18px 18px 12px 12px !important;
  }

  /* Tournament create modal: stack rows */
  .tn-field-row {
    grid-template-columns: 1fr !important;
  }
  .tn-form-h h2, .tn-edit-h h2 {
    font-size: 1.25rem !important;
  }
  .tn-edit-summary {
    grid-template-columns: 1fr 1fr !important;
  }
  .tn-edit-summary .tn-edit-s:nth-child(3) {
    grid-column: span 2;
  }

  /* Match arena (record result): stack vertically */
  .tn-arena-grid {
    grid-template-columns: 1fr !important;
    gap: 10px !important;
  }
  .tn-arena-vs {
    padding-top: 0 !important;
    flex-direction: row !important;
    justify-content: center !important;
    gap: 12px !important;
  }
  .tn-arena-vs-dot {
    display: none !important;
  }

  /* Member picker: bigger touch targets */
  .tn-mp-row {
    padding: 10px 12px !important;
  }
  .tn-mp-row img {
    width: 42px !important;
    height: 42px !important;
  }

  /* Sidebar guild selector */
  #sidebar-guild-selector #btn-guild-sel {
    min-width: 0 !important;
  }
}

/* Even smaller phones */
@media (max-width: 480px) {
  .pro-stats, [class*="pro-stat-grid"], [class*="stats-grid"] {
    grid-template-columns: 1fr !important;
  }
  .pro-actions [class*="grid"], .pro-actions [class*="row"] {
    grid-template-columns: 1fr !important;
  }
  .pro-hero-title {
    font-size: 1.3rem !important;
  }
  .nav-brand-name {
    display: none !important;
  }
}

/* Touch device improvements */
@media (hover: none) and (pointer: coarse) {
  /* Bigger touch targets for interactive elements */
  .nav-item, .pro-btn, .tn-mp-row, .tn-cs-opt, .guild-drop-item {
    min-height: 44px !important;
  }
  /* Disable hover transforms on touch */
  .nav-item:hover, .pro-mod-card:hover, .pro-stat:hover, .pro-btn:hover {
    transform: none !important;
  }
}

/* ════════════════════════════════════════════════════════════════════
   DASHBOARD-MOBILE-V13 (2026-05-23): Drawer + FAB hasta tablets ≤ 1024px
   ════════════════════════════════════════════════════════════════════
   El layout viejo cae en `@media (768-1024) { sidebar { width: 80px } }`
   en dashboard-pro.css, dejando un strip cramped sin labels y sin manera
   de expandir (el shared oneway-navbar oculta el .top-navbar dashboard,
   y la regla FAB solo se aplica < 768). Acá extendemos el patrón mobile
   a todo viewport ≤ 1024: sidebar off-canvas como drawer, hamburger
   promocionado a FAB, backdrop overlay, main-content ocupa todo el ancho.
   ════════════════════════════════════════════════════════════════════ */
@media (max-width: 1024px) {
    /* Sidebar como drawer off-canvas */
    .sidebar,
    aside.sidebar,
    #sidebar {
        position: fixed !important;
        left: 0 !important;
        /* DRAWER-NAV-OFFSET 2026-06-11: arranca bajo el navbar fijo (72px) para
           que la cabecera del drawer ('Panel' + colapsar) no quede tapada. */
        top: var(--ow-nav-height, 72px) !important;
        bottom: 0 !important;
        height: calc(100vh - var(--ow-nav-height, 72px)) !important;
        width: min(300px, 86vw) !important;
        min-width: 0 !important;
        max-width: 86vw !important;
        transform: translateX(-100%);
        transition: transform 0.32s cubic-bezier(0.2, 0.8, 0.2, 1);
        z-index: 9500 !important;
        box-shadow: 4px 0 30px rgba(0, 0, 0, 0.55);
        overflow-y: auto;
        padding-left: 0 !important;
        padding-right: 0 !important;
    }

    .sidebar.show,
    aside.sidebar.show,
    #sidebar.show {
        transform: translateX(0) !important;
    }

    /* Anular el strip cramped de 80px: en mobile/tablet el sidebar es drawer */
    .sidebar.collapsed,
    aside.sidebar.collapsed,
    #sidebar.collapsed,
    body .sidebar.collapsed,
    body aside.sidebar.collapsed {
        width: min(300px, 86vw) !important;
        min-width: 0 !important;
        max-width: 86vw !important;
        padding-left: 0 !important;
        padding-right: 0 !important;
        overflow-y: auto !important;
    }

    .sidebar.collapsed .sidebar-brand,
    .sidebar.collapsed .sidebar-user-info,
    .sidebar.collapsed .nav-section-label {
        display: block !important;
    }

    .sidebar.collapsed .sidebar-header {
        justify-content: space-between !important;
        padding: 16px 18px !important;
    }

    .sidebar.collapsed .nav-item,
    .sidebar.collapsed .sidebar-nav .nav-item,
    aside.sidebar.collapsed .sidebar-nav .nav-item {
        width: auto !important;
        height: auto !important;
        min-height: 44px !important;
        padding: 10px 14px !important;
        margin: 2px 10px !important;
        font-size: 0.95rem !important;
        color: var(--text-main) !important;
        justify-content: flex-start !important;
        gap: 12px !important;
        border-radius: 10px !important;
    }

    .sidebar.collapsed .nav-item-icon {
        font-size: 1.2rem !important;
        margin: 0 !important;
    }

    /* Esconder tooltips ::after data-label en mobile (no aplican en drawer) */
    .sidebar.collapsed .nav-item[data-label]::after {
        display: none !important;
    }

    /* Anular la regla de dashboard-pro.css que mete justify-content:center */
    .nav-item,
    .sidebar .nav-item,
    .sidebar-nav .nav-item {
        justify-content: flex-start !important;
    }

    .nav-item-icon {
        margin: 0 12px 0 0 !important;
        font-size: 1.2rem !important;
    }

    /* Main content full-width, padding-top para clear del shared navbar */
    .main-content,
    main.main-content,
    #main-content {
        margin-left: 0 !important;
        padding-top: 70px !important;
    }

    /* Backdrop dimming cuando el drawer está abierto. Cubre todo lo que no
       sea el sidebar (que está fixed a la izquierda). z-index:9499 = bajo
       el sidebar (9500) pero arriba del content (1). */
    .sidebar.show::after,
    aside.sidebar.show::after,
    #sidebar.show::after {
        content: '';
        position: fixed !important;
        top: 0 !important;
        left: min(300px, 86vw) !important;
        right: 0 !important;
        bottom: 0 !important;
        width: auto !important;
        height: auto !important;
        background: rgba(2, 6, 14, 0.6) !important;
        backdrop-filter: blur(4px);
        -webkit-backdrop-filter: blur(4px);
        z-index: -1 !important;
        pointer-events: none;
        animation: ow-dash-fade-in 0.22s ease;
    }

    @keyframes ow-dash-fade-in {
        from { opacity: 0; }
        to { opacity: 1; }
    }

    /* Aplastar el .top-navbar del dashboard (el shared navbar ya está visible)
       pero MANTENER el #sidebar-collapse-btn alcanzable para promocionarlo a FAB. */
    body #top-navbar,
    html body #top-navbar {
        display: block !important;
        position: fixed !important;
        top: 0 !important;
        left: 0 !important;
        width: 0 !important;
        height: 0 !important;
        overflow: visible !important;
        padding: 0 !important;
        margin: 0 !important;
        background: transparent !important;
        border: none !important;
        box-shadow: none !important;
        z-index: 9700 !important;
        pointer-events: none;
    }

    body #top-navbar > *:not(.nav-left) { display: none !important; }
    body #top-navbar .nav-left { display: contents !important; }
    body #top-navbar .nav-left > *:not(#sidebar-collapse-btn) { display: none !important; }

    /* Hamburger → FAB anclado bottom-right (thumb-friendly) */
    body #sidebar-collapse-btn,
    body .top-navbar #sidebar-collapse-btn,
    body .top-navbar .nav-left #sidebar-collapse-btn,
    html body .top-navbar .nav-left #sidebar-collapse-btn {
        display: flex !important;
        position: fixed !important;
        bottom: max(18px, env(safe-area-inset-bottom, 18px)) !important;
        right: max(18px, env(safe-area-inset-right, 18px)) !important;
        top: auto !important;
        left: auto !important;
        z-index: 9800 !important;
        width: 54px !important;
        height: 54px !important;
        min-width: 54px !important;
        min-height: 54px !important;
        border-radius: 50% !important;
        background: linear-gradient(135deg, var(--primary, #5865F2), #4f46e5) !important;
        color: #fff !important;
        font-size: 1.5rem !important;
        font-weight: 700 !important;
        line-height: 1 !important;
        border: 1px solid rgba(255, 255, 255, 0.22) !important;
        box-shadow:
            0 12px 32px rgba(88, 101, 242, 0.55),
            0 0 0 1px rgba(88, 101, 242, 0.35) inset !important;
        align-items: center !important;
        justify-content: center !important;
        padding: 0 !important;
        margin: 0 !important;
        cursor: pointer !important;
        pointer-events: auto !important;
        transition: transform 0.18s ease, box-shadow 0.2s ease !important;
        animation: ow-dash-fade-in 0.3s ease;
    }

    body #sidebar-collapse-btn:active {
        transform: scale(0.94) !important;
    }
}

/* Phones angostos: sidebar ancho casi full + tipografía un poco menor */
@media (max-width: 480px) {
    .sidebar,
    .sidebar.collapsed,
    aside.sidebar,
    #sidebar,
    aside.sidebar.collapsed,
    #sidebar.collapsed {
        width: 88vw !important;
        max-width: 88vw !important;
    }

    .sidebar.show::after,
    aside.sidebar.show::after,
    #sidebar.show::after {
        left: 88vw !important;
    }

    /* Centro de Control title smaller en phones */
    .content-header h2,
    #page-title {
        font-size: 1.5rem !important;
        line-height: 1.2 !important;
    }

    .content-body {
        padding: 12px !important;
    }

    .main-content,
    #main-content {
        padding-top: 64px !important;
    }
}

/* ════════════════════════════════════════════════════════════════════
   DASHBOARD-MOBILE-V14 (2026-05-23): Real backdrop element +
   shared-hamburger hook. El backdrop pseudo-elemento de V13 no era
   clickable; este es un <div> real que cierra el drawer al tap.
   ════════════════════════════════════════════════════════════════════ */
.ow-dash-backdrop {
    position: fixed;
    inset: 0;
    background: rgba(2, 6, 14, 0.62);
    backdrop-filter: blur(4px);
    -webkit-backdrop-filter: blur(4px);
    z-index: 9400;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.22s ease;
}
.ow-dash-backdrop.open {
    opacity: 1;
    pointer-events: auto;
}
@media (min-width: 1025px) {
    .ow-dash-backdrop, .ow-dash-backdrop.open {
        display: none !important;
        opacity: 0 !important;
        pointer-events: none !important;
    }
}

/* Sidebar siempre arriba del backdrop */
.sidebar.show,
aside.sidebar.show,
#sidebar.show {
    z-index: 9500 !important;
}

/* Esconder el pseudo-elemento ::after backdrop de V13 — usamos real <div> ahora */
.sidebar.show::after,
aside.sidebar.show::after,
#sidebar.show::after {
    display: none !important;
    content: none !important;
}

/* Body scroll-lock cuando el drawer está abierto */
body.ow-dash-sidebar-open {
    overflow: hidden !important;
}


/* ════════════════════════════════════════════════════════════════════
   TOPBAR-V16 (2026-05-23): gap entre flag, theme toggle y user pill.
   El moon button quedaba pisando la bandera ES en viewport chico.
   ════════════════════════════════════════════════════════════════════ */
.nav-right,
.top-navbar .nav-right,
nav.top-navbar .nav-right {
    gap: 12px !important;
    align-items: center !important;
    flex-wrap: nowrap !important;
}
#lang-selector-header,
#guild-selector-header {
    display: inline-flex !important;
    align-items: center !important;
    flex-shrink: 0 !important;
}
.nav-right #theme-toggle,
.top-navbar #theme-toggle {
    margin: 0 !important;
    flex-shrink: 0 !important;
    width: 38px !important;
    height: 38px !important;
    padding: 0 !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    border-radius: 50% !important;
    background: rgba(255,255,255,0.06) !important;
    border: 1px solid rgba(255,255,255,0.08) !important;
}
.nav-right #theme-toggle:hover {
    background: rgba(88,101,242,0.18) !important;
}
[data-theme="light"] .nav-right #theme-toggle {
    background: rgba(0,0,0,0.04) !important;
    border-color: rgba(0,0,0,0.08) !important;
}
[data-theme="light"] .nav-right #theme-toggle:hover {
    background: rgba(88,101,242,0.12) !important;
}

/* ow-navbar (shared) — mismo problema con sus chips */
.ow-navbar .ow-lang-dropdown,
.ow-navbar .ow-theme-btn,
.ow-navbar .ow-user-widget,
.ow-navbar .ow-hamburger {
    margin-left: 8px !important;
}
.ow-navbar .ow-lang-dropdown + .ow-theme-btn,
.ow-navbar .ow-theme-btn + .ow-user-widget {
    margin-left: 10px !important;
}

@media (max-width: 1024px) {
    .nav-right, .top-navbar .nav-right { gap: 10px !important; }
    .ow-navbar .ow-lang-dropdown,
    .ow-navbar .ow-theme-btn,
    .ow-navbar .ow-user-widget { margin-left: 10px !important; }
}
@media (max-width: 480px) {
    .nav-right, .top-navbar .nav-right { gap: 8px !important; }
    /* On phones: hide lang dropdown label, just show flag */
    .ow-navbar .ow-lang-label { display: none !important; }
}


/* ════════════════════════════════════════════════════════════════════
   MOBILE-V17 (2026-05-23):
   - Topbar lang/theme/user shrink properly at ≤600 (hide chevrons, name)
   - Sidebar user pill (avatar+name+logout) stops overflowing in drawer
   ════════════════════════════════════════════════════════════════════ */

/* ow-navbar (shared) — narrow tablets ≤900px */
@media (max-width: 900px) {
    .ow-navbar { padding: 0 12px !important; }
    .ow-lang-toggle { padding: 6px 10px !important; gap: 5px !important; font-size: 12px !important; }
    .ow-user-btn { padding: 4px 10px 4px 4px !important; gap: 6px !important; font-size: 12px !important; }
    .ow-user-name { max-width: 80px !important; font-size: 12px !important; }
    .ow-theme-btn { width: 34px !important; height: 34px !important; }
    .ow-user-avatar { width: 26px !important; height: 26px !important; }
}

/* ow-navbar — phones ≤600px: hide labels keep only icons */
@media (max-width: 600px) {
    .ow-navbar { padding: 0 8px !important; gap: 0 !important; }
    .ow-lang-code { display: none !important; }
    .ow-lang-chevron { display: none !important; }
    .ow-lang-toggle { padding: 6px 8px !important; gap: 0 !important; min-width: 34px; justify-content: center; }
    .ow-user-name { display: none !important; }
    .ow-user-chevron { display: none !important; }
    .ow-user-btn { padding: 3px !important; gap: 0 !important; border-radius: 50% !important; min-width: 36px; height: 36px; justify-content: center; }
    .ow-user-avatar { width: 30px !important; height: 30px !important; }
    .ow-theme-btn { width: 32px !important; height: 32px !important; }
    .ow-hamburger { transform: scale(0.92); }
    /* Tight gap between right-side items */
    .ow-navbar .ow-lang-dropdown,
    .ow-navbar .ow-theme-btn,
    .ow-navbar .ow-user-widget,
    .ow-navbar .ow-hamburger { margin-left: 6px !important; }
}

/* Phone-tiny ≤380px: ultra-compact */
@media (max-width: 380px) {
    .ow-navbar { padding: 0 6px !important; }
    .ow-nav-brand-text { display: none !important; }
    .ow-lang-toggle { padding: 5px 6px !important; min-width: 30px; }
    .ow-theme-btn { width: 30px !important; height: 30px !important; }
    .ow-user-btn { min-width: 32px; height: 32px; }
    .ow-user-avatar { width: 26px !important; height: 26px !important; }
    .ow-navbar .ow-lang-dropdown,
    .ow-navbar .ow-theme-btn,
    .ow-navbar .ow-user-widget,
    .ow-navbar .ow-hamburger { margin-left: 4px !important; }
}

/* ── Sidebar user pill (.sidebar-user) in DRAWER mode (≤1024) ──
   Base style is row with avatar + name+role + logout button. In drawer mode
   the sidebar is 280px wide; this should fit fine but role text + name +
   button can overflow if the username is long. Apply ellipsis + flex-shrink. */
@media (max-width: 1024px) {
    .sidebar.show .sidebar-user,
    .sidebar .sidebar-user {
        padding: 14px 14px !important;
        gap: 10px !important;
        align-items: center !important;
        flex-wrap: nowrap !important;
        overflow: hidden !important;
    }
    .sidebar.show .sidebar-user-info,
    .sidebar .sidebar-user-info {
        flex: 1 1 0 !important;
        min-width: 0 !important;
        overflow: hidden !important;
    }
    .sidebar.show .sidebar-user-name,
    .sidebar .sidebar-user-name {
        white-space: nowrap !important;
        overflow: hidden !important;
        text-overflow: ellipsis !important;
        max-width: 100% !important;
    }
    .sidebar.show .sidebar-user-role,
    .sidebar .sidebar-user-role {
        white-space: nowrap !important;
        overflow: hidden !important;
        text-overflow: ellipsis !important;
    }
    .sidebar.show .sidebar-user-avatar,
    .sidebar .sidebar-user-avatar {
        flex-shrink: 0 !important;
        width: 38px !important;
        height: 38px !important;
    }
    .sidebar.show #btn-logout,
    .sidebar #btn-logout {
        flex-shrink: 0 !important;
        width: 36px !important;
        height: 36px !important;
        padding: 0 !important;
        margin: 0 !important;
        border-radius: 10px !important;
        background: rgba(239, 68, 68, 0.10) !important;
        border: 1px solid rgba(239, 68, 68, 0.22) !important;
        color: rgba(239, 68, 68, 0.9) !important;
        display: inline-flex !important;
        align-items: center !important;
        justify-content: center !important;
        font-size: 1rem !important;
    }
    .sidebar.show #btn-logout:hover,
    .sidebar #btn-logout:hover {
        background: rgba(239, 68, 68, 0.22) !important;
        color: #fca5a5 !important;
    }
    /* In drawer, the V13 forced ".collapsed" override might still apply →
       ensure the sidebar-user info shows (V13 already shows it but enforce). */
    .sidebar.collapsed .sidebar-user-info,
    aside.sidebar.collapsed .sidebar-user-info {
        display: block !important;
        flex: 1 1 0 !important;
        min-width: 0 !important;
        overflow: hidden !important;
    }
}


/* ════════════════════════════════════════════════════════════════════
   TOPBAR-V18 (2026-05-23): chevrons + labels OUT at ≤900px to stop
   overlap of the theme button with lang chevron at narrow PC widths.
   Solo iconos a partir de tablet width.
   ════════════════════════════════════════════════════════════════════ */
@media (max-width: 900px) {
    /* Increase gap between right-cluster items so circular buttons don't kiss */
    .ow-navbar .ow-nav-right,
    nav.ow-navbar .ow-nav-right,
    #ow-navbar .ow-nav-right {
        gap: 10px !important;
        flex-wrap: nowrap !important;
    }
    /* Lang pill: icon only — hide ES code + chevron */
    .ow-lang-code,
    .ow-navbar .ow-lang-code { display: none !important; }
    .ow-lang-chevron,
    .ow-navbar .ow-lang-chevron { display: none !important; }
    .ow-navbar .ow-lang-toggle {
        padding: 6px 9px !important;
        gap: 0 !important;
        min-width: 38px !important;
        justify-content: center !important;
    }
    /* User pill: keep name visible (cap 90px) but hide chevron */
    .ow-navbar .ow-user-chevron { display: none !important; }
    .ow-navbar .ow-user-btn {
        padding: 4px 12px 4px 4px !important;
        gap: 6px !important;
    }
    .ow-navbar .ow-user-name {
        max-width: 90px !important;
        font-size: 12px !important;
    }
    /* Theme button stays as circle 34x34 but enforce no-shrink */
    .ow-navbar .ow-theme-btn { flex-shrink: 0 !important; }
}

@media (max-width: 600px) {
    .ow-navbar .ow-nav-right { gap: 8px !important; }
    /* User pill: avatar-only (already in V17, but make sure name+chevron stay hidden) */
    .ow-navbar .ow-user-name { display: none !important; }
    .ow-navbar .ow-user-btn {
        padding: 3px !important;
        border-radius: 50% !important;
        width: 36px;
        height: 36px;
        justify-content: center;
    }
}

@media (max-width: 380px) {
    .ow-navbar .ow-nav-right { gap: 6px !important; }
}


/* ════════════════════════════════════════════════════════════════════
   TOPBAR-V19 (2026-05-23): align ALL mobile transitions to 1024px so
   center nav, discord btn, lang/theme labels and hamburger flip TOGETHER.
   ════════════════════════════════════════════════════════════════════ */
@media (max-width: 1024px) {
    /* Hide center nav links + Discord pill */
    .ow-navbar .ow-nav-center,
    nav.ow-navbar .ow-nav-center,
    #ow-navbar .ow-nav-center { display: none !important; }
    .ow-navbar .ow-discord-btn,
    nav.ow-navbar .ow-discord-btn { display: none !important; }

    /* Force the shared navbar's hamburger ON at 1024 so user can open drawer */
    .ow-navbar .ow-hamburger,
    nav.ow-navbar .ow-hamburger,
    #ow-navbar .ow-hamburger { display: flex !important; }

    /* Right cluster: icon-only buttons + bigger gap */
    .ow-navbar .ow-nav-right { gap: 10px !important; flex-wrap: nowrap !important; }
    .ow-navbar .ow-lang-code { display: none !important; }
    .ow-navbar .ow-lang-chevron { display: none !important; }
    .ow-navbar .ow-lang-toggle {
        padding: 6px 9px !important;
        gap: 0 !important;
        min-width: 38px !important;
        justify-content: center !important;
    }
    .ow-navbar .ow-user-chevron { display: none !important; }
    .ow-navbar .ow-user-btn {
        padding: 4px 12px 4px 4px !important;
        gap: 6px !important;
    }
    .ow-navbar .ow-user-name {
        max-width: 90px !important;
        font-size: 12px !important;
    }
    .ow-navbar .ow-theme-btn { flex-shrink: 0 !important; }
}


/* ── At 1101-1300 (zoomed PC views) reduce center gap further if needed ── */
@media (max-width: 1200px) and (min-width: 1025px) {
    .ow-navbar .ow-nav-link {
        padding: 5px 7px !important;
        font-size: 12px !important;
    }
    .ow-navbar .ow-nav-center {
        max-width: calc(100vw - 360px) !important;
        overflow-x: auto !important;
        scrollbar-width: none !important;
        -ms-overflow-style: none !important;
    }
    .ow-navbar .ow-nav-center::-webkit-scrollbar { display: none !important; }
}

/* ── Brand text: hide at 1025-1200 too so we save space ── */
@media (max-width: 1200px) and (min-width: 1025px) {
    .ow-navbar .ow-nav-brand-text {
        font-size: 14px !important;
    }
}

/* ── Safety: force right cluster to never wrap/overflow ── */
.ow-navbar .ow-nav-right {
    flex-shrink: 0 !important;
    flex-wrap: nowrap !important;
}


/* ════════════════════════════════════════════════════════════════════
   TOPBAR-V21 (2026-05-23): hide center nav at ≤1280 (was 1024).
   Dashboard has its own sidebar with nav items — center nav for public
   pages (Inicio/Hubs/etc.) is redundant at narrow PC widths and was
   crowding the right-cluster. Brand + right-cluster only at ≤1280.
   ════════════════════════════════════════════════════════════════════ */
@media (max-width: 1280px) {
    /* Hide center nav links + Discord pill from shared navbar */
    .ow-navbar .ow-nav-center,
    nav.ow-navbar .ow-nav-center,
    #ow-navbar .ow-nav-center { display: none !important; }
    .ow-navbar .ow-discord-btn,
    nav.ow-navbar .ow-discord-btn { display: none !important; }

    /* HAMBURGER-BREAKPOINT-FIX 2026-06-11: NO mostrar la hamburguesa entre
       1025–1280px. El interceptor del drawer (dashboard-drawer.js) solo actúa
       ≤1024px; si la hamburguesa apareciera por encima, abriría el overlay de
       links PÚBLICOS y sacaría al usuario del panel. A 1025–1280px el sidebar
       inline ya provee la navegación, así que la hamburguesa sobra. La
       hamburguesa se muestra SOLO ≤1024px (bloque TOPBAR-V19), donde el drawer
       funciona. Ver override min-width:1025px más abajo. */

    /* Right cluster spacing */
    .ow-navbar .ow-nav-right {
        gap: 10px !important;
        flex-wrap: nowrap !important;
        flex-shrink: 0 !important;
    }
}

/* HAMBURGER-BREAKPOINT-FIX 2026-06-11: por ENCIMA de 1024px, la hamburguesa
   del navbar NUNCA debe verse en el dashboard (el sidebar inline navega, y el
   interceptor del drawer solo actúa ≤1024 → si se mostrara, abriría links
   públicos y sacaría al usuario del panel). Neutraliza oneway-navbar.css
   @media ≤1180px. min-width:1025px garantiza que NO afecta a ≤1024 (donde
   TOPBAR-V19 sí la muestra). El skin carga último → gana. */
@media (min-width: 1025px) {
    .ow-navbar .ow-hamburger,
    nav.ow-navbar .ow-hamburger,
    #ow-navbar .ow-hamburger { display: none !important; }
}

/* Lang/user labels still visible 1025-1280 (only icon-only at ≤1024) */
@media (max-width: 1024px) {
    .ow-navbar .ow-lang-code { display: none !important; }
    .ow-navbar .ow-lang-chevron { display: none !important; }
    .ow-navbar .ow-lang-toggle {
        padding: 6px 9px !important;
        gap: 0 !important;
        min-width: 38px !important;
        justify-content: center !important;
    }
    .ow-navbar .ow-user-chevron { display: none !important; }
    .ow-navbar .ow-user-btn {
        padding: 4px 12px 4px 4px !important;
        gap: 6px !important;
    }
    .ow-navbar .ow-user-name {
        max-width: 90px !important;
        font-size: 12px !important;
    }
}

@media (max-width: 600px) {
    .ow-navbar .ow-nav-right { gap: 8px !important; }
    .ow-navbar .ow-user-name { display: none !important; }
    .ow-navbar .ow-user-btn {
        padding: 3px !important;
        border-radius: 50% !important;
        width: 36px;
        height: 36px;
        justify-content: center;
    }
}

@media (max-width: 380px) {
    .ow-navbar .ow-nav-right { gap: 6px !important; }
}


/* ════════════════════════════════════════════════════════════════════
   TOPBAR-V22 (2026-05-23): hide ES label + chevron at ≤1280 (was 1024)
   so PC at 80% zoom (effective ~1280) gets only flag, no crammed text.
   ════════════════════════════════════════════════════════════════════ */
@media (max-width: 1280px) {
    .ow-navbar .ow-lang-code,
    .ow-navbar #ow-lang-code { display: none !important; }
    .ow-navbar .ow-lang-chevron { display: none !important; }
    .ow-navbar .ow-lang-toggle {
        padding: 6px 9px !important;
        gap: 0 !important;
        min-width: 38px !important;
        justify-content: center !important;
    }
    /* User pill: hide chevron at ≤1280 too (keep name) */
    .ow-navbar .ow-user-chevron { display: none !important; }
}


/* ════════════════════════════════════════════════════════════════════
   TOPBAR-V23 (2026-05-23): ALWAYS solo bandera (sin ES text, sin chevron)
   en cualquier resolución. La bandera comunica el idioma de sobra.
   El chevron del user widget sí se mantiene en desktop ≥1281 para que
   se note que tiene dropdown.
   ════════════════════════════════════════════════════════════════════ */
.ow-navbar .ow-lang-code,
.ow-navbar #ow-lang-code,
.ow-navbar .ow-lang-chevron {
    display: none !important;
}
.ow-navbar .ow-lang-toggle {
    padding: 6px 9px !important;
    gap: 0 !important;
    min-width: 38px !important;
    justify-content: center !important;
}


/* ════════════════════════════════════════════════════════════════════
   LIGHT-MODE-V24 (2026-05-23): sidebar items deben ser legibles en modo
   claro, especialmente en mobile drawer. Antes: pills oscuras con iconos
   oscuros invisibles. Ahora: bg claro, texto/iconos oscuros, contraste OK.
   ════════════════════════════════════════════════════════════════════ */

/* In mobile drawer (≤1024) FORCE labels visible — antiguo rule las ocultaba */
@media (max-width: 1024px) {
    .sidebar .nav-item-text,
    .sidebar.show .nav-item-text,
    .sidebar.collapsed .nav-item-text,
    aside.sidebar.collapsed .nav-item-text {
        display: inline-block !important;
        font-size: 0.95rem !important;
        color: inherit !important;
        overflow: hidden !important;
        text-overflow: ellipsis !important;
        white-space: nowrap !important;
    }

    /* In drawer: nav-items are full-width pills with labels, not icon-only */
    .sidebar.show .nav-item,
    .sidebar .nav-item,
    .sidebar.collapsed .nav-item,
    .sidebar.collapsed .sidebar-nav .nav-item,
    aside.sidebar.collapsed .sidebar-nav .nav-item {
        width: auto !important;
        height: auto !important;
        min-height: 44px !important;
        max-width: none !important;
        padding: 10px 14px !important;
        margin: 2px 10px !important;
        font-size: 0.95rem !important;
        justify-content: flex-start !important;
        align-items: center !important;
        gap: 12px !important;
        border-radius: 10px !important;
        overflow: visible !important;
    }
    .sidebar .nav-item-icon,
    .sidebar.show .nav-item-icon,
    .sidebar.collapsed .nav-item-icon {
        font-size: 1.2rem !important;
        margin: 0 !important;
        flex-shrink: 0 !important;
    }
}

/* ── LIGHT MODE: sidebar + nav items + icons + text ───────────────── */
[data-theme="light"] .sidebar,
[data-theme="light"] aside.sidebar,
[data-theme="light"] #sidebar {
    background: #f8fafc !important;
    border-right: 1px solid #e2e8f0 !important;
    color: #0f172a !important;
}
[data-theme="light"] .sidebar-header,
[data-theme="light"] .sidebar-brand {
    color: #0f172a !important;
}

/* SIDEBAR-FLAT-V13 (2026-05-30): light expandido — items PLANOS, transparentes,
   sin borde ni cápsula. Texto slate; hover = accent muy sutil + texto oscuro;
   active = accent sutil + texto/ícono accent + barra accent (::before global). */
[data-theme="light"] .sidebar .nav-item,
[data-theme="light"] .sidebar-nav .nav-item,
[data-theme="light"] aside.sidebar .nav-item {
    background: transparent !important;
    border: 1px solid transparent !important;
    color: #475569 !important;
    box-shadow: none !important;
    font-weight: 500 !important;
}
[data-theme="light"] .sidebar .nav-item .nav-item-icon,
[data-theme="light"] .sidebar .nav-item .nav-item-text {
    color: #475569 !important;
}
[data-theme="light"] .sidebar .nav-item:hover,
[data-theme="light"] .sidebar-nav .nav-item:hover {
    background: rgba(var(--primary-rgb), 0.08) !important;
    border-color: transparent !important;
    color: #0f172a !important;
    box-shadow: none !important;
    transform: none !important;
}
[data-theme="light"] .sidebar .nav-item:hover .nav-item-icon,
[data-theme="light"] .sidebar .nav-item:hover .nav-item-text {
    color: #0f172a !important;
}
[data-theme="light"] .sidebar .nav-item.active,
[data-theme="light"] .sidebar-nav .nav-item.active {
    background: rgba(var(--primary-rgb), 0.10) !important;
    border-color: transparent !important;
    color: #4338ca !important;
    box-shadow: none !important;
}
[data-theme="light"] .sidebar .nav-item.active .nav-item-icon,
[data-theme="light"] .sidebar .nav-item.active .nav-item-text {
    color: #4338ca !important;
    font-weight: 600 !important;
}

/* Light mode sidebar user pill at bottom */
[data-theme="light"] .sidebar-user {
    background: rgba(15, 23, 42, 0.03) !important;
    border-top: 1px solid #e2e8f0 !important;
}
[data-theme="light"] .sidebar-user-name { color: #0f172a !important; }
[data-theme="light"] .sidebar-user-role { color: #64748b !important; }
[data-theme="light"] .sidebar-user-avatar {
    border-color: rgba(88, 101, 242, 0.45) !important;
    background: #fff !important;
}
[data-theme="light"] #btn-logout {
    background: rgba(239, 68, 68, 0.08) !important;
    border: 1px solid rgba(239, 68, 68, 0.25) !important;
    color: #dc2626 !important;
}
[data-theme="light"] #btn-logout:hover {
    background: rgba(239, 68, 68, 0.18) !important;
    color: #b91c1c !important;
}

/* Light mode section labels (group titles in sidebar) */
[data-theme="light"] .nav-section-label,
[data-theme="light"] .sidebar-section-label {
    color: #64748b !important;
    font-weight: 700 !important;
    letter-spacing: 0.06em !important;
}

/* Light mode + drawer specific (≤1024 AND light) — both rules combine */
@media (max-width: 1024px) {
    [data-theme="light"] .sidebar,
    [data-theme="light"] aside.sidebar,
    [data-theme="light"] #sidebar {
        background: #ffffff !important;
        box-shadow: 4px 0 30px rgba(15, 23, 42, 0.18) !important;
    }
}


/* ════════════════════════════════════════════════════════════════════
   LIGHT-MODE-V25 (2026-05-23): MAX specificity rewrite. El gradient oscuro
   de .sidebar.collapsed .nav-item seguía pisando V24. Acá usamos prefijo
   html[data-theme="light"] + cubrimos collapsed + show + base. Moderno:
   pills blancas con sombra, gradient azul en active, sombra al hover.
   ════════════════════════════════════════════════════════════════════ */

/* SIDEBAR background: pure white con border sutil */
html[data-theme="light"] .sidebar,
html[data-theme="light"] aside.sidebar,
html[data-theme="light"] #sidebar,
[data-theme="light"] body .sidebar {
    background: #ffffff !important;
    border-right: 1px solid #e2e8f0 !important;
    color: #0f172a !important;
}

/* SIDEBAR-FLAT-V13 (2026-05-30): reemplaza el viejo LIGHT-MODE-V25 (pills blancas
   con border+sombra y active en bloque sólido). Ahora light = items PLANOS,
   transparentes, sin borde ni cápsula, en TODOS los modos (base/collapsed/show).
   hover/active = relleno accent sutil + texto accent. La barra accent la dibuja
   el ::before global. Look limpio, aireado, NADA gris-sucio. */
html[data-theme="light"] .sidebar .nav-item,
html[data-theme="light"] .sidebar-nav .nav-item,
html[data-theme="light"] .sidebar.collapsed .nav-item,
html[data-theme="light"] .sidebar.collapsed .sidebar-nav .nav-item,
html[data-theme="light"] .sidebar.show .nav-item,
html[data-theme="light"] aside.sidebar .nav-item,
html[data-theme="light"] aside.sidebar.collapsed .nav-item,
html[data-theme="light"] aside.sidebar.collapsed .sidebar-nav .nav-item,
[data-theme="light"] body aside.sidebar .nav-item {
    background: transparent !important;
    background-image: none !important;
    border: 1px solid transparent !important;
    color: #475569 !important;
    box-shadow: none !important;
    font-weight: 500 !important;
}

html[data-theme="light"] .sidebar .nav-item .nav-item-icon,
html[data-theme="light"] .sidebar .nav-item .nav-item-text,
html[data-theme="light"] aside.sidebar .nav-item .nav-item-icon,
html[data-theme="light"] aside.sidebar .nav-item .nav-item-text {
    color: #475569 !important;
}

/* HOVER: accent muy sutil, sin lift ni borde ni sombra. Selectores con el
   mismo "peso" (aside + .sidebar-nav) que la base para ganar al transparent. */
html[data-theme="light"] .sidebar .nav-item:hover,
html[data-theme="light"] .sidebar.collapsed .nav-item:hover,
html[data-theme="light"] .sidebar.collapsed .sidebar-nav .nav-item:hover,
html[data-theme="light"] aside.sidebar.collapsed .sidebar-nav .nav-item:hover,
html[data-theme="light"] aside.sidebar .nav-item:hover {
    background: rgba(var(--primary-rgb), 0.08) !important;
    background-image: none !important;
    border-color: transparent !important;
    color: #0f172a !important;
    box-shadow: none !important;
    transform: none !important;
}
html[data-theme="light"] .sidebar .nav-item:hover .nav-item-icon,
html[data-theme="light"] .sidebar .nav-item:hover .nav-item-text {
    color: #0f172a !important;
}

/* ACTIVE: relleno accent sutil + texto/ícono accent (no bloque sólido) */
html[data-theme="light"] .sidebar .nav-item.active,
html[data-theme="light"] .sidebar.collapsed .nav-item.active,
html[data-theme="light"] .sidebar.collapsed .sidebar-nav .nav-item.active,
html[data-theme="light"] aside.sidebar.collapsed .sidebar-nav .nav-item.active,
html[data-theme="light"] aside.sidebar .nav-item.active {
    background: rgba(var(--primary-rgb), 0.10) !important;
    background-image: none !important;
    border-color: transparent !important;
    color: #4338ca !important;
    box-shadow: none !important;
    transform: none !important;
}
html[data-theme="light"] .sidebar .nav-item.active .nav-item-icon,
html[data-theme="light"] .sidebar .nav-item.active .nav-item-text {
    color: #4338ca !important;
}

/* Barra accent del item activo (light, ambos modos) */
html[data-theme="light"] .sidebar .nav-item.active::before,
html[data-theme="light"] .sidebar.collapsed .nav-item.active::before {
    background: var(--primary) !important;
}

/* Sidebar header */
html[data-theme="light"] .sidebar-header,
html[data-theme="light"] .sidebar-brand,
html[data-theme="light"] .sidebar h2,
html[data-theme="light"] .sidebar h3 {
    color: #0f172a !important;
}
html[data-theme="light"] .sidebar-toggle {
    background: #f1f5f9 !important;
    border: 1px solid #e2e8f0 !important;
    color: #475569 !important;
}
html[data-theme="light"] .sidebar-toggle:hover {
    background: #e0e7ff !important;
    border-color: #c7d2fe !important;
    color: #4338ca !important;
}

/* Section labels */
html[data-theme="light"] .nav-section-label,
html[data-theme="light"] .sidebar-section-label {
    color: #64748b !important;
    font-weight: 700 !important;
    letter-spacing: 0.06em !important;
    text-transform: uppercase !important;
}

/* User pill (bottom) */
html[data-theme="light"] .sidebar-user {
    background: #f8fafc !important;
    border-top: 1px solid #e2e8f0 !important;
}
html[data-theme="light"] .sidebar-user-name { color: #0f172a !important; }
html[data-theme="light"] .sidebar-user-role { color: #64748b !important; }
html[data-theme="light"] .sidebar-user-avatar {
    border: 2px solid #c7d2fe !important;
    background: #ffffff !important;
}
html[data-theme="light"] #btn-logout {
    background: #fef2f2 !important;
    border: 1px solid #fecaca !important;
    color: #dc2626 !important;
}
html[data-theme="light"] #btn-logout:hover {
    background: #fee2e2 !important;
    border-color: #fca5a5 !important;
    color: #b91c1c !important;
}

/* Drawer-mode-specific (≤1024 + light): shadow más fuerte */
@media (max-width: 1024px) {
    html[data-theme="light"] .sidebar.show,
    html[data-theme="light"] aside.sidebar.show {
        box-shadow: 4px 0 32px rgba(15, 23, 42, 0.20) !important;
    }
}


/* ════════════════════════════════════════════════════════════════════
   MODAL-LIGHT-V26 (2026-05-23): light mode modal — el bug era que la
   CSS existente targeteaba .modal-content pero la clase REAL es
   .modal-card. Por eso card + footer quedaban oscuros. Fix completo:
   header/body/footer/close/inputs todos light coherentes.
   ════════════════════════════════════════════════════════════════════ */

/* Backdrop oscurito sutil — antes era gris translúcido (mal) */
html[data-theme="light"] .modal-overlay,
html[data-theme="light"] #modal-overlay {
    background: rgba(15, 23, 42, 0.45) !important;
    backdrop-filter: blur(8px) saturate(140%) !important;
    -webkit-backdrop-filter: blur(8px) saturate(140%) !important;
}

/* THE CARD — la clase real (no .modal-content) */
html[data-theme="light"] .modal-card,
html[data-theme="light"] .modal-overlay .modal-card,
html[data-theme="light"] #modal-overlay .modal-card {
    background: #ffffff !important;
    background-image: none !important;
    border: 1px solid #e2e8f0 !important;
    color: #0f172a !important;
    box-shadow:
        0 25px 60px -12px rgba(15, 23, 42, 0.35),
        0 8px 24px -8px rgba(15, 23, 42, 0.15) !important;
}

/* HEADER — title + close */
html[data-theme="light"] .modal-card .modal-header,
html[data-theme="light"] .modal-overlay .modal-header {
    background: #ffffff !important;
    border-bottom: 1px solid #e2e8f0 !important;
    color: #0f172a !important;
}
html[data-theme="light"] .modal-card .modal-title,
html[data-theme="light"] .modal-card .modal-header h3,
html[data-theme="light"] .modal-card .modal-header h2 {
    color: #0f172a !important;
}
html[data-theme="light"] .modal-card .modal-close,
html[data-theme="light"] #modal-close {
    background: #f1f5f9 !important;
    color: #475569 !important;
    border: 1px solid #e2e8f0 !important;
    border-radius: 8px !important;
}
html[data-theme="light"] .modal-card .modal-close:hover,
html[data-theme="light"] #modal-close:hover {
    background: #fee2e2 !important;
    color: #dc2626 !important;
    border-color: #fca5a5 !important;
}

/* BODY */
html[data-theme="light"] .modal-card .modal-body,
html[data-theme="light"] #modal-body {
    background: #ffffff !important;
    color: #1e293b !important;
}

/* FOOTER — el negro que chocaba en el screenshot */
html[data-theme="light"] .modal-card .modal-footer,
html[data-theme="light"] .modal-overlay .modal-footer,
html[data-theme="light"] #modal-footer {
    background: #f8fafc !important;
    background-image: none !important;
    border-top: 1px solid #e2e8f0 !important;
    color: #1e293b !important;
}

/* Inputs / textareas / selects dentro del modal */
html[data-theme="light"] .modal-card input[type="text"],
html[data-theme="light"] .modal-card input[type="number"],
html[data-theme="light"] .modal-card input[type="password"],
html[data-theme="light"] .modal-card input[type="email"],
html[data-theme="light"] .modal-card input[type="url"],
html[data-theme="light"] .modal-card textarea,
html[data-theme="light"] .modal-card select {
    background: #ffffff !important;
    border: 1px solid #cbd5e1 !important;
    color: #0f172a !important;
}
html[data-theme="light"] .modal-card input::placeholder,
html[data-theme="light"] .modal-card textarea::placeholder {
    color: #94a3b8 !important;
}
html[data-theme="light"] .modal-card input:focus,
html[data-theme="light"] .modal-card textarea:focus,
html[data-theme="light"] .modal-card select:focus {
    border-color: #6366f1 !important;
    box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.18) !important;
    outline: none !important;
}

/* Labels (uppercase tags como CANTIDAD R$) */
html[data-theme="light"] .modal-card label,
html[data-theme="light"] .modal-card .field-label,
html[data-theme="light"] .modal-card .input-label {
    color: #475569 !important;
    font-weight: 700 !important;
}

/* User-picker rows inside modal (Vile Roccietti, Notlme, etc.) */
html[data-theme="light"] .modal-card .ow-picker-row,
html[data-theme="light"] .modal-card [class*="picker-row"],
html[data-theme="light"] .modal-card [class*="user-row"],
html[data-theme="light"] .modal-card [class*="member-row"] {
    background: #ffffff !important;
    border-bottom: 1px solid #f1f5f9 !important;
    color: #0f172a !important;
}
html[data-theme="light"] .modal-card .ow-picker-row:hover,
html[data-theme="light"] .modal-card [class*="picker-row"]:hover {
    background: #f8fafc !important;
}

/* Cancel + secondary buttons */
html[data-theme="light"] .modal-card .btn-secondary,
html[data-theme="light"] .modal-card .btn-cancel,
html[data-theme="light"] .modal-card .btn-ios:not(.btn-ios-primary):not(.btn-ios-danger) {
    background: #ffffff !important;
    border: 1px solid #cbd5e1 !important;
    color: #1e293b !important;
}
html[data-theme="light"] .modal-card .btn-secondary:hover,
html[data-theme="light"] .modal-card .btn-cancel:hover {
    background: #f8fafc !important;
    border-color: #94a3b8 !important;
}

/* Wide modal variant (Crear Bracket etc.) */
html[data-theme="light"] .modal-card.wide,
html[data-theme="light"] .modal-card.exclusive {
    background: #ffffff !important;
    border: 1px solid #e2e8f0 !important;
    color: #0f172a !important;
}


/* ════════════════════════════════════════════════════════════════════
   MODAL-POLISH-V27 (2026-05-23): refinamiento estético del modal en
   light. Padding consistente, footer con button auto-width (no full),
   X close ronditos, divider sutil, body más respiro.
   ════════════════════════════════════════════════════════════════════ */

/* Card: corner radius mayor, sombra más definida */
html[data-theme="light"] .modal-card,
html[data-theme="light"] #modal-overlay .modal-card {
    border-radius: 16px !important;
    border: 1px solid #e2e8f0 !important;
    box-shadow:
        0 25px 80px -16px rgba(15, 23, 42, 0.40),
        0 10px 30px -8px rgba(15, 23, 42, 0.15),
        inset 0 1px 0 rgba(255, 255, 255, 0.9) !important;
    overflow: hidden !important;
}

/* Header: padding consistente + X redondeado */
html[data-theme="light"] .modal-card .modal-header {
    padding: 20px 24px !important;
    background: #ffffff !important;
    border-bottom: 1px solid #f1f5f9 !important;
}
html[data-theme="light"] .modal-card .modal-title {
    font-size: 1.15rem !important;
    font-weight: 700 !important;
    line-height: 1.3 !important;
    color: #0f172a !important;
}
html[data-theme="light"] .modal-card .modal-close,
html[data-theme="light"] #modal-close {
    width: 32px !important;
    height: 32px !important;
    padding: 0 !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    font-size: 1rem !important;
    background: #f8fafc !important;
    border: 1px solid #e2e8f0 !important;
    border-radius: 8px !important;
    color: #64748b !important;
    cursor: pointer !important;
    transition: all 0.18s ease !important;
}
html[data-theme="light"] .modal-card .modal-close:hover,
html[data-theme="light"] #modal-close:hover {
    background: #fee2e2 !important;
    border-color: #fca5a5 !important;
    color: #dc2626 !important;
}

/* Body: 24px padding + jerarquía clara */
html[data-theme="light"] .modal-card .modal-body,
html[data-theme="light"] #modal-body {
    padding: 24px !important;
    background: #ffffff !important;
    color: #1e293b !important;
}

/* Labels (uppercase) — más separación + mejor color */
html[data-theme="light"] .modal-card label,
html[data-theme="light"] .modal-card .field-label,
html[data-theme="light"] #modal-body label {
    display: block !important;
    color: #475569 !important;
    font-size: 0.72rem !important;
    font-weight: 700 !important;
    letter-spacing: 0.08em !important;
    text-transform: uppercase !important;
    margin-bottom: 6px !important;
}

/* Inputs: padding generoso + radius coherente */
html[data-theme="light"] .modal-card input[type="text"],
html[data-theme="light"] .modal-card input[type="number"],
html[data-theme="light"] .modal-card input[type="password"],
html[data-theme="light"] .modal-card input[type="email"],
html[data-theme="light"] .modal-card input[type="url"],
html[data-theme="light"] .modal-card textarea,
html[data-theme="light"] .modal-card select,
html[data-theme="light"] #modal-body input[type="text"],
html[data-theme="light"] #modal-body input[type="number"],
html[data-theme="light"] #modal-body textarea {
    width: 100% !important;
    padding: 11px 14px !important;
    background: #f8fafc !important;
    border: 1px solid #e2e8f0 !important;
    border-radius: 10px !important;
    color: #0f172a !important;
    font-size: 0.92rem !important;
    transition: all 0.16s ease !important;
    box-sizing: border-box !important;
    margin-bottom: 16px !important;
}
html[data-theme="light"] .modal-card input:focus,
html[data-theme="light"] .modal-card textarea:focus,
html[data-theme="light"] .modal-card select:focus,
html[data-theme="light"] #modal-body input:focus,
html[data-theme="light"] #modal-body textarea:focus {
    background: #ffffff !important;
    border-color: #6366f1 !important;
    box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.15) !important;
    outline: none !important;
}
html[data-theme="light"] .modal-card input::placeholder,
html[data-theme="light"] .modal-card textarea::placeholder {
    color: #94a3b8 !important;
}

/* Footer: bg sutil + padding + button NO full-width */
html[data-theme="light"] .modal-card .modal-footer,
html[data-theme="light"] #modal-footer {
    padding: 16px 24px !important;
    background: #f8fafc !important;
    border-top: 1px solid #f1f5f9 !important;
    display: flex !important;
    align-items: center !important;
    justify-content: flex-end !important;
    gap: 10px !important;
}

/* Primary button dentro del footer — no full width, padding cómodo */
html[data-theme="light"] .modal-card .modal-footer button,
html[data-theme="light"] .modal-card .modal-footer .btn-ios-primary,
html[data-theme="light"] .modal-card .modal-footer .btn-primary,
html[data-theme="light"] #modal-footer button.btn-primary,
html[data-theme="light"] #modal-footer .btn-ios-primary {
    width: auto !important;
    min-width: 140px !important;
    padding: 11px 22px !important;
    border-radius: 10px !important;
    font-weight: 600 !important;
    font-size: 0.92rem !important;
}

/* Si el footer contiene SOLO un button primary (ej. Registrar aporte
   sin Cancel), igual mantener auto-width así no toca bordes */
html[data-theme="light"] .modal-card .modal-footer:has(button:only-child),
html[data-theme="light"] #modal-footer:has(button:only-child) {
    justify-content: stretch !important;
}
html[data-theme="light"] .modal-card .modal-footer:has(button:only-child) button,
html[data-theme="light"] #modal-footer:has(button:only-child) button {
    flex: 1 !important;
    min-width: 0 !important;
}

/* SERVER SELECTOR — fix mobile + claro (reporte owner por DM 2026-06-01):
   en celular el sidebar usa transform/overflow y clippeaba el dropdown
   (no scroll, cortado); el buscador tenía fondo oscuro hardcodeado e
   ilegible en modo claro. El JS ahora portalea el menú a <body> en mobile
   (data-portaled) para escapar del transform. */
#guild-search-input {
  background: var(--bg-surface) !important;
  color: var(--text-main) !important;
  border: 1px solid var(--border) !important;
  /* SEARCH BAR fix (reporte owner 2026-06-01): el input tenía width:100% + padding
     SIN box-sizing → dentro del panel (border-box) se desbordaba por los lados y
     "no salía bien". border-box lo encierra. */
  box-sizing: border-box !important;
  width: 100% !important;
  max-width: 100% !important;
}
/* iOS NO hace auto-zoom al enfocar si el font-size es >=16px (antes 0.9rem → zoom feo). */
@media (max-width: 768px) {
  #guild-search-input { font-size: 16px !important; padding: 12px 14px !important; }
}
#guild-search-input::placeholder { color: var(--text-muted, #94a3b8) !important; opacity: 1; }
#guild-dropdown-list { -webkit-overflow-scrolling: touch; overscroll-behavior: contain; }
[data-theme="light"] #guild-dropdown-menu {
  background: #ffffff !important;
  box-shadow: 0 20px 50px -14px rgba(15,23,42,0.30), 0 0 0 1px rgba(15,23,42,0.06) !important;
}
[data-theme="light"] #guild-search-input { background: #f1f5f9 !important; color: #15172a !important; }
[data-theme="light"] .guild-drop-item { color: #15172a !important; }
/* Portaleado a <body>: el JS setea position/top/left/width/max-height/z-index
   inline (con el rect REAL del botón). Acá solo aseguramos el recorte interno y
   que el min-width inline no lo achique. NO ponemos position/top con !important
   para no pisar el cálculo del JS. */
#guild-dropdown-menu[data-portaled] {
  min-width: 0 !important;
  max-width: none !important;
  bottom: auto !important;
  overflow: hidden !important;
  transform-origin: top center !important;
}
#guild-dropdown-menu[data-portaled] #guild-dropdown-list { max-height: 56vh !important; }

/* SERVER SELECTOR BUTTON — claro bulletproof (reporte owner 2026-06-01: el botón
   se veía como caja oscura/vacía e ilegible en celular). dashboard-skin carga
   último → gana. Forzamos botón claro + TODO su texto/íconos oscuros y legibles. */
[data-theme="light"] #sidebar-guild-selector #btn-guild-sel,
[data-theme="light"] #guild-selector-header #btn-guild-sel,
[data-theme="light"] #ow-guild-selector-slot #btn-guild-sel {
  background: #ffffff !important;
  border: 1px solid rgba(15,23,42,0.14) !important;
  box-shadow: 0 1px 3px rgba(15,23,42,0.06) !important;
}
[data-theme="light"] #sidebar-guild-selector #btn-guild-sel,
[data-theme="light"] #sidebar-guild-selector #btn-guild-sel *,
[data-theme="light"] #guild-selector-header #btn-guild-sel,
[data-theme="light"] #guild-selector-header #btn-guild-sel *,
[data-theme="light"] #ow-guild-selector-slot #btn-guild-sel,
[data-theme="light"] #ow-guild-selector-slot #btn-guild-sel * {
  color: #0f172a !important;
  -webkit-text-fill-color: #0f172a !important;
}
[data-theme="light"] #sidebar-guild-selector #btn-guild-sel img,
[data-theme="light"] #guild-selector-header #btn-guild-sel img,
[data-theme="light"] #ow-guild-selector-slot #btn-guild-sel img {
  background: #f1f5f9 !important; border-radius: 5px !important;
}

/* SELECTOR DE SERVIDORES — fix CRÍTICO mobile (reporte owner 2026-06-01):
   oneway-navbar.css tiene un @media(max-width:600px) que COLAPSA #btn-guild-sel
   a 40px icon-only y ESCONDE el nombre (display:none en sus spans). Eso era para
   el selector en el NAVBAR horizontal; pero ahora vive en la SIDEBAR (drawer
   full-width en mobile) → el botón salía VACÍO ("nada"). Revertir para la sidebar.
   dashboard-skin.css carga ÚLTIMO → gana. */
@media (max-width: 600px) {
  #sidebar-guild-selector #btn-guild-sel {
    width: 100% !important;
    min-width: 0 !important;
    padding: 9px 14px !important;
    justify-content: space-between !important;
  }
  #sidebar-guild-selector #btn-guild-sel span { display: inline !important; }
  #sidebar-guild-selector #btn-guild-sel > span:first-child,
  #sidebar-guild-selector #btn-guild-sel > div { display: flex !important; }
}

/* ════════════════════════════════════════════════════════════════════
   REMODEL 2026-06-02 — pase de MOBILE general del dashboard.
   (1) inputs/buscadores a 16px → sin auto-zoom de iOS (que "se ve raro").
   (2) toolbars con buscador: envuelven y el search ocupa el ancho completo.
   ════════════════════════════════════════════════════════════════════ */
@media (max-width: 600px) {
  #guild-search-input, #member-search, .imsg-input,
  .pro-toolbar input, .setup-dropdown__search, .lb-input,
  input[type="text"], input[type="search"], select, textarea { font-size: 16px !important; }
  .pro-toolbar { flex-wrap: wrap !important; gap: 10px !important; }
  .pro-toolbar > div[style*="280px"], .pro-toolbar > div[style*="width:280"] { width: 100% !important; max-width: 100% !important; }
  #guild-dropdown-menu, #guild-dropdown-list { max-width: 100% !important; box-sizing: border-box !important; }
}

/* ════════════════════════════════════════════════════════════════════════════
   MOBILE-SWEEP-2026-06-02 — barrido completo de mobile (append-once, idempotente).
   Fuente: auditoría multi-agente. Todo aditivo, no toca desktop. dashboard-skin.css
   carga último → estos overrides ganan la cascada. NO re-pegar si este marcador existe.
   ════════════════════════════════════════════════════════════════════════════ */
@media (max-width: 640px) {

  /* ── 0. iOS no-zoom: regla 16px COMPLETA (la vieja se quedaba corta de tipos) ── */
  input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]):not([type="file"]),
  textarea, select { font-size: 16px !important; }

  /* ── 1. Red de seguridad anti-overflow horizontal + anchos fijos sueltos ── */
  .main-content, #main-content, .content-body { max-width: 100vw; overflow-x: hidden; }
  code { overflow-wrap: anywhere; word-break: break-word; }
  pre  { max-width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; }

  /* ── 2. Headers compartidos sin wrap ── */
  .card-header { flex-wrap: wrap; gap: 10px; align-items: flex-start; }
  .card-header > * { min-width: 0; }
  .content-header { flex-wrap: wrap !important; gap: 10px !important; }
  .content-header > * { min-width: 0; max-width: 100%; }
  .content-header h2 { word-break: break-word; }

  /* ── 3. Botón selector de guild: matar piso min-width:200px en slots topbar ── */
  #guild-selector-header #btn-guild-sel,
  #ow-guild-selector-slot #btn-guild-sel,
  #sidebar-guild-selector #btn-guild-sel { min-width: 0 !important; width: 100% !important; max-width: 100% !important; }

  /* ── 4. [HIGH] Directorio de miembros: fila apila botones full-width ── */
  .member-row { flex-wrap: wrap !important; gap: 10px 12px !important; padding: 12px 14px !important; }
  .member-row > div[style*="width:28px"] { display: none !important; }      /* #index oculto en cel */
  .member-row > div[style*="flex:1"] { flex: 1 1 100% !important; min-width: 0 !important; order: 2; }
  .member-row .btn-ios { flex: 1 1 auto !important; order: 3; text-align: center; padding: 10px 12px !important; }
  .member-row > img { order: 1; }

  /* ── 5. [HIGH] Keys/Users: filas .ak-row apilan ── */
  .ak-row { flex-wrap: wrap; row-gap: 10px; }
  .ak-row > div[style*="flex:1"] { flex: 1 1 100%; min-width: 0; order: 1; }
  .ak-row > img, .ak-row > span:first-child { order: 0; }
  .ak-row .ak-mini-btn { flex: 1 1 auto; justify-content: center; }
  .ak-row > div[style*="flex-shrink:0"] { order: 2; }
  /* key row de #ak-panel (CSS-only; ver §4 si preferís clase) */
  #ak-panel > div[style*="display:flex"][style*="border-radius:14px"] { flex-wrap: wrap !important; row-gap: 10px; }
  #ak-panel > div[style*="display:flex"][style*="border-radius:14px"] > div:first-child { flex: 1 1 100% !important; }
  #ak-panel > div[style*="display:flex"][style*="border-radius:14px"] > button { flex: 1 1 auto; }

  /* ── 6. [HIGH] Settings: 2 cards (forzadas inline a 1fr 1fr) → 1 columna ── */
  .pro-overview-grid { grid-template-columns: 1fr !important; gap: 14px !important; }

  /* ── 7. [HIGH] Editor de clan: grid 2-col del modal → 1 col (CSS-only) ── */
  .modal-card .modal-body > div[style*="grid-template-columns:1fr 1fr"],
  .modal-body  > div[style*="grid-template-columns:1fr 1fr"] { grid-template-columns: 1fr !important; }

  /* ── 8. Clans: card grid + logo ── */
  .pro-clan-grid { grid-template-columns: 1fr !important; gap: 14px !important; }
  .pro-clan-logo { width: 58px; height: 58px; margin: -29px 0 0 16px; }

  /* ── 9. Lineups / Mi Clan (.cl-*) — sin override mobile hasta ahora ── */
  .cl-card-head { flex-direction: column; align-items: stretch; gap: 10px; }
  .cl-card-head > div[style*="flex"] { width: 100%; }
  .cl-card-head .cl-btn { flex: 1 1 auto; justify-content: center; }
  .cl-chips { gap: 6px; }
  .cl-chips [style*="margin-left:auto"] { margin-left: 0 !important; flex: 1 1 100%; justify-content: center; }
  .cl-row { gap: 8px; padding: 10px; }
  .cl-rank { min-width: 24px; font-size: 13px; }
  .cl-avatar { width: 34px; height: 34px; }
  .cl-row-actions { gap: 3px; }
  .cl-mini-btn { width: 26px; height: 26px; }

  /* ── 10. Blacklist / Warns edit modal: label fijo 140px → apila ── */
  .sx-emodal .row { grid-template-columns: 1fr !important; align-items: stretch; gap: 6px; }
  .sx-emodal .row label { margin-bottom: 2px; }
  .sx-emodal .row input, .sx-emodal .row textarea, .sx-emodal .row select { font-size: 16px !important; }
  /* card colapsada: deja el nombre tomar línea completa en vez de quedar aplastado por chips GLOBAL/DISCORD */
  .sx-card-head { flex-wrap: wrap; }
  .sx-card-info { flex: 1 1 100%; order: 2; min-width: 0; }
  .sx-card-stats { order: 1; margin-left: auto; }
  .sx-card-avatar { order: 0; }

  /* ── 11. Member editor (modal grande) — pubprofile / logs / ow-select ── */
  .ow-panel#ow-p-pubprofile div[style*="display:flex"][style*="gap:8px"] { flex-wrap: wrap !important; }
  .ow-panel#ow-p-pubprofile div[style*="display:flex"][style*="gap:8px"] > input { width: 100% !important; flex: 1 1 100% !important; min-width: 0 !important; }
  #ow-logs-content > div > div[style*="display:flex"][style*="gap:10px"] { flex-direction: column !important; gap: 4px !important; }
  #ow-logs-content > div > div[style*="display:flex"][style*="gap:10px"] > div[style*="min-width:150px"] { min-width: 0 !important; }
  .ow-select { font-size: 16px !important; }
  .ow-select-opt { font-size: 15px !important; }

  /* ── 12. Audit / Logs toolbar ── */
  #audit-user { max-width: 100% !important; width: 100% !important; }
  .pro-toolbar > div[style*="inline-flex"][style*="border-radius:10px"] { width: 100%; justify-content: space-between; }
  .pro-toolbar > div[style*="inline-flex"][style*="border-radius:10px"] .pro-filter-chip { flex: 1; text-align: center; }

  /* ── 13. Tickets: card de apelaciones (ID largo no desborda) ── */
  #tk-appeals-list .tk-int-card > div:first-child { flex-direction: column; align-items: flex-start; }
  #tk-appeals-list .tk-int-card > div:first-child > div:first-child { min-width: 0; }
  #tk-appeals-list .tk-int-card code { word-break: break-all; }

  /* ── 14. Leaderboards: título + paddings de modal ── */
  .lb-board-info h3 { font-size: 19px; overflow-wrap: anywhere; }
  .lb-board-info .eyebrow { font-size: 9.5px; }
  .lb-board-info > div { min-width: 0; }
  .lb-modal-body { padding: 16px 16px; }
  .lb-modal-foot { padding: 12px 16px 16px; gap: 8px; }
  .lb-modal-foot .lb-btn-primary, .lb-modal-foot .lb-btn-ghost { flex: 1 1 auto; justify-content: center; }
}

/* Dropdown del selector de guild: a 480px se salía 50px del borde */
@media (max-width: 480px) {
  #guild-dropdown-menu {
    width: min(280px, calc(100vw - 24px)) !important;
    right: 8px !important; left: auto !important;
    max-width: calc(100vw - 16px) !important; box-sizing: border-box !important;
  }
}
/* ───────────────────── fin MOBILE-SWEEP-2026-06-02 ───────────────────── */

/* ════════ KEYS-V8-MODAL (2026-06-03): modales acotados + scroll interno + footer
   visible + responsive en celular. dashboard-skin.css carga último → gana. ════════ */
.modal-card { max-height: 90vh !important; display:flex !important; flex-direction:column !important; width: min(640px, calc(100vw - 32px)) !important; box-sizing:border-box !important; }
.modal-card .modal-header { flex:0 0 auto; }
.modal-card .modal-body { overflow-y:auto !important; flex:1 1 auto !important; min-height:0 !important; -webkit-overflow-scrolling:touch; }
.modal-card .modal-footer { flex:0 0 auto !important; position:sticky; bottom:0; }
@media (max-width: 640px) {
  .modal-overlay { padding:0 !important; align-items:flex-end !important; }
  .modal-card { width:100% !important; max-width:100% !important; max-height:92vh !important; border-radius:20px 20px 0 0 !important; }
  .modal-card .modal-body { padding:14px 16px !important; }
  .modal-card input:not([type=checkbox]):not([type=radio]), .modal-card textarea, .modal-card select { font-size:16px !important; }
  .cs-perm-grid { grid-template-columns:1fr !important; }
  #modal-body div[style*="display:flex"][style*="gap:10px"] { flex-direction:column !important; }
  #modal-body div[style*="display:flex"][style*="gap:10px"] > input { width:100% !important; min-width:0 !important; }
}
