:root {
  --page: #eef5f3;
  --card: #ffffff;
  --soft: #f5faf8;
  --soft-green: #dff6e9;
  --line: #d7e4e0;
  --text: #10201c;
  --muted: #5f706c;
  --green: #08a66b;
  --green-dark: #006b50;
  --green-ink: #073d3b;
  --red: #e9344a;
  --red-soft: #ffe3e8;
  --yellow: #f2a51f;
  --yellow-soft: #fff1c2;
  --blue-soft: #dff1ff;
  --blue-ink: #15506f;
  --panel-soft: #eefaf6;
  --bubble-in: #ffffff;
  --bubble-out: #c3ecb4;
  --bubble-auto: #d3e8df;
  --input-bg: #ffffff;
  --shadow: 0 10px 30px rgba(0, 53, 45, 0.08);
  --radius: 8px;
  font-family: Inter, "Segoe UI", Roboto, Arial, sans-serif;
}

:root[data-theme="dark"] {
  --page: #111b21;
  --card: #202c33;
  --soft: #182229;
  --soft-green: #103d34;
  --line: #34444b;
  --text: #e9edef;
  --muted: #aebac1;
  --green: #00a884;
  --green-dark: #7be4c7;
  --green-ink: #0b141a;
  --red-soft: #ffdbe1;
  --yellow-soft: #ffedb3;
  --blue-soft: #d7efff;
  --blue-ink: #12445d;
  --panel-soft: #182f2d;
  --bubble-in: #2a3942;
  --bubble-out: #024a3d;
  --bubble-auto: #15302b;
  --input-bg: #2a3942;
  --shadow: none;
}

* {
  box-sizing: border-box;
}

html,
body,
#app {
  height: 100%;
}

body {
  margin: 0;
  background: var(--page);
  color: var(--text);
}

button,
input,
select,
textarea {
  font: inherit;
}

button {
  cursor: pointer;
  color: inherit;
}

.hidden {
  display: none !important;
}

.login-shell {
  display: grid;
  place-items: center;
  min-height: 100%;
  padding: 24px;
}

.login-card {
  display: grid;
  gap: 16px;
  width: min(430px, 100%);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--input-bg);
  box-shadow: var(--shadow);
  padding: 24px;
}

.login-card h1,
.login-card p {
  margin: 0;
}

.link-button {
  border: none;
  background: none;
  color: var(--green-dark);
  font-weight: 800;
  text-decoration: underline;
  cursor: pointer;
  padding: 2px;
  justify-self: center;
}

.info-msg {
  margin: 0;
  padding: 10px 12px;
  border-radius: var(--radius);
  background: var(--soft-green);
  color: var(--green-ink);
  font-weight: 700;
  font-size: 13px;
}

.pw-field { position: relative; display: block; }
.pw-field input { width: 100%; padding-right: 66px; }
.pw-toggle {
  position: absolute; right: 6px; top: 50%; transform: translateY(-50%);
  border: 1px solid var(--line); background: var(--card); color: var(--green-dark);
  border-radius: 6px; padding: 3px 9px; font-weight: 800; font-size: 11px; cursor: pointer;
}

