:root {
  --primary: #285a9f;
  --primary-contrast: #ffffff;
  --primary-dark: #1d4479;
  --danger: #b42318;
  --text: #10233f;
  --muted: #667085;
  --border: #d7dfeb;
  --background: #f4f7fb;
  --surface: #fff;
  --surface-alt: #eef3f8;
  --surface-alt-contrast: #10233f;
  --success: #067647;
  --shadow: 0 12px 30px rgba(16, 35, 63, .08);
}

* { box-sizing: border-box; }
html, body { margin: 0; min-height: 100%; }
body {
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;
  color: var(--text);
  background: var(--background);
}
body.booting { overflow: hidden; }
button, input, select, textarea { font: inherit; }
.hidden { display: none !important; }

.boot-screen {
  position: fixed;
  inset: 0;
  display: grid;
  place-items: center;
  background: var(--background);
  z-index: 999;
}
.spinner {
  width: 34px;
  height: 34px;
  border: 3px solid var(--border);
  border-top-color: var(--primary);
  border-radius: 50%;
  animation: spin .8s linear infinite;
}
@keyframes spin { to { transform: rotate(360deg); } }

.topbar {
  min-height: 78px;
  padding: 14px clamp(22px, 4vw, 52px);
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 18px;
  background: var(--surface);
  border-bottom: 1px solid var(--border);
}
.brand-area, .session-box, .local-actions, .form-actions {
  display: flex;
  align-items: center;
  gap: 12px;
}
.brand-logo { width: 46px; height: 46px; object-fit: contain; }
.brand-name { font-size: 1.15rem; font-weight: 800; }
.brand-subtitle { color: var(--muted); font-size: .86rem; }
.session-box { color: var(--muted); }

.main {
  width: min(1500px, 100%);
  margin: 0 auto;
  padding: 34px clamp(18px, 4vw, 52px) 70px;
}
.navigation { display: flex; flex-wrap: wrap; gap: 9px; margin-bottom: 30px; }
.nav-button {
  border: 1px solid var(--border);
  background: var(--surface);
  border-radius: 999px;
  padding: 11px 18px;
  font-weight: 750;
  cursor: pointer;
}
.nav-button.active { background: var(--primary); color: var(--primary-contrast); border-color: var(--primary); }

.page-header {
  display: flex;
  justify-content: space-between;
  align-items: start;
  gap: 20px;
  margin-bottom: 24px;
}
.page-header h1, .section-title h2, .card h2 { margin-top: 0; }
.page-header p { color: var(--muted); margin-bottom: 0; }

.button {
  border: 0;
  border-radius: 10px;
  min-height: 40px;
  padding: 9px 16px;
  font-weight: 750;
  cursor: pointer;
}
.button-primary { background: var(--primary); color: var(--primary-contrast); }
.button-primary:hover:not(:disabled) { background: var(--primary-dark); }
.button-secondary { background: var(--surface-alt); color: var(--text); }
.button-danger { background: var(--danger); color: #fff; }
.button-small { min-height: 34px; padding: 7px 11px; font-size: .84rem; }

.card {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 16px;
  padding: 24px;
  box-shadow: var(--shadow);
}

.login-layout {
  min-height: calc(100vh - 190px);
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(360px, 500px);
  align-items: stretch;
  gap: 24px;
}
.login-card { align-self: center; }
.login-image-panel {
  border-radius: 18px;
  background-size: cover;
  background-position: center;
  min-height: 520px;
}

label {
  display: flex;
  flex-direction: column;
  gap: 7px;
  margin-bottom: 15px;
  font-weight: 650;
}
input, select, textarea {
  width: 100%;
  min-height: 43px;
  padding: 10px 12px;
  border: 1px solid #bdc9d9;
  border-radius: 9px;
  background: var(--surface);
  color: var(--text);
}
input:focus, select:focus, textarea:focus {
  outline: none;
  border-color: var(--primary);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--primary) 16%, transparent);
}

.stats-grid, .cards-grid, .upload-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
  gap: 18px;
}
.stat-card {
  min-height: 125px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 15px;
  padding: 22px;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  box-shadow: var(--shadow);
}
.stat-card span { color: var(--muted); font-weight: 700; }
.stat-card strong { font-size: 2rem; }

.section-title { margin: 34px 0 14px; }
.table-wrap {
  overflow: auto;
  border: 1px solid var(--border);
  border-radius: 14px;
  background: var(--surface);
}
table { width: 100%; border-collapse: collapse; }
th, td {
  padding: 14px 15px;
  text-align: left;
  border-bottom: 1px solid var(--border);
  vertical-align: middle;
}
th { background: var(--surface-alt); color: var(--surface-alt-contrast); font-size: .86rem; }
tbody tr:last-child td { border-bottom: 0; }
.actions-cell { text-align: right; white-space: nowrap; }
.badge {
  display: inline-flex;
  border-radius: 999px;
  padding: 4px 9px;
  background: var(--surface-alt);
  font-size: .78rem;
  font-weight: 800;
}
.badge-success { color: var(--success); background: #ecfdf3; }

.local-card {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 22px;
}
.local-card h2 { margin-bottom: 12px; }
.local-card p { color: var(--muted); margin: 5px 0; }
.local-actions { align-self: center; }

.filters { display: flex; gap: 16px; margin-bottom: 18px; }
.filters label { min-width: 230px; }

.form-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 4px 18px;
}
.full-width { grid-column: 1 / -1; }
.checkbox-label { flex-direction: row; align-items: center; }
.checkbox-label input { width: auto; min-height: auto; }

.upload-card {
  border: 1px solid var(--border);
  border-radius: 13px;
  padding: 16px;
  background: var(--surface-alt);
}
.preview-box {
  height: 120px;
  display: grid;
  place-items: center;
  border: 1px dashed #aeb9c8;
  border-radius: 10px;
  background: var(--surface);
  color: var(--muted);
  margin-bottom: 14px;
  overflow: hidden;
}
.preview-box img { width: 100%; height: 100%; object-fit: contain; }
.preview-wide img { object-fit: cover; }
.preview-square {
  width: min(100%, 320px);
  height: auto;
  aspect-ratio: 1 / 1;
  margin-left: auto;
  margin-right: auto;
}
.preview-contain img { object-fit: contain; }
.preview-cover img { object-fit: cover; }
.field-help {
  display: block;
  margin: 4px 0 8px;
  color: var(--muted);
  font-size: .88em;
  font-weight: 400;
}

.editor-dialog {
  width: min(860px, calc(100vw - 32px));
  border: 0;
  border-radius: 16px;
  padding: 0;
  box-shadow: 0 24px 70px rgba(0,0,0,.22);
}
.editor-dialog::backdrop { background: rgba(16, 35, 63, .55); }
.editor-dialog form { padding: 24px; }
.dialog-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 18px;
}
.dialog-header h2 { margin: 0; }
.icon-button {
  border: 0;
  background: transparent;
  font-size: 2rem;
  cursor: pointer;
  color: var(--muted);
}

.message { padding: 11px 13px; border-radius: 9px; }
.message-success { color: #05603a; background: #ecfdf3; }
.message-error { color: #912018; background: #fef3f2; }
.toast {
  position: fixed;
  right: 22px;
  bottom: 22px;
  z-index: 1000;
  color: #fff;
  background: var(--success);
  padding: 14px 18px;
  border-radius: 10px;
  box-shadow: var(--shadow);
}
.toast-error { background: var(--danger); }
.empty-state { text-align: center; padding: 32px; color: var(--muted); }
.footer { text-align: center; color: var(--muted); padding: 18px; font-size: .84rem; }
pre { max-width: 650px; white-space: pre-wrap; word-break: break-word; font-size: .78rem; }

@media (max-width: 850px) {
  .login-layout { grid-template-columns: 1fr; }
  .login-image-panel { min-height: 230px; }
  .topbar, .page-header, .local-card, .session-box {
    align-items: stretch;
    flex-direction: column;
  }
  .form-grid { grid-template-columns: 1fr; }
  .full-width { grid-column: auto; }
  .filters { flex-direction: column; }
}

.login-layout:not(.with-image) {
  grid-template-columns: minmax(360px, 520px);
  justify-content: center;
  align-items: center;
}
.login-layout:not(.with-image) .login-card { width: 100%; }
.link-button {
  display:block;
  margin-top:16px;
  padding:0;
  border:0;
  background:transparent;
  color:var(--primary);
  text-decoration:underline;
  cursor:pointer;
}
.helper-text {
  color:var(--muted);
  margin:0 0 16px;
}



/* PLATAFORMA_LOGIN_INTEGRADO */
#loginView.hidden,
#workspaceView.hidden,
#sessionBox.hidden {
  display: none !important;
}

#loginView.login-layout {
  width: min(1100px, calc(100% - 32px));
  min-height: 610px;
  margin: 34px auto;
  padding: 0;
  grid-template-columns: minmax(360px, 1fr) minmax(420px, 1fr);
  overflow: hidden;
  border: 1px solid #dbe4ef;
  border-radius: 18px;
  background: #fff;
  box-shadow: 0 20px 55px rgba(28,52,84,.14);
}

#loginView.login-layout:not(.hidden) {
  display: grid;
}

#loginImagePanel.login-image-panel {
  min-height: 610px;
  padding: 50px 40px 38px;
  box-sizing: border-box;
  display: flex !important;
  flex-direction: column;
  justify-content: space-between;
  color: #fff;
  text-align: center;
  background-position: center;
  background-size: cover;
}

.login-brand-main {
  margin-top: 60px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 13px;
}

.login-brand-logo {
  display: block;
  max-width: min(370px, 90%);
  max-height: 145px;
  object-fit: contain;
  padding: 10px 15px;
  border-radius: 10px;
  background: rgba(255,255,255,.97);
}

.login-brand-name {
  font-size: 1.4rem;
  font-weight: 800;
}

.login-brand-domain {
  font-size: .95rem;
  opacity: .88;
}

.login-brand-subtitle {
  max-width: 390px;
  line-height: 1.5;
  opacity: .95;
}

.login-brand-footer {
  text-align: left;
  line-height: 1.5;
  opacity: .9;
}

#loginView .login-card {
  min-width: 0;
  min-height: 610px;
  padding: 68px 62px;
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
  justify-content: center;
  border: 0;
  border-radius: 0;
  box-shadow: none;
}

#loginView .login-card input {
  width: 100%;
  box-sizing: border-box;
}

@media (max-width: 850px) {
  #loginView.login-layout {
    width: 100%;
    min-height: 100vh;
    margin: 0;
    grid-template-columns: 1fr;
    border-radius: 0;
  }

  #loginImagePanel.login-image-panel {
    min-height: 280px;
    padding: 28px 24px;
  }

  .login-brand-main {
    margin-top: 4px;
  }

  #loginView .login-card {
    min-height: auto;
    padding: 42px 28px;
  }
}

