/* ============================================================
   ROYAL ADMIN · Diseño basado en el admin de YUZU
   Tokens, shell y componentes. El contenido de módulos usa
   Bootstrap 5 re-estilizado en oscuro para integrarse.
   ============================================================ */

/* ── Tokens (idénticos al sistema visual YUZU) ────────────── */
:root {
  --yuzu-bg: #07110c;
  --yuzu-panel: #111c15;
  --yuzu-panel-2: #17241c;
  --yuzu-border: rgba(255,255,255,.12);
  --yuzu-text: #f7f8f5;
  --yuzu-muted: #aeb8ad;
  --yuzu-green: #25d366;
  --yuzu-green-dark: #16a84f;
  --yuzu-yellow: #dfff00;
  --yuzu-danger: #ff5252;
  --yuzu-warning: #ffd54f;
  --yuzu-radius: 18px;

  --admin-surface: rgba(17,28,21,.82);
  --admin-surface-soft: rgba(255,255,255,.055);
  --admin-surface-hover: rgba(37,211,102,.10);
  --admin-text: var(--yuzu-text);
  --admin-muted: var(--yuzu-muted);
  --admin-line: var(--yuzu-border);
  --admin-shadow: 0 10px 24px rgba(0,0,0,.18);

  --admin-success-bg: rgba(37,211,102,.14);
  --admin-success-border: rgba(37,211,102,.42);
  --admin-success-text: #b9f6ca;
  --admin-warning-bg: rgba(255,213,79,.15);
  --admin-warning-border: rgba(255,213,79,.42);
  --admin-warning-text: #ffe69a;
  --admin-danger-bg: rgba(255,82,82,.14);
  --admin-danger-border: rgba(255,82,82,.42);
  --admin-danger-text: #ffb9b4;
  --admin-info-bg: rgba(64,196,255,.14);
  --admin-info-border: rgba(64,196,255,.40);
  --admin-info-text: #bfeaff;
}

/* ── Temas: claro / nube / oscuro ─────────────────────────── */
body.admin-theme-light,
body.admin-theme-cloud {
  --yuzu-bg: #eef2ef;
  --yuzu-panel: #ffffff;
  --yuzu-panel-2: #f4f7f4;
  --yuzu-border: rgba(7,17,12,.12);
  --yuzu-text: #14211a;
  --yuzu-muted: #5b6b5f;
  --admin-surface: rgba(255,255,255,.88);
  --admin-surface-soft: rgba(7,17,12,.04);
  --admin-surface-hover: rgba(37,211,102,.14);
  --admin-shadow: 0 10px 24px rgba(0,0,0,.08);
  --admin-success-text: #12854e;
  --admin-warning-text: #9a6b00;
  --admin-danger-text: #c62828;
  --admin-info-text: #0369a1;
}
body.admin-theme-cloud {
  --yuzu-bg: #dfe9e3;
  --yuzu-panel: rgba(255,255,255,.95);
}

/* ── Base ─────────────────────────────────────────────────── */
* { box-sizing: border-box; }
body.admin-body {
  margin: 0;
  min-height: 100vh;
  font-family: Arial, Helvetica, sans-serif;
  background: radial-gradient(circle at top left, rgba(37,211,102,.14), transparent 30%), var(--yuzu-bg);
  color: var(--yuzu-text);
  -webkit-font-smoothing: antialiased;
}
a { color: var(--yuzu-green); text-decoration: none; }
a:hover { text-decoration: underline; }

/* ── Login ────────────────────────────────────────────────── */
.admin-login-wrap { min-height: 100vh; display: grid; place-items: center; padding: 32px 16px; }
.admin-login-card, .admin-card {
  width: min(100%, 460px);
  background: var(--admin-surface);
  border: 1px solid var(--yuzu-border);
  border-radius: var(--yuzu-radius);
  box-shadow: 0 24px 70px rgba(0,0,0,.35);
  padding: 30px;
  color: var(--yuzu-text);
}
.admin-logo { font-size: 34px; font-weight: 900; letter-spacing: .5px; margin-bottom: 6px; color: var(--yuzu-text); }
.admin-logo .accent { color: var(--yuzu-green); }
.admin-claim { color: var(--yuzu-muted); margin: 0 0 26px; }