img.avatar { padding: 0; border: none; }
.avatar-photo { object-fit: cover; cursor: zoom-in; flex-shrink: 0; }
.avatar.avatar-lg { width: 44px; height: 44px; }
.contact-headcard { display: grid; grid-template-columns: auto 1fr; align-items: start; gap: 6px 11px; }
.headcard-photo {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
}
.headcard-photo .headcard-phone { text-align: center; }
.headcard-info {
  display: grid;
  gap: 2px;
  min-width: 0;
  align-self: center;
}
.headcard-info strong {
  overflow-wrap: anywhere;
  line-height: 1.2;
}
.headcard-company {
  color: var(--muted);
  font-size: 0.85rem;
  overflow-wrap: anywhere;
}
.headcard-phone {
  color: var(--muted);
  font-size: 0.85rem;
  overflow-wrap: anywhere;
}
.avatar-lightbox {
  position: fixed; inset: 0; background: rgba(0,0,0,.82);
  display: grid; place-items: center; z-index: 9999; cursor: zoom-out; padding: 20px;
}
.avatar-lightbox img {
  max-width: min(92vw, 680px); max-height: 78vh;
  border-radius: 12px; object-fit: contain; box-shadow: 0 10px 44px rgba(0,0,0,.55); cursor: default;
}
.avatar-lightbox-bar {
  display: flex; align-items: center; justify-content: center; gap: 14px; flex-wrap: wrap; margin-top: 12px;
}
.avatar-lightbox p { color: #fff; font-weight: 800; text-align: center; margin: 0; }
.lightbox-download {
  display: inline-flex; align-items: center; gap: 6px;
  background: var(--green, #08a66b); color: #fff; font-weight: 700; font-size: 0.85rem;
  padding: 8px 14px; border-radius: 9px; text-decoration: none; cursor: pointer;
}
.lightbox-download:hover { filter: brightness(1.06); }

/* Botón de descargar sobre cada miniatura de la galería. */
.gallery-dl {
  position: absolute; top: 4px; right: 4px;
  width: 26px; height: 26px; border-radius: 7px;
  display: grid; place-items: center; text-decoration: none;
  background: rgba(0,0,0,.55); color: #fff; font-size: 0.9rem;
}
.gallery-dl:hover { background: var(--green, #08a66b); }
.panel-gallery { padding: 4px 2px 12px; }

.avatar-wrap { position: relative; display: inline-flex; flex-shrink: 0; }
.presence-dot {
  display: inline-flex; align-items: center; justify-content: center;
  width: 11px; height: 11px; border-radius: 50%; vertical-align: middle;
  margin-right: 5px; flex-shrink: 0;
  color: #fff; font-size: 8px; font-weight: 900; line-height: 1;
}
.presence-dot[data-status="online"] { background: #2fbf5a; }
.presence-dot[data-status="away"] { background: #f0a020; }
.presence-dot[data-status="offline"] { background: #9aa3ad; }
.presence-dot.on-avatar {
  position: absolute; right: -2px; bottom: -2px; margin: 0;
  width: 12px; height: 12px; box-shadow: 0 0 0 2px var(--card);
}

.emoji-button { font-size: 18px; line-height: 1; }
.emoji-picker {
  position: fixed; z-index: 9998; width: 300px; max-height: 300px;
  background: var(--card); border: 1px solid var(--line); border-radius: 12px;
  box-shadow: 0 10px 34px rgba(0,0,0,.28); overflow: hidden; display: flex; flex-direction: column;
}
.emoji-cats { display: flex; gap: 2px; padding: 6px; border-bottom: 1px solid var(--line); overflow-x: auto; }
.emoji-cat { border: none; background: none; font-size: 18px; padding: 3px 6px; border-radius: 8px; cursor: pointer; }
.emoji-cat.active { background: var(--soft-green); }
.emoji-grid { display: grid; grid-template-columns: repeat(8, 1fr); gap: 2px; padding: 8px; overflow-y: auto; }
.emoji-btn { border: none; background: none; font-size: 20px; line-height: 1; padding: 4px; border-radius: 8px; cursor: pointer; }
.emoji-btn:hover { background: var(--soft-green); }
.quick-button.fixed { border-color: var(--green); background: var(--soft-green); }

.suggest-bar {
  display: none; gap: 6px; padding: 5px 14px; overflow-x: auto;
  background: var(--input-bg); border-top: 1px solid var(--line);
}
.suggest-bar.has { display: flex; }
.suggest-item {
  border: 1px solid var(--line); background: var(--card); color: var(--text);
  border-radius: 14px; padding: 3px 12px; font-weight: 700; font-size: 12px;
  cursor: pointer; white-space: nowrap;
}
.suggest-item:hover { border-color: var(--green); background: var(--soft-green); }

.login-card label,
.crm-form label,
.simulator label {
  display: grid;
  gap: 6px;
  color: #40534f;
  font-size: 12px;
  font-weight: 900;
}

.login-card input,
.crm-form input,
.crm-form select,
.crm-form textarea,
.simulator input,
.simulator select,
.simulator textarea {
  width: 100%;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--input-bg);
  color: var(--text);
  padding: 10px 11px;
}

.primary,
.secondary,
.tab-button,
.quick-button {
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--card);
  color: var(--green-dark);
  padding: 10px 12px;
  font-weight: 900;
}

.primary {
  border-color: var(--green);
  background: var(--green);
  color: #fff;
}

.secondary:hover,
.tab-button.active,
.quick-button:hover {
  border-color: var(--green);
  background: var(--soft-green);
}

.crm-app {
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
  height: 100%;
  min-width: 1180px;
  gap: 8px;
  padding: 8px 12px 12px;
}

.topbar {
  display: grid;
  grid-template-columns: auto minmax(220px, 1fr) auto;
  align-items: center;
  gap: 12px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--card);
  box-shadow: var(--shadow);
  padding: 7px 12px;
}

.brand {
  display: flex;
  align-items: center;
  gap: 12px;
}

.brand-logo {
  display: block;
  flex: none;
  width: 116px;
  height: 54px;
  border-radius: 10px;
  border: 1px solid var(--line);
  background-color: #ffffff;
  background-image: url(data:image/png;base64,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);
  background-size: contain;
  background-position: center;
  background-repeat: no-repeat;
}

.login-logo {
  width: 210px;
  height: 104px;
  border-radius: 14px;
  background-size: 180px auto;
  margin: 0 auto 8px;
}

.brand strong,
.session strong {
  display: block;
  font-size: 15px;
}

.brand small,
.session small { font-size: 12px; }

.brand small,
.session small {
  display: flex;
  align-items: center;
  gap: 7px;
  margin-top: 4px;
  color: var(--muted);
}

.live-dot {
  display: inline-block;
  width: 9px;
  height: 9px;
  border-radius: 50%;
  background: var(--green);
  box-shadow: 0 0 0 4px rgba(8, 166, 107, 0.12);
}

.top-actions {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  justify-content: flex-end;
  align-items: center;
}

.nav-buttons {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  justify-content: flex-end;
}

/* Deshacer / Rehacer / Actualizar / Menú: siempre visibles arriba a la derecha, en todas las vistas. */
.top-icons {
  display: flex;
  gap: 4px;
  align-items: center;
  flex: 0 0 auto;
}
.top-icons .icon-button {
  font-size: 1rem;
  line-height: 1;
}
/* El ⋮ (menú) solo aparece en móvil: en escritorio están los botones de navegación. */
.app-menu-btn { display: none; }

.app-menu {
  position: absolute;
  top: 62px;
  right: 14px;
  z-index: 120;
  min-width: 214px;
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: 12px;
  box-shadow: 0 18px 42px -14px rgba(0, 40, 34, 0.4);
  padding: 6px;
  color: var(--text);
}
.app-menu-item {
  display: flex;
  width: 100%;
  gap: 11px;
  align-items: center;
  padding: 11px 12px;
  background: none;
  border: 0;
  border-radius: 8px;
  color: var(--text);
  font-size: 0.9rem;
  font-family: inherit;
  text-align: left;
  cursor: pointer;
}
.app-menu-item:hover { background: var(--soft); }
.app-menu-item.active { background: var(--soft-green); color: var(--green-dark); font-weight: 700; }
.app-menu-item.danger { color: var(--red, #e9344a); }
.app-menu-item .ic { width: 20px; text-align: center; flex: 0 0 auto; }
.app-menu-sep { height: 1px; background: var(--line); margin: 5px 8px; }

/* Botones de la barra superior más chicos para achicar el panel */
.top-actions .secondary,
.top-actions .icon-button {
  padding: 6px 9px;
  font-size: 0.82rem;
  font-weight: 700;
  border-radius: 7px;
}

/* Panel activo destacado (bandeja/panel/difusión/chat interno/configuración) */
.top-actions .secondary.active {
  background: var(--green);
  color: #fff;
  border-color: var(--green-dark);
  box-shadow: 0 0 0 2px rgba(8, 166, 107, 0.25);
}

:root[data-theme="dark"] .top-actions .secondary.active {
  background: var(--green);
  color: #06231c;
}

.workspace {
  display: grid;
  grid-template-columns: 250px var(--inbox-w, 370px) minmax(340px, 1fr) var(--crm-w, 330px);
  gap: 12px;
  min-height: 0;
}

.workspace.without-crm-panel {
  grid-template-columns: 250px var(--inbox-w, 370px) minmax(340px, 1fr);
}

/* Con el panel izquierdo oculto se reacomodan las columnas. */
.workspace.hide-left-nav {
  grid-template-columns: var(--inbox-w, 370px) minmax(340px, 1fr) var(--crm-w, 330px);
}

.workspace.hide-left-nav.without-crm-panel {
  grid-template-columns: var(--inbox-w, 370px) minmax(340px, 1fr);
}

.nav-toggle {
  flex: none;
  width: 34px;
  height: 34px;
  font-size: 16px;
  font-weight: 900;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: transparent;
  color: var(--muted);
  display: grid;
  place-items: center;
}

.nav-toggle:hover {
  color: var(--green-dark);
  border-color: var(--green);
}

/* Divisor arrastrable entre columnas. */
.col-drag {
  position: absolute;
  top: 0;
  width: 10px;
  height: 100%;
  cursor: col-resize;
  z-index: 5;
  touch-action: none;
}

.col-drag.edge-right { right: -5px; }
.col-drag.edge-left { left: -5px; }

.col-drag::after {
  content: "";
  position: absolute;
  top: 0;
  left: 4px;
  width: 2px;
  height: 100%;
  background: transparent;
}

.col-drag:hover::after {
  background: var(--green);
}

.left-nav,
.inbox,
.chat,
.crm-panel,
.manager-panel,
.users-panel {
  min-width: 0;
  min-height: 0;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--card);
  box-shadow: var(--shadow);
}

.left-nav {
  display: flex;
  flex-direction: column;
  gap: 14px;
  overflow: auto;
  background: var(--green-ink);
  color: #eafff9;
  padding: 14px;
}

.left-nav > section { flex: 0 0 auto; }

.left-card {
  border: 1px solid rgba(255, 255, 255, 0.28);
  border-radius: var(--radius);
  padding: 12px;
}

.left-card strong {
  display: block;
  margin-bottom: 4px;
}

.nav-title {
  display: block;
  margin-bottom: 8px;
  color: #b8d6d0;
  font-size: 12px;
  font-weight: 900;
  text-transform: uppercase;
}

.channel-button,
.status-button,
.user-button {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  border: 0;
  border-radius: var(--radius);
  background: transparent;
  color: #fff;
  padding: 9px 10px;
  text-align: left;
}

.channel-button.active,
.status-button.active,
.user-button:hover {
  background: rgba(255, 255, 255, 0.12);
}

.user-button.active {
  background: rgba(255, 255, 255, 0.16);
}

.count {
  border-radius: 999px;
  background: var(--green);
  color: #fff;
  padding: 4px 8px;
  font-size: 11px;
  font-weight: 900;
}

.inbox {
  position: relative;
  display: grid;
  grid-template-rows: auto auto minmax(0, 1fr) auto;
  overflow: hidden;
}

.search-row {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 14px;
}

.search-row input {
  flex: 1;
  min-width: 0;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: 12px;
}

.tabs {
  display: flex;
  gap: 8px;
  overflow-x: auto;
  border-bottom: 1px solid var(--line);
  padding: 0 14px 10px;
}

.tab-button {
  white-space: nowrap;
}

.conversation-list {
  overflow: auto;
}

.conversation-item {
  display: grid;
  grid-template-columns: 44px minmax(0, 1fr) auto;
  gap: 10px;
  width: 100%;
  border: 0;
  border-bottom: 1px solid var(--line);
  background: var(--card);
  padding: 12px 14px;
  text-align: left;
}

.conversation-item.active {
  background: #f0faf6;
}

.avatar {
  display: grid;
  place-items: center;
  width: 38px;
  height: 38px;
  border-radius: 50%;
  background: #dff3ee;
  color: var(--green-dark);
  font-size: 12px;
  font-weight: 1000;
}

.conversation-item strong,
.conversation-item small {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.conversation-item small {
  color: var(--muted);
  margin-top: 5px;
}

.tag-row {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  margin-top: 7px;
}

.pill {
  border-radius: 999px;
  background: #eef4f2;
  color: #53635f;
  padding: 4px 7px;
  font-size: 10px;
  font-weight: 900;
}

.pill.red {
  background: var(--red-soft);
  color: #8d1025;
}

.pill.yellow {
  background: var(--yellow-soft);
  color: #795000;
}

.pill.green {
  background: var(--soft-green);
  color: #006b50;
}

.pill.blue {
  background: var(--blue-soft);
  color: var(--blue-ink);
}

.pill.gray {
  background: #e9eeee;
  color: #61706c;
}

:root[data-theme="dark"] .pill.blue {
  background: #183242;
  color: #9cd6ff;
}

:root[data-theme="dark"] .pill.gray {
  background: #2a3942;
  color: #c4d0d5;
}

/* Tema oscuro: reemplaza fondos claros por tonos WhatsApp y evita texto oscuro ilegible. */
:root[data-theme="dark"] .conversation-item.active {
  background: #2a3942;
}

:root[data-theme="dark"] .avatar {
  background: #2a3942;
  color: #7be4c7;
}

:root[data-theme="dark"] .pill {
  background: #2a3942;
  color: #c4d0d5;
}

:root[data-theme="dark"] .pill.red {
  background: #4a1f28;
  color: #ffb0bd;
}

:root[data-theme="dark"] .pill.yellow {
  background: #46390f;
  color: #ffd980;
}

:root[data-theme="dark"] .pill.green {
  background: #103d34;
  color: #7be4c7;
}

:root[data-theme="dark"] .message.auto {
  border-color: #2a3942;
}

:root[data-theme="dark"] .message.internal {
  background: #3a3418;
  color: #ffe6a3;
  border-color: var(--yellow);
}

.inbox-footer {
  border-top: 1px solid var(--line);
  color: var(--muted);
  padding: 12px 14px;
  font-size: 12px;
}

.chat {
  display: grid;
  grid-template-rows: auto minmax(0, 1fr) auto auto;
  grid-template-columns: minmax(0, 1fr); /* la columna se ajusta al ancho real (evita que el chat/composer se corten en celular) */
  overflow: hidden;
  background:
    linear-gradient(rgba(255, 255, 255, 0.72), rgba(255, 255, 255, 0.72)),
    radial-gradient(circle at 10% 10%, rgba(9, 163, 108, 0.08), transparent 24%),
    #f7f3ef;
}

:root[data-theme="dark"] .chat {
  background:
    linear-gradient(rgba(17, 27, 33, 0.82), rgba(17, 27, 33, 0.82)),
    radial-gradient(circle at 10% 10%, rgba(0, 168, 132, 0.12), transparent 24%),
    #0b141a;
}

.chat-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  border-bottom: 1px solid var(--line);
  background: var(--card);
  padding: 13px 16px;
}

.chat-header h2 {
  margin: 0;
  font-size: 16px;
}

.chat-header small {
  color: var(--muted);
}

.chat-body {
  display: flex;
  flex-direction: column;
  gap: 10px;
  overflow-y: scroll;
  overflow-x: hidden;
  padding: 18px 24px;
  scrollbar-gutter: stable;
  min-height: 0;
}

.message {
  max-width: min(620px, 82%);
  border-radius: var(--radius);
  box-shadow: 0 1px 5px rgba(0, 0, 0, 0.05);
  padding: 10px 12px 6px;
}

.message.in {
  align-self: flex-start;
  background: var(--bubble-in);
}

.message.out {
  align-self: flex-end;
  background: var(--bubble-out);
}

:root[data-theme="dark"] .message.out {
  background: #024a3d;
}

.message.auto {
  align-self: center;
  border: 1px solid #bfe9dc;
  background: var(--bubble-auto);
}

.message.internal {
  align-self: center;
  border: 1px dashed var(--yellow);
  background: var(--yellow-soft);
  color: #3f2a00;
}

.message p {
  margin: 0;
  line-height: 1.45;
  overflow-wrap: anywhere;
  white-space: pre-wrap;
}

.message footer {
  margin-top: 5px;
  color: var(--muted);
  font-size: 11px;
  text-align: right;
}

.msg-actions {
  display: inline-flex;
  gap: 8px;
  margin-left: 8px;
}

.msg-actions button {
  border: 0;
  background: transparent;
  color: var(--green-dark);
  font-weight: 800;
  font-size: 11px;
  cursor: pointer;
  padding: 0;
  text-decoration: underline;
}

.message.deleted .deleted-text {
  margin: 0;
  font-style: italic;
  opacity: 0.75;
}

.composer {
  display: grid;
  grid-template-columns: auto auto minmax(0, 1fr) auto auto;
  gap: 10px;
  border-top: 1px solid var(--line);
  background: var(--input-bg);
  padding: 11px 14px;
}

.composer textarea {
  min-height: 42px;
  max-height: 320px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  resize: vertical;
  padding: 10px;
}

/* Botones-icono compactos del composer (adjuntar y microfono). */
.composer .icon-button {
  display: grid;
  place-items: center;
  width: 40px;
  height: 40px;
  align-self: end;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: transparent;
  color: var(--muted);
  padding: 0;
}

.composer .icon-button:hover {
  color: var(--green-dark);
  border-color: var(--green);
}

/* Boton de enviar redondo con flecha. Oscuro: circulo oscuro + flecha blanca. Claro: verde. */
.send-icon-button {
  display: grid;
  place-items: center;
  width: 44px;
  height: 44px;
  align-self: end;
  border-radius: 50%;
  border: 1px solid var(--green);
  background: var(--soft-green);
  color: var(--green-dark);
  padding: 0;
}

.send-icon-button:hover {
  filter: brightness(0.96);
}

:root[data-theme="dark"] .send-icon-button {
  border: 0;
  background: #202c33;
  color: #ffffff;
}

.attachment-chip {
  display: flex;
  grid-column: 2 / 4;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  border: 1px solid #bfe9dc;
  border-radius: var(--radius);
  background: var(--panel-soft);
  color: var(--green-dark);
  padding: 8px 10px;
  font-size: 12px;
  font-weight: 800;
}

.attachment-chip button {
  border: 0;
  background: transparent;
  color: var(--green-dark);
  font-weight: 900;
}

.attachment-chip.is-audio .attachment-audio {
  flex: 1;
  min-width: 0;
  height: 36px;
}

.attachment-preview,
.attachment-link {
  display: block;
  margin-top: 8px;
}

/* La miniatura de la imagen SIEMPRE se muestra chica (hasta ~260px), en compu y celular.
   Antes en la compu la imagen se mostraba a tamaño natural y una foto enorme rompía la pantalla. */
img.attachment-preview,
.attachment-preview img,
.attachment-video {
  max-width: min(280px, 100%);
  max-height: 260px;
  width: auto;
  height: auto;
  object-fit: contain;
  border-radius: var(--radius);
  border: 1px solid var(--line);
  cursor: pointer;
  background: var(--soft);
}

/* Tarjeta para archivos demasiado pesados: no se previsualizan, solo se descargan. */
.attachment-heavy {
  display: flex;
  gap: 10px;
  align-items: center;
  margin-top: 8px;
  padding: 10px 12px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--soft);
  max-width: 320px;
}
.attachment-heavy .ah-icon { font-size: 1.8rem; }
.attachment-heavy .ah-info { display: grid; gap: 2px; min-width: 0; }
.attachment-heavy .ah-info strong { font-size: 0.9rem; word-break: break-word; }
.attachment-heavy .ah-info small { color: var(--muted); font-size: 0.8rem; }
.attachment-heavy .ah-info a { color: var(--green-dark); font-weight: 700; font-size: 0.84rem; text-decoration: none; margin-top: 2px; }

/* Álbum: varios adjuntos (fotos/videos) juntos, agrupados como en WhatsApp. */
.album-grid {
  display: grid;
  gap: 3px;
  width: 240px;
  max-width: 100%;
  margin-top: 4px;
  border-radius: 10px;
  overflow: hidden;
}
.album-count-1 { grid-template-columns: 1fr; }
.album-count-2,
.album-count-3,
.album-count-4 { grid-template-columns: 1fr 1fr; }
.album-cell { position: relative; aspect-ratio: 1 / 1; }
.album-cell img,
.album-cell video { width: 100%; height: 100%; object-fit: cover; display: block; cursor: pointer; }
.album-more {
  position: absolute; inset: 0;
  display: grid; place-items: center;
  background: rgba(0, 0, 0, 0.5); color: #fff;
  font-weight: 800; font-size: 1.3rem; cursor: pointer;
}
.album-note { color: var(--muted); font-size: 0.7rem; }

.attachment-link {
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--card);
  color: var(--green-dark);
  padding: 10px;
  font-weight: 900;
  text-decoration: none;
}

.quick-row {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  max-height: 100px;
  overflow: auto;
  border-top: 1px solid var(--line);
  background: var(--soft);
  padding: 9px 12px;
}

.quick-button.compact {
  min-width: 140px;
  padding: 8px 10px;
}

.crm-panel {
  position: relative;
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
  overflow: hidden;
}

.panel-tabs {
  display: flex;
  border-bottom: 1px solid var(--line);
}

.panel-tabs button {
  flex: 1 1 0;
  border: 0;
  background: var(--card);
  color: var(--muted);
  padding: 14px 8px;
  font-size: 12px;
  font-weight: 900;
  text-transform: uppercase;
}

.panel-tabs button.active {
  color: var(--green-dark);
  border-bottom: 2px solid var(--green);
}

.crm-scroll {
  overflow: auto;
  padding: 14px;
}

.crm-form {
  display: grid;
  gap: 12px;
}

.contact-fields {
  display: grid;
  gap: 8px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: 10px;
  margin: 0;
}

.contact-fields legend {
  font-weight: 600;
  font-size: 0.85rem;
  color: var(--muted);
  padding: 0 4px;
}

.contact-fields-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
}

.contact-fields label {
  display: grid;
  gap: 3px;
  font-size: 0.85rem;
}

.contact-fields input:disabled {
  background: var(--soft);
  color: var(--muted);
  cursor: not-allowed;
}

.cfg-hint {
  color: var(--muted);
  font-size: 0.8rem;
}

/* Campo "ID del presupuesto/venta" en el modal de resolver */
.resolve-system-id {
  margin: 6px 0 2px;
}

/* Aviso de privacidad/costo del análisis con IA */
.ai-privacy.note {
  font-size: 0.82rem;
  line-height: 1.4;
  background: var(--soft);
  border-radius: 8px;
  padding: 8px 10px;
}

/* Columna "Diferencia IA" del panel completo */
.ai-cell { display: inline-flex; align-items: center; gap: 6px; }
.ai-none { color: var(--muted); }
.ai-analyzing { color: #b26b00; font-style: italic; }
.ai-error { color: #c0392b; }
.ai-diff { font-size: 0.85rem; }
.ai-diff.green { color: #0b7a4b; }
.ai-diff.yellow { color: #b26b00; }
.ai-diff.red { color: #c0392b; }
.ai-diff strong { font-weight: 700; }
.ai-analyze-btn {
  font-size: 0.75rem;
  padding: 0 4px;
  white-space: nowrap;
}

/* Aviso de recuperación si algo falla al dibujar (nunca dejamos la pantalla en blanco) */
.boot-error {
  min-height: 60vh;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 14px;
  text-align: center;
  color: var(--muted);
  padding: 24px;
}
.boot-error button {
  padding: 8px 18px;
}

/* Categorías por canal en Configuración */
.catalog-channels {
  display: grid;
  gap: 6px;
  margin-bottom: 14px;
}

.catalog-channels > strong {
  font-size: 0.9rem;
}

.catalog-channels-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 12px;
  margin-top: 6px;
}

.catalog-channel {
  display: grid;
  gap: 4px;
  font-weight: 600;
  font-size: 0.85rem;
}

.catalog-channel textarea {
  font-weight: 400;
}

/* Asesores bloqueados por cliente (Configuración) */
.block-adder { display: grid; gap: 8px; margin: 10px 0 16px; }
.block-adder > label { display: grid; gap: 4px; font-size: 0.85rem; font-weight: 600; }
.block-results {
  display: grid; gap: 4px; max-height: 220px; overflow-y: auto;
  border: 1px solid var(--line); border-radius: 10px; padding: 6px; background: var(--soft);
}
.block-result {
  display: grid; gap: 2px; text-align: left; padding: 6px 10px; border: 0;
  background: var(--card, #fff); border-radius: 8px; cursor: pointer; font: inherit;
}
.block-result:hover { background: var(--soft); }
.block-result small { color: var(--muted); font-size: 0.78rem; }
.block-selected { border: 1px dashed var(--line); border-radius: 10px; padding: 10px; display: grid; gap: 8px; }
.block-selected-row { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.block-selected-row select { flex: 1 1 220px; }
.block-list-head { display: flex; justify-content: space-between; align-items: center; gap: 10px; flex-wrap: wrap; margin-top: 8px; }
.block-sort { display: flex; gap: 6px; align-items: center; font-size: 0.82rem; color: var(--muted); }
.block-sort .secondary { padding: 3px 10px; }
.block-sort .secondary.active { background: var(--brand, #0b7a4b); color: #fff; }
.block-table { width: 100%; border-collapse: collapse; font-size: 0.85rem; }
.block-table th, .block-table td { text-align: left; padding: 7px 9px; border-bottom: 1px solid var(--line); vertical-align: top; }
.block-table th { color: var(--muted); font-weight: 600; }
.block-table small { color: var(--muted); }
.block-empty { color: var(--muted); font-size: 0.85rem; padding: 8px 0; }

/* Listas de contactos (industria) en la ficha */
.contact-lists {
  display: grid;
  gap: 6px;
  border-top: 1px dashed var(--line);
  padding-top: 8px;
}

.contact-lists > strong {
  font-size: 0.85rem;
  color: var(--muted);
}

.list-checks {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 2px 10px;
}

.list-check {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 0.82rem;
}

.list-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.list-tag {
  background: var(--soft-green);
  color: var(--green-dark);
  border-radius: 999px;
  padding: 2px 10px;
  font-size: 0.78rem;
}

.contact-lists-row,
.broadcast-lists-row,
.crm-fields-2col {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
}

.crm-fields-2col > label {
  min-width: 0;
}

.btn-block {
  width: 100%;
}

.derive-row {
  display: flex;
  align-items: flex-end;
  gap: 8px;
}

.derive-row > label {
  flex: 1;
  min-width: 0;
}

.derive-row > button {
  flex: 0 0 auto;
  white-space: nowrap;
}

/* En columnas angostas, las parejas de campos pasan a una sola columna */
@media (max-width: 360px) {
  .contact-lists-row,
  .broadcast-lists-row,
  .crm-fields-2col {
    grid-template-columns: 1fr;
  }
}

.broadcast-lists {
  display: grid;
  gap: 6px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: 10px;
  background: var(--soft);
}

.nav-lists {
  display: grid;
  gap: 8px;
}

.nav-lists .ms-btn {
  width: 100%;
}

.nav-lists .ms-field-label {
  color: #eafff9;
}

.new-chat-btn {
  flex: 0 0 auto;
  font-size: 1.05rem;
}

.ficha-warning {
  background: var(--yellow-soft);
  color: #7a4f00;
  border: 1px solid var(--yellow);
  border-radius: 8px;
  padding: 8px 12px;
  margin: 6px 10px 0;
  font-weight: 700;
  font-size: 0.85rem;
  cursor: pointer;
  text-align: center;
}

:root[data-theme="dark"] .ficha-warning {
  background: rgba(240, 165, 32, 0.15);
  color: var(--yellow);
}

.contact-exists-card { max-width: 520px; width: 92vw; }

.mgmt-list {
  display: grid;
  gap: 6px;
  max-height: 300px;
  overflow-y: auto;
}

.mgmt-item {
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 8px 10px;
  background: var(--card);
  border-left: 3px solid var(--green);
}

.mgmt-item.open {
  border-left-color: var(--yellow);
}

.mgmt-line { font-size: 0.88rem; }
.mgmt-item small { color: var(--muted); font-size: 0.8rem; }

.ms-field {
  display: grid;
  gap: 3px;
  font-size: 0.8rem;
  color: var(--muted);
  min-width: 0;
}

.ms-field-label {
  font-weight: 700;
  color: var(--text);
  font-size: 0.82rem;
}

.ms-field .ms-btn {
  width: 100%;
}

/* Config: editor de tipos de lista */
.list-groups {
  display: grid;
  gap: 12px;
}

.list-groups-head {
  display: grid;
  grid-template-columns: 1fr 1fr auto;
  gap: 8px;
  font-size: 0.75rem;
  font-weight: 700;
  color: var(--green-dark);
  text-transform: uppercase;
}

.list-groups-head > span:last-child { width: 34px; }

.list-group-editor {
  display: grid;
  grid-template-columns: 1fr 1fr auto;
  gap: 8px;
  align-items: start;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: 8px;
  background: var(--soft);
}

.list-group-remove {
  padding: 6px 9px;
}

.list-group-head {
  display: flex;
  gap: 8px;
  align-items: center;
}

.list-group-name {
  flex: 1;
  padding: 8px 10px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--input-bg);
  color: var(--text);
  font-weight: 600;
}

.list-groups-actions {
  display: flex;
  gap: 8px;
  margin-top: 10px;
}

/* Usuarios compactos: fila colapsada + editor expandido */
.user-row-compact {
  display: grid;
  grid-template-columns: minmax(0, 1.2fr) minmax(0, 1.4fr) auto;
  align-items: center;
  gap: 10px;
  padding: 8px 12px;
}

.user-row-info { min-width: 0; }
.user-row-info strong { display: block; font-size: 0.92rem; }
.user-row-info small { color: var(--muted); font-size: 0.78rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; display: block; }

.user-row-perms {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
}

.perm-chip {
  background: var(--soft-green);
  color: var(--green-dark);
  border-radius: 999px;
  padding: 1px 8px;
  font-size: 0.72rem;
  font-weight: 700;
}

.user-row-compact.is-inactive { opacity: 0.65; }

.user-row-compact [data-action="expand-user"] {
  padding: 6px 12px;
}

.user-form-grid {
  grid-column: 1 / -1;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
  gap: 10px 16px;
  align-items: start;
}

.user-form-grid .check-group { grid-column: span 1; }

.user-collapse { margin-left: auto; padding: 4px 10px; }

.msg-broadcast {
  display: inline-block;
  font-size: 0.7rem;
  font-weight: 700;
  color: var(--yellow);
  margin-bottom: 2px;
}

.message.is-broadcast {
  border-left: 3px solid var(--yellow);
}

.msg-ticks {
  color: var(--muted);
  font-weight: 700;
  margin-left: 2px;
}

.msg-ticks.read {
  color: #34b7f1; /* azul "leido" de WhatsApp */
}

.origin-badge {
  color: var(--yellow);
  font-weight: 600;
  white-space: nowrap;
}

/* Llamadas y videollamadas */
.internal-call-actions {
  margin-left: auto;
  display: flex;
  gap: 6px;
}

.internal-call-actions .icon-button {
  font-size: 1.1rem;
}

#callLayer {
  position: fixed;
  inset: 0;
  z-index: 900;
  pointer-events: none;
}

.call-incoming {
  position: fixed;
  top: 20px;
  left: 50%;
  transform: translateX(-50%);
  pointer-events: auto;
}

.call-card {
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: 14px;
  box-shadow: var(--shadow);
  padding: 16px 20px;
  display: grid;
  gap: 6px;
  justify-items: center;
  min-width: 260px;
}

.call-card strong { font-size: 1.05rem; color: var(--text); }
.call-card span { color: var(--muted); }

.call-actions {
  display: flex;
  gap: 10px;
  margin-top: 6px;
}

.call-btn {
  border: none;
  border-radius: 999px;
  padding: 9px 16px;
  font-weight: 700;
  cursor: pointer;
  background: var(--soft);
  color: var(--text);
}

.call-btn.accept { background: var(--green); color: #fff; }
.call-btn.reject, .call-btn.hangup { background: var(--red); color: #fff; }
.call-btn.on { background: var(--yellow); color: #1c1300; }

.call-overlay {
  position: fixed;
  inset: 0;
  background: #0b141a;
  pointer-events: auto;
  display: flex;
  flex-direction: column;
}

.call-videos {
  position: relative;
  flex: 1;
  overflow: hidden;
  display: flex;
  align-items: center;
  justify-content: center;
}

.call-remote {
  width: 100%;
  height: 100%;
  object-fit: contain;
  background: #000;
}

.call-overlay.audio .call-remote { display: none; }

.call-local {
  position: absolute;
  right: 16px;
  bottom: 16px;
  width: 22vw;
  max-width: 220px;
  border-radius: 10px;
  border: 2px solid rgba(255,255,255,0.4);
  background: #000;
  object-fit: cover;
}

.call-overlay.audio .call-local { display: none; }

.call-avatar {
  color: #fff;
  font-size: 4rem;
  display: grid;
  justify-items: center;
  gap: 10px;
}

.call-avatar span { font-size: 1.1rem; }

.call-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 14px 20px;
  background: rgba(0,0,0,0.5);
  color: #fff;
  flex-wrap: wrap;
}

.call-status { font-weight: 600; }

.call-controls {
  display: flex;
  gap: 10px;
  align-items: center;
}

/* Notificaciones pop-up (toasts) */
.toast-stack {
  position: fixed;
  right: 16px;
  bottom: 16px;
  z-index: 500;
  display: flex;
  flex-direction: column;
  gap: 8px;
  max-width: 320px;
}

.toast {
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: 12px;
  box-shadow: var(--shadow);
  padding: 10px 12px;
  display: grid;
  gap: 6px;
  animation: toast-in 0.2s ease-out;
  width: 300px;
  max-width: 90vw;
}

.toast-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.toast-app {
  font-size: 0.78rem;
  font-weight: 700;
  color: var(--green-dark);
}

.toast-close {
  border: none;
  background: transparent;
  color: var(--muted);
  cursor: pointer;
  font-size: 0.9rem;
  line-height: 1;
}

.toast-row {
  display: flex;
  align-items: center;
  gap: 10px;
  cursor: pointer;
}

.toast-avatar {
  width: 40px;
  height: 40px;
  border-radius: 50%;
  object-fit: cover;
  flex: 0 0 auto;
}

.toast-appicon {
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background: var(--soft-green);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 1.1rem;
  flex: 0 0 auto;
}

.toast-texts {
  display: grid;
  gap: 1px;
  min-width: 0;
}

.toast strong {
  color: var(--text);
  font-size: 0.9rem;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.toast-texts span {
  color: var(--muted);
  font-size: 0.82rem;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.toast-reply {
  display: flex;
  gap: 6px;
}

.toast-reply-input {
  flex: 1;
  min-width: 0;
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 7px 10px;
  background: var(--input-bg);
  color: var(--text);
}

.toast-reply-send {
  border: none;
  background: var(--green);
  color: #fff;
  border-radius: 8px;
  padding: 7px 14px;
  font-weight: 700;
  cursor: pointer;
}

/* En celular, arriba y ancho completo (como una notificación de WhatsApp) */
.toast-mobile {
  border-left: 4px solid var(--green);
}

@media (max-width: 640px) {
  .toast-stack {
    right: 8px;
    left: 8px;
    top: 8px;
    bottom: auto;
    max-width: none;
  }
  .toast {
    width: auto;
  }
}

.toast.leaving {
  opacity: 0;
  transform: translateX(20px);
  transition: opacity 0.25s ease, transform 0.25s ease;
}

@keyframes toast-in {
  from { opacity: 0; transform: translateX(20px); }
  to { opacity: 1; transform: translateX(0); }
}

/* No leidos, preview y tipo de mensaje en la bandeja */
.conv-meta {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 4px;
}

.unread-badge {
  background: var(--green);
  color: #fff;
  border-radius: 999px;
  min-width: 18px;
  height: 18px;
  padding: 0 5px;
  font-size: 0.72rem;
  font-weight: 700;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.conversation-item.has-unread strong {
  font-weight: 800;
}

/* Bandeja: nuevo chat + filtro "no leídas" apilados y compactos (sin ensanchar la barra) */
.inbox-actions {
  display: flex;
  flex-direction: column;
  gap: 5px;
  flex: 0 0 auto;
}
.inbox-actions .icon-button {
  min-width: 34px;
  width: 34px;
  height: 30px;
  padding: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.inbox-actions .new-chat-btn {
  font-size: 0.95rem;
}
.unread-filter-btn {
  color: var(--navy, #242d5f);
}
.unread-filter-btn svg {
  display: block;
}
/* Resaltado cuando el filtro está activo (igual que los botones del menú activos) */
.unread-filter-btn.active {
  background: var(--green);
  color: #fff;
  border-color: var(--green-dark);
  box-shadow: 0 0 0 2px rgba(8, 166, 107, 0.25);
}
:root[data-theme="dark"] .unread-filter-btn.active {
  color: #06231c;
}

/* Puntito de "no leída" marcada a mano (sin número pendiente) */
.unread-badge.dot {
  min-width: 12px;
  width: 12px;
  height: 12px;
  padding: 0;
}

/* Menú contextual de la conversación (clic derecho) */
.conv-context-menu {
  position: fixed;
  z-index: 1000;
  background: var(--card, #ffffff);
  border: 1px solid var(--line);
  border-radius: 8px;
  box-shadow: 0 6px 20px rgba(20, 40, 80, 0.18);
  padding: 4px;
  min-width: 180px;
}
.conv-context-menu button {
  display: block;
  width: 100%;
  text-align: left;
  background: none;
  border: none;
  padding: 8px 12px;
  border-radius: 6px;
  cursor: pointer;
  font-size: 0.9rem;
  color: var(--text);
}
.conv-context-menu button:hover {
  background: rgba(8, 166, 107, 0.12);
}

/* Ficha: Responsable de solo lectura + aviso de derivar (para quien no puede tomar/derivar) */
.readonly-field {
  background: var(--card, #f5f6fc);
  color: var(--muted, #5c6270);
  cursor: not-allowed;
}
.derive-note {
  margin-top: 8px;
  padding: 9px 11px;
  border: 1px dashed var(--line);
  border-radius: 8px;
  color: var(--muted, #5c6270);
  font-size: 0.85rem;
}

/* Usuarios y permisos agrupados por canal (colapsables) */
.user-channel-group {
  border: 1px solid var(--line);
  border-radius: 10px;
  margin-bottom: 10px;
  overflow: hidden;
  background: var(--card, #f5f6fc);
}
.user-channel-head {
  width: 100%;
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 12px 14px;
  background: none;
  border: none;
  cursor: pointer;
  font-size: 1rem;
  color: var(--text);
  text-align: left;
}
.user-channel-head:hover {
  background: rgba(8, 166, 107, 0.08);
}
.user-channel-group.open .user-channel-head {
  border-bottom: 1px solid var(--line);
}
.user-channel-head .chev {
  color: var(--green);
  font-size: 0.85rem;
  width: 14px;
}
.user-channel-head strong {
  flex: 1;
}
.user-channel-count {
  background: var(--green);
  color: #fff;
  border-radius: 999px;
  min-width: 22px;
  height: 22px;
  padding: 0 7px;
  font-size: 0.78rem;
  font-weight: 700;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.user-channel-body {
  padding: 10px 12px;
  display: flex;
  flex-direction: column;
  gap: 8px;
  background: var(--bg, #fff);
}

.conversation-item .preview {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  display: block;
}

.conversation-item .preview-draft {
  color: var(--red);
}

/* Galeria de medios */
.gallery-card {
  max-width: 640px;
  width: 92vw;
  max-height: 85vh;
  overflow-y: auto;
}

.gallery-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 8px;
}

.gallery-section {
  margin-bottom: 14px;
}

.gallery-section h4 {
  margin: 0 0 6px;
  color: var(--muted);
  font-size: 0.85rem;
}

.gallery-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(110px, 1fr));
  gap: 8px;
}

.gallery-thumb {
  width: 100%;
  height: 110px;
  object-fit: cover;
  border-radius: 6px;
  border: 1px solid var(--line);
  cursor: pointer;
  background: #000;
}

.gallery-file {
  grid-column: 1 / -1;
  padding: 8px 10px;
  border: 1px solid var(--line);
  border-radius: 6px;
  color: var(--text);
  text-decoration: none;
  background: var(--soft);
}

.gallery-file:hover {
  background: var(--soft-green);
}

/* Datos de empresa (WhatsApp Business) en la ficha. */
.business-info {
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: 8px 10px;
  margin-top: 8px;
  background: var(--input-bg);
}
.business-info > summary {
  cursor: pointer;
  font-weight: 800;
  font-size: 12px;
  color: var(--muted);
  list-style: revert;
}
.business-info[open] > summary { margin-bottom: 8px; }
.business-info .biz-account { margin-bottom: 6px; }
.business-info label { display: grid; gap: 4px; margin-bottom: 6px; }

/* Cada elemento muestra si fue recibido (del cliente) o enviado (al cliente). */
.gallery-item {
  position: relative;
  display: flex;
  flex-direction: column;
}
.gallery-item-wide { grid-column: 1 / -1; }
.gallery-item .gallery-file { grid-column: auto; }
.gallery-dir {
  position: absolute;
  top: 4px;
  left: 4px;
  font-size: 0.62rem;
  font-weight: 800;
  padding: 1px 6px;
  border-radius: 999px;
  color: #fff;
  background: rgba(0, 0, 0, 0.55);
}
.gallery-item-wide .gallery-dir { position: static; align-self: flex-start; margin-top: 4px; }
.gallery-dir.in { background: #128c7e; }
.gallery-dir.out { background: #3b6ea5; }
.gallery-count {
  display: inline-block;
  min-width: 16px;
  padding: 0 5px;
  border-radius: 999px;
  background: var(--soft-green);
  color: var(--green);
  font-size: 0.72rem;
  text-align: center;
}

/* Filtros del historial global */
.history-filters {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.history-chip {
  border: 1px solid var(--line);
  background: var(--card);
  color: var(--muted);
  border-radius: 999px;
  padding: 3px 10px;
  font-size: 0.8rem;
  cursor: pointer;
}

.history-chip.active {
  background: var(--green);
  color: #fff;
  border-color: var(--green-dark);
}

.history-item.history-assignment { border-left: 3px solid var(--yellow); }
.history-item.history-ficha { border-left: 3px solid var(--blue-ink); }
.history-item.history-resolution { border-left: 3px solid var(--green); }

.last-card,
.auto-card,
.simulator,
.history-item {
  display: grid;
  gap: 8px;
  border: 1px solid #bfe9dc;
  border-radius: var(--radius);
  background: var(--panel-soft);
  padding: 11px;
}

.panel-actions {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
}

.simulator {
  margin-top: 14px;
  background: var(--card);
}

.history-list {
  display: grid;
  gap: 10px;
}

.history-item {
  background: var(--card);
}

.history-item span,
.history-item small {
  color: var(--muted);
  font-size: 12px;
}

.manager-panel {
  display: none;
  grid-column: 1 / -1;
  overflow: auto;
  padding: 10px 16px 16px;
}

.manager-panel .top-actions {
  margin-bottom: 2px;
}

.manager-panel h2 {
  margin: 2px 0 4px;
}

.manager-panel > p {
  margin: 0 0 10px;
}

.manager-panel.active,
.users-panel.active {
  display: block;
  grid-row: 2;
}

/* El panel completo ocupa el alto disponible: cabecera/KPIs/filtros fijos arriba
   y la tabla scrollea adentro, para que la barra horizontal esté SIEMPRE visible. */
.manager-panel.active {
  display: flex;
  flex-direction: column;
  overflow: hidden;
}
.manager-panel.active .table-wrap {
  flex: 1 1 auto;
  min-height: 0;
  overflow: auto;
}

.broadcast-panel {
  display: none;
  grid-column: 1 / -1;
  overflow: auto;
  padding: 18px;
  min-width: 0;
  min-height: 0;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--card);
  box-shadow: var(--shadow);
}

.broadcast-panel.active {
  display: block;
}

.broadcast-form {
  max-width: 760px;
}

.broadcast-attach-row {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}

.broadcast-recipients {
  display: grid;
  gap: 8px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--soft);
  padding: 12px;
}

.broadcast-recipients-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}

.broadcast-recipient-list {
  display: grid;
  gap: 4px;
  max-height: 320px;
  overflow: auto;
}

.broadcast-result {
  font-weight: 800;
  color: var(--green-dark);
}

.config-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 210px;
  gap: 18px;
  align-items: start;
}

.config-main {
  min-width: 0;
  display: grid;
  gap: 18px;
}

.config-toc {
  position: sticky;
  top: 12px;
}

.config-toc-inner {
  display: grid;
  gap: 8px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--soft);
  padding: 12px;
}

.config-toc-inner input {
  width: 100%;
  padding: 8px 10px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--input-bg);
  color: var(--text);
}

.config-toc-nav {
  display: grid;
  gap: 2px;
}

.config-toc-link {
  text-align: left;
  border: 0;
  background: transparent;
  color: var(--text);
  padding: 7px 8px;
  border-radius: 6px;
  font-weight: 700;
  font-size: 13px;
}

.config-toc-link:hover {
  background: var(--soft-green);
}

.cfg-heading {
  margin: 0 0 4px;
}

.cfg-templates-links {
  display: grid;
  gap: 6px;
  margin-top: 10px;
  border-top: 1px dashed var(--line);
  padding-top: 10px;
}

.cfg-templates-buttons {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}

@media (max-width: 900px) {
  .config-layout {
    grid-template-columns: 1fr;
  }
  .config-toc {
    position: static;
    order: -1;
  }
}

.users-panel {
  display: none;
  grid-column: 1 / -1;
  overflow: auto;
  padding: 18px;
}

.users-panel h2,
.users-panel p,
.users-panel h3 {
  margin-top: 0;
}

.admin-grid,
.permission-list {
  display: grid;
  gap: 12px;
}

.admin-grid {
  grid-template-columns: repeat(3, minmax(260px, 1fr));
  margin: 14px 0;
}

.settings-card,
.permission-card {
  display: grid;
  gap: 12px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--card);
  padding: 14px;
}

.settings-card label,
.permission-card label {
  display: grid;
  gap: 6px;
  color: #40534f;
  font-size: 12px;
  font-weight: 900;
}

.settings-card input,
.settings-card select,
.settings-card textarea,
.permission-card input,
.permission-card select {
  width: 100%;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--input-bg);
  color: var(--text);
  padding: 10px 11px;
}

.permission-card {
  grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
  align-items: start;
}

.user-card-head {
  grid-column: 1 / -1;
  display: grid;
  gap: 2px;
  min-width: 0;
}

.user-card-head .user-email {
  color: var(--muted);
  font-weight: 700;
  overflow-wrap: anywhere;
}

.user-card-head .user-note {
  color: var(--yellow);
  font-weight: 800;
}

.user-card-actions {
  grid-column: 1 / -1;
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
}

.check-group {
  display: grid;
  gap: 8px;
}

.check-row {
  display: flex !important;
  grid-template-columns: none !important;
  align-items: center;
  gap: 8px !important;
  font-weight: 700 !important;
}

.check-row input {
  width: auto;
}

.auto-pause-group {
  border-left: 3px solid var(--yellow);
  padding-left: 12px;
}

.metrics {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 12px;
  margin-bottom: 12px;
}

.metric {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 8px;
}

.metric,
.table-wrap {
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--card);
  padding: 10px 12px;
}

.metric strong {
  margin-top: 0;
  color: var(--green-dark);
  font-size: 22px;
}

.metric span { font-size: 0.85rem; }

.metric.red {
  background: var(--red-soft);
}

.metric.red strong {
  color: #8d1025;
}

.metric.yellow {
  background: var(--yellow-soft);
}

.metric.yellow strong {
  color: #795000;
}

.metric.blue {
  background: var(--blue-soft);
}

.metric.blue strong {
  color: var(--blue-ink);
}

.metric.green {
  background: #dff6e9;
}

.metric.green strong {
  color: #006b50;
}

/* En tema oscuro estas tarjetas siguen con fondo claro: el texto debe ser oscuro para leerse. */
:root[data-theme="dark"] .metric.red,
:root[data-theme="dark"] .metric.yellow,
:root[data-theme="dark"] .metric.blue,
:root[data-theme="dark"] .metric.green {
  color: #1c2a25;
}

.table-wrap {
  overflow: auto;
}

/* Tabla con columnas ajustables (arrastrando el borde), que crece y tiene scroll horizontal. */
.resizable-table {
  table-layout: fixed;
  width: max-content;
  min-width: 100%;
}

.resizable-table th,
.resizable-table td {
  position: relative;
  white-space: normal;
  overflow-wrap: anywhere;
  vertical-align: top;
  min-width: 92px;
}

/* Control de zoom del panel completo. */
.zoom-control {
  display: inline-flex;
  align-items: center;
  gap: 2px;
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 2px;
}
.zoom-control .zoom-btn {
  min-width: 26px;
  padding: 4px 8px;
  font-weight: 800;
  border-radius: 6px;
}
.zoom-control .zoom-val {
  padding: 4px 8px;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  border-radius: 6px;
  min-width: 48px;
}

/* Encabezados fijos: quedan a la vista al bajar por la tabla. */
.resizable-table thead th {
  position: sticky;
  top: 0;
  z-index: 3;
  background: var(--soft-green);
  box-shadow: inset 0 -2px 0 var(--green);
}

.resizable-table th[draggable="true"] { cursor: grab; }
.resizable-table th.th-dragging { opacity: 0.5; }
.resizable-table th.th-drop { outline: 2px dashed var(--green); outline-offset: -2px; }

.resizable-table th .table-sort {
  white-space: normal;
  text-align: left;
}

/* Cabeceras: ordenar y filtrar bien visibles en ambos temas */
.th-head {
  display: flex;
  align-items: center;
  gap: 4px;
  justify-content: space-between;
}

.resizable-table th .table-sort {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  cursor: pointer;
}

.sort-glyph {
  flex: 0 0 auto;
  font-size: 0.72rem;
  color: var(--muted);
  opacity: 0.65;
}

.table-sort:hover .sort-glyph { opacity: 1; color: var(--green-dark); }
.table-sort.active .sort-glyph { color: var(--green); opacity: 1; }

.col-filter-btn {
  flex: 0 0 auto;
  border: 1px solid var(--line);
  background: var(--soft);
  color: var(--muted);
  border-radius: 5px;
  cursor: pointer;
  font-size: 0.68rem;
  line-height: 1;
  padding: 3px 5px;
}

.col-filter-btn:hover {
  background: var(--soft-green);
  color: var(--green-dark);
  border-color: var(--green);
}

.col-filter-btn.active {
  background: var(--green);
  color: #fff;
  border-color: var(--green-dark);
}

/* Resaltar la columna ordenada o filtrada */
.resizable-table th.th-sorted,
.resizable-table th.th-filtered {
  background: var(--soft-green);
}

:root[data-theme="dark"] .resizable-table th.th-sorted,
:root[data-theme="dark"] .resizable-table th.th-filtered {
  background: rgba(0, 168, 132, 0.18);
}

:root[data-theme="dark"] .col-filter-btn {
  background: rgba(255, 255, 255, 0.06);
  border-color: var(--line);
  color: var(--green-dark);
}

/* Desplegable multi-select reutilizable */
.ms-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  border: 1px solid var(--line);
  background: var(--input-bg);
  color: var(--text);
  border-radius: 8px;
  padding: 6px 10px;
  cursor: pointer;
  font-size: 0.85rem;
  min-width: 120px;
}

.ms-btn.active {
  border-color: var(--green);
  box-shadow: inset 0 0 0 1px var(--green);
}

.ms-btn-label {
  color: var(--muted);
  font-size: 0.75rem;
}

.ms-btn-summary {
  font-weight: 600;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 140px;
}

.ms-btn-caret {
  margin-left: auto;
  color: var(--muted);
  font-size: 0.7rem;
}

.ms-btn-ico { font-size: 0.95rem; line-height: 1; flex: 0 0 auto; }

/* Chip de filtro fijo (una sola opción): se ve como los demás pero no despliega. */
.ms-static { cursor: default; opacity: 0.95; }
.ms-static .ms-btn-summary { color: var(--green-dark); }

/* Fila de filtros por iconos de la bandeja: Canal · Usuario · Estado. */
.inbox-filters {
  display: flex;
  gap: 8px;
  padding: 0 14px 12px;
  overflow-x: auto;
  scrollbar-width: none;
}
.inbox-filters::-webkit-scrollbar { display: none; }
.inbox-filters .ms-btn {
  flex: 0 0 auto;
  padding: 7px 11px;
}
.inbox-filters .ms-btn-summary { max-width: 120px; font-size: 0.78rem; }

.ms-group-title {
  font-size: 0.72rem;
  font-weight: 700;
  color: var(--green-dark);
  text-transform: uppercase;
  margin: 6px 0 2px;
}

/* El popover respeta la altura máxima (para no salirse de la pantalla) */
.ms-pop {
  overflow: hidden;
}

.ms-pop .col-filter-list {
  flex: 1 1 auto;
  min-height: 60px;
  max-height: none;
}

.manager-colfilter-note {
  margin: 6px 0;
  font-size: 0.85rem;
  color: var(--muted);
}

.table-empty {
  text-align: center;
  color: var(--muted);
  padding: 18px;
}

.col-filter-pop {
  position: fixed;
  z-index: 200;
  width: 250px;
  max-width: 90vw;
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  padding: 10px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.col-filter-title {
  font-weight: 600;
  font-size: 0.9rem;
  color: var(--text);
}

.col-filter-search {
  width: 100%;
  padding: 6px 8px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--input-bg);
  color: var(--text);
}

.col-filter-tools {
  display: flex;
  gap: 12px;
}

.col-filter-list {
  max-height: 220px;
  overflow-y: auto;
  display: flex;
  flex-direction: column;
  gap: 2px;
  border: 1px solid var(--line);
  border-radius: 6px;
  padding: 6px;
}

.col-filter-item {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 0.85rem;
  color: var(--text);
  cursor: pointer;
  padding: 2px 3px;
}

.col-filter-item:hover {
  background: var(--soft);
}

.col-filter-item span {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.col-filter-empty {
  color: var(--muted);
}

.col-filter-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}

.col-filter-foot small {
  color: var(--muted);
}

.col-filter-foot-btns {
  display: flex;
  gap: 6px;
}

.col-resizer {
  position: absolute;
  top: 0;
  right: 0;
  width: 7px;
  height: 100%;
  cursor: col-resize;
  user-select: none;
  touch-action: none;
}

.col-resizer:hover {
  background: var(--green);
  opacity: 0.5;
}

table {
  width: 100%;
  min-width: 980px;
  border-collapse: collapse;
  table-layout: auto;
}

.manager-filters,
.assignment-grid,
.catalog-grid {
  display: grid;
  gap: 12px;
  margin-bottom: 12px;
}

.manager-filters {
  display: flex;
  flex-wrap: wrap;
  align-items: stretch;
  gap: 10px;
}

.manager-filters .ms-btn {
  min-height: 32px;
  padding: 4px 8px;
  min-width: 100px;
}

.manager-filters .ms-btn-summary { max-width: 100px; font-size: 0.8rem; }

/* Administrador de columnas del panel */
.col-manager-card { max-width: 420px; width: 92vw; }
.col-manager-list { display: grid; gap: 4px; max-height: 55vh; overflow-y: auto; }
.col-manager-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 5px 10px;
}
.col-manager-row .check-row { margin: 0; }
.col-manager-move { display: flex; gap: 4px; }
.col-manager-move button { padding: 3px 8px; font-size: 0.75rem; }

.manager-search-label {
  flex: 1 1 200px;
  min-width: 160px;
}

.manager-filters label,
.catalog-grid label {
  display: grid;
  gap: 6px;
  color: #40534f;
  font-size: 12px;
  font-weight: 900;
}

.manager-filters input,
.manager-filters select {
  width: 100%;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--card);
  color: var(--text);
  padding: 10px 11px;
}

.assignment-grid {
  grid-template-columns: repeat(3, minmax(220px, 1fr));
}

.assignment-card {
  display: grid;
  gap: 10px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--soft);
  padding: 12px;
}

.assignment-card h4 {
  margin: 0;
}

.autoreply-schedule,
.autoreply-reminder {
  display: grid;
  gap: 8px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--soft);
  padding: 12px;
}

.autoreply-days {
  display: grid;
  gap: 6px;
}

.autoreply-day {
  display: grid;
  grid-template-columns: 90px repeat(4, minmax(0, 1fr));
  gap: 8px;
  align-items: center;
}

.autoreply-day-head {
  font-size: 11px;
  font-weight: 800;
  color: var(--muted);
}

.autoreply-day input[type="time"] {
  width: 100%;
}

.autoreply-reminder label {
  margin: 0;
}

@media (max-width: 720px) {
  .autoreply-day {
    grid-template-columns: 70px repeat(4, minmax(0, 1fr));
    gap: 4px;
  }
  .autoreply-day-head {
    display: none;
  }
}

.catalog-grid {
  grid-template-columns: repeat(3, minmax(220px, 1fr));
}

.table-link {
  border: 0;
  background: transparent;
  color: var(--green-dark);
  padding: 0;
  font-weight: 900;
  text-align: left;
}

.clickable-row {
  cursor: pointer;
}

.clickable-row:hover {
  background: var(--soft);
}

.icon-button {
  min-width: 42px;
}

.icon-button[data-action="undo"],
.icon-button[data-action="redo"] {
  color: transparent;
  position: relative;
}

.icon-button[data-action="undo"]::before,
.icon-button[data-action="redo"]::before {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  color: var(--green-dark);
  font-size: 19px;
}

.icon-button[data-action="undo"]::before {
  content: "\21B6";
}

.icon-button[data-action="redo"]::before {
  content: "\21B7";
}

.mic-button {
  display: grid;
  place-items: center;
  width: 46px;
  padding: 0;
  font-size: 0;
}

.mic-button.recording {
  border-color: var(--red);
  background: var(--red-soft);
}

.mic-icon {
  position: relative;
  width: 16px;
  height: 24px;
  border: 2px solid var(--muted);
  border-radius: 9px;
  transform: scale(0.72);
}

.mic-icon::before {
  content: "";
  position: absolute;
  left: 50%;
  bottom: -9px;
  width: 20px;
  height: 12px;
  border: 2px solid var(--muted);
  border-top: 0;
  border-radius: 0 0 12px 12px;
  transform: translateX(-50%);
}

.mic-icon::after {
  content: "";
  position: absolute;
  left: 50%;
  bottom: -14px;
  width: 2px;
  height: 7px;
  background: var(--muted);
  transform: translateX(-50%);
}

.attachment-audio {
  display: block;
  width: 100%;
  margin-top: 8px;
}

.modal-backdrop {
  position: fixed;
  inset: 0;
  z-index: 20;
  display: grid;
  place-items: center;
  background: rgba(0, 0, 0, 0.42);
  padding: 18px;
}

.modal-card {
  display: grid;
  gap: 14px;
  width: min(520px, 100%);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--card);
  box-shadow: var(--shadow);
  padding: 18px;
}

.modal-card h3,
.modal-card p {
  margin: 0;
}

.modal-card label {
  display: grid;
  gap: 6px;
  color: #40534f;
  font-size: 12px;
  font-weight: 900;
}

.modal-card textarea {
  width: 100%;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--card);
  color: var(--text);
  padding: 10px;
}

.resolve-options {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
}

.modal-actions {
  display: flex;
  justify-content: flex-end;
  gap: 10px;
}

.library-card {
  width: min(720px, 100%);
  height: min(80vh, 720px);
  min-width: 360px;
  min-height: 340px;
  max-width: 96vw;
  max-height: 92vh;
  overflow: hidden;
  display: grid;
  grid-template-rows: auto auto minmax(0, 1fr);
  gap: 10px;
  resize: both;
}

.library-hint {
  margin: 0;
  font-size: 12px;
  color: var(--muted);
}

.library-list {
  overflow: auto;
  min-height: 0;
}

/* Filas compactas: nombre + alcance + fijar en una linea (mas por columna). */
.library-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto;
  gap: 8px;
  align-items: center;
}

.library-item.compact {
  gap: 8px;
  padding: 10px;
}

.library-item.compact textarea {
  min-height: 46px;
}

.lib-pin {
  flex: none;
  width: 38px;
  height: 38px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: transparent;
  font-size: 16px;
}

.lib-pin.on {
  border-color: var(--green);
  background: var(--soft-green);
}

.quick-button.pinned {
  border-color: var(--green);
  color: var(--green-dark);
  font-weight: 800;
}

.modal-title-row,
.library-item-header,
.library-actions {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}

.icon-close {
  padding: 6px 10px;
}

.library-list,
.library-form,
.library-item {
  display: grid;
  gap: 10px;
}

.library-item,
.library-form {
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--soft);
  padding: 12px;
}

.library-item label,
.library-form label {
  display: grid;
  gap: 6px;
  color: #40534f;
  font-size: 12px;
  font-weight: 900;
}

.library-item input,
.library-item select,
.library-item textarea,
.library-form input,
.library-form select,
.library-form textarea {
  width: 100%;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--input-bg);
  color: var(--text);
  padding: 10px;
}

.secondary.danger {
  color: #8d1025;
}

th,
td {
  border-bottom: 1px solid var(--line);
  padding: 10px 8px;
  font-size: 12px;
  text-align: left;
  vertical-align: top;
  white-space: normal;
  overflow-wrap: anywhere;
}

th {
  color: var(--muted);
  font-size: 11px;
  font-weight: 900;
  resize: horizontal;
  overflow: auto;
  min-width: 90px;
}

.table-sort {
  border: 0;
  background: transparent;
  color: inherit;
  padding: 0;
  font: inherit;
  font-weight: 900;
  text-align: left;
}

.error {
  color: var(--red);
  font-weight: 800;
}

:root[data-theme="dark"] .login-card label,
:root[data-theme="dark"] .crm-form label,
:root[data-theme="dark"] .simulator label,
:root[data-theme="dark"] .settings-card label,
:root[data-theme="dark"] .permission-card label,
:root[data-theme="dark"] .manager-filters label,
:root[data-theme="dark"] .catalog-grid label,
:root[data-theme="dark"] .modal-card label {
  color: var(--muted);
}

/* -------------------- Chat interno entre usuarios -------------------- */
.internal-panel {
  display: none;
  grid-column: 1 / -1;
  min-height: 0;
  overflow: hidden;
}

.internal-panel.active {
  display: block;
}

.internal-layout {
  display: grid;
  grid-template-columns: var(--threads-w, 330px) minmax(0, 1fr);
  gap: 12px;
  height: 100%;
  min-height: 0;
}

.internal-threads {
  position: relative;
  display: grid;
  grid-template-rows: auto auto minmax(0, 1fr);
  min-height: 0;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--card);
  box-shadow: var(--shadow);
  overflow: hidden;
}

.internal-threads-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  border-bottom: 1px solid var(--line);
  padding: 14px;
}

.internal-new-form {
  display: grid;
  gap: 10px;
  border-bottom: 1px solid var(--line);
  background: var(--soft);
  padding: 14px;
}

.internal-new-form small {
  color: var(--muted);
}

.internal-new-form input {
  width: 100%;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--input-bg);
  color: var(--text);
  padding: 10px;
}