/* ===== Plataforma Next central: formato tipo panel antiguo ===== */
.workspace.platform-central-workspace {
  display: grid;
  grid-template-columns: 290px minmax(0, 1fr);
  gap: 0;
  padding: 0;
  min-height: calc(100vh - 72px);
  background: #f4f7fb;
}

.platform-sidebar {
  background: #1f66a8;
  color: #fff;
  min-height: calc(100vh - 72px);
  padding: 28px 18px;
  box-shadow: 8px 0 28px rgba(15, 23, 42, 0.08);
}

.platform-sidebar-logo {
  background: #fff;
  border-radius: 0;
  padding: 10px;
  margin-bottom: 22px;
}

.platform-sidebar-logo img {
  display: block;
  width: 100%;
  height: auto;
  max-height: 72px;
  object-fit: contain;
}

.platform-sidebar-title {
  font-size: 1.25rem;
  font-weight: 800;
  margin: 0 0 22px 4px;
}

.platform-sidebar-section {
  color: rgba(255, 255, 255, 0.75);
  font-size: 0.8rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  margin: 0 0 10px 6px;
}

.platform-sidebar-nav {
  display: grid;
  gap: 5px;
}

.platform-nav-button {
  width: 100%;
  border: 0;
  border-radius: 10px;
  background: transparent;
  color: #eef7ff;
  text-align: left;
  padding: 13px 16px;
  font-weight: 700;
  font-size: 0.98rem;
  cursor: pointer;
}

.platform-nav-button:hover {
  background: rgba(255, 255, 255, 0.12);
}

.platform-nav-button.active {
  background: #2679c8;
  color: #fff;
  box-shadow: inset 4px 0 0 #5ed3ff;
}

.platform-main {
  min-width: 0;
  padding: 34px 38px 60px;
}

.platform-main .page-header {
  margin-top: 0;
}

.platform-main .stats-grid {
  grid-template-columns: repeat(4, minmax(180px, 1fr));
}

.platform-main .table-wrap,
.platform-main .card,
.platform-main .stat-card {
  border: 1px solid #d8e2ef;
  box-shadow: 0 12px 28px rgba(15, 23, 42, 0.06);
}

/* ===== Modal contraseña / recuperación ===== */
.dialog,
.modal,
.password-dialog,
#passwordDialog,
#changePasswordDialog,
#forgotPasswordDialog {
  max-width: 640px !important;
  width: min(640px, calc(100vw - 40px)) !important;
  max-height: calc(100vh - 80px) !important;
  overflow: auto !important;
  margin: auto !important;
  border-radius: 18px !important;
  padding: 0 !important;
  border: 1px solid #d8e2ef !important;
  box-shadow: 0 30px 80px rgba(15, 23, 42, 0.28) !important;
  background: #fff !important;
}

.dialog form,
.modal form,
.password-dialog form,
#passwordDialog form,
#changePasswordDialog form,
#forgotPasswordDialog form {
  padding: 24px !important;
}

.dialog h1,
.dialog h2,
.modal h1,
.modal h2,
.password-dialog h1,
.password-dialog h2,
#passwordDialog h1,
#passwordDialog h2,
#changePasswordDialog h1,
#changePasswordDialog h2,
#forgotPasswordDialog h1,
#forgotPasswordDialog h2 {
  font-size: 1.45rem !important;
  margin: 0 0 14px !important;
}

.dialog input,
.modal input,
.password-dialog input,
#passwordDialog input,
#changePasswordDialog input,
#forgotPasswordDialog input {
  min-height: 46px !important;
  font-size: 1rem !important;
}

.dialog .button,
.modal .button,
.password-dialog .button,
#passwordDialog .button,
#changePasswordDialog .button,
#forgotPasswordDialog .button {
  min-height: 44px !important;
}

dialog::backdrop {
  background: rgba(15, 23, 42, 0.45);
  backdrop-filter: blur(3px);
}

@media (max-width: 980px) {
  .workspace.platform-central-workspace {
    grid-template-columns: 1fr;
  }

  .platform-sidebar {
    min-height: auto;
  }

  .platform-main {
    padding: 24px 18px 44px;
  }

  .platform-main .stats-grid {
    grid-template-columns: 1fr;
  }
}

/* ===== Ajuste visual final Plataforma central ===== */
body:has(.platform-central-workspace) {
  background: #f5f8fc;
}

.workspace.platform-central-workspace {
  grid-template-columns: 265px minmax(0, 1fr) !important;
  min-height: calc(100vh - 62px) !important;
  background: #f5f8fc !important;
}

.platform-sidebar {
  width: 265px !important;
  min-height: calc(100vh - 62px) !important;
  padding: 22px 14px !important;
  background: #2068a8 !important;
  box-shadow: 10px 0 30px rgba(15, 23, 42, 0.08) !important;
}

.platform-sidebar-logo {
  margin: 0 0 18px !important;
  padding: 8px !important;
  background: #fff !important;
}

.platform-sidebar-logo img {
  max-height: 58px !important;
  width: 100% !important;
  object-fit: contain !important;
}

.platform-sidebar-title {
  margin: 0 0 18px 4px !important;
  font-size: 1.05rem !important;
  line-height: 1.2 !important;
}

.platform-sidebar-section {
  margin: 0 0 8px 6px !important;
  font-size: 0.72rem !important;
  letter-spacing: 0.08em !important;
}

.platform-sidebar-nav {
  gap: 2px !important;
}

.platform-nav-button {
  min-height: 0 !important;
  padding: 10px 14px !important;
  font-size: 0.92rem !important;
  line-height: 1.25 !important;
  border-radius: 8px !important;
  font-weight: 700 !important;
}

.platform-nav-button.active {
  background: #2879c5 !important;
  box-shadow: inset 4px 0 0 #61d6ff !important;
}

.platform-main {
  padding: 28px 32px 50px !important;
  max-width: none !important;
  width: 100% !important;
}

.platform-main .page-header {
  align-items: flex-start !important;
  margin-bottom: 24px !important;
}

.platform-main .page-header h1 {
  font-size: 2rem !important;
  line-height: 1.15 !important;
  margin: 0 0 12px !important;
}

.platform-main .page-header p {
  margin: 0 !important;
  font-size: 1rem !important;
  color: #5f6f86 !important;
}

.platform-main .button,
.platform-main button.button,
.platform-main .button-secondary {
  min-height: 40px !important;
  padding: 9px 18px !important;
  border-radius: 10px !important;
  font-size: 0.92rem !important;
}

.platform-main .stats-grid {
  display: grid !important;
  grid-template-columns: repeat(4, minmax(170px, 1fr)) !important;
  gap: 18px !important;
  margin-top: 18px !important;
}

.platform-main .stat-card {
  min-height: 118px !important;
  padding: 24px 26px !important;
  border-radius: 14px !important;
}

.platform-main .stat-card span {
  font-size: 0.95rem !important;
  font-weight: 700 !important;
  color: #5e6d83 !important;
}

.platform-main .stat-card strong {
  font-size: 2.1rem !important;
  margin-top: 18px !important;
}

.platform-main .table-wrap {
  max-width: 100% !important;
  overflow-x: auto !important;
  border-radius: 14px !important;
  background: #fff !important;
}

.platform-main table {
  width: 100% !important;
  min-width: 860px !important;
  border-collapse: collapse !important;
  table-layout: auto !important;
}

.platform-main th {
  font-size: 0.86rem !important;
  font-weight: 800 !important;
  color: #082348 !important;
  background: #eef4fa !important;
  padding: 14px 16px !important;
  white-space: nowrap !important;
}

.platform-main td {
  font-size: 0.92rem !important;
  padding: 14px 16px !important;
  vertical-align: middle !important;
  white-space: normal !important;
  word-break: normal !important;
}

.platform-main td:first-child,
.platform-main th:first-child {
  padding-left: 20px !important;
}

.platform-main .card {
  border-radius: 14px !important;
  padding: 24px 28px !important;
}

.platform-main pre {
  white-space: pre-wrap !important;
  background: #f3f7fb !important;
  border: 1px solid #d8e2ef !important;
  border-radius: 10px !important;
  padding: 14px !important;
  font-size: 0.86rem !important;
}

/* Ajuste de topbar cuando se usa el panel central */
body:has(.platform-central-workspace) .topbar {
  min-height: 62px !important;
  padding: 10px 24px !important;
}

body:has(.platform-central-workspace) .brand-area {
  display: none !important;
}

body:has(.platform-central-workspace) .session-box {
  margin-left: auto !important;
}

/* Evita cortes visuales raros en auditoría */
.platform-main td:nth-child(1) {
  white-space: nowrap !important;
}

.platform-main td:nth-child(2) {
  max-width: 260px !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
}

/* Modal password más compacto y centrado */
dialog {
  max-width: 620px !important;
  width: min(620px, calc(100vw - 44px)) !important;
  border-radius: 16px !important;
  padding: 0 !important;
}

dialog form {
  padding: 24px !important;
}

dialog input {
  min-height: 44px !important;
}

@media (max-width: 1100px) {
  .workspace.platform-central-workspace {
    grid-template-columns: 235px minmax(0, 1fr) !important;
  }

  .platform-sidebar {
    width: 235px !important;
  }

  .platform-main {
    padding: 24px 22px 44px !important;
  }

  .platform-main .stats-grid {
    grid-template-columns: repeat(2, minmax(160px, 1fr)) !important;
  }
}

@media (max-width: 780px) {
  .workspace.platform-central-workspace {
    grid-template-columns: 1fr !important;
  }

  .platform-sidebar {
    width: auto !important;
    min-height: auto !important;
  }

  .platform-main .stats-grid {
    grid-template-columns: 1fr !important;
  }
}