/* ── Formularios globales (login y cualquier input nativo) ── */
.admin-body label { display: block; font-size: 13px; color: var(--yuzu-muted); margin-bottom: 7px; font-weight: 700; }
.admin-body input, .admin-body select, .admin-body textarea {
  width: 100%; padding: 13px 14px; border-radius: 12px; border: 1px solid var(--yuzu-border);
  background: var(--admin-surface-soft); color: var(--yuzu-text); outline: none;
  font-family: inherit; font-size: 14px; transition: border-color .15s ease, box-shadow .15s ease;
}
.admin-body input::placeholder, .admin-body textarea::placeholder { color: var(--yuzu-muted); }
.admin-body select option { color: #111; }
.admin-body textarea { min-height: 120px; resize: vertical; }
.admin-body input:focus, .admin-body select:focus, .admin-body textarea:focus {
  border-color: var(--yuzu-green); box-shadow: 0 0 0 3px rgba(37,211,102,.16);
}

/* ── Login: estructura pulida ─────────────────────────────── */
.admin-login-card { padding: 34px 32px 30px; }
.admin-login-card form { display: grid; gap: 16px; }
.admin-login-card .admin-logo { font-size: 27px; display: flex; align-items: center; gap: 10px; }
.admin-login-card .admin-logo-mark {
  width: 42px; height: 42px; border-radius: 12px; display: inline-grid; place-items: center;
  background: linear-gradient(135deg, var(--yuzu-yellow), var(--yuzu-green));
  color: #07110c; font-size: 20px; font-weight: 900;
}
.admin-login-card .admin-btn { margin-top: 4px; padding: 14px 16px; font-size: 15px; }
.admin-login-foot {
  margin: 20px 0 0; padding-top: 18px; border-top: 1px solid var(--yuzu-border);
  text-align: center; font-size: 13px; color: var(--yuzu-muted);
}
.admin-login-foot a { color: var(--yuzu-green); font-weight: 700; }

/* ── Shell ────────────────────────────────────────────────── */
.admin-layout { min-height: 100vh; display: grid; grid-template-columns: 260px minmax(0, 1fr); transition: grid-template-columns .18s ease; }
.admin-content-shell { min-width: 0; display: flex; flex-direction: column; min-height: 100vh; }
.admin-main { flex: 1; padding: 26px 30px 40px; }
.admin-footerbar {
  display: flex; flex-wrap: wrap; gap: 10px; align-items: center;
  border-top: 1px solid var(--yuzu-border);
  padding: 14px 18px; color: var(--yuzu-muted); font-size: 12px; font-weight: 800;
}
.admin-footerbar a { margin-left: 6px; color: var(--yuzu-muted); }
.admin-footerbar a:hover { color: var(--yuzu-green); text-decoration: none; }

/* ── Sidebar ──────────────────────────────────────────────── */
.admin-sidebar {
  background: rgba(6,12,9,.92);
  border-right: 1px solid var(--yuzu-border);
  padding: 20px 14px;
  position: sticky; top: 0; height: 100vh;
  overflow-y: auto; overflow-x: hidden;
}
body.admin-theme-light .admin-sidebar,
body.admin-theme-cloud .admin-sidebar { background: rgba(255,255,255,.92); }
.admin-brand-block { padding: 0 6px 4px; }
.admin-sidebar .brand { font-size: 18px; font-weight: 900; line-height: 1.15; margin-bottom: 3px; color: var(--yuzu-text); }
.admin-sidebar .brand .accent { color: var(--yuzu-green); }
.admin-sidebar .subtitle { color: var(--yuzu-muted); font-size: 13px; margin-bottom: 20px; }
.admin-sidebar-logo { display: block; max-width: 132px; max-height: 42px; object-fit: contain; }

/* ── Backdrop del drawer (móvil) ──────────────────────────── */
.admin-sidebar-backdrop {
  position: fixed; inset: 0; z-index: 1070;
  background: rgba(0,0,0,.5);
  opacity: 0; visibility: hidden;
  transition: opacity .28s ease, visibility .28s ease;
  backdrop-filter: blur(2px);
}
.admin-sidebar-backdrop.is-visible { opacity: 1; visibility: visible; }

/* ── Navegación por grupos (details/summary) ──────────────── */
.admin-nav-v181 { display: grid; gap: 10px; }
.admin-nav-group {
  border: 1px solid var(--yuzu-border); border-radius: 16px; padding: 6px;
  background: var(--admin-surface-soft);
}
.admin-nav-group[open] { border-color: rgba(37,211,102,.3); }
.admin-nav-group summary {
  list-style: none; cursor: pointer; color: var(--yuzu-muted); font-size: 12px;
  font-weight: 900; text-transform: uppercase; letter-spacing: .06em;
  padding: 8px 8px 10px; display: flex; align-items: center; gap: 8px;
}
.admin-nav-group summary::-webkit-details-marker { display: none; }
.admin-nav-group summary::after { content: '⌄'; margin-left: auto; opacity: .55; font-size: 13px; }
.admin-nav-group:not([open]) summary::after { content: '›'; }
.admin-nav-v181 a {
  display: flex; align-items: center; gap: 8px; margin-bottom: 4px; padding: 10px 10px;
  border-radius: 12px; color: var(--yuzu-text); font-weight: 700; font-size: 13px;
}
.admin-nav-v181 a:hover { text-decoration: none; background: var(--admin-surface-hover); }
.admin-nav-v181 .nav-ico { width: 18px; min-width: 18px; text-align: center; opacity: .72; font-weight: 900; }
.admin-nav-v181 a.active,
.admin-nav-v181 a.active:hover { background: rgba(37,211,102,.12); color: #fff; text-decoration: none; }
body.admin-theme-light .admin-nav-v181 a.active,
body.admin-theme-cloud .admin-nav-v181 a.active { color: #0b7a41; }
.admin-nav-v181 a.active .nav-ico,
.admin-nav-v181 a:hover .nav-ico,
.admin-nav-group[open] > summary .nav-ico { opacity: 1; color: var(--yuzu-green); }
.admin-nav-v181 .admin-subnav { margin: 0 0 4px 24px; padding-left: 10px; }
.admin-nav-v181 .admin-subnav a { padding: 7px 8px; font-size: 12px; }
.admin-nav-v181 .admin-subnav .sub-ico { font-size: 11px; }

/* Sidebar contraída */
.admin-layout.admin-sidebar-collapsed { grid-template-columns: 74px minmax(0, 1fr); }
.admin-sidebar-collapsed .admin-sidebar { padding-left: 10px; padding-right: 10px; }
.admin-sidebar-collapsed .admin-sidebar-logo { max-width: 42px; max-height: 34px; object-fit: contain; object-position: left center; }
.admin-sidebar-collapsed .admin-brand-block .subtitle,
.admin-sidebar-collapsed .admin-user-box,
.admin-sidebar-collapsed .admin-nav-group summary span:not(.nav-ico),
.admin-sidebar-collapsed .admin-nav-v181 a span:not(.nav-ico),
.admin-sidebar-collapsed .admin-subnav,
.admin-sidebar-collapsed .admin-nav-group summary::after { display: none; }
.admin-sidebar-collapsed .admin-nav-group { padding: 4px; }
.admin-sidebar-collapsed .admin-nav-group summary { justify-content: center; padding: 9px 4px; }
.admin-sidebar-collapsed .admin-nav-v181 a { justify-content: center; padding: 10px 4px; }
.admin-sidebar-collapsed .admin-sidebar .brand {
    font-size: 0;
    width: 42px;
    height: 42px;
    margin: 0 auto 3px;
    display: grid;
    place-items: center;
    border-radius: 12px;
    background: linear-gradient(135deg, var(--yuzu-yellow), var(--yuzu-green));
    color: #07110c;
    font-weight: 900;
    line-height: 1;
}
.admin-sidebar-collapsed .admin-sidebar .brand::before {
    content: "RL";
    font-size: 15px;
    letter-spacing: 0.5px;
}

/* ── Usuario (sidebar) ────────────────────────────────────── */
.admin-user-box { margin-top: 22px; padding: 14px; border: 1px solid var(--yuzu-border); border-radius: 14px; color: var(--yuzu-muted); font-size: 13px; display: grid; gap: 2px; }
.admin-user-box strong { color: var(--yuzu-text); font-size: 14px; }
.admin-session-mini { display: grid; gap: 3px; margin-top: 10px; padding-top: 10px; border-top: 1px solid var(--yuzu-border); font-size: 11px; }

/* ── Topbar ───────────────────────────────────────────────── */
.admin-topbar {
  position: sticky; top: 0; z-index: 20; min-height: 46px;
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  padding: 8px 18px; border-bottom: 1px solid var(--yuzu-border);
  background: rgba(7,17,12,.86); backdrop-filter: blur(10px);
}
body.admin-theme-light .admin-topbar,
body.admin-theme-cloud .admin-topbar { background: rgba(255,255,255,.86); }
.admin-sidebar-toggle-top {
  width: 34px; height: 30px; border-radius: 999px; border: 1px solid var(--yuzu-border);
  background: var(--admin-surface-soft); color: var(--yuzu-text); cursor: pointer; font-weight: 900;
}
.admin-topbar-secure { color: var(--yuzu-muted); font-size: 12px; font-weight: 800; display: inline-flex; align-items: center; gap: 7px; white-space: nowrap; }
.topbar-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--yuzu-green); display: inline-block; box-shadow: 0 0 8px rgba(37,211,102,.7); }
.admin-topbar-spacer { flex: 1; }
.admin-topbar-pill {
  display: inline-flex; align-items: center; gap: 7px; padding: 7px 10px;
  border: 1px solid var(--yuzu-border); border-radius: 999px; color: var(--yuzu-muted);
  font-size: 12px; font-weight: 800; background: var(--admin-surface-soft); cursor: pointer;
}
.admin-topbar-pill:hover { text-decoration: none; color: var(--yuzu-text); border-color: rgba(37,211,102,.35); }
.admin-topbar-pill strong { color: var(--yuzu-text); }
.admin-topbar-time, .admin-topbar-user { color: var(--yuzu-muted); font-size: 12px; font-weight: 800; white-space: nowrap; }
.admin-topbar-user { background: transparent; border: 0; cursor: pointer; padding: 4px 6px; }
.admin-topbar-avatar {
  width: 32px; height: 32px; border-radius: 50%; border: 1px solid var(--yuzu-border);
  background: linear-gradient(90deg, var(--yuzu-yellow), var(--yuzu-green));
  color: #07110c; font-weight: 900; cursor: pointer;
}

/* Switch de tema */
.admin-theme-switcher { display: inline-flex; gap: 4px; border: 1px solid var(--yuzu-border); border-radius: 999px; padding: 3px; }
.admin-theme-switcher button {
  width: 26px; height: 26px; border-radius: 50%; border: 0; cursor: pointer;
  background: transparent; color: var(--yuzu-muted); font-size: 13px; line-height: 1;
}
.admin-theme-switcher button[aria-pressed="true"] { background: var(--admin-surface-hover); color: var(--yuzu-text); }

/* Paneles flotantes del topbar */
.admin-topbar-panel {
  position: absolute; top: 100%; right: 10px; width: min(340px, calc(100vw - 20px));
  background: var(--admin-surface); border: 1px solid var(--yuzu-border); border-radius: 16px;
  box-shadow: var(--admin-shadow); padding: 18px; display: none; color: var(--yuzu-text); z-index: 40;
}
.admin-topbar-panel.is-open { display: block; }
.topbar-panel-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px; }
.topbar-panel-head strong { font-size: 20px; }
.topbar-panel-actions { display: grid; gap: 8px; margin-top: 14px; }
.topbar-panel-actions a { display: flex; justify-content: space-between; align-items: center; padding: 10px 12px; border-radius: 12px; background: var(--admin-surface-soft); color: var(--yuzu-text); }
.topbar-panel-actions a:hover { text-decoration: none; background: var(--admin-surface-hover); }
.topbar-panel-actions a em { font-style: normal; color: var(--yuzu-muted); font-size: 12px; }
.topbar-panel-actions a.is-disabled { opacity: .45; pointer-events: none; }
.topbar-user-card { display: flex; gap: 12px; align-items: center; margin-bottom: 8px; }
.topbar-user-avatar-large {
  width: 46px; height: 46px; border-radius: 50%; display: grid; place-items: center;
  background: linear-gradient(90deg, var(--yuzu-yellow), var(--yuzu-green)); color: #07110c; font-weight: 900; font-size: 18px;
}
.topbar-user-card strong { display: block; }
.topbar-user-card span { color: var(--yuzu-muted); font-size: 13px; }
.topbar-user-card em { font-style: normal; color: var(--yuzu-green); font-size: 12px; }

