/* =====================================================================
   BAYOEX SRL — capa de diseño propia sobre Bootstrap 5.3
   Se carga DESPUES de style.css y redefine por completo la interfaz.
   ===================================================================== */

:root {
  --bx-primary:        #2563eb;
  --bx-primary-dark:   #1d4ed8;
  --bx-primary-soft:   #e8efff;
  --bx-accent:         #0891b2;

  --bx-ink:            #0f172a;
  --bx-body:           #334155;
  --bx-muted:          #64748b;
  --bx-line:           #e2e8f0;
  --bx-bg:             #f1f5f9;
  --bx-surface:        #ffffff;

  --bx-success:        #16a34a;
  --bx-warning:        #d97706;
  --bx-danger:         #dc2626;

  --bx-sidebar-w:      262px;
  --bx-topbar-h:       66px;
  --bx-radius:         14px;
  --bx-radius-sm:      9px;
  --bx-shadow:         0 1px 2px rgba(15,23,42,.06), 0 8px 24px -12px rgba(15,23,42,.18);
  --bx-shadow-lg:      0 24px 60px -24px rgba(15,23,42,.35);

  /* re-tematiza los componentes nativos de Bootstrap */
  --bs-primary:        #2563eb;
  --bs-primary-rgb:    37,99,235;
  --bs-body-color:     #334155;
  --bs-border-color:   #e2e8f0;
  --bs-link-color:     #2563eb;
  --bs-link-hover-color: #1d4ed8;
}

/* ------------------------------------------------------------------ base */
body {
  margin: 0;
  background: var(--bx-bg);
  color: var(--bx-body);
  font-family: "Inter", "Segoe UI", system-ui, -apple-system, "Helvetica Neue", Arial, sans-serif;
  font-size: .9rem;
  line-height: 1.55;
  -webkit-font-smoothing: antialiased;
}
h1,h2,h3,h4,h5,h6 { color: var(--bx-ink); font-weight: 650; letter-spacing: -.01em; }
a { text-decoration: none; }
*:focus-visible { outline: 2px solid var(--bx-primary); outline-offset: 2px; }

/* ----------------------------------------------------------------- shell */
.bx-app { min-height: 100vh; }