/* Ventanas modales propias de la aplicación */
body.app-modal-open { overflow: hidden; }
.app-modal-backdrop {
  position: fixed; inset: 0; z-index: 10000;
  display: grid; place-items: center; padding: 24px;
  background: rgba(16, 35, 63, .58);
  backdrop-filter: blur(2px);
}
.app-modal {
  width: min(520px, 100%); background: #fff; color: #10233f;
  border: 1px solid #d8e2ef; border-radius: 18px;
  box-shadow: 0 24px 70px rgba(16, 35, 63, .28); overflow: hidden;
}
.app-modal-header {
  display: flex; align-items: center; justify-content: space-between; gap: 16px;
  padding: 22px 24px 14px;
}
.app-modal-header h2 { margin: 0; font-size: 1.35rem; }
.app-modal-close {
  border: 0; background: transparent; color: #526a86; font-size: 1.8rem;
  line-height: 1; cursor: pointer; padding: 2px 6px;
}
.app-modal-body { padding: 4px 24px 22px; }
.app-modal-body p { margin: 0; line-height: 1.55; white-space: normal; }
.app-modal-field { display: grid; gap: 8px; margin-top: 18px; font-weight: 700; }
.app-modal-field input {
  width: 100%; min-height: 46px; box-sizing: border-box; padding: 10px 12px;
  border: 1px solid #bfcddd; border-radius: 10px; font: inherit;
}
.app-modal-field input:focus { outline: 3px solid rgba(43, 112, 174, .18); border-color: #2b70ae; }
.app-modal-actions {
  display: flex; justify-content: flex-end; gap: 12px;
  padding: 16px 24px 22px; background: #f7f9fc;
}
@media (max-width: 560px) {
  .app-modal-actions { flex-direction: column-reverse; }
  .app-modal-actions .button { width: 100%; }
}


/* ===== Ajustes definitivos de login y barras laterales ===== */
html, body { min-height: 100%; }

/* Login: todo el contenido de marca queda centrado verticalmente. */
#loginImagePanel.login-image-panel,
#loginView.domain-login-layout #loginImagePanel {
  justify-content: center !important;
  gap: 22px !important;
}
.login-brand-main,
.domain-login-brand-main {
  margin-top: 0 !important;
}
.login-brand-footer,
.domain-login-footer {
  width: min(420px, 100%);
  margin: 0 auto;
  text-align: center !important;
}

/* Con una sesión abierta desaparecen topbar, márgenes y altura extra. */
body:has(#workspaceView:not(.hidden)) {
  overflow-x: hidden;
}
body:has(#workspaceView:not(.hidden)) .topbar,
body:has(#workspaceView:not(.hidden)) .footer {
  display: none !important;
}
body:has(#workspaceView:not(.hidden)) .main {
  width: 100% !important;
  max-width: none !important;
  min-height: 100dvh !important;
  margin: 0 !important;
  padding: 0 !important;
}

/* Barra lateral común. */
.platform-sidebar,
.tenant-sidebar {
  height: 100dvh !important;
  min-height: 100dvh !important;
  max-height: 100dvh !important;
  padding: 22px 14px !important;
  display: flex !important;
  flex-direction: column !important;
  overflow: hidden !important;
  box-sizing: border-box !important;
}
.platform-sidebar-nav,
.tenant-sidebar-nav {
  min-height: 0;
  overflow-y: auto;
  overflow-x: hidden;
  scrollbar-width: thin;
}
.platform-sidebar-nav { flex: 1 1 auto; }

.sidebar-logout-button {
  width: 100%;
  flex: 0 0 auto;
  margin-top: auto;
  padding: 11px 14px;
  border: 1px solid rgba(255,255,255,.42);
  border-radius: 9px;
  background: rgba(7, 40, 72, .22);
  color: #fff;
  font-weight: 750;
  text-align: left;
  cursor: pointer;
}
.sidebar-logout-button:hover,
.sidebar-logout-button:focus-visible {
  background: rgba(255,255,255,.16);
  outline: none;
}

/* Panel central Plataforma sin desbordamiento artificial. */
.workspace.platform-central-workspace {
  min-height: 100dvh !important;
}
.platform-sidebar {
  position: sticky;
  top: 0;
}

/* Panel de organización con el mismo patrón lateral. */
#workspaceView.workspace:not(.platform-central-workspace) {
  display: grid;
  grid-template-columns: 265px minmax(0, 1fr);
  gap: 0;
  min-height: 100dvh;
  padding: 0;
  background: #f5f8fc;
}
#workspaceView.workspace:not(.platform-central-workspace) > .panel-view {
  grid-column: 2;
  grid-row: 1;
  min-width: 0;
  padding: 28px 32px 50px;
}
.tenant-sidebar {
  grid-column: 1;
  grid-row: 1;
  position: sticky;
  top: 0;
  width: 265px;
  margin: 0 !important;
  border-radius: 0;
  background: var(--primary, #2068a8);
  color: #fff;
  box-shadow: 10px 0 30px rgba(15,23,42,.08);
}
.tenant-sidebar-logo-wrap {
  min-height: 70px;
  margin-bottom: 18px;
  padding: 8px;
  display: grid;
  place-items: center;
  background: #fff;
}
.tenant-sidebar-logo {
  display: block;
  width: 100%;
  max-height: 58px;
  object-fit: contain;
}
.tenant-sidebar-logo.hidden + * { display: none; }
.tenant-sidebar-title {
  margin: 0 4px 18px;
  font-size: 1.05rem;
  line-height: 1.2;
  font-weight: 800;
}
.tenant-sidebar-section {
  margin: 0 6px 8px;
  color: rgba(255,255,255,.75);
  font-size: .72rem;
  letter-spacing: .08em;
  text-transform: uppercase;
}
.tenant-sidebar-nav {
  flex: 1 1 auto;
  display: grid;
  align-content: start;
  gap: 2px;
}
.tenant-sidebar .nav-button {
  width: 100%;
  min-height: 0;
  padding: 10px 14px;
  border: 0;
  border-radius: 8px;
  background: transparent;
  color: #eef7ff;
  font-size: .92rem;
  line-height: 1.25;
  font-weight: 700;
  text-align: left;
}
.tenant-sidebar .nav-button:hover { background: rgba(255,255,255,.12); }
.tenant-sidebar .nav-button.active {
  background: rgba(40,121,197,.9);
  box-shadow: inset 4px 0 0 #61d6ff;
}

@media (max-width: 780px) {
  #workspaceView.workspace:not(.platform-central-workspace) {
    grid-template-columns: 1fr;
  }
  .platform-sidebar,
  .tenant-sidebar {
    position: relative;
    width: auto !important;
    height: auto !important;
    min-height: auto !important;
    max-height: none !important;
  }
  #workspaceView.workspace:not(.platform-central-workspace) > .panel-view {
    grid-column: 1;
    grid-row: auto;
    padding: 24px 18px 44px;
  }
  .sidebar-logout-button { margin-top: 16px; }
}


/* ===== Ajuste v2: pie del login abajo y navegación lateral compacta ===== */
#loginImagePanel.login-image-panel,
#loginView.domain-login-layout #loginImagePanel {
  justify-content: flex-start !important;
  gap: 0 !important;
}

.login-brand-main,
.domain-login-brand-main {
  flex: 1 1 auto !important;
  min-height: 0 !important;
  margin: 0 !important;
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  justify-content: center !important;
}

.login-brand-footer,
.domain-login-footer {
  flex: 0 0 auto !important;
  width: min(420px, 100%) !important;
  margin: 24px auto 0 !important;
  text-align: center !important;
}

.platform-sidebar-nav,
.tenant-sidebar-nav {
  flex: 0 1 auto !important;
  align-content: start !important;
  grid-auto-rows: max-content !important;
  overflow-y: auto !important;
}

.platform-nav-button,
.tenant-sidebar .nav-button {
  min-height: 0 !important;
  height: auto !important;
  padding-top: 9px !important;
  padding-bottom: 9px !important;
}

@media (max-width: 850px) {
  .login-brand-main,
  .domain-login-brand-main {
    flex: 0 0 auto !important;
    padding: 12px 0 !important;
  }

  .login-brand-footer,
  .domain-login-footer {
    margin-top: 16px !important;
  }
}

/* Backups Next: programación y dominios */
.backup-schedule-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:14px; align-items:end; margin:16px 0; }
.backup-schedule-grid label { display:flex; flex-direction:column; gap:6px; font-weight:600; }
.backup-schedule-grid input, .backup-schedule-grid select { width:100%; }
.backup-schedule-grid .backup-check { flex-direction:row; align-items:center; align-self:center; }
.backup-schedule-grid .backup-check input { width:auto; }
.domain-backup-card { margin-bottom:16px; }
.domain-backup-heading { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; }
.domain-backup-heading h2 { margin-bottom:4px; }
@media (max-width:760px) { .domain-backup-heading { flex-direction:column; } }

.backup-job-card{margin:16px 0}.backup-job-card .backup-check{display:inline-flex;margin:10px 18px 10px 0;gap:8px;align-items:center}.button-danger{background:#a52a2a;color:#fff;border:0}


/* ===== Ajuste visual backups + tipografía configurable ===== */
:root {
  --sidebar-font-family: Inter, ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;
  --sidebar-font-weight: 560;
  --sidebar-font-size: 16px;
}

.platform-sidebar,
.tenant-sidebar,
.platform-nav-button,
.tenant-sidebar .nav-button,
.sidebar-logout-button {
  font-family: var(--sidebar-font-family) !important;
}

.platform-nav-button,
.tenant-sidebar .nav-button,
.sidebar-logout-button {
  font-weight: var(--sidebar-font-weight) !important;
  letter-spacing: .005em;
}

.section-heading-compact {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 18px;
  margin-bottom: 18px;
}
.section-heading-compact h2 { margin: 0 0 5px; }
.section-heading-compact p { margin: 0; color: var(--muted); }

.ui-font-settings { padding: 24px 28px; }
.ui-font-controls {
  display: grid;
  grid-template-columns: minmax(230px, 340px) minmax(280px, 1fr) auto;
  align-items: end;
  gap: 16px;
}
.sidebar-font-preview {
  min-height: 48px;
  display: flex;
  align-items: center;
  padding: 10px 16px;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: #f7faff;
  color: #16365f;
}

.backup-settings-intro { padding: 22px 28px; }
.backup-settings-intro h2 { margin-bottom: 6px; }
.backup-settings-intro p { margin: 0; }

.backup-quota-config {
  padding: 26px 28px;
  display: grid;
  gap: 22px;
}
.backup-quota-config > h3 { margin: 0; font-size: 1.35rem; }
.backup-quota-config > h3 + p { margin: -16px 0 0; color: var(--muted); }
.backup-quota-config h4 {
  margin: 0;
  padding-top: 4px;
  font-size: 1.05rem;
}
.backup-quota-config .form-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(180px, 1fr));
  gap: 16px;
  margin: 0;
}
.backup-quota-config .form-grid:has(.local-quota-input) {
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
}
.backup-recipient-groups {
  display: grid;
  grid-template-columns: repeat(2, minmax(280px, 1fr));
  gap: 18px;
}
.backup-recipient-groups > div {
  padding: 16px;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: #fbfdff;
}
.backup-recipient-groups > div > strong {
  display: block;
  margin-bottom: 10px;
}
.backup-quota-config label.backup-check {
  display: flex !important;
  flex-direction: row !important;
  align-items: center !important;
  gap: 10px !important;
  min-height: 38px;
  padding: 7px 4px;
  font-weight: 560;
  border-bottom: 1px solid #edf2f8;
}
.backup-quota-config label.backup-check:last-child { border-bottom: 0; }
.backup-quota-config label.backup-check input {
  flex: 0 0 20px;
  width: 20px !important;
  height: 20px !important;
  margin: 0 !important;
}
.backup-extra-emails { min-height: 96px; }
.save-org-quota-config { justify-self: start; }

