/* ATV Oportunidades — diseño según Manual de Identidad ATV 2024
   Colores: Azul #0D3872 · Rojo #FF1616 · Navy #1B1464 · Teal #088395 · Claro #EBF4F6
   Tipografía: Raleway (títulos) · Open Sans (cuerpo) */
:root {
  --azul: #0D3872; --rojo: #FF1616; --navy: #1B1464;
  --teal: #088395; --cyan: #37B7C3; --claro: #EBF4F6;
  --bg: #f5f6f9; --card: #ffffff; --texto: #1d2433; --gris: #6b7385;
  --borde: #e7eaf1; --ok: #1a9e55; --warn: #e8a200;
  --sombra: 0 2px 14px rgba(13, 56, 114, .07);
  --sombra-hover: 0 10px 30px rgba(13, 56, 114, .14);
  --radio: 18px;
  --fuente-titulo: "Raleway", -apple-system, "Segoe UI", sans-serif;
  --fuente-cuerpo: "Open Sans", -apple-system, "Segoe UI", sans-serif;
}
* { box-sizing: border-box; margin: 0; }
html { scroll-behavior: smooth; }
body { font-family: var(--fuente-cuerpo); background: var(--bg); color: var(--texto);
  -webkit-font-smoothing: antialiased; }
h1, h2, h3, h4 { font-family: var(--fuente-titulo); letter-spacing: -.01em; }

/* ---------- layout con menú lateral ---------- */
.layout { display: flex; min-height: 100vh; }
/* El HTML del CRM se entrega como SPA, pero no debe mostrarse hasta que
   /api/yo confirme una sesión válida. Evita el parpadeo de datos/UI antes
   de que aparezca el formulario de acceso. */
body:not(.sesion-validada) .layout { visibility: hidden; pointer-events: none; }
.sidebar { width: 232px; flex: none; background: linear-gradient(180deg, var(--navy), var(--azul));
  color: #fff; display: flex; flex-direction: column; padding: 18px 12px;
  position: sticky; top: 0; height: 100vh; transition: margin-left .25s ease; z-index: 30; }
