/* ============================================================
   GalisCloud Dashboard
   Tema según el manual de aplicación de marca.

   Color:   Navy #061E31 · Navy claro #0D2A44 · Turquesa #2FD4C4
            Turquesa oscuro #1FA396 · Papel #FAFAF7
   Tipos:   Playfair Display (títulos) · Inter (texto)
   Forma:   esquinas cortas, líneas finas, acento turquesa único
   ============================================================ */

:root{
  /* Marca */
  --navy:#061E31;
  --navy-2:#0D2A44;
  --teal:#2FD4C4;
  --teal-2:#1FA396;

  /* Derivados de uso */
  --marca:var(--teal);
  --marca-fuerte:var(--teal-2);
  --marca-suave:#EFFBF9;
  --marca-texto:var(--teal-2);

  /* Superficies */
  --papel:#FAFAF7;
  --blanco:#FFFFFF;
  --panel:#FFFFFF;
  --tenue:#F2F4F3;
  --linea:#DCE3E4;
  --linea-suave:#E8EDEE;

  /* Texto */
  --tinta:#1B2530;
  --tinta-2:#5B6B76;
  --tinta-3:#8A97A0;
  --sobre-navy:#B9C7CE;

  /* Bandas de puntuación */
  --critico:#C8384A;
  --alto:#D97A2B;
  --medio:#BF9A21;
  --bueno:#1F8F63;
  --excelente:var(--teal-2);

  --critico-bg:#FBECEE;
  --alto-bg:#FBF1E8;
  --medio-bg:#FAF5E4;
  --bueno-bg:#E9F5EF;
  --excelente-bg:#EFFBF9;

  --radio:8px;
  --radio-chico:4px;
  --sombra:0 14px 34px -24px rgba(6,30,49,.34);
  --sombra-flotante:0 22px 46px -26px rgba(6,30,49,.45);

  --serif:'Playfair Display',Georgia,'Times New Roman',serif;
  --sans:'Inter',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;
}