.tenant-backup-space,
.tenant-backup-schedules { padding: 26px 30px; }
.backup-space-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 14px;
}
.backup-space-grid > div {
  padding: 18px 20px;
  border: 1px solid var(--border);
  border-radius: 14px;
  background: #fbfdff;
}
.backup-space-grid span { display: block; color: var(--muted); font-weight: 650; margin-bottom: 6px; }
.backup-space-grid strong { display: block; font-size: 1.55rem; }
.backup-progress {
  height: 10px;
  margin-top: 16px;
  overflow: hidden;
  border-radius: 999px;
  background: #e8eef6;
}
.backup-progress span { display: block; height: 100%; background: var(--primary); border-radius: inherit; }
.backup-jobs-list { display: grid; gap: 16px; }
.backup-job-card {
  padding: 20px;
  border: 1px solid var(--border);
  border-radius: 14px;
  background: #fff;
  box-shadow: 0 8px 22px rgba(30, 64, 110, .06);
}
.backup-job-header { display: flex; align-items: center; justify-content: space-between; gap: 14px; margin-bottom: 16px; }
.backup-job-header h3 { margin: 0; }
.button-small { padding: 8px 13px !important; min-height: 38px; }
.backup-job-fields {
  display: grid;
  grid-template-columns: 1.25fr 1fr .75fr .75fr;
  gap: 14px;
}
.backup-local-selector { margin-top: 18px; }
.backup-local-selector > strong { display: block; margin-bottom: 9px; }
.backup-local-options { display: flex; flex-wrap: wrap; gap: 10px; }
.backup-local-options label {
  display: inline-flex !important;
  flex-direction: row !important;
  align-items: center !important;
  gap: 8px !important;
  padding: 9px 12px;
  border: 1px solid var(--border);
  border-radius: 10px;
  background: #f8fbff;
  cursor: pointer;
}
.backup-local-options input { width: 18px !important; height: 18px !important; margin: 0 !important; }
.card-actions { display: flex; justify-content: flex-start; margin-top: 18px; }
.empty-state-compact { padding: 18px; border: 1px dashed var(--border); border-radius: 12px; color: var(--muted); }

@media (max-width: 980px) {
  .ui-font-controls { grid-template-columns: 1fr; }
  .backup-quota-config .form-grid,
  .backup-job-fields { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .backup-recipient-groups { grid-template-columns: 1fr; }
}
@media (max-width: 640px) {
  .section-heading-compact { flex-direction: column; }
  .backup-space-grid,
  .backup-quota-config .form-grid,
  .backup-job-fields { grid-template-columns: 1fr; }
}


/* ===== Tamaños configurables y destinatarios de organización ===== */
.ui-font-controls-expanded {
  grid-template-columns: repeat(3, minmax(180px, 1fr));
}
.ui-font-controls-expanded .sidebar-font-preview {
  grid-column: 1 / -1;
}
.tenant-backup-recipients {
  display: grid;
  gap: 18px;
}
.tenant-backup-recipients .backup-recipient-groups {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
.form-help {
  margin: 2px 0 16px;
  color: var(--muted);
}
@media (max-width: 900px) {
  .ui-font-controls-expanded,
  .tenant-backup-recipients .backup-recipient-groups { grid-template-columns: 1fr; }
}


/* ===== Correcciones UI: tamaños, checkboxes y log persistente ===== */
.platform-nav-button,
.tenant-sidebar .nav-button,
.sidebar-logout-button {
  font-size: var(--sidebar-font-size) !important;
  line-height: 1.25 !important;
}

.tenant-backup-recipients .backup-check {
  display: grid !important;
  grid-template-columns: 20px minmax(0, 1fr) !important;
  align-items: center !important;
  gap: 10px !important;
  min-height: 38px !important;
  padding: 8px 0 !important;
  margin: 0 !important;
  font-weight: 560 !important;
}
.tenant-backup-recipients .backup-check input[type="checkbox"] {
  appearance: auto !important;
  inline-size: 18px !important;
  block-size: 18px !important;
  min-inline-size: 18px !important;
  min-block-size: 18px !important;
  width: 18px !important;
  height: 18px !important;
  margin: 0 !important;
  padding: 0 !important;
  align-self: center !important;
}
.tenant-backup-recipients .backup-check span {
  min-width: 0;
  overflow-wrap: anywhere;
}

.backup-log-heading {
  align-items: center;
  margin-bottom: 14px;
}
.backup-log-heading p { margin: 0; }
#platformBackupLogContent[hidden] { display: none !important; }
#platformBackupLogContent pre {
  margin: 0;
  max-width: none;
  max-height: 520px;
  overflow: auto;
}


/* ===== Botón cerrar sesión centrado con icono ===== */
.sidebar-logout-button {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 10px !important;
  text-align: center !important;
}
.sidebar-logout-icon {
  width: 21px;
  height: 21px;
  flex: 0 0 21px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.9;
  stroke-linecap: round;
  stroke-linejoin: round;
  transition: transform .18s ease;
}
.sidebar-logout-button:hover .sidebar-logout-icon,
.sidebar-logout-button:focus-visible .sidebar-logout-icon {
  transform: translateX(2px);
}


/* ===== Configuración de organización ===== */
.configuration-sections {
  display: grid;
  gap: 22px;
}

.configuration-card {
  max-width: 920px;
}

.configuration-card .form-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.input-with-unit {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 10px;
}

.input-with-unit span {
  color: var(--muted);
  font-weight: 600;
}

.configuration-summary {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 18px;
  padding: 14px 16px;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: #f8fbff;
}

.configuration-summary span {
  color: var(--muted);
}

@media (max-width: 760px) {
  .configuration-card .form-grid {
    grid-template-columns: 1fr;
  }

  .configuration-summary {
    align-items: flex-start;
    flex-direction: column;
  }
}

/* 2026-08-03 - Estado activo moderno del menú lateral */
.tenant-sidebar .nav-button.active,
.platform-nav-button.active {
  background:
    linear-gradient(
      135deg,
      color-mix(in srgb, var(--primary) 88%, #000 12%),
      var(--primary)
    ) !important;
  color: #fff !important;
  border: 1px solid rgba(255, 255, 255, 0.28) !important;
  box-shadow:
    0 8px 18px rgba(15, 23, 42, 0.18),
    inset 0 1px 0 rgba(255, 255, 255, 0.18) !important;
  transform: translateX(3px);
}

.tenant-sidebar .nav-button,
.platform-nav-button {
  transition:
    background-color 160ms ease,
    border-color 160ms ease,
    box-shadow 160ms ease,
    transform 160ms ease;
}

/* 2026-08-03 - Botón activo con borde completo adaptable */
.tenant-sidebar .nav-button.active,
.platform-nav-button.active {
  background: rgba(255, 255, 255, 0.08) !important;
  color: #fff !important;
  border: 1px solid rgba(255, 255, 255, 0.72) !important;
  border-radius: 7px !important;
  box-shadow: none !important;
  transform: none !important;
}

.tenant-sidebar .nav-button:hover,
.platform-nav-button:hover {
  background: rgba(255, 255, 255, 0.05);
}

.tenant-sidebar .nav-button,
.platform-nav-button {
  transition:
    background-color 140ms ease,
    border-color 140ms ease;
}

/* 2026-08-03 - Borde activo más visible */
.tenant-sidebar .nav-button.active,
.platform-nav-button.active {
  border-width: 2px !important;
}

/* 2026-08-03 - Separación vertical entre botones del menú */
.tenant-sidebar .nav-button,
.platform-nav-button {
  margin-bottom: 2px;
}


/* ===== Valores actuales PLC: botones, tabla completa y columnas ajustables ===== */
.button,
button.button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  border: 1px solid transparent;
  box-shadow: 0 2px 5px rgba(15, 35, 65, .08);
  transition: background-color .15s ease, border-color .15s ease,
              box-shadow .15s ease, transform .05s ease;
}

.button:hover:not(:disabled),
button.button:hover:not(:disabled) {
  box-shadow: 0 5px 12px rgba(15, 35, 65, .14);
}

.button:active:not(:disabled),
button.button:active:not(:disabled) {
  transform: translateY(1px);
}

.button:focus-visible,
button.button:focus-visible {
  outline: 3px solid color-mix(in srgb, var(--primary) 22%, transparent);
  outline-offset: 2px;
}

.button:disabled,
button.button:disabled {
  cursor: wait;
  opacity: .68;
}

.button-secondary {
  border-color: #cbd6e3;
  background: #f4f7fa;
}

.button-secondary:hover:not(:disabled) {
  border-color: #aebdd0;
  background: #e9eff5;
}

.local-card {
  align-items: stretch;
}

.local-card > div:first-child {
  flex: 1 1 auto;
  min-width: 0;
}

.local-current-values {
  width: 100%;
  margin-top: 24px;
  padding-top: 20px;
  border-top: 1px solid var(--border);
}

.local-current-values .section-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  margin: 0 0 14px;
}

.local-current-values .section-heading h3 {
  margin: 0;
}

.plc-values-table-wrap {
  width: 100%;
  max-width: 100%;
  overflow-x: auto;
}

.plc-values-table {
  width: 100%;
  min-width: 720px;
  table-layout: fixed;
}

.plc-values-table th {
  position: relative;
  min-width: 80px;
  box-sizing: border-box;
  user-select: none;
}

.plc-values-table td {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.plc-column-resizer {
  position: absolute;
  top: 0;
  right: -4px;
  width: 9px;
  height: 100%;
  cursor: col-resize;
  touch-action: none;
  z-index: 2;
}

.plc-column-resizer::after {
  content: "";
  position: absolute;
  top: 20%;
  bottom: 20%;
  left: 4px;
  width: 1px;
  background: #aebccd;
  opacity: .7;
}

.plc-column-resizer:hover::after {
  width: 2px;
  background: var(--primary);
  opacity: 1;
}

body.plc-column-resizing,
body.plc-column-resizing * {
  cursor: col-resize !important;
  user-select: none !important;
}

@media (max-width: 850px) {
  .local-current-values .section-heading {
    align-items: stretch;
    flex-direction: column;
  }

  .local-current-values .section-heading .button {
    align-self: flex-start;
  }
}


/* ===== Tarjeta de local: acciones estables en la cabecera ===== */
.local-card {
  display: block;
}

.local-card-content {
  width: 100%;
  min-width: 0;
}

.local-card-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 24px;
}

.local-card-info {
  min-width: 0;
  flex: 1 1 auto;
}

.local-card-header .local-actions {
  display: flex;
  flex: 0 0 auto;
  align-items: center;
  gap: 12px;
  margin: 0;
  padding-top: 2px;
}

.local-current-values {
  min-height: 260px;
}

.local-current-values > div[id^="local-current-values-"] {
  min-height: 190px;
}