.sidebar.cerrado { margin-left: -232px; }
.sidebar-brand { display: flex; align-items: center; gap: 10px; padding: 4px 8px 18px; }
.sidebar-brand img { height: 44px; background: #fff; border-radius: 12px; padding: 3px; }
.sidebar-brand span { font-family: var(--fuente-titulo); font-weight: 800; font-size: 1.05rem; line-height: 1.05; }
.sidebar-brand small { font-weight: 500; font-size: .62rem; opacity: .8; letter-spacing: .08em; text-transform: uppercase; }
.sidebar-nav { display: flex; flex-direction: column; gap: 4px; }
.sidebar-nav button { display: flex; align-items: center; gap: 10px; width: 100%;
  background: transparent; border: none; color: rgba(255,255,255,.82); text-align: left;
  padding: 11px 14px; border-radius: 12px; font-size: .88rem; font-weight: 600;
  font-family: var(--fuente-cuerpo); cursor: pointer; transition: background .15s, color .15s; }
.sidebar-nav button:hover { background: rgba(255,255,255,.1); color: #fff; }
.sidebar-nav button.on { background: rgba(255,255,255,.16); color: #fff; }
.sidebar-pie { margin-top: auto; display: flex; flex-direction: column; gap: 8px; padding: 8px; }
.usuario-chip { font-size: .78rem; line-height: 1.3; opacity: .9; }
.usuario-chip b { font-family: var(--fuente-titulo); display: block; }
.contenido { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.btn-menu { display: inline-flex; font-size: 1rem; padding: 8px 12px; }

/* ---------- pantalla de acceso ---------- */
.login-pantalla { position: fixed; inset: 0; z-index: 200;
  background: linear-gradient(135deg, var(--navy), var(--azul) 60%, var(--teal));
  display: flex; align-items: center; justify-content: center; padding: 16px; }
.login-caja { background: #fff; border-radius: 26px; padding: 36px 32px; width: 100%; max-width: 400px;
  display: flex; flex-direction: column; gap: 12px; align-items: center;
  box-shadow: 0 30px 90px rgba(0,0,0,.4); }
.login-caja img { height: 92px; }
.login-caja h2 { color: var(--azul); font-weight: 800; }
.login-caja form { display: flex; flex-direction: column; gap: 10px; width: 100%; }
.login-caja form.oculto, .login-pantalla.oculto { display: none; }
.login-caja input { padding: 12px 16px; border: 1px solid var(--borde); border-radius: 13px;
  font-size: .9rem; font-family: var(--fuente-cuerpo); background: #fbfcfe; }
.login-caja input:focus { outline: none; box-shadow: 0 0 0 3px rgba(55,183,195,.35); }
.login-sub { font-size: .82rem; color: var(--gris); text-align: center; }
.login-error { color: #b02222; font-size: .82rem; min-height: 1em; text-align: center; }

/* ---------- calendario ---------- */
.cal-titulo { font-family: var(--fuente-titulo); color: var(--azul); font-size: .95rem;
  text-transform: capitalize; min-width: 150px; }
.cal-checks { display: flex; gap: 10px; flex-wrap: wrap; font-size: .76rem; color: var(--gris); }
.cal-checks label { display: flex; align-items: center; gap: 4px; cursor: pointer; }
.calendario-cont { padding: 10px 26px 60px; }
.cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 6px; }
.cal-dow { text-align: center; font-size: .7rem; font-weight: 700; color: var(--gris);
  text-transform: uppercase; letter-spacing: .06em; padding: 6px 0; font-family: var(--fuente-titulo); }
.cal-celda { background: #fff; border: 1px solid var(--borde); border-radius: 14px; min-height: 104px;
  padding: 6px; display: flex; flex-direction: column; gap: 3px; cursor: pointer;
  transition: box-shadow .15s, transform .15s; overflow: hidden; }
.cal-celda:hover { box-shadow: var(--sombra-hover); transform: translateY(-1px); }
.cal-celda.otro-mes { opacity: .38; }
.cal-celda.hoy { border: 2px solid var(--rojo); }
.cal-num { font-size: .74rem; font-weight: 700; color: var(--azul); font-family: var(--fuente-titulo); }
.cal-ev { font-size: .64rem; border-radius: 7px; padding: 2px 6px; white-space: nowrap;
  overflow: hidden; text-overflow: ellipsis; font-weight: 600; cursor: pointer; }
.cal-ev.cierre { background: #fdeaea; color: #b02222; }
.cal-ev.visita { background: #fff2d9; color: #96660a; }
.cal-ev.foro { background: #e6f0fb; color: var(--azul); }
.cal-ev.manual { background: var(--claro); color: var(--teal); }
.cal-mas { font-size: .62rem; color: var(--gris); }
.cal-lista { display: flex; flex-direction: column; gap: 10px; }
.cal-dia-bloque h4 { color: var(--azul); margin: 12px 0 6px; text-transform: capitalize; }
.cal-item { background: #fff; border: 1px solid var(--borde); border-radius: 14px; padding: 12px 16px;
  display: flex; gap: 12px; align-items: center; flex-wrap: wrap; box-shadow: var(--sombra); }
.cal-item .hora { font-weight: 800; color: var(--azul); font-family: var(--fuente-titulo); min-width: 52px; }
.cal-item .cal-ev { font-size: .7rem; }
.cal-item .titulo { flex: 1; min-width: 200px; font-size: .86rem; }
.cal-vacio { color: var(--gris); text-align: center; padding: 50px; font-family: var(--fuente-titulo); }

/* ---------- páginas de tabla (cotizaciones / usuarios) ---------- */
.tabla-pagina { padding: 16px 26px 60px; }
.ultima-head { padding-bottom: 4px; display:flex; align-items:center; gap:18px; flex-wrap:wrap; }
.ultima-head > div { flex:1; min-width:260px; }
.pagina-head { display: flex; justify-content: space-between; align-items: center; gap: 14px;
  flex-wrap: wrap; margin-bottom: 14px; }
.ayuda { font-size: .78rem; color: var(--gris); max-width: 640px; }
table.tabla { width: 100%; border-collapse: separate; border-spacing: 0; background: #fff;
  border: 1px solid var(--borde); border-radius: var(--radio); overflow: hidden;
  font-size: .84rem; box-shadow: var(--sombra); }
table.tabla th { background: var(--claro); color: var(--azul); font-family: var(--fuente-titulo);
  font-size: .72rem; text-transform: uppercase; letter-spacing: .05em; padding: 11px 14px; text-align: left; }
table.tabla td { padding: 11px 14px; border-top: 1px solid var(--borde); vertical-align: middle; }
table.tabla tr:hover td { background: #fafbfe; }
.tabla-scroll { overflow-x: auto; }

/* ---------- visita como subtítulo y fechas destacadas ---------- */
.visita-sub { font-size: .76rem; color: #96660a; background: #fff8ea; border-radius: 10px;
  padding: 5px 10px; line-height: 1.4; }
.visita-sub .destacar, .badge.visita .destacar { color: #7a4d00; background: #ffe3a3;
  border-radius: 5px; padding: 0 4px; font-weight: 800; }

/* ---------- barra superior (vidrio esmerilado) ---------- */
.topbar { background: rgba(255, 255, 255, .78);
  -webkit-backdrop-filter: saturate(180%) blur(20px); backdrop-filter: saturate(180%) blur(20px);
  border-bottom: 1px solid rgba(13, 56, 114, .08); color: var(--texto);
  display: flex; flex-wrap: wrap; gap: 12px; align-items: center; justify-content: space-between;
  padding: 12px 26px; position: sticky; top: 0; z-index: 20; }
.brand { display: flex; align-items: center; gap: 14px; }
.brand img { height: 46px; }
.brand h1 { font-size: 1.12rem; font-weight: 800; color: var(--azul); }
.sync-info { font-size: .72rem; color: var(--gris); }
.top-actions { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.top-actions input { padding: 10px 16px; border-radius: 980px; border: 1px solid var(--borde);
  background: var(--claro); min-width: 220px; font-size: .84rem; font-family: var(--fuente-cuerpo);
  transition: box-shadow .2s, background .2s; }
.top-actions input:focus { outline: none; background: #fff; box-shadow: 0 0 0 3px rgba(55, 183, 195, .35); }

.btn { border: none; border-radius: 980px; padding: 10px 18px; font-size: .84rem; font-weight: 600;
  font-family: var(--fuente-cuerpo); cursor: pointer;
  transition: transform .15s ease, box-shadow .15s ease, filter .15s; }
.btn:hover { filter: brightness(1.06); transform: translateY(-1px); }
.btn:active { transform: translateY(0) scale(.98); }
.btn.primary { background: var(--rojo); color: #fff; box-shadow: 0 4px 14px rgba(255, 22, 22, .3); }
.btn.ghost { background: var(--claro); color: var(--azul); }
.btn.sec { background: var(--azul); color: #fff; }
.btn.suave { background: var(--claro); color: var(--azul); }
.btn.peligro { background: #fdecec; color: #b02222; }
.btn:disabled { opacity: .5; cursor: wait; transform: none; }

/* ---------- banner de sincronización ---------- */
.banner-sync { display: flex; gap: 16px; align-items: center; margin: 16px 26px 0;
  background: rgba(255, 255, 255, .9); -webkit-backdrop-filter: blur(14px); backdrop-filter: blur(14px);
  border: 1px solid var(--borde); border-left: 5px solid var(--rojo);
  border-radius: var(--radio); padding: 16px 20px; font-size: .86rem; box-shadow: var(--sombra); }
.banner-sync.oculto { display: none; }
.banner-sync b { color: var(--azul); font-family: var(--fuente-titulo); }
#banner-detalle { color: var(--teal); margin: 3px 0; font-weight: 600; }
.banner-sync small { color: var(--gris); }
.inicio-widgets .inicio-destacado { grid-column:span 2; background:linear-gradient(135deg,var(--azul),var(--navy)); color:#fff; }.inicio-widgets .inicio-destacado .etiqueta,.inicio-widgets .inicio-destacado .sub{color:rgba(255,255,255,.78)}
.inicio-versiculo { grid-column:span 2; background:linear-gradient(135deg,#fffaf0,#f1f7f6); }.inicio-versiculo p{font-family:var(--fuente-titulo);font-size:1rem;line-height:1.55;color:var(--navy)}.inicio-versiculo b{font-size:.72rem;color:var(--teal)}
.notificaciones-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; }
.notificaciones-grid section { display:flex; flex-direction:column; gap:7px; padding:12px; border:1px solid var(--borde); border-radius:13px; background:#f9fbfc; }
.notif-link { width:100%; border:0; border-radius:9px; padding:9px; text-align:left; background:#fff; color:var(--texto); cursor:pointer; box-shadow:0 1px 3px rgba(13,56,114,.07); }
.notif-link b,.notif-link small { display:block; }.notif-link small { margin-top:3px; color:var(--gris); font-size:.68rem; }.notif-link.exito { background:#ecf9f0; border-left:3px solid var(--ok); }.notif-link.privado-notif { background:#edf8f5; border-left:3px solid var(--teal); }
.spinner { width: 24px; height: 24px; flex: none; border-radius: 50%;
  border: 3px solid var(--claro); border-top-color: var(--rojo); animation: girar .9s linear infinite; }
@keyframes girar { to { transform: rotate(360deg); } }

/* ---------- código copiable ---------- */
.codigo { font-size: .74rem; color: var(--gris); font-family: ui-monospace, "SF Mono", monospace;
  cursor: pointer; border-radius: 7px; padding: 2px 7px; transition: background .15s, color .15s; }
.codigo:hover { background: var(--claro); color: var(--azul); }

/* ---------- filtros ---------- */
.filtros { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; padding: 18px 26px 6px; }
.tabs { display: flex; background: #e8ebf2; border-radius: 980px; padding: 3px; }
.tabs button { border: none; background: transparent; padding: 8px 16px; border-radius: 980px;
  font-weight: 600; font-size: .82rem; cursor: pointer; color: var(--gris);
  font-family: var(--fuente-cuerpo); transition: color .2s; }
.tabs button.on { background: #fff; color: var(--azul); box-shadow: 0 1px 6px rgba(13, 56, 114, .16); }
.filtros select, .filtros input { padding: 9px 14px; border: 1px solid var(--borde);
  border-radius: 980px; font-size: .82rem; background: #fff; font-family: var(--fuente-cuerpo);
  color: var(--texto); }
.filtros select:focus, .filtros input:focus { outline: none; box-shadow: 0 0 0 3px rgba(55, 183, 195, .3); }
.filtros input { flex: 1; min-width: 140px; }
.input-limpiable { position:relative; display:flex; flex:1; min-width:140px; }
.input-limpiable input { width:100%; padding-right:36px!important; }
.limpiar-busqueda { display:inline-flex; align-items:center; justify-content:center; width:26px; height:26px; padding:0; border:0; border-radius:50%; background:transparent; color:#718093; cursor:pointer; }
.limpiar-busqueda:hover { color:var(--azul); background:#e8eff3; }
.limpiar-busqueda .icon { width:15px; height:15px; }
.input-limpiable .limpiar-busqueda { position:absolute; top:50%; right:6px; transform:translateY(-50%); }
.limpiar-busqueda.oculto { display:none; }
.contador { font-size: .78rem; color: var(--gris); margin-left: auto; }

/* ---------- tarjetas ---------- */
.lista { display: grid; grid-template-columns: repeat(auto-fill, minmax(335px, 1fr));
  gap: 18px; padding: 14px 26px 60px; }
.card { background: var(--card); border: 1px solid rgba(13, 56, 114, .06); border-radius: var(--radio);
  padding: 18px; display: flex; flex-direction: column; gap: 9px;
  box-shadow: var(--sombra); transition: transform .22s ease, box-shadow .22s ease; }
.card:hover { transform: translateY(-3px); box-shadow: var(--sombra-hover); }
.card .fila1 { display: flex; justify-content: space-between; align-items: center; gap: 8px; }
.badge { font-size: .66rem; font-weight: 700; padding: 4px 10px; border-radius: 980px;
  white-space: nowrap; letter-spacing: .03em; font-family: var(--fuente-cuerpo); }
.badge.agil { background: #e6f0fb; color: var(--azul); }
.badge.licitacion { background: #ece9f8; color: var(--navy); }
.badge.visita { background: #fff4e0; color: #96660a; white-space: normal; }
.badge.crm { background: var(--claro); color: var(--teal); text-transform: capitalize; }
.card h3 { font-size: .95rem; line-height: 1.35; font-weight: 600; color: var(--texto); }
.card .inst { font-size: .78rem; color: var(--gris); }
.datos { display: flex; flex-wrap: wrap; gap: 6px 16px; font-size: .8rem; }
.datos b { color: var(--azul); font-size: .9rem; }
.cierre-urgente { color: var(--rojo); font-weight: 700; }
.cierre-pronto { color: var(--warn); font-weight: 700; }
.chips { display: flex; flex-wrap: wrap; gap: 5px; }
.chip { background: var(--claro); color: var(--teal); border: none;
  border-radius: 980px; padding: 3px 11px; font-size: .68rem; font-weight: 600; }
.card .acciones { display: flex; gap: 7px; flex-wrap: wrap; margin-top: auto; padding-top: 4px; }
.card .acciones .btn { padding: 8px 13px; font-size: .76rem; text-decoration: none; }

/* ---------- vista lista ---------- */
.lista.modo-lista { display: flex; flex-direction: column; gap: 10px; }
.modo-lista .card { flex-direction: row; align-items: center; flex-wrap: wrap; gap: 8px 18px; padding: 12px 18px; }
.modo-lista .card:hover { transform: none; box-shadow: var(--sombra-hover); }
.modo-lista .card .fila1 { flex: none; order: 0; }
.modo-lista .card .titulo-grupo { flex: 3; min-width: 240px; order: 1;
  display: flex; flex-direction: column; gap: 4px; }
.modo-lista .card h3 { font-size: .86rem; }
.modo-lista .card .inst { flex: 2; min-width: 170px; order: 2; font-size: .76rem; }
.modo-lista .card .datos { flex: none; order: 3; }
/* varias categorías: una debajo de la otra */
.modo-lista .card .chips { order: 4; flex-direction: column; align-items: flex-start; gap: 4px; }
.modo-lista .card .acciones { margin: 0; order: 6; margin-left: auto; padding: 0; }
.titulo-grupo { display: contents; }
.modo-lista .titulo-grupo { display: flex; }

/* ---------- modal ---------- */
.modal { position: fixed; inset: 0; background: rgba(13, 24, 50, .45);
  -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); z-index: 50;
  display: flex; align-items: flex-start; justify-content: center; padding: 30px 12px; overflow-y: auto; }
.modal.oculto, .oculto { display: none; }
.modal-box { background: #fff; border-radius: 24px; max-width: 880px; width: 100%;
  padding: 26px; display: flex; flex-direction: column; gap: 13px;
  box-shadow: 0 24px 80px rgba(13, 24, 50, .35); animation: aparecer .25s ease; }
@keyframes aparecer { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: none; } }
.modal-box h2 { font-size: 1.18rem; color: var(--azul); line-height: 1.35; font-weight: 700; }
.modal-box h4 { color: var(--azul); margin-top: 8px; font-weight: 700; font-size: .92rem; }
.cerrar { float: right; background: var(--claro); border: none; width: 32px; height: 32px;
  border-radius: 50%; font-size: 1rem; cursor: pointer; color: var(--gris); transition: background .15s; }
.cerrar:hover { background: #dde6ee; color: var(--azul); }
.grid2 { display: grid; grid-template-columns: repeat(auto-fit, minmax(235px, 1fr)); gap: 9px 20px; font-size: .85rem; }
.grid2 b { color: var(--azul); }
.desc { background: var(--claro); border: none; border-radius: 14px;
  padding: 14px 16px; font-size: .85rem; white-space: pre-wrap; max-height: 230px; overflow-y: auto; }
table.items { width: 100%; table-layout: fixed; border-collapse: separate; border-spacing: 0;
  font-size: .82rem; border: 1px solid var(--borde); border-radius: 12px; overflow: hidden; }
table.items td { overflow-wrap: break-word; }
table.items th:nth-child(1) { width: 28%; }
table.items th:nth-child(3) { width: 11%; }
table.items th:nth-child(4) { width: 14%; }
.modal-box { overflow-wrap: break-word; }
table.items th, table.items td { padding: 8px 12px; text-align: left; border-bottom: 1px solid var(--borde); }
table.items tr:last-child td { border-bottom: none; }
table.items th { background: var(--claro); color: var(--azul); font-family: var(--fuente-titulo); font-size: .76rem; }
.form-cot { display: grid; grid-template-columns: repeat(auto-fit, minmax(205px, 1fr)); gap: 12px; }
.form-cot label, .campo label { font-size: .68rem; font-weight: 700; color: var(--gris);
  display: block; text-transform: uppercase; letter-spacing: .05em; margin-bottom: 4px;
  font-family: var(--fuente-titulo); }
.form-cot input, .campo textarea, .campo input, .modal-box select {
  width: 100%; padding: 10px 13px; border: 1px solid var(--borde); border-radius: 12px;
  font-size: .86rem; font-family: var(--fuente-cuerpo); background: #fbfcfe; transition: box-shadow .2s; }
.form-cot input:focus, .campo textarea:focus, .campo input:focus {
  outline: none; background: #fff; box-shadow: 0 0 0 3px rgba(55, 183, 195, .3); }
.campo textarea { min-height: 130px; resize: vertical; }
.campo { position: relative; }
.copiar { position: absolute; top: -4px; right: 0; font-size: .68rem; padding: 5px 10px; }
.doc-lista { display: flex; flex-direction: column; gap: 5px; font-size: .84rem; }
.doc-lista a { color: var(--teal); text-decoration: none; }
.doc-lista a:hover { text-decoration: underline; }
.acciones-modal { display: flex; gap: 8px; flex-wrap: wrap; position: sticky; bottom: -26px;
  background: rgba(255,255,255,.92); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px);
  padding: 12px 0; border-top: 1px solid var(--borde); }
.acciones-modal .btn, .acciones-modal a.btn { text-decoration: none; }

.hint-pdf { font-size: .74rem; color: var(--teal); font-weight: 600; margin-top: 4px; }

/* ---------- dashboard pipeline ---------- */
.dash-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: 12px; margin-bottom: 16px; }
.dash-card { background: #fff; border: 1px solid var(--borde); border-radius: var(--radio);
  padding: 14px 16px; box-shadow: var(--sombra); }
.dash-card .valor { font-family: var(--fuente-titulo); font-weight: 800; font-size: 1.25rem;
  color: var(--azul); line-height: 1.2; }
.dash-card .etiqueta { font-size: .68rem; font-weight: 700; text-transform: uppercase;
  letter-spacing: .05em; color: var(--gris); margin-bottom: 4px; }
.dash-card .sub { font-size: .72rem; color: var(--gris); }
.dash-card.ok .valor { color: var(--ok); }
.dash-card.mal .valor { color: #b02222; }
.dash-card.curso .valor { color: var(--warn); }
.badge.pl-postulada { background: #e6f0fb; color: var(--azul); }
.badge.pl-seleccionada, .badge.pl-adjudicada { background: #fff2d9; color: #96660a; }
.badge.pl-ganada { background: #e3f6ec; color: var(--ok); }
.badge.pl-perdida { background: #fdecec; color: #b02222; }
.badge.pl-desierta, .badge.pl-cancelada { background: #eef0f4; color: var(--gris); }

/* ---------- cotizador ---------- */
.calc-caja { background: #fff; border: 1px solid var(--borde); border-radius: var(--radio);
  padding: 18px; box-shadow: var(--sombra); margin-bottom: 14px; }
.calc-caja h4 { color: var(--azul); margin-bottom: 10px; }
.calc-linea { display: grid; grid-template-columns: 2.2fr repeat(3, 1fr) auto; gap: 8px;
  align-items: center; margin-bottom: 6px; }
.calc-linea input, .calc-caja select, .calc-caja input { padding: 8px 10px; border: 1px solid var(--borde);
  border-radius: 10px; font-size: .84rem; font-family: var(--fuente-cuerpo); }
.calc-linea .total-linea { font-weight: 700; color: var(--azul); font-size: .84rem; min-width: 90px; text-align: right; }
.calc-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 10px; }
.calc-grid label, .calc-caja label { font-size: .68rem; font-weight: 700; color: var(--gris);
  text-transform: uppercase; display: block; margin-bottom: 3px; font-family: var(--fuente-titulo); }
.calc-check { display: flex; align-items: center; gap: 7px; font-size: .82rem; color: var(--texto);
  text-transform: none; font-family: var(--fuente-cuerpo); font-weight: 600; }
.calc-total { background: linear-gradient(135deg, var(--navy), var(--azul)); color: #fff;
  border-radius: var(--radio); padding: 16px 20px; display: flex; flex-wrap: wrap; gap: 10px 30px;
  align-items: center; margin-top: 8px; }
.calc-total b { font-family: var(--fuente-titulo); font-size: 1.15rem; }
.calc-total .item { font-size: .8rem; opacity: .92; }
.calc-total .item b { display: block; font-size: 1.05rem; }

/* ---------- toast ---------- */
.toast { position: fixed; bottom: 26px; left: 50%; transform: translateX(-50%);
  background: rgba(13, 56, 114, .95); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px);
  color: #fff; padding: 13px 24px; border-radius: 980px;
  font-size: .85rem; z-index: 99; max-width: 92vw; box-shadow: 0 10px 34px rgba(13, 24, 50, .4);
  animation: aparecer .25s ease; }
.toast.error { background: rgba(176, 34, 34, .96); }

.vacio { grid-column: 1/-1; text-align: center; color: var(--gris); padding: 80px 20px;
  font-size: .95rem; font-family: var(--fuente-titulo); }

/* ---------- configuración ---------- */
.rubro-bloque { border: 1px solid var(--borde); border-radius: 16px; padding: 14px; background: #fbfcfe; }
.rubro-bloque textarea { width: 100%; min-height: 90px; border: 1px solid var(--borde);
  border-radius: 12px; padding: 10px; font-size: .78rem; font-family: ui-monospace, monospace; background: #fff; }
.rubro-head { display: flex; justify-content: space-between; align-items: center; gap: 8px;
  flex-wrap: wrap; margin-bottom: 8px; }
.rubro-head b { color: var(--azul); font-family: var(--fuente-titulo); }
.reglas-mini { display: flex; gap: 8px; flex-wrap: wrap; font-size: .76rem; align-items: center; color: var(--gris); }
.reglas-mini input { width: 110px; padding: 6px 10px; border: 1px solid var(--borde); border-radius: 10px; }

@media (max-width: 860px) {
  .sidebar { position: fixed; left: 0; top: 0; margin-left: 0; z-index: 60;
    transform: translateX(-100%); transition: transform .25s ease;
    box-shadow: 12px 0 40px rgba(0,0,0,.25); }
  .sidebar.abierto { transform: none; }
  /* fondo oscuro al abrir el menú en móvil */
  .sidebar.abierto::after { content: ""; position: fixed; inset: 0; left: 232px;
    background: rgba(13,24,50,.4); z-index: -1; }
}

@media (max-width: 640px) {
  .topbar { padding: 10px 14px; gap: 8px; }
  .brand { gap: 10px; }
  .brand img { height: 38px; }
  .brand h1 { font-size: .92rem; }
  .top-actions { width: 100%; }
  .top-actions input { flex: 1; min-width: 0; }
  .top-actions .btn.primary { flex: 1; }         /* "Buscar y analizar todo" ocupa ancho */
  .lista { grid-template-columns: 1fr; padding: 12px 12px 60px; }
  .filtros { padding: 12px 14px 4px; gap: 8px; }
  .filtros select, .filtros input { flex: 1 1 46%; min-width: 0; }   /* 2 por fila */
  .filtros .tabs { flex: 1 1 100%; overflow-x: auto; }
  .banner-sync { margin: 12px 14px 0; }
  .notificaciones-grid { grid-template-columns:1fr; }
  .inicio-widgets .inicio-destacado,.inicio-versiculo { grid-column:span 1; }
  /* modal casi a pantalla completa y desplazable */
  .modal { padding: 0; align-items: stretch; }
  .modal-box { padding: 18px 16px 20px; border-radius: 0; min-height: 100vh; gap: 11px; }
  .grid2, .form-cot, .calc-grid { grid-template-columns: 1fr; }
  .dash-grid { grid-template-columns: 1fr 1fr; gap: 10px; }   /* 2 tarjetas por fila */
  .acciones-modal { position: sticky; bottom: 0; gap: 6px; }
  .acciones-modal .btn, .acciones-modal a.btn { flex: 1 1 46%; text-align: center; }
  .modo-lista .card .acciones { margin-left: 0; }
  .calendario-cont, .tabla-pagina { padding: 10px 12px 60px; }
  .cal-celda { min-height: 64px; border-radius: 10px; }
  .cal-ev { font-size: .55rem; padding: 1px 4px; }
  /* botones de acción en tablas más tocables */
  table.tabla .btn { padding: 8px 12px; }
  /* evita el zoom automático de iOS al enfocar un campo (necesita >=16px) */
  .top-actions input, .filtros input, .filtros select,
  .form-cot input, .form-cot select, .campo input, .campo textarea,
  .modal-box select, .modal-box input, .calc-grid input, .calc-grid select,
  .calc-linea input, .rich { font-size: 16px; }
}

@media (max-width: 420px) {
  .dash-grid { grid-template-columns: 1fr; }
  .filtros select, .filtros input { flex: 1 1 100%; }   /* 1 por fila en pantallas muy chicas */
  .acciones-modal .btn, .acciones-modal a.btn { flex: 1 1 100%; }
  .cot-tabs { flex-wrap: wrap; }
  .sidebar { width: 78vw; max-width: 300px; }
}

/* ---- editor de texto con formato (ficha de cotización) ---- */
.rich-grupo { border: 1px solid var(--borde); border-radius: 12px; overflow: hidden; background: #fff; }
.ia-redaccion { display:flex; align-items:center; justify-content:space-between; gap:16px; margin:18px 0 12px; padding:13px 15px; border:1px solid #b8d8db; border-left:4px solid var(--teal); border-radius:12px; background:#f4fbfb; }
.ia-redaccion b { display:block; color:#164958; font-size:.86rem; }.ia-redaccion small { display:block; margin-top:3px; color:#587382; line-height:1.4; }.ia-redaccion .btn { white-space:nowrap; }.ia-redaccion .icon { width:16px; height:16px; margin-right:5px; vertical-align:-3px; }
.ia-documentos{margin:-2px 0 18px;padding:12px 15px;border:1px solid #d9e6ea;border-radius:12px;background:#fff}.ia-documentos>b{display:block;color:#294c63;font-size:.83rem}.ia-documentos small{display:block;margin:4px 0 9px;color:#657b88;font-size:.78rem}.ia-documentos-lista{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px 13px}.ia-documentos-lista label{display:flex;gap:7px;align-items:flex-start;padding:7px 8px;border:1px solid #e1eaed;border-radius:8px;color:#405d6d;font-size:.78rem;line-height:1.32;cursor:pointer}.ia-documentos-lista input{margin:2px 0 0;accent-color:var(--teal)}
@media(max-width:620px){.ia-redaccion{align-items:stretch;flex-direction:column}.ia-redaccion .btn{width:100%}.ia-documentos-lista{grid-template-columns:1fr}}

/* ========================================================================== */
/* UI refresh 2026: mayor jerarquia, lectura rapida y controles consistentes  */
/* ========================================================================== */
@font-face { font-family: "Raleway"; src: url("../fonts/Raleway-400.ttf"); font-weight: 400; font-display: swap; }
@font-face { font-family: "Raleway"; src: url("../fonts/Raleway-600.ttf"); font-weight: 600; font-display: swap; }
@font-face { font-family: "Raleway"; src: url("../fonts/Raleway-700.ttf"); font-weight: 700; font-display: swap; }
@font-face { font-family: "Raleway"; src: url("../fonts/Raleway-800.ttf"); font-weight: 800; font-display: swap; }

:root {
  --azul: #123d74; --navy: #102b52; --rojo: #e6252b; --teal: #087f8c;
  --claro: #eef5f8; --bg: #f3f6f9; --texto: #172235; --gris: #667085;
  --borde: #dfe6ee; --sombra: 0 1px 3px rgba(16,43,82,.06), 0 8px 24px rgba(16,43,82,.05);
  --sombra-hover: 0 4px 10px rgba(16,43,82,.08), 0 18px 40px rgba(16,43,82,.10);
  --radio: 15px; --fuente-cuerpo: "Raleway", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}
body { background: linear-gradient(180deg,#f7f9fb 0,#f2f5f8 280px); font-size: 14px; }
button, input, select, textarea { font: inherit; }
button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible, a:focus-visible {
  outline: 3px solid rgba(55,183,195,.32); outline-offset: 2px;
}

.sidebar { width: 252px; padding: 20px 14px; background:
  radial-gradient(circle at 15% 0,rgba(55,183,195,.18),transparent 28%),
  linear-gradient(180deg,#102f5c 0%,#0c2850 100%); box-shadow: 8px 0 30px rgba(16,43,82,.08); }
.sidebar.cerrado { margin-left: -252px; }
.sidebar-brand { padding: 4px 10px 25px; gap: 12px; }
.sidebar-brand img { height: 46px; border-radius: 10px; box-shadow: 0 5px 18px rgba(0,0,0,.16); }
.sidebar-brand span { font-size: 1.08rem; letter-spacing: -.02em; }
.sidebar-nav { gap: 5px; }
.sidebar-nav button { position: relative; min-height: 44px; padding: 11px 13px; border-radius: 10px;
  color: rgba(255,255,255,.76); font-size: .84rem; }
.sidebar-nav button:hover { background: rgba(255,255,255,.08); }
.sidebar-nav button.on { background: #fff; color: var(--azul); box-shadow: 0 8px 22px rgba(4,19,42,.22); }
.sidebar-nav button.on::before { content:""; position:absolute; left:-5px; width:4px; height:22px;
  border-radius:4px; background:var(--rojo); }
.sidebar-pie { border-top: 1px solid rgba(255,255,255,.12); margin-top:auto; padding-top:16px; }
.usuario-chip { color:rgba(255,255,255,.8); }

.topbar { min-height: 76px; padding: 13px 28px; background: rgba(255,255,255,.9);
  border-bottom: 1px solid var(--borde); box-shadow: 0 2px 15px rgba(16,43,82,.035); }
.brand h1 { font-size: 1.2rem; color:var(--navy); }
.sync-info { display:block; margin-top:3px; font-size:.68rem; }
.top-actions { gap:9px; }
.top-actions input { min-width:250px; height:42px; border-radius:11px; background:#f5f8fa; padding:10px 14px; }
.btn { min-height: 40px; border-radius: 10px; padding: 9px 15px; font-size:.79rem; letter-spacing:-.01em; }
.btn.primary { background:linear-gradient(135deg,#ed3237,#d91920); box-shadow:0 5px 16px rgba(230,37,43,.22); }
.btn.sec { background:linear-gradient(135deg,#164780,#103867); box-shadow:0 4px 12px rgba(18,61,116,.14); }
.btn.ghost,.btn.suave { background:#eef3f7; }
.btn.peligro { background:#fff0f0; }

.filtros { margin: 18px 26px 4px; padding: 12px; border:1px solid var(--borde); border-radius:14px;
  background:rgba(255,255,255,.88); box-shadow:0 2px 10px rgba(16,43,82,.035); gap:8px; }
.tabs { background:#eef2f6; border-radius:10px; padding:3px; }
.tabs button { border-radius:8px; padding:8px 13px; font-size:.76rem; }
.tabs button.on { color:var(--navy); box-shadow:0 2px 8px rgba(16,43,82,.12); }
.filtros select,.filtros input { height:38px; border-radius:9px; padding:8px 11px; background:#fff; }
.filtros input { min-width:175px; }
.contador { background:#edf5f7; color:var(--teal); padding:7px 10px; border-radius:8px; font-weight:700; white-space:nowrap; }
.ultima-head { margin: 16px 26px 0; padding: 20px 22px; border-radius:16px; color:#fff;
  background:linear-gradient(125deg,#102f5c 0%,#15578a 72%,#087f8c 100%); box-shadow:var(--sombra); }
.ultima-head h2 { font-size:1.25rem; margin-bottom:5px; }
.ultima-head .ayuda { color:rgba(255,255,255,.78); max-width:720px; }
.ultima-head .contador { margin-left:0; background:rgba(255,255,255,.14); color:#fff; }
.ultima-filtros { margin-top:10px; }

.lista { gap:14px; padding:14px 26px 64px; grid-template-columns:repeat(auto-fill,minmax(350px,1fr)); }
.card { position:relative; overflow:hidden; border:1px solid var(--borde); border-radius:15px; padding:17px;
  gap:10px; box-shadow:var(--sombra); }
.card::before { content:""; position:absolute; inset:0 auto 0 0; width:3px; background:#cfd9e4; }
.card.estado-nueva::before { background:var(--teal); }
.card.estado-cotizando::before { background:#e8a200; }
.card.estado-participando::before,.card.estado-ganada::before { background:#1a9e55; }
.card.estado-descartada { opacity:.78; }
.card.card-urgente::before { width:5px; background:var(--rojo); }
.card.card-urgente { border-color:rgba(230,37,43,.24); }
.card:hover { transform:translateY(-2px); }
.card .fila1 { justify-content:flex-start; flex-wrap:wrap; }
.card .fila1 .badge.crm { margin-left:auto; }
.badge { padding:4px 9px; font-size:.61rem; letter-spacing:.045em; }
.badge.crm { border:1px solid rgba(8,127,140,.13); }
.badge.categoria { max-width:190px; overflow:hidden; color:#315b77; background:#edf4fb; border:1px solid #d4e4f1; text-overflow:ellipsis; white-space:nowrap; letter-spacing:.015em; text-transform:none; }
.codigo { background:#f3f5f7; padding:4px 7px; font-size:.68rem; }
.descartar-rapido { position:absolute; z-index:3; left:9px; top:50%; display:grid; width:30px; height:30px; place-items:center; border:1px solid #f2c5c9; border-radius:9px; color:#c82938; background:#fff5f5; box-shadow:0 4px 11px rgba(149,31,42,.12); cursor:pointer; opacity:0; pointer-events:none; transform:translate(-8px,-50%); transition:opacity .16s ease,transform .16s ease,background .16s ease; }
.descartar-rapido .icon { width:16px; }.descartar-rapido:hover { color:#fff; background:#cf3040; }
.card:hover .descartar-rapido,.card:focus-within .descartar-rapido { opacity:1; pointer-events:auto; transform:translate(0,-50%); }
.card h3 { font-size:.94rem; line-height:1.42; font-weight:700; color:var(--navy); }
.card .inst { line-height:1.4; }
.datos { padding:9px 0; border-top:1px solid #edf0f4; border-bottom:1px solid #edf0f4; }
.datos span { display:inline-flex; align-items:center; }
.datos .dato-apilado { display:flex; flex-direction:column; align-items:flex-start; gap:3px; }
.datos .dato-apilado > span { display:inline-flex; align-items:center; gap:4px; }
.icon-inline { display:inline-block; width:1em; height:1em; margin:-.12em .18em 0 0; vertical-align:middle; flex:none; }
.chip { border:1px solid #dcecee; background:#f3f9fa; }
.card .acciones { gap:6px; padding-top:5px; }
.card .acciones .btn { min-height:34px; padding:7px 11px; }

.lista.modo-lista { gap:8px; }
.modo-lista .card { display:grid; grid-template-columns:minmax(205px,1.4fr) minmax(170px,1fr) auto auto;
  align-items:center; gap:8px 18px; padding:12px 15px 12px 18px; }
.modo-lista .card .fila1 { grid-column:1/-1; order:unset; }
.modo-lista .card .titulo-grupo { grid-column:1; min-width:0; order:unset; }
.modo-lista .card .inst { grid-column:2; min-width:0; order:unset; }
.modo-lista .card .datos { grid-column:3; min-width:210px; order:unset; padding:0; border:0; }
.modo-lista .card .chips { display:none; }
.modo-lista .card .acciones { grid-column:4; order:unset; flex-wrap:nowrap; }
.modo-lista .descartar-rapido { top:50%; }

.modal { background:rgba(8,22,44,.58); }
.modal-box { border-radius:18px; border:1px solid rgba(255,255,255,.4); padding:28px;
  box-shadow:0 30px 90px rgba(8,22,44,.32); }
.modal-box h2 { color:var(--navy); font-size:1.25rem; }
.desc { background:#f5f8fa; border:1px solid var(--borde); }
.descripcion-expandible { margin:8px 0 13px; border:1px solid var(--borde); border-radius:12px; overflow:hidden; background:#f8fafc; }
.descripcion-expandible summary { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:11px 13px; color:var(--navy); cursor:pointer; list-style:none; font-weight:800; font-size:.78rem; }
.descripcion-previa { display:none; }
.descripcion-expandible summary::-webkit-details-marker { display:none; }
.descripcion-accion { display:inline-flex; align-items:center; gap:4px; color:var(--teal); font-size:.66rem; font-weight:700; white-space:nowrap; }
.descripcion-accion .icon { width:15px; transition:transform .18s ease; }
.descripcion-expandible[open] .descripcion-accion .icon { transform:rotate(180deg); }
.descripcion-expandible .desc { margin:0; border-width:1px 0 0; border-radius:0; }
.priv-card-actions { display:flex; justify-content:flex-end; margin-top:2px; }
.priv-card-actions .btn { min-height:30px; padding:5px 9px; font-size:.68rem; }
.priv-cotizar-atajo { display:flex; align-items:center; justify-content:space-between; gap:13px; margin:6px 0 15px; padding:12px; border:1px solid #cfe4df; border-radius:12px; background:linear-gradient(115deg,#f2faf8,#e6f4f0); }
.priv-cotizar-atajo b { display:block; color:#1e716c; font-size:.8rem; }.priv-cotizar-atajo small { display:block; margin-top:3px; color:var(--gris); font-size:.68rem; }
.cot-privada-aviso { display:flex; align-items:flex-start; gap:8px; margin:5px 0 15px; padding:10px 11px; border:1px solid #d2e6e2; border-radius:10px; background:#f0f8f6; color:#2e625d; font-size:.73rem; line-height:1.45; }
.cot-privada-aviso .icon { width:18px; color:#1c8c83; }
.propuesta-cabecera { display:flex; align-items:center; justify-content:space-between; gap:12px; margin:7px 0 13px; padding:12px 13px; border:1px solid #cfe4df; border-radius:12px; background:linear-gradient(115deg,#f2faf8,#e6f4f0); }
.propuesta-cabecera b,.propuesta-cabecera small { display:block; }.propuesta-cabecera b { color:#1e716c; font-size:.86rem; }.propuesta-cabecera small { margin-top:3px; color:var(--gris); font-size:.68rem; }
.propuesta-prueba,.propuesta-enlace { display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin:0 0 14px; padding:11px 12px; border-radius:11px; font-size:.73rem; }
.propuesta-prueba { border:1px solid #d8e6e8; background:#f3f8f9; color:#48616b; }.propuesta-prueba b { color:var(--azul); }.propuesta-prueba span { flex:1; min-width:200px; }
.propuesta-enlace { border:1px solid #b8ddd4; background:#eaf7f3; color:#21655b; }.propuesta-enlace span { font-weight:800; }.propuesta-enlace code { flex:1; min-width:160px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:#155e56; font-size:.68rem; }
.propuesta-form .form-span { grid-column:1/-1; }.propuesta-form textarea { min-height:76px; }
.propuesta-tipo { display:flex; align-items:flex-end; justify-content:space-between; gap:13px; padding:13px; border:1px solid #b9dcd8; border-radius:12px; background:linear-gradient(115deg,#f0faf8,#e8f2fa); }.propuesta-tipo > div { flex:1; min-width:0; }.propuesta-tipo label,.propuesta-tipo small { display:block; }.propuesta-tipo label { color:#1d6066; font-weight:800; font-size:.76rem; }.propuesta-tipo select { width:100%; height:36px; margin-top:5px; border:1px solid #c1d9dd; border-radius:8px; color:var(--texto); background:#fff; font:600 .74rem var(--fuente-cuerpo); padding:0 9px; }.propuesta-tipo small { margin-top:5px; color:var(--gris); font-size:.65rem; line-height:1.35; }.propuesta-tipo .btn { flex:0 0 auto; min-height:35px; white-space:nowrap; }
.propuesta-archivos { display:flex; align-items:flex-end; justify-content:space-between; gap:12px; margin:19px 0 10px; padding-top:17px; border-top:1px solid var(--borde); }.propuesta-archivos h4 { margin:3px 0 0; color:var(--azul); font-size:.88rem; }.propuesta-subir { display:flex; align-items:center; gap:8px; }.propuesta-subir select { max-width:150px; height:35px; border:1px solid var(--borde); border-radius:8px; background:#fff; color:var(--texto); font:600 .72rem var(--fuente-cuerpo); padding:0 8px; }
.propuesta-recursos { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:9px; }.propuesta-recursos article { min-width:0; padding:11px; border:1px solid var(--borde); border-radius:10px; background:#fafcfc; }.propuesta-recursos span,.propuesta-recursos b,.propuesta-recursos small { display:block; }.propuesta-recursos span { color:var(--teal); font-size:.58rem; font-weight:800; letter-spacing:.08em; }.propuesta-recursos b { margin:4px 0 2px; overflow:hidden; color:var(--navy); font-size:.76rem; text-overflow:ellipsis; white-space:nowrap; }.propuesta-recursos small { min-height:17px; overflow:hidden; color:var(--gris); font-size:.64rem; text-overflow:ellipsis; white-space:nowrap; }.propuesta-recursos article div { display:flex; gap:5px; margin-top:8px; }.propuesta-recursos .btn { min-height:28px; padding:5px 8px; font-size:.64rem; text-decoration:none; }
.tag,.knowledge-tags i { display:inline-block; margin:2px 3px 2px 0; padding:2px 6px; border-radius:999px; color:#216c67; background:#e8f6f2; font-size:.62rem; font-style:normal; }
.tec-linea { display:grid; grid-template-columns:minmax(180px,1.3fr) 82px minmax(130px,1fr) 34px; gap:7px; align-items:center; margin:7px 0; }.tec-linea select,.tec-linea input { min-width:0; padding:8px; border:1px solid var(--borde); border-radius:8px; background:#fff; font:inherit; font-size:.74rem; }.tec-linea .btn { min-height:32px; padding:5px; }
.knowledge-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:14px; }.knowledge-card { display:flex; flex-direction:column; min-width:0; padding:19px; border:1px solid var(--borde); border-radius:15px; background:linear-gradient(145deg,#fff,#f5fbfb); box-shadow:0 5px 18px rgba(13,56,114,.05); }.knowledge-card > span { color:var(--teal); font-size:.62rem; font-weight:800; letter-spacing:.1em; text-transform:uppercase; }.knowledge-card h3 { margin:8px 0 6px; color:var(--azul); font-size:1rem; }.knowledge-card p { flex:1; margin:0 0 13px; color:var(--gris); font-size:.77rem; line-height:1.55; }.knowledge-card > div:last-child { display:flex; gap:6px; margin-top:12px; }.knowledge-content,.texto-operativo { padding:13px; border:1px solid var(--borde); border-radius:10px; background:#fbfcfe; color:#364857; font-size:.8rem; line-height:1.6; }.oper-resumen { margin-bottom:12px; padding:11px 13px; border:1px solid #cce6e0; border-radius:11px; color:#28635d; background:#f0faf7; font-size:.78rem; }.oper-finanzas { padding:12px; border-radius:10px; color:#3d515d; background:#f4f8fa; font-size:.78rem; }
.proyectos-hero { background:linear-gradient(125deg,#172554,#086d73 58%,#14a39a); }.proyectos-acciones { display:flex; gap:8px; flex-wrap:wrap; }.proyectos-acciones .btn { text-decoration:none; }.proyectos-toolbar { align-items:center; }.proyectos-tablero { display:grid; grid-auto-flow:column; grid-auto-columns:minmax(245px,1fr); gap:12px; overflow-x:auto; padding:2px 2px 14px; }.proyectos-columna { min-height:260px; border:1px solid #dde8ee; border-radius:14px; background:#f6f9fb; }.proyectos-columna header { display:flex; justify-content:space-between; align-items:center; padding:12px 13px; border-bottom:1px solid #dfe9ee; color:#284e69; font-size:.76rem; }.proyectos-columna header span { display:inline-grid; min-width:21px; height:21px; place-items:center; border-radius:99px; color:#fff; background:#287c82; font-size:.65rem; }.proyectos-columna > div { display:flex; flex-direction:column; gap:9px; padding:9px; }.proyecto-card { padding:12px; border:1px solid #dbe7ec; border-left:4px solid #438795; border-radius:11px; background:#fff; box-shadow:0 3px 9px rgba(18,52,75,.05); }.proyecto-card.estado-ejecutando { border-left-color:#e18824; }.proyecto-card.estado-facturar,.proyecto-card.estado-facturado { border-left-color:#7654a8; }.proyecto-card.estado-factura_enviada { border-left-color:#239566; }.proyecto-card-top,.proyecto-meta { display:flex; justify-content:space-between; gap:7px; color:var(--gris); font-size:.64rem; }.proyecto-card h3 { margin:9px 0 4px; color:var(--azul); font-size:.8rem; line-height:1.35; }.proyecto-card p { min-height:18px; margin:0 0 9px; color:#5c7080; font-size:.68rem; }.proyecto-meta { padding-top:8px; border-top:1px solid #edf2f4; }.proyecto-etapa { margin:9px 0; color:#176c70; font-size:.68rem; font-weight:800; }.proyecto-card .btn { width:100%; min-height:30px; padding:5px; font-size:.66rem; }.proyecto-finanzas { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; margin:14px 0; padding:12px; border:1px solid #cadfe1; border-radius:11px; background:linear-gradient(120deg,#ecf8f5,#f5f9fd); }.proyecto-finanzas span { color:#617481; font-size:.67rem; }.proyecto-finanzas b { display:block; margin-top:3px; color:#244d60; font-size:.86rem; }.negativo { color:#bf3d4f!important; }.proyecto-presupuesto,.proyecto-costos { margin:16px 0; padding:14px; border:1px solid var(--borde); border-radius:13px; background:#fbfdfe; }.seccion-titulo { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; margin-bottom:10px; }.seccion-titulo h4 { margin:0 0 3px; color:var(--azul); font-size:.86rem; }.seccion-titulo small { color:var(--gris); font-size:.67rem; }.presupuesto-linea { display:grid; grid-template-columns:minmax(120px,1fr) minmax(190px,1.4fr) 58px; gap:10px; align-items:center; margin:5px 0; padding:8px 9px; border-radius:8px; color:#355466; background:#f0f7f7; font-size:.7rem; }.presupuesto-linea small { color:#627883; }.presupuesto-linea b { text-align:right; color:#22806c; }.presupuesto-linea.alerta { background:#fff7e6; }.presupuesto-linea.alerta b { color:#b27113; }.presupuesto-linea.excedido { background:#fff0f1; }.presupuesto-linea.excedido b { color:#bd3d4a; }.presupuesto-total { display:flex; justify-content:flex-end; gap:20px; margin-top:10px; padding-top:10px; border-top:1px solid #dfe9eb; color:#577080; font-size:.72rem; }.presupuesto-total b { display:block; margin-top:2px; color:#1e5161; font-size:.86rem; }.proyecto-config { margin:12px 0; padding:10px 12px; border:1px dashed #bdced4; border-radius:10px; color:#405d6d; font-size:.75rem; }.proyecto-config summary { cursor:pointer; font-weight:800; }.proyecto-config .form-cot { margin-top:11px; }.proyecto-historial { max-height:220px; }
.badge.priv-pl-propuesta { background:#e8f2f6; color:#246273; }
.badge.priv-pl-negociacion { background:#fff2d9; color:#96660a; }
.badge.priv-pl-ganada { background:#e3f6ec; color:var(--ok); }
.badge.priv-pl-perdida { background:#fdecec; color:#b02222; }
.priv-pipeline-tabla td { vertical-align:middle; }
.priv-pipeline-tabla .codigo { font-size:.65rem; }
.proveedor-pipeline small { display:block; color:var(--gris); font-size:.6rem; text-transform:uppercase; letter-spacing:.04em; }
.proveedor-pipeline b { display:block; max-width:235px; color:var(--navy); font-size:.72rem; line-height:1.35; overflow-wrap:anywhere; }
table.tabla { border-radius:14px; box-shadow:var(--sombra); }
table.tabla th { background:#edf4f7; }
table.tabla tr:nth-child(even) td { background:#fbfcfd; }
.dash-card { border-top:3px solid #d9e4ec; }
.dash-card.ok { border-top-color:var(--ok); }
.dash-card.mal { border-top-color:var(--rojo); }
.dash-card.curso { border-top-color:var(--warn); }
.toast { border-radius:11px; padding:12px 18px; }

@media (max-width:1100px) {
  .sidebar { width:220px; } .sidebar.cerrado { margin-left:-220px; }
  .modo-lista .card { grid-template-columns:minmax(220px,1.5fr) minmax(180px,1fr) auto; }
  .modo-lista .card .datos { grid-column:3; }
  .modo-lista .card .acciones { grid-column:1/-1; justify-content:flex-end; }
}
@media (max-width:860px) {
  .sidebar { width:252px; }
  .topbar { padding:11px 16px; }
  .filtros { margin:12px 14px 4px; }
  .ultima-head { margin:12px 14px 0; }
  .modo-lista .card { display:flex; }
  .modo-lista .card .fila1,.modo-lista .card .titulo-grupo,.modo-lista .card .inst,
  .modo-lista .card .datos,.modo-lista .card .acciones { width:100%; }
  .modo-lista .card .datos { padding:8px 0; border-top:1px solid #edf0f4; border-bottom:1px solid #edf0f4; }
  .modo-lista .card .acciones { justify-content:flex-start; }
}
@media (max-width:640px) {
  body { font-size:13px; }
  .topbar { position:sticky; }
  .top-actions { gap:6px; }
  .top-actions input { min-width:0; height:40px; }
  .filtros { padding:9px; }
  .lista { padding:10px 12px 55px; }
  .card { border-radius:13px; padding:14px; }
  .ultima-head { padding:17px; }
  .ultima-head .btn { width:100%; }
  .modal-box { padding:19px 16px; }
  .descripcion-expandible { margin:9px 0 14px; border-radius:11px; }
  .descripcion-expandible summary { min-height:48px; padding:12px; background:#edf5f7; }
  .descripcion-expandible summary > span:first-child { min-width:0; }.descripcion-previa { display:block; margin-top:4px; color:#526274; font-weight:500; line-height:1.35; white-space:normal; }.descripcion-accion { align-self:flex-start; }
  .descripcion-accion { color:var(--azul); }
  .priv-cotizar-atajo { align-items:stretch; flex-direction:column; }.priv-cotizar-atajo .btn { width:100%; }
  .propuesta-tipo { align-items:stretch; flex-direction:column; }.propuesta-tipo .btn { width:100%; }
  .propuesta-archivos { align-items:stretch; flex-direction:column; }.propuesta-subir { align-items:stretch; flex-direction:column; }.propuesta-subir select,.propuesta-subir .btn { max-width:none; width:100%; }.propuesta-recursos { grid-template-columns:1fr; }
  .knowledge-grid { grid-template-columns:1fr; }.tec-linea { grid-template-columns:1fr 72px 1fr 34px; }
  .proyecto-finanzas { grid-template-columns:1fr; }.presupuesto-linea { grid-template-columns:1fr; gap:3px; }.presupuesto-linea b { text-align:left; }.presupuesto-total { justify-content:flex-start; flex-wrap:wrap; }.proyectos-acciones { width:100%; }.proyectos-acciones .btn { flex:1; justify-content:center; }
}

/* ---------- modulos: ordenes de compra y sector privado ---------- */
.modulo-hero { margin:18px 26px 4px; padding:22px 24px; border-radius:17px; display:flex;
  align-items:center; justify-content:space-between; gap:18px; color:#fff; box-shadow:var(--sombra); }
.modulo-hero h2 { font-size:1.35rem; margin:3px 0 5px; }
.modulo-hero p { color:rgba(255,255,255,.78); font-size:.8rem; }
.oc-hero { background:linear-gradient(125deg,#123d74,#087f8c); }
.privado-hero { background:linear-gradient(125deg,#1f3c41,#22706b 65%,#3c9a84); }
.documentos-hero { background:linear-gradient(125deg,#334155,#0f766e 62%,#0891b2); }
.eyebrow { font-size:.65rem; text-transform:uppercase; letter-spacing:.12em; font-weight:800; opacity:.76; }
.modulo-pad { margin:14px 26px; }
.toolbar-modulo { margin:12px 26px; padding:11px; border:1px solid var(--borde); background:#fff;
  border-radius:13px; display:flex; align-items:center; gap:9px; box-shadow:0 2px 10px rgba(16,43,82,.035); }
.toolbar-modulo input,.toolbar-modulo select { height:39px; padding:8px 12px; border:1px solid var(--borde); border-radius:9px; background:#f8fafb; }
.toolbar-modulo input { flex:1; min-width:180px; }
.toolbar-modulo .input-limpiable { min-width:180px; }
.sync-mini { margin:10px 26px; padding:10px 14px; background:#edf7f8; color:var(--teal); border-radius:10px; font-weight:700; font-size:.78rem; }
.oc-tabla td:first-child { max-width:310px; }
.oc-tabla small { color:var(--gris); line-height:1.35; }
.acciones-celda { white-space:nowrap; }
.acciones-celda .btn { display:inline-flex; align-items:center; text-decoration:none; padding:7px 10px; min-height:34px; }
.badge.oc-e4,.badge.oc-e5,.badge.oc-e13,.badge.oc-e14,.badge.oc-e15 { background:#fff4da;color:#8a5a00; }
.badge.oc-e6,.badge.oc-e12 { background:#e6f7ee;color:#137a43; }
.badge.oc-e9 { background:#fdecec;color:#a92323; }

.kanban { display:grid; grid-template-columns:repeat(7,minmax(245px,1fr)); gap:11px; overflow-x:auto; padding:2px 2px 18px; }
.kanban-col { background:#edf1f5; border-radius:14px; padding:9px; min-height:430px; border-top:4px solid #94a3b8; }
.kanban-col.etapa-contactado { border-top-color:#38bdf8; }.kanban-col.etapa-calificado{border-top-color:#2dd4bf}
.kanban-col.etapa-propuesta{border-top-color:#f59e0b}.kanban-col.etapa-negociacion{border-top-color:#4f7f7d}
.kanban-col.etapa-ganado{border-top-color:#22c55e}.kanban-col.etapa-perdido{border-top-color:#ef4444}
.kanban-col>header { display:grid; grid-template-columns:1fr auto; gap:3px 8px; align-items:center; padding:4px 4px 10px; }
.kanban-col>header b { color:var(--navy); font-size:.78rem; text-transform:uppercase; letter-spacing:.03em; }
.kanban-col>header span { background:#fff; min-width:23px; text-align:center; border-radius:7px; padding:3px; font-weight:800; font-size:.67rem; }
.kanban-col>header small { grid-column:1/-1; color:var(--gris); font-weight:700; }
.kanban-cards { display:flex; flex-direction:column; gap:8px; }
.priv-card { background:#fff; border:1px solid #dfe6ee; border-radius:11px; padding:12px; display:flex; flex-direction:column; gap:7px;
  box-shadow:0 2px 8px rgba(16,43,82,.05); cursor:pointer; transition:.15s ease; }
.priv-card:hover { transform:translateY(-2px); box-shadow:0 9px 22px rgba(16,43,82,.12); }
.priv-card.vencida { border-left:4px solid var(--rojo); }
.priv-card-top { display:flex; justify-content:space-between; gap:8px; color:var(--gris); font-size:.68rem; text-transform:uppercase; font-weight:800; }
.priv-card-top b { color:#2c7a74; }.priv-card h4{font-size:.84rem;color:var(--navy);line-height:1.3}.priv-valor{font-weight:800;color:#1e716c}
.priv-next { padding:7px 8px; background:#f4f6f8; border-radius:8px; color:var(--gris); font-size:.67rem; line-height:1.35; }
.priv-next.vencida { background:#fff0f0;color:#b42328;font-weight:700; }
.priv-card .chips { align-items:center; }.priv-card .chip{font-size:.59rem;padding:2px 6px}.fuente{margin-left:auto;font-size:.59rem;color:var(--gris)}
.kanban-vacio { padding:30px 5px; text-align:center; color:#98a2b3; border:1px dashed #cbd5e1; border-radius:9px; font-size:.7rem; }
.fila-click { cursor:pointer; }.fila-click:hover td{background:#f2f7fa!important}
.badge.etapa-lead{background:#eef2f6;color:#475569}.badge.etapa-contactado{background:#e0f2fe;color:#0369a1}
.badge.etapa-calificado{background:#ccfbf1;color:#0f766e}.badge.etapa-propuesta{background:#fef3c7;color:#92400e}
.badge.etapa-negociacion{background:#e3f0ef;color:#275f5d}.badge.etapa-ganado{background:#dcfce7;color:#15803d}.badge.etapa-perdido{background:#fee2e2;color:#b91c1c}
.priv-form select { width:100%; padding:10px 13px; border:1px solid var(--borde); border-radius:12px; background:#fbfcfe; }
.actividad-nueva { display:grid; grid-template-columns:130px 1fr auto; gap:7px; }.actividad-nueva select,.actividad-nueva input{border:1px solid var(--borde);border-radius:9px;padding:9px 11px}
.timeline { border-left:2px solid #e2e8f0; margin-left:8px; padding-left:18px; display:flex; flex-direction:column; gap:12px; max-height:260px; overflow:auto; }
.timeline-item { position:relative; }.timeline-item i{position:absolute;width:10px;height:10px;background:#2c7a74;border:2px solid #fff;border-radius:50%;left:-24px;top:4px;box-shadow:0 0 0 2px #bfe2dc}
.timeline-item b{font-size:.7rem;text-transform:uppercase;color:#1e716c}.timeline-item small{margin-left:8px;color:var(--gris)}.timeline-item p{font-size:.78rem;margin-top:3px}.vacio-mini{color:var(--gris);padding:12px}

/* ---------- modo Sector Privado ----------
   Grafito, verde petróleo y turquesa: una identidad comercial neutra que
   conserva la sobriedad del azul/teal definido en el manual ATV. */
.area-context { display:inline-flex; align-items:center; margin-top:5px; padding:4px 8px;
  border-radius:999px; font-size:.62rem; font-weight:800; letter-spacing:.055em;
  text-transform:uppercase; }

body.modo-sector-privado {
  --azul:#146b68; --navy:#21363a; --rojo:#c74747; --teal:#1c8c83;
  --claro:#eff7f5; --bg:#f3f8f7; --texto:#203337; --gris:#627477; --borde:#d7e6e2;
  --sombra:0 1px 3px rgba(27,78,75,.08),0 10px 28px rgba(27,78,75,.08);
  --sombra-hover:0 5px 12px rgba(27,78,75,.12),0 20px 44px rgba(27,78,75,.15);
  background:
    radial-gradient(circle at 84% 0,rgba(65,158,142,.17),transparent 26rem),
    linear-gradient(180deg,#fbfdfc 0,#eff7f5 290px);
}
body.modo-sector-privado button:focus-visible,
body.modo-sector-privado input:focus-visible,
body.modo-sector-privado select:focus-visible,
body.modo-sector-privado textarea:focus-visible { outline-color:rgba(28,140,131,.38); }
body.modo-sector-privado .sidebar { background:
  radial-gradient(circle at 12% 0,rgba(85,186,166,.28),transparent 29%),
  radial-gradient(circle at 92% 71%,rgba(139,189,176,.18),transparent 31%),
  linear-gradient(180deg,#173b3e 0%,#1a5150 55%,#112e32 100%);
  box-shadow:8px 0 30px rgba(17,46,50,.15); }
body.modo-sector-privado .sidebar-brand small { color:#d8f2ed; opacity:1; }
body.modo-sector-privado .sidebar-nav button.on { color:#155e5a; box-shadow:0 9px 24px rgba(13,42,43,.28); }
body.modo-sector-privado .sidebar-nav button.on::before { background:#c74747; }
body.modo-sector-privado .topbar { justify-content:flex-start; background:rgba(251,253,252,.94); border-bottom-color:#d8e8e4;
  box-shadow:0 2px 16px rgba(27,78,75,.06); }
body.modo-sector-privado .brand h1 { color:#23484a; }
body.modo-sector-privado .area-context { color:#176c67; background:#e3f2ef; border:1px solid #c8e5df; }
body.modo-sector-privado .top-actions input { background:#fbfdfc; border-color:#d5e7e2; }
body.modo-sector-privado .btn.primary { background:linear-gradient(135deg,#1d847c,#136b67);
  box-shadow:0 5px 16px rgba(19,107,103,.27); }
body.modo-sector-privado .btn.sec { background:linear-gradient(135deg,#28474a,#1e373b);
  box-shadow:0 4px 12px rgba(30,55,59,.18); }
body.modo-sector-privado .btn.ghost,
body.modo-sector-privado .btn.suave { color:#176c67; background:#e9f4f1; }
body.modo-sector-privado .privado-hero { background:
  radial-gradient(circle at 88% 14%,rgba(206,245,234,.28),transparent 22%),
  linear-gradient(125deg,#183d41 0%,#1e6d68 58%,#359e87 100%); }
body.modo-sector-privado .toolbar-modulo { background:rgba(255,255,255,.82); border-color:#d8e8e4;
  box-shadow:0 3px 12px rgba(27,78,75,.06); }
body.modo-sector-privado .toolbar-modulo input,
body.modo-sector-privado .toolbar-modulo select { color:var(--texto); background:#fbfdfc; border-color:#d8e8e4; }
body.modo-sector-privado .tabs { background:#e7f1ef; }
body.modo-sector-privado .tabs button.on { color:#176c67; box-shadow:0 2px 8px rgba(23,108,103,.16); }
body.modo-sector-privado .contador { background:#e4f2ef; color:#176c67; }
body.modo-sector-privado .dash-card { background:rgba(255,255,255,.92); border-color:#dbe9e6; border-top-color:#abd5cb; }
body.modo-sector-privado .dash-card .valor { color:#176c67; }
body.modo-sector-privado .dash-card.curso .valor { color:#287c76; }
body.modo-sector-privado .kanban-col { background:linear-gradient(180deg,#e9f2f0,#f7faf9); border-top-color:#9ecbc1; }
body.modo-sector-privado .kanban-col>header b,
body.modo-sector-privado .priv-card h4 { color:#23484a; }
body.modo-sector-privado .kanban-col>header span { color:#176c67; background:#fff; }
body.modo-sector-privado .priv-card { border-color:#d9e8e4; box-shadow:0 2px 9px rgba(27,78,75,.07); }
body.modo-sector-privado .priv-card:hover { box-shadow:0 11px 25px rgba(27,78,75,.15); }
body.modo-sector-privado .priv-card-top b,
body.modo-sector-privado .priv-valor,
body.modo-sector-privado .timeline-item b { color:#1e716c; }
body.modo-sector-privado .priv-next { background:#f0f7f5; }
body.modo-sector-privado .timeline { border-left-color:#cfe5df; }
body.modo-sector-privado .timeline-item i { background:#1c8c83; box-shadow:0 0 0 2px #c9e6df; }
body.modo-sector-privado .modal { background:rgba(24,58,61,.63); }
body.modo-sector-privado .modal-box { border-color:rgba(203,233,225,.72); }
body.modo-sector-privado .modal-box h2 { color:#23484a; }
body.modo-sector-privado .desc { background:#f8fbfa; border-color:#d9e9e5; }
body.modo-sector-privado table.tabla th { background:#eaf3f1; color:#285255; }
body.modo-sector-privado table.tabla tr:nth-child(even) td { background:#fcfefd; }
body.modo-sector-privado .fila-click:hover td { background:#eff8f6!important; }

@media(max-width:860px){.modulo-hero,.toolbar-modulo,.modulo-pad{margin-left:14px;margin-right:14px}.kanban{grid-template-columns:repeat(7,230px)}.modulo-hero{align-items:flex-start;flex-direction:column}.toolbar-modulo{flex-wrap:wrap}.toolbar-modulo input{flex:1 1 100%}}
@media(max-width:640px){.modulo-hero{padding:17px}.modulo-hero .btn{width:100%}.actividad-nueva{grid-template-columns:1fr}.oc-tabla{min-width:850px}.priv-toolbar .tabs{width:100%}.priv-toolbar .tabs button{flex:1}}

/* ---------- shell CRM: navegación compacta y barra global ---------- */
.iconos-definicion { position:absolute; width:0; height:0; overflow:hidden; }
.icon { width:19px; height:19px; flex:none; fill:none; stroke:currentColor; stroke-width:1.8;
  stroke-linecap:round; stroke-linejoin:round; }
.sr-only { position:absolute!important; width:1px!important; height:1px!important; padding:0!important;
  margin:-1px!important; overflow:hidden!important; clip:rect(0,0,0,0)!important; white-space:nowrap!important; border:0!important; }

.layout { display:block; min-height:100vh; padding-left:72px; }
.sidebar { position:fixed; inset:0 auto 0 0; width:72px; height:100vh; overflow:visible; padding:12px 8px;
  background:linear-gradient(180deg,#102f5c 0%,#0c2850 100%); box-shadow:6px 0 20px rgba(16,43,82,.11);
  transition:transform .22s ease; z-index:50; }
.sidebar.cerrado { margin-left:0; }
.sidebar-nav { display:flex; flex-direction:column; gap:8px; width:56px; }
.nav-item { position:relative; width:56px; }
.sidebar-nav .nav-item > button { display:flex; align-items:center; justify-content:center; width:56px; min-height:48px;
  margin:0; padding:0; border:0; border-radius:12px; background:transparent; color:rgba(255,255,255,.82);
  cursor:pointer; transition:background .16s ease,color .16s ease,transform .16s ease; }
.sidebar-nav .nav-item > button:hover { background:rgba(255,255,255,.12); color:#fff; transform:translateY(-1px); }
.sidebar-nav .nav-item > button.on { background:rgba(255,255,255,.17); color:#fff; box-shadow:none; }
.sidebar-nav .nav-item > button.on::before { content:""; position:absolute; left:4px; width:4px; height:18px;
  border-radius:4px; background:#ed3237; }
.sidebar-nav .nav-label { display:none; }
.nav-flyout { position:absolute; top:-4px; left:56px; width:238px; display:none; flex-direction:column; gap:2px;
  padding:11px; border:1px solid rgba(222,231,241,.95); border-radius:14px; background:rgba(255,255,255,.98);
  box-shadow:0 16px 38px rgba(10,30,60,.22); backdrop-filter:blur(12px); z-index:60; }
.nav-item.submenu-abierto .nav-flyout { display:flex; }
.nav-flyout b { padding:3px 7px 8px; color:#243c62; font-size:.69rem; letter-spacing:.08em; text-transform:uppercase; }
.nav-flyout button { display:flex; align-items:center; gap:9px; width:100%; min-height:37px; padding:8px 9px; border:0;
  border-radius:8px; color:#526274; background:transparent; text-align:left; font-size:.77rem; font-weight:700; cursor:pointer; }
.nav-flyout button:hover, .nav-flyout button.on { background:#edf4f7; color:var(--azul); box-shadow:none; }
.nav-flyout button::before { display:none!important; }

.contenido { min-width:0; min-height:100vh; }
.topbar { position:sticky; top:0; z-index:30; display:grid; grid-template-columns:auto minmax(260px,620px) minmax(0,1fr);
  align-items:center; gap:18px; min-height:70px; padding:10px 26px; background:rgba(255,255,255,.94);
  border-bottom:1px solid var(--borde); box-shadow:0 2px 14px rgba(16,43,82,.045); }
.btn-menu { display:none; }
.topbar-logo { display:inline-flex; align-items:center; gap:9px; color:var(--navy); text-decoration:none; white-space:nowrap; }
.topbar-logo img { width:47px; height:47px; object-fit:contain; padding:0; border-radius:0; background:transparent; box-shadow:none; }
.topbar-logo span { font-family:var(--fuente-titulo); font-size:1.08rem; font-weight:800; letter-spacing:-.035em; }
.topbar-logo small { margin-left:4px; color:var(--teal); font-size:.68rem; letter-spacing:.1em; vertical-align:middle; }
.topbar-search { display:flex; align-items:center; gap:8px; min-width:0; height:42px; padding:0 6px 0 12px;
  border:1px solid #dce5ed; border-radius:11px; background:#f6f8fa; transition:border-color .16s,box-shadow .16s,background .16s; }
.topbar-search:focus-within { border-color:#8cb7c5; background:#fff; box-shadow:0 0 0 3px rgba(55,183,195,.16); }
.topbar-search > .icon { color:#6d7d8f; width:18px; }
.topbar-search input { width:100%; min-width:0; height:38px; padding:0; border:0!important; outline:0; background:transparent!important;
  color:var(--texto); font-size:.8rem; }
.topbar-search .topbar-clear { flex:none; width:25px; height:25px; }
.topbar-search kbd { display:inline-block; padding:3px 5px; border:1px solid #d7e0e8; border-radius:5px; color:#7a8795;
  background:#fff; font-size:.58rem; font-family:var(--fuente-cuerpo); white-space:nowrap; }
.icon-btn { position:relative; display:inline-flex; align-items:center; justify-content:center; width:39px; min-width:39px; height:39px;
  padding:0; border:1px solid transparent; border-radius:10px; color:#516276; background:transparent; cursor:pointer; transition:.16s ease; }
.icon-btn:hover { border-color:#dce5ed; color:var(--azul); background:#f3f7f9; }
.topbar-search .icon-btn { width:31px; min-width:31px; height:31px; border-radius:8px; }
.topbar-actions { display:flex; justify-content:flex-end; align-items:center; gap:7px; min-width:0; }
.topbar-add { display:inline-flex; align-items:center; gap:7px; min-height:39px; padding:8px 12px; white-space:nowrap; }
.topbar-add .icon { width:17px; }
.notificaciones-btn i { position:absolute; right:8px; top:8px; width:6px; height:6px; border:1px solid #fff; border-radius:50%; background:var(--rojo); }
.cuenta-wrap { position:relative; }
.cuenta-btn { display:flex; align-items:center; gap:8px; min-height:42px; padding:3px 5px; border:0; border-radius:11px;
  color:var(--texto); background:transparent; cursor:pointer; }
.cuenta-btn:hover { background:#f3f7f9; }
.cuenta-avatar { display:grid; place-items:center; width:33px; height:33px; border-radius:10px; color:#fff; background:linear-gradient(135deg,#1b558c,#087f8c);
  font-family:var(--fuente-titulo); font-size:.69rem; font-weight:800; }
.cuenta-avatar img { display:block; width:100%; height:100%; border-radius:inherit; object-fit:cover; }
.usuario-chip { display:flex; align-items:center; gap:8px; }
.mini-avatar { display:inline-grid; place-items:center; flex:none; width:28px; height:28px; overflow:hidden; border-radius:8px; color:#fff; background:#1b558c; font-family:var(--fuente-titulo); font-size:.61rem; font-weight:800; vertical-align:middle; }
.mini-avatar img { display:block; width:100%; max-width:100%; height:100%; max-height:100%; object-fit:cover; }
.mini-avatar-lista { display:inline-flex; margin-right:8px; vertical-align:middle; }
.avatar-editor { display:flex; align-items:center; gap:13px; margin:2px 0 15px; padding:12px; border:1px solid var(--borde); border-radius:11px; background:#f7fafc; }
.avatar-editor-preview { display:grid; place-items:center; width:54px; height:54px; overflow:hidden; border-radius:12px; color:#fff; background:#1b558c; font-family:var(--fuente-titulo); font-size:.9rem; font-weight:800; }
.avatar-editor-preview img { width:100%; height:100%; object-fit:cover; }
.avatar-editor label { display:block; margin:0 0 4px; color:var(--navy); font-size:.73rem; font-weight:800; }.avatar-editor small { color:var(--gris); font-size:.64rem; }
.cuenta-label { display:flex; flex-direction:column; align-items:flex-start; min-width:72px; text-align:left; }
.cuenta-label b { max-width:118px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:var(--navy); font-size:.72rem; }
.cuenta-label small { color:var(--gris); font-size:.59rem; }
.cuenta-btn .chevron { width:14px; color:#7b8998; }
.menu-cuenta { position:absolute; top:51px; right:0; width:310px; padding:10px; border:1px solid #dce5ed; border-radius:14px;
  background:#fff; box-shadow:0 18px 40px rgba(16,43,82,.18); z-index:70; }
.usuario-chip { padding:7px 8px; color:#657486; font-size:.69rem; line-height:1.4; }
.usuario-chip b { display:block; margin-bottom:2px; color:var(--navy); font-size:.8rem; }
.sync-cuenta { margin:6px 0 4px; padding:8px; border:1px solid #dce7ee; border-radius:10px; background:#f8fbfc; }.sync-cuenta-titulo { display:flex; align-items:center; gap:6px; margin:0 0 6px; color:#264c66; font-size:.68rem; }.sync-cuenta-titulo .icon { width:14px; color:#177b83; }.sync-cuenta-lista { display:grid; gap:3px; }.sync-cuenta-general { padding:5px 6px; border-radius:6px; color:#28606b; background:#e8f5f3; font-size:.64rem; font-weight:800; }.sync-cuenta-general.en-curso { color:#8a5a08; background:#fff4dd; }.sync-cuenta-general small { display:block; margin-top:2px; font-weight:600; }.sync-cuenta-item { display:flex; align-items:baseline; justify-content:space-between; gap:8px; padding:3px 5px; color:#536876; font-size:.61rem; }.sync-cuenta-item span { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }.sync-cuenta-item time { flex:none; color:#7b8996; font-size:.59rem; white-space:nowrap; }
.menu-cuenta-separador { height:1px; margin:6px 0; background:#e7edf2; }
.menu-cuenta button { display:flex; align-items:center; gap:9px; width:100%; min-height:37px; padding:8px; border:0; border-radius:8px;
  color:#526274; background:transparent; text-align:left; font-size:.76rem; font-weight:700; cursor:pointer; }
.menu-cuenta button:hover { color:var(--azul); background:#f1f6f8; }
.menu-cuenta button.salir { color:#b42334; }
.menu-cuenta button.salir:hover { background:#fff1f2; color:#a61f2e; }
.sync-info, .area-context { display:none!important; }

.pagina-contexto { display:flex; align-items:center; justify-content:space-between; gap:14px; margin:18px 26px 0; padding:17px 19px;
  border:1px solid #dfe7ee; border-radius:15px; background:linear-gradient(115deg,#fff,#f1f7f8); box-shadow:0 3px 12px rgba(16,43,82,.045); }
.pagina-contexto h2 { margin-top:2px; color:var(--navy); font-size:1.1rem; }
.pagina-contexto .eyebrow { color:var(--teal); opacity:1; }
.pagina-contexto .btn { display:inline-flex; align-items:center; gap:7px; }
.acciones-contexto { display:flex; align-items:center; justify-content:flex-end; gap:12px; flex-wrap:wrap; }
.acciones-contexto > .btn.primary { min-height:44px; box-shadow:0 6px 16px rgba(218,53,53,.22); }
.acciones-datos { display:grid; gap:4px; padding-left:12px; border-left:1px solid #cddce6; }
.acciones-datos > span { color:#6b7c8e; font-size:.62rem; font-weight:800; letter-spacing:.055em; text-transform:uppercase; }
.acciones-datos > div { display:flex; gap:7px; flex-wrap:wrap; }
.acciones-datos .btn { min-height:36px; padding:8px 11px; font-size:.75rem; }
.btn-contexto-config { display:inline-flex; align-items:center; justify-content:center; gap:6px; min-height:36px; padding:8px 10px; border:1px solid #cbdce7; border-radius:10px; color:#385870; background:rgba(255,255,255,.68); font:inherit; font-size:.75rem; font-weight:700; cursor:pointer; transition:background .15s,color .15s,border-color .15s; }
.btn-contexto-config:hover { color:var(--azul); border-color:#9cb9ca; background:#fff; }
.mercado-contexto { background:linear-gradient(115deg,#fff,#edf5fa); }
.notificaciones-lista { display:flex; flex-direction:column; gap:7px; margin-top:12px; }
.notificaciones-lista div { display:flex; flex-direction:column; gap:3px; padding:10px 12px; border:1px solid var(--borde); border-radius:10px; background:#fafcfd; }
.notificaciones-lista b { color:var(--navy); font-size:.8rem; }.notificaciones-lista small { color:var(--gris); font-size:.7rem; }
.ayuda-rapida { display:grid; gap:8px; margin-top:12px; }.ayuda-rapida p { padding:10px 12px; border-radius:9px; background:#f5f8fa; color:var(--gris); font-size:.8rem; }.ayuda-rapida b { color:var(--azul); }

body.modo-sector-privado .topbar-search { border-color:#d5e7e2; background:#f7fbfa; }
body.modo-sector-privado .topbar-search:focus-within { border-color:#83bdb3; box-shadow:0 0 0 3px rgba(28,140,131,.15); }
body.modo-sector-privado .topbar-logo { color:#23484a; }
body.modo-sector-privado .topbar-logo small { color:#176c67; }
body.modo-sector-privado .cuenta-avatar { background:linear-gradient(135deg,#28474a,#1c8c83); }
body.modo-sector-privado .icon-btn:hover, body.modo-sector-privado .cuenta-btn:hover { color:#176c67; background:#edf7f5; border-color:#d4e9e4; }
body.modo-sector-privado .pagina-contexto { border-color:#d5e7e2; background:linear-gradient(115deg,#fff,#edf7f5); }
body.modo-sector-privado .sidebar-nav .nav-item > button.on { color:#fff; background:rgba(255,255,255,.18); }
body.modo-sector-privado .nav-flyout b { color:#23484a; }
body.modo-sector-privado .nav-flyout button:hover, body.modo-sector-privado .nav-flyout button.on { color:#176c67; background:#edf7f5; }

@media (max-width:1050px) {
  .topbar { grid-template-columns:auto minmax(200px,1fr) auto; gap:12px; padding:10px 16px; }
  .cuenta-label, .cuenta-btn .chevron { display:none; }
  .cuenta-btn { padding:3px; }.topbar-search kbd { display:none; }
}
@media (max-width:860px) {
  .layout { padding-left:0; }
  .sidebar { width:260px; padding:16px 12px; transform:translateX(-100%); box-shadow:12px 0 34px rgba(16,43,82,.22); }
  .sidebar.abierto { transform:translateX(0); }
  .sidebar-nav { width:100%; gap:5px; }
  .nav-item { width:100%; }
  .sidebar-nav .nav-item > button { justify-content:flex-start; width:100%; min-height:44px; padding:0 12px; gap:11px; }
  .sidebar-nav .nav-label { display:inline; }.sidebar-nav .nav-item > button.on::before { left:2px; }
  .nav-flyout { display:none!important; }
  .btn-menu { display:inline-flex; }.topbar { grid-template-columns:auto auto minmax(0,1fr); gap:9px; min-height:64px; padding:8px 12px; }
  .topbar-search { grid-column:1/-1; grid-row:2; }.topbar-actions { gap:3px; }.topbar-add span { display:none; }.topbar-add { width:39px; min-width:39px; justify-content:center; padding:0; }
  .pagina-contexto { margin:12px 14px 0; padding:14px; }.pagina-contexto .btn { font-size:.69rem; }.acciones-contexto{gap:8px}.acciones-datos{padding-left:8px}.acciones-datos .btn{font-size:.69rem}.btn-contexto-config span{display:none}.btn-contexto-config{width:36px;padding:8px}
}
@media (max-width:500px) {
  .topbar-logo span { display:none; }.topbar-logo img{width:41px;height:41px}.topbar { grid-template-columns:auto auto 1fr; }.topbar-actions .icon-btn { width:35px; min-width:35px; height:35px; }
  .topbar-add { width:35px; min-width:35px; height:35px; min-height:35px; }.cuenta-avatar { width:31px; height:31px; }.pagina-contexto h2 { font-size:1rem; }
}

/* ---------- cotizador técnico de cerramientos ---------- */
.cerramientos-hero { background:linear-gradient(125deg,#123d74 0%,#075c79 64%,#087f8c 100%); }
.cer-hero-nota { padding:10px 14px; border:1px solid rgba(255,255,255,.24); border-radius:12px; background:rgba(255,255,255,.1); text-align:right; font-size:.75rem; line-height:1.45; }
.cer-hero-nota small { opacity:.75; }
.cer-tabs { padding:7px; }.cer-tabs .tabs { display:flex; overflow:auto; }.cer-tabs .tabs button { white-space:nowrap; }
.cer-layout { display:grid; grid-template-columns:minmax(360px,.88fr) minmax(430px,1.12fr); align-items:start; gap:15px; }
.cer-layout-composicion { grid-template-columns:minmax(470px,1fr) minmax(420px,.9fr); }
.cer-panel { border:1px solid var(--borde); border-radius:16px; padding:19px; background:rgba(255,255,255,.92); box-shadow:var(--sombra); }
.cer-panel-head { margin-bottom:15px; }.cer-panel-head h3 { color:var(--navy); font-size:1.05rem; margin:3px 0 5px; }.cer-panel-head p { font-size:.76rem; color:var(--gris); line-height:1.5; }
.cer-form-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:11px; }.cer-form-grid label,.cer-ajustes-grid label,.cer-componentes-grid label { display:flex; flex-direction:column; gap:5px; font-size:.68rem; color:var(--gris); font-weight:800; text-transform:uppercase; letter-spacing:.035em; }
.cer-form-grid input,.cer-form-grid select,.cer-ajustes-grid input,.cer-componentes-grid input,.cer-componentes-grid select { min-width:0; width:100%; border:1px solid var(--borde); border-radius:9px; padding:9px 10px; color:var(--texto); background:#fbfcfe; font-weight:500; text-transform:none; letter-spacing:0; }
.cer-form-grid label:first-child { grid-column:1/-1; }.cer-modelo-info { display:flex; justify-content:space-between; gap:8px; align-items:center; padding:7px 8px; border-radius:8px; background:#edf7f8; color:var(--teal); font-size:.67rem; line-height:1.25; text-transform:none; letter-spacing:0; }.cer-modelo-info span,.cer-confianza { flex:none; padding:3px 6px; border-radius:6px; background:#d8eff1; font-size:.57rem; text-transform:uppercase; letter-spacing:.04em; }
.cer-ajustes { margin-top:14px; }.cer-ajustes details { border:1px solid var(--borde); border-radius:10px; background:#f8fafc; }.cer-ajustes summary { padding:10px 12px; cursor:pointer; color:var(--azul); font-weight:800; font-size:.72rem; }.cer-ajustes-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:9px; padding:0 12px 12px; }
.cer-calcular { width:100%; margin-top:15px; }.cer-resultados { min-height:420px; }.cer-resultado-vacio { min-height:285px; border:1px dashed #c9d5df; border-radius:13px; background:linear-gradient(145deg,#f8fbfc,#eff7f8); display:flex; flex-direction:column; align-items:center; justify-content:center; gap:7px; padding:30px; text-align:center; color:var(--gris); font-size:.77rem; }.cer-resultado-vacio b { color:var(--azul); font-family:var(--fuente-titulo); font-size:.95rem; }
.cer-kpis { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; }.cer-kpi { padding:10px; border:1px solid #e1e8ef; border-radius:10px; background:#fafcfd; }.cer-kpi span { display:block; color:var(--gris); font-size:.61rem; text-transform:uppercase; letter-spacing:.045em; font-weight:800; }.cer-kpi b { display:block; margin-top:4px; color:var(--navy); font-size:.91rem; }.cer-kpi.venta { background:#ecf7f1; border-color:#d3ebdd; }.cer-kpi.venta b { color:#147a43; }.cer-margen { margin:10px 0 14px; padding:8px 10px; border-radius:9px; background:#f1f5f9; color:var(--gris); font-size:.7rem; }.cer-margen b { color:var(--azul); }.cer-result-title { display:flex; justify-content:space-between; gap:8px; align-items:flex-start; margin:14px 0 8px; }.cer-result-title h4,.cer-resultados h4 { color:var(--navy); font-size:.81rem; margin:12px 0 8px; }.cer-tabla { font-size:.71rem; }.cer-tabla th,.cer-tabla td { padding:8px 9px!important; }.cer-vidrio-linea { display:grid; grid-template-columns:1fr auto auto; gap:8px; align-items:center; margin-top:10px; padding:9px 10px; border-radius:10px; background:#eff7fa; color:var(--gris); font-size:.68rem; }.cer-vidrio-linea span:first-child { color:var(--azul); font-weight:800; }.cer-vidrio-linea b { color:var(--navy); }.cer-advertencias { margin-top:11px; padding:9px 10px; border-radius:9px; background:#fff8e8; color:#8a5a00; font-size:.68rem; line-height:1.45; }.cer-guardar { display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-top:14px; }.cer-guardar small { font-size:.65rem; color:var(--gris); }
.cer-vano { grid-template-columns:repeat(3,minmax(0,1fr)); }.cer-vano label:first-child { grid-column:auto; }.cer-pano-acciones { display:flex; gap:7px; flex-wrap:wrap; margin:14px 0 11px; }.cer-pano-acciones .btn { min-height:34px; padding:7px 10px; font-size:.7rem; }.cer-lienzo-wrap { position:relative; margin:9px 20px 22px 4px; padding:13px 14px 14px; border:1px dashed #aebfca; border-radius:12px; background:#f7fafb; }.cer-lienzo { position:relative; overflow:hidden; min-height:210px; border:6px solid #31516a; border-radius:2px; background:repeating-linear-gradient(45deg,#e8f0f1 0 9px,#f6fbfb 9px 18px); }.cer-lienzo-vacio { position:absolute; inset:0; display:flex; align-items:center; justify-content:center; color:#80909f; font-size:.76rem; }.cer-pano { position:absolute; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:4px; border:3px solid #087f8c; outline:1px solid rgba(255,255,255,.9); background:rgba(181,230,235,.6); color:#15536d; overflow:hidden; cursor:pointer; transition:.15s ease; font-family:var(--fuente-cuerpo); }.cer-pano:hover { background:rgba(104,202,211,.72); z-index:3; }.cer-pano i { font-style:normal; font-size:1.8rem; line-height:1; }.cer-pano span { max-width:90%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:.58rem; font-weight:800; }.cer-lienzo-medida { position:absolute; color:var(--gris); font-size:.62rem; font-weight:700; }.cer-lienzo-ancho { left:50%; bottom:-18px; transform:translateX(-50%); }.cer-lienzo-alto { right:-28px; top:50%; transform:rotate(90deg); }
.cer-componentes-lista { display:flex; flex-direction:column; gap:8px; margin-top:12px; max-height:380px; overflow:auto; padding-right:3px; }.cer-componente { border:1px solid var(--borde); border-radius:11px; padding:10px; background:#fbfcfe; }.cer-componente-top { display:flex; align-items:center; justify-content:space-between; color:var(--azul); font-size:.75rem; }.cer-componente-top .btn { min-height:29px; padding:5px 8px; }.cer-componentes-grid { display:grid; grid-template-columns:2fr 2fr repeat(5,minmax(56px,.7fr)); gap:6px; margin-top:8px; }.cer-componentes-grid label { font-size:.57rem; }.cer-componentes-grid input,.cer-componentes-grid select { padding:7px 8px; font-size:.68rem; }
.cer-proyectos { min-height:370px; }.cer-proyectos .tabla { font-size:.78rem; }
.cer-composicion-pantalla{display:grid;gap:16px}.cer-editor{display:grid;grid-template-columns:230px minmax(0,1fr);gap:14px;margin-top:14px}.cer-modelos-sidebar{padding:12px;border:1px solid #d7e4ea;border-radius:11px;background:#f8fbfc;min-width:0}.cer-modelos-sidebar>b{display:block;color:var(--azul);font-size:.78rem}.cer-modelos-sidebar>small{display:block;margin:3px 0 10px;color:var(--gris);font-size:.65rem}.cer-modelos-sidebar>div{display:grid;gap:7px;max-height:470px;overflow:auto}.cer-modelo-arrastrable{display:grid;grid-template-columns:25px minmax(0,1fr);align-items:center;column-gap:7px;padding:8px;border:1px solid #d7e3e8;border-radius:8px;background:#fff;color:#28465e;text-align:left;cursor:grab}.cer-modelo-arrastrable:hover{border-color:#0b8c95;background:#edfafa}.cer-modelo-arrastrable span{grid-row:span 2;font-size:1.2rem;color:#087f8c}.cer-modelo-arrastrable b{font-size:.68rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cer-modelo-arrastrable small{font-size:.58rem;color:#718194;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cer-editor .cer-lienzo-wrap{margin:0 28px 22px 4px}.cer-editor .cer-lienzo{min-height:440px}.cer-lienzo-activo{outline:3px dashed #08a0a7;outline-offset:-10px;background:#e7fbfb}.cer-resultado-abajo{min-height:auto}.cer-resultado-abajo .cer-resultado-vacio{min-height:180px}
@media(max-width:1150px){.cer-layout,.cer-layout-composicion{grid-template-columns:1fr}.cer-resultados{min-height:auto}.cer-componentes-grid{grid-template-columns:repeat(4,minmax(0,1fr));}.cer-componentes-grid label:first-child,.cer-componentes-grid label:nth-child(2){grid-column:span 2}}
@media(max-width:760px){.cer-editor{grid-template-columns:1fr}.cer-modelos-sidebar>div{grid-template-columns:repeat(2,minmax(0,1fr));max-height:220px}.cer-editor .cer-lienzo{min-height:260px}}
@media(max-width:640px){.cer-hero-nota{display:none}.cer-form-grid,.cer-ajustes-grid,.cer-vano{grid-template-columns:1fr}.cer-vano label:first-child{grid-column:auto}.cer-panel{padding:15px}.cer-kpis{grid-template-columns:1fr 1fr}.cer-vidrio-linea{grid-template-columns:1fr;gap:3px}.cer-componentes-grid{grid-template-columns:1fr 1fr}.cer-componentes-grid label:first-child,.cer-componentes-grid label:nth-child(2){grid-column:span 2}.cer-lienzo{min-height:180px}.cer-pano span{display:none}.cer-pano i{font-size:1.35rem}.cer-modelos-sidebar>div{grid-template-columns:1fr}}
.rich-barra { display: flex; gap: 4px; flex-wrap: wrap; padding: 5px 8px; background: var(--claro);
  border-bottom: 1px solid var(--borde); }
.rich-barra button, .rich-barra select { border: 1px solid var(--borde); background: #fff; border-radius: 8px;
  padding: 3px 9px; font-size: 12px; cursor: pointer; color: var(--texto); font-family: var(--fuente-cuerpo); }
.rich-barra button:hover { background: var(--azul); color: #fff; }
.rich { padding: 10px 12px; font-size: 13.5px; line-height: 1.55; outline: none; overflow-y: auto;
  max-height: 420px; }
.rich:focus { box-shadow: inset 0 0 0 2px rgba(13, 56, 114, .18); }
.rich:empty::before { content: attr(data-placeholder); color: var(--gris); }
.rich ul, .rich ol { margin: 4px 0 4px 22px; }

/* ---- imágenes de la cotización ---- */
.img-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 12px;
  margin: 8px 0 10px; }
.img-item { border: 1px solid var(--borde); border-radius: 12px; padding: 8px; background: #fff;
  display: flex; flex-direction: column; gap: 6px; position: relative; }
.img-item img { width: 100%; height: 130px; object-fit: cover; border-radius: 8px; background: var(--claro); }
.img-item .img-desc { font-size: 12px; padding: 5px 8px; }
.img-item .btn.peligro { position: absolute; top: 4px; right: 4px; padding: 2px 8px; font-size: 11px; }

/* ---- selector tipo de cálculo ---- */
.chooser-overlay { position: fixed; inset: 0; background: rgba(13, 27, 56, .55); z-index: 300;
  display: flex; align-items: center; justify-content: center; }
.chooser-caja { background: #fff; border-radius: var(--radio); padding: 26px; width: min(420px, 92vw);
  display: flex; flex-direction: column; gap: 10px; box-shadow: var(--sombra-hover); }
.chooser-caja h3 { color: var(--azul); margin-bottom: 6px; font-size: 1.05rem; }

/* ---- asignación de oportunidades ---- */
.badge.asignado { background: #e8f0ff; color: var(--azul); border: 1px solid #c9dcff; }
#asignar-box { background: var(--claro); border-radius: 12px; padding: 10px 12px; margin: 4px 0 10px; }

/* ---------- prioridad móvil: navegación, paneles y fichas legibles ---------- */
@media (max-width:860px) {
  html, body { overflow-x:hidden; }
  .contenido, section, main { min-width:0; }

  /* El menú móvil expone todos sus accesos internos dentro del panel. */
  #sidebar.abierto { overflow-y:auto; overflow-x:hidden; }
  #sidebar.abierto .nav-flyout { position:static; display:flex!important; width:auto; margin:2px 0 4px 12px; padding:7px;
    box-shadow:none; background:rgba(255,255,255,.08); border-color:rgba(255,255,255,.13); }
  #sidebar.abierto .nav-flyout b { color:rgba(255,255,255,.66); }
  #sidebar.abierto .nav-flyout button { color:rgba(255,255,255,.86); }
  #sidebar.abierto .nav-flyout button:hover, #sidebar.abierto .nav-flyout button.on { color:#fff; background:rgba(255,255,255,.13); }

  /* Al tocar Añadir, el panel se ancla al viewport; nunca al ancho del botón. */
  .anadir-wrap:hover .menu-anadir { display:none!important; }
  .anadir-wrap.menu-abierto .menu-anadir { position:fixed!important; top:56px!important; right:12px!important; left:12px!important;
    display:flex!important; width:auto!important; max-height:calc(100dvh - 70px); overflow-y:auto; padding:11px; z-index:140; }
  .menu-cuenta { position:fixed; top:56px; right:12px; left:auto; width:min(310px,calc(100vw - 24px)); max-height:calc(100dvh - 70px); overflow-y:auto; z-index:140; }
}

@media (max-width:640px) {
  /* La ficha se usa como pantalla completa blanca: sin transparencia oscura. */
  .modal { padding:0; background:#fff!important; -webkit-backdrop-filter:none; backdrop-filter:none; }
  .modal-box { width:100%; min-height:100dvh; padding:20px 16px 28px; border:0!important; border-radius:0!important;
    color:#172235!important; background:#fff!important; box-shadow:none!important; }
  .modal-box h2, .modal-box h4 { color:#102b52!important; }
  .modal-box .desc { color:#172235!important; background:#f3f7f8!important; border-color:#dce7eb!important; }
  .modal-box .ayuda, .modal-box small { color:#526274!important; }
  .modal-box input, .modal-box textarea, .modal-box select { color:#172235!important; background:#fff!important; border-color:#cfdde3!important; }
}

/* ---------- ajustes específicos para pantallas móviles ---------- */
.btn-menu-mobile { display:none; }
@media (max-width:860px) {
  .btn-menu-mobile { display:inline-flex; grid-column:2; grid-row:1; justify-self:start; width:36px; min-width:36px; height:36px; }
  .topbar-logo { grid-column:1; grid-row:1; }.topbar-actions { grid-column:3; grid-row:1; min-width:0; }.topbar-search { grid-column:1/-1; grid-row:2; }
  .anadir-wrap:hover .menu-anadir { display:none; }
  .anadir-wrap.menu-abierto .menu-anadir { display:flex; }
  .menu-anadir { position:fixed; top:56px; right:12px; left:auto; width:min(320px,calc(100vw - 24px)); max-height:calc(100vh - 70px); overflow-y:auto; padding:11px; }
  .menu-cuenta { position:fixed; top:56px; right:12px; width:min(310px,calc(100vw - 24px)); max-height:calc(100vh - 70px); overflow-y:auto; }
}

/* ---------- interacciones de navegación y acciones rápidas ---------- */
.sidebar-control { margin-top:auto; width:56px; padding-top:12px; border-top:1px solid rgba(255,255,255,.14); }
.sidebar-control .btn-menu { display:inline-flex; position:static; grid-column:auto; grid-row:auto; justify-content:center; width:56px; min-width:56px; height:42px;
  color:rgba(255,255,255,.82); background:rgba(255,255,255,.07); border-color:rgba(255,255,255,.1); }
.sidebar-control .btn-menu:hover { color:#fff; background:rgba(255,255,255,.15); border-color:rgba(255,255,255,.22); }
.sidebar.expandido .sidebar-control { width:100%; }.sidebar.expandido .sidebar-control .btn-menu { width:100%; justify-content:flex-start; padding-left:16px; }
.sidebar.expandido .sidebar-control .btn-menu::after { content:"Contraer menú"; margin-left:10px; font-size:.75rem; font-weight:700; }

.anadir-wrap { position:relative; }
.menu-anadir { position:absolute; top:39px; right:0; display:none; flex-direction:column; width:300px; padding:15px 11px 11px; border:1px solid #344452;
  border-radius:14px; color:#fff; background:#202b35; box-shadow:0 18px 42px rgba(15,27,39,.28); z-index:75; }
.anadir-wrap:hover .menu-anadir { display:flex; }
.menu-anadir > b { padding:3px 8px 9px; color:#b9c5cf; font-size:.65rem; letter-spacing:.09em; text-transform:uppercase; }
.menu-anadir button { display:flex; align-items:flex-start; gap:11px; width:100%; padding:10px 9px; border:0; border-radius:9px; color:#fff; background:transparent; text-align:left; cursor:pointer; }
.menu-anadir button:hover { background:rgba(255,255,255,.11); }.menu-anadir button .icon { margin-top:2px; color:#9ee1d5; }
.menu-anadir button span { display:flex; flex-direction:column; gap:3px; font-weight:800; font-size:.78rem; }.menu-anadir button small { color:#b7c3cc; font-size:.65rem; font-weight:500; line-height:1.35; }

.cal-page-head { display:flex; align-items:center; justify-content:space-between; gap:16px; margin:18px 26px 0; padding:18px 20px;
  border:1px solid #dfe7ee; border-radius:15px; background:linear-gradient(115deg,#fff,#f2f8f8); box-shadow:0 3px 12px rgba(16,43,82,.045); }
.cal-page-head .eyebrow { color:var(--teal); opacity:1; }.cal-page-head h2 { margin:3px 0 4px; color:var(--navy); font-size:1.16rem; }.cal-page-head p { color:var(--gris); font-size:.76rem; }
.cal-nuevo { display:inline-flex; align-items:center; gap:7px; white-space:nowrap; }.calendario-filtros { margin-top:11px; }
.cal-checks { display:flex; align-items:center; gap:6px; flex-wrap:wrap; color:var(--texto); }
.cal-checks label { display:inline-flex; align-items:center; gap:7px; min-height:36px; margin:0; padding:7px 10px; border:1px solid #dfe7ee; border-radius:9px;
  color:#45576b; background:#fff; font-size:.76rem; font-weight:700; cursor:pointer; transition:.15s ease; }
.cal-checks label:hover { border-color:#b8d4db; background:#f4faf9; }.cal-checks input { width:15px; height:15px; margin:0; accent-color:var(--teal); }
.cal-tipo-punto { width:7px; height:7px; border-radius:50%; background:#94a3b8; }.cal-tipo-punto.cierre { background:#df3d4c; }.cal-tipo-punto.visita { background:#d49a2a; }.cal-tipo-punto.foro { background:#2375ad; }.cal-tipo-punto.manual { background:#188d83; }

@media (max-width:860px) {
  .sidebar-control { width:100%; }.sidebar-control .btn-menu { width:100%; justify-content:flex-start; padding-left:16px; }.sidebar-control .btn-menu::after { content:"Menú"; margin-left:10px; font-size:.75rem; font-weight:700; }
  .cal-page-head { margin:12px 14px 0; padding:15px; align-items:flex-start; flex-direction:column; }.cal-page-head .cal-nuevo { width:100%; justify-content:center; }
  .cal-checks { width:100%; }.cal-checks label { flex:1 1 calc(50% - 6px); justify-content:flex-start; }
}

/* ---------- cabecera CRM de una sola línea ----------
   Inspirada en patrones de LicitaLAB/HubSpot: marca dentro del carril izquierdo,
   búsqueda central y acciones de cuenta fijas a la derecha. */
.layout { padding-top:70px; }
.topbar { position:fixed; inset:0 0 auto 0; width:auto; height:70px; min-height:70px; grid-template-columns:minmax(182px,250px) minmax(280px,620px) minmax(0,1fr);
  grid-template-rows:1fr; gap:18px; padding:10px 26px; border-radius:0; }
.topbar-logo { grid-column:1; grid-row:1; justify-self:start; }
.btn-menu { display:inline-flex; grid-column:1; grid-row:1; justify-self:end; width:36px; min-width:36px; height:36px; }
.topbar-search { grid-column:2; grid-row:1; }
.topbar-actions { grid-column:3; grid-row:1; }
.sidebar { top:70px; bottom:0; height:auto; transition:transform .22s ease,width .22s ease,padding .22s ease; }
.sidebar.expandido { width:260px; padding:14px 12px; overflow-y:auto; overflow-x:hidden; box-shadow:12px 0 34px rgba(16,43,82,.22); }
.sidebar.expandido .sidebar-nav { width:100%; gap:5px; }
.sidebar.expandido .nav-item { width:100%; }
.sidebar.expandido .sidebar-nav .nav-item > button { justify-content:flex-start; width:100%; min-height:44px; padding:0 12px; gap:11px; }
.sidebar.expandido .nav-label { display:inline; }
.sidebar.expandido .nav-flyout { position:static; width:auto; margin:2px 0 4px 12px; padding:7px; box-shadow:none; background:rgba(255,255,255,.08); border-color:rgba(255,255,255,.13); }
.sidebar.expandido .nav-flyout { display:flex!important; }
.sidebar.expandido .nav-flyout b { color:rgba(255,255,255,.62); }.sidebar.expandido .nav-flyout button { color:rgba(255,255,255,.83); }.sidebar.expandido .nav-flyout button:hover,.sidebar.expandido .nav-flyout button.on { color:#fff; background:rgba(255,255,255,.12); }
.sidebar.expandido .sidebar-nav .nav-item > button.on::before { left:2px; }

@media (max-width:1050px) {
  .topbar { grid-template-columns:minmax(154px,190px) minmax(180px,1fr) auto; gap:12px; }
}
@media (max-width:860px) {
  .layout { padding-top:112px; }
  .topbar { height:112px; min-height:112px; grid-template-columns:auto auto minmax(0,1fr); grid-template-rows:40px 42px; gap:8px; padding:8px 12px; }
  .topbar-logo { grid-column:1; grid-row:1; }.btn-menu { grid-column:2; grid-row:1; justify-self:start; }
  .topbar-actions { grid-column:3; grid-row:1; }.topbar-search { grid-column:1/-1; grid-row:2; }
  .sidebar { top:112px; height:calc(100vh - 112px); }.sidebar.expandido { width:260px; }
}
@media (max-width:500px) {
  .topbar { grid-template-columns:auto auto 1fr; }.topbar-logo span { display:none; }
  .topbar-actions { justify-content:flex-end; }.btn-menu { width:34px; min-width:34px; height:34px; }
}

/* ---------- inicio y fichas: lectura priorizada ---------- */
#pag-inicio .modulo-hero { color:#fff; background:radial-gradient(circle at 88% 10%,rgba(95,222,222,.46),transparent 28%),linear-gradient(122deg,#0a315f,#156f91 58%,#e65147); border:0; overflow:hidden; }
#pag-inicio .modulo-hero h2,#pag-inicio .modulo-hero p,#pag-inicio .modulo-hero .eyebrow { color:#fff!important; opacity:1; }
.inicio-widgets { grid-template-columns:repeat(12,minmax(0,1fr)); gap:18px; padding-top:20px; }
.inicio-widget { grid-column:span 3; min-height:186px; padding:24px!important; cursor:grab; border:0!important; box-shadow:0 12px 25px rgba(20,49,86,.13); transition:transform .18s ease,box-shadow .18s ease; overflow:hidden; }
.inicio-widget:hover { transform:translateY(-3px); box-shadow:0 18px 31px rgba(20,49,86,.18); }.inicio-widget.arrastrando{opacity:.42;cursor:grabbing;}
.inicio-widget .etiqueta { font-size:.88rem!important; color:#44566e!important; }.inicio-widget .valor { font-size:2.5rem!important; line-height:1.05; margin:13px 0; }.inicio-widget .sub { font-size:1rem!important; line-height:1.45; }.inicio-widget .btn { margin-top:12px; font-size:.84rem; }
.inicio-widget.inicio-destacado{grid-column:span 6; background:linear-gradient(135deg,#063a72,#0e99a2)!important;}.inicio-widget.inicio-destacado .etiqueta,.inicio-widget.inicio-destacado .valor,.inicio-widget.inicio-destacado .sub{color:#fff!important;}.inicio-widget.inicio-destacado .btn{background:#fff;color:#07597a;}
.inicio-widget.widget-jornada{grid-column:span 6;background:linear-gradient(135deg,#fff,#edf6fb)!important;border:1px solid #ccdeeb!important;}.inicio-widget.widget-jornada p{max-width:630px;margin:13px 0 0;color:#405870;font-size:1rem;line-height:1.52;font-weight:600;}.jornada-acciones{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px}.jornada-acciones .btn{margin-top:0;}
.inicio-widget.tono-cian{background:linear-gradient(135deg,#dffaff,#e8fbf6)!important;}.inicio-widget.tono-cian .valor{color:#07899a!important}.inicio-widget.tono-naranja{background:linear-gradient(135deg,#fff0d5,#fff9eb)!important;}.inicio-widget.tono-naranja .valor{color:#e66e13!important}.inicio-widget.tono-violeta{background:linear-gradient(135deg,#ece8ff,#f9f4ff)!important;}.inicio-widget.tono-violeta .valor{color:#6750b5!important}.inicio-widget.tono-rojo{background:linear-gradient(135deg,#ffe1e4,#fff6f3)!important;}.inicio-widget.tono-rojo .valor{color:#db3b50!important}.inicio-widget.tono-azul{background:linear-gradient(135deg,#dceaff,#f3f8ff)!important;}.inicio-widget.tono-azul .sub b{font-size:1.15rem;color:#15599e;}
.inicio-widget.widget-chart{grid-column:span 6;min-height:230px;background:linear-gradient(135deg,#fff,#e9f7ff)!important;}.inicio-widget.inicio-versiculo{grid-column:span 8;min-height:170px;background:linear-gradient(135deg,#fff7d9,#fffdf6)!important;}.inicio-widget.inicio-versiculo p{font-size:1.15rem;line-height:1.5;color:#27384d;}.inicio-widget.inicio-versiculo b{font-size:1rem;color:#b36616;}.inicio-widget.widget-clima{grid-column:span 4;min-height:170px;background:linear-gradient(135deg,#e5f4ff,#f6fbff)!important;}.inicio-widget.widget-clima .valor{font-size:1.8rem!important;}
.micro-chart{display:flex;align-items:flex-end;gap:11px;height:142px;margin-top:12px;padding:8px 4px 0;border-bottom:1px solid #cde0e8;}.micro-chart span,.micro-chart .grafico-punto{height:100%;flex:1;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:5px}.micro-chart .grafico-punto,.micro-chart-linea .grafico-etiqueta{padding:0;border:0;background:transparent;font:inherit;cursor:pointer}.micro-chart .grafico-punto:hover i,.micro-chart .grafico-punto:focus-visible i{filter:brightness(1.2);transform:scaleY(1.03)}.micro-chart i{display:block;width:min(38px,100%);min-height:8px;border-radius:8px 8px 2px 2px;background:linear-gradient(#0f9aaa,#07558d);transition:filter .16s,transform .16s}.micro-chart small,.micro-chart-linea small,.micro-chart-linea .grafico-etiqueta{font-size:.69rem;color:#687a8e;}.micro-chart-linea{height:150px;position:relative;padding-top:12px}.micro-chart-linea svg{width:100%;height:112px;overflow:visible}.micro-chart-linea polyline{fill:none;stroke:#e5534b;stroke-width:4;vector-effect:non-scaling-stroke;stroke-linecap:round;stroke-linejoin:round}.micro-chart-linea>div{display:flex;justify-content:space-between}.micro-chart-linea small,.micro-chart-linea .grafico-etiqueta{display:flex;flex-direction:column;gap:2px}.micro-chart-linea .grafico-etiqueta:hover,.micro-chart-linea .grafico-etiqueta:focus-visible{color:#b43835}.micro-chart-linea small b,.micro-chart-linea .grafico-etiqueta b{font-size:.77rem;color:#d94b47;}
.dato-secundario{display:block;margin-top:3px;color:var(--gris);font-size:.72rem;font-weight:600;}.card.tiene-basurero{transition:padding-left .16s ease;}.card.tiene-basurero:hover{padding-left:49px;}.btn-icono-peligro{display:inline-flex;align-items:center;justify-content:center;width:35px;height:35px;border:1px solid #f3b7bb;border-radius:9px;color:#d9323c;background:#fff1f2;cursor:pointer;}.btn-icono-peligro:hover{background:#d9323c;color:#fff;}.ficha-acciones-superiores{display:flex;justify-content:flex-end;align-items:center;gap:7px;margin:-1px 35px 12px 0;flex-wrap:wrap;}.ficha-asignar-compacta{max-width:340px;margin-left:auto!important;padding:8px 10px!important;}.ficha-asignar-compacta label{font-size:.72rem;margin-bottom:3px;}
/* La marca gana presencia sin aumentar la altura de la barra. */
.layout{padding-top:62px}.topbar{height:62px;min-height:62px;padding:3px 26px}.sidebar{top:62px}.topbar-logo img{width:112px;height:56px;object-fit:contain;transform:none}.topbar-logo span{font-size:.92rem}.topbar-logo small{font-size:.72rem;margin-left:0}.topbar{grid-template-columns:minmax(182px,250px) minmax(260px,620px) minmax(0,1fr)}
@media(max-width:860px){.layout{padding-top:104px}.topbar{height:104px;min-height:104px}.sidebar{top:104px;height:calc(100vh - 104px)}.inicio-widgets{grid-template-columns:repeat(2,minmax(0,1fr));}.inicio-widget,.inicio-widget.inicio-destacado,.inicio-widget.widget-jornada,.inicio-widget.widget-chart,.inicio-widget.inicio-versiculo,.inicio-widget.widget-clima{grid-column:span 1;}.inicio-widget.inicio-destacado,.inicio-widget.widget-jornada,.inicio-widget.widget-chart,.inicio-widget.inicio-versiculo{grid-column:span 2;}.inicio-widget{min-height:160px;padding:19px!important}.inicio-widget .valor{font-size:2.1rem!important}.ficha-acciones-superiores{margin:0 35px 12px 0;justify-content:flex-start}.ficha-asignar-compacta{max-width:none;margin:6px 0!important}}
@media(max-width:500px){.inicio-widgets{grid-template-columns:1fr;gap:12px}.inicio-widget,.inicio-widget.inicio-destacado,.inicio-widget.widget-jornada,.inicio-widget.widget-chart,.inicio-widget.inicio-versiculo,.inicio-widget.widget-clima{grid-column:span 1;}.inicio-widget .etiqueta{font-size:.8rem!important}.inicio-widget .sub{font-size:.9rem!important}.topbar-logo img{width:75px;height:48px}.card.tiene-basurero:hover{padding-left:45px}.ficha-acciones-superiores .btn{font-size:.7rem;padding:7px 8px;}}

.casos-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(285px,1fr));gap:18px}.caso-card{overflow:hidden;border:1px solid #d9e5eb;border-radius:18px;background:#fff;box-shadow:0 7px 20px rgba(19,48,84,.08)}.caso-portada{height:150px;background:linear-gradient(135deg,#063b72,#0c9fa1,#df4e49);display:flex;align-items:center;justify-content:center;color:#fff;font-size:2rem;font-weight:800}.caso-portada img{width:100%;height:100%;object-fit:cover}.caso-cuerpo{padding:18px}.caso-cuerpo small{color:#168b92;font-weight:800;text-transform:uppercase;letter-spacing:.06em}.caso-cuerpo h3{margin:7px 0;color:#11355f;font-size:1.05rem}.caso-cuerpo p{margin:0;color:#637386}.caso-acciones{display:flex;gap:7px;flex-wrap:wrap;margin-top:16px}.caso-fotos{display:flex;gap:9px;flex-wrap:wrap;margin:8px 0}.caso-fotos img{width:90px;height:70px;object-fit:cover;border-radius:8px}.checkline{display:flex;align-items:center;gap:8px;margin:12px 0;font-weight:700}.checkline input{width:18px;height:18px}
.btn,a.btn,.ficha-acciones-superiores a.btn,.acciones-modal a.btn{ text-decoration:none; }
.revision-tecnica{margin:18px 0;padding:18px;border:1px solid #c8dce7;border-radius:14px;background:linear-gradient(135deg,#eef8fb,#f8fcff)}.revision-tecnica h4{margin:0 0 6px;color:var(--azul)}.revision-items{display:grid;gap:7px;margin:12px 0}.revision-items label{display:grid;grid-template-columns:minmax(0,1fr) 82px 18px;gap:8px;align-items:center;padding:9px 10px;border:1px solid #d6e5eb;border-radius:9px;background:#fff}.revision-items span{font-size:.78rem;font-weight:800;color:#234460}.revision-items small{display:block;color:var(--gris);font-weight:500}.revision-items input{padding:7px!important;text-align:right}.revision-items b{color:var(--teal)}

/* Marca y controles compactos de la ficha. El CRM queda pegado al logo sin
   sacrificar el área táctil ni desbordar la barra en móvil. */
.topbar-logo{gap:7px}.topbar-logo img{width:70px!important;height:48px!important;object-fit:contain;transform:none!important}.topbar-logo span{display:inline-flex!important;align-items:center;margin-left:0}.topbar-logo small{display:block;margin-left:0!important;font-family:var(--fuente-titulo);font-size:1.12rem!important;font-weight:800;letter-spacing:.025em;line-height:1;color:var(--navy)}
.ficha-asignar-compacta{display:flex;align-items:flex-end;justify-content:flex-end;gap:10px;max-width:620px!important;width:fit-content;margin:10px 0 10px auto!important;padding:8px 10px!important;border:1px solid #dce7eb;border-radius:10px;background:#f8fbfc}.ficha-meta-control{display:flex;align-items:center;gap:7px;min-width:0}.ficha-meta-control label{margin:0!important;white-space:nowrap;color:#526274;font-size:.76rem!important;font-weight:800}.ficha-meta-control select{min-width:145px;margin:0;padding:7px 26px 7px 8px;font-size:.78rem}
@media(max-width:500px){.topbar-logo{gap:5px}.topbar-logo img{width:50px!important;height:42px!important}.topbar-logo span{margin-left:0}.topbar-logo small{font-size:.78rem!important}.ficha-asignar-compacta{width:100%;max-width:none!important;margin:10px 0!important;justify-content:stretch;align-items:stretch;flex-wrap:wrap}.ficha-meta-control{flex:1 1 100%;justify-content:space-between}.ficha-meta-control select{width:min(68vw,270px);min-width:0}}

/* ---------- Analizador comercial ---------- */
.bandeja-prioridad{display:grid;grid-template-columns:minmax(0,1fr);gap:10px;margin:18px 26px 12px}.bandeja-resumen{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}.bandeja-kpi{min-width:0;padding:13px 15px;text-align:left;border:1px solid #d5e4e9;border-radius:13px;background:#fff;box-shadow:0 5px 16px rgba(19,49,83,.055);cursor:pointer;font:inherit;transition:transform .15s,box-shadow .15s}.bandeja-kpi:hover{transform:translateY(-1px);box-shadow:0 9px 20px rgba(19,49,83,.11)}.bandeja-kpi small{display:block;color:#66798b;font-size:.71rem;font-weight:800;letter-spacing:.055em;text-transform:uppercase}.bandeja-kpi b{display:block;margin-top:5px;color:#173d61;font-size:1.55rem;line-height:1}.bandeja-kpi.visita{border-color:#eece91;background:#fff9eb}.bandeja-kpi.visita b{color:#a66300}.bandeja-kpi.cierre{border-color:#f0bec1;background:#fff5f5}.bandeja-kpi.cierre b{color:#bd3e49}.bandeja-kpi.ok{border-color:#bde7da;background:#f2fbf7}.bandeja-kpi.ok b{color:#08765c}.bandeja-kpi.investigar{border-color:#cbc9ef;background:#f8f7ff}.bandeja-kpi.investigar b{color:#554ead}.bandeja-ejecucion{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:10px 13px;border:1px solid #c9e0e7;border-radius:11px;background:linear-gradient(110deg,#eff9fb,#f8fcfd);color:#406176;font-size:.82rem}.bandeja-ejecucion strong{color:#b5434d}.bandeja-filtros{margin:0 26px 14px}#pag-oportunidades>#seleccion-oportunidades{margin-left:26px;margin-right:26px}.badge.visita-prioritaria{background:#fff0c9;color:#945d00;border:1px solid #f1cc7f}.card.card-urgente{border-color:#e5bc75;box-shadow:0 7px 20px rgba(183,116,17,.13)}
.analizador-hero{background:radial-gradient(circle at 84% 12%,rgba(70,215,187,.28),transparent 30%),linear-gradient(125deg,#102d55,#116b72 60%,#27878b);color:#fff;border:0;display:flex;justify-content:space-between;gap:22px;align-items:center}.analizador-hero h2,.analizador-hero p,.analizador-hero .eyebrow{color:#fff!important}.analizador-hero p{max-width:670px;opacity:.87}.analizador-acciones{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.analizador-acciones .btn.sec{background:rgba(255,255,255,.12);color:#fff;border-color:rgba(255,255,255,.38)}.analizador-acciones .btn.sec:hover{background:#fff;color:#114a58}.analizador-resumen{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;margin:18px 0}.analizador-kpi{padding:14px 17px;border:1px solid #d7e3e9;border-radius:13px;background:#fff;box-shadow:0 5px 15px rgba(19,49,83,.06)}.analizador-kpi small{display:block;color:#607184;font-weight:800;text-transform:uppercase;letter-spacing:.055em}.analizador-kpi b{display:block;margin-top:5px;font-size:1.8rem;color:#203d5d}.analizador-kpi.ok{border-color:#bce7d8;background:#f1fbf7}.analizador-kpi.ok b{color:#08775c}.analizador-kpi.revisar{border-color:#f1d995;background:#fffaf0}.analizador-kpi.revisar b{color:#ad7200}.analizador-kpi.investigar{border-color:#c8c7ea;background:#f7f6ff}.analizador-kpi.investigar b{color:#5450a8}.analizador-kpi.no{border-color:#efc9cd;background:#fff6f6}.analizador-kpi.no b{color:#ba4050}.analizador-lista{display:grid;gap:12px}.analisis-fila{border:1px solid #d9e5eb;border-left:5px solid #c99a26;border-radius:13px;background:#fff;padding:16px 18px;box-shadow:0 5px 15px rgba(19,49,83,.05)}.analisis-fila.ok{border-left-color:#159576}.analisis-fila.investigar{border-left-color:#625cc0}.analisis-fila.no{border-left-color:#d45462}.analisis-fila header{display:flex;gap:18px;justify-content:space-between}.analisis-fila h3{margin:7px 0 4px;color:#183b60;font-size:1.06rem}.analisis-puntajes{display:flex;gap:10px;flex-wrap:wrap;align-content:flex-start;justify-content:flex-end}.analisis-puntajes span{white-space:nowrap;border:1px solid #dce8ed;border-radius:8px;padding:6px 8px;color:#607184;font-size:.74rem}.analisis-puntajes b{color:#173c5d}.badge.analisis-ok{background:#dcf8ee;color:#08755d}.badge.analisis-revisar{background:#fff0cb;color:#946000}.badge.analisis-investigar{background:#e9e7ff;color:#514b9d}.badge.analisis-no{background:#fde4e6;color:#b63b4d}.analisis-cuerpo{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:14px 0 10px;padding-top:12px;border-top:1px solid #e6eef1}.analisis-cuerpo b{font-size:.78rem;color:#3d576f}.analisis-cuerpo ul{margin:6px 0;padding-left:19px;color:#5f7183;font-size:.82rem;line-height:1.45}.analisis-alertas{color:#a85a19!important}.analisis-cuerpo small{display:block;margin-top:7px;color:#728296}.analisis-fila footer{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap}
@media(max-width:720px){.analizador-hero{display:block}.analizador-acciones{margin-top:16px}.analizador-acciones .btn{flex:1}.bandeja-prioridad{margin:14px 14px 10px}.bandeja-filtros{margin:0 14px 12px}#pag-oportunidades>#seleccion-oportunidades{margin-left:14px;margin-right:14px}.analizador-resumen,.bandeja-resumen{grid-template-columns:repeat(2,minmax(0,1fr));}.bandeja-kpi:last-child{grid-column:span 2}.bandeja-ejecucion{align-items:stretch}.bandeja-ejecucion .btn{width:100%}.analisis-fila header,.analisis-cuerpo{display:block}.analisis-puntajes{justify-content:flex-start;margin-top:12px}.analisis-cuerpo>div+div{margin-top:14px}.analisis-fila footer{justify-content:stretch}.analisis-fila footer .btn{flex:1}}

/* Selección masiva y arrastre: controles compactos que no rompen tarjetas ni móvil. */
.seleccion-lote{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:10px 0 14px;padding:10px 13px;border:1px solid #b8d9e3;border-radius:11px;background:#edf8fb;color:#16475d;font-weight:800}.seleccion-card{display:inline-flex;align-items:center;gap:5px;margin-right:3px;color:#597083;font-size:.68rem;font-weight:700;white-space:nowrap}.seleccion-card input{width:15px;height:15px;accent-color:#087f89}.analisis-fila{position:relative}.analisis-fila>.seleccion-card{float:right;margin-left:12px}.analizador-kpi{border:1px solid #d7e3e9;text-align:left;cursor:pointer;font:inherit}.analizador-kpi:hover{transform:translateY(-1px);box-shadow:0 8px 18px rgba(19,49,83,.1)}.clima-valor{display:flex;align-items:center;gap:8px}.proyecto-drop{min-height:88px;transition:background .15s,border-color .15s}.proyecto-drop-activo{outline:2px dashed #0c8c94;outline-offset:5px;background:#ecfbfb}.proyecto-card[draggable="true"]{cursor:grab}.proyecto-card[draggable="true"]:active{cursor:grabbing}
@media(max-width:500px){.topbar-actions{overflow:hidden}.topbar-actions .btn,.topbar-actions button{min-width:0}.seleccion-card span{display:none}.card .fila1{padding-right:4px}.toolbar-modulo select,.toolbar-modulo .input-limpiable{min-width:0;max-width:100%}}

/* ---------- navegación por flujo y contención responsive ---------- */
.nav-grupo{display:flex;flex-direction:column;gap:4px;width:56px}.nav-grupo+.nav-grupo{margin-top:9px}.nav-seccion{display:none;margin:0 8px 3px;color:rgba(255,255,255,.58);font-size:.61rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;white-space:nowrap}.sidebar.expandido .nav-grupo{width:100%;gap:5px}.sidebar.expandido .nav-seccion{display:block;margin:11px 10px 3px}.sidebar.expandido .nav-grupo+.nav-grupo{margin-top:7px;border-top:1px solid rgba(255,255,255,.12);padding-top:5px}
.knowledge-acciones{display:flex;gap:6px;flex-wrap:wrap;margin-top:12px}.knowledge-card .knowledge-acciones .icon{width:15px;height:15px;margin-right:3px;vertical-align:-.18em}
.modulo-hero>*,.toolbar-modulo>*,.pagina-head>*,.acciones-modal>*{min-width:0}.modulo-hero h2,.modulo-hero p,.knowledge-card h3,.knowledge-card p{overflow-wrap:anywhere}.tabla-scroll{max-width:100%;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch}
@media(max-width:860px){
  #sidebar.abierto .nav-grupo{width:100%;gap:5px}#sidebar.abierto .nav-seccion{display:block;margin:11px 10px 3px;color:rgba(255,255,255,.62)}#sidebar.abierto .nav-grupo+.nav-grupo{margin-top:7px;border-top:1px solid rgba(255,255,255,.12);padding-top:5px}
  .modulo-hero,.toolbar-modulo,.modulo-pad,.sync-mini,.tabla-pagina,.cal-page-head,.calendario-cont{max-width:calc(100vw - 28px)}
  .toolbar-modulo>*{min-width:0}.toolbar-modulo .input-limpiable{flex:1 1 220px;min-width:0}.toolbar-modulo select{flex:1 1 150px;min-width:0;max-width:100%}
  .pagina-head,.acciones-modal,.ficha-acciones-superiores{max-width:100%;}.acciones-celda{white-space:normal}.acciones-celda .btn{margin:2px 0}
}
@media(max-width:640px){
  .toolbar-modulo{align-items:stretch}.toolbar-modulo>.input-limpiable,.toolbar-modulo>select,.toolbar-modulo>.contador{flex:1 1 100%;width:100%}
  .toolbar-modulo .input-limpiable input{min-width:0;width:100%}.modulo-hero .btn,.pagina-head>.btn,.acciones-modal>.btn,.acciones-modal>a.btn{max-width:100%;white-space:normal}
  .modal-box,.knowledge-card,.dash-card{overflow-x:hidden}.knowledge-acciones .btn{flex:1 1 auto;justify-content:center}.oc-tabla{min-width:760px}
}