*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  background:var(--papel);
  color:var(--tinta);
  font:15px/1.6 var(--sans);
  font-feature-settings:"tnum" 1;
  -webkit-font-smoothing:antialiased;
}
a{color:var(--teal-2);text-decoration:none}
a:hover{text-decoration:underline}
:focus-visible{outline:2px solid var(--teal-2);outline-offset:2px;border-radius:3px}
code{font-size:.92em;background:var(--tenue);padding:1px 5px;border-radius:3px}
pre{margin:0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
pre code{background:none;padding:0}
.caja ol,.caja ul{color:var(--tinta-2)}
.caja ol>li{margin-bottom:10px}
.caja ol>li>b,.caja ul>li>b{color:var(--navy)}
.caja ul{padding-left:20px}
.ico{flex:none;display:block}

/* Logotipo: icono + palabra GALIS/CLOUD */
.logotipo{display:flex;align-items:center;gap:10px}
.logotipo img{height:28px;width:auto;display:block}
.logotipo .palabra{
  font-family:var(--serif);font-weight:600;font-size:18px;
  letter-spacing:.4px;line-height:1.1;color:var(--navy);
}
.logotipo .palabra span{color:var(--teal-2)}
.logotipo .rotulo{display:block;font-family:var(--sans);font-size:10px;
  letter-spacing:1.6px;color:var(--tinta-3);font-weight:500;margin-top:3px}
.sobre-oscuro .palabra{color:#fff}
.sobre-oscuro .palabra span{color:var(--teal)}
.sobre-oscuro .rotulo{color:var(--sobre-navy)}

/* ============================================================
   ESTRUCTURA
   ============================================================ */
.app{display:grid;grid-template-columns:258px 1fr;min-height:100vh}

.lateral{
  background:var(--blanco);color:var(--tinta-2);
  border-right:1px solid var(--linea);
  padding:22px 14px 18px;
  display:flex;flex-direction:column;gap:18px;
  position:sticky;top:0;height:100vh;
  /* Desplazamiento sin barra visible: el menú es largo en la cuenta de
     administración, pero la barra cortaba el bloque navy. */
  overflow-y:auto;
  scrollbar-width:none;          /* Firefox */
  -ms-overflow-style:none;       /* Edge antiguo */
  overscroll-behavior:contain;
}
.lateral::-webkit-scrollbar{width:0;height:0;display:none}
.lateral .logotipo{padding:0 8px 2px}

.nav{display:flex;flex-direction:column;gap:2px}
.nav h4{
  margin:16px 10px 7px;font-size:10.5px;font-weight:700;
  color:var(--tinta-3);letter-spacing:2px;
}
.nav a{
  display:flex;align-items:center;gap:11px;
  padding:8px 11px;border-radius:var(--radio-chico);
  font-size:14px;color:var(--tinta-2);
  border-left:2px solid transparent;
}
.nav a .ico{color:var(--tinta-3)}
.nav a:hover{background:var(--tenue);color:var(--navy);text-decoration:none}
.nav a:hover .ico{color:var(--teal-2)}
.nav a.on{background:var(--marca-suave);color:var(--navy);border-left-color:var(--teal);font-weight:600}
.nav a.on .ico{color:var(--teal-2)}
.nav a .txt{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nav .cuenta{
  flex:none;background:var(--teal-2);color:#fff;font-size:11px;font-weight:700;
  min-width:20px;height:20px;border-radius:10px;display:grid;place-items:center;padding:0 6px;
}

.selector-cliente{padding:0 8px;position:relative}
.selector-cliente > summary{
  display:grid;grid-template-columns:1fr auto;align-items:center;gap:2px 8px;
  cursor:pointer;list-style:none;
  padding:8px 11px;border:1px solid var(--linea);border-radius:10px;
  background:var(--blanco);
}
.selector-cliente > summary .etiqueta{grid-column:1;grid-row:1}
.selector-cliente > summary .actual{grid-column:1;grid-row:2}
.selector-cliente > summary .ico{grid-column:2;grid-row:1 / span 2}
.selector-cliente > summary::-webkit-details-marker{display:none}
.selector-cliente > summary:hover{border-color:#C7D2D4;background:var(--tenue)}
.selector-cliente .etiqueta{
  font-size:9.5px;letter-spacing:1.4px;font-weight:700;color:var(--tinta-3);
  text-transform:uppercase;flex:none;
}
.selector-cliente .actual{
  flex:1;min-width:0;font-size:13.5px;font-weight:600;color:var(--navy);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.selector-cliente > summary .ico{flex:none;color:var(--tinta-2);transition:transform .15s ease}
.selector-cliente[open] > summary .ico{transform:rotate(90deg)}
/* La lista es una ventanita flotante: no empuja el menú hacia abajo */
.selector-cliente .lista{
  position:absolute;z-index:120;left:8px;right:8px;top:calc(100% + 6px);
  padding:6px;border:1px solid var(--linea);border-radius:12px;
  background:var(--blanco);max-height:min(60vh,380px);overflow:auto;
  box-shadow:0 18px 44px rgba(6,30,49,.22);
}
.selector-cliente .cabeza-lista{
  display:flex;justify-content:space-between;align-items:baseline;gap:8px;
  padding:6px 9px 8px;margin-bottom:2px;border-bottom:1px solid var(--linea-suave);
}
.selector-cliente .cabeza-lista b{font-size:12px;color:var(--navy)}
.selector-cliente .cabeza-lista .sutil{font-size:11px}
.selector-cliente .lista a{
  display:flex;align-items:center;gap:8px;padding:7px 9px;border-radius:8px;
  font-size:13px;color:var(--navy);line-height:1.3;
}
.selector-cliente .lista a span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.selector-cliente .lista a .ico{flex:none;color:var(--tinta-2)}
.selector-cliente .lista a:hover{background:var(--tenue);text-decoration:none}
.selector-cliente .lista a.on{background:var(--marca-suave);font-weight:600}
.selector-cliente .lista a.on .ico{color:var(--teal-2)}
.selector-cliente .filtro-clientes{margin-bottom:6px;font-size:13px;padding:7px 9px}
.pie-lateral{margin-top:auto;padding-top:18px;border-top:1px solid var(--linea)}
.pie-lateral .quien{padding:0 10px 12px}
.pie-lateral .quien b{display:block;font-size:13.5px;font-weight:600;color:var(--navy)}
.pie-lateral .quien span{font-size:12px;color:var(--tinta-3)}

/* Barra superior */
.superior{
  position:sticky;top:0;z-index:20;
  background:rgba(255,255,255,.94);
  backdrop-filter:saturate(180%) blur(8px);
  border-bottom:1px solid var(--linea);
  display:flex;align-items:center;gap:16px;padding:12px 30px;
}
.ruta{display:flex;align-items:center;gap:9px;font-size:14px;color:var(--tinta-2);min-width:0}
.ruta .casa{
  width:32px;height:32px;border-radius:var(--radio-chico);background:var(--navy);
  display:grid;place-items:center;color:#fff;flex:none;
}
.ruta .casa:hover{background:var(--navy-2)}
.ruta .sep{color:var(--tinta-3)}
.ruta b{color:var(--navy);font-weight:600}
.superior .derecha{margin-left:auto;display:flex;align-items:center;gap:12px}
.buscador{
  display:flex;align-items:center;gap:9px;
  background:var(--tenue);border:1px solid transparent;border-radius:var(--radio-chico);
  padding:8px 12px;min-width:236px;color:var(--tinta-3);
}
.buscador:focus-within{border-color:var(--teal-2);background:var(--blanco)}
.buscador input{border:0;background:transparent;padding:0;font-size:14px;width:100%;color:var(--tinta)}
.buscador input:focus{outline:none}
.avatar{
  width:36px;height:36px;border-radius:50%;background:var(--navy);color:#fff;
  display:grid;place-items:center;font-size:13px;font-weight:600;flex:none;letter-spacing:.5px;
}

.principal{min-width:0}
.contenido{padding:30px 30px 70px;max-width:1380px}

/* Cabecera de página */
.cabecera{display:flex;flex-wrap:wrap;gap:14px 18px;align-items:flex-start;justify-content:space-between;margin-bottom:26px}
.cabecera .eyebrow{
  font-size:11px;font-weight:700;letter-spacing:2px;color:var(--teal-2);margin:0 0 8px;
}
.cabecera h1{
  margin:0;font-family:var(--serif);font-size:34px;font-weight:600;
  letter-spacing:.3px;line-height:1.15;color:var(--navy);
}
.cabecera p{margin:8px 0 0;color:var(--tinta-2);font-size:15px;max-width:60ch}
.estado-pagina{display:flex;flex-wrap:wrap;gap:10px 22px;align-items:center;margin-top:14px;font-size:13.5px;color:var(--tinta-2)}
.estado-pagina span{display:inline-flex;align-items:center;gap:7px}
.punto{width:8px;height:8px;border-radius:50%;background:currentColor;flex:none}

/* ============================================================
   CONTROLES
   ============================================================ */
select,input:not([type]),input[type=text],input[type=email],input[type=password],input[type=search],input[type=number],input[type=file],textarea{
  background:var(--blanco);border:1px solid var(--linea);color:var(--tinta);
  border-radius:var(--radio-chico);padding:9px 12px;width:100%;
  font-family:inherit;font-size:14px;
}
select:focus,input:focus,textarea:focus{outline:none;border-color:var(--teal-2);box-shadow:0 0 0 3px var(--marca-suave)}
select{appearance:none;background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%238A97A0' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;padding-right:32px}

.boton{
  display:inline-flex;align-items:center;gap:8px;
  background:var(--teal);color:var(--navy);border:1px solid var(--teal);
  border-radius:3px;padding:10px 20px;font:inherit;font-size:13.5px;font-weight:700;
  letter-spacing:.2px;cursor:pointer;white-space:nowrap;
}
.boton:hover{background:var(--teal-2);border-color:var(--teal-2);color:var(--navy);text-decoration:none}
.boton.suave{background:var(--blanco);color:var(--navy);border-color:var(--linea);font-weight:600}
.boton.suave:hover{background:var(--tenue);border-color:#C7D2D4;color:var(--navy)}
.boton.oscuro{background:var(--navy);border-color:var(--navy);color:#fff}
.boton.oscuro:hover{background:var(--navy-2);border-color:var(--navy-2)}
.boton.chico{padding:6px 12px;font-size:12.5px}

/* ============================================================
   TARJETAS
   ============================================================ */
.rejilla{display:grid;gap:20px}
.r2{grid-template-columns:repeat(auto-fit,minmax(330px,1fr))}
.r3{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}
.r4{grid-template-columns:repeat(auto-fit,minmax(196px,1fr))}
.dos-tercios{grid-template-columns:minmax(0,1.9fr) minmax(280px,1fr)}

.caja{
  background:var(--panel);border:1px solid var(--linea);
  border-radius:var(--radio);padding:24px;box-shadow:var(--sombra);
}
.caja>h2{
  display:flex;align-items:center;gap:12px;margin:0 0 20px;
  font-family:var(--serif);font-size:19px;font-weight:600;color:var(--navy);letter-spacing:.2px;
}
.caja>h2 .cuadro{
  width:34px;height:34px;border-radius:var(--radio-chico);background:var(--navy);color:var(--teal);
  display:grid;place-items:center;flex:none;
}
.caja>h2 small{font-family:var(--sans);font-weight:400;color:var(--tinta-3);font-size:12.5px;margin-left:auto;letter-spacing:0}

.cifra{display:flex;flex-direction:column;gap:5px}
.cifra .cabeza{display:flex;align-items:center;gap:10px;color:var(--tinta-2)}
.cifra .cabeza .ico{color:var(--teal-2)}
.cifra span.rotulo{font-size:13px;color:var(--tinta-2)}
.cifra b{font-family:var(--serif);font-size:34px;font-weight:600;line-height:1.05;color:var(--navy)}
.cifra em{font-style:normal;font-size:12.5px;color:var(--tinta-3)}
.cifra .ver{display:inline-flex;align-items:center;gap:4px;margin-top:10px;font-size:13px}
.cifra .ver .ico{width:15px;height:15px}

/* Marcador principal */
.marcador{display:flex;gap:28px;align-items:center;flex-wrap:wrap}
.marcador .valor{font-family:var(--serif);font-size:68px;font-weight:600;line-height:1;letter-spacing:-1px}
.marcador .meta{display:flex;flex-direction:column;gap:8px}
.escala{display:flex;gap:4px;margin-top:20px}
.escala i{height:6px;flex:1;border-radius:2px;background:var(--linea);font-style:normal}
.escala i.on{background:currentColor}
.escala-pie{display:flex;justify-content:space-between;margin-top:8px;font-size:10.5px;letter-spacing:.8px;color:var(--tinta-3)}

/* Barras de dominio */
.dominio{display:flex;flex-direction:column;gap:8px;padding:15px 0;border-bottom:1px solid var(--linea-suave)}
.dominio:last-child{border-bottom:0}
.dominio .fila{display:flex;justify-content:space-between;align-items:baseline;gap:12px}
.dominio .fila b{font-weight:600;font-size:14.5px;color:var(--navy)}
.dominio .fila span{font-size:13.5px;font-weight:600}
.dominio small{color:var(--tinta-3);font-size:12.5px}
.barra{height:7px;border-radius:2px;background:var(--tenue);overflow:hidden}
.barra i{display:block;height:100%;border-radius:2px}

/* ============================================================
   COLOR POR BANDA
   ============================================================ */
.critico{color:var(--critico)} .alto{color:var(--alto)} .medio{color:var(--medio)}
.bueno{color:var(--bueno)} .excelente{color:var(--excelente)}
.bg-critico{background:var(--critico)} .bg-alto{background:var(--alto)} .bg-medio{background:var(--medio)}
.bg-bueno{background:var(--bueno)} .bg-excelente{background:var(--excelente)}

.marca-estado{
  display:inline-flex;align-items:center;gap:7px;border-radius:3px;
  padding:4px 10px;font-size:12px;font-weight:600;white-space:nowrap;
  background:var(--tenue);letter-spacing:.2px;
}
.marca-estado::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;flex:none}
.marca-estado.critico{background:var(--critico-bg)}
.marca-estado.alto{background:var(--alto-bg)}
.marca-estado.medio{background:var(--medio-bg)}
.marca-estado.bueno{background:var(--bueno-bg)}
.marca-estado.excelente{background:var(--excelente-bg)}

.rol-chip{
  display:inline-flex;align-items:center;border-radius:3px;padding:4px 10px;
  font-size:11px;font-weight:700;letter-spacing:1px;
  background:var(--tenue);color:var(--tinta-2);
}
.rol-chip.admin{background:var(--marca-suave);color:var(--teal-2)}
.rol-chip.tecnico{background:var(--tenue);color:var(--navy)}
.rol-chip.cliente{background:var(--tenue);color:var(--tinta-2)}

/* ============================================================
   TABLAS
   ============================================================ */
.tabla-envoltorio{
  overflow-x:auto;background:var(--panel);
  border:1px solid var(--linea);border-radius:var(--radio);box-shadow:var(--sombra);
}
.caja .tabla-envoltorio{border-radius:var(--radio-chico);box-shadow:none}
table{border-collapse:collapse;width:100%;font-size:13.5px;min-width:660px}
thead th{
  text-align:left;font-weight:600;font-size:10.5px;letter-spacing:1px;
  color:#fff;background:var(--navy);padding:12px 16px;white-space:nowrap;
}
tbody td{padding:13px 16px;border-bottom:1px solid var(--linea-suave);vertical-align:top}
tbody tr:last-child td{border-bottom:0}
tbody tr:hover{background:#FBFCFC}
td.num{text-align:right;font-variant-numeric:tabular-nums}
.sutil{color:var(--tinta-3);font-size:12.5px}

/* ============================================================
   RECOMENDACIONES
   ============================================================ */
.reco{
  background:var(--panel);border:1px solid var(--linea);border-radius:var(--radio);
  box-shadow:var(--sombra);margin-bottom:18px;overflow:hidden;
}
.reco>.top{display:flex;gap:16px;align-items:flex-start;padding:24px}
.reco .marcador-prioridad{width:3px;align-self:stretch;border-radius:2px;flex:none}
.reco h3{
  margin:0 0 10px;font-family:var(--serif);font-size:19px;font-weight:600;
  line-height:1.35;color:var(--navy);
}
.reco p{margin:0;color:var(--tinta-2);font-size:14.5px;max-width:78ch}
.reco dl{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));
  gap:16px 24px;margin:20px 0 0;padding:20px 0 0;border-top:1px solid var(--linea-suave);
}
.reco dt{font-size:10.5px;letter-spacing:1.2px;color:var(--tinta-3);font-weight:600;margin-bottom:6px}
.reco dd{margin:0;font-size:14px;font-weight:500;color:var(--navy)}
.reco .accion{background:#F7FBFB;border-top:1px solid var(--linea-suave);border-left:3px solid var(--teal);padding:18px 22px;font-size:14.5px}
.reco .accion .etiqueta{
  display:flex;align-items:center;gap:7px;font-size:10.5px;font-weight:700;letter-spacing:1.2px;
  color:var(--teal-2);margin-bottom:7px;
}
.reco .accion .etiqueta .ico{width:15px;height:15px}
.reco form{display:flex;gap:10px;align-items:center;margin-top:18px;flex-wrap:wrap}
.reco form select{width:auto;min-width:165px}

/* Filtros */
.filtros{
  display:flex;gap:11px;flex-wrap:wrap;align-items:center;margin-bottom:22px;
  background:var(--panel);border:1px solid var(--linea);border-radius:var(--radio);
  padding:14px 16px;box-shadow:var(--sombra);
}
.filtros .titulo{display:flex;align-items:center;gap:8px;font-size:11px;font-weight:700;letter-spacing:1.2px;color:var(--teal-2)}
.filtros select,.filtros input{width:auto;min-width:168px}
.filtros .resumen{margin-left:auto;font-size:13px;color:var(--tinta-3)}

/* Gráfico */
.grafico{width:100%;height:auto;display:block}
.leyenda{display:flex;flex-wrap:wrap;gap:16px;margin-top:18px;font-size:12.5px;color:var(--tinta-2)}
.leyenda span{display:inline-flex;align-items:center;gap:7px}
.leyenda i{width:13px;height:3px;border-radius:2px;display:inline-block}

/* ============================================================
   ACCESO
   ============================================================ */
.acceso{
  min-height:100vh;display:grid;place-items:center;padding:24px;
  background:var(--navy);
}
.acceso .panel{
  width:100%;max-width:420px;background:var(--blanco);
  border-radius:var(--radio);padding:38px;box-shadow:var(--sombra-flotante);
  border-top:3px solid var(--teal);
}
.acceso .logotipo{margin-bottom:26px}
.acceso h1{margin:0 0 6px;font-family:var(--serif);font-size:24px;font-weight:600;color:var(--navy)}
.acceso p.sub{margin:0 0 26px;color:var(--tinta-2);font-size:14px}
.campo{margin-bottom:16px}
.campo label{display:block;font-size:11px;font-weight:700;letter-spacing:1px;color:var(--tinta-2);margin-bottom:7px}

.aviso{
  display:flex;gap:10px;align-items:flex-start;
  border:1px solid var(--critico);border-left-width:3px;color:#8E2C34;background:var(--critico-bg);
  border-radius:0 var(--radio-chico) var(--radio-chico) 0;padding:12px 15px;font-size:14px;margin-bottom:20px;
}
.aviso.info{border-color:var(--linea);border-left-color:var(--navy);color:var(--tinta-2);background:var(--blanco)}
.aviso.ok{border-color:var(--teal-2);border-left-color:var(--teal);color:#12645B;background:var(--marca-suave)}
.aviso .ico{margin-top:1px;flex:none}

.vacio{
  padding:46px 24px;text-align:center;color:var(--tinta-2);
  border:1px dashed var(--linea);border-radius:var(--radio);background:var(--blanco);
}
.vacio b{display:block;font-family:var(--serif);color:var(--navy);margin-bottom:6px;font-weight:600;font-size:17px}

.pie-nota{margin-top:44px;font-size:12.5px;color:var(--tinta-3);line-height:1.7}

/* ============================================================
   RESPONSIVE
   ============================================================ */
@media (max-width:1040px){ .dos-tercios{grid-template-columns:1fr} }
@media (max-width:900px){
  .app{grid-template-columns:1fr}
  .lateral{position:static;height:auto;border-right:0;border-bottom:1px solid var(--linea)}
  .superior{padding:12px 16px}
  .buscador{min-width:0;width:150px}
  .contenido{padding:22px 16px 56px}
  .cabecera h1{font-size:26px}
  .marcador .valor{font-size:52px}
}
@media (prefers-reduced-motion:no-preference){
  .barra i{transition:width .45s ease}
  .nav a,.boton{transition:background-color .15s ease,color .15s ease,border-color .15s ease}
}
@media print{
  .lateral,.superior,.filtros,.reco form,.boton{display:none}
  body{background:#fff}
  .caja,.reco,.tabla-envoltorio{box-shadow:none;border-color:#C7D2D4}
  thead th{background:#fff;color:var(--navy);border-bottom:2px solid var(--navy)}
  .contenido{padding:0}
}

/* ============================================================
   PANTALLA DE CARGA
   ============================================================ */
.gcd-carga{
  position:fixed;inset:0;z-index:2147483000;
  display:grid;place-items:center;padding:24px;
  background:rgba(250,250,247,.82);
  -webkit-backdrop-filter:saturate(180%) blur(10px);
  backdrop-filter:saturate(180%) blur(10px);
  opacity:0;
}
.gcd-carga[hidden]{display:none}
.gcd-carga.es-visible{opacity:1}
.gcd-carga.es-oscuro{background:rgba(6,30,49,.86)}

.gcd-carga-caja{
  background:var(--blanco,#fff);
  border:1px solid var(--linea,#DCE3E4);
  border-radius:14px;
  box-shadow:0 22px 46px -26px rgba(6,30,49,.45);
  padding:30px 34px;min-width:236px;max-width:min(92vw,400px);
  display:flex;flex-direction:column;align-items:center;gap:14px;text-align:center;
}
.es-oscuro .gcd-carga-caja{
  background:#0D2A44;border-color:rgba(255,255,255,.14);
}

.gcd-carga-logo{height:44px;width:auto;display:block}
.gcd-carga-marca{
  font-family:var(--serif,Georgia,serif);font-weight:600;font-size:18px;
  letter-spacing:.4px;color:var(--navy,#061E31);
}
.gcd-carga-marca span{color:var(--carga-color,#2FD4C4)}
.es-oscuro .gcd-carga-marca{color:#fff}

.gcd-carga-texto{font-size:13.5px;color:var(--tinta-2,#5B6B76)}
.es-oscuro .gcd-carga-texto{color:#B9C7CE}

.gcd-carga-aviso{
  margin:2px 0 0;font-size:13.5px;line-height:1.5;
  color:var(--tinta,#1B2530);max-width:32ch;
}
.es-oscuro .gcd-carga-aviso{color:#fff}
.gcd-carga-aviso[hidden]{display:none}

/* Segundo mensaje: aparece si la espera se alarga */
.gcd-carga-tarda{
  margin:4px 0 0;font-size:12.5px;line-height:1.5;
  color:var(--tinta-3,#8A97A0);max-width:32ch;
}
.es-oscuro .gcd-carga-tarda{color:#7E95A3}
.gcd-carga-tarda[hidden]{display:none}

/* --- Indicadores --- */
.gcd-carga-barra{
  width:180px;max-width:60vw;height:4px;border-radius:3px;
  background:var(--tenue,#F2F4F3);overflow:hidden;
}
.es-oscuro .gcd-carga-barra{background:rgba(255,255,255,.14)}
.gcd-carga-barra i{
  display:block;height:100%;width:40%;border-radius:3px;
  background:var(--carga-color,#2FD4C4);
  animation:gcd-barra 1.1s ease-in-out infinite;
}
@keyframes gcd-barra{
  0%{transform:translateX(-110%)}
  100%{transform:translateX(320%)}
}

.gcd-carga-circulo{
  width:34px;height:34px;border-radius:50%;
  border:3px solid var(--tenue,#F2F4F3);
  border-top-color:var(--carga-color,#2FD4C4);
  animation:gcd-giro .8s linear infinite;
}
.es-oscuro .gcd-carga-circulo{border-color:rgba(255,255,255,.16);border-top-color:var(--carga-color,#2FD4C4)}
@keyframes gcd-giro{to{transform:rotate(360deg)}}

.gcd-carga-puntos{display:flex;gap:7px}
.gcd-carga-puntos i{
  width:9px;height:9px;border-radius:50%;
  background:var(--carga-color,#2FD4C4);
  animation:gcd-punto 1.2s ease-in-out infinite;
}
.gcd-carga-puntos i:nth-child(2){animation-delay:.16s}
.gcd-carga-puntos i:nth-child(3){animation-delay:.32s}
@keyframes gcd-punto{
  0%,80%,100%{opacity:.28;transform:scale(.8)}
  40%{opacity:1;transform:scale(1)}
}

/* En móvil el desenfoque no siempre se aplica: se opaca algo más el fondo */
@media (max-width:700px){
  .gcd-carga{background:rgba(250,250,247,.95)}
  .gcd-carga.es-oscuro{background:rgba(6,30,49,.96)}
  .gcd-carga-caja{padding:26px 24px}
}
@supports not ((backdrop-filter:blur(2px)) or (-webkit-backdrop-filter:blur(2px))){
  .gcd-carga{background:rgba(250,250,247,.96)}
  .gcd-carga.es-oscuro{background:rgba(6,30,49,.97)}
}

@media (prefers-reduced-motion:no-preference){
  .gcd-carga{transition:opacity .18s ease}
}
@media (prefers-reduced-motion:reduce){
  .gcd-carga{transition:none}
  .gcd-carga-barra i,.gcd-carga-circulo,.gcd-carga-puntos i{animation:none}
  .gcd-carga-barra i{width:100%}
  .gcd-carga-circulo{border-top-color:var(--carga-color,#2FD4C4);opacity:.7}
  .gcd-carga-puntos i{opacity:.75}
}
@media print{ .gcd-carga{display:none !important} }

/* ==========================================================================
   Botón de informe y visor de PDF
   ========================================================================== */

.acciones-informe{display:inline-flex;gap:6px;align-items:center;vertical-align:middle}

.boton-informe{
  display:inline-flex;align-items:center;gap:8px;
  padding:5px 12px 5px 7px;border-radius:999px;
  border:1px solid var(--linea);background:var(--blanco);
  color:var(--navy);font-size:12.5px;font-weight:600;line-height:1.5;
  cursor:pointer;white-space:nowrap;
  transition:border-color .15s ease,box-shadow .15s ease,transform .15s ease,background .15s ease;
}
.boton-informe:hover{
  text-decoration:none;color:var(--navy);
  border-color:var(--teal-2);background:var(--marca-suave,#EAFBF9);
  box-shadow:0 2px 10px rgba(6,30,49,.08);
}
.boton-informe:active{transform:translateY(1px)}
.boton-informe .ico{color:var(--teal-2);flex:none}
.boton-informe.solo-icono{padding:6px;border-radius:50%}
.boton-informe.solo-icono .ico{color:var(--navy);opacity:.72}
.boton-informe.solo-icono:hover .ico{color:var(--teal-2);opacity:1}

/* Sello rojo de PDF, como el de un documento adjunto */
.sello-pdf{
  display:inline-flex;align-items:center;justify-content:center;
  min-width:34px;height:20px;padding:0 6px;border-radius:5px;
  background:#C8362F;color:#fff;
  font-size:9.5px;font-weight:700;letter-spacing:.6px;
}
.sello-pdf.grande{min-width:42px;height:26px;font-size:11px;border-radius:7px}

/* --- Visor --- */
html.gcd-visor-activo,html.gcd-visor-activo body{overflow:hidden}

.gcd-visor{
  position:fixed;top:0;right:0;bottom:0;left:0;inset:0;z-index:9000;
  display:flex;align-items:center;justify-content:center;padding:24px;
}
.gcd-visor[hidden]{display:none}
.gcd-visor-fondo{
  position:absolute;top:0;right:0;bottom:0;left:0;inset:0;background:rgba(6,30,49,.62);
  -webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);
}
.gcd-visor-caja{
  position:relative;display:flex;flex-direction:column;
  width:92vw;height:90vh;max-width:1040px;max-height:100%;
  width:min(1040px,92vw);height:min(90vh,100%);
  background:var(--papel);border-radius:16px;overflow:hidden;
  box-shadow:0 30px 80px rgba(6,30,49,.4);
  animation:gcd-visor-entra .18s ease-out;
}
@keyframes gcd-visor-entra{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}

.gcd-visor-barra{
  display:flex;align-items:center;gap:16px;flex-wrap:wrap;
  padding:12px 14px;background:var(--blanco);
  border-bottom:1px solid var(--linea);
}
.gcd-visor-quien{display:flex;align-items:center;gap:11px;min-width:0;flex:1}
.gcd-visor-textos{display:flex;flex-direction:column;min-width:0}
.gcd-visor-titulo{
  font-size:15px;color:var(--navy);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.gcd-visor-sub{font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gcd-visor-acciones{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.gcd-visor-cerrar{
  display:inline-flex;align-items:center;justify-content:center;
  width:34px;height:34px;border-radius:50%;
  border:1px solid var(--linea);background:var(--blanco);color:var(--navy);cursor:pointer;
}
.gcd-visor-cerrar:hover{background:var(--tenue);border-color:#C7D2D4}

.gcd-visor-lienzo{position:relative;flex:1 1 auto;min-height:0;background:#525659}
.gcd-visor-marco{
  display:block;position:absolute;top:0;left:0;
  width:100%;height:100%;border:0;background:#525659;
}
.gcd-visor.cargando .gcd-visor-lienzo::after{
  content:"";position:absolute;left:50%;top:50%;width:30px;height:30px;margin:-15px 0 0 -15px;
  border:3px solid rgba(255,255,255,.25);border-top-color:var(--teal);border-radius:50%;
  animation:gcd-giro .8s linear infinite;
}
.gcd-visor-aviso{
  position:absolute;left:50%;bottom:20px;transform:translateX(-50%);
  pointer-events:none;
  display:flex;flex-direction:column;gap:5px;text-align:center;
  max-width:420px;padding:18px 22px;border-radius:12px;
  background:var(--blanco);box-shadow:0 10px 30px rgba(0,0,0,.22);
}
.gcd-visor-aviso[hidden]{display:none}
.gcd-visor-aviso b{color:var(--navy);font-size:14px}

@media (max-width:700px){
  .gcd-visor{padding:0}
  .gcd-visor-caja{width:100vw;height:100%;max-width:none;border-radius:0}
  .gcd-visor-acciones .texto{display:none}
  .gcd-visor-acciones .boton{padding:7px 9px}
}
@media (prefers-reduced-motion:reduce){
  .gcd-visor-caja{animation:none}
  .gcd-visor.cargando .gcd-visor-lienzo::after{animation:none}
  .boton-informe{transition:none}
}

/* --- Asignar dominios e informes anteriores --- */
.sr-solo{
  position:absolute;width:1px;height:1px;padding:0;margin:-1px;
  overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;
}

.form-asignar{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-top:6px}
.form-asignar select{
  width:auto;min-width:150px;max-width:220px;padding:5px 8px;font-size:13px;
}
.form-asignar .boton{padding:6px 12px;font-size:12.5px}

.desplegable-asignar,.desplegable-informes{margin-top:7px}
.desplegable-asignar>summary,.desplegable-informes>summary{
  display:inline-flex;align-items:center;gap:6px;cursor:pointer;
  font-size:12.5px;color:var(--teal-2);font-weight:600;list-style:none;
}
.desplegable-asignar>summary::-webkit-details-marker,
.desplegable-informes>summary::-webkit-details-marker{display:none}
.desplegable-asignar>summary:hover,.desplegable-informes>summary:hover{color:var(--navy)}
.desplegable-asignar>summary .ico,.desplegable-informes>summary .ico{color:inherit}

.lista-informes{list-style:none;margin:9px 0 0;padding:0;display:flex;flex-direction:column;gap:7px}
.lista-informes li{
  display:flex;align-items:center;gap:10px;flex-wrap:wrap;
  padding:6px 0;border-top:1px solid var(--linea-suave);
}
.lista-informes li:first-child{border-top:0}
.lista-informes .fecha{font-size:13px;color:var(--navy);min-width:78px}

tr.fila-aviso>td{background:#FFF9EF}

/* --- Lista de comprobaciones de seguridad --- */
.lista-chequeo{display:flex;flex-direction:column;gap:2px}
.chequeo{
  display:grid;grid-template-columns:34px 1fr auto;gap:13px;align-items:start;
  padding:13px 12px;border-radius:10px;border:1px solid transparent;
}
.chequeo + .chequeo{border-top:1px solid var(--linea-suave)}
.chequeo.aviso{background:#FFF9EF;border-color:#F3E3C6}
.chequeo.fallo{background:#FDF1F0;border-color:#F3D3D0}
.chequeo .marca{
  display:inline-flex;align-items:center;justify-content:center;
  width:34px;height:34px;border-radius:50%;background:var(--tenue);
}
.chequeo .marca.bueno{background:#E9FAF6;color:var(--teal-2)}
.chequeo .marca.medio{background:#FBEFD8;color:#B27A12}
.chequeo .marca.critico{background:#FBE0DD;color:#C8362F}
.chequeo b{color:var(--navy);font-size:14.5px}
.chequeo .sutil{margin-top:2px;line-height:1.5;max-width:88ch}
.chequeo .arreglo{
  display:flex;gap:7px;align-items:flex-start;margin-top:7px;
  font-size:13px;color:var(--navy);
}
.chequeo .arreglo .ico{color:var(--teal-2);flex:none;margin-top:2px}
@media (max-width:700px){
  .chequeo{grid-template-columns:28px 1fr}
  .chequeo > .chip{grid-column:2}
}

/* --- Explorador de bases de datos --- */
.lista-tablas{list-style:none;margin:0;padding:0;max-height:62vh;overflow:auto}
.lista-tablas a{
  display:block;padding:7px 9px;border-radius:8px;color:var(--navy);
  border-left:3px solid transparent;line-height:1.3;
}
.lista-tablas a:hover{background:var(--tenue);text-decoration:none}
.lista-tablas a.on{background:var(--marca-suave);border-left-color:var(--teal);font-weight:600}
.lista-tablas .nom{display:block;font-size:13.5px;word-break:break-all}
.lista-tablas .sutil{font-size:11.5px}

.rejilla-columnas{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));
  gap:6px 12px;padding:10px;border:1px solid var(--linea);border-radius:10px;
  background:var(--tenue);max-height:230px;overflow:auto;
}
.col-check{
  display:flex;gap:7px;align-items:center;
  font-size:13px;font-weight:500;letter-spacing:0;text-transform:none;
  color:var(--navy);margin:0;
}
.col-check input{width:auto}

@media (max-width:900px){
  .lista-tablas{max-height:260px}
}

/* --- «Sin datos»: ni bueno ni malo, simplemente no comprobado --- */
.sin-datos,.num.sin-datos,span.sin-datos{color:#8A97A0}
.valor.sin-datos{color:#8A97A0;font-size:38px;letter-spacing:0}
.marca-estado.sin-datos{background:#EEF1F2;color:#5A6B72}
.bg-sin-datos{
  background:repeating-linear-gradient(135deg,#E8EDEE 0 7px,#F4F7F7 7px 14px);
}
.dominio.sin-datos small{color:#8A97A0}
.escala.sin-datos i.on{background:#C7D2D4}

/* --- Notas de las recomendaciones --- */
.notas-reco{
  border-top:1px solid var(--linea-suave);margin-top:14px;padding-top:14px;
}
.notas-reco .etiqueta{
  display:inline-flex;align-items:center;gap:7px;font-size:11px;font-weight:700;
  letter-spacing:1px;text-transform:uppercase;color:var(--tinta-2);
}
.notas-reco .etiqueta .ico{color:var(--teal-2)}
.lista-notas{list-style:none;margin:10px 0 0;padding:0;display:flex;flex-direction:column;gap:10px}
.lista-notas li{background:var(--tenue);border-radius:10px;padding:10px 12px}
.lista-notas .cabeza{display:flex;gap:9px;align-items:center;flex-wrap:wrap;font-size:12.5px}
.lista-notas .cabeza b{color:var(--navy)}
.lista-notas .texto{margin-top:6px;font-size:14px;line-height:1.55;color:var(--tinta)}
.notas-reco textarea{width:100%}

/* ==========================================================================
   Avisos flotantes
   ========================================================================== */
.gcd-avisos{
  position:fixed;top:16px;right:16px;z-index:9500;
  display:flex;flex-direction:column;gap:10px;
  width:min(380px,calc(100vw - 32px));pointer-events:none;
}
.gcd-aviso{
  display:flex;gap:11px;align-items:flex-start;
  padding:13px 13px 13px 14px;border-radius:12px;
  background:var(--blanco);border:1px solid var(--linea);
  box-shadow:0 12px 34px rgba(6,30,49,.16);
  pointer-events:auto;
  animation:gcd-aviso-entra .22s ease-out;
}
@keyframes gcd-aviso-entra{from{opacity:0;transform:translateX(18px)}to{opacity:1;transform:none}}
.gcd-aviso.saliendo{opacity:0;transform:translateX(18px);transition:opacity .2s ease,transform .2s ease}
.gcd-aviso .ico-aviso{flex:none;display:inline-flex;margin-top:1px}
.gcd-aviso .cuerpo{flex:1;min-width:0}
.gcd-aviso p{margin:0;font-size:13.5px;line-height:1.5;color:var(--navy);word-wrap:break-word}
.gcd-aviso .boton{margin-top:9px}
.gcd-aviso .cerrar{
  flex:none;border:0;background:transparent;color:var(--tinta-2);
  cursor:pointer;padding:2px;border-radius:6px;line-height:0;
}
.gcd-aviso .cerrar:hover{background:var(--tenue);color:var(--navy)}

.gcd-aviso.ok{border-left:4px solid var(--teal-2)}
.gcd-aviso.ok .ico-aviso{color:var(--teal-2)}
.gcd-aviso.error{border-left:4px solid #C8362F;background:#FDF7F6}
.gcd-aviso.error .ico-aviso{color:#C8362F}
.gcd-aviso.aviso{border-left:4px solid #B27A12;background:#FFFBF4}
.gcd-aviso.aviso .ico-aviso{color:#B27A12}
.gcd-aviso.info{border-left:4px solid var(--navy-2)}
.gcd-aviso.info .ico-aviso{color:var(--navy-2)}

@media (max-width:700px){
  .gcd-avisos{top:auto;bottom:12px;right:12px;left:12px;width:auto}
}
@media print{ .gcd-avisos{display:none} }

/* --- Menú de configuración: botones agrupados --- */
.menu-config{
  display:flex;flex-wrap:wrap;align-items:flex-start;gap:8px 22px;
  margin-bottom:10px;
}
.menu-config .grupo{display:flex;flex-direction:column;gap:6px}
.menu-config .rotulo-grupo{
  font-size:9.5px;font-weight:700;letter-spacing:1.4px;text-transform:uppercase;
  color:var(--tinta-3);padding-left:4px;
}
.menu-config .botones{display:flex;flex-wrap:wrap;gap:6px}

.boton-config{
  display:inline-flex;align-items:center;gap:8px;
  padding:8px 14px 8px 9px;border-radius:12px;
  background:var(--blanco);border:1px solid var(--linea);
  font-size:13px;font-weight:600;color:var(--navy);white-space:nowrap;
  box-shadow:0 1px 2px rgba(6,30,49,.05);
  transition:transform .13s ease,box-shadow .13s ease,border-color .13s ease,background .13s ease;
}
.boton-config .ic{
  display:inline-flex;align-items:center;justify-content:center;
  width:28px;height:28px;border-radius:9px;
  background:var(--tenue);color:var(--tinta-2);flex:none;
  transition:background .13s ease,color .13s ease;
}
.boton-config:hover{
  text-decoration:none;color:var(--navy);border-color:#C7D2D4;
  transform:translateY(-1px);box-shadow:0 6px 16px rgba(6,30,49,.1);
}
.boton-config:hover .ic{background:var(--marca-suave);color:var(--teal-2)}
.boton-config.on{
  background:var(--navy);border-color:var(--navy);color:#fff;
  box-shadow:0 6px 18px rgba(6,30,49,.22);
}
.boton-config.on .ic{background:rgba(255,255,255,.12);color:var(--teal)}

.menu-config-nota{
  display:flex;gap:7px;align-items:center;
  margin:0 0 20px 4px;font-size:12.5px;color:var(--tinta-2);
}
.menu-config-nota .ico{color:var(--tinta-3);flex:none}

@media (max-width:820px){
  .menu-config{gap:10px 14px}
  .boton-config{padding:7px 11px 7px 8px;font-size:12.5px}
  .boton-config .ic{width:26px;height:26px}
}
@media (max-width:560px){
  .boton-config .tx{display:none}
  .boton-config.on .tx{display:inline}
  .boton-config{padding:7px}
}

/* --- Tira de estado de las conexiones --- */
.tira-conexiones{
  display:flex;gap:8px;align-items:center;flex-wrap:wrap;
  margin:0 0 18px;padding:10px 12px;
  background:var(--blanco);border:1px solid var(--linea);border-radius:12px;
}
.tira-conexiones .enlace-estado{
  display:inline-flex;align-items:center;gap:7px;
  font-size:12.5px;color:var(--navy);
  padding:5px 11px;border-radius:999px;background:var(--tenue);
}
.tira-conexiones .enlace-estado i{width:8px;height:8px;border-radius:50%;background:#8A97A0;flex:none}
.tira-conexiones .enlace-estado.bueno i,.tira-conexiones .enlace-estado.excelente i{background:var(--teal-2)}
.tira-conexiones .enlace-estado.medio i{background:#D9A227}
.tira-conexiones .enlace-estado.critico i,.tira-conexiones .enlace-estado.alto i{background:#C8362F}
.tira-conexiones .boton{margin-left:auto}
@media (max-width:700px){ .tira-conexiones .boton{margin-left:0} }
