/* ZiviSuite — identidad tomada del sitio corporativo de Zivi Dynamics.
   Paleta y tipografía copiadas de zividynamics.com, no inventadas. */
:root{
  --ink:#080808; --ink-soft:#131313; --ink-3:#3d3d3d;
  --paper:#f1eee6; --paper-2:#e5e0d5; --white:#fffdf8;
  --cyan:#00bff3; --cyan-2:#16c7ff; --pink:#f50078;
  --gold:#ffb51b; --lime:#a8ef5a; --violet:#7d5cff; --accent:#5f9e1f;
  --line:#0808081f; --line-soft:#08080812;
  --radio:12px;
  --fuente:Inter,Arial,Helvetica,sans-serif;
  --display:"Arial Black",Inter,Arial,sans-serif;
}
*{box-sizing:border-box}
body{margin:0;font:15px/1.55 var(--fuente);color:var(--ink);background:var(--paper)}
a{color:var(--ink);text-decoration:none}
a:hover{text-decoration:underline}


main.con-barra{max-width:1120px;margin:26px auto;padding:0 20px}
main.sola{max-width:430px;margin:7vh auto;padding:0 20px}

h1{font-family:var(--display);font-size:23px;margin:0 0 4px;letter-spacing:-.2px}
h2{font-size:16px;margin:30px 0 12px;text-transform:uppercase;letter-spacing:1.4px;color:var(--ink-3)}
.sub{color:var(--ink-3);margin:0 0 22px;font-size:14px}

.tarjeta{background:var(--white);border:1px solid var(--line);border-radius:var(--radio);padding:20px;margin-bottom:16px}
.rejilla{display:grid;grid-template-columns:repeat(auto-fill,minmax(205px,1fr));gap:14px}
.dato{background:var(--white);border:1px solid var(--line);border-radius:var(--radio);padding:17px;border-top:3px solid var(--cyan)}
.dato.rosa{border-top-color:var(--pink)} .dato.oro{border-top-color:var(--gold)} .dato.lima{border-top-color:var(--lime)}
.dato .n{font-family:var(--display);font-size:27px;line-height:1.05}
.dato .t{color:var(--ink-3);font-size:12px;margin-top:5px;text-transform:uppercase;letter-spacing:.8px}

table{width:100%;border-collapse:collapse;background:var(--white);border:1px solid var(--line);border-radius:var(--radio);overflow:hidden}
th,td{padding:11px 13px;text-align:left;border-bottom:1px solid var(--line-soft);font-size:14px}
th{background:var(--paper-2);font-size:11px;text-transform:uppercase;letter-spacing:.9px;color:var(--ink-3)}
tr:last-child td{border-bottom:0}
td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}

.etq{display:inline-block;padding:3px 10px;border-radius:99px;font-size:11.5px;font-weight:700;
  text-transform:uppercase;letter-spacing:.5px;background:var(--paper-2);color:var(--ink-3)}