.internal-user-picker {
  display: grid;
  gap: 3px;
  max-height: 240px;
  overflow: auto;
}

.internal-user-info {
  display: grid;
  gap: 0;
  text-align: left;
  min-width: 0;
}

.internal-user-row {
  display: grid;
  grid-template-columns: auto auto minmax(0, 1fr);
  align-items: center;
  gap: 8px;
  padding: 4px 8px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--card);
  cursor: pointer;
  font-weight: 700;
}

.internal-user-row input {
  width: auto;
  margin: 0;
}

.internal-user-name {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  text-align: left;
  font-weight: 700;
  font-size: 0.9rem;
}

.internal-user-role {
  color: var(--muted);
  font-size: 11px;
  font-weight: 600;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  text-align: left;
}

.internal-thread-list {
  overflow: auto;
}

.internal-thread-item {
  display: grid;
  grid-template-columns: 44px minmax(0, 1fr) auto;
  gap: 10px;
  width: 100%;
  border: 0;
  border-bottom: 1px solid var(--line);
  background: var(--card);
  padding: 12px 14px;
  text-align: left;
  color: var(--text);
}

.internal-thread-item.active {
  background: var(--panel-soft);
}

.internal-thread-main {
  min-width: 0;
}

.internal-thread-main strong,
.internal-thread-main small {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.internal-thread-main small {
  color: var(--muted);
  margin-top: 4px;
}

.internal-thread-meta {
  display: grid;
  gap: 6px;
  justify-items: end;
  color: var(--muted);
  font-size: 11px;
}

.internal-chat {
  display: grid;
  grid-template-rows: auto minmax(0, 1fr) auto;
  min-height: 0;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background:
    linear-gradient(rgba(255, 255, 255, 0.72), rgba(255, 255, 255, 0.72)),
    #f7f3ef;
  overflow: hidden;
}

:root[data-theme="dark"] .internal-chat {
  background:
    linear-gradient(rgba(17, 27, 33, 0.82), rgba(17, 27, 33, 0.82)),
    #0b141a;
}

.internal-chat-header {
  display: flex;
  align-items: center;
  gap: 12px;
  border-bottom: 1px solid var(--line);
  background: var(--card);
  padding: 13px 16px;
}

.internal-chat-header h3 {
  margin: 0;
  font-size: 16px;
}

.internal-chat-header small {
  color: var(--muted);
}

.internal-chat-body {
  display: flex;
  flex-direction: column;
  gap: 10px;
  overflow-y: auto;
  padding: 18px 20px;
  min-height: 0;
}

.internal-author {
  display: block;
  margin-bottom: 3px;
  color: var(--green-dark);
  font-size: 11px;
  font-weight: 900;
}

.internal-empty {
  display: grid;
  place-items: center;
  height: 100%;
  color: var(--muted);
  padding: 24px;
  text-align: center;
}

.internal-back,
.mobile-back,
.mobile-ficha-btn {
  display: none;
}

/* -------------------- Diseno responsive (PC, notebook, tablet, celular) -------------------- */
@media (max-width: 1200px) {
  .crm-app {
    min-width: 0;
  }

  .workspace {
    grid-template-columns: 220px 320px minmax(360px, 1fr) 300px;
  }

  .workspace.without-crm-panel {
    grid-template-columns: 220px 320px minmax(360px, 1fr);
  }
}

@media (max-width: 1024px) {
  .crm-app {
    min-width: 0;
    height: 100%;
    padding: 8px;
    gap: 8px;
  }

  /* Barra superior compacta en UNA fila: logo · nombre · iconos (↶ ↷ 🔄 ⋮). */
  .topbar {
    grid-template-columns: auto minmax(0, 1fr) auto;
    gap: 8px;
    padding: 6px 8px;
    align-items: center;
  }

  /* En móvil la navegación se mueve al menú de los ⋮; quedan solo los iconos siempre visibles. */
  .top-actions {
    justify-content: flex-end;
    flex-wrap: nowrap;
    overflow: visible;
    padding-bottom: 0;
  }
  .nav-buttons { display: none; }
  .app-menu-btn { display: inline-flex; }
  .brand small { display: none; }
  .session small { font-size: 11px; }
  .app-menu { top: 54px; right: 10px; }

  .workspace,
  .workspace.without-crm-panel,
  .workspace.hide-left-nav,
  .workspace.hide-left-nav.without-crm-panel {
    grid-template-columns: 1fr;
    grid-template-rows: minmax(0, 1fr);
  }

  /* En movil los paneles se apilan a ancho completo: sin ancho fijo ni divisor. */
  .inbox,
  .crm-panel {
    width: auto;
    max-width: 100%;
  }

  .col-drag {
    display: none;
  }

  /* En pantallas chicas se ve UN panel por vez, estilo WhatsApp app: lista, o chat, o ficha. */
  .workspace.mobile-list .chat,
  .workspace.mobile-list .crm-panel { display: none; }
  .workspace.mobile-chat .left-nav,
  .workspace.mobile-chat .inbox,
  .workspace.mobile-chat .crm-panel { display: none; }
  .workspace.mobile-ficha .left-nav,
  .workspace.mobile-ficha .inbox,
  .workspace.mobile-ficha .chat { display: none; }

  /* El panel visible (chat o ficha) ocupa toda la pantalla disponible. */
  .workspace.mobile-chat .chat,
  .workspace.mobile-ficha .crm-panel {
    grid-column: 1 / -1;
    grid-row: 1 / -1;
    min-height: 0;
    height: 100%;
    width: auto;
    max-width: 100%;
  }
  /* La ficha en celular usa flex (no grid): así el botón "← Chat" y las pestañas no aplastan
     la fila de pestañas a 1px (bug) y el contenido queda compacto y con scroll propio. */
  .crm-panel {
    display: flex;
    flex-direction: column;
    overflow: hidden;
  }
  .crm-panel > .mobile-back,
  .crm-panel > .panel-tabs { flex: 0 0 auto; }
  .crm-panel > .crm-scroll { flex: 1 1 auto; min-height: 0; overflow-y: auto; }

  /* Ventanas (Nuevo chat, Resolver, Galería, Columnas…) más grandes y con texto legible en celular/tablet. */
  .modal-backdrop { padding: 12px; }
  .modal-card { width: 100%; max-width: 720px; padding: 16px; }
  .library-card { width: 100%; max-width: 720px; }
  .modal-card h3 { font-size: 18px; }
  .modal-card label { font-size: 13px; }
  .modal-card input,
  .modal-card select,
  .modal-card textarea { font-size: 15px; padding: 11px; }

  /* Barras de desplazamiento SIEMPRE visibles (vertical y horizontal), sobre todo en el panel completo. */
  .crm-scroll,
  .chat-body,
  .conversation-list,
  .table-wrap { scrollbar-width: auto; }
  .crm-scroll::-webkit-scrollbar,
  .chat-body::-webkit-scrollbar,
  .conversation-list::-webkit-scrollbar,
  .table-wrap::-webkit-scrollbar { width: 10px; height: 10px; -webkit-appearance: none; }
  .crm-scroll::-webkit-scrollbar-thumb,
  .chat-body::-webkit-scrollbar-thumb,
  .conversation-list::-webkit-scrollbar-thumb,
  .table-wrap::-webkit-scrollbar-thumb { background: rgba(90, 112, 108, 0.5); border-radius: 6px; }
  .table-wrap::-webkit-scrollbar-track { background: var(--soft); }
  /* Borde de columna más ancho para poder agarrarlo con el dedo (redimensionar en celular). */
  .col-resizer { width: 14px; }
  .workspace.mobile-list .left-nav { max-height: 34vh; }

  .left-nav {
    grid-template-rows: none;
  }

  /* Botones que solo aparecen en móvil para moverse entre lista / chat / ficha. */
  .mobile-back,
  .mobile-ficha-btn { display: inline-flex; }
  .ficha-toggle-desktop { display: none; }

  /* Encabezado del chat en móvil: el nombre encoge (…) y los botones de acción bajan a su propia
     fila deslizable, así nada queda cortado fuera de la pantalla. */
  .chat-header {
    flex-wrap: wrap;
    justify-content: flex-start;
    gap: 6px 8px;
  }
  .chat-header > div { min-width: 0; flex: 1 1 auto; }
  .chat-header h2 { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .chat-header .top-actions { flex: 1 1 100%; min-width: 0; }

  /* Imágenes/videos del chat más chicos en el celular (como WhatsApp). */
  img.attachment-preview,
  .attachment-preview img,
  .attachment-video { max-height: 190px; max-width: 220px; }
  .gallery-thumb { height: 92px; }

  .internal-layout {
    grid-template-columns: 1fr;
  }

  .internal-panel.on-chat .internal-threads {
    display: none;
  }

  .internal-panel.on-list .internal-chat {
    display: none;
  }

  .internal-back {
    display: inline-flex;
  }

  .metrics,
  .manager-filters,
  .admin-grid,
  .assignment-grid,
  .catalog-grid {
    grid-template-columns: 1fr 1fr;
  }

  .permission-card {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 640px) {
  .brand-logo {
    width: 84px;
    height: 44px;
    background-size: 70px auto;
  }

  .brand strong {
    font-size: 16px;
  }

  .top-actions {
    gap: 6px;
  }

  .top-actions button {
    padding: 8px 10px;
    font-size: 13px;
  }

  .metrics,
  .manager-filters,
  .admin-grid,
  .assignment-grid,
  .catalog-grid,
  .resolve-options {
    grid-template-columns: 1fr;
  }

  .message {
    max-width: 90%;
  }

  .chat-body,
  .internal-chat-body {
    padding: 14px;
  }

  .composer {
    grid-template-columns: auto auto minmax(0, 1fr) auto auto;
  }

  .manager-panel,
  .users-panel {
    padding: 12px;
  }
}

/* ============================================================================
   REDISEÑO MÓVIL v3 — celular + tablet (≤1024px). Reproduce la maqueta aprobada.
   Solo aplica en ≤1024px, así la PC/notebook queda igual. Soporta tema claro/oscuro.
   ============================================================================ */
@media (max-width: 1024px) {
  /* Paleta de la maqueta (tokens propios --m-*), por tema. */
  :root, :root[data-theme="light"] {
    --m-top: #ffffff; --m-bg: #f4efe9; --m-chip: #eef1f3; --m-chipink: #42525b;
    --m-brand: #0b7a4b; --m-brand2: #0aa06a; --m-brandsoft: #e3f3ea;
    --m-line: #e2dad2; --m-ink: #141d22; --m-muted: #5f7079;
    --m-inbub: #ffffff; --m-outbub: #c3ecb4; --m-autobub: #d3e8df; --m-panel: #fbf9f7;
  }
  :root[data-theme="dark"] {
    --m-top: #1b262d; --m-bg: #0b141a; --m-chip: #22303a; --m-chipink: #b7c6cf;
    --m-brand: #0aa06a; --m-brand2: #12c07f; --m-brandsoft: #123026;
    --m-line: #26333b; --m-ink: #e7edf0; --m-muted: #93a4ad;
    --m-inbub: #2a3942; --m-outbub: #0f3b2b; --m-autobub: #122a26; --m-panel: #141c22;
  }

  /* App a pantalla completa, sin márgenes (como el teléfono de la maqueta). */
  .crm-app { padding: 0; gap: 0; background: var(--m-bg); }

  /* --- Barra superior: logo · nombre/rol · iconos (↶ ↷ 🔄 ⋮) --- */
  .topbar {
    background: var(--m-top);
    border: 0; border-bottom: 1px solid var(--m-line);
    border-radius: 0; box-shadow: none;
    grid-template-columns: auto minmax(0, 1fr) auto;
    gap: 8px; padding: 6px 8px 6px 10px; align-items: center;
  }
  .brand { gap: 0; align-items: center; }
  .brand > div { display: none; }
  .brand-logo { width: 46px; height: 30px; background-size: contain; }
  .session { min-width: 0; }
  .session strong { font-size: 0.92rem; line-height: 1.15; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .session small { font-size: 0.62rem; color: var(--m-muted); }
  .top-icons { gap: 2px; }
  .top-icons .icon-button {
    width: 30px; height: 30px; padding: 0; border: 0; background: none;
    color: var(--m-muted); font-size: 1rem; border-radius: 6px;
  }
  .top-icons .icon-button:disabled { opacity: 0.35; }
  .top-icons .app-menu-btn { color: var(--m-ink); font-size: 1.3rem; }
  .top-icons .app-menu-btn.active { background: var(--m-chip); }

  /* --- Buscar arriba + ✏️ Nuevo chat + 👁️ No leídos --- */
  .search-row { background: var(--m-top); border-bottom: 1px solid var(--m-line); padding: 8px 10px; gap: 8px; }
  #searchInput {
    background: var(--m-chip); border: 1px solid transparent; border-radius: 18px;
    padding: 9px 14px; font-size: 0.85rem; color: var(--m-ink);
  }
  #searchInput::placeholder { color: var(--m-muted); }
  .inbox-actions { flex-direction: row; gap: 8px; align-items: center; }
  .inbox-actions .icon-button { width: 36px; height: 34px; border-radius: 9px; border: 0; }
  .inbox-actions .new-chat-btn { background: var(--m-brand2); color: #fff; }
  .inbox-actions .unread-filter-btn { background: var(--m-chip); color: var(--m-ink); }
  .inbox-actions .unread-filter-btn.active { background: var(--m-brandsoft); color: var(--m-brand); }

  /* --- Filtros por iconos: Canal · Usuario · Estado --- */
  .inbox-filters { background: var(--m-top); border-bottom: 1px solid var(--m-line); padding: 8px 10px; gap: 7px; overflow-x: auto; }
  .inbox-filters::-webkit-scrollbar { display: none; }
  .inbox-filters .ms-btn, .inbox-filters .ms-static {
    background: var(--m-chip); color: var(--m-chipink);
    border: 1px solid transparent; border-radius: 10px; padding: 6px 11px;
    box-shadow: none; min-height: 0; flex: 0 0 auto;
  }
  .inbox-filters .ms-btn.active { background: var(--m-brandsoft); color: var(--m-brand); border-color: var(--m-brand); box-shadow: none; }
  .inbox-filters .ms-btn-ico { font-size: 0.92rem; }
  .inbox-filters .ms-btn-label { color: inherit; font-size: 0.72rem; font-weight: 700; }
  .inbox-filters .ms-btn-summary { color: inherit; opacity: 0.6; font-size: 0.72rem; font-weight: 700; max-width: 120px; }
  .inbox-filters .ms-btn.active .ms-btn-summary { opacity: 1; }
  .inbox-filters .ms-btn-caret { display: none; }

  /* --- Lista de conversaciones --- */
  .inbox { background: var(--m-top); }
  .conversation-list { background: var(--m-top); }
  .conversation-item { background: var(--m-top); border-bottom: 1px solid var(--m-line); padding: 9px 11px; gap: 10px; border-radius: 0; }
  .conversation-item.active { background: var(--m-brandsoft); }
  .conversation-item .avatar { width: 42px; height: 42px; }
  .conversation-item strong { font-size: 0.9rem; color: var(--m-ink); }
  .conversation-item .preview { font-size: 0.76rem; color: var(--m-muted); }
  .conversation-item .tag-row { gap: 4px; margin-top: 5px; }
  .conversation-item .pill { font-size: 0.62rem; padding: 2px 7px; border-radius: 999px; }
  .conv-meta small { font-size: 0.62rem; color: var(--m-muted); }
  .conv-meta .unread-badge { background: var(--m-brand2); color: #fff; }
  footer.inbox-footer { display: none; }

  /* --- Chat abierto --- */
  .chat { background: var(--m-bg); }
  .chat-header { background: var(--m-top); border-bottom: 1px solid var(--m-line); padding: 7px 8px; gap: 8px; }
  .chat-header h2 { font-size: 0.9rem; color: var(--m-ink); }
  .chat-body { background: var(--m-bg); }
  .message.in { background: var(--m-inbub); color: var(--m-ink); }
  .message.out { background: var(--m-outbub); color: var(--m-ink); }
  .message.auto { background: var(--m-autobub); color: var(--m-muted); }
  .composer { background: var(--m-top); border-top: 1px solid var(--m-line); }
  .composer textarea { background: var(--m-chip); border-radius: 18px; color: var(--m-ink); }

  /* --- Ficha (pestañas + formulario) --- */
  .crm-panel { background: var(--m-top); }
  .panel-tabs { background: var(--m-top); border-bottom: 1px solid var(--m-line); }
  .panel-tabs button { color: var(--m-muted); }
  .panel-tabs button.active { color: var(--m-brand); border-bottom-color: var(--m-brand2); }
  .crm-scroll { background: var(--m-top); }

  /* --- Menú de los ⋮ y ventanas, alineados a la paleta de la maqueta --- */
  .app-menu { background: var(--m-top); border-color: var(--m-line); }
  .app-menu-item { color: var(--m-ink); }
  .app-menu-item.active { background: var(--m-brandsoft); color: var(--m-brand); }
}

/* Overrides con especificidad de tema (para ganarle a las reglas dark de color literal de la app). */
@media (max-width: 1024px) {
  :root[data-theme="dark"] .conversation-item.active { background: var(--m-brandsoft); }
  :root[data-theme="dark"] .message.out { background: var(--m-outbub); }
  :root[data-theme="light"] .conversation-item.active { background: var(--m-brandsoft); }
}

/* Legibilidad en TEMA OSCURO de etiquetas de configuración/paneles que tenían color fijo oscuro
   (antes se veían casi invisibles sobre fondo oscuro: "usuarios y roles", labels, etc.). */
:root[data-theme="dark"] .settings-card label,
:root[data-theme="dark"] .permission-card label,
:root[data-theme="dark"] .manager-filters label,
:root[data-theme="dark"] .catalog-grid label,
:root[data-theme="dark"] .modal-card label,
:root[data-theme="dark"] .user-row-info small,
:root[data-theme="dark"] .cfg-heading,
:root[data-theme="dark"] .cfg-sub {
  color: var(--muted);
}

/* ============================================================================
   Una sola barra por pantalla en celular/tablet (como la maqueta): dentro del chat
   y de la ficha se oculta la barra global; los iconos ↶ ↷ 🔄 pasan a ese encabezado.
   ============================================================================ */
@media (max-width: 1024px) {
  .crm-app.pane-chat > .topbar,
  .crm-app.pane-ficha > .topbar { display: none; }

  /* Encabezado del chat en UNA fila: ← · avatar · nombre · [↶ ↷ 🔄 ⋮] */
  .chat-header {
    flex-wrap: nowrap;
    align-items: center;
    gap: 8px;
    background: var(--m-top);
    padding: 6px 8px;
  }
  .chat-header .mobile-back { flex: 0 0 auto; padding: 6px 8px; }
  .chat-header > div { flex: 1 1 auto; min-width: 0; }
  .chat-header h2 { font-size: 0.92rem; line-height: 1.15; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .chat-header small { display: block; font-size: 0.62rem; color: var(--m-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .chat-header small .origin-badge { display: none; }
  .chat-header .avatar { width: 32px; height: 32px; flex: 0 0 auto; }
  .chat-header .top-actions { flex: 0 0 auto; width: auto; gap: 0; flex-wrap: nowrap; }
  .chat-header .top-actions .icon-button {
    width: 30px; height: 30px; padding: 0; border: 0; background: none;
    color: var(--m-muted); font-size: 1rem; border-radius: 6px;
  }
  .chat-header .top-actions .icon-button:disabled { opacity: 0.35; }

  /* Encabezado de la ficha: ← Chat a la izquierda, [↶ ↷ 🔄] a la derecha. */
  .crm-panel > .ficha-head {
    flex: 0 0 auto; display: flex; align-items: center; gap: 8px;
    padding: 6px 8px; background: var(--m-top); border-bottom: 1px solid var(--m-line);
  }
  .ficha-head .mobile-back { flex: 0 0 auto; padding: 6px 10px; }
  .ficha-head-icons { margin-left: auto; display: flex; gap: 0; }
  .ficha-head-icons .icon-button {
    width: 30px; height: 30px; padding: 0; border: 0; background: none;
    color: var(--m-muted); font-size: 1rem; border-radius: 6px;
  }
  .ficha-head-icons .icon-button:disabled { opacity: 0.35; }
}

/* ============================================================================
   Ajustes finales de celular/tablet: alto real del chat/ficha y métricas compactas.
   ============================================================================ */
@media (max-width: 1024px) {
  /* Al ocultar la barra global (chat/ficha), la grilla queda de UNA fila: si no, el contenido
     caía en la fila "automática" y quedaba un hueco abajo (el chat no llegaba al fondo). */
  .crm-app.pane-chat,
  .crm-app.pane-ficha { grid-template-rows: minmax(0, 1fr); }

  /* Panel completo: las 4 tarjetas de estado en UNA fila (Total ocupa el ancho completo). */
  .metrics {
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 6px;
    margin-bottom: 10px;
  }
  .metrics .metric {
    flex-direction: column;
    align-items: flex-start;
    justify-content: center;
    gap: 2px;
    padding: 7px 8px;
  }
  .metrics .metric span { font-size: 0.64rem; line-height: 1.15; }
  .metrics .metric strong { font-size: 1.05rem; }
  /* "Total conversaciones" se queda a lo ancho, con la etiqueta y el número en la misma línea. */
  .metrics .metric:first-child {
    grid-column: 1 / -1;
    flex-direction: row;
    align-items: baseline;
    justify-content: space-between;
  }
  .metrics .metric:first-child span { font-size: 0.8rem; }
  .metrics .metric:first-child strong { font-size: 1.15rem; }
}

/* ============================================================================
   Celular: filas de la bandeja más grandes (que entren ~6 chats, estilo WhatsApp)
   y mensajes del chat pegados abajo en vez de arriba con un hueco.
   ============================================================================ */
@media (max-width: 1024px) {
  .conversation-item { padding: 15px 13px; gap: 13px; }
  .conversation-item .avatar { width: 54px; height: 54px; }
  .conversation-item strong { font-size: 1.02rem; }
  .conversation-item .preview { font-size: 0.88rem; margin-top: 3px; }
  .conversation-item .tag-row { gap: 5px; margin-top: 9px; }
  .conversation-item .pill { font-size: 0.7rem; padding: 3px 9px; }
  .conv-meta small { font-size: 0.72rem; }
  .conv-meta .unread-badge { min-width: 22px; height: 22px; font-size: 0.74rem; }

  /* Los mensajes van en un contenedor interno con margin-top:auto: se apoyan abajo cuando son
     pocos y, cuando son muchos, el scroll funciona normal (sin recortes ni desbordes). */
  .chat-body { padding: 10px 12px; }
  .chat-msgs { margin-top: auto; gap: 8px; }
  .message { max-width: 85%; }

  /* Nombre del cliente en el encabezado: se nota que se puede tocar (abre "Ver cliente"). */
  .chat-header h2[data-action] { cursor: pointer; text-decoration: underline; text-underline-offset: 2px; text-decoration-color: var(--m-line); }
}

/* Contenedor de los mensajes del chat (hereda el espaciado que antes tenía .chat-body). */
.chat-msgs {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

/* ============================================================================
   Celular: que SIEMPRE entren ~6 chats, sea cual sea el alto del teléfono.
   Con un alto fijo, en pantallas altas entraban muchos más (ese era el problema).
   El alto de fila se calcula desde el alto real de la pantalla.
   ============================================================================ */
@media (max-width: 1024px) {
  .conversation-item {
    min-height: calc((100vh - 150px) / 6);
    align-items: center;
  }
  /* Chat compacto estilo WhatsApp: burbujas ajustadas y poco aire entre mensajes. */
  .chat-msgs { gap: 4px; }
  .message { padding: 6px 9px 4px; border-radius: 10px; }
  .message p { font-size: 0.92rem; line-height: 1.35; }
  .message footer { font-size: 0.6rem; text-align: right; margin-top: 1px; opacity: 0.75; }
}
/* dvh = alto real en el celular (descuenta la barra del navegador). */
@supports (height: 100dvh) {
  @media (max-width: 1024px) {
    .conversation-item { min-height: calc((100dvh - 150px) / 6); }
  }
}

/* ============================================================================
   Celular: tamaños de texto al nivel de WhatsApp (antes quedaban chicos y la
   fila se veía vacía). Solo ≤1024px; en PC no cambia nada.
   ============================================================================ */
@media (max-width: 1024px) {
  /* Barra superior */
  .session strong { font-size: 1.02rem; }
  .session small { font-size: 0.72rem; }
  .top-icons .icon-button { width: 34px; height: 34px; font-size: 1.15rem; }
  .top-icons .app-menu-btn { font-size: 1.45rem; }

  /* Buscador y filtros */
  #searchInput { font-size: 1rem; padding: 11px 15px; }
  .inbox-actions .icon-button { width: 40px; height: 38px; font-size: 1.1rem; }
  .inbox-filters .ms-btn, .inbox-filters .ms-static { padding: 8px 12px; }
  .inbox-filters .ms-btn-ico { font-size: 1.05rem; }
  .inbox-filters .ms-btn-label,
  .inbox-filters .ms-btn-summary { font-size: 0.85rem; }

  /* Lista de chats */
  .conversation-item strong { font-size: 1.15rem; }
  .conversation-item .preview { font-size: 1rem; margin-top: 4px; }
  .conversation-item .pill { font-size: 0.8rem; padding: 3px 10px; }
  .conversation-item .tag-row { gap: 6px; margin-top: 10px; }
  .conv-meta small { font-size: 0.82rem; }
  .conv-meta .unread-badge { min-width: 24px; height: 24px; font-size: 0.82rem; }

  /* Chat */
  .chat-header h2 { font-size: 1.08rem; }
  .chat-header small { font-size: 0.75rem; }
  .message p { font-size: 1.05rem; line-height: 1.4; }
  .message footer { font-size: 0.72rem; }
  .composer textarea { font-size: 1rem; }
  .quick-button { font-size: 0.85rem; }

  /* Ficha */
  .panel-tabs button { font-size: 0.95rem; }
  .crm-form label, .crm-form input, .crm-form select, .crm-form textarea { font-size: 0.95rem; }
}

/* Foto del contacto más grande (como WhatsApp): equilibra la fila y llena el espacio. */
@media (max-width: 1024px) {
  .conversation-item .avatar { width: 64px; height: 64px; }
  .conversation-item { gap: 15px; }
}

/* ============================================================================
   Celular: TEXTO GRANDE (~45-50% más que el estándar). En pantallas como la del
   cliente (540px lógicos) el tamaño normal se ve físicamente muy chico.
   Solo ≤1024px; en PC no cambia nada.
   ============================================================================ */
@media (max-width: 1024px) {
  /* Barra superior */
  .session strong { font-size: 1.45rem; }
  .session small { font-size: 1.05rem; }
  .brand-logo { width: 62px; height: 40px; }
  .top-icons .icon-button { width: 46px; height: 46px; font-size: 1.6rem; }
  .top-icons .app-menu-btn { font-size: 1.95rem; }

  /* Buscador y filtros */
  #searchInput { font-size: 1.45rem; padding: 14px 18px; border-radius: 26px; }
  .inbox-actions .icon-button { width: 54px; height: 50px; font-size: 1.5rem; }
  .inbox-filters { gap: 9px; padding: 10px 12px; }
  .inbox-filters .ms-btn, .inbox-filters .ms-static { padding: 10px 15px; border-radius: 13px; }
  .inbox-filters .ms-btn-ico { font-size: 1.4rem; }
  .inbox-filters .ms-btn-label,
  .inbox-filters .ms-btn-summary { font-size: 1.25rem; }

  /* Lista de chats */
  .conversation-item { padding: 16px 14px; gap: 16px; }
  .conversation-item .avatar { width: 80px; height: 80px; }
  .conversation-item strong { font-size: 1.7rem; }
  .conversation-item .preview { font-size: 1.45rem; margin-top: 5px; }
  .conversation-item .pill { font-size: 1.12rem; padding: 4px 12px; }
  .conversation-item .tag-row { gap: 7px; margin-top: 11px; }
  .conv-meta small { font-size: 1.18rem; }
  .conv-meta .unread-badge { min-width: 32px; height: 32px; font-size: 1.15rem; }

  /* Chat */
  .chat-header .avatar { width: 46px; height: 46px; }
  .chat-header h2 { font-size: 1.55rem; }
  .chat-header small { font-size: 1.05rem; }
  .chat-header .mobile-back { font-size: 1.2rem; }
  .chat-header .top-actions .icon-button { width: 44px; height: 44px; font-size: 1.5rem; }
  .message p { font-size: 1.55rem; line-height: 1.4; }
  .message footer { font-size: 1.05rem; }
  .composer textarea { font-size: 1.45rem; }
  .quick-button { font-size: 1.2rem; padding: 9px 14px; }

  /* Ficha */
  .panel-tabs button { font-size: 1.3rem; padding: 16px 8px; }
  .crm-form label, .crm-form input, .crm-form select, .crm-form textarea { font-size: 1.3rem; }
  .ficha-head .mobile-back { font-size: 1.2rem; }
  .ficha-head-icons .icon-button { width: 44px; height: 44px; font-size: 1.5rem; }

  /* Menú contextual y menú de los ⋮ */
  .conv-context-menu button { font-size: 1.35rem; padding: 13px 18px; }
  .app-menu-item { font-size: 1.35rem; padding: 15px 16px; }
}

/* ============================================================================
   Celular: TEXTO EXTRA GRANDE (otro ~45% más) en ABSOLUTAMENTE todo,
   + arreglo del solapamiento: la columna de la foto se adapta a su tamaño real
   (estaba fija en 44px y la foto de 80px se montaba sobre el texto).
   ============================================================================ */
@media (max-width: 1024px) {
  /* ARREGLO del solapamiento foto/texto */
  .conversation-item { grid-template-columns: auto minmax(0, 1fr) auto; }

  /* Barra superior */
  .session strong { font-size: 2.1rem; }
  .session small { font-size: 1.5rem; }
  .brand-logo { width: 78px; height: 50px; }
  .top-icons .icon-button { width: 60px; height: 58px; font-size: 2.2rem; }
  .top-icons .app-menu-btn { font-size: 2.7rem; }

  /* Buscador y filtros */
  #searchInput { font-size: 2.1rem; padding: 18px 22px; border-radius: 34px; }
  .inbox-actions .icon-button { width: 70px; height: 64px; font-size: 2.1rem; border-radius: 13px; }
  .inbox-filters { gap: 11px; padding: 12px 14px; }
  .inbox-filters .ms-btn, .inbox-filters .ms-static { padding: 13px 19px; border-radius: 16px; }
  .inbox-filters .ms-btn-ico { font-size: 2rem; }
  .inbox-filters .ms-btn-label,
  .inbox-filters .ms-btn-summary { font-size: 1.8rem; }

  /* Lista de chats */
  .conversation-item { padding: 18px 16px; gap: 18px; }
  .conversation-item .avatar { width: 104px; height: 104px; }
  .conversation-item strong { font-size: 2.45rem; }
  .conversation-item .preview { font-size: 2.1rem; margin-top: 6px; }
  .conversation-item .pill { font-size: 1.6rem; padding: 5px 15px; }
  .conversation-item .tag-row { gap: 9px; margin-top: 13px; }
  .conv-meta small { font-size: 1.7rem; }
  .conv-meta .unread-badge { min-width: 44px; height: 44px; font-size: 1.65rem; }

  /* Chat */
  .chat-header { gap: 11px; padding: 9px 10px; }
  .chat-header .avatar { width: 60px; height: 60px; }
  .chat-header h2 { font-size: 2.25rem; }
  .chat-header small { font-size: 1.5rem; }
  .chat-header .mobile-back { font-size: 1.7rem; padding: 9px 12px; }
  .chat-header .top-actions .icon-button { width: 58px; height: 58px; font-size: 2.1rem; }
  .message p { font-size: 2.25rem; line-height: 1.4; }
  .message footer { font-size: 1.5rem; }
  .composer textarea { font-size: 2.1rem; }
  .quick-button { font-size: 1.7rem; padding: 12px 18px; }

  /* Ficha */
  .panel-tabs button { font-size: 1.9rem; padding: 20px 8px; }
  .crm-form label, .crm-form input, .crm-form select, .crm-form textarea { font-size: 1.9rem; }
  .crm-form legend { font-size: 1.9rem; }
  .contact-headcard strong { font-size: 2.1rem; }
  .contact-headcard small { font-size: 1.6rem; }
  .ficha-head .mobile-back { font-size: 1.7rem; padding: 9px 12px; }
  .ficha-head-icons .icon-button { width: 58px; height: 58px; font-size: 2.1rem; }

  /* Menús y ventanas */
  .conv-context-menu button { font-size: 1.95rem; padding: 18px 24px; }
  .app-menu-item { font-size: 1.95rem; padding: 20px 20px; }
  .app-menu-item .ic { font-size: 1.8rem; width: 32px; }
  .modal-card h3 { font-size: 2.2rem; }
  .modal-card label { font-size: 1.7rem; }
  .modal-card input, .modal-card select, .modal-card textarea { font-size: 1.9rem; padding: 14px; }
  .modal-card button, .modal-actions button { font-size: 1.8rem; }

  /* Panel completo */
  .manager-panel h2 { font-size: 2.1rem; }
  .metrics .metric span { font-size: 1.35rem; }
  .metrics .metric strong { font-size: 2rem; }
  .metrics .metric:first-child span { font-size: 1.7rem; }
  .metrics .metric:first-child strong { font-size: 2.2rem; }
  table.pt td, .table-wrap td, .table-wrap th { font-size: 1.6rem; }
}

/* Ajuste fino: dejar el aumento en +50% EXACTO respecto del tamaño anterior. */
@media (max-width: 1024px) {
  .session strong { font-size: 2.18rem; }
  .session small { font-size: 1.58rem; }
  #searchInput { font-size: 2.18rem; }
  .inbox-filters .ms-btn-label,
  .inbox-filters .ms-btn-summary { font-size: 1.88rem; }
  .conversation-item strong { font-size: 2.55rem; }
  .conversation-item .preview { font-size: 2.18rem; }
  .conversation-item .pill { font-size: 1.68rem; }
  .conv-meta small { font-size: 1.77rem; }
  .chat-header h2 { font-size: 2.33rem; }
  .chat-header small { font-size: 1.58rem; }
  .message p { font-size: 2.33rem; }
  .message footer { font-size: 1.58rem; }
  .composer textarea { font-size: 2.18rem; }
  .quick-button { font-size: 1.78rem; }
  .panel-tabs button { font-size: 1.95rem; }
  .crm-form label, .crm-form input, .crm-form select, .crm-form textarea { font-size: 1.95rem; }
  .conv-context-menu button { font-size: 2.03rem; }
  .app-menu-item { font-size: 2.03rem; }
}

/* ============================================================================
   Equilibrio final: nombres y mensajes GRANDES (+50%), pero compactando el aire
   y dejando las etiquetas en un tamaño intermedio, para volver a entrar ~5 chats
   por pantalla sin cambiar el diseño.
   ============================================================================ */
@media (max-width: 1024px) {
  .conversation-item { padding: 11px 13px; gap: 14px; }
  .conversation-item .avatar { width: 84px; height: 84px; }
  .conversation-item strong { font-size: 2.55rem; line-height: 1.1; }
  .conversation-item .preview { font-size: 2.18rem; line-height: 1.15; margin-top: 3px; }
  .conversation-item .tag-row { gap: 6px; margin-top: 7px; }
  .conversation-item .pill { font-size: 1.25rem; padding: 3px 10px; }
  .conv-meta small { font-size: 1.4rem; }
  .conv-meta .unread-badge { min-width: 38px; height: 38px; font-size: 1.4rem; }
}

/* Opción B: las etiquetas quedan en UN solo renglón (no saltan a dos), para que entren
   5-6 chats por pantalla con el texto grande. Si la última no entra, se desvanece al borde. */
@media (max-width: 1024px) {
  .conversation-item .tag-row {
    flex-wrap: nowrap;
    overflow: hidden;
    -webkit-mask-image: linear-gradient(to right, #000 86%, transparent 100%);
    mask-image: linear-gradient(to right, #000 86%, transparent 100%);
  }
  .conversation-item .pill { flex: 0 0 auto; }
}

/* ============================================================================
   AJUSTE FINAL DE TAMAÑOS — calibrado al ancho REAL de trabajo del celular (360 puntos CSS,
   que en pantalla son 540 píxeles). Los tamaños anteriores estaban calculados como si el
   ancho fuera 540 puntos, por eso todo salía 1,5 veces más grande y se cortaba.
   Quedan ~40% más grandes que el tamaño original, pero SIN desbordar.
   ============================================================================ */
@media (max-width: 1024px) {
  /* Barra superior */
  .brand-logo { width: 46px; height: 30px; }
  .session strong { font-size: 1.05rem; }
  .session small { font-size: 0.72rem; }
  .top-icons .icon-button { width: 34px; height: 34px; font-size: 1.15rem; }
  .top-icons .app-menu-btn { font-size: 1.4rem; }

  /* Buscador y filtros */
  #searchInput { font-size: 1.15rem; padding: 10px 14px; border-radius: 22px; }
  .inbox-actions .icon-button { width: 40px; height: 38px; font-size: 1.15rem; border-radius: 10px; }
  .inbox-filters { gap: 7px; padding: 8px 10px; }
  .inbox-filters .ms-btn, .inbox-filters .ms-static { padding: 8px 11px; border-radius: 11px; }
  .inbox-filters .ms-btn-ico { font-size: 1rem; }
  .inbox-filters .ms-btn-label,
  .inbox-filters .ms-btn-summary { font-size: 0.88rem; }

  /* Lista de chats */
  .conversation-item { padding: 11px 11px; gap: 11px; }
  .conversation-item .avatar { width: 56px; height: 56px; }
  .conversation-item strong { font-size: 1.45rem; line-height: 1.15; }
  .conversation-item .preview { font-size: 1.15rem; line-height: 1.2; margin-top: 3px; }
  .conversation-item .pill { font-size: 0.78rem; padding: 3px 9px; }
  .conversation-item .tag-row { gap: 5px; margin-top: 7px; }
  .conv-meta small { font-size: 0.8rem; }
  .conv-meta .unread-badge { min-width: 24px; height: 24px; font-size: 0.82rem; }

  /* Chat */
  .chat-header { gap: 8px; padding: 7px 8px; }
  .chat-header .avatar { width: 38px; height: 38px; }
  .chat-header h2 { font-size: 1.2rem; }
  .chat-header small { font-size: 0.78rem; }
  .chat-header .mobile-back { font-size: 0.92rem; padding: 7px 9px; }
  .chat-header .top-actions .icon-button { width: 34px; height: 34px; font-size: 1.15rem; }
  .message p { font-size: 1.15rem; line-height: 1.4; }
  .message footer { font-size: 0.72rem; }
  .composer textarea { font-size: 1.1rem; }
  .quick-button { font-size: 0.88rem; padding: 7px 11px; }

  /* Ficha */
  .panel-tabs button { font-size: 1rem; padding: 14px 8px; }
  .crm-form label, .crm-form input, .crm-form select, .crm-form textarea { font-size: 1rem; }
  .crm-form legend { font-size: 1rem; }
  .contact-headcard strong { font-size: 1.15rem; }
  .contact-headcard small { font-size: 0.85rem; }
  .ficha-head .mobile-back { font-size: 0.92rem; padding: 7px 9px; }
  .ficha-head-icons .icon-button { width: 34px; height: 34px; font-size: 1.15rem; }

  /* Menús y ventanas */
  .conv-context-menu button { font-size: 1.05rem; padding: 12px 15px; }
  .app-menu-item { font-size: 1.05rem; padding: 13px 14px; }
  .app-menu-item .ic { font-size: 1.05rem; width: 22px; }
  .modal-card h3 { font-size: 1.25rem; }
  .modal-card label { font-size: 0.9rem; }
  .modal-card input, .modal-card select, .modal-card textarea { font-size: 1rem; padding: 10px; }
  .modal-card button, .modal-actions button { font-size: 1rem; }

  /* Panel completo */
  .manager-panel h2 { font-size: 1.2rem; }
  .metrics .metric span { font-size: 0.78rem; }
  .metrics .metric strong { font-size: 1.15rem; }
  .metrics .metric:first-child span { font-size: 0.9rem; }
  .metrics .metric:first-child strong { font-size: 1.25rem; }
  .table-wrap td, .table-wrap th { font-size: 0.92rem; }
}

/* ============================================================================
   Color de fila según la PRIORIDAD del chat (urgente rojo claro, alta naranja claro,
   normal sin color). Aplica en celular y en PC.
   ============================================================================ */
.conversation-item.prio-urgent { background: #ffecec; }
.conversation-item.prio-high   { background: #fff2e2; }
/* "normal" queda sin color: no se define nada. */

:root[data-theme="dark"] .conversation-item.prio-urgent { background: #3b2024; }
:root[data-theme="dark"] .conversation-item.prio-high   { background: #3a2e1d; }

/* El chat abierto (seleccionado) manda sobre el color de prioridad, para que se note cuál es. */
.conversation-item.prio-urgent.active,
.conversation-item.prio-high.active { background: #f0faf6; }
:root[data-theme="dark"] .conversation-item.prio-urgent.active,
:root[data-theme="dark"] .conversation-item.prio-high.active { background: var(--m-brandsoft, #123026); }

/* Nombre del cliente un poco más chico (pedido del cliente). */
@media (max-width: 1024px) {
  .conversation-item strong { font-size: 1.3rem; }
}

/* Bandeja vacía por filtros: mensaje + botón para quitarlos de una. */
.inbox-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  padding: 22px 16px;
  color: var(--muted);
  text-align: center;
}
.inbox-empty p { margin: 0; }
@media (max-width: 1024px) {
  .inbox-empty { font-size: 1.05rem; gap: 14px; padding: 26px 18px; }
  .inbox-empty button { font-size: 1.05rem; padding: 12px 18px; }
}

/* ============================================================================
   Responder (citar) y reaccionar con emoji a los mensajes — estilo WhatsApp.
   ============================================================================ */
.message { position: relative; }

/* Botón ⌄ que abre el menú del mensaje (aparece al pasar el mouse; en celular siempre tenue). */
.msg-menu-btn {
  position: absolute;
  top: 3px;
  right: 4px;
  width: 22px;
  height: 20px;
  border: 0;
  border-radius: 5px;
  background: rgba(0, 0, 0, 0.06);
  color: var(--muted);
  font-size: 0.9rem;
  line-height: 1;
  cursor: pointer;
  opacity: 0;
  transition: opacity .12s;
}
.message:hover .msg-menu-btn { opacity: 1; }
:root[data-theme="dark"] .msg-menu-btn { background: rgba(255, 255, 255, 0.1); }

/* Menú flotante del mensaje. */
.msg-menu {
  position: fixed;
  z-index: 1100;
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: 12px;
  box-shadow: 0 10px 34px -10px rgba(20, 40, 80, 0.35);
  padding: 6px;
  min-width: 200px;
}
.msg-menu-emojis {
  display: flex;
  gap: 2px;
  padding: 2px 2px 6px;
  border-bottom: 1px solid var(--line);
  margin-bottom: 4px;
}
.msg-menu-emoji {
  flex: 1;
  border: 0;
  background: none;
  border-radius: 8px;
  padding: 6px 0;
  font-size: 1.25rem;
  cursor: pointer;
}
.msg-menu-emoji:hover { background: var(--soft); }
.msg-menu-emoji.on { background: var(--soft-green); }
.msg-menu-item {
  display: flex;
  align-items: center;
  gap: 9px;
  width: 100%;
  border: 0;
  background: none;
  border-radius: 8px;
  padding: 9px 10px;
  font-size: 0.9rem;
  color: var(--text);
  text-align: left;
  cursor: pointer;
  font-family: inherit;
}
.msg-menu-item:hover { background: var(--soft); }
.msg-menu-item.danger { color: var(--red, #e9344a); }
.msg-menu-item .ic { width: 18px; text-align: center; }

/* Cita dentro de la burbuja del mensaje. */
.msg-reply {
  border-left: 3px solid var(--green);
  background: rgba(0, 0, 0, 0.05);
  border-radius: 6px;
  padding: 4px 8px;
  margin-bottom: 5px;
  font-size: 0.82rem;
  display: flex;
  flex-direction: column;
  gap: 1px;
}
:root[data-theme="dark"] .msg-reply { background: rgba(255, 255, 255, 0.08); }
.msg-reply-autor { color: var(--green-dark); font-weight: 700; font-size: 0.76rem; }
.msg-reply-texto { color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

/* Chips de reacción al pie de la burbuja. */
.msg-reactions { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 5px; }
.msg-react-chip {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  border: 1px solid var(--line);
  background: var(--card);
  border-radius: 999px;
  padding: 1px 7px;
  font-size: 0.9rem;
  cursor: pointer;
  line-height: 1.4;
}
.msg-react-chip span { font-size: 0.72rem; color: var(--muted); font-weight: 700; }
.msg-react-chip.mine { border-color: var(--green); background: var(--soft-green); }

/* Barra "Respondiendo a…" arriba del cuadro de escribir. */
.reply-bar {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 0 14px;
  padding: 7px 10px;
  background: var(--soft);
  border-left: 3px solid var(--green);
  border-radius: 8px 8px 0 0;
}
.reply-bar-body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 1px; }
.reply-bar-autor { font-size: 0.78rem; font-weight: 700; color: var(--green-dark); }
.reply-bar-texto { font-size: 0.85rem; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.reply-bar-close {
  flex: 0 0 auto; border: 0; background: none; color: var(--muted);
  font-size: 1rem; cursor: pointer; width: 26px; height: 26px; border-radius: 6px;
}
.reply-bar-close:hover { background: var(--line); }

/* En celular/tablet, todo un poco más grande y el ⌄ siempre visible (no hay hover). */
@media (max-width: 1024px) {
  .msg-menu-btn { opacity: .55; width: 26px; height: 24px; font-size: 1.05rem; }
  .msg-menu { min-width: 240px; padding: 8px; }
  .msg-menu-emoji { font-size: 1.55rem; padding: 8px 0; }
  .msg-menu-item { font-size: 1.05rem; padding: 12px 12px; }
  .msg-reply-texto, .reply-bar-texto { font-size: 1rem; }
  .msg-react-chip { font-size: 1.1rem; padding: 2px 9px; }
}

/* Número de ID del chat (#0001) */
.conv-seq {
  font-family: ui-monospace, "Cascadia Code", Consolas, monospace;
  font-size: 0.78em;
  font-weight: 700;
  color: var(--green-dark, #006b50);
  background: var(--soft-green, #dff6e9);
  border-radius: 5px;
  padding: 1px 6px;
  white-space: nowrap;
  vertical-align: middle;
}
.chat-header h2 .conv-seq { font-size: 0.62em; }

/* ============ Seguimiento de chats con presupuestos ============ */
.presupuestos-panel .panel-sub {
  color: var(--muted);
  margin: -2px 0 8px;
  font-size: 0.88rem;
}
.presupuestos-panel .panel-note {
  color: var(--muted);
  font-size: 0.82rem;
  margin: 8px 0 0;
}

/* Envejecimiento del presupuesto: cuanto mas viejo, mas urgente el color. */
.pill.quote-age { font-weight: 600; white-space: nowrap; }
.aging-0 { background: var(--soft); color: var(--muted); }
.aging-1 { background: #fff1c2; color: #7a5600; }
.aging-2 { background: #ffe0c2; color: #8a4200; }
.aging-3 { background: #ffe3e8; color: #a01026; }
.aging-4 { background: #e2e8e6; color: #55625f; }
:root[data-theme="dark"] .aging-1 { background: #4a3c10; color: #ffe9a8; }
:root[data-theme="dark"] .aging-2 { background: #4e3113; color: #ffd3a6; }
:root[data-theme="dark"] .aging-3 { background: #4d1b23; color: #ffc2cc; }
:root[data-theme="dark"] .aging-4 { background: #2c3a3f; color: #c3cfcd; }

/* Celda de seguimiento: se ve como un campo aunque sea texto, para invitar a escribir. */
.followup-cell {
  min-width: 190px;
  max-width: 300px;
  padding: 5px 7px;
  border: 1px dashed var(--line);
  border-radius: 6px;
  cursor: text;
  font-size: 0.84rem;
  line-height: 1.35;
}
.followup-cell:hover { border-color: var(--green); background: var(--soft); }
.followup-empty { color: var(--muted); font-style: italic; }
.followup-input {
  width: 100%;
  min-width: 210px;
  font: inherit;
  font-size: 0.84rem;
  padding: 5px 7px;
  border: 1px solid var(--green);
  border-radius: 6px;
  background: var(--input-bg);
  color: var(--text);
  resize: vertical;
}
.followup-actions { display: flex; gap: 5px; margin-top: 5px; }

.pill.reminder-on { background: var(--soft-green); color: var(--green-dark); white-space: nowrap; cursor: pointer; border: none; }
.pill.reminder-off { background: transparent; color: var(--muted); border: 1px solid var(--line); white-space: nowrap; cursor: pointer; }
.pill.reminder-on:hover, .pill.reminder-off:hover { border-color: var(--green); color: var(--green-dark); }

/* Botones chicos de cada fila (ganado / perdido / reabrir). */
.mini-btn {
  border: 1px solid var(--line);
  background: var(--card);
  color: var(--text);
  border-radius: 6px;
  padding: 5px 10px;
  font-size: 0.78rem;
  font-weight: 600;
  cursor: pointer;
  margin-right: 5px;
  white-space: nowrap;
}
.mini-btn:hover { border-color: var(--green); }
.mini-btn.win { border-color: var(--green); color: var(--green-dark); }
.mini-btn.win:hover { background: var(--soft-green); }
.mini-btn.lost { border-color: #e9a0ac; color: #a01026; }
:root[data-theme="dark"] .mini-btn.lost { color: #ffc2cc; }
.presupuestos-panel .row-actions, .presupuestos-panel td:last-child { white-space: nowrap; }

/* Carteles de los presupuestos que estan esperando respuesta. */
.quote-alerts {
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--soft);
  padding: 10px 12px;
  margin-bottom: 12px;
  display: grid;
  gap: 7px;
}
.quote-alerts-head {
  font-weight: 700;
  color: var(--text);
  font-size: 0.92rem;
  display: flex;
  gap: 10px;
  align-items: baseline;
  flex-wrap: wrap;
}
.quote-alerts-head small { font-weight: 400; color: var(--muted); }
.quote-alert {
  text-align: left;
  border: 1px solid var(--line);
  border-left-width: 5px;
  background: var(--card);
  color: var(--text);
  border-radius: 6px;
  padding: 8px 11px;
  font-size: 0.87rem;
  cursor: pointer;
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: center;
  flex-wrap: wrap;
}
.quote-alert:hover { border-color: var(--green); }
.quote-alert.a3 { border-left-color: var(--red); }
.quote-alert.a4 { border-left-color: #8a9895; }
.qa-go { color: var(--green-dark); font-weight: 700; white-space: nowrap; }

/* Caja de recordatorios (modal y resolver). */
.reminder-saved {
  background: var(--soft-green);
  color: var(--green-dark);
  border-radius: 6px;
  padding: 7px 10px;
  font-size: 0.81rem;
  line-height: 1.45;
}
.reminder-hint { color: var(--muted); font-size: 0.8rem; margin: 0; }
.reminder-hint code {
  background: var(--soft-green);
  color: var(--green-dark);
  padding: 1px 5px;
  border-radius: 4px;
}
.reminder-row { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.check-row.strong { font-weight: 700; }
.lbl-hint { color: var(--muted); font-weight: 400; }
.modal-card.sm { max-width: 430px; }
.modal-warn {
  font-size: 0.82rem;
  color: var(--muted);
  background: var(--soft);
  border-left: 3px solid var(--yellow);
  padding: 7px 10px;
  border-radius: 5px;
}
.primary.danger { background: #c62b3f; }

@media (max-width: 1024px) {
  .reminder-row { grid-template-columns: 1fr; }
  .followup-cell { min-width: 160px; }
}

/* Bloque del presupuesto dentro del modal "Resolver". */
.resolve-presupuesto {
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--soft);
  padding: 11px 12px;
  margin: 10px 0;
  display: grid;
  gap: 8px;
}
.resolve-presupuesto .rp-title { font-size: 0.95rem; }
.resolve-presupuesto .reminder-box { background: var(--card); }
.rp-archivos {
  display: grid;
  gap: 3px;
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: 6px;
  padding: 7px 9px;
}
.rp-archivos .check-row { font-size: 0.86rem; }
.rp-file { font-size: 0.86rem; display: grid; gap: 4px; }
.rp-file input[type="file"] { font-size: 0.84rem; }

/* ============ "Mis notificaciones": interruptores por usuario ============ */
.noti-table { width: 100%; }
.noti-table td { vertical-align: middle; }
.noti-table th:not(:first-child),
.noti-table td:not(:first-child) { text-align: center; width: 110px; }
.switch {
  display: inline-block;
  width: 40px;
  height: 22px;
  border-radius: 999px;
  background: #c9d5d2;
  position: relative;
  border: none;
  padding: 0;
  cursor: pointer;
  transition: background 0.15s;
  vertical-align: middle;
}
.switch i {
  position: absolute;
  top: 3px;
  left: 3px;
  width: 16px;
  height: 16px;
  border-radius: 50%;
  background: #fff;
  transition: left 0.15s;
}
.switch.on { background: var(--green); }
.switch.on i { left: 21px; }
.switch:focus-visible { outline: 2px solid var(--green-dark); outline-offset: 2px; }
:root[data-theme="dark"] .switch { background: #47575d; }

@media (max-width: 720px) {
  .noti-table th:not(:first-child),
  .noti-table td:not(:first-child) { width: 58px; }
  .noti-table th, .noti-table td { padding: 9px 5px; font-size: 0.82rem; line-height: 1.35; }
  .noti-table thead th:not(:first-child) { font-size: 0.7rem; }
  .switch { width: 34px; height: 19px; }
  .switch i { width: 13px; height: 13px; }
  .switch.on i { left: 18px; }
}

/* ===== Revisión del teléfono al cargar un contacto ===== */
/* Verde = el número tiene formato válido. Rojo = está mal escrito. */
.tel-ok {
  border-color: var(--green) !important;
  background: rgba(8, 166, 107, 0.10) !important;
}
.tel-mal {
  border-color: var(--red) !important;
  background: rgba(233, 52, 74, 0.10) !important;
}
.tel-medio {
  border-color: var(--yellow) !important;
  background: rgba(242, 165, 31, 0.10) !important;
}
.tel-aviso {
  margin: -4px 0 6px;
  font-size: 0.82rem;
  color: var(--muted);
  min-height: 1.1em;
}
.tel-aviso-ok { color: var(--green-dark); font-weight: 600; }
.tel-aviso-mal { color: var(--red); font-weight: 600; }
.tel-aviso-incompleto { color: var(--muted); }
:root[data-theme="dark"] .tel-aviso-mal { color: #ffc2cc; }
/* El botón de guardar queda apagado hasta que el número esté bien. */
.modal-actions button[disabled] { opacity: 0.5; cursor: not-allowed; }

/* ============ Almacenamiento por usuario ============ */
.storage-bar { margin: 8px 0; }
.storage-bar.chica { margin: 4px 0 10px; }
.storage-bar-track {
  height: 12px;
  border-radius: 999px;
  background: var(--soft);
  border: 1px solid var(--line);
  overflow: hidden;
}
.storage-bar-fill { height: 100%; border-radius: 999px; transition: width 0.3s; }
.barra-verde { background: var(--green); }
.barra-amarilla { background: var(--yellow); }
.barra-roja { background: var(--red); }
.storage-bar-label { font-size: 0.82rem; color: var(--muted); margin-top: 4px; }
.storage-bar-libre { color: var(--muted); }
.storage-mio { margin-bottom: 12px; }

.storage-card { max-width: 900px; width: 96vw; }
.storage-tabs { display: flex; gap: 4px; border-bottom: 1px solid var(--line); margin: 6px 0 10px; }
.storage-tabs button {
  border: none;
  background: none;
  padding: 9px 16px;
  cursor: pointer;
  color: var(--muted);
  font-weight: 600;
  border-bottom: 3px solid transparent;
  font-size: 0.92rem;
}
.storage-tabs button.active { color: var(--green-dark); border-bottom-color: var(--green); }
.storage-por-cliente { font-size: 0.86rem; color: var(--muted); display: inline-flex; gap: 6px; align-items: center; margin-bottom: 8px; }
.storage-body { max-height: 62vh; overflow-y: auto; }
.storage-cliente { margin-bottom: 16px; }
.storage-cliente h4 { margin: 6px 0; font-size: 0.95rem; }
.storage-tile figcaption { font-size: 0.76rem; color: var(--muted); padding: 2px 4px; }
.storage-tile-actions { display: flex; gap: 8px; padding: 4px; flex-wrap: wrap; }
.storage-tile-actions a, .storage-tile-actions button {
  font-size: 0.78rem;
  border: 1px solid var(--line);
  background: var(--card);
  color: var(--text);
  border-radius: 5px;
  padding: 3px 8px;
  cursor: pointer;
  text-decoration: none;
}
.storage-tile-actions button { border-color: #e9a0ac; color: #a01026; }
:root[data-theme="dark"] .storage-tile-actions button { color: #ffc2cc; }
.storage-links { display: grid; gap: 6px; }
.storage-link {
  display: block;
  padding: 8px 10px;
  border: 1px solid var(--line);
  border-radius: 6px;
  text-decoration: none;
  color: var(--blue-ink, #15506f);
  word-break: break-all;
  font-size: 0.86rem;
}
.storage-link small { display: block; color: var(--muted); margin-top: 2px; }
.attachment-removed {
  font-size: 0.85rem;
  color: var(--muted);
  background: var(--soft);
  border: 1px dashed var(--line);
  border-radius: 6px;
  padding: 6px 9px;
}
/* Pestañas de la galería del chat + link a la ventana grande */
.gallery-tabs { display: flex; gap: 4px; border-bottom: 1px solid var(--line); margin-bottom: 10px; }
.gallery-tabs button { border: none; background: none; padding: 8px 14px; cursor: pointer; color: var(--muted); font-weight: 600; border-bottom: 3px solid transparent; }
.gallery-tabs button.active { color: var(--green-dark); border-bottom-color: var(--green); }
.gallery-todos { text-align: center; margin-top: 10px; }
.gallery-todos button { background: none; border: none; color: var(--green-dark); font-weight: 600; cursor: pointer; }

/* ============ Spam y publicidad ============ */
.msg-menu-item.spam { color: #c62b3f; font-weight: 600; }
:root[data-theme="dark"] .msg-menu-item.spam { color: #ff9aab; }
.spam-quote {
  margin: 6px 0;
  padding: 8px 11px;
  border-left: 3px solid var(--red);
  background: var(--soft);
  border-radius: 5px;
  font-size: 0.88rem;
  color: var(--text);
}
.spam-actions { flex-wrap: wrap; gap: 6px; }
.spam-panel .spam-texto {
  max-width: 320px;
  font-size: 0.85rem;
  word-break: break-word;
}
.spam-panel .spam-nota {
  max-width: 260px;
  font-size: 0.83rem;
  color: var(--muted);
}
.spam-panel td { vertical-align: top; }
.spam-panel .pill { margin-left: 4px; }
.spam-ayuda { margin: 4px 0 6px; padding-left: 20px; font-size: 0.84rem; color: var(--muted); }
.spam-ayuda li { margin-bottom: 3px; }
.spam-ayuda strong { color: var(--text); }

/* ============ Etapa comercial + próxima acción + agenda ============ */
.pill.stage { background: #ede3ff; color: #5b2ea6; }
:root[data-theme="dark"] .pill.stage { background: #33265a; color: #cbb8ff; }
.hint-label { color: var(--muted); font-weight: 400; font-size: 0.8rem; }

.accion-box {
  border: 1px solid var(--line);
  border-left: 4px solid var(--yellow);
  border-radius: 8px;
  background: var(--soft);
  padding: 11px 13px;
  margin: 10px 0;
  display: grid;
  gap: 7px;
}
.accion-box.vencida { border-left-color: var(--red); }
.accion-box.hoy { border-left-color: var(--yellow); }
.accion-fields { display: grid; grid-template-columns: 1fr auto; gap: 10px; }
.accion-fields label { display: grid; gap: 4px; font-size: 0.84rem; }
.accion-alerta {
  background: #ffe3e8; color: #a01026;
  border-radius: 6px; padding: 6px 9px; font-size: 0.82rem; font-weight: 600;
}
:root[data-theme="dark"] .accion-alerta { background: #4d1b23; color: #ffc2cc; }

.agenda-panel .panel-sub { color: var(--muted); margin: -2px 0 8px; font-size: 0.88rem; }
.agenda-select { display: inline-flex; gap: 8px; align-items: center; font-size: 0.86rem; margin-bottom: 10px; }
.agenda-select select { padding: 5px 8px; border: 1px solid var(--line); border-radius: 6px; background: var(--input-bg); color: var(--text); }
.agenda-cols { display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: 12px; }
.agenda-col { border: 1px solid var(--line); border-radius: 8px; padding: 9px 11px; background: var(--card); }
.agenda-h { margin: 2px 0 8px; font-size: 0.92rem; }
.agenda-h.red { color: #c62b3f; } .agenda-h.yellow { color: #a06a00; } .agenda-h.alerta { color: #c62b3f; }
.agenda-item {
  display: flex; justify-content: space-between; gap: 8px; align-items: center;
  padding: 8px 9px; border-radius: 6px; margin-bottom: 6px; background: var(--soft); cursor: pointer;
}
.agenda-item:hover { background: var(--soft-green); }
.agenda-item strong { font-size: 0.87rem; }
.agenda-item small { display: block; color: var(--muted); font-size: 0.78rem; margin-top: 2px; }
.agenda-cuando { font-size: 0.74rem; font-weight: 700; white-space: nowrap; padding: 2px 9px; border-radius: 999px; background: var(--line); color: var(--text); }
.agenda-item.vencida .agenda-cuando { background: #ffe3e8; color: #a01026; }
.agenda-item.hoy .agenda-cuando { background: #fff1c2; color: #7a5600; }
.agenda-item.sin-accion .agenda-cuando { background: #ffe3e8; color: #a01026; }
:root[data-theme="dark"] .agenda-item.vencida .agenda-cuando,
:root[data-theme="dark"] .agenda-item.sin-accion .agenda-cuando { background: #4d1b23; color: #ffc2cc; }
:root[data-theme="dark"] .agenda-item.hoy .agenda-cuando { background: #4a3c10; color: #ffe9a8; }
.manager-panel td small.red { color: var(--red); font-weight: 700; }
.manager-panel td small.yellow { color: #a06a00; font-weight: 700; }

/* Filtro por asesor en Asesores bloqueados */
.block-filter { display: inline-grid; gap: 3px; font-size: 0.82rem; color: var(--muted); }
.block-filter input { padding: 6px 9px; border: 1px solid var(--line); border-radius: 6px; background: var(--input-bg); color: var(--text); font: inherit; min-width: 200px; }
.block-list-head { display: flex; gap: 16px; align-items: flex-end; flex-wrap: wrap; margin: 12px 0 6px; }

/* Etapa comercial, próxima acción y agenda */
.pill.stage { background: #ede3ff; color: #5b2ea6; }
:root[data-theme="dark"] .pill.stage { background: #33265a; color: #cbb8ff; }
.hint-label { color: var(--muted); font-weight: 400; font-size: 0.78rem; }
.accion-box { border: 1px solid var(--line); border-left: 4px solid var(--yellow); border-radius: 8px; background: var(--soft); padding: 11px 13px; margin: 10px 0; }
.accion-box.vencida { border-left-color: var(--red); }
.accion-box.hoy { border-left-color: var(--yellow); }
.accion-box > strong { font-size: 0.9rem; }
.accion-fields { display: grid; grid-template-columns: 1fr auto; gap: 10px; margin: 8px 0 6px; }
.accion-fields label { display: grid; gap: 4px; font-size: 0.82rem; }
.accion-alerta { font-size: 0.82rem; color: var(--red); background: var(--red-soft, #ffe3e8); border-radius: 5px; padding: 5px 9px; margin: 6px 0; }
:root[data-theme="dark"] .accion-alerta { color: #ffc2cc; background: #3a1c22; }
.agenda-cols { display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: 12px; }
.agenda-col { border: 1px solid var(--line); border-radius: 8px; padding: 8px 10px; background: var(--card); }
.agenda-h { margin: 2px 0 8px; font-size: 0.92rem; }
.agenda-h.red { color: #c62b3f; } .agenda-h.yellow { color: #a06a00; } .agenda-h.alerta { color: #c62b3f; }
.agenda-item { display: flex; justify-content: space-between; gap: 8px; align-items: center; padding: 8px 9px; border-radius: 6px; margin-bottom: 5px; background: var(--soft); cursor: pointer; }
.agenda-item:hover { border: 1px solid var(--green); }
.agenda-item strong { font-size: 0.87rem; }
.agenda-item small { display: block; color: var(--muted); font-size: 0.78rem; }
.agenda-cuando { font-size: 0.74rem; font-weight: 700; white-space: nowrap; padding: 2px 8px; border-radius: 999px; background: var(--line); }
.agenda-item.vencida .agenda-cuando { background: #ffe3e8; color: #a01026; }
.agenda-item.hoy .agenda-cuando { background: #fff1c2; color: #7a5600; }
.agenda-item.sin-accion .agenda-cuando { background: #ffe3e8; color: #a01026; }
.agenda-select { display: inline-flex; gap: 8px; align-items: center; font-size: 0.86rem; margin-bottom: 8px; }
.agenda-select select { padding: 5px 9px; border: 1px solid var(--line); border-radius: 6px; background: var(--input-bg); color: var(--text); font: inherit; }