@media (max-width: 850px) {
  .local-card-header {
    flex-direction: column;
  }

  .local-card-header .local-actions {
    align-self: flex-start;
  }
}


/* ===== Histórico de valores PLC ===== */
.local-history-section {
  margin-top: 22px;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: #fbfdff;
}

.local-history-section > summary {
  padding: 15px 18px;
  cursor: pointer;
  font-weight: 800;
  color: var(--text);
  user-select: none;
}

.local-history-section[open] > summary {
  border-bottom: 1px solid var(--border);
}

.local-history-content {
  padding: 18px;
}

.local-history-filters {
  display: grid;
  grid-template-columns: minmax(180px, 1.2fr) minmax(190px, 1fr)
                         minmax(190px, 1fr) minmax(150px, .7fr);
  gap: 14px;
  align-items: end;
}

.local-history-filters label {
  margin: 0;
}

.local-history-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin: 16px 0;
}

.local-history-table-wrap {
  width: 100%;
  overflow-x: auto;
}

.local-history-table {
  width: 100%;
  min-width: 780px;
}

.local-history-table td,
.local-history-table th {
  white-space: nowrap;
}

@media (max-width: 1050px) {
  .local-history-filters {
    grid-template-columns: repeat(2, minmax(180px, 1fr));
  }
}

@media (max-width: 650px) {
  .local-history-filters {
    grid-template-columns: 1fr;
  }
}

/* ===== Modal seguro de contraseñas ===== */
.secure-modal-backdrop {
  position: fixed;
  inset: 0;
  z-index: 10000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px;
  background: rgba(13, 29, 48, .58);
  backdrop-filter: blur(3px);
}

.secure-modal {
  width: min(540px, 100%);
  max-height: calc(100vh - 48px);
  overflow: auto;
  background: #fff;
  border: 1px solid #dbe4ef;
  border-radius: 18px;
  box-shadow: 0 28px 70px rgba(18, 38, 62, .28);
}

.secure-modal-header,
.secure-modal-body,
.secure-modal-actions {
  padding-left: 28px;
  padding-right: 28px;
}

.secure-modal-header {
  padding-top: 26px;
  padding-bottom: 18px;
  display: flex;
  justify-content: space-between;
  gap: 18px;
  border-bottom: 1px solid #e5edf6;
}

.secure-modal-header h2 {
  margin: 0;
  color: #102b4e;
}

.secure-modal-close {
  width: 40px;
  height: 40px;
  border: 0;
  border-radius: 10px;
  background: #eef3f8;
  color: #102b4e;
  font-size: 1.3rem;
  cursor: pointer;
}

.secure-modal-body {
  padding-top: 24px;
  padding-bottom: 12px;
}

.secure-modal-description,
.secure-modal-notice {
  line-height: 1.55;
}

.secure-modal-description {
  margin: 0 0 20px;
  color: #52657d;
}

.secure-modal-notice {
  margin: 0 0 20px;
  padding: 14px 16px;
  border-radius: 12px;
  background: #eef5ff;
  color: #173b6d;
}

.secure-modal-form {
  display: grid;
  gap: 17px;
}

.secure-modal-form label {
  display: grid;
  gap: 8px;
  color: #102b4e;
  font-weight: 700;
}

.secure-modal-form input {
  width: 100%;
  min-height: 48px;
  padding: 11px 13px;
  box-sizing: border-box;
  border: 1px solid #cbd8e7;
  border-radius: 10px;
  color: #102b4e;
  font: inherit;
}

.secure-modal-error {
  min-height: 22px;
  margin: 0;
  color: #b42318;
  font-weight: 700;
}

.secure-modal-actions {
  padding-top: 14px;
  padding-bottom: 26px;
  display: flex;
  justify-content: flex-end;
  gap: 12px;
}

body.secure-modal-open {
  overflow: hidden;
}


/* Aviso destacado de borrado irreversible de locales */
.app-modal-danger {
  border: 2px solid #b42318;
  box-shadow: 0 26px 80px rgba(111, 20, 15, .32);
}
.app-modal-danger .app-modal-header {
  background: #fff7f6;
  border-bottom: 1px solid #f3c7c2;
}
.app-modal-danger .app-modal-header h2 { color: #8f1d14; }
.app-modal-danger-panel {
  margin: 4px 0 22px;
  padding: 18px 20px;
  border: 2px solid #c62828;
  border-radius: 14px;
  background: #fff0ef;
  color: #7a271a;
  box-shadow: inset 0 0 0 1px rgba(198, 40, 40, .06);
}
.app-modal-danger-heading {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 12px;
  color: #a61b12;
  font-size: 1.05rem;
  line-height: 1.3;
  text-transform: uppercase;
  letter-spacing: .015em;
}
.app-modal-danger-icon {
  display: inline-grid;
  place-items: center;
  flex: 0 0 auto;
  width: 34px;
  height: 34px;
  border-radius: 50%;
  background: #c62828;
  color: #fff;
  font-size: 1.35rem;
  font-weight: 900;
  line-height: 1;
}
.app-modal-danger-panel p {
  margin: 0;
  color: #7a271a;
  font-weight: 600;
  line-height: 1.62;
}
.app-modal-danger .app-modal-field { margin-top: 4px; }
.app-modal-danger .app-modal-field input {
  border: 2px solid #c62828;
  background: #fffafa;
}
.app-modal-danger .app-modal-field input:focus {
  outline: 4px solid rgba(198, 40, 40, .16);
  border-color: #a61b12;
}
.app-modal-danger .app-modal-actions {
  border-top: 1px solid #f3c7c2;
  background: #fff7f6;
}
@media (max-width: 560px) {
  .app-modal-danger-panel { padding: 16px; }
  .app-modal-danger-heading { align-items: flex-start; font-size: .98rem; }
}

/* Flujo unificado de invitaciones */
.lifecycle-invitation-modal { width: min(760px, calc(100vw - 28px)); }
.lifecycle-invitation-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px 20px; }
.lifecycle-invitation-grid label { display:grid; gap:8px; font-weight:700; }
.lifecycle-invitation-grid input,
.lifecycle-invitation-grid select { width:100%; }
.lifecycle-invitation-help,
#lifecycleInvitationError { grid-column:1 / -1; }
.invitation-registration-card { align-self:center; }
.invitation-registration-card form { display:grid; gap:16px; }
@media (max-width:680px) { .lifecycle-invitation-grid { grid-template-columns:1fr; } }


/* Selección múltiple de locales en invitaciones */
.lifecycle-local-selector { min-width:0; margin:0; padding:14px 16px 16px; border:1px solid var(--border); border-radius:12px; background:var(--surface-alt); }
.lifecycle-local-selector legend { padding:0 6px; font-weight:800; }
.lifecycle-local-checks { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; margin-top:12px; }
.lifecycle-local-option { display:flex !important; align-items:center; gap:10px !important; padding:11px 12px; border:1px solid var(--border); border-radius:10px; background:var(--surface); cursor:pointer; }
.lifecycle-local-option input { width:auto !important; min-height:auto; margin:0; }
@media (max-width:680px) { .lifecycle-local-checks { grid-template-columns:1fr; } }


/* ===== Vista completa de datos del local ===== */
.local-summary-card { min-height: 0; }
.local-summary-card .local-card-header { min-height: 170px; }
.local-summary-card .local-actions { flex-wrap: wrap; justify-content: flex-end; }
.local-detail-toolbar { display:flex; justify-content:space-between; gap:12px; margin-bottom:18px; }
.local-detail-header { margin-bottom:18px; }
.local-detail-general { margin-bottom:22px; }
.local-detail-general-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:18px 24px; }
.local-detail-general-grid span { display:block; margin-bottom:5px; color:var(--muted); font-size:.84rem; font-weight:800; }
.local-detail-general-grid strong { display:block; overflow-wrap:anywhere; font-size:1rem; }
.local-detail-general-wide { grid-column:1/-1; }
.local-detail-section { width:100%; margin-top:22px; }
.local-detail-section > .section-heading { display:flex; align-items:flex-start; justify-content:space-between; gap:18px; margin-bottom:20px; }
.local-detail-section > .section-heading h2 { margin:0 0 5px; }
.local-detail-section > .section-heading p { margin:0; color:var(--muted); }
#localDetailCurrentValues { width:100%; min-width:0; }
#localDetailView .plc-values-table-wrap,
#localDetailView .local-history-table-wrap { max-width:100%; overflow-x:auto; }
#localDetailView .local-history-section { margin-top:0; border:0; background:transparent; }
#localDetailView .local-history-section > summary { display:none; }
#localDetailView .local-history-content { padding:0; }
#localDetailView .local-history-filters { grid-template-columns:minmax(180px,1.2fr) minmax(190px,1fr) minmax(190px,1fr) minmax(150px,.7fr); }
@media (max-width:1100px) {
  .local-detail-general-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  #localDetailView .local-history-filters { grid-template-columns:repeat(2,minmax(180px,1fr)); }
}
@media (max-width:700px) {
  .local-summary-card .local-card-header { min-height:0; }
  .local-summary-card .local-actions { justify-content:flex-start; }
  .local-detail-toolbar,
  .local-detail-section > .section-heading { align-items:stretch; flex-direction:column; }
  .local-detail-general-grid,
  #localDetailView .local-history-filters { grid-template-columns:1fr; }
}