.bx-sidebar {
  position: fixed;
  inset: 0 auto 0 0;
  width: var(--bx-sidebar-w);
  background: linear-gradient(175deg, #101a2e 0%, #0b1322 100%);
  color: #cbd5e1;
  display: flex;
  flex-direction: column;
  z-index: 1045;
  transition: transform .25s ease;
}

.bx-brand {
  height: var(--bx-topbar-h);
  display: flex;
  align-items: center;
  gap: .7rem;
  padding: 0 1.25rem;
  border-bottom: 1px solid rgba(255,255,255,.07);
  flex: none;
}
.bx-brand-mark {
  width: 40px; height: 40px;
  display: grid; place-items: center;
  flex: none;
}
.bx-brand-mark img { width: 100%; height: 100%; object-fit: contain; display: block; }
.bx-brand-text { line-height: 1.15; }
.bx-brand-text strong { display: block; color: #fff; font-size: .98rem; letter-spacing: .02em; }
.bx-brand-text span   { font-size: .7rem; color: #7c8db0; letter-spacing: .08em; text-transform: uppercase; }

.bx-nav { flex: 1 1 auto; overflow-y: auto; padding: 1rem .75rem 2rem; }
.bx-nav::-webkit-scrollbar { width: 6px; }
.bx-nav::-webkit-scrollbar-thumb { background: rgba(255,255,255,.12); border-radius: 3px; }

.bx-nav-label {
  font-size: .68rem; text-transform: uppercase; letter-spacing: .12em;
  color: #5c6c8a; padding: 1rem .85rem .4rem; font-weight: 600;
}
.bx-nav-item { display: block; }
.bx-nav-link {
  display: flex; align-items: center; gap: .75rem;
  padding: .6rem .85rem; margin-bottom: 2px;
  border-radius: var(--bx-radius-sm);
  color: #b3c0d6; font-size: .875rem; font-weight: 500;
  transition: background .15s, color .15s;
}
.bx-nav-link i { font-size: 1.15rem; width: 1.3rem; text-align: center; color: #7f90ad; transition: color .15s; }
.bx-nav-link:hover { background: rgba(255,255,255,.06); color: #fff; }
.bx-nav-link:hover i { color: #fff; }
.bx-nav-link.active { background: var(--bx-primary); color: #fff; box-shadow: 0 6px 18px -8px var(--bx-primary); }
.bx-nav-link.active i { color: #fff; }
.bx-nav-link .bx-chevron { margin-left: auto; font-size: .95rem; transition: transform .2s; }
.bx-nav-link[aria-expanded="true"] .bx-chevron { transform: rotate(90deg); }

.bx-subnav { list-style: none; margin: .1rem 0 .35rem; padding: 0 0 0 2.05rem; }
.bx-subnav a {
  display: block; padding: .38rem .8rem; margin-bottom: 1px;
  border-radius: 7px; color: #93a3bd; font-size: .83rem;
  border-left: 2px solid rgba(255,255,255,.08);
}
.bx-subnav a:hover { color: #fff; background: rgba(255,255,255,.05); }
.bx-subnav a.active { color: #fff; border-left-color: var(--bx-primary); background: rgba(37,99,235,.16); font-weight: 600; }

.bx-sidebar-foot { flex: none; padding: .9rem 1.25rem; border-top: 1px solid rgba(255,255,255,.07); font-size: .72rem; color: #5c6c8a; }

/* ------------------------------------------------------------------ main */
.bx-main { margin-left: var(--bx-sidebar-w); display: flex; flex-direction: column; min-height: 100vh; }

.bx-topbar {
  height: var(--bx-topbar-h);
  position: sticky; top: 0; z-index: 1030;
  background: rgba(255,255,255,.88);
  backdrop-filter: blur(10px);
  border-bottom: 1px solid var(--bx-line);
  display: flex; align-items: center; gap: 1rem;
  padding: 0 1.5rem;
}
.bx-burger {
  display: none; border: 1px solid var(--bx-line); background: #fff;
  width: 38px; height: 38px; border-radius: 10px; color: var(--bx-ink); font-size: 1.25rem;
}
.bx-topbar-title { font-size: 1rem; font-weight: 650; color: var(--bx-ink); margin: 0; }
.bx-topbar-sub { font-size: .76rem; color: var(--bx-muted); margin: 0; }
.bx-topbar-spacer { margin-left: auto; }

.bx-user {
  display: flex; align-items: center; gap: .6rem;
  background: none; border: 0; padding: .3rem .4rem; border-radius: 10px;
}
.bx-user:hover { background: var(--bx-bg); }
.bx-avatar {
  width: 36px; height: 36px; border-radius: 50%;
  display: grid; place-items: center; flex: none;
  background: var(--bx-primary-soft); color: var(--bx-primary-dark);
  font-weight: 700; font-size: .82rem;
}
.bx-user-meta { text-align: left; line-height: 1.2; }
.bx-user-meta strong { display: block; font-size: .83rem; color: var(--bx-ink); }
.bx-user-meta span   { font-size: .72rem; color: var(--bx-muted); text-transform: capitalize; }

.bx-content { flex: 1 1 auto; padding: 1.75rem 1.5rem 2.5rem; }
.bx-footer {
  padding: 1rem 1.5rem; border-top: 1px solid var(--bx-line);
  background: #fff; color: var(--bx-muted); font-size: .78rem;
}

/* --------------------------------------------------------------- headers */
.bx-page-head { display: flex; flex-wrap: wrap; gap: 1rem; align-items: flex-start; justify-content: space-between; margin-bottom: 1.4rem; }
.bx-page-head h1 { font-size: 1.35rem; margin: 0 0 .15rem; }
.bx-page-head p  { margin: 0; color: var(--bx-muted); font-size: .84rem; }
.bx-breadcrumb { display: flex; gap: .4rem; font-size: .76rem; color: var(--bx-muted); margin-bottom: .45rem; }
.bx-breadcrumb a { color: var(--bx-muted); }
.bx-breadcrumb a:hover { color: var(--bx-primary); }

/* ----------------------------------------------------------------- cards */
.card {
  background: var(--bx-surface);
  border: 1px solid var(--bx-line);
  border-radius: var(--bx-radius);
  box-shadow: var(--bx-shadow);
}
.card-body { padding: 1.35rem; }
.bx-card-head {
  display: flex; flex-wrap: wrap; gap: .75rem; align-items: center; justify-content: space-between;
  padding: 1.1rem 1.35rem; border-bottom: 1px solid var(--bx-line);
}
.bx-card-head h2 { font-size: .98rem; margin: 0; }
.bx-card-head p  { font-size: .78rem; color: var(--bx-muted); margin: .1rem 0 0; }

/* ----------------------------------------------------------------- stats */
.bx-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 1rem; margin-bottom: 1.5rem; }
.bx-stat {
  background: var(--bx-surface); border: 1px solid var(--bx-line);
  border-radius: var(--bx-radius); padding: 1.15rem 1.25rem;
  box-shadow: var(--bx-shadow); position: relative; overflow: hidden;
}
.bx-stat::after { content: ""; position: absolute; inset: 0 auto 0 0; width: 3px; background: var(--bx-primary); }
.bx-stat.is-success::after { background: var(--bx-success); }
.bx-stat.is-warning::after { background: var(--bx-warning); }
.bx-stat.is-danger::after  { background: var(--bx-danger); }
.bx-stat-top { display: flex; align-items: center; justify-content: space-between; gap: .5rem; }
.bx-stat-label { font-size: .75rem; text-transform: uppercase; letter-spacing: .07em; color: var(--bx-muted); font-weight: 600; }
.bx-stat-icon { width: 34px; height: 34px; border-radius: 10px; display: grid; place-items: center; background: var(--bx-primary-soft); color: var(--bx-primary-dark); font-size: 1.15rem; }
.bx-stat.is-success .bx-stat-icon { background: #e7f6ed; color: var(--bx-success); }
.bx-stat.is-warning .bx-stat-icon { background: #fdf2e0; color: var(--bx-warning); }
.bx-stat.is-danger  .bx-stat-icon { background: #fdeaea; color: var(--bx-danger); }
.bx-stat-value { font-size: 1.85rem; font-weight: 700; color: var(--bx-ink); line-height: 1.1; margin-top: .55rem; }
.bx-stat-foot  { font-size: .76rem; color: var(--bx-muted); margin-top: .2rem; }

/* ---------------------------------------------------------------- tables */
.bx-table-wrap { overflow-x: auto; }
table.bx-table { width: 100%; border-collapse: separate; border-spacing: 0; margin: 0; }
table.bx-table thead th {
  background: #f8fafc; color: var(--bx-muted);
  font-size: .72rem; text-transform: uppercase; letter-spacing: .07em; font-weight: 700;
  padding: .7rem 1rem; border-bottom: 1px solid var(--bx-line); white-space: nowrap;
}
table.bx-table tbody td { padding: .8rem 1rem; border-bottom: 1px solid #eef2f7; vertical-align: middle; }
table.bx-table tbody tr:last-child td { border-bottom: 0; }
table.bx-table tbody tr:hover { background: #f8fbff; }
.bx-td-main { font-weight: 600; color: var(--bx-ink); }
.bx-td-sub  { font-size: .76rem; color: var(--bx-muted); }
.bx-actions { display: flex; gap: .35rem; flex-wrap: wrap; justify-content: flex-end; }

/* ---------------------------------------------------------------- badges */
.bx-badge {
  display: inline-flex; align-items: center; gap: .3rem;
  padding: .2rem .55rem; border-radius: 999px;
  font-size: .72rem; font-weight: 650; letter-spacing: .01em;
  background: #eef2f7; color: var(--bx-body); white-space: nowrap;
}
.bx-badge i { font-size: .85rem; }
.bx-badge.is-success { background: #e7f6ed; color: #15803d; }
.bx-badge.is-warning { background: #fdf2e0; color: #b45309; }
.bx-badge.is-danger  { background: #fdeaea; color: #b91c1c; }
.bx-badge.is-info    { background: var(--bx-primary-soft); color: var(--bx-primary-dark); }
.bx-badge.is-muted   { background: #eef2f7; color: #64748b; }

/* --------------------------------------------------------------- buttons */
.btn { border-radius: var(--bx-radius-sm); font-weight: 600; font-size: .83rem; padding: .48rem .95rem; border-width: 1px; }
.btn i { font-size: 1rem; vertical-align: -2px; }
.btn-sm { padding: .32rem .7rem; font-size: .78rem; border-radius: 7px; }
.btn-primary { background: var(--bx-primary); border-color: var(--bx-primary); }
.btn-primary:hover, .btn-primary:focus { background: var(--bx-primary-dark); border-color: var(--bx-primary-dark); }
.btn-outline-secondary { color: var(--bx-body); border-color: var(--bx-line); background: #fff; }
.btn-outline-secondary:hover { background: #f8fafc; color: var(--bx-ink); border-color: #cbd5e1; }
.btn-light { background: #fff; border-color: var(--bx-line); color: var(--bx-body); }
.btn-light:hover { background: #f8fafc; }
.btn-success { background: var(--bx-success); border-color: var(--bx-success); }
.btn-danger  { background: var(--bx-danger);  border-color: var(--bx-danger); }
.bx-icon-btn {
  width: 32px; height: 32px; padding: 0; display: inline-grid; place-items: center;
  border-radius: 8px; border: 1px solid var(--bx-line); background: #fff; color: var(--bx-muted);
}
.bx-icon-btn:hover { color: var(--bx-primary); border-color: #bfd0f7; background: var(--bx-primary-soft); }
.bx-icon-btn.is-danger:hover { color: var(--bx-danger); border-color: #f5c2c2; background: #fdeaea; }

/* ----------------------------------------------------------------- forms */
.form-label { font-size: .79rem; font-weight: 600; color: var(--bx-ink); margin-bottom: .3rem; }
.form-label .bx-req { color: var(--bx-danger); }
.form-control, .form-select {
  border: 1px solid #d7dfea; border-radius: var(--bx-radius-sm);
  padding: .5rem .75rem; font-size: .86rem; color: var(--bx-ink); background-color: #fff;
}
.form-control:focus, .form-select:focus {
  border-color: var(--bx-primary); box-shadow: 0 0 0 3px rgba(37,99,235,.12);
}
.form-control::placeholder { color: #94a3b8; }
.form-text { font-size: .74rem; color: var(--bx-muted); }
.invalid-feedback { font-size: .75rem; }
.is-invalid { border-color: var(--bx-danger) !important; }
.bx-fieldset { border: 1px solid var(--bx-line); border-radius: var(--bx-radius); padding: 1.15rem; margin-bottom: 1.25rem; }
.bx-fieldset > legend {
  float: none; width: auto; padding: 0 .5rem; margin: 0 0 .35rem -.5rem;
  font-size: .76rem; font-weight: 700; text-transform: uppercase; letter-spacing: .08em; color: var(--bx-muted);
}

/* ---------------------------------------------------------------- alerts */
.bx-alert {
  display: flex; gap: .7rem; align-items: flex-start;
  border-radius: var(--bx-radius); padding: .85rem 1rem; margin-bottom: 1.1rem;
  border: 1px solid transparent; font-size: .85rem;
}
.bx-alert i { font-size: 1.15rem; line-height: 1.3; }
.bx-alert ul { margin: .2rem 0 0; padding-left: 1.1rem; }
.bx-alert-success { background: #ecfdf3; border-color: #bbf0ce; color: #14532d; }
.bx-alert-danger  { background: #fef2f2; border-color: #fbcaca; color: #7f1d1d; }
.bx-alert-info    { background: var(--bx-primary-soft); border-color: #c7d9fd; color: #1e3a8a; }
.bx-alert .btn-close { margin-left: auto; font-size: .7rem; }

/* ---------------------------------------------------------------- modals */
.modal-content { border: 0; border-radius: var(--bx-radius); box-shadow: var(--bx-shadow-lg); }
.modal-header  { border-bottom: 1px solid var(--bx-line); padding: 1.05rem 1.35rem; }
.modal-title   { font-size: .98rem; font-weight: 650; }
.modal-body    { padding: 1.35rem; }
.modal-footer  { border-top: 1px solid var(--bx-line); padding: .9rem 1.35rem; gap: .5rem; }

/* ------------------------------------------------------------ empty state */
.bx-empty { text-align: center; padding: 3rem 1rem; color: var(--bx-muted); }
.bx-empty i { font-size: 2.6rem; color: #cbd5e1; display: block; margin-bottom: .5rem; }
.bx-empty h3 { font-size: .95rem; margin-bottom: .25rem; }
.bx-empty p { font-size: .83rem; margin: 0; }

/* ---------------------------------------------------------- filtros barra */
.bx-filters { display: flex; flex-wrap: wrap; gap: .6rem; align-items: flex-end; }
.bx-filters .form-select, .bx-filters .form-control { min-width: 170px; }

/* -------------------------------------------------------------- contactos */
.bx-contact {
  display: flex; gap: .85rem; align-items: flex-start;
  padding: .9rem 0; border-bottom: 1px solid #eef2f7;
}
.bx-contact:last-child { border-bottom: 0; }
.bx-contact-avatar {
  width: 40px; height: 40px; border-radius: 50%; flex: none;
  display: grid; place-items: center; font-weight: 700; font-size: .8rem;
  background: var(--bx-primary-soft); color: var(--bx-primary-dark);
}
.bx-contact-body { flex: 1 1 auto; min-width: 0; }
.bx-contact-body strong { display: block; color: var(--bx-ink); font-size: .88rem; }
.bx-contact-meta { display: flex; flex-wrap: wrap; gap: .25rem 1rem; font-size: .78rem; color: var(--bx-muted); margin-top: .2rem; }
.bx-contact-meta span { display: inline-flex; align-items: center; gap: .3rem; }
.bx-contact-meta i { font-size: .95rem; }

/* ------------------------------------------------------------- data lists */
.bx-dl { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 1.1rem; }
.bx-dl dt { font-size: .72rem; text-transform: uppercase; letter-spacing: .07em; color: var(--bx-muted); font-weight: 700; margin-bottom: .15rem; }
.bx-dl dd { margin: 0; font-size: .89rem; color: var(--bx-ink); font-weight: 500; }

/* ------------------------------------------------------------- datatables */
.dataTables_wrapper .dataTables_filter input {
  border: 1px solid #d7dfea; border-radius: var(--bx-radius-sm); padding: .4rem .7rem; margin-left: .4rem; font-size: .84rem;
}
.dataTables_wrapper .dataTables_filter { margin-bottom: .9rem; }
.dataTables_wrapper .dataTables_info { font-size: .78rem; color: var(--bx-muted); padding-top: 1rem; }
.dataTables_wrapper .dataTables_paginate { padding-top: .85rem; }
.dataTables_wrapper .dataTables_paginate .paginate_button {
  border-radius: 8px !important; border: 1px solid var(--bx-line) !important;
  background: #fff !important; color: var(--bx-body) !important;
  margin-left: 3px; padding: .3rem .65rem !important; font-size: .8rem;
}
.dataTables_wrapper .dataTables_paginate .paginate_button.current {
  background: var(--bx-primary) !important; border-color: var(--bx-primary) !important; color: #fff !important;
}
.dataTables_wrapper .dataTables_paginate .paginate_button.disabled { opacity: .45; }
table.dataTable { border-collapse: separate !important; }

/* --------------------------------------------------------------- overlay */
.bx-overlay {
  position: fixed; inset: 0; background: rgba(15,23,42,.45);
  z-index: 1040; opacity: 0; pointer-events: none; transition: opacity .2s;
}
body.bx-nav-open .bx-overlay { opacity: 1; pointer-events: auto; }

/* ------------------------------------------------------------ responsive */
@media (max-width: 991.98px) {
  .bx-sidebar { transform: translateX(-100%); box-shadow: var(--bx-shadow-lg); }
  body.bx-nav-open .bx-sidebar { transform: translateX(0); }
  .bx-main { margin-left: 0; }
  .bx-burger { display: inline-grid; place-items: center; }
  .bx-content { padding: 1.25rem 1rem 2rem; }
  .bx-topbar { padding: 0 1rem; }
  .bx-user-meta { display: none; }
}

/* ------------------------------------------------------------------ login */
.bx-login {
  min-height: 100vh; display: grid; grid-template-columns: 1.05fr .95fr;
  background: var(--bx-bg);
}
.bx-login-aside {
  position: relative; overflow: hidden; color: #e2e8f0;
  background: linear-gradient(150deg, #101a2e 0%, #14305e 55%, #0b1322 100%);
  display: flex; flex-direction: column; justify-content: space-between; padding: 3rem;
}
.bx-login-aside::before {
  content: ""; position: absolute; width: 520px; height: 520px; right: -170px; top: -170px;
  border-radius: 50%; background: radial-gradient(circle, rgba(37,99,235,.45), transparent 65%);
}
.bx-login-aside > * { position: relative; }
.bx-login-aside h2 { color: #fff; font-size: 2rem; line-height: 1.2; margin-bottom: .8rem; }
.bx-login-aside p { color: #a9b8d1; max-width: 26rem; font-size: .92rem; }
.bx-login-points { list-style: none; padding: 0; margin: 2rem 0 0; }
.bx-login-points li { display: flex; gap: .65rem; align-items: center; margin-bottom: .7rem; font-size: .88rem; color: #c3d0e6; }
.bx-login-points i { color: #60a5fa; font-size: 1.15rem; }
.bx-login-legal { font-size: .74rem; color: #6b7d9c; }

.bx-login-main { display: grid; place-items: center; padding: 2rem; }
.bx-login-card { width: 100%; max-width: 400px; }
.bx-login-card .bx-brand { border: 0; padding: 0; height: auto; margin-bottom: 1.8rem; }
.bx-login-card .bx-brand-text strong { color: var(--bx-ink); }
.bx-login-logo { text-align: center; margin-bottom: 1.6rem; }
.bx-login-logo img { width: 160px; max-width: 60%; height: auto; }
.bx-login-card h1 { font-size: 1.45rem; margin-bottom: .3rem; }
.bx-login-card > p { color: var(--bx-muted); font-size: .86rem; margin-bottom: 1.6rem; }
.bx-input-icon { position: relative; }
.bx-input-icon > i { position: absolute; left: .85rem; top: 50%; transform: translateY(-50%); color: #94a3b8; font-size: 1.1rem; }
.bx-input-icon .form-control { padding-left: 2.5rem; height: 44px; }
.bx-login-card .btn-primary { height: 44px; width: 100%; font-size: .9rem; }

@media (max-width: 991.98px) {
  .bx-login { grid-template-columns: 1fr; }
  .bx-login-aside { display: none; }
}

/* --------------------------------------------------------------- utility */
.bx-muted { color: var(--bx-muted); }
.bx-nowrap { white-space: nowrap; }
.bx-mono { font-family: "SFMono-Regular", Consolas, "Liberation Mono", monospace; font-size: .82rem; }
@media print {
  .bx-sidebar, .bx-topbar, .bx-footer, .bx-actions, .btn { display: none !important; }
  .bx-main { margin-left: 0; }
  .card { box-shadow: none; border-color: #ccc; }
}

/* --------------------------------------------------------------- select2 */
.select2-container--default .select2-selection--single {
  height: auto; border: 1px solid #d7dfea; border-radius: var(--bx-radius-sm); padding: .32rem .25rem;
}
.select2-container--default .select2-selection--single .select2-selection__rendered {
  color: var(--bx-ink); font-size: .86rem; line-height: 1.6; padding-left: .5rem;
}
.select2-container--default .select2-selection--single .select2-selection__arrow { height: 100%; right: .35rem; }
.select2-container--default.select2-container--focus .select2-selection--single,
.select2-container--default.select2-container--open .select2-selection--single {
  border-color: var(--bx-primary); box-shadow: 0 0 0 3px rgba(37,99,235,.12);
}
.select2-dropdown { border-color: #d7dfea; border-radius: var(--bx-radius-sm); box-shadow: var(--bx-shadow); }
.select2-search--dropdown .select2-search__field { border: 1px solid #d7dfea; border-radius: 7px; padding: .35rem .5rem; font-size: .85rem; }
.select2-container--default .select2-results__option { font-size: .86rem; padding: .45rem .7rem; }
.select2-container--default .select2-results__option--highlighted[aria-selected] { background: var(--bx-primary); }
.select2-container { width: 100% !important; }

/* ------------------------------------------------------ repetidor filas */
.bx-repeater-row {
  display: grid; gap: .6rem; align-items: end;
  grid-template-columns: 1.4fr 1fr 1fr .6fr 1.4fr 38px;
  padding: .8rem; border: 1px dashed #d7dfea; border-radius: var(--bx-radius-sm); margin-bottom: .6rem;
  background: #fbfcfe;
}
@media (max-width: 991.98px) { .bx-repeater-row { grid-template-columns: 1fr 1fr; } }

/* ------------------------------------------------------------- adjuntos */
.bx-file-box {
  border: 1px dashed #c8d4e6; border-radius: var(--bx-radius-sm);
  padding: 1rem; text-align: center; background: #fbfcfe;
}
.bx-file-box i { font-size: 1.8rem; color: var(--bx-primary); }
.bx-file-current {
  display: flex; align-items: center; gap: .7rem;
  padding: .7rem .9rem; border: 1px solid var(--bx-line); border-radius: var(--bx-radius-sm); background: #f8fafc;
}
.bx-file-current i { font-size: 1.5rem; color: var(--bx-danger); }

/* ---------------------------------------------------- grilla de selección */
.bx-check-grid {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: .5rem;
  max-height: 260px; overflow-y: auto; padding: .25rem;
}
.bx-check-card {
  display: flex; gap: .6rem; align-items: flex-start;
  border: 1px solid var(--bx-line); border-radius: var(--bx-radius-sm);
  padding: .6rem .75rem; cursor: pointer; background: #fff; transition: border-color .15s, background .15s;
}
.bx-check-card:hover { border-color: #bfd0f7; background: #fbfcfe; }
.bx-check-card input { margin-top: .15rem; flex: none; }
.bx-check-card:has(input:checked) { border-color: var(--bx-primary); background: var(--bx-primary-soft); }
.bx-check-card strong { display: block; font-size: .84rem; color: var(--bx-ink); font-weight: 600; }
.bx-check-card span   { font-size: .75rem; color: var(--bx-muted); }

/* ------------------------------------------------------------ condiciones */
.bx-condicion {
  border: 1px solid var(--bx-line); border-radius: var(--bx-radius);
  margin-bottom: .85rem; background: #fff; overflow: hidden;
}
.bx-condicion-head {
  display: flex; gap: .85rem; align-items: flex-start;
  padding: .95rem 1.1rem; background: #fbfcfe; border-bottom: 1px solid var(--bx-line);
}
.bx-condicion-icon {
  width: 38px; height: 38px; border-radius: 10px; flex: none;
  display: grid; place-items: center; font-size: 1.2rem;
  background: var(--bx-primary-soft); color: var(--bx-primary-dark);
}
.bx-condicion-body { flex: 1 1 auto; min-width: 0; }
.bx-condicion-body strong { display: block; font-size: .92rem; color: var(--bx-ink); }
.bx-condicion-meta { display: flex; flex-wrap: wrap; gap: .3rem .85rem; font-size: .77rem; color: var(--bx-muted); margin-top: .25rem; }
.bx-condicion-meta span { display: inline-flex; align-items: center; gap: .3rem; }
.bx-condicion-cuerpo { padding: .9rem 1.1rem; }

/* ------------------------------------------------------- vencimientos */
.bx-venc-lista { display: flex; flex-wrap: wrap; gap: .4rem; }
.bx-venc {
  display: inline-flex; align-items: center; gap: .35rem;
  border: 1px solid var(--bx-line); border-radius: 999px;
  padding: .22rem .6rem; font-size: .75rem; background: #fff; white-space: nowrap;
}
.bx-venc i { font-size: .9rem; }
.bx-venc.es-cumplido { background: #e7f6ed; border-color: #bbf0ce; color: #15803d; }
.bx-venc.es-vencido  { background: #fdeaea; border-color: #f5c2c2; color: #b91c1c; }
.bx-venc.es-hoy      { background: #fdf2e0; border-color: #f7ddb0; color: #b45309; font-weight: 650; }
.bx-venc.es-proximo  { background: #fff8e8; border-color: #f2e2bd; color: #92700e; }
.bx-venc form { display: inline; }
.bx-venc button { border: 0; background: none; padding: 0; color: inherit; line-height: 1; opacity: .6; }
.bx-venc button:hover { opacity: 1; }

.bx-resp-chips { display: flex; flex-wrap: wrap; gap: .3rem; }
.bx-resp-chip {
  display: inline-flex; align-items: center; gap: .35rem;
  background: #eef2f7; border-radius: 999px; padding: .18rem .55rem .18rem .2rem; font-size: .75rem; color: var(--bx-body);
}
.bx-resp-chip i { width: 20px; height: 20px; border-radius: 50%; background: var(--bx-primary-soft); color: var(--bx-primary-dark); display: grid; place-items: center; font-size: .8rem; }

/* ===================================================================== */
/* CALENDARIO DE EQUIPO                                                  */
/* ===================================================================== */
.bx-cal-wrap { overflow-x: auto; }
.bx-cal {
  width: 100%; border-collapse: separate; border-spacing: 0; min-width: 980px;
}
.bx-cal th, .bx-cal td { border-bottom: 1px solid var(--bx-line); vertical-align: top; }
.bx-cal thead th {
  background: #f8fafc; padding: .6rem .7rem; text-align: left;
  font-size: .74rem; text-transform: uppercase; letter-spacing: .06em; color: var(--bx-muted); font-weight: 700;
  position: sticky; top: 0; z-index: 2;
}
.bx-cal thead th.es-hoy { background: var(--bx-primary-soft); color: var(--bx-primary-dark); }
.bx-cal thead th .bx-cal-num { display: block; font-size: 1.05rem; color: var(--bx-ink); font-weight: 700; letter-spacing: 0; }
.bx-cal thead th.es-hoy .bx-cal-num { color: var(--bx-primary-dark); }

.bx-cal-persona {
  width: 190px; min-width: 190px; padding: .8rem .8rem;
  background: #fff; position: sticky; left: 0; z-index: 1;
  border-right: 1px solid var(--bx-line);
}
.bx-cal-persona .bx-avatar { width: 32px; height: 32px; font-size: .74rem; }
.bx-cal-persona-nom { font-size: .85rem; font-weight: 650; color: var(--bx-ink); line-height: 1.2; }
.bx-cal-persona-sub { font-size: .72rem; color: var(--bx-muted); }

.bx-cal-celda { padding: .45rem; min-width: 118px; }
.bx-cal-celda.es-hoy { background: #f6f9ff; }
.bx-cal-celda.es-nolaboral { background: #fafbfc; }

.bx-cal-evento {
  display: block; width: 100%; text-align: left;
  border: 1px solid var(--bx-line); border-left: 3px solid var(--bx-muted);
  border-radius: 7px; padding: .35rem .45rem; margin-bottom: .3rem;
  background: #fff; font-size: .74rem; line-height: 1.3; cursor: pointer;
}
.bx-cal-evento:hover { box-shadow: var(--bx-shadow); }
.bx-cal-evento .bx-cal-hora { font-weight: 700; color: var(--bx-ink); display: block; }
.bx-cal-evento .bx-cal-tit  { color: var(--bx-body); display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.bx-cal-evento.es-reunion  { border-left-color: var(--bx-primary); background: #f5f8ff; }
.bx-cal-evento.es-ausencia { border-left-color: #7c3aed; background: #f8f5ff; }
.bx-cal-evento.es-bloqueo  { border-left-color: #64748b; background: #f8fafc; }
.bx-cal-evento.es-reserva  { border-left-color: var(--bx-success); background: #f3fbf6; }
.bx-cal-evento.es-cancelado { opacity: .5; text-decoration: line-through; }

.bx-cal-hito {
  display: block; border-radius: 6px; padding: .28rem .45rem; margin-bottom: .3rem;
  background: #fdf2e0; color: #92700e; font-size: .72rem; font-weight: 600;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.bx-cal-hito.es-vencido { background: #fdeaea; color: #b91c1c; }

.bx-cal-libre { font-size: .72rem; color: #cbd5e1; padding: .2rem .1rem; }

.bx-cal-nav { display: flex; align-items: center; gap: .4rem; }
.bx-cal-rango { font-size: .88rem; font-weight: 650; color: var(--bx-ink); min-width: 210px; text-align: center; }

.bx-leyenda { display: flex; flex-wrap: wrap; gap: .8rem; font-size: .75rem; color: var(--bx-muted); }
.bx-leyenda span { display: inline-flex; align-items: center; gap: .35rem; }
.bx-leyenda i { width: 10px; height: 10px; border-radius: 3px; display: inline-block; }

/* -------------------------------------------------------- horario propio */
.bx-dia-fila {
  display: grid; grid-template-columns: 120px 1fr; gap: .8rem;
  padding: .7rem 0; border-bottom: 1px solid #eef2f7; align-items: start;
}
.bx-dia-fila:last-child { border-bottom: 0; }
.bx-dia-nombre { font-size: .85rem; font-weight: 650; color: var(--bx-ink); padding-top: .4rem; }
.bx-franja { display: flex; gap: .4rem; align-items: center; margin-bottom: .4rem; }
.bx-franja input[type="time"] { max-width: 120px; }
.bx-franja-vacio { font-size: .8rem; color: var(--bx-muted); padding: .4rem 0; }

/* ------------------------------------------------------------- enlaces */
.bx-enlace {
  border: 1px solid var(--bx-line); border-radius: var(--bx-radius);
  padding: 1rem 1.1rem; margin-bottom: .8rem; background: #fff;
}
.bx-enlace-url {
  display: flex; gap: .4rem; align-items: center; margin-top: .6rem;
  background: #f8fafc; border: 1px solid var(--bx-line); border-radius: var(--bx-radius-sm); padding: .4rem .5rem .4rem .7rem;
}
.bx-enlace-url code { flex: 1 1 auto; font-size: .78rem; color: var(--bx-primary-dark); overflow-x: auto; white-space: nowrap; }

/* ===================================================================== */
/* PÁGINA PÚBLICA DE RESERVA                                             */
/* ===================================================================== */
.bx-pub { min-height: 100vh; background: var(--bx-bg); padding: 2.5rem 1rem; }
.bx-pub-card {
  max-width: 940px; margin: 0 auto; background: #fff;
  border: 1px solid var(--bx-line); border-radius: 18px; box-shadow: var(--bx-shadow); overflow: hidden;
}
.bx-pub-head { display: grid; grid-template-columns: 300px 1fr; }
@media (max-width: 767.98px) { .bx-pub-head { grid-template-columns: 1fr; } }

.bx-pub-info { padding: 2rem; border-right: 1px solid var(--bx-line); background: #fbfcfe; }
@media (max-width: 767.98px) { .bx-pub-info { border-right: 0; border-bottom: 1px solid var(--bx-line); } }
.bx-pub-info h1 { font-size: 1.25rem; margin: .9rem 0 .3rem; }
.bx-pub-anfitrion { font-size: .85rem; color: var(--bx-muted); }
.bx-pub-datos { list-style: none; padding: 0; margin: 1.3rem 0 0; }
.bx-pub-datos li { display: flex; gap: .55rem; align-items: center; font-size: .85rem; color: var(--bx-body); margin-bottom: .55rem; }
.bx-pub-datos i { color: var(--bx-muted); font-size: 1.1rem; }

.bx-pub-slots { padding: 1.75rem 2rem 2rem; }
.bx-pub-dia { margin-bottom: 1.4rem; }
.bx-pub-dia h3 {
  font-size: .76rem; text-transform: uppercase; letter-spacing: .07em;
  color: var(--bx-muted); font-weight: 700; margin-bottom: .55rem;
}
.bx-slots { display: grid; grid-template-columns: repeat(auto-fill, minmax(92px, 1fr)); gap: .45rem; }
.bx-slot {
  border: 1px solid #c8d8f7; background: #fff; color: var(--bx-primary-dark);
  border-radius: 9px; padding: .55rem .3rem; font-size: .85rem; font-weight: 650; text-align: center;
  transition: background .15s, transform .1s;
}
.bx-slot:hover { background: var(--bx-primary); color: #fff; border-color: var(--bx-primary); }
.bx-slot.is-activo { background: var(--bx-primary); color: #fff; border-color: var(--bx-primary); }

.bx-pub-foot { text-align: center; font-size: .76rem; color: var(--bx-muted); margin-top: 1.25rem; }
.bx-pub-ok { max-width: 520px; margin: 0 auto; text-align: center; padding: 2.5rem 2rem; }
.bx-pub-ok .bx-ok-icono {
  width: 64px; height: 64px; border-radius: 50%; margin: 0 auto 1.1rem;
  display: grid; place-items: center; background: #e7f6ed; color: var(--bx-success); font-size: 2rem;
}

/* ===================================================================== */
/* TICKETS                                                               */
/* ===================================================================== */
.bx-ticket-cod { font-family: "SFMono-Regular", Consolas, monospace; font-size: .8rem; color: var(--bx-muted); }

.bx-prio { display: inline-flex; align-items: center; gap: .3rem; font-size: .75rem; font-weight: 700; }
.bx-prio i { font-size: .95rem; }
.bx-prio.p-baja    { color: #64748b; }
.bx-prio.p-media   { color: var(--bx-primary-dark); }
.bx-prio.p-alta    { color: #b45309; }
.bx-prio.p-urgente { color: #b91c1c; }

.bx-fila-urgente { box-shadow: inset 3px 0 0 var(--bx-danger); }

/* ------------------------------------------------------------- hilo */
.bx-hilo { position: relative; padding-left: 2.4rem; }
.bx-hilo::before {
  content: ""; position: absolute; left: 1.05rem; top: .4rem; bottom: .4rem;
  width: 2px; background: var(--bx-line);
}
.bx-msg { position: relative; margin-bottom: 1.1rem; }
.bx-msg-avatar {
  position: absolute; left: -2.4rem; top: 0;
  width: 34px; height: 34px; border-radius: 50%;
  display: grid; place-items: center; font-weight: 700; font-size: .72rem;
  background: var(--bx-primary-soft); color: var(--bx-primary-dark);
  border: 2px solid #fff;
}
.bx-msg.es-cliente .bx-msg-avatar { background: #eef2f7; color: #475569; }
.bx-msg-caja {
  border: 1px solid var(--bx-line); border-radius: var(--bx-radius);
  background: #fff; overflow: hidden;
}
.bx-msg.es-interno .bx-msg-caja { border-color: #f0dcb4; background: #fffdf7; }
.bx-msg-cab {
  display: flex; flex-wrap: wrap; gap: .5rem; align-items: center;
  padding: .55rem .9rem; border-bottom: 1px solid var(--bx-line); background: #fbfcfe;
  font-size: .78rem;
}
.bx-msg.es-interno .bx-msg-cab { background: #fdf8ec; border-bottom-color: #f0dcb4; }
.bx-msg-autor { font-weight: 650; color: var(--bx-ink); }
.bx-msg-fecha { color: var(--bx-muted); }
.bx-msg-cuerpo { padding: .85rem .9rem; font-size: .88rem; white-space: pre-wrap; word-break: break-word; }
.bx-msg-pie { padding: 0 .9rem .8rem; }

.bx-horas-chip {
  display: inline-flex; align-items: center; gap: .3rem;
  background: #e7f6ed; color: #15803d; border-radius: 999px;
  padding: .18rem .6rem; font-size: .74rem; font-weight: 700;
}

/* --------------------------------------------------------- adjuntos */
.bx-adjuntos { display: flex; flex-wrap: wrap; gap: .4rem; }
.bx-adjunto {
  display: inline-flex; align-items: center; gap: .45rem;
  border: 1px solid var(--bx-line); border-radius: var(--bx-radius-sm);
  padding: .35rem .65rem; background: #fff; font-size: .78rem; color: var(--bx-body);
  max-width: 260px;
}
.bx-adjunto:hover { border-color: #bfd0f7; background: var(--bx-primary-soft); color: var(--bx-primary-dark); }
.bx-adjunto i { font-size: 1.15rem; color: var(--bx-muted); flex: none; }
.bx-adjunto:hover i { color: var(--bx-primary-dark); }
.bx-adjunto-nom { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.bx-adjunto-peso { color: var(--bx-muted); font-size: .72rem; flex: none; }

/* -------------------------------------------------- drag and drop */
.bx-drop {
  border: 2px dashed #c8d4e6; border-radius: var(--bx-radius);
  background: #fbfcfe; padding: 1.4rem 1rem; text-align: center;
  transition: border-color .15s, background .15s;
  cursor: pointer;
}
.bx-drop:hover { border-color: var(--bx-primary); background: var(--bx-primary-soft); }
.bx-drop.is-arrastrando {
  border-color: var(--bx-primary); background: var(--bx-primary-soft);
  box-shadow: 0 0 0 4px rgba(37,99,235,.12);
}
.bx-drop i { font-size: 2rem; color: var(--bx-primary); display: block; margin-bottom: .35rem; }
.bx-drop-titulo { font-size: .88rem; font-weight: 650; color: var(--bx-ink); }
.bx-drop-sub { font-size: .76rem; color: var(--bx-muted); margin-top: .15rem; }
.bx-drop input[type="file"] { display: none; }

.bx-drop-lista { display: flex; flex-wrap: wrap; gap: .4rem; margin-top: .7rem; }
.bx-drop-item {
  display: inline-flex; align-items: center; gap: .5rem;
  border: 1px solid var(--bx-line); border-radius: var(--bx-radius-sm);
  padding: .35rem .4rem .35rem .65rem; background: #fff; font-size: .78rem; max-width: 280px;
}
.bx-drop-item i.bx-arch { color: var(--bx-muted); font-size: 1.1rem; flex: none; }
.bx-drop-item .nom { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.bx-drop-item .peso { color: var(--bx-muted); font-size: .72rem; flex: none; }
.bx-drop-item button { border: 0; background: none; color: var(--bx-muted); padding: 0 .15rem; line-height: 1; }
.bx-drop-item button:hover { color: var(--bx-danger); }
.bx-drop-item.es-rechazado { border-color: #f5c2c2; background: #fdeaea; color: #b91c1c; }

/* ---------------------------------------------------- panel lateral */
.bx-panel-dato { padding: .65rem 0; border-bottom: 1px solid #eef2f7; }
.bx-panel-dato:last-child { border-bottom: 0; }
.bx-panel-dato dt {
  font-size: .71rem; text-transform: uppercase; letter-spacing: .07em;
  color: var(--bx-muted); font-weight: 700; margin-bottom: .15rem;
}
.bx-panel-dato dd { margin: 0; font-size: .86rem; color: var(--bx-ink); }

.bx-horas-total {
  text-align: center; padding: 1.1rem; border-radius: var(--bx-radius);
  background: linear-gradient(135deg, #eef4ff, #e7f6ed); border: 1px solid #d6e4fb;
}
.bx-horas-total .valor { font-size: 1.75rem; font-weight: 700; color: var(--bx-ink); line-height: 1.1; }
.bx-horas-total .etiqueta { font-size: .74rem; text-transform: uppercase; letter-spacing: .07em; color: var(--bx-muted); font-weight: 700; }

/* ===================================================================== */
/* BIBLIOTECA DE CONOCIMIENTO                                            */
/* ===================================================================== */

/* -------------------------------------------------- tarjetas de espacio */
.bx-espacios { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 1rem; }
.bx-espacio {
  display: block; background: #fff; border: 1px solid var(--bx-line);
  border-radius: var(--bx-radius); padding: 1.15rem; box-shadow: var(--bx-shadow);
  transition: transform .12s, box-shadow .12s; position: relative; overflow: hidden;
}
.bx-espacio:hover { transform: translateY(-2px); box-shadow: 0 12px 28px -14px rgba(15,23,42,.3); }
.bx-espacio::after { content: ""; position: absolute; inset: 0 auto 0 0; width: 4px; background: var(--bx-primary); }
.bx-espacio-icono {
  width: 42px; height: 42px; border-radius: 12px; display: grid; place-items: center;
  font-size: 1.4rem; background: var(--bx-primary-soft); color: var(--bx-primary-dark); margin-bottom: .7rem;
}
.bx-espacio h3 { font-size: .98rem; margin: 0 0 .2rem; color: var(--bx-ink); }
.bx-espacio p  { font-size: .8rem; color: var(--bx-muted); margin: 0 0 .6rem; }
.bx-espacio-pie { display: flex; gap: .5rem; align-items: center; font-size: .75rem; color: var(--bx-muted); }

/* ------------------------------------------------------ árbol de páginas */
.bx-arbol { list-style: none; margin: 0; padding: 0; }
.bx-arbol ul { list-style: none; margin: .1rem 0 .2rem; padding-left: .9rem; border-left: 1px solid var(--bx-line); }
.bx-arbol a {
  display: block; padding: .38rem .6rem; border-radius: 7px;
  font-size: .84rem; color: var(--bx-body); line-height: 1.35;
}
.bx-arbol a:hover { background: #f1f5f9; color: var(--bx-ink); }
.bx-arbol a.activo { background: var(--bx-primary-soft); color: var(--bx-primary-dark); font-weight: 650; }
.bx-arbol .es-borrador { opacity: .62; font-style: italic; }
.bx-arbol-titulo {
  font-size: .71rem; text-transform: uppercase; letter-spacing: .08em;
  color: var(--bx-muted); font-weight: 700; padding: 0 .6rem .4rem;
}

/* ---------------------------------------------------- índice del artículo */
.bx-toc { position: sticky; top: calc(var(--bx-topbar-h) + 1rem); }
.bx-toc a {
  display: block; padding: .28rem .6rem; border-radius: 6px;
  font-size: .8rem; color: var(--bx-muted); border-left: 2px solid transparent; line-height: 1.35;
}
.bx-toc a:hover { color: var(--bx-primary-dark); background: #f8fafc; }
.bx-toc a.n3 { padding-left: 1.4rem; font-size: .77rem; }
.bx-toc a.activo { color: var(--bx-primary-dark); border-left-color: var(--bx-primary); background: var(--bx-primary-soft); }

/* ================================================= contenido renderizado */
.bx-doc { font-size: .93rem; line-height: 1.72; color: #2b3a4f; overflow-wrap: break-word; }
.bx-doc > *:first-child { margin-top: 0; }

.bx-doc h1, .bx-doc h2, .bx-doc h3, .bx-doc h4, .bx-doc h5, .bx-doc h6 {
  color: var(--bx-ink); font-weight: 680; line-height: 1.3; scroll-margin-top: calc(var(--bx-topbar-h) + 1rem);
}
.bx-doc h1 { font-size: 1.6rem;  margin: 2rem 0 .8rem; }
.bx-doc h2 { font-size: 1.3rem;  margin: 2rem 0 .7rem; padding-bottom: .35rem; border-bottom: 1px solid var(--bx-line); }
.bx-doc h3 { font-size: 1.08rem; margin: 1.6rem 0 .5rem; }
.bx-doc h4 { font-size: .96rem;  margin: 1.3rem 0 .4rem; }

.bx-doc p { margin: 0 0 1rem; }
.bx-doc a { color: var(--bx-primary-dark); text-decoration: underline; text-underline-offset: 2px; }
.bx-doc a:hover { color: var(--bx-primary); }

.bx-doc ul, .bx-doc ol { margin: 0 0 1rem; padding-left: 1.5rem; }
.bx-doc li { margin-bottom: .35rem; }
.bx-doc li > ul, .bx-doc li > ol { margin: .35rem 0 0; }
.bx-doc li input[type="checkbox"] { margin-right: .4rem; }

.bx-doc blockquote {
  margin: 0 0 1rem; padding: .75rem 1rem;
  border-left: 3px solid var(--bx-primary); background: var(--bx-primary-soft);
  border-radius: 0 var(--bx-radius-sm) var(--bx-radius-sm) 0; color: #1e3a8a;
}
.bx-doc blockquote > *:last-child { margin-bottom: 0; }

.bx-doc hr { border: 0; border-top: 1px solid var(--bx-line); margin: 2rem 0; }

.bx-doc img {
  max-width: 100%; height: auto; border-radius: var(--bx-radius-sm);
  border: 1px solid var(--bx-line); margin: .4rem 0;
}

.bx-doc table {
  width: 100%; border-collapse: separate; border-spacing: 0; margin: 0 0 1.2rem;
  border: 1px solid var(--bx-line); border-radius: var(--bx-radius-sm); overflow: hidden; font-size: .86rem;
}
.bx-doc thead th {
  background: #f8fafc; text-align: left; padding: .6rem .8rem;
  font-size: .74rem; text-transform: uppercase; letter-spacing: .06em; color: var(--bx-muted); font-weight: 700;
  border-bottom: 1px solid var(--bx-line);
}
.bx-doc tbody td { padding: .6rem .8rem; border-bottom: 1px solid #eef2f7; }
.bx-doc tbody tr:last-child td { border-bottom: 0; }

/* código en línea */
.bx-doc :not(.bx-code) > pre > code,
.bx-doc p code, .bx-doc li code, .bx-doc td code, .bx-doc h1 code, .bx-doc h2 code,
.bx-doc h3 code, .bx-doc h4 code, .bx-doc blockquote code {
  font-family: "SFMono-Regular", Consolas, "Liberation Mono", monospace;
  font-size: .85em; background: #f1f5f9; color: #be185d;
  padding: .12em .38em; border-radius: 5px; border: 1px solid #e2e8f0;
}

/* anclas de los encabezados */
.bx-doc .bx-ancla {
  color: #cbd5e1; text-decoration: none; margin-left: .45rem;
  font-weight: 400; opacity: 0; transition: opacity .15s;
}
.bx-doc h2:hover .bx-ancla, .bx-doc h3:hover .bx-ancla,
.bx-doc h4:hover .bx-ancla { opacity: 1; }
.bx-doc .bx-ancla:hover { color: var(--bx-primary); }

/* ----------------------------------------------------- bloques de código */
.bx-code {
  position: relative; margin: 0 0 1.2rem;
  border: 1px solid #1f2b3e; border-radius: var(--bx-radius-sm); overflow: hidden;
  background: #0f1729;
}
.bx-code::before {
  content: attr(data-lenguaje);
  position: absolute; top: 0; left: 0;
  font-size: .68rem; text-transform: uppercase; letter-spacing: .09em; font-weight: 700;
  color: #64748b; background: #16203a; padding: .25rem .65rem;
  border-radius: 0 0 7px 0;
}
.bx-code pre {
  margin: 0; padding: 2.1rem 1rem 1rem; overflow-x: auto; background: transparent;
}
.bx-code code {
  font-family: "SFMono-Regular", Consolas, "Liberation Mono", monospace;
  font-size: .82rem; line-height: 1.65; color: #dbe4f0; background: none; border: 0; padding: 0;
  white-space: pre;
}
.bx-code-copiar {
  position: absolute; top: .3rem; right: .35rem; z-index: 2;
  border: 1px solid #2b3a52; background: #16203a; color: #93a3bd;
  border-radius: 6px; width: 28px; height: 26px; display: grid; place-items: center; font-size: .9rem;
}
.bx-code-copiar:hover { background: #22304d; color: #fff; }

/* tokens */
.bx-code .c-kw  { color: #93c5fd; font-weight: 600; }
.bx-code .c-str { color: #86efac; }
.bx-code .c-com { color: #64748b; font-style: italic; }
.bx-code .c-num { color: #fca5a5; }
.bx-code .c-var { color: #fcd34d; }
.bx-code .c-fn  { color: #c4b5fd; }

/* ----------------------------------------------------------- editor */
.bx-editor { display: grid; grid-template-columns: 1fr 1fr; gap: 0; border-top: 1px solid var(--bx-line); }
@media (max-width: 1199.98px) { .bx-editor { grid-template-columns: 1fr; } .bx-editor-vista { display: none; } }
.bx-editor.solo-escribir { grid-template-columns: 1fr; }
.bx-editor.solo-escribir .bx-editor-vista { display: none; }
.bx-editor.solo-vista { grid-template-columns: 1fr; }
.bx-editor.solo-vista .bx-editor-panel { display: none; }

.bx-editor-panel { border-right: 1px solid var(--bx-line); display: flex; flex-direction: column; min-width: 0; }
.bx-editor-vista { padding: 1.2rem; overflow-y: auto; max-height: 72vh; background: #fff; min-width: 0; }

.bx-barra {
  display: flex; flex-wrap: wrap; gap: .15rem; align-items: center;
  padding: .4rem .5rem; border-bottom: 1px solid var(--bx-line); background: #fbfcfe;
}
.bx-barra button {
  border: 1px solid transparent; background: none; color: var(--bx-body);
  width: 32px; height: 30px; border-radius: 6px; display: grid; place-items: center; font-size: 1rem;
}
.bx-barra button:hover { background: #fff; border-color: var(--bx-line); color: var(--bx-primary-dark); }
.bx-barra .sep { width: 1px; height: 20px; background: var(--bx-line); margin: 0 .3rem; }

#cuerpoMarkdown {
  border: 0; border-radius: 0; resize: vertical; min-height: 60vh;
  font-family: "SFMono-Regular", Consolas, "Liberation Mono", monospace;
  font-size: .85rem; line-height: 1.7; tab-size: 4;
}
#cuerpoMarkdown:focus { box-shadow: none; }

.bx-editor-pie {
  display: flex; flex-wrap: wrap; gap: .75rem; align-items: center; justify-content: space-between;
  padding: .5rem .8rem; border-top: 1px solid var(--bx-line); background: #fbfcfe;
  font-size: .76rem; color: var(--bx-muted);
}
.bx-editor-drop {
  border: 1px dashed transparent; transition: border-color .15s, background .15s;
}
.bx-editor-drop.is-arrastrando { border-color: var(--bx-primary); background: var(--bx-primary-soft); }

/* ------------------------------------------------------- resultados */
.bx-resultado {
  display: block; padding: .9rem 0; border-bottom: 1px solid #eef2f7;
}
.bx-resultado:last-child { border-bottom: 0; }
.bx-resultado h3 { font-size: .95rem; margin: 0 0 .2rem; color: var(--bx-primary-dark); }
.bx-resultado p  { font-size: .83rem; color: var(--bx-muted); margin: 0 0 .35rem; }
.bx-resultado-meta { display: flex; flex-wrap: wrap; gap: .35rem .8rem; font-size: .74rem; color: var(--bx-muted); }

.bx-tags { display: flex; flex-wrap: wrap; gap: .3rem; }
.bx-tag {
  display: inline-flex; align-items: center; gap: .25rem;
  background: #eef2f7; color: #475569; border-radius: 999px;
  padding: .16rem .6rem; font-size: .73rem; font-weight: 600;
}
.bx-tag:hover { background: var(--bx-primary-soft); color: var(--bx-primary-dark); }

/* -------------------------------------------------------- versiones */
.bx-version {
  display: flex; gap: .7rem; align-items: flex-start;
  padding: .65rem 0; border-bottom: 1px solid #eef2f7; font-size: .82rem;
}
.bx-version:last-child { border-bottom: 0; }
.bx-version-num {
  flex: none; width: 34px; height: 24px; border-radius: 6px;
  display: grid; place-items: center; background: #eef2f7; color: #475569;
  font-size: .74rem; font-weight: 700;
}

/* ===================================================================== */
/* FINANZAS                                                              */
/* ===================================================================== */
.bx-fila-anulada { opacity: .5; }
.bx-fila-anulada .bx-td-main { text-decoration: line-through; }

.bx-flujo-tabla th, .bx-flujo-tabla td { white-space: nowrap; }
.bx-flujo-tabla tbody tr.es-actual { background: #f6f9ff; font-weight: 600; }
.bx-num { text-align: right; font-variant-numeric: tabular-nums; }
.bx-num.es-positivo { color: #15803d; }
.bx-num.es-negativo { color: #b91c1c; }
.bx-num.es-cero     { color: var(--bx-muted); }

.bx-grafico { position: relative; height: 340px; }
.bx-grafico-alto { height: 420px; }

.bx-mes-detalle { border-top: 1px solid #eef2f7; }
.bx-mes-detalle td { background: #fbfcfe; padding: .8rem 1rem !important; white-space: normal !important; }
.bx-mes-lista { display: flex; flex-wrap: wrap; gap: .35rem; }
.bx-mes-item {
  display: inline-flex; align-items: center; gap: .35rem;
  border: 1px solid var(--bx-line); border-radius: 999px;
  padding: .2rem .6rem; font-size: .74rem; background: #fff;
}
.bx-mes-item.es-ingreso { border-color: #bbf0ce; background: #f3fbf6; color: #15803d; }
.bx-mes-item.es-egreso  { border-color: #f5c2c2; background: #fdf5f5; color: #b91c1c; }

/* ------------------------------------------- aviso de prioridad crítica */
.bx-nota-alerta {
  display: flex;
  gap: .6rem;
  padding: .7rem .8rem;
  border: 1px solid #fcd9a4;
  border-left: 4px solid var(--bx-warning);
  border-radius: var(--bx-radius-sm);
  background: #fffaf2;
  color: #7c4a03;
  font-size: .82rem;
  line-height: 1.45;
}
.bx-nota-alerta i { font-size: 1.05rem; line-height: 1.3; color: var(--bx-warning); }
.bx-nota-alerta strong { display: block; color: #6b3f02; }

.bx-cita {
  margin: 0 0 1rem;
  padding: .7rem .9rem;
  border-left: 4px solid var(--bx-primary);
  border-radius: 0 var(--bx-radius-sm) var(--bx-radius-sm) 0;
  background: var(--bx-primary-soft);
  color: var(--bx-ink);
  font-weight: 550;
}

/* ------------------------------------------- contenido HTML de tickets */
/* Descripciones y respuestas escritas con el editor o pegadas desde un correo */
.bx-html-ticket { font-size: .89rem; line-height: 1.6; color: #2b3a4f; overflow-wrap: break-word; overflow-x: auto; }
.bx-msg-cuerpo.bx-html-ticket { white-space: normal; }
.bx-html-ticket > *:first-child { margin-top: 0; }
.bx-html-ticket > *:last-child  { margin-bottom: 0; }
.bx-html-ticket p { margin: 0 0 .6rem; }
.bx-html-ticket img { max-width: 100%; height: auto; }
.bx-html-ticket table { max-width: 100%; margin: 0 0 .8rem; }
.bx-html-ticket table[border]:not([border="0"]) td,
.bx-html-ticket table[border]:not([border="0"]) th { border: 1px solid #cbd5e1; padding: .3rem .5rem; }
.bx-html-ticket blockquote { margin: 0 0 .8rem; padding: .3rem .9rem; border-left: 3px solid var(--bx-line); color: #52627a; }
.bx-html-ticket pre { white-space: pre-wrap; background: #f6f8fb; padding: .6rem .8rem; border-radius: var(--bx-radius-sm); }
.bx-html-ticket ul, .bx-html-ticket ol { padding-left: 1.4rem; margin: 0 0 .6rem; }

/* El editor ocupa el ancho del formulario */
.tox-tinymce { border-radius: var(--bx-radius-sm) !important; }

/* ------------------------------------ abrir ticket a nombre del cliente */
.bx-nota-solicitante {
  display: flex;
  gap: .6rem;
  padding: .75rem .85rem;
  border: 1px solid #d6e2fb;
  border-left: 4px solid var(--bx-primary);
  border-radius: var(--bx-radius-sm);
  background: var(--bx-primary-soft);
  color: var(--bx-ink);
  font-size: .82rem;
  line-height: 1.45;
}
.bx-nota-solicitante > i { font-size: 1.15rem; line-height: 1.2; color: var(--bx-primary); }
.bx-nota-solicitante strong { display: block; }
.bx-nota-solicitante .form-label { font-size: .78rem; font-weight: 600; }

/* ------------------------------------------- mensajes largos plegados */
.bx-plegable.is-plegado {
  max-height: var(--bx-plegable-alto, 16em);
  overflow: hidden;
  -webkit-mask-image: linear-gradient(to bottom, #000 72%, transparent);
          mask-image: linear-gradient(to bottom, #000 72%, transparent);
}
.bx-plegable-btn {
  display: inline-flex; align-items: center; gap: .25rem;
  margin-top: .45rem; padding: .25rem .7rem;
  border: 1px solid #d6e2fb; border-radius: 999px;
  background: var(--bx-primary-soft); color: var(--bx-primary-dark, var(--bx-primary));
  font-size: .78rem; font-weight: 600; cursor: pointer;
}
.bx-plegable-btn:hover { background: #dbe6ff; }
@media print {
  .bx-plegable.is-plegado { max-height: none; overflow: visible; -webkit-mask-image: none; mask-image: none; }
  .bx-plegable-btn { display: none; }
}
