:root{--tinta: #16233b;--gris: #5b6575;--linea: #e3e7ee;--fondo: #f4f6f9;--acento: #0d5c46;--rojo: #8a1f1f;--ambar: #8a6d1f}*{box-sizing:border-box;margin:0}body{font-family:-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;background:var(--fondo);color:var(--tinta)}.app{max-width:980px;margin:0 auto;padding:28px 20px 60px}.cabecera{display:flex;justify-content:space-between;align-items:flex-end;border-bottom:3px solid var(--tinta);padding-bottom:16px;margin-bottom:8px;gap:16px;flex-wrap:wrap}.marca{font-size:12px;letter-spacing:2.5px;color:var(--gris);font-weight:600}.cabecera h1{font-size:22px;margin-top:6px}.pruebas{display:flex;gap:8px;align-items:center;font-size:12px;color:var(--gris)}.pruebas button{border:1px dashed var(--gris);background:#fff;border-radius:6px;padding:6px 10px;font-size:12px;cursor:pointer;color:var(--tinta)}.paso{background:#fff;border:1px solid var(--linea);border-radius:10px;padding:18px 22px;margin-top:16px}.paso h2{font-size:12px;letter-spacing:1.6px;text-transform:uppercase;color:var(--gris);margin-bottom:14px}.grilla{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:14px}label{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--gris);font-weight:500}input,select{font:inherit;padding:9px 10px;border:1px solid var(--linea);border-radius:7px;background:#fff;color:var(--tinta)}input:focus,select:focus{outline:2px solid #b9c6dd}.ficha-token{margin-top:12px;font-size:13.5px;color:var(--acento);font-weight:600}.ficha-periodo{margin-top:8px;font-size:13px;color:var(--tinta);line-height:1.55;background:#eef3fb;border-left:4px solid #4a6da7;border-radius:6px;padding:9px 12px}.ficha-periodo.parcial{background:#fdf6e3;border-left-color:#8a6d1f;color:#5c4a10}.ficha-periodo.pista-corte{background:#f4f6f9;border-left-color:#9aa7bd;color:var(--gris)}.banda-periodo{margin-top:14px;border-radius:10px;padding:14px 16px;border:1px solid}.banda-periodo.cierre{background:#eaf3ec;border-color:#bcd8c4}.banda-periodo.parcial{background:#fdf4e0;border-color:#ecd9a8}.banda-titulo{font-size:12px;font-weight:800;letter-spacing:1.2px;text-transform:uppercase;margin-bottom:6px}.banda-periodo.cierre .banda-titulo{color:#2c7a44}.banda-periodo.parcial .banda-titulo{color:#9a6a10}.banda-cuerpo{font-size:14px;color:var(--tinta);line-height:1.55}.banda-nota{margin-top:6px;font-size:12.5px;color:var(--gris)}.banda-validacion{background:#eef3fb;color:var(--tinta)}.aviso-comparar{color:var(--ambar)!important;font-weight:600}.marca-incompleto{color:var(--ambar)}.leyenda-incompleto{margin-top:6px;font-size:11px;color:var(--ambar)}.parametros-fijos{display:contents}.parametros-fijos>div{display:flex;flex-direction:column;gap:6px}.parametros-fijos span{font-size:13px;color:var(--gris);font-weight:500}.parametros-fijos b{font-size:15px;font-variant-numeric:tabular-nums}.acciones-parametros{display:flex;align-items:center;gap:14px;margin-top:12px;flex-wrap:wrap}button.enlace{font:inherit;font-size:13px;background:none;border:none;color:#4a6da7;cursor:pointer;padding:0;text-decoration:underline}.nota-insumo{font-size:12px;color:var(--acento);font-weight:600}.alerta.pre{white-space:pre-wrap;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}.alerta .filas{opacity:.75}.insumos{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:14px}.insumo{border:1px solid var(--linea);border-left-width:4px;border-radius:8px;padding:12px 14px;display:flex;flex-direction:column;gap:8px}.insumo.pendiente{border-left-color:var(--ambar)}.insumo.ok{border-left-color:var(--acento)}.insumo .titulo{font-size:13px;font-weight:600}.insumo .check{flex-direction:row;align-items:center;gap:8px;font-size:12.5px;font-weight:400}.insumo .check input{width:auto}.acciones{display:flex;align-items:center;gap:14px;flex-wrap:wrap}button.principal{font:inherit;font-weight:700;background:var(--tinta);color:#fff;border:none;border-radius:8px;padding:12px 22px;cursor:pointer}button.principal:disabled{opacity:.35;cursor:not-allowed}.pista{font-size:12.5px;color:var(--gris)}.alertas{list-style:none;display:flex;flex-direction:column;gap:6px;margin-bottom:14px}.alerta{font-size:13px;padding:8px 12px;border-radius:7px}.alerta.error{background:#f9e9e9;color:var(--rojo)}.alerta.advertencia{background:#f9f3e0;color:var(--ambar)}.alerta.info{background:var(--fondo);color:var(--gris)}.cifras{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin-bottom:16px}.cifra{border:1px solid var(--linea);border-radius:8px;padding:12px 14px}.cifra .rotulo{font-size:11px;letter-spacing:1px;text-transform:uppercase;color:var(--gris)}.cifra .valor{font-size:19px;font-weight:700;font-variant-numeric:tabular-nums;margin-top:4px}.cifra.destacada{background:var(--tinta);border-color:var(--tinta)}.cifra.destacada .rotulo{color:#c8d2e4}.cifra.destacada .valor{color:#fff}.avance-bloque{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:16px}.avance-tarjeta{flex:1 1 230px;border:1px solid var(--linea);border-radius:8px;padding:12px 14px}.avance-tarjeta.proy{border-color:#bcd3c8;background:#f2f8f5}.avance-tarjeta .et{font-size:10.5px;letter-spacing:.8px;text-transform:uppercase;color:var(--gris)}.avance-tarjeta .vl{font-size:20px;font-weight:700;font-variant-numeric:tabular-nums;margin:3px 0 4px}.avance-tarjeta.proy .vl{color:var(--acento)}.avance-tarjeta .delta{font-size:11.5px;color:var(--gris);line-height:1.45}.linea-tiempo{list-style:none;margin-top:6px;display:flex;flex-direction:column;gap:3px}.linea-tiempo li{display:flex;justify-content:space-between;font-size:12.5px;padding:3px 0;border-bottom:1px dotted var(--linea);font-variant-numeric:tabular-nums}.linea-tiempo li:last-child{border-bottom:none}.linea-tiempo li.actual{font-weight:700;color:var(--acento)}.pie{margin-top:26px;font-size:12px;color:var(--gris);text-align:center}.app.cargando{padding:60px 0;text-align:center;color:var(--gris)}.sesion{display:inline-flex;align-items:center;gap:8px;font-size:12px;color:var(--gris)}.app.acceso{max-width:380px;text-align:left}.app.acceso h1{font-size:22px;margin-bottom:18px}.app.acceso form{display:flex;flex-direction:column;gap:14px;border:1px solid var(--linea);border-radius:10px;padding:22px;background:#fff}.app.acceso label{display:flex;flex-direction:column;gap:5px;font-size:12.5px;color:var(--gris)}.app.acceso input{font:inherit;padding:9px 11px;border:1px solid var(--linea);border-radius:7px}.aviso-sucio{color:var(--ambar);font-weight:600}.nota-empresa{color:var(--ambar)}