/* ── Gestión rápida (panel ecosistema) ────────────────────── */
.admin-ecosystem-toggle-top { display: none; }
.quick-view-panel {
  margin-bottom: 20px; background: var(--admin-surface); border: 1px solid var(--yuzu-border);
  border-radius: var(--yuzu-radius); padding: 18px;
}
.ecosystem-section-head { margin-bottom: 14px; }
.ecosystem-section-head h3 { margin: 2px 0; font-size: 18px; }
.ecosystem-section-head p { color: var(--yuzu-muted); margin: 0; font-size: 13px; }
.quick-action-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); gap: 10px; }
.quick-action-card {
  display: flex; gap: 10px; align-items: center; padding: 12px;
  border: 1px solid var(--yuzu-border); border-radius: 14px; background: var(--admin-surface-soft);
  color: var(--yuzu-text);
}
.quick-action-card:hover { text-decoration: none; background: var(--admin-surface-hover); }
.quick-action-icon { width: 34px; height: 34px; border-radius: 10px; display: grid; place-items: center; background: var(--admin-surface-hover); font-size: 16px; }
.quick-action-copy strong { display: block; font-size: 13px; }
.quick-action-copy small { color: var(--yuzu-muted); font-size: 12px; }
.quick-action-card b { margin-left: auto; font-size: 14px; }
.quick-action-card.is-create b { color: var(--yuzu-green); }
.quick-section-title { display: flex; justify-content: space-between; align-items: baseline; margin: 14px 0 8px; }
.quick-section-title strong { font-size: 13px; text-transform: uppercase; letter-spacing: .05em; color: var(--yuzu-muted); }
.quick-section-title small { color: var(--yuzu-muted); font-size: 12px; }