/* ===== Usuario activo / Mi perfil ===== */
.tenant-sidebar-section{opacity:1!important;color:rgba(255,255,255,.96)!important;font-weight:800!important;letter-spacing:.055em!important}
.tenant-sidebar-user{margin:8px 16px 14px;padding:11px 12px 10px;border-top:1px solid rgba(255,255,255,.24);border-bottom:1px solid rgba(255,255,255,.18);color:#fff}
.tenant-sidebar-user-name{overflow:hidden;font-size:.95rem;font-weight:800;line-height:1.25;text-overflow:ellipsis;white-space:nowrap}
.tenant-sidebar-user-role{margin-top:3px;overflow:hidden;color:rgba(255,255,255,.82);font-size:.78rem;font-weight:650;line-height:1.3;text-overflow:ellipsis;white-space:nowrap}
.tenant-sidebar-profile{margin:7px 0 0;padding:0;border:0;color:rgba(255,255,255,.96);background:transparent;font:inherit;font-size:.78rem;font-weight:750;text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.tenant-sidebar-profile:hover,.tenant-sidebar-profile:focus-visible{color:#fff;text-decoration-thickness:2px}
.tenant-profile-modal{width:min(520px,calc(100vw - 32px))}
.tenant-profile-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:18px}
.tenant-profile-heading h2{margin:0 0 5px}.tenant-profile-heading p{margin:0;color:var(--muted)}
.tenant-profile-close{width:36px;height:36px;padding:0;border:0;border-radius:8px;color:var(--text);background:transparent;font-size:1.7rem;line-height:1;cursor:pointer}
.tenant-profile-modal form{display:grid;gap:15px}.tenant-profile-modal label{display:grid;gap:7px;font-weight:750}
.tenant-profile-help{margin:-2px 0 0;color:var(--muted);font-size:.84rem;line-height:1.45}.tenant-profile-actions{justify-content:flex-end;margin-top:2px}

/* ===== Refinado profesional Mi perfil V2 ===== */
.tenant-sidebar-section {
  margin: 26px 20px 0 !important;
  padding: 0 0 16px !important;
  border-bottom: 1px solid rgba(255,255,255,.20);
  color: rgba(255,255,255,.96) !important;
  font-size: .82rem !important;
  font-weight: 800 !important;
  letter-spacing: .055em !important;
  line-height: 1.2 !important;
}

.tenant-sidebar-user {
  margin: 0 20px 20px !important;
  padding: 18px 2px 16px !important;
  border-top: 0 !important;
  border-bottom: 1px solid rgba(255,255,255,.20) !important;
  color: #fff;
}

.tenant-sidebar-user-name {
  margin: 0 !important;
  font-size: 1.02rem !important;
  font-weight: 800 !important;
  line-height: 1.25 !important;
  color: #fff !important;
}

.tenant-sidebar-user-role {
  margin: 4px 0 0 !important;
  font-size: .84rem !important;
  font-style: italic !important;
  font-weight: 600 !important;
  line-height: 1.25 !important;
  color: rgba(255,255,255,.78) !important;
}

.tenant-sidebar-user-role::before { content: "("; }
.tenant-sidebar-user-role::after  { content: ")"; }

.tenant-sidebar-profile {
  display: inline-flex !important;
  align-items: center;
  gap: 6px;
  margin: 13px 0 0 !important;
  padding: 0 !important;
  border: 0 !important;
  background: transparent !important;
  color: rgba(255,255,255,.96) !important;
  font-size: .84rem !important;
  font-weight: 750 !important;
  line-height: 1.2 !important;
  text-decoration: none !important;
  cursor: pointer;
}

.tenant-sidebar-profile::before {
  content: "●";
  font-size: .48rem;
  opacity: .72;
}

.tenant-sidebar-profile:hover,
.tenant-sidebar-profile:focus-visible {
  color: #fff !important;
  text-decoration: underline !important;
  text-underline-offset: 4px;
}

.tenant-profile-backdrop {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  padding: 24px !important;
  background: rgba(15,31,56,.48) !important;
  backdrop-filter: blur(4px);
}

.tenant-profile-modal {
  width: min(560px, calc(100vw - 32px)) !important;
  max-height: calc(100vh - 48px);
  overflow-y: auto;
  padding: 0 !important;
  border: 1px solid rgba(19,41,75,.08);
  border-radius: 20px !important;
  background: #fff !important;
  box-shadow: 0 28px 80px rgba(13,31,58,.28) !important;
}

.tenant-profile-heading {
  margin: 0 !important;
  padding: 26px 28px 20px !important;
  border-bottom: 1px solid #e5eaf2;
}

.tenant-profile-heading h2 {
  margin: 0 0 6px !important;
  color: #102a50 !important;
  font-size: 1.55rem !important;
  font-weight: 850 !important;
  line-height: 1.15 !important;
}

.tenant-profile-heading p {
  margin: 0 !important;
  color: #6b7890 !important;
  font-size: .94rem !important;
  line-height: 1.4 !important;
}

.tenant-profile-close {
  width: 34px !important;
  height: 34px !important;
  margin: -4px -6px 0 0 !important;
  border-radius: 50% !important;
  color: #314765 !important;
  font-size: 1.45rem !important;
}

.tenant-profile-close:hover {
  background: #f0f4f9 !important;
}

#tenantProfileForm {
  display: grid !important;
  gap: 18px !important;
  padding: 24px 28px 26px !important;
}

#tenantProfileForm label {
  display: grid !important;
  gap: 8px !important;
  color: #173154 !important;
  font-size: .9rem !important;
  font-weight: 780 !important;
}

#tenantProfileForm input {
  width: 100% !important;
  min-height: 48px !important;
  box-sizing: border-box !important;
  padding: 11px 13px !important;
  border: 1px solid #cbd5e3 !important;
  border-radius: 10px !important;
  background: #fff !important;
  color: #102a50 !important;
  font-size: .96rem !important;
  font-weight: 600 !important;
  box-shadow: none !important;
}

#tenantProfileForm input:hover {
  border-color: #aebbd0 !important;
}

#tenantProfileForm input:focus {
  outline: none !important;
  border-color: #c95f10 !important;
  box-shadow: 0 0 0 3px rgba(201,95,16,.14) !important;
}

.tenant-profile-help {
  margin: -2px 0 0 !important;
  padding: 12px 14px !important;
  border-radius: 10px;
  background: #f5f7fa;
  color: #66748b !important;
  font-size: .82rem !important;
  line-height: 1.45 !important;
}

.tenant-profile-actions {
  display: flex !important;
  justify-content: flex-end !important;
  gap: 10px !important;
  margin: 2px 0 0 !important;
  padding-top: 4px;
}

.tenant-profile-actions .button {
  min-width: 0 !important;
  min-height: 42px !important;
  padding: 10px 18px !important;
  border-radius: 10px !important;
  font-size: .9rem !important;
  font-weight: 780 !important;
}

@media (max-width: 620px) {
  .tenant-profile-backdrop {
    align-items: flex-end !important;
    padding: 12px !important;
  }

  .tenant-profile-modal {
    width: 100% !important;
    max-height: calc(100vh - 24px);
    border-radius: 18px !important;
  }

  .tenant-profile-heading {
    padding: 22px 20px 17px !important;
  }

  #tenantProfileForm {
    padding: 20px !important;
  }

  .tenant-profile-actions {
    flex-direction: column-reverse !important;
  }

  .tenant-profile-actions .button {
    width: 100% !important;
  }
}
/* ===== Fin refinado profesional Mi perfil V2 ===== */







/* ===== Perfil / usuario compacto V5 ===== */
.tenant-sidebar-section {
  margin: 10px 20px 0 !important;
  padding: 0 0 5px !important;
  border-bottom: 1px solid rgba(255,255,255,.18) !important;
}
.tenant-sidebar-user {
  margin: 0 20px 5px !important;
  padding: 6px 2px 7px !important;
  border-top: 0 !important;
  border-bottom: 1px solid rgba(255,255,255,.18) !important;
}
.tenant-sidebar-user-name {
  margin: 0 !important;
  font-size: .96rem !important;
  line-height: 1.05 !important;
}
.tenant-sidebar-user-role {
  margin: 2px 0 0 !important;
  font-size: .80rem !important;
  line-height: 1.05 !important;
}
.tenant-sidebar-profile {
  margin: 4px 0 0 !important;
  padding: 0 !important;
  gap: 0 !important;
  line-height: 1.05 !important;
}
.tenant-sidebar-profile::before {
  content: none !important;
  display: none !important;
}
.tenant-profile-actions .button:disabled {
  opacity: .45 !important;
  cursor: not-allowed !important;
  box-shadow: none !important;
  filter: saturate(.45);
}
.tenant-profile-info {
  display: grid;
  gap: 5px;
  padding: 12px 14px;
  border: 1px solid #dce4ee;
  border-radius: 10px;
  background: #f7f9fc;
  color: #5e6d83;
  font-size: .82rem;
  line-height: 1.42;
}
.tenant-profile-info strong { color: #213b5d; }
.tenant-profile-pending {
  display: grid;
  gap: 6px;
  padding: 13px 14px;
  border: 1px solid #e7c99f;
  border-radius: 10px;
  background: #fff9ef;
  color: #5b4934;
  font-size: .84rem;
}
.tenant-profile-pending > strong { color: #6b471d; }
.tenant-profile-pending > span {
  font-weight: 750;
  overflow-wrap: anywhere;
}
.tenant-profile-pending p {
  margin: 2px 0 0;
  line-height: 1.42;
}
.tenant-profile-pending-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 5px;
}
.tenant-profile-pending-actions .button {
  min-height: 36px !important;
  padding: 8px 12px !important;
  font-size: .8rem !important;
}
/* ===== Fin perfil / usuario compacto V5 ===== */


/* ===== Identidad organización alineada V1 ===== */

/* Tres columnas reales y con la misma altura. */
#identityForm .upload-grid {
  display: grid !important;
  grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
  gap: 18px !important;
  align-items: stretch !important;
}

/* Cada tarjeta se comporta igual internamente. */
#identityForm .upload-card {
  display: flex !important;
  flex-direction: column !important;
  min-width: 0;
  height: 100%;
}

/*
   Las tres vistas previas ocupan exactamente el mismo cuadrado.
   El logotipo mantiene su proporción mediante object-fit: contain.
*/
#identityForm #logoPreview,
#identityForm #faviconPreview,
#identityForm #loginPreview {
  width: min(100%, 320px) !important;
  height: auto !important;
  aspect-ratio: 1 / 1 !important;
  margin: 0 auto 14px !important;
  flex: 0 0 auto;
}

#identityForm #logoPreview img,
#identityForm #faviconPreview img {
  width: 100% !important;
  height: 100% !important;
  object-fit: contain !important;
}

#identityForm #loginPreview img {
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
}

/*
   Título + ayuda + selector ocupan la misma altura en las tres tarjetas.
   Esto evita que el logotipo "suba" el selector y los botones.
*/
#identityForm .upload-card > label {
  display: flex !important;
  flex-direction: column !important;
  gap: 7px !important;
  min-height: 118px;
  margin: 0 0 14px !important;
}

#identityForm .upload-card .field-help {
  min-height: 2.65em;
  margin: 0 !important;
  line-height: 1.35;
  font-weight: 400;
}

/* El selector queda en la misma línea vertical en las tres tarjetas. */
#identityForm .upload-card input[type="file"] {
  margin-top: auto;
}

/* Todos los bloques de acciones comienzan a la misma altura. */
#identityForm .upload-card > .button,
#identityForm .upload-card > .form-actions {
  flex: 0 0 auto;
}

#identityForm .upload-card > .button:first-of-type,
#identityForm .upload-card > .form-actions {
  margin-top: 0 !important;
}

@media (max-width: 850px) {
  #identityForm .upload-grid {
    grid-template-columns: 1fr !important;
  }

  #identityForm .upload-card > label {
    min-height: 0;
  }

  #identityForm .upload-card .field-help {
    min-height: 0;
  }
}

/* ===== Fin identidad organización alineada V1 ===== */


/* Histórico PLC - gráficas de solo lectura V1 */
.history-charts-section {
  margin: 1rem 0 1.25rem;
}

.history-charts-section .section-heading-compact {
  margin-bottom: .75rem;
}

.history-charts-grid {
  display: grid;
  gap: 1rem;
}