.etq.azul{background:#00bff31f;color:#0284a8}.etq.verde{background:#a8ef5a33;color:#3f7307}
.etq.ambar{background:#ffb51b2e;color:#96650a}.etq.rojo{background:#f500781f;color:#b00058}
.etq.morado{background:#7d5cff24;color:#5b3fd1}.etq.indigo{background:#7d5cff1a;color:#4c37b8}
.etq.gris{background:var(--paper-2);color:var(--ink-3)}

label{display:block;font-size:12px;font-weight:700;margin:13px 0 5px;text-transform:uppercase;letter-spacing:.6px;color:var(--ink-3)}
input,select,textarea{width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:9px;font:inherit;background:var(--white);color:var(--ink)}
input:focus,select:focus,textarea:focus{outline:2px solid #00bff355;border-color:var(--cyan)}
.fila{display:flex;gap:12px;flex-wrap:wrap}.fila>*{flex:1;min-width:150px}

.btn{display:inline-block;padding:10px 17px;border-radius:9px;border:1px solid var(--ink);background:var(--ink);
  color:var(--white);font-weight:700;cursor:pointer;font-size:13.5px;letter-spacing:.3px}
.btn:hover{background:var(--ink-soft);text-decoration:none}
.btn.claro{background:var(--white);color:var(--ink);border-color:var(--line)}
.btn.cian{background:var(--cyan);border-color:var(--cyan);color:var(--ink)}
.btn.peligro{background:var(--pink);border-color:var(--pink)}
.btn.exito{background:var(--lime);border-color:var(--lime);color:var(--ink)}
.btn.chico{padding:6px 12px;font-size:12.5px}

.aviso{padding:12px 15px;border-radius:9px;margin-bottom:18px;font-size:14px;border:1px solid}
.aviso.ok{background:#a8ef5a24;border-color:#a8ef5a;color:#3f7307}
.aviso.error{background:#f5007814;border-color:#f5007855;color:#b00058}

.cabecera-pag{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap;margin-bottom:18px}
.vacio{text-align:center;padding:46px 20px;color:var(--ink-3)}
.pie-doc{margin-top:34px;padding-top:18px;border-top:1px solid var(--line);color:var(--ink-3);font-size:12.5px;text-align:center}
.entrada-marca{text-align:center;margin-bottom:26px}
.entrada-marca img{height:38px}
@media(max-width:640px){.barra{height:auto;padding:10px 14px}main.con-barra{padding:0 14px}th,td{padding:9px}}

/* ── Pantallas de acceso ───────────────────────────────────────────────────
   CLARAS, como el material de marca de Zivi: fondo luminoso, el color lo pone
   el degradado de la Z y los acentos. El oscuro se reserva para la banda del
   pie, igual que en sus piezas impresas.
   El logo usa la variante de texto oscuro (mismo mark, solo recoloreado). */
body.acceso{
  background:
    radial-gradient(760px 420px at 12% -8%, #00bff314, transparent 62%),
    radial-gradient(640px 380px at 92% 4%,  #f5007810, transparent 64%),
    var(--white);
  min-height:100vh;
}
body.acceso::before{
  content:"";position:fixed;inset:0 0 auto 0;height:4px;
  background:linear-gradient(90deg,var(--cyan),#4aa8ff,var(--violet),var(--pink),var(--gold));
}
body.acceso main.sola{max-width:420px;margin:0 auto;padding:8vh 20px 40px}

.entrada-marca{background:none;padding:0;margin-bottom:34px;text-align:center}
.entrada-marca img{height:62px;max-width:86%}

body.acceso .tarjeta{
  background:var(--white);
  border:1px solid var(--line);
  border-radius:18px;padding:28px 26px;
  box-shadow:0 18px 44px #0808080f, 0 2px 6px #08080808;
  position:relative;overflow:hidden;
}
/* filo de marca en la tarjeta, como los bloques de color de sus piezas */
body.acceso .tarjeta::before{
  content:"";position:absolute;inset:0 0 auto 0;height:4px;
  background:linear-gradient(90deg,var(--cyan),var(--pink));
}
body.acceso h1{font-size:26px;letter-spacing:-.4px}
body.acceso input{background:#f7f8fa;border-color:#0808081a}
body.acceso input:focus{background:var(--white);border-color:var(--cyan);outline:3px solid #00bff326}

/* Boton con el degradado de la marca */
body.acceso .btn{
  background:linear-gradient(95deg,var(--cyan) 0%,#4aa8ff 42%,var(--pink) 100%);
  border:0;color:var(--white);font-weight:800;letter-spacing:.4px;padding:14px 18px;
  box-shadow:0 6px 18px #00bff33d;
}
body.acceso .btn:hover{filter:brightness(1.07);box-shadow:0 8px 22px #f500783d}
body.acceso a{color:#0b7fa8;font-weight:700}

/* Credito del autor. Sale en todas las paginas via _layout.php */
.pie-sitio{margin:38px 0 14px;text-align:center;font-size:12.5px;color:var(--ink-3)}
.pie-sitio a{color:var(--ink);font-weight:700;border-bottom:2px solid var(--cyan)}
.pie-sitio a:hover{color:var(--cyan);text-decoration:none}

/* Bloque de marca compuesto como la cabecera del sitio: la Z real en imagen y
   el texto en HTML. Asi el texto se pinta del color que haga falta y no
   dependemos de que exista una variante del SVG para cada fondo. */
.marca-zivi{display:inline-flex;align-items:center;gap:13px}
.marca-z{height:60px;width:auto;display:block;filter:drop-shadow(0 4px 12px #00bff32e)}
.marca-txt{display:flex;flex-direction:column;line-height:1;text-align:left}
.marca-txt .m1{font-family:var(--display);font-size:29px;letter-spacing:-.6px;color:var(--ink)}
.marca-txt .m2{font-size:13px;font-weight:800;letter-spacing:2.4px;text-transform:uppercase;color:var(--ink);margin-top:3px}
.marca-txt .m3{font-size:9.5px;font-weight:700;letter-spacing:3.2px;text-transform:uppercase;margin-top:5px;
  background:linear-gradient(90deg,var(--cyan),var(--violet),var(--pink));
  -webkit-background-clip:text;background-clip:text;color:transparent}
.pie-sitio .pie-res{display:block;margin-top:5px;font-size:11.5px;color:var(--ink-3);opacity:.85}
body.acceso .pie-sitio .pie-res{color:var(--ink-3)}

/* Aviso dentro de la tarjeta, con el tratamiento de las paginas de error del
   sitio: rotulo corto arriba en color de marca y el mensaje debajo. */
.aviso-acceso{border-radius:12px;padding:13px 15px;margin:16px 0 4px;font-size:14px;line-height:1.45}
.aviso-acceso .aa-et{display:block;font-size:10.5px;font-weight:800;letter-spacing:2.2px;
  text-transform:uppercase;margin-bottom:5px}
.aviso-acceso.error{background:#f500780f;border:1px solid #f5007836;color:var(--ink)}
.aviso-acceso.error .aa-et{color:var(--pink)}
.aviso-acceso.ok{background:#a8ef5a1f;border:1px solid #a8ef5a5c;color:var(--ink)}
.aviso-acceso.ok .aa-et{color:#4b8a06}

/* Ver/ocultar contraseña */
.campo-clave{position:relative}
.campo-clave input{padding-right:46px}
.ver-clave{position:absolute;right:6px;top:50%;transform:translateY(-50%);
  width:34px;height:34px;padding:0;border:0;background:none;cursor:pointer;
  display:flex;align-items:center;justify-content:center;border-radius:8px;color:var(--ink-3)}
.ver-clave svg{width:20px;height:20px}
.ver-clave:hover{background:#0808080a;color:var(--ink)}
.ver-clave.activo{color:var(--cyan)}
.ver-clave:focus-visible{outline:2px solid var(--cyan);outline-offset:1px}

/* ══ Navegación: móvil primero ════════════════════════════════════════════
   Antes era una barra de escritorio metida a la fuerza en el teléfono: 161px
   de alto, los enlaces partidos en 4 líneas y 266px de desborde horizontal.
   Ahora: cabecera compacta arriba y pestañas fijas abajo, como una app. */

.barra{
  display:flex;align-items:center;gap:14px;height:56px;padding:0 16px;
  background:var(--white);border-bottom:1px solid var(--line);
  position:sticky;top:0;z-index:20;
}
.barra::after{content:"";position:absolute;inset:auto 0 -1px 0;height:2px;
  background:linear-gradient(90deg,var(--cyan),var(--violet),var(--pink))}
.marca{display:flex;align-items:center;gap:9px;flex:1;min-width:0}
.marca img{height:28px;width:auto;display:block;flex-shrink:0}
.marca span{font-family:var(--display);font-size:15px;letter-spacing:-.2px;color:var(--ink)}
.usuario{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--ink-3);flex-shrink:0}
.u-nom{max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.salir{color:var(--pink);font-weight:700}
.nav-escritorio{display:none}

/* Pestañas inferiores (solo teléfono y tablet estrecha) */
.tabs-movil{
  position:fixed;left:0;right:0;bottom:0;z-index:30;display:flex;
  background:#fffdf8f2;backdrop-filter:blur(14px);
  border-top:1px solid var(--line);
  padding-bottom:env(safe-area-inset-bottom);
}
.tabs-movil a{
  flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:3px;min-height:56px;padding:7px 3px;color:var(--ink-3);text-decoration:none;
  font-size:10.5px;font-weight:700;letter-spacing:.2px;position:relative;
}
.tabs-movil a svg{width:22px;height:22px}
.tabs-movil a span{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tabs-movil a.sel{color:var(--ink)}
.tabs-movil a.sel::before{content:"";position:absolute;top:0;left:22%;right:22%;height:3px;border-radius:0 0 3px 3px;
  background:linear-gradient(90deg,var(--cyan),var(--pink))}
.tabs-movil a.sel svg{color:var(--cyan)}
.tabs-movil .t-salir{color:#b8004f}
.tabs-movil a:active{background:#0808080a}

/* El contenido deja hueco para las pestañas */
main.con-barra{max-width:1120px;margin:20px auto;padding:0 16px calc(84px + env(safe-area-inset-bottom))}

/* Las tablas no rompen la página: se desplazan dentro de su caja */
.tabla-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;border-radius:var(--radio)}
table{min-width:560px}

/* Objetivos táctiles de 44px hacia arriba */
.btn{min-height:44px;display:inline-flex;align-items:center;justify-content:center}
.btn.chico{min-height:38px}
td a, .barra a{min-height:24px}

@media (min-width:768px){
  .tabs-movil{display:none}
  .nav-escritorio{display:flex;gap:20px;flex:1}
  .nav-escritorio a{color:var(--ink-3);font-weight:700;font-size:13.5px;padding:6px 0;position:relative}
  .nav-escritorio a:hover{color:var(--ink);text-decoration:none}
  .nav-escritorio a.sel{color:var(--ink)}
  .nav-escritorio a.sel::after{content:"";position:absolute;inset:auto 0 -2px 0;height:2.5px;
    background:linear-gradient(90deg,var(--cyan),var(--pink))}
  .marca{flex:0 0 auto}
  main.con-barra{padding-bottom:40px}
  table{min-width:0}
}

/* ══ Correcciones de la auditoría de diseño ═══════════════════════════════ */

/* Campos a 16px en móvil: por debajo, iOS hace zoom al enfocar. Medidos 15px
   (y 14px en varias rutas) porque heredaban del body. */
/* Por puntero grueso, NO por ancho. Los iPad miden 768+ y quedaban fuera de la
   regla anterior: iOS les hace el mismo zoom al enfocar un campo de menos de
   16px, y ahi duele mas porque el teclado se come media pantalla. */
@media (pointer:coarse), (max-width:767px){
  input,select,textarea{font-size:16px}
  input,select,textarea{min-height:44px}
  .btn.chico{min-height:44px}
}

/* Texto oscuro sobre el degradado: en blanco daba 2.12:1 sobre el cian. */
body.acceso .btn{color:var(--ink);text-shadow:none}

/* La tabla de renglones desbordaba 237px: se desplaza en su caja como las demás */
#renglones{min-width:520px}

/* Señal de que una tabla se desplaza: sombra en el borde derecho */
.tabla-scroll{position:relative;
  background:
    linear-gradient(90deg,var(--white) 30%, #fffdf800) left/26px 100% no-repeat,
    linear-gradient(-90deg,var(--white) 30%, #fffdf800) right/26px 100% no-repeat,
    radial-gradient(farthest-side at 0 50%, #08080826, #08080800) left/12px 100% no-repeat,
    radial-gradient(farthest-side at 100% 50%, #08080826, #08080800) right/12px 100% no-repeat;
  background-attachment:local,local,scroll,scroll;
}

/* Contraste: los tres que no llegaban a 4.5:1 */
.etq.azul{background:#00bff31f;color:#026b8a}
.salir{color:#b8004f}
body.acceso a{color:#0a7096}

/* Área táctil de 44px sin cambiar el aspecto */
.pie-sitio a,.tabla-scroll td a{position:relative;display:inline-block;padding:6px 0}
.salir{display:inline-flex;align-items:center;min-height:44px}
.ver-clave{width:44px;height:44px}

/* Botones de la app con el color de la marca, no negros */
.btn{background:linear-gradient(95deg,var(--cyan) 0%,#4aa8ff 45%,var(--pink) 100%);
  border:0;color:var(--ink);font-weight:800}
.btn:hover{filter:brightness(1.07)}
.btn.claro{background:var(--white);color:var(--ink);border:1px solid var(--line)}
.btn.peligro{background:var(--pink);border:0;color:var(--white)}
.btn.exito{background:var(--lime);border:0;color:var(--ink)}
.btn.cian{background:var(--cyan);border:0;color:var(--ink)}

/* Dos tarjetas por fila en móvil en vez de una */
.rejilla{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}

/* Códigos y etiquetas no se parten a media palabra */
td a[href^="/documentos/"],.etq{white-space:nowrap}