/* ── Contenido: cabeceras de página ───────────────────────── */
.admin-page-head { display: flex; justify-content: space-between; gap: 20px; align-items: flex-start; margin-bottom: 24px; flex-wrap: wrap; }
.admin-title { font-size: clamp(26px, 3.4vw, 40px); line-height: 1; margin: 0 0 8px; color: var(--yuzu-text); }
.admin-subtitle { color: var(--yuzu-muted); margin: 0; }
.admin-toolbar, .admin-panel, .admin-card-royal {
  background: var(--admin-surface); border: 1px solid var(--yuzu-border);
  border-radius: var(--yuzu-radius); padding: 18px; margin-bottom: 20px;
}
.admin-stat-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 14px; margin-bottom: 20px; }
.admin-stat-card {
  background: var(--admin-surface); border: 1px solid var(--yuzu-border); border-radius: 16px;
  padding: 18px; box-shadow: var(--admin-shadow);
}
.admin-stat-card .number { font-size: 30px; font-weight: 900; color: var(--yuzu-text); }
.admin-stat-card .number.accent { color: var(--yuzu-green); }
.admin-stat-card small { color: var(--yuzu-muted); font-weight: 800; text-transform: uppercase; letter-spacing: .04em; }
.admin-grid { display: grid; grid-template-columns: 1.15fr .85fr; gap: 20px; }
.admin-kv { display: grid; grid-template-columns: 220px 1fr; border-top: 1px solid var(--yuzu-border); }
.admin-kv div { padding: 12px 0; border-bottom: 1px solid var(--yuzu-border); }
.admin-kv .k { color: var(--yuzu-muted); font-weight: 800; padding-right: 18px; }
.admin-empty { padding: 28px; text-align: center; color: var(--yuzu-muted); }
.admin-pagination { display: flex; justify-content: space-between; gap: 12px; margin-top: 16px; color: var(--yuzu-muted); }