.history-chart-card {
  border: 1px solid var(--border-color, #dfe3e8);
  border-radius: 12px;
  padding: 1rem;
  background: var(--card-background, #fff);
}

.history-chart-heading {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1rem;
  margin-bottom: .8rem;
}

.history-chart-heading h4 {
  margin: 0 0 .2rem;
}

.history-chart-heading p {
  margin: 0;
  opacity: .72;
}

.history-chart-summary {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: .55rem;
}

.history-chart-summary span {
  min-width: 82px;
  border: 1px solid var(--border-color, #dfe3e8);
  border-radius: 9px;
  padding: .45rem .6rem;
  text-align: right;
}

.history-chart-summary small,
.history-chart-summary strong {
  display: block;
}

.history-chart-summary small {
  opacity: .65;
  font-size: .72rem;
}

.history-chart-scroll {
  overflow-x: auto;
  width: 100%;
}

.history-chart {
  display: block;
  min-width: 680px;
  width: 100%;
  height: auto;
}

.history-chart-grid-line {
  stroke: currentColor;
  stroke-opacity: .11;
  stroke-width: 1;
}

.history-chart-axis {
  stroke: currentColor;
  stroke-opacity: .35;
  stroke-width: 1;
}

.history-chart-line {
  fill: none;
  stroke: currentColor;
  stroke-width: 2.2;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.history-chart-point {
  fill: currentColor;
}

.history-chart-axis-label {
  fill: currentColor;
  opacity: .72;
  font-size: 12px;
}

.history-charts-empty {
  margin: .8rem 0 1rem;
  padding: .8rem 1rem;
  border: 1px dashed var(--border-color, #dfe3e8);
  border-radius: 10px;
  opacity: .75;
}

@media (max-width: 760px) {
  .history-chart-heading {
    flex-direction: column;
  }

  .history-chart-summary {
    justify-content: flex-start;
  }
}

/* Horarios y reservas de local */
.schedule-section{margin-bottom:22px}.schedule-service-off{border-color:#e2a43a;background:#fff8e8}.schedule-service-toggle,.schedule-check{display:flex;align-items:center;gap:8px}.schedule-service-toggle{font-weight:700}.schedule-config-grid{display:grid;grid-template-columns:repeat(4,minmax(170px,1fr));gap:16px;align-items:start}.schedule-wide-field{display:block;margin-top:14px}.schedule-wide-field input,.schedule-wide-field textarea{width:100%}.schedule-effective-date{display:block;max-width:260px;margin:12px 0 18px}.schedule-week{border:1px solid #d9dee8;border-radius:10px;overflow:hidden}.schedule-day-row{display:grid;grid-template-columns:230px 1fr;gap:18px;padding:15px;border-bottom:1px solid #d9dee8}.schedule-day-row:last-child{border-bottom:0}.schedule-day-name{display:flex;flex-direction:column;align-items:flex-start;gap:5px}.schedule-link{border:0;background:none;color:var(--primary,#1f4b99);cursor:pointer;padding:2px 0;font:inherit;font-size:.82rem}.schedule-interval-block{margin-bottom:12px}.schedule-interval-row{display:grid;grid-template-columns:145px auto 145px auto;gap:8px;align-items:center}.schedule-entry-preview{display:flex;flex-wrap:wrap;gap:5px;margin:8px 0 12px}.schedule-entry-preview span{border:1px solid #d9dee8;background:#f6f8fb;border-radius:14px;padding:3px 8px;font-size:.75rem}.schedule-entry-preview em{color:#a63434;font-size:.8rem}.schedule-calendar-controls{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:14px 0}.schedule-calendar-controls input{min-width:280px;flex:1}.schedule-calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(105px,1fr));gap:7px}.schedule-calendar-head{text-align:center;font-weight:700}.schedule-calendar-day{min-height:108px;display:flex;flex-direction:column;align-items:flex-start;gap:5px;padding:10px;border:1px solid #d9dee8;border-radius:8px;cursor:pointer;text-align:left}.schedule-calendar-day.is-open{background:#edf8f0;border-color:#8bc89a}.schedule-calendar-day.is-closed{background:#fff2f2;border-color:#d9a2a2}.schedule-calendar-day.is-exception{box-shadow:inset 0 0 0 2px #e2a43a}.schedule-calendar-day:disabled{cursor:not-allowed;opacity:.72}.schedule-calendar-day strong{font-size:1.2rem}.schedule-calendar-day span{font-size:.72rem;line-height:1.25}@media(max-width:980px){.schedule-config-grid{grid-template-columns:repeat(2,minmax(170px,1fr))}.schedule-day-row{grid-template-columns:1fr}.schedule-calendar-grid{grid-template-columns:repeat(7,minmax(80px,1fr));overflow-x:auto}}


/* SISDOGAL_TELEMETRY_CHART_STYLE_V1
   Preparado para que color y grosor salgan de configuración más adelante. */
:root {
  --history-chart-line-color: #2563eb;
  --history-chart-line-width: 1.5;
}

.history-chart-line {
  stroke: var(--history-chart-line-color) !important;
  stroke-width: var(--history-chart-line-width) !important;
}

.history-chart-point {
  fill: var(--history-chart-line-color) !important;
  stroke: var(--history-chart-line-color) !important;
}

.telemetry-export-button {
  flex: 0 0 auto;
  white-space: nowrap;
}

.telemetry-table-export-toolbar {
  display: flex;
  justify-content: flex-end;
  margin: 0 0 10px;
}

.history-chart-heading .telemetry-export-chart {
  margin-left: auto;
}

.history-charts-section .section-heading-compact {
  gap: 12px;
}

@media (max-width: 700px) {
  .history-chart-heading .telemetry-export-chart,
  .history-charts-section .section-heading-compact .telemetry-export-all {
    width: 100%;
    margin-left: 0;
  }
}

/* ===== Auditoría de organización ===== */
.audit-filters {
  align-items: end;
  display: grid;
  gap: 12px;
  grid-template-columns: repeat(4, minmax(150px, 1fr));
  margin-bottom: 16px;
}
.audit-filter-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.audit-summary { color: var(--muted); font-size: .92rem; margin: 0 0 10px; }
.audit-table { min-width: 1120px; }
.audit-table td, .audit-table th { vertical-align: top; }
.audit-detail { max-width: 420px; white-space: normal; word-break: break-word; }
.audit-result {
  border-radius: 999px;
  display: inline-block;
  font-size: .78rem;
  font-weight: 800;
  padding: 3px 8px;
}
.audit-result-ok { background: #e7f7ed; color: #176b36; }
.audit-result-error { background: #fdecec; color: #a12622; }
.audit-result-denegado { background: #fff4db; color: #8a5a00; }

@media (max-width: 1050px) {
  .audit-filters { grid-template-columns: repeat(2, minmax(150px, 1fr)); }
}

@media (max-width: 680px) {
  .audit-filters { grid-template-columns: 1fr; }
}

/* ===== Ajuste columnas Auditoría ===== */
.audit-table {
  width: 100%;
  min-width: 1180px;
  table-layout: fixed;
}

.audit-table th:nth-child(1),
.audit-table td:nth-child(1) { width: 105px; }   /* Fecha */

.audit-table th:nth-child(2),
.audit-table td:nth-child(2) { width: 245px; }   /* Usuario */

.audit-table th:nth-child(3),
.audit-table td:nth-child(3) { width: 80px; }    /* Local */

.audit-table th:nth-child(4),
.audit-table td:nth-child(4) { width: 330px; }   /* Acción */

.audit-table th:nth-child(5),
.audit-table td:nth-child(5) { width: 110px; }   /* Entidad */

.audit-table th:nth-child(6),
.audit-table td:nth-child(6) { width: 90px; }    /* Resultado */

.audit-table th:nth-child(7),
.audit-table td:nth-child(7) { width: 130px; }   /* IP */

.audit-table th:nth-child(8),
.audit-table td:nth-child(8) { width: 260px; }   /* Detalle */

.audit-table td {
  overflow-wrap: anywhere;
  word-break: normal;
}

.audit-table td:nth-child(2),
.audit-table td:nth-child(7) {
  white-space: nowrap;
}

.audit-detail {
  max-width: none;
  white-space: normal;
  line-height: 1.35;
}

/* ===== Auditoría: tabla completa sin cortar contenido ===== */
#auditView .table-wrap {
  width: 100%;
  overflow-x: auto;
  overflow-y: visible;
}

#auditView .audit-table {
  width: max-content;
  min-width: 100%;
  table-layout: auto;
}

#auditView .audit-table th,
#auditView .audit-table td {
  width: auto;
  max-width: none;
  overflow: visible;
}

/* Fecha */
#auditView .audit-table th:nth-child(1),
#auditView .audit-table td:nth-child(1) {
  min-width: 110px;
}

/* Usuario */
#auditView .audit-table th:nth-child(2),
#auditView .audit-table td:nth-child(2) {
  min-width: 250px;
  white-space: nowrap;
}

/* Local */
#auditView .audit-table th:nth-child(3),
#auditView .audit-table td:nth-child(3) {
  min-width: 90px;
  white-space: nowrap;
}

/* Acción */
#auditView .audit-table th:nth-child(4),
#auditView .audit-table td:nth-child(4) {
  min-width: 360px;
  max-width: 480px;
  white-space: normal;
  overflow-wrap: break-word;
}

/* Entidad */
#auditView .audit-table th:nth-child(5),
#auditView .audit-table td:nth-child(5) {
  min-width: 120px;
}

/* Resultado */
#auditView .audit-table th:nth-child(6),
#auditView .audit-table td:nth-child(6) {
  min-width: 110px;
}

#auditView .audit-result {
  white-space: nowrap;
}

/* IP */
#auditView .audit-table th:nth-child(7),
#auditView .audit-table td:nth-child(7) {
  min-width: 150px;
  white-space: nowrap;
}

/* Detalle */
#auditView .audit-table th:nth-child(8),
#auditView .audit-table td:nth-child(8) {
  min-width: 380px;
  max-width: 520px;
  white-space: normal;
  overflow-wrap: break-word;
  word-break: normal;
}

/* ===== Auditoría: ajuste definitivo sin scroll horizontal ===== */

#auditView .table-wrap {
  width: 100%;
  max-width: 100%;
  overflow-x: hidden;
}

#auditView .audit-table {
  width: 100% !important;
  min-width: 0 !important;
  max-width: 100% !important;
  table-layout: fixed !important;
}

#auditView .audit-table th,
#auditView .audit-table td {
  min-width: 0 !important;
  max-width: none !important;
  width: auto;
  white-space: normal !important;
  overflow: visible;
  overflow-wrap: anywhere !important;
  word-break: normal !important;
  vertical-align: top;
}

/* Reparto del ancho total */
#auditView .audit-table th:nth-child(1),
#auditView .audit-table td:nth-child(1) {
  width: 8% !important;
}