/* ── Botones nativos ──────────────────────────────────────── */
.admin-btn, button.admin-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  padding: 12px 16px; border-radius: 999px; border: 0; cursor: pointer;
  background: linear-gradient(90deg, var(--yuzu-yellow), var(--yuzu-green)); color: #07110c; font-weight: 900;
}
.admin-btn.secondary { background: var(--admin-surface-soft); color: var(--yuzu-text); border: 1px solid var(--yuzu-border); }
.admin-btn.danger { background: var(--yuzu-danger); color: #fff; }

/* ── Tablas y badges nativos ──────────────────────────────── */
.admin-table-wrap { overflow-x: auto; border-radius: var(--yuzu-radius); border: 1px solid var(--yuzu-border); }
table.admin-table { width: 100%; border-collapse: collapse; min-width: 760px; background: var(--admin-surface); }
.admin-table th, .admin-table td { padding: 14px; border-bottom: 1px solid var(--yuzu-border); text-align: left; vertical-align: top; }
.admin-table th { color: #dfe9df; font-size: 12px; text-transform: uppercase; letter-spacing: .06em; background: var(--admin-surface-soft); }
body.admin-theme-light .admin-table th, body.admin-theme-cloud .admin-table th { color: #44534a; }
.admin-table td { color: var(--yuzu-text); font-size: 14px; }
.admin-badge { display: inline-flex; padding: 6px 10px; border-radius: 999px; font-size: 12px; font-weight: 900; border: 1px solid var(--yuzu-border); background: var(--admin-surface-soft); }

/* ============================================================
   Bootstrap 5 → integración en tema oscuro YUZU
   Cubre las clases usadas por los módulos de royal.
   ============================================================ */

/* Cards */
.admin-main .card {
  background: var(--admin-surface); border: 1px solid var(--yuzu-border);
  border-radius: 16px; color: var(--yuzu-text); box-shadow: var(--admin-shadow);
}
.admin-main .card-header { background: var(--admin-surface-soft); border-bottom: 1px solid var(--yuzu-border); color: var(--yuzu-text); font-weight: 800; }
.admin-main .card-title { color: var(--yuzu-text); }
.admin-main .card-body { color: var(--yuzu-text); }
.admin-main .card-text { color: var(--yuzu-text); }

/* Tablas */
.admin-main .table { --bs-table-bg: transparent; color: var(--yuzu-text); }
.admin-main .table thead th { background: var(--admin-surface-soft); color: #dfe9df; font-size: 12px; text-transform: uppercase; letter-spacing: .05em; border-color: var(--yuzu-border); }
body.admin-theme-light .admin-main .table thead th, body.admin-theme-cloud .admin-main .table thead th { color: #44534a; }
.admin-main .table td, .admin-main .table th { border-color: var(--yuzu-border); }
.admin-main .table-hover tbody tr:hover { --bs-table-hover-bg: rgba(37,211,102,.06); --bs-table-hover-color: var(--yuzu-text); color: var(--yuzu-text); }
.admin-main .table-dark { --bs-table-bg: #0c1610; --bs-table-color: #f7f8f5; --bs-table-border-color: rgba(255,255,255,.12); }
.admin-main .table-light { --bs-table-bg: rgba(255,255,255,.04); --bs-table-color: var(--yuzu-text); --bs-table-border-color: var(--yuzu-border); }
.admin-main .table-warning { --bs-table-bg: rgba(255,213,79,.14); --bs-table-color: var(--admin-warning-text); --bs-table-border-color: var(--yuzu-border); }
.admin-main .table-danger { --bs-table-bg: rgba(255,82,82,.14); --bs-table-color: var(--admin-danger-text); --bs-table-border-color: var(--yuzu-border); }

/* Botones */
.admin-main .btn { border-radius: 999px; font-weight: 700; }
.admin-main .btn-primary { background: linear-gradient(90deg, var(--yuzu-yellow), var(--yuzu-green)); border: 0; color: #07110c; font-weight: 900; }
.admin-main .btn-success { background: var(--yuzu-green-dark); border: 0; }
.admin-main .btn-danger { background: var(--yuzu-danger); border: 0; }
.admin-main .btn-warning { background: var(--yuzu-warning); border: 0; color: #111; }
.admin-main .btn-info { background: rgba(64,196,255,.22); border: 1px solid var(--admin-info-border); color: var(--admin-info-text); }
.admin-main .btn-dark { background: #0c1610; border: 1px solid var(--yuzu-border); color: #fff; }
.admin-main .btn-light { background: rgba(255,255,255,.08); border: 1px solid var(--yuzu-border); color: var(--yuzu-text); }
.admin-main .btn-outline-primary { border: 1px solid var(--yuzu-green); color: var(--yuzu-green); }
.admin-main .btn-outline-primary:hover { background: rgba(37,211,102,.15); color: #fff; }
.admin-main .btn-outline-secondary { border: 1px solid var(--yuzu-border); color: var(--yuzu-muted); }
.admin-main .btn-outline-secondary:hover { background: var(--admin-surface-hover); color: var(--yuzu-text); }
.admin-main .btn-outline-danger { border: 1px solid var(--yuzu-danger); color: var(--yuzu-danger); }
.admin-main .btn-outline-danger:hover { background: rgba(255,82,82,.15); color: #fff; }
.admin-main .btn-outline-info { border: 1px solid var(--admin-info-border); color: var(--admin-info-text); }
.admin-main .btn-outline-info:hover { background: var(--admin-info-bg); color: #fff; }
.admin-main .btn-outline-dark { border: 1px solid var(--yuzu-border); color: var(--yuzu-text); }
.admin-main .btn-outline-dark:hover { background: var(--admin-surface-soft); color: var(--yuzu-text); }
.admin-main .btn-outline-light { border: 1px solid var(--yuzu-border); color: var(--yuzu-muted); }
.admin-main .btn-outline-light:hover { background: var(--admin-surface-soft); color: var(--yuzu-text); }
.admin-main .btn-close { filter: invert(1) grayscale(1); opacity: .7; }

/* Badges */
.admin-main .badge { font-weight: 800; border-radius: 999px; padding: .45em .7em; }
.admin-main .badge.bg-success { background: rgba(37,211,102,.16) !important; color: var(--admin-success-text); }
.admin-main .badge.bg-danger { background: rgba(255,82,82,.16) !important; color: var(--admin-danger-text); }
.admin-main .badge.bg-warning { background: rgba(255,213,79,.16) !important; color: var(--admin-warning-text); }
.admin-main .badge.bg-info { background: rgba(64,196,255,.16) !important; color: var(--admin-info-text); }
.admin-main .badge.bg-secondary, .admin-main .badge.bg-dark, .admin-main .badge.bg-light {
  background: var(--admin-surface-soft) !important; color: var(--yuzu-muted);
}
.admin-main .badge.text-bg-dark { background: var(--admin-surface-soft) !important; color: var(--yuzu-muted); }

/* Modales */
.modal-content {
  background: var(--admin-surface); border: 1px solid var(--yuzu-border);
  border-radius: 18px; color: var(--yuzu-text); box-shadow: 0 24px 70px rgba(0,0,0,.45);
}
.modal-header { border-bottom: 1px solid var(--yuzu-border); }
.modal-footer { border-top: 1px solid var(--yuzu-border); }
.modal-title { color: var(--yuzu-text); font-weight: 800; }
.modal-body.bg-light, .modal-body.p-0.bg-light { background: transparent !important; }
.modal-backdrop.show { opacity: .65; }

/* Formularios */
.admin-main .form-control, .admin-main .form-select,
.admin-login-card .form-control, .admin-login-card .form-select {
  background: var(--admin-surface-soft); border: 1px solid var(--yuzu-border);
  border-radius: 12px; color: var(--yuzu-text);
}
.admin-main .form-control:focus, .admin-main .form-select:focus,
.admin-login-card .form-control:focus, .admin-login-card .form-select:focus {
  background: var(--admin-surface-soft); color: var(--yuzu-text);
  border-color: var(--yuzu-green); box-shadow: 0 0 0 .2rem rgba(37,211,102,.15);
}
.admin-main .form-control::placeholder, .admin-login-card .form-control::placeholder { color: var(--yuzu-muted); }
.admin-main .form-select option { color: #111; }
.admin-main .form-label, .admin-login-card .form-label { color: var(--yuzu-muted); font-weight: 700; }
.admin-main .form-check-input { background-color: var(--admin-surface-soft); border-color: var(--yuzu-border); }
.admin-main .form-check-input:checked { background-color: var(--yuzu-green-dark); border-color: var(--yuzu-green-dark); }
.admin-main .form-check-label { color: var(--yuzu-text); }

/* Alertas */
.admin-main .alert { border-radius: 14px; border: 1px solid var(--yuzu-border); color: var(--yuzu-text); }
.admin-main .alert-danger { background: var(--admin-danger-bg); border-color: var(--admin-danger-border); color: var(--admin-danger-text); }
.admin-main .alert-warning { background: var(--admin-warning-bg); border-color: var(--admin-warning-border); color: var(--admin-warning-text); }
.admin-main .alert-info { background: var(--admin-info-bg); border-color: var(--admin-info-border); color: var(--admin-info-text); }
.admin-main .alert-success { background: var(--admin-success-bg); border-color: var(--admin-success-border); color: var(--admin-success-text); }

/* Nav-tabs (módulos) */
.admin-main .nav-tabs { border-bottom: 1px solid var(--yuzu-border); }
.admin-main .nav-tabs .nav-link { color: var(--yuzu-muted); border: 0; border-radius: 12px; font-weight: 700; }
.admin-main .nav-tabs .nav-link:hover { color: var(--yuzu-text); }
.admin-main .nav-tabs .nav-link.active { color: var(--yuzu-green); background: var(--admin-surface-hover); }

/* Dropdowns / offcanvas / listas */
.admin-main .dropdown-menu { background: var(--admin-surface); border: 1px solid var(--yuzu-border); border-radius: 14px; color: var(--yuzu-text); box-shadow: var(--admin-shadow); }
.admin-main .dropdown-item { color: var(--yuzu-text); }
.admin-main .dropdown-item:hover { background: var(--admin-surface-hover); color: var(--yuzu-text); }
.admin-main .dropdown-divider { border-top: 1px solid var(--yuzu-border); }
.offcanvas { background: var(--yuzu-bg); color: var(--yuzu-text); }
.offcanvas .nav-link { color: rgba(255,255,255,.75); }
.offcanvas .nav-link.active { color: var(--yuzu-green); }

/* Spinner / bordes / miscelánea */
.admin-main .spinner-border { color: var(--yuzu-green); }
.admin-main .border, .admin-main .border-top, .admin-main .border-bottom, .admin-main .border-start, .admin-main .border-end { border-color: var(--yuzu-border) !important; }
.admin-main .text-muted { color: var(--yuzu-muted) !important; }
.admin-main .text-success { color: var(--admin-success-text) !important; }
.admin-main .text-danger { color: var(--admin-danger-text) !important; }
.admin-main .text-warning { color: var(--admin-warning-text) !important; }
.admin-main .text-info { color: var(--admin-info-text) !important; }
.admin-main .text-secondary { color: var(--yuzu-muted) !important; }
.admin-main .text-dark { color: var(--yuzu-text) !important; }
.admin-main .text-light, .admin-main .text-white { color: var(--yuzu-text) !important; }
.admin-main .bg-light, .admin-main .bg-white { background: var(--admin-surface-soft) !important; }
.admin-main .bg-success { background: rgba(37,211,102,.16) !important; }
.admin-main .bg-danger { background: rgba(255,82,82,.16) !important; }
.admin-main .bg-warning { background: rgba(255,213,79,.16) !important; }
.admin-main .bg-info { background: rgba(64,196,255,.16) !important; }
.admin-main .bg-secondary, .admin-main .bg-dark { background: var(--admin-surface-soft) !important; }
.admin-main .bg-transparent { background: transparent !important; }

/* Toast propio */
#toastContainer > div { border-radius: 12px !important; }

/* ── Responsive ───────────────────────────────────────────── */
@media (max-width: 900px) {
  .admin-layout, .admin-layout.admin-sidebar-collapsed { grid-template-columns: 1fr; }
  .admin-topbar { position: sticky; top: 0; z-index: 1060; }
  .admin-grid { grid-template-columns: 1fr; }
  .admin-kv { grid-template-columns: 1fr; }
  .admin-main { padding: 20px 14px; }
  .admin-topbar-secure, .admin-topbar-pill, .admin-topbar-time { display: none; }

  /* Menú izquierdo: cajón deslizante, oculto hasta invocarlo */
  .admin-sidebar {
    position: fixed; top: 0; left: 0; bottom: 0;
    width: 286px; max-width: 86vw;
    height: 100vh;
    padding: 20px 16px;
    z-index: 1080;
    transform: translateX(-105%);
    transition: transform .28s ease;
    box-shadow: 8px 0 30px rgba(0,0,0,.35);
    border-right: 1px solid var(--yuzu-border);
  }
  .admin-sidebar.is-open { transform: translateX(0); }
}