#auditView .audit-table th:nth-child(2),
#auditView .audit-table td:nth-child(2) {
  width: 18% !important;
}

#auditView .audit-table th:nth-child(3),
#auditView .audit-table td:nth-child(3) {
  width: 7% !important;
}

#auditView .audit-table th:nth-child(4),
#auditView .audit-table td:nth-child(4) {
  width: 24% !important;
}

#auditView .audit-table th:nth-child(5),
#auditView .audit-table td:nth-child(5) {
  width: 9% !important;
}

#auditView .audit-table th:nth-child(6),
#auditView .audit-table td:nth-child(6) {
  width: 8% !important;
}

#auditView .audit-table th:nth-child(7),
#auditView .audit-table td:nth-child(7) {
  width: 10% !important;
}

#auditView .audit-table th:nth-child(8),
#auditView .audit-table td:nth-child(8) {
  width: 16% !important;
}

#auditView .audit-result {
  white-space: nowrap !important;
  word-break: normal !important;
}

#auditView .audit-detail {
  max-width: none !important;
  white-space: normal !important;
  overflow-wrap: anywhere !important;
  line-height: 1.35;
}

/* SISDOGAL_AUDITORIA_CARDS_V1_START */
#auditView .audit-table thead { display:none; }
#auditView .audit-table, #auditView .audit-table tbody, #auditView .audit-table tr, #auditView .audit-table td { display:block; width:100%; }
#auditView .audit-table { border:0; background:transparent; }
#auditView .audit-table tbody { display:grid; gap:14px; }
#auditView .audit-card-row { border:0; }
#auditView .audit-card-row > td { padding:0; border:0; }
#auditView .audit-entry { border:1px solid var(--border,#d8e0ea); border-radius:16px; background:var(--surface,#fff); padding:18px 20px; box-shadow:0 4px 14px rgba(15,23,42,.04); }
#auditView .audit-entry-grid { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:10px 28px; }
#auditView .audit-entry-field { display:grid; grid-template-columns:132px minmax(0,1fr); align-items:start; column-gap:14px; min-height:46px; }
#auditView .audit-entry-wide { grid-column:1 / -1; }
#auditView .audit-entry-label { font-weight:700; color:var(--text,#10233f); line-height:1.35; }
#auditView .audit-entry-value { min-width:0; line-height:1.4; overflow-wrap:anywhere; }
#auditView .audit-entry-date, #auditView .audit-entry-user { display:flex; flex-direction:column; gap:2px; }
#auditView .audit-entry-date strong, #auditView .audit-entry-user strong { font-weight:700; }
#auditView .audit-entry-date span, #auditView .audit-entry-user span { color:var(--text-muted,#64748b); }
@media (max-width:1050px) { #auditView .audit-entry-grid { grid-template-columns:1fr; } #auditView .audit-entry-wide { grid-column:auto; } }
@media (max-width:640px) { #auditView .audit-entry { padding:15px 16px; } #auditView .audit-entry-field { grid-template-columns:1fr; gap:4px; min-height:0; } }
/* SISDOGAL_AUDITORIA_CARDS_V1_END */

/* SISDOGAL STATE HISTORY CARDS 20260825 */
.state-history-grid {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:14px;
  margin-top:16px;
}
.state-history-card {
  border:1px solid #d9e1ea;
  border-radius:14px;
  background:#fff;
  padding:16px 18px;
  box-shadow:0 2px 8px rgba(15,35,65,.04);
}
.state-history-card-head {
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:16px;
  padding-bottom:12px;
  margin-bottom:12px;
  border-bottom:1px solid #e8edf3;
}
.state-history-date { font-weight:800; font-size:1rem; }
.state-history-change { margin-top:4px; color:#53657a; font-size:.92rem; }
.state-history-device { color:#66788c; font-size:.86rem; text-align:right; }
.state-history-fields {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:10px 18px;
}
.state-history-fields > div {
  min-width:0;
  display:flex;
  flex-direction:column;
  gap:2px;
}
.state-history-fields span { color:#697a8e; font-size:.82rem; font-weight:700; }
.state-history-fields strong { color:#09284d; font-size:.95rem; overflow-wrap:anywhere; }
@media (max-width:1000px) {
  .state-history-grid { grid-template-columns:1fr; }
}
@media (max-width:640px) {
  .state-history-fields { grid-template-columns:1fr; }
  .state-history-card-head { flex-direction:column; }
  .state-history-device { text-align:left; }
}

/* SISDOGAL_AUTO_CONTRAST_CSS_V1
   Contraste automático para superficies derivadas de identidad visual. */
table thead th {
  color: var(--surface-alt-contrast);
}
.button-secondary,
.button-secondary:hover,
.button-secondary:focus {
  color: var(--text);
}
.nav-button.active,
.button-primary,
.button-primary:hover,
.button-primary:focus {
  color: var(--primary-contrast);
}


/* SISDOGAL_LIGHT_BUTTON_TEXT_FIX_V1 */
.button-secondary,
.button-secondary:hover,
.button-secondary:focus,
.react-local-card .button:not(.button-primary):not(.button-danger),
.react-section .button:not(.button-primary):not(.button-danger) {
  color: var(--text);
}

table thead th {
  color: var(--surface-alt-contrast);
}


/* SISDOGAL_USER_EDITOR_COMPACT_PERMISSIONS_V1 */
#editorDialog .sisdogal-user-editor-fields {
  row-gap: 14px;
}

#editorDialog .sisdogal-user-editor-fields > label:has(input[type="checkbox"]):not(:has(#editorUserActive)) {
  grid-column: 1 / -1;
  display: grid;
  grid-template-columns: 24px minmax(190px, 230px) minmax(0, 1fr);
  align-items: center;
  column-gap: 12px;
  min-height: 38px;
  margin: 0;
  padding: 4px 4px;
}

#editorDialog .sisdogal-user-editor-fields > label:has(input[type="checkbox"]):not(:has(#editorUserActive)) input[type="checkbox"] {
  margin: 0;
  align-self: center;
}

#editorDialog .sisdogal-user-editor-fields > label:has(input[type="checkbox"]):not(:has(#editorUserActive)) strong {
  margin: 0;
  line-height: 1.25;
}

#editorDialog .sisdogal-user-editor-fields > label:has(input[type="checkbox"]):not(:has(#editorUserActive)) small,
#editorDialog .sisdogal-user-editor-fields > label:has(input[type="checkbox"]):not(:has(#editorUserActive)) .helper-text {
  margin: 0;
  line-height: 1.35;
}

#editorDialog .sisdogal-user-editor-fields > .full-width {
  grid-column: 1 / -1;
}

@media (max-width: 720px) {
  #editorDialog .sisdogal-user-editor-fields > label:has(input[type="checkbox"]):not(:has(#editorUserActive)) {
    grid-template-columns: 24px minmax(0, 1fr);
  }

  #editorDialog .sisdogal-user-editor-fields > label:has(input[type="checkbox"]):not(:has(#editorUserActive)) small,
  #editorDialog .sisdogal-user-editor-fields > label:has(input[type="checkbox"]):not(:has(#editorUserActive)) .helper-text {
    grid-column: 2;
  }
}

/* SISDOGAL_BACKUPS_UI_EXTERNAL_CSS_V1 */
.tenant-backup-actions{
  display:flex!important;
  flex-direction:column!important;
  align-items:stretch!important;
  gap:12px!important;
  min-width:138px!important;
  white-space:normal!important;
}
.tenant-backup-actions .button{
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  width:138px!important;
  min-width:138px!important;
  height:44px!important;
  margin:0!important;
  padding:0 16px!important;
  box-sizing:border-box!important;
  text-align:center!important;
}

.sisdogal-backup-modal-overlay{
  position:fixed!important;
  inset:0!important;
  z-index:100000!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  padding:24px!important;
  background:rgba(15,23,42,.52)!important;
  backdrop-filter:blur(3px);
}
.sisdogal-backup-modal{
  width:min(640px,calc(100vw - 48px))!important;
  max-height:calc(100vh - 48px)!important;
  overflow:auto!important;
  background:#fff!important;
  border:1px solid rgba(15,23,42,.12)!important;
  border-radius:20px!important;
  box-shadow:0 28px 80px rgba(15,23,42,.30)!important;
}
.sisdogal-backup-modal-header{padding:24px 28px 10px!important}
.sisdogal-backup-modal-header h2{margin:0!important;font-size:1.45rem!important;line-height:1.25!important}
.sisdogal-backup-modal-body{padding:8px 28px 10px!important}
.sisdogal-backup-modal-body p{margin:0 0 14px!important;line-height:1.5!important}
.sisdogal-backup-modal-file{
  margin:4px 0 18px!important;
  padding:12px 14px!important;
  background:#f4f6f9!important;
  border:1px solid rgba(15,23,42,.08)!important;
  border-radius:10px!important;
  overflow-wrap:anywhere!important;
  font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace!important;
  font-size:.9rem!important;
}
.sisdogal-backup-confirm-text{
  margin:6px 0 10px!important;
  padding:11px 13px!important;
  border-radius:9px!important;
  background:#fff1f1!important;
  border:1px solid #f3c2c2!important;
  font-weight:700!important;
  letter-spacing:.02em!important;
  user-select:all!important;
}
.sisdogal-backup-confirm-input{
  display:block!important;
  width:100%!important;
  box-sizing:border-box!important;
  padding:12px 14px!important;
  border:1px solid #b9c3cf!important;
  border-radius:10px!important;
  font:inherit!important;
  background:#fff!important;
}
.sisdogal-backup-confirm-input:focus{
  outline:3px solid rgba(20,99,255,.15)!important;
  border-color:#1463ff!important;
}
.sisdogal-backup-confirm-error{margin-top:8px!important;color:#b42318!important;font-size:.9rem!important}
.sisdogal-backup-modal-actions{
  display:flex!important;
  justify-content:flex-end!important;
  gap:12px!important;
  padding:18px 28px 26px!important;
}
.sisdogal-backup-modal-actions .button{
  min-width:150px!important;
  height:44px!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
}
.sisdogal-backup-modal-actions .button[disabled]{opacity:.45!important;cursor:not-allowed!important}
/* END_SISDOGAL_BACKUPS_UI_EXTERNAL_CSS_V1 */

/* SISDOGAL_RESTORE_OPTIONAL_RETURN_V1 */
.sisdogal-backup-return-option {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  margin: 18px 0;
  padding: 14px 16px;
  border: 1px solid var(--border, #d9e2ec);
  border-radius: 12px;
  background: rgba(245, 248, 252, 0.72);
  cursor: pointer;
}

.sisdogal-backup-return-option input {
  margin-top: 4px;
}

.sisdogal-backup-return-option span {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.sisdogal-backup-return-option small {
  opacity: .78;
  line-height: 1.4;
}
